Modbus入门知识

时间:2022-12-12 11:00:08

Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。

Modbus入门知识

Modbus协议是一种请求/应答方式的交互过程,主机主动发起通讯请求,从机响应主机的请求,从机在没有收到主机的请求时,不会主动发送数据,从机之间不会进行通讯。

Modbus协议规定,进行读写操作的数据类型,按照读写属性和类型可分为以下4种:

  • 离散量输入(Discretes Input  ):1位,只读
  • 线圈(Coils):1位,读写
  • 输入寄存器(Input Registers  ):16位,只读
  • 保持寄存器(Holding Registers):16位,读写

Modbus入门知识

3种传输模式

  • 基于串口的Modbus-RTU数据按照标准串口协议进行编码,是使用最广泛的一种Modbus协议,采用CRC-16_Modbus校验算法。
  • 基于串口的Modbus-ASCII所有数据都是ASCII格式,一个字节的原始数据需要两个字符来表示,效率低,采用LRC校验算法。
  • 基于网口的Modbus-TCPModbus-TCP基于TCP/IP协议,占用502端口,数据帧主要包括两部分:MBAP(报文头)+PDU(帧结构),数据块与串行链路是一致的。

大部分人习惯分为两种:基于串行链路的和基于以太网TCP/IP

所以当我们提及Modbus协议时,要确定是哪种模式:RTU、ASCII或TCP

Modbus RTU和Modbus ASCII使用相同的协议。唯一的区别是通过线路传输的字节用RTU表示为二进制,用Modbus RTU表示为可读ASCII。关于RTU的重要注意事项是RTU消息没有Start_of_text指示。通信中的接收方 使用“静默”时间以确定新消息的开始。ASCII确实有一个文本开头标记。二进制消息比ASCII短,因此理论上传输/接收速度更快。您可能很高兴在HMI / SCADA中看到大约100 ms的更新速率,并且可以选择任一通信。

即:

  • 使用RTU是可能的
  • 如果RTU在WinNT上出现超时问题或者使用300 bps或拨号调制解调器等慢速通信媒体时使用ASCII,大多数用于Modbus的OPC服务器都支持ASCII和RTU通信。