6.0 KiB
6.0 KiB
版本说明
版本号 | 修改内容 | 日期 | 作者 |
---|---|---|---|
V1.0 | 协议修改为modbus | 2025-07-29 | 吴兆华 |
V1.1 | 1. 修改浮点格式为MODBUS ABCD; 2. 完善控制指令业务逻辑描述; 3. 修复错误; |
2025-09-24 | 吴兆华 |
V1.2 | 1. 修复异常码长度错误 | 2025-09-25 | 吴兆华 |
一、基本协议参数
参数 | 说明 |
---|---|
通信模式 | Modbus RTU(异步串行通信) |
从机地址 | 0x01(支持1-247,可通过专用指令修改) |
波特率 | 115200bps(默认) |
数据格式 | 8位数据位,1位停止位,无校验(8N1) |
校验方式 | Modbus CRC16(多项式0xA001) |
浮点数传输 | ABCD顺序 |
超时时间 | 200ms(通信无响应超时) |
二、寄存器地址映射
采用Modbus标准编号:保持寄存器=3xxxx,输入寄存器=4xxxx;
1. 保持寄存器(40001=0000H,可读写)
相对地址(十进制) | 功能描述 | 数据类型 | 单位 | 说明 |
---|---|---|---|---|
0000 | 系统控制命令 | U8 | - | 1:设备初始化 2:开始测量 3:停止测量 4:数据清零 5:开始控温 6:停止控温 详细见《系统控制命令定义》; |
0001 | 测量模式设置 | U8 | - | 测量模式: 0:旋光度模式; 1:比旋度模式; 2:浓度模式; 3:国际糖度模式; |
0002-0003 | 目标温度设置 | float | ℃ | 单位°C,范围暂定10°C~60°C |
0004 | 旋光管长度设置 | U16 | mm | 单位分米,范围暂定100mm~300mm |
0005 | 测量精度设置 | U8 | - | 暂定: 0:快速测量 1:高精度测量 对应得逻辑待定 |
0006 | 自动测量次数设置 | U8 | 次 | 暂定1~10 |
2. 输入寄存器(30001=0000H,只读)
相对地址(十进制) | 功能描述 | 数据类型 | 单位 | 说明 |
---|---|---|---|---|
0000-0001 | 实时温度数据 | float | ℃ | |
0002-0003 | 实时旋光度 | float | ° | |
0004 | 测量结果-模式代码 | U8 | - | 同测量模式(0x00-0x03) |
0005-0006 | 测量结果-数值 | float | 取决于模式 | 32位浮点数(旋光度/比旋度:°;浓度:g/100mL;糖度:°Z) |
0007-0008 | 测量结果-温度 | float | ℃ | 测量时的实际温度 |
0009 | 设备运行状态 | U8 | - | 低 8 位有效,高 8 位保留: + 0x00:准备中(初始化、控温) + 0x01:空闲 + 0x02:校准中 + 0x03:准备就绪 + 0x04:测量中 |
0010~0011 | 异常码 | U32 | - | 每个比特位表示一种异常,对应比特位为1表示有异常,该寄存器为0表示无异常: bit0:温度异常 bit1:编码器故障 bit2:TEC故障 bit3:电机故障 |
0012 | 测量完成标志 | U8 | - | 0=未完成,1=完成(自动测量结束后置1) |
0013-0014 | 设备型号 | U8[4] | - | ASCII码,不足4字符以0x00填充(例:"P1"存储为0x50 0x31 0x00 0x00) |
0015-0016 | 固件版本 | U8[4] | - | 主版本 + 次版本 + 修订版 + 构建号 按字节依次为主版本、次版本、修订版、构建号(例:0x01 0x02 0x03 0x04表示V1.02.03.04) |
三、功能码与命令映射
1. 系统控制命令(写入保持寄存器30001,功能码0x06)
命令码(U8) | 功能描述 | 说明 | |
---|---|---|---|
1 | 设备初始化 | 1. 设备状态、变量、测量结果等清零/复位,设备切换到校准状态; 2. 设备开始查找零点,并且停止在零点位置,切换到READY状态; 3. 查找零点的结果通过_读设备状态,_获取; |
|
2 | 开始测量 | 1. 设备需要先检查当前状态是否处于READY。否则返回modbus异常码4。 | |
3 | 停止测量 | 1. 不过处于何种状态,都立即停止; 2. 测量过程中得数据清零,状态复位; |
|
4 | 数据清零 | 1. 测量结果清空 | |
5 | 开始控温 | 1. 下位机开始控温; 2. 上位机间隔读取温度; |
|
6 | 停止控温 | 1. 下位机停止控制温度; |
四、Modbus标准错误码与设备错误映射
错误码 (十进制) | 错误名称 | 映射描述 |
---|---|---|
1 | 非法功能 | 请求的功能码未被从设备识别或不支持; + 请求得子命令不支持; |
2 | 非法数据地址 | 数据地址不在设备的可访问范围内 + 保持原释义 |
3 | 非法数据值 | 请求中包含的数值不在从设备的允许值范围内 + 设置目标温度、模式、炫光管长度等; |
4 | 从设备故障 | 从设备在执行请求时发生了无法修复的故障 + 编码器故障、电机故障、TEC故障等 |
5 | 确认 | 从设备已接收请求,但需要更多时间来完成操作 + 初始化操作,设备找零点、测量操作设备找零点 |
6 | 从设备忙 | 从设备正忙于处理其他命令,客户端应稍后重新发送请求 + 设备正在找零点 |
7 | 否定确认 | 从设备无法执行请求的程序功能 + 保持原释义 |
8 | 内存奇偶错误 | 从设备尝试读取扩展内存时检测到奇偶校验错误 + 保持原释义 |
10 | 网关路径不可用 | 网关无法为请求分配内部通信路径 + 无映射 |
11 | 网关目标设备无响应 | 网关未从目标设备获得响应 + 无映射1 |