modbus 是一种串行通讯协议,从1979年开始使用,它已经成为工业领域通讯协议的业界标准,是工业电子设备之间常用的连接方式。
优点:
公开发表,无版权纷争
易于部署和维护
限制:
大型二进制数据不支持
一个数据链路上只能连接247个设备,限制了可以连接到主节点的设备数量(以太网 tcp/ip 除外)
对未经授权的命令或者截取命令没有安全性
协议版本:
目前存于串口、以太网、以及其他支持互联网协议的网络版本。大多数的通讯通过串口 ELA485物理层进行
Modbus RTU 是一种紧促的,采用二进制表示数据的方式。Modbus ASCII是一种人类可读的,冗长的表示方式,这两中都是串行通讯方式。
校验不同:RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和
对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算
通讯和设备:
modbus 是一个主从(master/slave)架构的协议。有一个节点是主节点(相当于服务器设备),其他使用 modbus 协议参与通讯的节点都是从节点(设备),每一个设备都有一个唯一的地址,在串行和 MB+ 网络中
只有被指定为主节点的节点可以启动一个命令,在以太网上,任何一个设备都可以发送一个 modbus命令,但通常也只有一个主节点设备启动指令。
一个modbus 命令包含打算执行的设备的modbus地址,所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0除外,地址0是广播指令,所有收到指令的设备都会执行,不过不回应指令)
所有的modbus 命令包含了检查码,以达到命令没有被破坏的目的。基本的modbus 命令能指令一个RTU改变他寄存器的某个值,控制或者读取一个 I\O 端口,以及指挥设备回送一个或者多个其寄存器中的数据
从 ASCII 、RTU、TCP 具体协议进行分析
原文:https://www.cnblogs.com/chengyangyang/p/12172162.html