很久以前,写过一篇C#做Modbus从站的博客 C#工控机作为Modbus从站的方法_gaooolianggg的专栏-CSDN博客_c# modbus 从站 ,当时用的是NModbus,整体使用略微有些繁琐。最近在做项目时,使用了一个更方便的方法,这里分享出来。

这里使用的是EasyModbus。在Nuget程序管理中直接下载安装即可。如果你需要使用从站,只需要非常简单的几行代码

ModbusServer modbusServer = new ModbusServer();
modbusServer.Listen();

        此时,你就已经完成了一个从站的创建。当你需要读写某个寄存器时,只需要像访问变量值一样

modbusServer.holdingRegisters[1227] = (short)1;
short val = modbusServer.holdingRegisters[1227]

        非常的简单好用。

        当然,不再使用这个通讯端口时,记得关闭掉

modbusServer.StopListening();
很久以前,写过一篇C#做Modbus从站的博客C#工控机作为Modbus从站的方法_gaooolianggg的专栏-CSDN博客_c# modbus 从站,当时用的是NModbus,整体使用略微有些繁琐。最近在做项目时,使用了一个更方便的方法,这里分享出来。 这里使用的是EasyModbus。在Nuget程序管理中直接下载安装即可。如果你需要使用从站,只需要非常简单的几行代码ModbusServer modbusServer = new ModbusServer();...
    WinForm框架 是 Windows Form 的简称,是美国微软公司Microsoft开发基于 .NET Framework 平台的桌面运用程序框架,一般使用 C#语言 编写。WinForm框架可用于设计窗体和可视控件,采用面向对象语言C#,可快速创建绚丽漂亮的基于Windows的桌面应用程序、非常适合做上位机的界面!    串口(Serial Port),也称串行通讯接口(通常指COM口), 串口通信是指将数据一个比特一个比特地逐位进行传输的通信模式。 C#串口通信是借助一个SerialPort类的对象来方便的对串口进行读写。    Modbus是一种串行通信协议,是施耐德电气发表工业标准协议。C#  NModbus4库提供了ModbusMaster、ModbusSlave类来实现Modbus通讯相关的功能    本课程主要帮助学员熟练掌握C# WinForm框架上位机串口编程,Modbus协议编程,并且通过两个实战工具项目,为学习C# WinForm上位机编程 串口、Modbus编程打下坚固的基础!  
一、为什么使用EasyModbus? 之前一直使用开源库NModbus,它是一个非常优秀的Modbus通信类库,偶然机会下我发现了EasyModbus,发现EasyModbus的代码非常精炼、间接,一两行代码就可以创建一个Modbus TCP Client。 EasyModbus官网:http://easymodbustcp.net/en/ 二、使用步骤 1.添加引用 在官网下载DLL文件,在项目中添加引用。 代码如下(示例): using EasyModbus; 2.创建一个Modbus TCP Cli
EasyModbusTCP.NET - .NET 的 Modbus TCPModbus UDP 和 Modbus RTU 客户端/服务器库行业认可!! 从 PC 或嵌入式系统快速安全地访问许多 PLC 系统和其他工业自动化组件。 从 PLC 读取数据或向 PLC 写入数据只需要几行代码。 附加软件工具,例如 Modbus 服务器模拟器,使软件开发变得快速而简单。 从 NuGet 或从以下位置下载库 (*.DLL): 支持的功能代码: 读取线圈 (FC1) 读取离散输入 (FC2) 读取保持寄存器 (FC3) 读取输入寄存器 (FC4) 写单线圈 (FC5) 写单个寄存器 (FC6) 写入多个线圈 (FC15) 写多个寄存器 (FC16) 读/写多个寄存器 (FC23) Modbus TCPModbus UDP 和 Modbus RTU 客户端/服务器库
用于.NET和Java实现Modbus TCP Server仿真器和库。 参见库和源代码:www.easymodbustcp.net 连接到 Modbus-TCPModbus-UDP 客户端和 Modbus RTU 主。 服务器侦听端口 502(可以更改)。 还显示协议信息。 允许多个连接数字输入; 线圈; 可以在表格视图 V2.5 版中查看和更改输入寄存器和保持寄存器: - 使用新功能升级库 V1.1 版: - 异步读取和写入以加快服务器 V1.0 版: - 错误修正 V0 版。 96: - 修正 - 服务器模拟器可用作 Java 版本 V0.95: - 支持 Modbus UDP 的 V0.94 版: - 一些错误修正 V0.93 版: - 添加了功能代码 16(写入多个寄存器) - 一些加快速度的措施Modbus服务器-用于.NET实现的DLL库添加了版本V0.92:-添加了功能代码15(写入多个线圈)
要在C#实现Modbus TCP通信,您需要使用一个Modbus TCP库。以下是使用NModbus实现Modbus TCP通信的步骤: 1. 在Visual Studio中创建一个新的C#控制台应用程序项目。 2. 在解决方案资源管理器中,右键单击“引用”并选择“管理NuGet程序包”。 3. 在NuGet包管理器中搜索“NModbus”并安装它。 4. 添加以下名称空间: using System.Net; using System.Net.Sockets; using NModbus; using NModbusTcp; 5. 初始化一个ModbusTCP客户端: TcpClient client = new TcpClient("IP地址", 端口号); ModbusIpMaster master = ModbusIpMaster.CreateIp(client); 6. 使用以下代码读取保持寄存器: ushort[] registers = master.ReadHoldingRegisters(设备地址, 起始地址, 寄存器数量); 7. 使用以下代码写入保持寄存器: master.WriteMultipleRegisters(设备地址, 起始地址, registers); 请注意,IP地址和端口号应该与您的Modbus TCP从设备的IP地址和端口号匹配。设备地址是Modbus地址,通常为1。 以上是使用NModbus实现Modbus TCP通信的基本步骤。您可以根据自己的需要进行修改和扩展。
jiangzhe1014: 来点注释大哥,我现在也是想c#做从站,PLC做主站,但是不知道为啥,串口助手能读到DataStore.CoilDiscretes[3]的状态,但写不进。如下: SerialPort port = new SerialPort("COM4"); port.BaudRate = 9600; port.DataBits = 8; port.Parity = Parity.None; port.StopBits = StopBits.One; ModbusSerialSlave mb = ModbusSerialSlave.CreateRtu( 2, port); mb.DataStore.CoilDiscretes[3] = true; 串口助手做主站,能读到3号的状态,但写不进去 C#实现ModbusTCP从站 爆魔龙神脚の正义伙伴: 博主能否细说创建服务器以及监听 Auto-Encoder理解 CSDN-Ada助手: 推荐 Python入门 技能树:https://edu.csdn.net/skill/python?utm_source=AI_act_python 1. Prism项目创建 咩野66: 你好,请问template pack 安装之后,只能没有能选择.netframewor与.netcore的地方,继续创建之后在项目属性看到的是.netcore 然后想更换也只有.netcore系列,请问这个是这个扩展是默认只能core吗 用的是vs2022 使用C#与Halcon采集Realsense深度图并获取目标点的三维数据 吴国鹏937: 大佬我想问下halcon搭配realsense,可以同时采集RGB和深度图吗,每次异步采集另一种图片都会出现超时