当前位置: 首页 > news >正文

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

请求:

响应:

http://www.lryc.cn/news/416538.html

相关文章:

  • 树莓集团的全球化征程:数字媒体产业的本土与国际布局
  • LeetCode面试150——274H指数
  • 【Linux】Linux重定向指南:探索输出重定向与追加重定向的奥秘!
  • Spring AI -快速开发ChatGPT应用
  • Modern C++ 智能指针
  • Python的100道经典练习题,每日一练,必成大神!!!
  • 代码回滚命令
  • [ASIS 2019]Unicorn shop1
  • LangChain与泛型编程:探索代码生成的新维度
  • day25
  • 红黑树的概念和模拟实现[C++]
  • 网络安全应急响应概述
  • 【C++】链表操作技巧综合:重排链表(带你理顺链表的做题思路)
  • 行为型设计模式2:观察者/职责链/中介者/访问者
  • 叛逆,批判
  • Linux 命令,mkdir说明与使用
  • 24. 两两交换链表中的节点(Java)
  • linux虚拟机设置固定ip
  • mysql问题解决
  • 类和对象(下)C++
  • 常用在线 Webshell 查杀工具推荐
  • RPC远程调用框架Dubbo
  • 基于STM32的智能灌溉系统
  • Datawhale AI 夏令营 Task3(半成品,仍在学习理解
  • 细腻呵护静音生活缓冲器,家具中的隐形侍者
  • 【MATLAB源码-第243期】基于simulink的CUK斩波电路仿真,输出各节点波形。
  • springboot项目不能同时跑junit4和junit5的解决方法
  • 【IO】使用消息队列完成两个进程之间相互通信
  • Web开发:用C#的逻辑理解VUE语法(VUE + Webapi小白开发笔记)
  • 操作系统文件位置指针