
一、联网拓扑
本设备采用集中联网控制方式,确保设备间稳定高效通信。
二、地址设置
- 进入设置:设备开机状态下,长按“模式”和“风速”按键,进入地址设置模式。
- 切换位数:通过按“模式”键来切换地址位数。
- 退出设置:按“风速”按键退出地址设置模式。
三、通信协议
3.1 协议简介
本设备采用国际通用的 MODBUS-RTU 通信协议,进行 RS485 半双工通信。主机读数据功能号为 0x03,写功能号为 0x10 或 0x06,采用 16 位 CRC 校验,若校验错误则不回应。
3.2 通信参数
- 波特率:9600
- 数据格式:
- 起始位:1位
- 数据位:8位
- 停止位:1位
- 校验位:无
- 设备地址范围:0x01~0xFE
3.3 通信异常处理
- 异常应答:当出现异常应答时,将功能号的最高位置 1。例如,主机请求功能号为 0x03,则从机返回的功能号对应项为 0x83。
- 错误类型码:
- 0x01:功能码非法(设备不支持接收到的功能号)
- 0x02:数据位置非法(主机指定的数据位置超出了设备的范围)
- 0x03:数据值非法(主机发送的数据值超出了设备对应的数据范围)
示例:若主机请求功能码为 0x04,从机异常应答数据包为 0x01 0x84 0x01 0x82 0xc0
。
3.4 通信功能码
设备地址默认值:0x01
3.4.1 读单/多寄存器
主机发送(读多寄存器示例):
字节位置 | 内容描述 | 示例值(十六进制) |
---|---|---|
1 | 设备地址 | 0x01 |
2 | 功能码 | 0x03 |
3 | 起始地址高位 | 0x00 |
4 | 起始地址低位 | 0x00 |
5 | 数据字长高位 | 0x00 |
6 | 数据字长低位 | 0x10 |
7 | CRC 码高位 | 0x44 |
8 | CRC 码低位 | 0x06 |
从机正常应答:
字节位置 | 内容描述 | 示例值(十六进制) |
---|---|---|
1 | 设备地址 | 0x01 |
2 | 功能码 | 0x03 |
3 | 数据字节数 | 0x10 |
4-5 | 数据 1 高低位 | 0x00 0x00 |
6-7 | 数据 2 高低位 | 0x00 0x12 |
8-9 | 数据 3 高低位 | 0x00 0x0d |
10-11 | 数据 4 高低位 | 0x00 0x02 |
12-13 | 数据 5 高低位 | 0x00 0x00 |
14-15 | 数据 6 高低位 | 0x00 0x00 |
16-17 | 数据 7 高低位 | 0x00 0x00 |
18-19 | 数据 8 高低位 | 0x00 0x00 |
20-21 | 数据 9 高低位 | 0x00 0x00 |
22-23 | 数据 10 高低位 | 0x00 0x00 |
24 | CRC 码高位 | 0x6f |
25 | CRC 码低位 | 0xc5 |
3.4.2 写单路寄存器
主机发送:
字节位置 | 内容描述 | 示例值(十六进制) |
---|---|---|
1 | 设备地址 | 0x01 |
2 | 功能码 | 0x06 |
3 | 寄存器地址高位 | 0x00 |
4 | 寄存器地址低位 | 0x02 |
5 | 写入数据高位 | 0x00 |
6 | 写入数据低位 | 0x19 |
7 | CRC 码高位 | 0xE9 |
8 | CRC 码低位 | 0xC0 |
从机应答:
字节位置 | 内容描述 | 示例值(十六进制) |
---|---|---|
1 | 设备地址 | 0x01 |
2 | 功能码 | 0x06 |
3 | 寄存器地址高位 | 0x00 |
4 | 寄存器地址低位 | 0x02 |
5 | 写入数据高位 | 0x00 |
6 | 写入数据低位 | 0x19 |
7 | CRC 码高位 | 0xE9 |
8 | CRC 码低位 | 0xC0 |
3.4.3 写多路寄存器
主机发送:
字节位置 | 内容描述 | 示例值(十六进制) |
---|---|---|
1 | 设备地址 | 0x01 |
2 | 功能码 | 0x10 |
3 | 寄存器地址高位 | 0x00 |
4 | 寄存器地址低位 | 0x00 |
5 | 数据字长高位 | 0x00 |
6 | 数据字长低位 | 0x01 |
7 | 数据字节长度 | 0x02 |
8 | 写入数据高位 | 0x00 |
9 | 写入数据低位 | 0x55 |
10 | CRC 码高位 | 0x66 |
11 | CRC 码低位 | 0x6f |
从机应答:
字节位置 | 内容描述 | 示例值(十六进制) |
---|---|---|
1 | 设备地址 | 0x01 |
2 | 功能码 | 0x10 |
3 | 寄存器地址高位 | 0x00 |
4 | 寄存器地址低位 | 0x00 |
5 | 数据字长高位 | 0x00 |
6 | 数据字长低位 | 0x01 |
7 | CRC 码高位 | 0x91 |
8 | CRC 码低位 | 0xc5 |
3.4.4 寄存器地址映像表
序号 | 寄存器地址 | 变量名称 | 默认值 | 字节数 | 取值范围描述 | 读写允许 |
---|---|---|---|---|---|---|
1 | 0x0000 | 开关机 | 0x0000 | 2 | 0x0001 开机,0x0000 关机 | R/W |
2 | 0x0001 | 当前温度 | 0x0000 | 2 | 10 进制格式,0-51(0x0012 表示 18 度) | R |
3 | 0x0002 | 设定温度 | 0x0014 | 2 | 10 进制格式,以温度设定允许值为限(0x0012 表示 18 度) | R/W |
4 | 0x0003 | 模式 | 0x0000 | 2 | 0x0000 制冷,0x0001 采暖,0x0002 通风 | R/W |
5 | 0x0004 | 风速 | 0x0000 | 2 | 自动 0x0000,低速 0x0001,中速 0x0002,高速 0x0003 | R/W |
6 | 0x0005 | 制冷阀门状态(二管制阀) | 0x0000 | 2 | 关闭 0x0000,开启 0x0001 | R |
7 | 0x0006 | 采暖阀门状态 | 0x0000 | 2 | 关闭 0x0000,开启 0x0001 | R |
8 | 0x0007 | 锁键状态 | 0x0000 | 2 | 关闭 0x0000,开启 0x0001(开启时按键无效) | R/W |
9 | 0x0008 | 温度设定最低允许值 | 0x000a | 2 | 10 进制格式,0-15(0x0012 表示 18 度) | R/W |
10 | 0x0009 | 温度设定最高允许值 | 0x001e | 2 | 10 进制格式,20-30(0x0012 表示 18 度) | R/W |
备注:CRC 仅供参考,以 MODSCAN32 通信为准。
四、例程
4.1 串口工具测试
4.1.1 读取寄存器
发送数据包:01 03 00 00 00 05 85 C9
发送解析:
- 01:设备地址
- 03:读取功能码
- 00 00:寄存器开始地址
- 00 05:寄存器结束地址
- 85 C9:CRC 校验码
返回数据包:01 03 0A 00 01 00 1E 00 19 00 00 00 03 8A E4
返回解析:
- 01:设备地址
- 03:读取功能码
- 0A:10 个数据
- 00 01:开机状态
- 00 1E:当前温度(0x1e=30 摄氏度)
- 00 19:设置温度(0x19=25 摄氏度)
- 00 00:制冷模式
- 00 03:风速高速
- 8A E4:CRC 校验码
4.1.2 写设置温度寄存器
发送数据包:01 06 00 02 00 19 E9 C0
发送解析:
- 01:设备地址
- 06:写入功能码
- 00 02:寄存器地址 2(当前温度)
- 00 19:当前温度值(0x19=25 摄氏度)
- E9 C0:CRC 校验码
返回数据包:01 06 00 02 00 19 E9 C0
4.1.3 读取锁寄存器
发送数据包:01 03 00 07 00 01 01
发送解析:
- 01:设备地址
- 03:读取功能码
- 00 07:开始寄存器地址
- 00 01:读取寄存器数量
返回数据包:01 03 02 00 01 79 84
返回解析:
- 01:设备地址
- 03:读取功能码
- 02:返回数据数量
- 00 01:锁状态(0x00 关闭,0x01 开启)
- 79 84:CRC 校验码
4.1.4 写锁寄存器
发送数据包:01 06 00 07 00 00
发送解析:
- 01:设备地址
- 06:写入功能码
- 00 07:按键锁寄存器地址
- 00 00:关闭锁(00),01 为锁
返回数据包:01 06 00 07 00 00 38 0B