Modbus简介
Modbus通常用于设备之间的监控和数据采集(SCADA)式网络通信。例如,大型服务器可用于控制可编程逻辑控制器(PLC)或可编程自动化控制器(PAC),而PLC / PAC可依次掌握传感器,阀门,电动机或任何其他嵌入式设备。
为了满足这些需求,Modbus被设计为一种请求 - 响应协议,具有灵活的数据和功能模型功能,这是它至今仍在使用的部分原因。
请求 - 响应周期
Modbus协议遵循主从架构,其中主设备向从设备发送请求并等待响应。该架构使主设备可以完全控制信息流,这对旧的多点串行网络有益。即使在现代TCP / IP网络上,它也能让主设备对从机行为进行高度控制,这在某些设计中很有用。
![cbc32b995b4c569efcf9b01c8ac25e28.png](https://img-blog.csdnimg.cn/img_convert/cbc32b995b4c569efcf9b01c8ac25e28.png)
图 1. Modbus设备的主从,请求 - 响应关系
在Modbus中,此请求是一组分层数据。第一层是应用程序数据单元(ADU),这是大多数人认为使用的Modbus的“类型”。有三个ADU:ASCII,远程终端单元(RTU)和TCP / IP。
TCP是一种现代格式,允许在软件中有效处理Modbus请求和响应,以及通过为每个请求使用专用连接和标识符来实现更高效的网络连接。RTU和ASCII是较旧的串行ADU格式,两者之间的主要区别在于RTU使用紧凑的二进制表示,而ASCII将所有请求作为ASCII字符流发送。
对于大多数应用,首选ADU取决于所需的物理网络(以太网,串行或其他),网络上的设备数量以及网络上主设备和从设备支持的ADU。从使用Modbus的应用程序的角度来看,数据应该简单地暴露,就好像ADU不存在一样。
在每个ADU中,有一个协议数据单元(PDU),它是Modbus协议的核心。每个PDU包含功能代码和相关数据。每个功能代码都有一个明确定义的响应,您可以将此功能代码视为发送给从站的命令。
在某些情况下,可能会发生错误。Modbus为异常定义了一个特定的PDU,让主人知道发生了什么。大多数驱动程序将其转换为对使用中的语言或应用程序有意义的形式。
Modbus数据模型
Modbus简单灵活地管理数据访问。本地,Modbus支持两种数据类型:布尔值和无符号的16位整数。
在SCADA系统中,嵌入式设备通常将某些值定义为输入,例如增益或比例积分微分(PID)设置,而其他值则是输出,如当前温度或阀门位置。为满足这一需求,Modbus数据值分为四个范围(见表1)。从站可以在每个范围内定义多达65,536个元素。