Modbus TCP/IP 报文

DotNetty 实现 Modbus TCP 系列 (一) 报文类

  • 报文最大长度为 260 byte (ADU = 7 byte MBAP Header + 253 byte PDU)

  • Length = Unit Identifier 长度 + PDU 长度

MBAP Header

DotNetty 实现 Modbus TCP 系列 (一) 报文类

PDU

PDU 由两部分构成:Function Code(功能码) 和 Data 组成

Function Code

部分功能码:

DotNetty 实现 Modbus TCP 系列 (一) 报文类

报文类

ModbusHeader

DotNetty 实现 Modbus TCP 系列 (一) 报文类

ModbusHeader 对应 MBAP Header,包含两个构造函数:第一个构造函数用于从缓冲区解析消息头,第二个构造函数用来请求/响应时手动构造消息头。Encode 方法用于在传输前对消息头进行编码。

ModbusFunction

DotNetty 实现 Modbus TCP 系列 (一) 报文类

ModbusFunction 对应 PDU,该类为抽象类,所有的请求/相应的 PDU 均继承自该类。实际使用中根据 FunctionCode 实例化具体的子类对象。其中 CalculateLength 方法用来计算 Data 部分的长度,Decode 方法用于从缓冲区解析 Data,Encode 方法用于在传输前对 Data 编码。

ModbusFrame

DotNetty 实现 Modbus TCP 系列 (一) 报文类

ModbusFrame 对应 ADU。Encode 方法用于在传输前对 ADU 编码。

开源地址:https://github.com/VictorBu/modbus-tcp

原文地址:https://www.cnblogs.com/victorbu/p/10369919.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
DotNetty 实现 Modbus TCP 系列 (一) 报文类


相关文章:

  • 2022-12-23
  • 2021-11-05
  • 2022-01-19
  • 2021-08-09
  • 2021-12-09
  • 2022-01-12
  • 2021-11-11
猜你喜欢
  • 2022-01-19
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2021-12-09
  • 2021-05-25
相关资源
相似解决方案