超声波流量计modbus协议简介
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus是一种一主一从的一对一通信方式(主机发一帧,从机回一帧的形式),当然也一主多从,但实际也是一对一通信,同一时刻只能有一个从机进行响应。如果需要和多个从机同时通信,这里也支持使用广播,即主机发送指令,所有从机接收指令并执行,但不进行应答。可以参考国标标准(以下简称国标),GBT 19582-2。
当进行一主多从通信时,主机通过从机ID号来区分要通信的从机设备。从机ID范围为1~247,0为广播地址,248~255为用户自定义地址。
用我公司生产的超声波流量计举例,根据通讯协议上写明40001是超声波流量的瞬时流量,数据类型写的是float,以此我们来说明,40001说的是使用的保持寄存器,对应的功能码是03号,1指的是寄存器从1号开始,因为国内的组态软件都是从1开始的,但是原始报文对应的是16进制的报文0,因为float浮点数是占2个寄存器地址,4个字节,因此汇总所有的信息可以知道因发出去的指令为010300000002后面需要加CRC校验的,开头的01指的是仪表的站号,由此进行组合,当然开头的站号是会进行变更的,因为485的通讯协议内规定站号是从1-255的,以上是10进制,转为16进制为01-FF,综合以上解释,最终形成的16进制串口请求指令为010300000002C40B,发送请求指令到超声波流量的通讯端口上,超声波流量计通讯端口上获取到请求指令后,会回复对应的回复指令,回复的指令也同样遵行标准的modbus RTU指令标准,以上诉指令为例,回复因为0104XXXXXXXX+CRC,
01为站号对应回复,04是代表浮点数是4个字节,2个寄存器,04后面会有对应的4字节的16进制的数据,该数据就是表示浮点数的值,目前是16进制表示的,需要进行浮点数转化才可以,最后加上CRC校验,以上就是一次标准的超声波流量计标准的485通讯,包含请求和回复,一次完成的通讯就完成了,每次请求数据与再次请求数据之间的间隔一般需要在1秒以上。如果一个总线上需要获取多个超声波流量计,通讯间隔时间需要累加起来计算。