Modbus poll和Modbus Mbslave的使用

读取Modbus Mbslave中的数据

首先创建COM1和COM2端口

然后

using System.IO.Ports;
​
namespace 通信
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            SerialPort serialPort = new SerialPort("COM1",9600,Parity.None,8,StopBits.One);
            serialPort.Open();
            Modbus.Device.ModbusMaster master = Modbus.Device.ModbusSerialMaster.CreateRtu(serialPort);
            ushort[] ushorts = master.ReadHoldingRegisters(1, 0, 2);
            
        }
    }
}

结果如下

Modbus.Device.ModbusMaster介绍

Modbus.Device.ModbusMaster 是 NModbus4 库中的一个类,它提供了对 Modbus 主站(Master)功能的实现,允许你通过 Modbus 协议与 Modbus 从站(Slave)设备进行通信。Modbus 是一种工业标准通信协议,广泛用于电子设备和工业自动化系统中。

以下是使用 ModbusMaster 类进行 Modbus 通信的基本步骤:

  1. 创建 ModbusMaster 实例:根据你的通信方式(例如,RTU 或 TCP),创建 ModbusMaster 的一个实例。

  2. 连接到从站:使用 Connect 方法建立与 Modbus 从站的连接。

  3. 执行 Modbus 功能:使用 ModbusMaster 类的方法执行 Modbus 功能,例如读取线圈、读取寄存器等。

  4. 断开连接:使用 Disconnect 方法断开与 Modbus 从站的连接。

ReadHoldingRegisters介绍

ReadHoldingRegisters 是 NModbus4 库中 ModbusMaster 类的一个方法,用于从 Modbus 从站读取保持寄存器(Holding Registers)。保持寄存器是 Modbus 协议中用于存储数字数据的寄存器,它们在断电后仍然可以保持其值。

参数说明

  • slaveId: Modbus 从站的地址(1-247)。

  • startAddress: 要读取的起始寄存器地址。

  • numberOfPoints: 要读取的寄存器数量。

返回值

ReadHoldingRegisters 方法返回一个 ushort[] 数组,包含从 Modbus 从站读取的寄存器值。

注意事项

  • 确保在调用 ReadHoldingRegisters 之前,串行端口已正确打开,并且 Modbus 主站已成功连接到从站。

  • 读取操作可能会因为多种原因失败,例如串行通信错误、从站未响应或地址错误。在实际应用中,应该添加异常处理逻辑来处理这些情况。

  • Modbus 协议定义了保持寄存器的地址范围通常是从0开始,但具体取决于从站设备的实现。

Modbus RTU 协议报文格式

1、读寄存器消息帧格式 -0x03、0x04

请求:

响应:

2、写单寄存器消息帧格式 – 0x06

请求、响应:

3、写多寄存器消息帧格式 – 0x10

请求:

响应:

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值