MODBUS协议学习的一点心得

    最近刚写完一个完整的MODBUS协议(RTU),包括主站和从站。

其实主站从站这个说法不全面,应该是请求方(request)和回应方(respond)。协议的说明书是从回应方的角度来写的,而请求方因为需求不一样,写法有很多。

    协议没有讲的一个地方是DATBUF,数据存储区。作为从站必须要有这样的4个区来保存数据。一个区:线圈输入;一个区:线圈输出。一个区:寄存器输入;一个区:寄存器输出。这四个区实际就是4个数组。他们的现实意义是:线圈用来保存开关量类,寄存器用于保存多字节的数据类。输入的含义是主站无法改变的量,主站只能改变输出量,这个从现实中想想就明白,比如输入是一个限位开关,他的状态不能以主站来改变的。

     有这四个区的作用是,如果有数据输入或者变化,从站只需要改变相应的值就可以,而不必关系主站来请求什么。主站只需要在相应的位置获取相应的值就可以了。

    主站也要有相似的区来存放读取的值。这个区间的大小取决于需要。

MODBUS通讯的完整字节应该是:地址+功能码+数据区+CRC,协议里讨论的只是中间部分,功能码和数据区。

其他协议说的够明白了。

猜你喜欢

转载自blog.csdn.net/laocui1/article/details/81173023