技术方案

技术方案

水表MODBUS-RTU通讯协议
作者:admin   时间:2020-09-17 19:01  来源:未知  浏览:

水表MODBUS-RTU通讯协议

本水表使用了MODBUS-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。

MODBUS协议只允许在主机(PCPLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

MODBUS-RTU格式无起始字符和结尾字符,但需要加等待时间,等待时间不少于3.5个字符发送时间。

1) 传输方式

信息传输为异步方式,并以字节为单位,在主机和从机之间传递的通讯信息是10位字格式,包含1个起始位、8个数据位(最小的有效位先发送)、无奇偶校验位、1个停止位。

2) 数据帧格式

地址码

功能码

数据区

CRC校验码

1字节

1字节

n字节

2字节

地址码:地址码在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0255,在水表中只使用1~247,其它地址保留。这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。

功能码:功能码告诉了被寻址到的终端执行何种功能。下表列出了该系列仪表用到的功能码,以及它们的意义和功能。

功能

定义

操作

03H

读数据寄存器

获得水量操作

05H

阀控操作

阀控操作

01H

读阀门状态

读阀门状态 

数据区:数据区包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能码告诉终端读取一个寄存器,数据区则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。

CRC校验码:错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。

生成一个CRC的流程为:

1、预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。

2、把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。

3、将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。

4、如果最低位为0,重复第三步(下一次移位);如果最低位为1,将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。

5、重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。

6、重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。

7、最终CRC寄存器的值就是CRC的值。

此外还有一种利用预设的表格计算CRC的方法,它的主要特点是计算速度快,但是表格需要较大的存储空间,该方法此处不再赘述,请参阅相关资料。

通信应用格式详解

1)功能码03H:读寄存器

此功能允许用户获得设备采集与记录的数据及系统参数。主机一次请求的数据个数没有限制,但不能超出定义的地址范围。

下面的例子是从01号从机读1个采集到的基本数据(数据帧中每个地址占用2个字节)。采集的数据为总用水量(占用4个字节),其地址为00H

主机发送

发送信息

从机返回

返回信息

地址码

01H

地址码

01H

功能码

03H

功能码

03H

起始地址

高字节

00H

字节数

04H

低字节

00H

寄存器数据

高字节

00H

寄存器数量

高字节

00H

低字节

12H

低字节

02H

寄存器数据

高字节

D6H

CRC校验码

高字节

C4H

低字节

87H

低字节

0BH

CRC校验码

高字节

44H

低字节

34H

附:1、读写属性:“R”只读,读参量用03H号命令;“R/W”可读可写,写参量用10H号命令。禁止向未列出的或不具可写属性的地址写入。

2、表的通讯地址和通讯速率出厂时给出,亦可通过本公司提供的软件读出。也可以通过协议设置。

3、表中所测读数占4个字节,单位为m3。高位在前,低位在后,若读出值为0012D687H1234567),则计量值为1234567×0.01=12345.67m3


水表地址码为水表上8位灰色数字的最低两位。例如:水表上为42316790modbus地址为:90

2.阀门开控制

主机发送

发送信息

从机返回

返回信息

地址码

01H

地址码

01H

功能码

05H

功能码

05H

起始地址

高字节

00H

高字节

00H

低字节

00H

起始地址

低字节

00H

寄存器数量

高字节

FFH

低字节

00H

寄存器数据

高字节

FFH

CRC校验码

高字节

89H

低字节

00H

低字节

B2H

CRC校验码

高字节

44H

低字节

34H





3.阀门关控制

主机发送

发送信息

从机返回

返回信息

地址码

01H

地址码

01H

功能码

05H

功能码

05H

起始地址

高字节

00H

高字节

00H

低字节

00H

起始地址

低字节

00H

寄存器数量

高字节

00H

低字节

00H

寄存器数据

高字节

00H

CRC校验码

高字节

48H

低字节

00H

低字节

72H

CRC校验码

高字节

44H

低字节

34H


4.读阀门状态

主机发送

发送信息

从机返回

返回信息

地址码

01H

地址码

01H

功能码

01H

功能码

01H

起始地址

高字节

00H

高字节

00H

低字节

00H

起始地址

低字节

00H

寄存器数量

高字节

00H

低字节

00H

寄存器数据

高字节

00H/FFH

CRC校验码

高字节

48H

低字节

00H

低字节

72H

CRC校验码

高字节

44H

低字节

34H

注:00H  关阀  FFH开阀


5.读阀门异常状态

主机发送

发送信息

从机返回

返回信息

地址码

01H

地址码

01H

功能码

01H

功能码

85H

起始地址

高字节

00H

高字节

00H

低字节

00H

起始地址

低字节

00H

寄存器数量

高字节

00H

低字节

00H

寄存器数据

高字节

01H

CRC校验码

高字节

48H

低字节

00H

低字节

72H

CRC校验码

高字节

44H

低字节

34H


上一篇:基于NB-IOT的城市供水监控系统的设计
下一篇:没有了