一种MODBUS RTU扩展串口通讯协议

        一直以来,都希望有一个比较通用的串口UART通讯协议,看到当前modbus RTU的工业应用场景比较多,但是该协议,每次最多256个字节,而且必须是一问一答的通讯方式。而我想象中的通讯协议应该可以相对较长的数据,大约一次可以1Kb以上吧,,所以下面就在MODBUS RTU的协议基础上略作扩展,功能码使用0x03、0x06、0x10,但是只扩展了0x03功能码,毕竟ERTU通讯大部分是读取参数,而不是设置参数, 同时也可以更好的兼容以前的代码,改动更小。

        为了下文便于描述和区分,通用版本的MODBUS RTU简称为MRTU,新定义的协议为ERTU,“E”表示扩展的意思。

        1、03 读线保持寄存器  

        

       查询信息规定了要读的寄存器起始地址及寄存器的数量,寄存器寻址起始地址为0000,寄存器1-16所对应的地址分别为0-15。 上面的图片但是MRTU的查询命令官方文档例子,本文的ERTU保持不变。

        

        上图是MRTU的标准相应信息,在此处ERTU做如下调整,调整1:增加了起始地址,其他监控设备即使没有监控到请求命令,可以只根据响应命令来解析数据的内容;甚至从设备可以只发送不接受,而接收的设备也可以得到想要的数据。调整2:增加了字节数高字节,数据的最大长度可以长达65536个字节,提高了数据读取的效率

名称 例子(HEX) 备注
从机地址 11  
功能码 03  
起始地址高字节 0 新增
起始地址低字节 0 新增
字节数高字节 0 新增
字节数低字节 2  
数据1高字节 02  
数据1低字节 05  
................    
校验码    

      2、  06 预置单个寄存器

  

        3、16 预置多个寄存器   



 该协议只是一个初步设想,还未能在硬件设备上面实际应用。

文章中的图片均摘录自网络中的文档截图,本文为作者原创,转发请注明出处。

猜你喜欢

转载自blog.csdn.net/wukuan_123/article/details/80432665