首页 > 编程语言 >[CSharpTips]C# 使用NModbus库创建Modbus从站

[CSharpTips]C# 使用NModbus库创建Modbus从站

时间:2024-09-23 15:45:03浏览次数:9  
标签:slave using C# Modbus CSharpTips NModbus var new true

使用NModbus库创建Modbus从站

Nuget安装NModbus库

using NModbus;
using System;
using System.Net;
using System.Net.Sockets;

namespace ModbusSlaveTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //设置从站ID和端口
            byte slaveId = 1;
            int port = 502;
            //创建并配置监听TCP客户端的TcpListener
            var listener = new TcpListener(new IPAddress(new byte[] { 127, 0, 0, 1 }), port);
            listener.Start();
            //创建从站并开启监听
            var factory = new ModbusFactory();
            var modbusTcpSlaveNetwork = factory.CreateSlaveNetwork(listener);
            var slave = factory.CreateSlave(slaveId);
            modbusTcpSlaveNetwork.AddSlave(slave);
            modbusTcpSlaveNetwork.ListenAsync();

            //输入寄存器
            slave.DataStore.InputRegisters.WritePoints(0, new ushort[] { 1, 2, 3 });
            //保持寄存器
            slave.DataStore.HoldingRegisters.WritePoints(0, new ushort[] { 3, 2, 1 });
            //线圈
            slave.DataStore.CoilDiscretes.WritePoints(0, new bool[] { true, false, true });
            //离散输入
            slave.DataStore.CoilInputs.WritePoints(0, new bool[] { true, true, true });

            Console.ReadKey();
        }
    }
}

标签:slave,using,C#,Modbus,CSharpTips,NModbus,var,new,true
From: https://www.cnblogs.com/axiaoshuye/p/18427172

相关文章

  • oracle 批处理,bulk collect
    这是一个示例,问了文心一言,给出的答复,最简单的demo BEGIN--禁用日志EXECUTEIMMEDIATE'ALTERSYSTEMSETevents=''10046tracenamecontextoff''';--执行你的批处理操作,比如插入或更新INSERTINTOyour_table(column1,column2)VALUES(value1,value2);......
  • 【好题乱做】ABC-G
    【好题乱做】ABC-GABC216G01Sequence设\(f_i\)表示前\(i\)个中\(0\)的个数,则条件可以转化为差分约束的模型。发现边权非负,跑Dijkstra即可。ABC217GGroups设\(f_{i,j}\)表示前\(i\)个数分为\(j\)组的方案数,则可以对\(i\)放入之前的一组还是新开一组讨论,得到......
  • css使用上中下三种图设置背景图,上下两张高度位置固定,中间拉伸(background-size、backg
    注意:此处计算需要使用calc,less的减法是在编译阶段不满足此处需求上下两张图高度为5px,位置紧贴上下边缘,中间背景图根据高度拉伸,并且增加模糊度background:url('./images/top.png')no-repeat,/*顶部图片*/url('./images/bottom.png')no-repeat,/*底部图片*/u......
  • `std::string_view`(c++17) 和 `std::stringstream` 使用区别·
    std::string_view和std::stringstream都是C++中处理字符串的工具,但它们的设计目标和使用场景非常不同。我们可以通过几方面进行对比。1.设计目的和核心功能std::string_view:设计用于只读访问字符串或字符序列。是一个轻量级的字符串视图,不会持有字符串的数据,仅仅是对......
  • 学习HTMLCSS第六天
    CSS核心属性详解在前端开发中,CSS(层叠样式表)起着至关重要的作用,它可以让网页变得更加美观和易用。本文将详细介绍CSS中的一些核心属性,包括行高、圆角、透明度、颜色值、浮动、定位和子绝父相等。一、行高(line-height)概念:行高是指文本行与行之间的间距,实际上是每行文本......
  • ①原装进口芯片一主多从RS485通讯转换器从站转地址波特率转校验位转寄存器转停止位mod
    一主多从RS485通讯转换器从站转地址波特率modbus协议转换中继器型号:485一主一从 MS-M1101      485一主二从 MS-M1201      485一主三从 MS-M1301      485一主四从 MS-M1401产品概述MS-M1X01系列一主多从RS485通讯转换器......
  • c# winform 以excel形式导出表格中的数据
    1.需要安装EPPlus插件2.引入usingOfficeOpenXml;usingOfficeOpenXml.Style; 3.代码publicvoidExportDataGridViewToExcel(DataGridViewdgv,stringfilePath)    {      //设置EPPlus的许可证上下文      ExcelPackage.Licens......
  • 南沙C++信奥老师解一本通题 1281:最长上升子序列
    ​ 【题目描述】一个数的序列bibi,当b1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK),这里1≤i1<i2<...<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列......
  • 天若OCR文字识别本地版
    下载地址:天若OCR文字识别本地版-v1.3.9-x64.zip1、解压下载包,将【天若OCR文字识别.exe】发送到桌面快捷方式2、点击桌面图标启动3、按F4或双击要识别的文字,以下是我识别的图片文字......
  • C++ string
    在C++中,std::string类是处理字符串的主要工具。它提供了丰富的功能和方法来简化字符串操作,使得开发者可以更加方便地进行文本数据的处理。构造函数std::string类有多种构造函数供用户选择:使用C风格字符串初始化:string(constchar*s);使用指定字符重复初始化:string(size_......