자료설명
这是北京京创鑫业科技有限公司 AirTS 시리즈高大空间에어컨机组的 Modbus RTU 통신 프로토콜,触屏控制系统终端做슬레이브,上位机做主机。프로토콜只有 15 个有效레지스터,但有几个地方容易踩坑:온도要除 10、启停控制要用不同值写同一个레지스터、写操作只支持 0x06 单레지스터、以及写目标온도/角度/强度时范围比读出来的范围窄。
物理层和对매개변수
RS-485 两线制,A 接 A、B 接 B。시리얼 포트 매개변수(注意:PDF 里写的是 9600,实际使用前先确认你设备上设的통신 속도,别上来就用默认):
| 매개변수 | 值 |
|---|---|
| 인터페이스 | RS-485(不支持其他방식) |
| 통신 속도 | 9600 bps(默认) |
| 시작位 | 1 |
| 데이터 비트 | 8 |
| 체크섬 | 无 |
| 정지 비트 | 1 |
| 슬레이브 주소 | 0x01 ~ 0xFF(1 号~255 号设备),看触屏上显示的设备번호 |
终端内部会把에어컨的本地데이터转发给上位机,所以你对에어컨发任何命令,对象都是这个触屏控制终端。
프로토콜硬规则
- 只支持 Modbus RTU,不支持 ASCII 或 TCP。
- 기능 코드:0x03 读유지 레지스터(可连续读多个),0x06 写单个레지스터(不支持 0x10 写多个)。
- 데이터형식:高바이트在前,低바이트在后。
- CRC:16 位,低바이트在前,高바이트在后。
- 写范围受限:目标온도写范围 0~32℃、出风角度写范围 0~64、出风强度写范围 0~64;但读出来显示的是 0~50℃、0~100 度、0~100%。写的时候别超上限,否则设备可能不认。
- 不支持多设备打包命令,每条命令只针对一个슬레이브 주소。
레지스터点表(完整版)
| 10진수주소 | 16진수주소 | 기능 코드 | 读写 | 名称 | 설명 |
|---|---|---|---|---|---|
| 1 | 0x0001 | 0x03 | 只读 | 风机状态 | 0000=过热,0001=正常 |
| 2 | 0x0002 | 0x03 | 只读 | 备用 | 保留 |
| 3 | 0x0003 | 0x03 | 只读 | 备用 | 保留 |
| 4 | 0x0004 | 0x03 | 只读 | 备用 | 保留 |
| 5 | 0x0005 | 0x03 | 只读 | 回风온도 | 返回值÷10,带 1 位小数(例 0x012D=301→30.1℃) |
| 6 | 0x0006 | 0x03 | 只读 | 出风온도 | 返回值÷10,带 1 位小数 |
| 7 | 0x0007 | 0x03 | 只读 | 工作区온도 | 返回值÷10,带 1 位小数 |
| 8 | 0x0008 | 0x03 | 只读 | 启停状态 | 0000=停运,0001=开启 |
| 8 | 0x0008 | 0x06 | 写 | 设备开启 | 写 0001 |
| 8 | 0x0008 | 0x06 | 写 | 设备停运 | 写 0004 |
| 9 | 0x0009 | 0x03/0x06 | 读写 | 第一温控时段目标온도 | 读 0~50℃,写 0~32℃ |
| 10 | 0x000A | 0x03/0x06 | 读写 | 第二温控时段目标온도 | 读 0~50℃,写 0~32℃ |
| 11 | 0x000B | 0x03/0x06 | 读写 | 第三温控时段目标온도 | 读 0~50℃,写 0~32℃ |
| 12 | 0x000C | 0x03/0x06 | 读写 | 第四温控时段目标온도 | 读 0~50℃,写 0~32℃ |
| 13 | 0x000D | 0x03/0x06 | 读写 | 出风角度 | 读 0~100 度,写 0~64 |
| 14 | 0x000E | 0x03/0x06 | 读写 | 出风强度 | 读 0~100(显示加 %),写 0~64 |
| 15 | 0x000F | 0x03 | 只读 | 控制权限 | 0000=就地,0001=远程,0002=两者均可 |
常用프레임예제(以 2 号设备为例,已逐条 CRC 검증)
下面这些帧都跟 PDF 原厂예제一致(或按프로토콜规则推算并验证 CRC)。如果你不是 2 号设备,把第一个바이트换成你的주소,重新算 CRC 即可。
| 动作 | 下发帧 | 설명 |
|---|---|---|
| 读风机状态 | 02 03 00 01 00 01 D5 F9 |
应答 00 01=正常 |
| 读启停状态 | 02 03 00 08 00 01 05 FB |
应答 00 01=开启 |
| 设备开启 | 02 06 00 08 00 01 C9 FB |
写레지스터 8 为 0001 |
| 设备停运 | 02 06 00 08 00 04 09 F8 |
写레지스터 8 为 0004 |
| 读所有레지스터 1~14 | 02 03 00 01 00 0E 95 FD |
一次读回 14 个状态레지스터 |
| 读控制权限 | 02 03 00 0F 00 01 B4 3A |
读레지스터 15 |
| 设置目标온도 25℃ | 02 06 00 09 00 19 98 31 |
写레지스터 9 为 25(写范围 0~32) |
| 设置出风角度 90° | 02 06 00 0D 00 5A 98 01 |
写레지스터 13 为 90(写范围 0~64) |
| 设置出风强度 80% | 02 06 00 0E 00 50 E8 06 |
写레지스터 14 为 80(写范围 0~64) |
读所有레지스터 1~14 的返回帧拆解
下发 02 03 00 01 00 0E 95 FD 后,收到 33 바이트应答(데이터区 28 바이트):
02 03 1C 00 01 00 01 01 2D 01 29 01 05 01 28 01 0E 00 01 00 12 00 11 00 10 00 0F 00 5A 00 50 FE 96
按真实바이트顺序拆解(주소 1 到주소 14,每个레지스터 2 바이트):
| 주소 | 16진수 | 10진수 | 含义 |
|---|---|---|---|
| 1 风机状态 | 00 01 | 1 | 正常 |
| 2 备用 | 00 01 | 1 | 备用 |
| 3 备用 | 01 2D | 301 | 备用 |
| 4 备用 | 01 29 | 297 | 备用 |
| 5 回风온도 | 01 2D | 301 | 30.1℃ |
| 6 出风온도 | 01 29 | 297 | 29.7℃ |
| 7 工作区온도 | 01 05 | 261 | 26.1℃ |
| 8 启停状态 | 00 01 | 1 | 开启 |
| 9 第一目标온도 | 00 12 | 18 | 18℃ |
| 10 第二目标온도 | 00 11 | 17 | 17℃ |
| 11 第三目标온도 | 00 10 | 16 | 16℃ |
| 12 第四目标온도 | 00 0F | 15 | 15℃ |
| 13 出风角度 | 00 5A | 90 | 90 度 |
| 14 出风强度 | 00 50 | 80 | 80% |
注意:这个返回帧读的是주소 1~14 共 14 个레지스터,不包含주소 15(控制权限)。原厂 PDF 在列举「바이트位置→레지스터」对照时,把주소 3、4 列成了回风/出风온도,和真实바이트顺序对不上——那个对照表本身有错位,上面这版是按实际16진수바이트顺序重新对齐的,你可以照着数:第 5~6 바이트才是回风온도 0x012D。
如果要读控制权限,单独发 02 03 00 0F 00 01 B4 3A。
온도분석
주소 5、6、7 都是온도,数值放大了 10 倍:
比如返回 01 2D = 301(10진수),真实온도 = 301 ÷ 10 = 30.1℃。
目标온도(레지스터 9~12)没做缩放,레지스터 값就是온도值,比如 00 19 = 25℃,就是 25℃(但写的时候只能写到 32℃)。
启停控制
同一个레지스터주소 8,写不同值实现不同动作:
| 值 | 动作 |
|---|---|
| 0x0001 | 开启 |
| 0x0004 | 停运 |
不要写 0x0000 去关,PDF 里没定义这个值,写 0x0004 才是停运。
디버깅注意
- 下发开机、关机、角度、强度这类控制命令后,要留足执行时间:设备返回应答后、或间隔大于 1 秒再发下一条,避免命令没执行完。
- 如果所有데이터都读不通,先用시리얼 포트软件连 USB 转 485 直接监听下发指令,看是不是 CRC 算错或주소不对。
- 写操作只支持 0x06 单레지스터,别用 0x10。
- 控制权限레지스터 15 显示当前是就地还是원격 제어,如果是就地,远程写命令可能不生效。
- 写目标온도/角度/强度时范围比读出来窄(온도 0~32、角度/强度 0~64),别超上限。
更多厂商프로토콜手册
포인트 목록 / 레지스터表
按주소、기능 코드、데이터유형和倍率整理,适合디버깅、归档和项目交付。