1. RTU的传输机制
RTU,即远程传输单元。ModBus主机通过RTU方式发送数据帧给从机时,数据帧格式为:
(1) 主机发出目标从机的地址
(2) 接着是功能码
ModBus提供了127个功能码,即规定主机找从机要实现的操作分了128种可能,功能码表示收到主机的数据帧的从机之后要干什么事情,如0x03功能码表示是主机要读从机的数据
(3) 针对功能码,附加的数据信息(相当于c函数的形参一样)
举个例子,主机去读地址为2的从机的数据,那么地址域为0x02,功能码为0x03,附加数据信息则是要表明主机要读从设备的哪些存储单元上的数据: 从哪个地址开始读,读多长(从机的每个存储单元都有一个确定的地址)。
针对不同的功能码,其数据域代表的意义不同。以0x03功能码为例,数据域的意义是哪个地址开始,读多少个。
(4) 如上构成一条数据帧之后,再全部参与CRC16的校验,CRC16就是将它们进行一种特定的方式运算,最后得到一个16位的二进制数,这个二进制数反映了整个数据帧的一种规则,这个二进制数尾加在数据帧后面,称之校验码。
注意几点:
a. 主、从机上电后,都处于接收状态,