北联工控学堂丨MODBUS基础知识(一)
浏览量 804 时间 2023-05-12 14:47:30

Modbus通信协议简介


  Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,和I2C、SPI类似,总线就意味着有主机,有从机,这些设备在同一条总线上。


图片 2.png


  Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Mod-Bus名称的由来。


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


图片 1.png


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


Modbus通信协议特点


(1) 标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。

(2) Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3) Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。


11.png


Modbus4种数据类型


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

1.离散量输入(Discretes Input):1位,只读;

2.线圈(Coils):1位,读写;

3.输入寄存器(Input Registers ):16位,只读;

4.保持寄存器(Holding Registers):16位,读写。


图片 4.png


Modbus协议版本


  Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

  大多数Modbus设备通信通过串口485物理层进行。

  对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

  对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。


图片 3.png


  对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

  Modbus有一个扩展版本ModbusPlus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。

  所以当我们提及Modbus协议时,要确定是哪种模式,不同的模式之间区别还是很大的。


Modbus数据帧格式

  首先我们要知道一帧正常的MODBUS数据帧包含的内容有:地址域 + 功能码 + 数据 + 差错校验,再者无论是上述哪种协议版本,Modbus帧格式都是一样的:


图片 5.png


主要包括:

1.地址域:即主站要访问的从站地址,其范围0~240;

2.功能码:即主站想要对从站进行何种操作;

3.数据:如果主站的请求是读数据,那么该“数据”要包含的信息有:从哪里开始读数据 + 读多少数据。如果主站的请求是向从站写数据,那么该“数据”要包含的信息有:从哪里开始写数据 + 写多少个字节数据 + 要写的具体数据;

4.差错校验:为了保证数据传输的正确性,Modbus协议会在数据帧最后面加上两个字节的差错校验。

 

2.png



联系方式
X
  • 894059743
  • 19966773269

扫描二维码