环保数据传输协议(-安徽绿石动态管控协议)

1. 仪器协议

在线监测仪器与数采仪之间通信协议采用Modbus RTU标准,数采仪作为Modbus主机,每台在线监测仪器作为Modbus从机。

环保数据传输协议(-安徽绿石动态管控协议)(1)

图1 Modbus主从通信系统结构

协议适用接口描述:

(1)适用于RS-485通讯接口通讯;

(2)每个RS-485接口可以同时连接多个在线监测仪器。

(3)适用于RS-232通讯接口通讯;

2. 协议层次

在线监测仪器与数采仪之间通讯协议采用Modbus RTU标准,可承载在多种通讯接口上。

环保数据传输协议(-安徽绿石动态管控协议)(2)

图2 Modbus RTU协议层次图

3. 通信协议

在线监测仪器与数采仪之间通信协议采用Modbus RTU标准,通过Modbus寄存器定义通信数据内容。

3.1 Modbus RTU

3.1.1 报文帧结构

环保数据传输协议(-安徽绿石动态管控协议)(3)

图3 Modbus RTU串行链路PDU

表1 Modbus报文结构表

名称

类型

长度(字节)

描述

设备地址

byte

对应仪器中的设备地址,用于区分挂在同一个485总线下不同在线监测仪器。取值范围1~127

功能码

BYTE

功能码定义见6.1.2

数据

BYTE[n]

N

变长数据,伴随功能码、应答模式不同而不同

CRC

WORD

2

Modbus CRC16校验结果

3.1.2 功能码定义

表2 Modbus功能码定义表

代码

功能

数据类型

备注

0x03

整形、浮点、字符

读多个寄存器

0x10

整形、浮点、字符

写多个寄存器

0x06

整形、浮点、字符

写单个寄存器

3.1.3 报文应答格式

3.1.3.1 功能码(0x03)读

主机请求:

设备地址

功能码

寄存器地址

寄存器数量

CRCH

CRCL

1B

1B

2B

2B

1B

1B

设备地址:主控板地址,为0x01-0xF7可选

功能码:为0x03

寄存器地址:要读取数据的存放开始地址。

寄存器数量:要读取的寄存器的个数

从机应答:

设备地址

功能码

寄存器地址

数据字节数

数据

CRCH

CRCL

1B

1B

2B

2B

...

1B

1B

设备地址:下位机地址,为0x01-0xF7可选

功能码:为0x03

数据字节数:寄存器数量×2

数据:N =(寄存器数量×2)BYTE

错误应答:

设备地址(1BYTE) 出错功能码 错误类型(1BYTE) CRC校验

注意出错功能码是功能码BYTE最高位取反得到。例如0x03 出错功能码为0x83

错误类型:

01 非法功能

02 非法数据地址

03 非法数据值

04 从站设备故障

05 确认

06 从属设备忙

注:以上错误类型为Modbus RTU标准含义。

示例:

读取命令:

01 03 00 00 00 02 C4 0B (设备地址01)

02 03 00 00 00 02 C4 38 (设备地址02)

其中设备地址(01) 功能码(03) 寄存器起始地址(00 00) 寄存器数量(00 02 即指数据长度为2个字) CRC校验(C4 0B)

应答报文:

01 03 04 41 CB 42 B7 EF 27

设备地址(01) 功能码(03) 数据字节数(04) 读取数据(实际为16进制数42 B7 41 CB对应的浮点型数据为91.63) CRC校验(EF 27)。

3.1.3.2 功能码(0x10)写

主机请求:

设备地址

功能码

寄存器地址

寄存器数量

字节数

DATA

CRCH

CRCL

1B

1B

2B

2B

1B

...

1B

1B

设备地址:主控板地址,为0x01-0xF7可选

功能码:为0x10

寄存器地址:要读取数据的存放开始地址

寄存器数量:要写入寄存器的个数

字节数:写入数据的字节数

数据:要写入的数据

注意如写一个寄存器,则寄存器数量为1,字节数为2,数据为一个WORD。

从机应答:

设备地址

功能码

寄存器地址

寄存器数量

CRCH

CRCL

1B

1B

2B

2B

1B

1B

示例:

主机发送:01 10 00 6B 00 02 04 00 0F 06 08 86 51

从机回复:01 10 00 6B 00 02 30 14

错误应答: 设备地址(1BYTE) 出错功能码 错误类型(1BYTE) CRC校验

注意出错功能码是功能码BYTE最高位取反得到。例如0x03出错功能码为0x83

错误类型:

01 非法功能

02 非法数据地址

03 非法数据值

04 从站设备故障

05 确认

06 从站设备忙

注:以上错误类型为Modbus RTU标准含义。

3.1.3.3 功能码(0x06)写

主机请求:

设备地址

功能码

寄存器地址

DATA

CRCH

CRCL

1B

1B

2B

2B

1B

1B

从机应答:

设备地址

功能码

寄存器地址

DATA

CRCH

CRCL

1B

1B

2B

2B

1B

1B

3.1.4 应用规约

表3 Modbus数据类型定义表

数据类型

描述及要求

BYTE

无符号单字节整型(字节,8位)

WORD

无符号2字节整型(字,16位)

DWORD

无符号4字节整型(双字,32位)

FLOAT

4字节浮点数型(字节,32位)IEEE 754 标准

DOUBLE

8字节浮点数型(字节,64位)

BYTE[n]

N字节

STRING

GBK编码,采用0终结符,若无数据,则放一个0终结符

DATE

日期类型6字节

年(BYTE)-月(BYTE)-日(BYTE)-时(BYTE)-分(BYTE)-秒(BYTE)。

其中:年=byte 2000, 月:1-12,日:1-31,时:0-23 分:0-59 秒:0-59

数值格式:BCD码

数据字节序定义:

协议采用大端模式(big-endian)来传递WORD、DWORD、FLOAT、DOUBLE。对于DWORD、FLOAT、DOUBLE,字间顺序也按照大端模式(big-endian)排列(也就是Modbus的Swap模式)。

  1. 关键参数

名称

寄存器偏移

数据类型

寄存器描述

读写

单位

备注

关键参数

0x2200

WORD

消解温度

R

摄氏度

0x2201

WORD

消解时长

R

分钟

0x2204

FLOAT

量程下限

R

毫克/升

0x2205

0x2206

FLOAT

量程上限

R

毫克/升

0x2207

0x2208

FLOAT

曲线斜率k

R

0x2209

0x220A

FLOAT

曲线截距b

R

0x220B

0x2210

FLOAT

标液一浓度

R

毫克/升

零标

0x2211

0x2212

FLOAT

标液一

测量过程值

R

信号值

0x2213

0x2214

FLOAT

标液二浓度

R

毫克/升

量标

0x2215

0x2216

FLOAT

标液二

测量过程值

R

信号值

0x2217

  • 关键参数的例子

读取消解温度的例子

请求报文: 01 03 22 00 00 01 8E 72

应答报文: 01 03 02 00 64 B9 AF

00 64 表示的是读取消解温度的值,消解温度是100度

2.工作状态

名称

寄存器偏移

数据类型

寄存器描述

读写

备注

工作状态

0x2000

WORD

工作状态

R

16位整形

测量模式

0x2002

DWORD

测量模式

R

1连续测量

2周期测量

3定点测量

4触发测量

5调试模式

告警位图

0x2004

DWORD

告警位图

R

8个寄存器,表示128种告警。从低到高依次对应告警位0~15

仪器工作状态定义表

编码

描述

备注

1

离线/调试

2

待机

3

测量

4

维护

5

清洗

6

故障

7

零点校准

8

量程校准

9

预留

10

预留

11

标样核查

12~99

可扩展

2.1读取工作状态的例子

请求报文: 01 03 20 00 00 01 8F CA

应答报文: 01 03 02 00 02 39 85

00 02 表示工作状态是2,查表可以知道工作的状态在待机状态。

2.2 读取测量模式的例子

请求报文: 01 03 20 02 00 01 2E 0A

应答报文: 01 03 02 00 02 39 85

00 02 表示测量的模式是2,查表可以知道模式的状态就是周期模式。

报警值

描述

针对方法

0x00

无故障

通用

0x01

缺试剂告警

通用

0x02

缺水样告警

通用

0x04

缺空白水告警

通用

0x08

缺标液

通用

0x10

备用

通用

0x20

标定异常告警

通用

0x40

超量程告警

通用

0x80

加热异常

通用

0x100

低试剂预警

通用

0x200

超上限告警

通用

0x400

超下限告警

通用

0x800

仪表内部其它异常

通用

3.反向控制

名称

寄存器偏移

数据类型

寄存器描述

读写

备注

远程控制命令

0x2C00

WORD

远程控制命令码

W

0x2C01

BYTE[n]

远程控制命令参数

W

当远程控制命令码为时间校准命令时,该字段为6字节的DATE

...

0x2CFF

编码

名称

参数

返回说明

1

启动测量

执行成功/失败

2

停止测量

执行成功/失败

3

清洗

执行成功/失败

4

标定

1,被动触发

2,周期标定

执行成功/失败

5

标液一校准

标液一校准

执行成功/失败

6

标液二校准

标液二校准

执行成功/失败

7

预留

8

时间校准

Date类型

返回仪器设定后的时间

9

标样核查

1 标样一核查

2 标样二核查

执行成功/失败

11~99

可扩展

3.1 反向控制的例子

操作名称

示例报文

备注

启动测量

请求报文:01 10 2c 00 00 01 02 00 01 8a 52

应答报文:01 10 2c 00 00 01 09 59

停止测量

请求报文:01 10 2c 00 00 01 02 00 02 ca 53

应答报文:01 10 2c 00 00 01 09 59

清洗

请求报文:01 10 2c 00 00 01 02 00 03 0b 93

应答报文:01 10 2c 00 00 01 09 59

标定

请求报文:01 10 2c 00 00 02 04 00 04 00 01 bf 6f

应答报文:01 10 2c 00 00 02 49 58

00 01表示被动触发标定

零点和量标一起标定

标液一校准

请求报文:01 10 2c 00 00 01 02 00 05 8b 91

应答报文:01 10 2c 00 00 01 09 59

零标

标液二校准

请求报文:01 10 2c 00 00 01 02 00 06 cb 90

应答报文:01 10 2c 00 00 01 09 59

量标

4.读取数据

名称

寄存器偏移

数据类型

寄存器描述

读写

备注

测量数据

0x1000

DATE

数据时间

R

测量启动时间

0x1001

0x1002

0x1005

FLOAT

测量数值

R

0x1006

0x1007

WORD

预留

R

0x1008

WORD

数据标识

R

零点校准数据

0x5200

WORD

备用

R

0x5201

DATE

零点数据时间

R

0x5202

0x5203

0x5204

float

零点浓度

R

0x5205

0x5206

float

零点吸光度值

R

0x5207

量程校准数据

0x5208

WORD

备用

R

0x5209

DATE

量程校准数据时间

R

0x520A

0x520B

0x520C

FLOAT

量程校准液浓度

R

0x520D

0x520E

FLOAT

量程校准吸光度

R

0x520F

0x5210

WORD

备用

R

标液核查数据

0x5211

DATE

标样核查数据时间

R

0x5212

0x5213

0x5214

FLOAT

标样核查测量浓度值

R

0x5215

0x5216

FLOAT

标样核查测量数值吸光度

R

0x5217

0x5218

FLOAT

标样核查标准浓度值

R

已知标液的浓度值

0x5219

仪器测量数据时间定义表

数据类型

描述及要求

DATE

日期类型6字节

年(BYTE)-月(BYTE)-日(BYTE)-时(BYTE)-分(BYTE)-秒(BYTE)。

其中:年=byte 2000, 月:1-12,日:1-31,时:0-23 分:0-59 秒:0-59

数值格式:BCD码

数据标识表

标识

标识定义

说明

N

正常

测量数据正常有效

T

超上限

监测浓度超仪器测量上限

L

超下限

监测浓度超仪器下限或小于检出限

D

仪器故障

仪器故障

B

仪器离线

仪器离线(数据通信正常)

M

维护调试数据

在线监控(监测)仪器仪表处于维护(调试)期间产生的数据

CZ

标液一校准(零点校准)

零点校准

CS

标液二校准

标液校准

SC

标液核查

标液核查

4.1 读取数据报文

请求报文:01 03 10 00 00 0B 00 CD

应答报文:01 03 16 17 01 01 00 00 00 00 00 00 00 40 00 00 00 00 0000 4E 00 00 00 00 C3B9

17 01 01 00 00 00表示数据时间2017-01-01 00:00:00

40 00 00 00表示数据通道1测量值为2.0

00 4E表示数据标示“N”正常

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页