海水养殖叶绿素水质传感器
数据通信 数据格式
Modbus通信默认的数据格式为:9600、n、8、1(波特率9600bps,1个起始位,8个数据位,无校验,1个停止位)。
数据类型为:浮点数型式
信息帧格式(xx代表一个字节)读数据指令帧:01 03 xx xx xx xx xx xx
地址 功能码 寄存器起始地址 寄存器数量 CRC校验码(低字节在前)
读数据应答帧:01 03 xx xx……xx xx xx
地址 功能码 字节数 应答数据 CRC校验码(低字节在前)
写数据指令帧:01 10 xx xx xx xx xx xx....xx xx xx
地址 功能码 寄存器地址 寄存器数量 字节数 写入数据 CRC校验码(低字节在前)
写数据应答帧:01 10 xx xx xx xx xx xx
地址 功能码 寄存器地址 寄存器数量 CRC校验码(低字节在前)
寄存器地址寄存器地址 | 名称 | 说明 | 寄存器个数 | 访问方式 |
0x2500 | 开机指令 | 让探头连续发光。 | 0(0字节) | 读 |
0x2600 | 测量值+温度 | 获取探头的温度和叶绿素值(小端存储模式,浮点数)。 | 4(8字节) | 读 |
0x1100 | 用户校准参数 | 获取两个校准参数K、B。 设置两个校准参数K、B。(K、B:小端存储模式,浮点数) | 4(8字节) | 读/写 |
0x3100 | 开启刷子 | 让刷子开始转动,建议刚上电开启一次刷子(默认关闭)。 | 0(0字节) | 读 |
0x3200 | 刷子转动间隔 | 获取刷子的转动间隔,默认为30min转一次。 设置刷子的转动间隔,单位为min。 | 1(2字节) | 读/写 |
0x2E00 | 停止测量 | 当数值稳定后可以停止测量。 | 0(0字节) | 读 |
0x3000 | 传感器地址 | 默认为1,写入数据范围1-247。 | 1(2字节) | 写 |
作用:设置电极的Modbus设备地址;
将设备地址01改为14,范例如下
请求帧:01 10 30 00 00 01 02 14 00 99 53
应答帧:01 10 30 00 00 01 0E C9
开机指令:作用:让探头连续发光,开始叶绿素测量。
请求帧:01 03 25 00 00 00 4E C6
应答帧:01 03 00 20 F0
开始测量指令:作用:获取测量探头的温度和叶绿素值,温度的单位为摄氏度,叶绿素的单位为ug/L或0~100RFU。
请求帧:01 03 26 00 00 04 4F 41
应答帧:01 03 08 00 00 8D 41 00 00 8D 41 12 65
读数示例:
温度值 | 叶绿素值 |
00 00 8D 41 | 00 00 8D 41 |
如:温度值和叶绿素值,小端储存模式,浮点数。此时温度为17.625℃,叶绿素为17.625ug/L。
校准指令:作用:设置两个校准参数K、B;一般默认值为:K=1,B=0。
请求帧:01 10 11 00 00 04 08 00 00 80 3F 00 00 00 00 81 AE
应答帧:01 10 11 00 00 04 C4 F6
叶绿素采用一点或两点校准。校准溶液为染料罗丹明WT。然而,必须强调的是:用染料做为校准物并不能真正提高传感器的准确度。
一点校准:将传感器置于200ug/L的标准液中,读取数值,记为Y。
由公式K=200/Y,计算出K值,B=0。根据新计算出的K、B值,发送指令。
若再次进行校准,则先恢复K=1,B=0,再重复以上步骤。
两点校准:将传感器置于去离子水中,读取数值,记为X。将传感器置于200ug/L标准液中,读取数值,记为Y。
由公式K=200/(Y-X),B=-KX,计算K、B值。根据新计算出的K、B值,发送指令。
若再次进行校准,则先恢复K=1,B=0,再重复以上步骤。
开启刷子作用:让刷子开始转动,建议刚上电开启一次刷子(默认关闭)。
请求帧:01 10 31 00 00 00 00 74 94
应答帧:01 10 31 00 00 00 CE F5
设置刷子转动间隔作用:设置刷子的转动间隔,单位为min。
下面以从设备地址0x01,设置时间为10min为例说明开启刷子命令的请求帧和应答帧。
请求帧:01 10 32 00 00 01 02 0A 00 B3 33
应答帧:01 10 32 00 00 01 0F 71
获取刷子转动间隔作用:获取刷子的转动间隔,默认为30min转一次
请求帧:01 03 32 00 00 01 8A B2
应答帧:01 03 02 1E 00 B1 E4
停止指令:作用:当测量稳定后可停止测量
请求帧:01 03 2E 00 00 00 4C E2
应答帧:01 03 00 20 F0
海水养殖叶绿素水质传感器