海水养殖盐度水质传感器
附录 数据通讯
- 数据格式
Modbus通信默认的数据格式为:9600、n、8、1(波特率9600bps、1个起始位、8个数据位、无校验、1个停止位)。
波特率等参数可以定制。
- 信息帧格式(xx代表一个字节)
- 读数据指令帧:
06 03 xx xx xx xx xx xx
地址 功能码 寄存器地址 寄存器数量 CRC校验码(低字节在前)
- 读数据应答帧:
06 03 xx xx……xx xx xx
地址 功能码 字节数 应答数据 CRC校验码(低字节在前)
- 写数据指令帧:
06 06 xx xx xx xx xx xx
地址 功能码 寄存器地址 写入数据 CRC校验码(低字节在前)
- 写数据应答帧(同写数据指令帧):
06 06 xx xx xx xx xx xx
地址 功能码 寄存器地址 写入数据 CRC校验码(低字节在前)
- 寄存器地址
寄存器地址 | 名称 | 说明 | 寄存器个数 | 访问方式 |
40001 (0x0000) | 测量值+温度 | 4个双字节整数,分别为测量值、测量值小数位数、温度值、温度值小数位数。 | 4(8字节) | 读 |
44097 (0x1000) | 零点校准 | 在空气中校准,写入数据为0。 | 1(2字节) | 写 |
44101 (0x1004) | 斜率校准
| 在已知的标准溶液(20%满量程—满量程)中校准,写入数据为标准溶液实际值×10。 | 1(2字节) | 写 |
44103 (0x1006) | 零点校准值 | 读出数据为零点偏移量。 | 1(2字节) | 读 |
44105 (0x1008) | 斜率校准值 | 读出数据为斜率值×1000。 | 1(2字节) | 读 |
44113 (0x1010) | 温度校准 | 在溶液中校准,写入数据为实际温度值×10;读出数据为温度校准偏移量×10。 | 1(2字节) | 写/读 |
48195 (0x2002) | 传感器地址 | 默认为6,写入数据范围1-127。 | 1(2字节) | 写/读 |
48225 (0x2020) | 恢复出厂 | 校准值恢复出厂设置,写入数据为0。 | 1(2字节) | 写 |
注意:
- 寄存器地址为根据Modbus协议定义的带寄存器类型的寄存器起始地址(括号中的16进制表示的实际的寄存器起始地址)。
- 更改传感器地址时,返回指令中的传感器地址为更改后的位置。
- 读取数据时返回测量值的数据定义:
xx xx xx xx xx xx xx xx
2字节测量值 2字节测量值小数位数 2字节温度值 2字节温度小数位数
数据类型默认为:双字节整型,高字节在前;其他如浮点数类型可选。
- 命令示例
- 设置设备ID地址:
作用:设置电极的Modbus设备地址;
将设备地址06改为01,范例如下
请求帧:06 06 20 02 00 01 E3 BD
应答帧:01 06 20 02 00 01 E2 0A
- 开始测量指令
作用:获取测量探头的盐度值和温度;温度的单位为摄氏度,盐度的值为PSU;
请求帧:06 03 00 00 00 04 45 BE
应答帧:06 03 08 01 02 00 01 00 B0 00 01 14 B4
读数示例:
盐度值 | 温度值 |
01 02 00 01 | 00 B0 00 01 |
如:盐度值 01 02 表示十六进制读数盐度值,00 01 表示盐度数值带1位小数点,转换成十进制为25.8。
温度值00 B0 表示十六进制读数温度值,00 01表示温度数值带1位小数点,转换成十进制为17.6。
- 校准指令
零点校准
作用:设定电极的盐度零点校准值;此处零点校准在空气中进行;
请求帧:06 06 10 00 00 00 8C BD
应答帧:06 06 10 00 00 00 8C BD
斜率校准
作用:设定电极的盐度斜率校准值;此处斜率值以实际标准溶液数值为准,以50PSU为示例参看校准;
请求帧:06 06 10 04 01 F4 CD 6B
应答帧:06 06 10 04 01 F4 CD 6B
- 错误响应
如果传感器不能正确执行上位机命令,则会返回如下格式信息:
定义 | 地址 | 功能码 | CODE | CRC校验 |
数据 | ADDR | COM+80H | xx | CRC 16 |
字节数 | 1 | 1 | 1 | 2 |
- CODE:01 – 功能码错
03 – 数据错
- COM:接收到的功能码
海水养殖盐度水质传感器