Modbus 是一种基于主/从或客户端/服务器架构的请求-响应协议。在主从关系中,通信总是成对发生的。一个设备必须发起请求,然后等待响应。发起设备(称为主设备)负责发起每个交互。通常,主设备是HMI或SCADA系统,从设备是传感器、可编程逻辑控制器(PLC)或可编程自动控制器(PAC)。在标准 Modbus 网络中,有一个主站和多达 247 个从站。每个从站都有一个从 1 到 247 的唯一从站地址。
2. Modbus 协议
目前modbus协议主要用于串口和以太网版本。对于串口连接,有modbus RTU和mobus ASCII两种协议,在数据和协议细节上略有不同。对于 modbus TCP 等以太网连接,不需要验证和计算。
2.1 Modb us 数据传输模式
1) Modbus RTU
它用于串行通信,并利用紧凑的二进制数据来表示协议通信。RTU 格式遵循命令/数据,带有循环冗余校验校验和作为错误校验机制,以确保数据的可靠性。Modbus RTU 是可用于 Modbus 的最常见实现。Modbus RTU 消息必须连续传输,字符间没有犹豫。Modbus 消息由空闲(静默)时段构成(分隔)。
2) Modbus ASCII
它用于串行通信,并利用 ASCII 字符进行协议通信。ASCII 格式使用纵向冗余校验和。Modbus ASCII 消息由前导冒号 (":") 和尾随换行符 (CR/LF) 构成。
3) Modbus TCP
它是一种 Modbus 变体,用于通过 TCP/IP 网络进行通信,通过端口 502 连接。它不需要校验和计算,因为较低层已经提供校验和保护。
2.2 Modbus ASCII、RTU 和 TCP 的区别
Modbus RTU 和 Modbus ASCII 使用相同的协议。唯一的区别是通过线路传输的字节在 RTU 中以二进制形式呈现,而在 ASCII 中以可读 ASCII 形式呈现。关于 RTU 需要注意的重要一点是 RTU 消息没有 Start_of_text 指示。通信中的接收方使用“静默”时间来确定新消息的开始。ASCII 确实有一个文本开始标记。二进制消息比 ASCII 短,因此理论上传输/接收更快。
Modbus TCP 基本上是在以太网网络中使用 TCP 接口的 Modbus RTU 协议。Modbus 数据结构是使用 TCP/IP 协议中使用的应用层定义的。TCP协议,用于保证数据的正确接收和发送,IP是地址和路由信息。Modbus TCP 命令是以太网 TCP/IP 包装器中包含的 Modbus RTU 命令。Modbus TCP 的优势在于使用现有的以太网设备,这些设备部署广泛且具有成本效益。