Modbus入门
Modbus实际上是应用层协议,制定的年代非常早。理论上是不限定物理层的。
最早是从串口协议RS485上发展来的。因为它是可以一主多从,跟RS485的架构刚好相同。现在也支持基于TCP/IP协议,默认端口号是502。但由于502端口在系统保留端口内,所以很多软件是以8502启动的。
Modbus支持的底层协议分为三种。分别是Modbus RTU、Modbus ASCII,Modbus TCP。由于它是上层协议,所以有JavaScript的实现。有两个库,Modbus-Serial和JSModbus。
Modbus分为主机和从机,一个主机最多可以带32个从机。按Client Server架构来分的话,主机Master是Client,从机Slave是Server。
从机分为三级来去读取一个具体的数值。依次是Unit ID、寄存器、地址。
每个从机,也就是Server首先有一个自己的Unit ID。
其次支持四种不同的寄存器。
1,线圈coil,可读可写,布尔类型。
2,离散输入Discrete input,只读布尔类型。
3,输入寄存器Input registers,只读,双字节。
4,保持寄存器Holding registers,可读可写,双字节。
最后,每种寄存器有其自己的地址。地址又分人类可读地址和机器实际地址。人类可读地址以0、1、3、4开头,分别代表线圈和离散输入、输入寄存器、保持寄存器。机器实际地址都是从0开始的。
Modbus的问题就是从机不能主动上报数据,只能主机去轮询。