工作的那些小事(测试篇之对modbus的理解)

来源:互联网 发布:债券逆回购 知乎 编辑:程序博客网 时间:2024/05/29 02:51

  测试的日子是那么漫长,对于一个底层开发的人来说。因为习惯了在学校一上来就写代码,那时候认为开发就是要写代码。但是渐渐明白了测试或许可以让自己以后开发更加容易和清晰。时间所有的事情都是平衡的,你为这件事情付出得到的同时其他事情可能就会失去尝试的机会。今天决定要在通信测试这方面花一些时间,对于上位机和机器的rs485接口通信modbus协议都是很陌生的。所以只能从modbus协议文档开始了,modbus是工业、智能仪表中用的最多的。modbu大概分为RTU、ASCII、TCP/IP这三种方式进行传输数据,对于RTU是传输大数据速率低的,因为要将一个字节拆成两个ASCII即16进制的数表示,这样就降低了速率。ASCII传输是一个16进制的数,速率是RTU的两倍理论上。不过每一帧数据都包括了地址码、功能码、数据区、校验区,RTU是通过CRC校验的,ASCII是通过LCR校验的只是简单的多项式方法。。。续未完

  modbus是一个支持一台主机多台从机进行通信的协议。通过RS485形成一个半双工的通信,只有主机发命令给从机进入等待状态,从机先判断地址是否跟自己本身相等,相等则对功能码和数据会做相应的动作,否则返回空闲状态。在处理数据的过程中会进行校验如果错误则返回一个错误码,正常给主机回应一个功能码一致的信号。主机等待从机信号也是有一个超时时间out_time的,如果在超时时间内接收到数据并且进行校验,错误则可以进行重发。如果接收的数据不是来自期望的从机,则继续进行超时等待。对于modbus通信最重要的机制是每一帧数据字符之间的传输时间要小于1.5个字符,连续帧之间的时间要小于3.5个字符才认为是连续的帧数据。1.5char的时间是根据波特率有关的,一般1.5char = 1/9600*(1+8+1)。

 

0 0
原创粉丝点击