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