Resources说明
这份手册是炬邦通用型冷库机组手操器的 Modbus RTU 通讯Protocol V1.6。一台手操器可以管多台冷库Air Conditioner:among them必须有一台定义成主机,其余的按min机算。下面尽value说得直白,照着抄就能用。
一、先对上这 7 个parameter(对不上就通不了)
| parameter | Value | 大白话 |
|---|---|---|
| 链路 | RS-485 | 两根线(A/B)手拉手串起来,首尾各并一个 120Ω 电阻 |
| Protocol | Modbus RTU | 标准帧,末尾两byte CRC verification |
| Baud rate | 19200 | serial port软件里填 19200,填错一个都连不上 |
| data bit / check / stop bit | 8 / 无 / 1(8N1) | 无check |
| 从机address | 95(0x5F) | 手操器在总线上的”门牌No.”,发帧时永远填在最前面那一个byte |
| function code | 0x03 读 / 0x10 写 | 03 是问、10 是下Command |
| 应答延迟 | 收toCommand后等 100ms 才回 | 每次问完要等够 100ms 再问下一句 |
| numerical value倍率 | 放大 10 倍 | 读上来的temperature/电流要 ÷10 才是真值,比如读回 285 实际是 28.5℃ |
二、接线(别想复杂)
手操器背后 RS-485 的 A、B 两个端子,A 接 A、B 接 B,一路串to你的Converters。总线最头和最尾各并一个 120Ω 终端电阻。屏蔽线单端接地,别两头都接。
三、主机和min机的关系(搞清楚这个再debug)
一个system里,必须有一台手操器定义成主机,剩下的都是min机。主机和min机挂在同一条 RS-485 总线上,从机address都是 95(或你自己改的),区别在于register address怎么填:
| 访问对象 | register address怎么算 | 举例(读库温,原Register number 42) |
|---|---|---|
| 主机(No. 1 台,必须定义) | 直接用裸address,不加偏移 | register address = 42(0x002A) |
| min机 N No.(N=1~9) | N × 208 + 原register address | 1 No.min机 = 1×208+42 = 250(0x00FA) |
手册No. 4.3 节原文:“读No. N(1-9)台从机parameter:address=N×208+主机address”。这里的”主机address”指的是register原address(比如环境temperature是 41),不是从机address 95。手册原例:读 1 No.min机的环境temperature → 1×208+41 = 249;读 1 No.min机的故障信息 → 1×208+202 = 410。
四、register address对照表(decimal / hexadecimal / 主机 / min机1No.)
下面把All 53 Registers列出来,包含decimal、hexadecimal、主机用的裸address、以及 1 No.min机偏移后的address(N×208+原址)。
| 原址(decimal) | 原址(hexadecimal) | What is it | 读写 | 主机address | 1No.min机address | 备注 |
|---|---|---|---|---|---|---|
| 25 | 0x0019 | 指令 | 写 | 25 | 233(0xE9) | 40开机 41关机 42更新设置 |
| 41 | 0x0029 | 环境temperature(风冷)/出水temperature(水冷) | 读 | 41 | 249(0xF9) | ÷10 |
| 42 | 0x002A | 库温 | 读 | 42 | 250(0xFA) | ÷10 |
| 43 | 0x002B | 1#排气temperature | 读 | 43 | 251(0xFB) | ÷10 |
| 44 | 0x002C | 1#回气temperature | 读 | 44 | 252(0xFC) | ÷10 |
| 45 | 0x002D | 2#排气temperature | 读 | 45 | 253(0xFD) | ÷10 |
| 46 | 0x002E | 2#回气temperature | 读 | 46 | 254(0xFE) | ÷10 |
| 47 | 0x002F | 出液temperature | 读 | 47 | 255(0xFF) | ÷10 |
| 48 | 0x0030 | 库温2(校正) | 读 | 48 | 256(0x100) | ÷10 |
| 49 | 0x0031 | 1#蒸发temperature | 读 | 49 | 257(0x101) | ÷10 |
| 50 | 0x0032 | 1#冷凝temperature | 读 | 50 | 258(0x102) | ÷10 |
| 51 | 0x0033 | 2#蒸发temperature | 读 | 51 | 259(0x103) | ÷10 |
| 52 | 0x0034 | 2#冷凝temperature | 读 | 52 | 260(0x104) | ÷10 |
| 53 | 0x0035 | 1#压缩机电流 | 读 | 53 | 261(0x105) | ÷10 |
| 54 | 0x0036 | 2#压缩机电流 | 读 | 54 | 262(0x106) | ÷10 |
| 55 | 0x0037 | 保留 | 读 | 55 | 263(0x107) | – |
| 56 | 0x0038 | 保留 | 读 | 56 | 264(0x108) | – |
| 57 | 0x0039 | 保留 | 读 | 57 | 265(0x109) | – |
| 58 | 0x003A | 1#低压 | 读 | 58 | 266(0x10A) | ÷10 |
| 59 | 0x003B | 1#高压 | 读 | 59 | 267(0x10B) | ÷10 |
| 60 | 0x003C | 保留 | 读 | 60 | 268(0x10C) | – |
| 61 | 0x003D | 保留 | 读 | 61 | 269(0x10D) | – |
| 62 | 0x003E | 2#低压 | 读 | 62 | 270(0x10E) | ÷10 |
| 63 | 0x003F | 2#高压 | 读 | 63 | 271(0x10F) | ÷10 |
| 64 | 0x0040 | 保留 | 读 | 64 | 272(0x110) | – |
| 65 | 0x0041 | 保留 | 读 | 65 | 273(0x111) | – |
| 66 | 0x0042 | 风机档位 | 读 | 66 | 274(0x112) | 高8位=2#风机 低8位=1#风机 |
| 67 | 0x0043 | 保留 | 读 | 67 | 275(0x113) | – |
| 68 | 0x0044 | 保留 | 读 | 68 | 276(0x114) | – |
| 69 | 0x0045 | 1#电子膨胀阀步数 | 读 | 69 | 277(0x115) | – |
| 70 | 0x0046 | 2#电子膨胀阀步数 | 读 | 70 | 278(0x116) | – |
| 71 | 0x0047 | temperature设定值 | 读 | 71 | 279(0x117) | ÷10 |
| 72 | 0x0048 | 保留 | 读 | 72 | 280(0x118) | – |
| 73 | 0x0049 | 制冷制热信息 | 读 | 73 | 281(0x119) | 1=制冷 2=制热 |
| 74 | 0x004A | 开门次数 | 读 | 74 | 282(0x11A) | – |
| 75 | 0x004B | 开门time | 读 | 75 | 283(0x11B) | ×0.1=min钟 |
| 76 | 0x004C | 按位故障记录(表1) | 读 | 76 | 284(0x11C) | bit0-15 见故障表1 |
| 77 | 0x004D | 按位故障记录(表2) | 读 | 77 | 285(0x11D) | bit0-15 见故障表2 |
| 78 | 0x004E | 保留 | 读 | 78 | 286(0x11E) | – |
| 79 | 0x004F | 控制方式 | 读 | 79 | 287(0x11F) | 0=模块 1=集中 |
| 80 | 0x0050 | 平均temperature | 读 | 80 | 288(0x120) | ÷10 |
| 89 | 0x0059 | 设定temperature | 写/读 | 89 | 297(0x129) | ÷10,写后须再写25=42 |
| 90 | 0x005A | 设定温difference | 写/读 | 90 | 298(0x12A) | ÷10 |
| 201 | 0x00C9 | 保留 | 读 | 201 | 409(0x199) | – |
| 202 | 0x00CA | 故障信息(表3) | 读 | 202 | 410(0x19A) | Serial number41-74 见故障表3 |
| 203 | 0x00CB | 1#systemruntime(天) | 读 | 203 | 411(0x19B) | 最大65530天 |
| 204 | 0x00CC | 1#systemruntime(时min) | 读 | 204 | 412(0x19C) | 高8位=小时 低8位=min钟 |
| 205 | 0x00CD | 2#systemruntime(天) | 读 | 205 | 413(0x19D) | 最大65530天 |
| 206 | 0x00CE | 2#systemruntime(时min) | 读 | 206 | 414(0x19E) | 高8位=小时 低8位=min钟 |
| 207 | 0x00CF | 1#system除霜间隔time | 读 | 207 | 415(0x19F) | – |
| 208 | 0x00D0 | 2#system除霜间隔time | 读 | 208 | 416(0x1A0) | – |
| 209 | 0x00D1 | 保留 | 读 | 209 | 417(0x1A1) | – |
| 210 | 0x00D2 | runstatus | 读 | 210 | 418(0x1A2) | 0/2=关机 1/6=开机 5=除霜 |
想算其他min机No.的address,套公式:N×208+原址。比如 5 No.min机的库温 = 5×208+42 = 1082(0x043A);9 No.min机的runstatus = 9×208+210 = 2082(0x0822)。
五、可以直接抄的message —— 主机(裸address,从机address 95)
访问主机时,registerstarting address直接填裸address(25/41/42…),不偏移。下面帧已算好 CRC,Copy就能发。
读(function code 03)
| 想干啥 | complete帧(含 CRC) |
|---|---|
| 读主机库温 42 | 5F 03 00 2A 00 01 A8 BC |
| 读主机环境temperature 41 | 5F 03 00 29 00 01 58 BC |
| 读主机故障记录 76(表1) | 5F 03 00 4C 00 01 48 A3 |
| 读主机故障记录 77(表2) | 5F 03 00 4D 00 01 19 63 |
| 读主机故障信息 202(表3) | 5F 03 00 CA 00 01 A9 4A |
| 读主机runstatus 210 | 5F 03 00 D2 00 01 29 4D |
写(function code 10)
| 想干啥 | complete帧(含 CRC) | 说明 |
|---|---|---|
| 主机开机(写 25=40) | 5F 10 00 19 00 01 02 00 28 14 24 |
0x0028=40 |
| 主机关机(写 25=41) | 5F 10 00 19 00 01 02 00 29 D5 E4 |
0x0029=41 |
| 主机设温 5.0℃(写 89=50) | 5F 10 00 59 00 01 02 00 32 9B 2F |
0x0032=50 ÷10=5.0℃ |
| 主机更新设置(写 25=42) | 5F 10 00 19 00 01 02 00 2A 95 E5 |
改完设定temperature必须补这帧 |
六、可以直接抄的message —— min机 1~9 No.(N×208+原址)
访问min机时,registerstarting address = N×208+原址,帧首从机address还是 95。下面给 1~9 No.min机各一台的「读库温」「写开机」现成 frame:
| min机No. | 库温address(十/十六) | 读库温的complete帧 | 写开机的complete帧 |
|---|---|---|---|
| 1 | 250 / 0x00FA | 5F 03 00 FA 00 01 A9 45 |
5F 10 00 E9 00 01 02 00 28 00 D4 |
| 2 | 458 / 0x01CA | 5F 03 01 CA 00 01 A8 B6 |
5F 10 01 B9 00 01 02 00 28 1C 44 |
| 3 | 666 / 0x029A | 5F 03 02 9A 00 01 A8 E3 |
5F 10 02 89 00 01 02 00 28 2A B4 |
| 4 | 874 / 0x036A | 5F 03 03 6A 00 01 A9 2C |
5F 10 03 59 00 01 02 00 28 29 E4 |
| 5 | 1082 / 0x043A | 5F 03 04 3A 00 01 A8 49 |
5F 10 04 29 00 01 02 00 28 54 14 |
| 6 | 1290 / 0x050A | 5F 03 05 0A 00 01 A9 BA |
5F 10 04 F9 00 01 02 00 28 47 84 |
| 7 | 1498 / 0x05DA | 5F 03 05 DA 00 01 A8 43 |
5F 10 05 C9 00 01 02 00 28 52 B4 |
| 8 | 1706 / 0x06AA | 5F 03 06 AA 00 01 A9 DC |
5F 10 06 99 00 01 02 00 28 6D E4 |
| 9 | 1914 / 0x077A | 5F 03 07 7A 00 01 A9 D9 |
5F 10 07 69 00 01 02 00 28 69 D4 |
想读min机的其他parameter,套公式即可。比如读 3 No.min机的故障信息(原 202)→ 3×208+202 = 826(0x033A),帧 = 5F 03 03 3A 00 01 A9 3D。读 5 No.min机的runstatus(原 210)→ 5×208+210 = 1250(0x04E2),帧 = 5F 03 04 E2 00 01 28 72。
七、最容易踩的两个坑
坑 1:设了temperature不生效。不是写完就完事。流程是:先写 89(设定temperature),再写 25 = 42(更新设置),手操器才把新temperature载入run。只写 89 不写 42,面板显示不变、机器照旧跑。min机也一样:先写min机的 89(N×208+89),再写min机的 25=42(N×208+25)。
坑 2:register 25 是指令口,三种写法别混。40 开机、41 关机、42 更新设置,全是写 25 但内容不同。而且手册说了”不可以连续发同一指令data”,成功发一次就行。
八、故障码 —— 表1(register 76,按位)
register 76 的 16 个 bit,每个 bit 对应一个故障。bit=0 没故障,bit=1 有故障。故障Clear后该位仍保持 1,断电才清零。
| 位 | 故障内容 | 位 | 故障内容 |
|---|---|---|---|
| bit0 | 环境Temperature Sensor故障 | bit8 | 低压1Sensors故障 |
| bit1 | 库温Temperature Sensor故障 | bit9 | 高压1Sensors故障 |
| bit2 | 排气1Sensors故障 | bit10 | 低压2Sensors故障 |
| bit3 | 回气1Sensors故障 | bit11 | 高压2Sensors故障 |
| bit4 | 排气2Sensors故障 | bit12 | 压缩机1内保护 |
| bit5 | 回气2Sensors故障 | bit13 | 压缩机2内保护 |
| bit6 | 出液Temperature Sensor故障 | bit14 | Motor1内保护 |
| bit7 | 库温2(校正)Sensors故障 | bit15 | Motor2内保护 |
九、故障码 —— 表2(register 77,按位)
register 77 的 16 个 bit,Rules同表1:bit=1 有故障,断电清零。
| 位 | 故障内容 | 位 | 故障内容 |
|---|---|---|---|
| bit0 | 水泵过载保护 | bit8 | 1#高压报警 |
| bit1 | 低水位 | bit9 | 2#低压报警 |
| bit2 | 相序故障 | bit10 | 2#高压报警 |
| bit3 | 水流1报警或run模式设置Error | bit11 | 1#排气temperature报警 |
| bit4 | 水流2报警 | bit12 | 2#排气temperature报警 |
| bit5 | 电流1报警 | bit13 | 防冻temperature报警 |
| bit6 | 电流2报警 | bit14 | 低水温报警 |
| bit7 | 1#低压报警 | bit15 | 高水温报警 |
十、故障码 —— 表3(register 202,按Serial number)
register 202 返回的值就是故障Serial number本身(41~74)。读回来是 42 就表示”库温Temperature Sensor故障”,是 66 就表示”1#低压报警”。同时只有一个故障,如果多个故障同时existence,读回来的是优先级最高的那个Serial number。
| Serial number | 故障内容 | Serial number | 故障内容 |
|---|---|---|---|
| 41 | 环境Temperature Sensor故障 | 58 | run模式Error |
| 42 | 库温Temperature Sensor故障 | 59 | 电流1过小报警 |
| 43 | 排气1Sensors故障 | 60 | 低水位 |
| 44 | 回气1Sensors故障 | 61 | 相序故障 |
| 45 | 排气2Sensors故障 | 62 | 水流1报警 |
| 46 | 回气2Sensors故障 | 63 | 水流2报警 |
| 47 | 出液Temperature Sensor故障 | 64 | 电流1过大报警 |
| 48 | 库温2(校正)Sensors故障 | 65 | 电流2报警 |
| 49 | 低压1Sensors故障 | 66 | 1#低压报警 |
| 50 | 高压1Sensors故障 | 67 | 1#高压报警 |
| 51 | 低压2Sensors故障 | 68 | 2#低压报警 |
| 52 | 高压2Sensors故障 | 69 | 2#高压报警 |
| 53 | 压缩机1内保护 | 70 | 1#排气temperature报警 |
| 54 | 压缩机2内保护 | 71 | 2#排气temperature报警 |
| 55 | Motor1内保护 | 72 | 防冻temperature报警 |
| 56 | Motor2内保护 | 73 | 低水温报警 |
| 57 | 水泵过载保护 | 74 | 高水温报警 |
做上位机告警时,建议同时读 76/77(快速位判断,一次知道哪几类有故障)和 202(具体故障Serial number),互相印证。
十一、runstatus(register 210)
| 读回来的值 | 含义 |
|---|---|
| 0 | 关机 |
| 1 | 开机 |
| 2 | 关机 |
| 5 | 除霜 |
| 6 | 开机 |
十二、debug检查清单
- Serial port parameters:19200 / 8N1,别填成 9600 或有check。
- 从机address:帧首byte固定 95(0x5F)。
- 主机用裸address:直接填 25/41/42…,不加偏移。
- min机用偏移address:N×208+原址(N=1~9),帧首byte还是 95。
- 轮询间隔 > 100ms:它收完Command要等 100ms 才回。
- numerical value ÷10:temperature电流压力读上来都是放大 10 倍的。
- CRC lowbyte先发:标准 Modbus RTU 算法。
- 设温双 frame: 写 89 之后务必补写 25=42,否则不生效。min机也一样,先写 N×208+89,再写 N×208+25=42。
More厂商Protocol手册
- 北京京创鑫业 AirTS 系列高大空间Air Conditioner机组 Modbus RTU CommunicationProtocol(2023 点表)
- 贝克斯消防控制板 Modbus RTU 通讯Protocol V1.0.10
- Gree多联机 Modbus RTU 通讯Protocol V1.2
- Daikin DTA116A621 remote监控组件 Modbus RTU 程序员Command手册
- R3-C51 智能重合闸 Modbus RTU complete标准化ProtocolDocument
- IRACC AC Gateway Modbus RTU 程序员Command手册 V3.01
- 柯力 D2008 称重仪表 Modbus RTU complete标准化ProtocolDocument
点位表 / register表
按address、function code、data type和倍率整理,适合debug、归档和项目交付。
| Address | function code | Name | data type | 单位 | 读写 | 倍率 | 说明 |
|---|---|---|---|---|---|---|---|
| 25 | 10 | 指令(写) | UINT16 | - | W | 1 | 40=开机 41=关机 42=更新设置 |
| 41 | 03 | 环境temperature(风冷机)/出水temperature(水冷机) | INT16 | ℃ | R | 0.1 | 读值÷10 |
| 42 | 03 | 库温 | INT16 | ℃ | R | 0.1 | 读值÷10 |
| 43 | 03 | 1#排气temperature | INT16 | ℃ | R | 0.1 | |
| 44 | 03 | 1#回气temperature | INT16 | ℃ | R | 0.1 | |
| 45 | 03 | 2#排气temperature | INT16 | ℃ | R | 0.1 | |
| 46 | 03 | 2#回气temperature | INT16 | ℃ | R | 0.1 | |
| 47 | 03 | 出液temperature | INT16 | ℃ | R | 0.1 |
解锁后ViewAll点位、Download Excel/PDF 和配套source code。