C#ModBus Tcp读写数据

本文介绍了如何使用C#进行ModBus TCP通信,包括添加引用、实例化连接、读写线圈和寄存器的操作。通过指定IP、端口和站号建立连接,并展示了读取和写入不同类型的ModBus地址的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 引用-添加引用-HslCommunication.dll
    在这里插入图片描述

  2. ModBus组件所有的功能类都在 HslCommunication.ModBus命名空间,所以再使用之前先添加

using HslCommunication.ModBus;
using HslCommunication;
  1. 在使用读写功能之前必须先进行实例化:
private ModbusTcpNet busTcpClient = new ModbusTcpNet("192.168.3.45", 502, 0x01);   // 站号1

上面的实例化指定了服务器的IP地址,端口号(一般都是502),以及自己的站号,允许设置为0-255,后面的两个参数有默认值,在实例化的时候可以省略。

private ModbusTcpNet busTcpClient = new ModbusTcpNet("192.168.3.45");   // 端口号502,站号1

4.在这里插入图片描述

模拟器模拟的是西门子PLC 有四种类型
地址以0开头的是可读可写线圈
地址以1开头的是只读线圈
地址以4开头的是可读可写寄存器(string/float/int/ushort/short等都可以放在这里面)
地址以3开头的是只读寄存器
我们读取的时候只看后四位0001,就是1,但是库里面是从0开始读的,所以对应的就要减一

  1. 读取寄存器的一个值
        private void button1_Click(object sender, EventArgs e)
        {
   
		    bool coil100 = busTcpClient.ReadCoil("0")
### 使用C#通过Modbus TCP协议读写寄存器数据 为了实现使用C#通过Modbus TCP协议来读取和写入寄存器中的数据,可以采用第三方库如 `NModbus4` 来简化操作过程。下面提供了一个简单的例子用于展示如何完成这一目标。 #### 安装 NModbus4 库 首先,在项目中引入必要的NuGet包——NModbus4。这可以通过Visual Studio内置的NuGet管理工具轻松做到。 #### 创建客户端并建立连接 创建一个基于TCPModbus客户端实例,并尝试与服务器端建立网络通信链路: ```csharp using System; using System.Net.Sockets; using NModbus; // 建立到Modbus TCP服务器的连接 TcpClient client = new TcpClient("127.0.0.1", 502); // 替换为目标IP地址和端口号 var factory = new ModbusFactory(); IModbusMaster master = factory.CreateMaster(client); ``` #### 执行读命令 定义函数用来执行具体的读请求动作,这里以读取保持寄存器为例: ```csharp public static ushort[] ReadHoldingRegisters(IModbusMaster modbusMaster, byte slaveId, ushort startAddress, ushort numberOfPoints) { return modbusMaster.ReadHoldingRegisters(slaveId, startAddress, numberOfPoints); } ``` 调用上述方法即可获得指定数量连续位置上的寄存器数值[^1]。 #### 发送写指令 同样地,也可以构建相应的写入逻辑,比如单个寄存器的数据更新: ```csharp public static void WriteSingleRegister(IModbusMaster modbusMaster, byte slaveId, ushort address, ushort value) { modbusMaster.WriteSingleRegister(slaveId, address, value); } ``` 以上就是利用C#配合NModbus4库来进行基本的Modbus TCP交互的方式简介。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值