中央空调集中管控系统
集控系统设备
Modbus通信协议
https://download.csdn.net/download/weixin_43652507/76637464
空调地址映射表
说明:
对应内机编号(自定义协议):
00代表00号内机、01代码01号内机、02代码02号内机...
对应内机寄存器(Modbus协议):
读: 0000~0005(对应00号内机) 代表每台内机占用 6 个寄存器, 分别为 0000开关查询、0001模式查询、0002温度查询、0003风速查询、0004室温查询、0005故障查询
写: 0FA0~0FA3(对应00号内机) 代表每台内机占用 4 个寄存器,分别为 0FA0开关设定、0FA1模式设定、0FA2温度设定、0FA3风速设定
空调内机集控地址 (面板显示值或者内机拨码值) | 对应内机编号 (自定义协议) | 对应内机寄存器 (Modbus 协议) | ||||||
模拟器 (十进制) | 大金 (十进制) | 日立 海信 约克 (十进制) | 三菱重工 (十进制) | 三菱电机 海尔 格力 东芝 广州松下 大连松下 (十进制) | 其他 | 读/写 (十六进制) | 读 (十六进制) | 写 (十六进制) |
0 | 1-00 | 0-0 | 0-0 | 1 | 0 | 00 | 0000~0005 | 0FA0~0FA3 |
1 | 1-01 | 0-1 | 0-1 | 2 | 1 | 01 | 0006~000B | 0FA4~0FA7 |
2 | 1-02 | 0-2 | 0-2 | 3 | 2 | 02 | 000C~0011 | 0FA8~0FAB |
3 | 1-03 | 0-3 | 0-3 | 4 | 3 | 03 | 0012~0017 | 0FAC~0FAF |
4 | 1-04 | 0-4 | 0-4 | 5 | 4 | 04 | 0018~001D | 0FB0~0FB3 |
5 | 1-05 | 0-5 | 0-5 | 6 | 5 | 05 | 001E~0023 | 0FB4~0FB7 |
6 | 1-06 | 0-6 | 0-6 | 7 | 6 | 06 | 0024~0029 | 0FB8~0FBB |
7 | 1-07 | 0-7 | 0-7 | 8 | 7 | 07 | 002A~002F | 0FBC~0FBF |
8 | 1-08 | 0-8 | 0-8 | 9 | 8 | 08 | 0030~0035 | 0FC0~0FC3 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
15 | 1-15 | 0-15 | 0-15 | 16 | 15 | 0F | 005A~005F | 0FDC~0FDF |
16 | 2-00 | 1-0 | 1-0 | 17 | 16 | 10 | 0060~0065 | 0FE0~0FE3 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
63 | 4-15 | 3-15 | 3-15 | 64 | 63 | 3F | 017A~017F | 109C~109F |
功能码
功能码 | 作用 |
0x03(读参数) | 用于查询性能信息 |
用于查询单台或多台空调的多项参数。 每次可读操作多个寄存器,每个寄存器保存当前空调的一项状态参数,根据 寄存器读取的数量,可以一次读取单台或多台多台空调的多项参数。 | |
0x06(写单项参数) | 用于更改单台空调的一项参数。 每次只能写操作一个寄存器,从而对单台空调的一项参数进行更改。 |
0x10(写多项参数) | 用于更改多台空调的一项或多项参数。 每次写操作多个寄存器,从而对单台或者多台空调的多项参数进行更改。 |
寄存器地址(十进制)
读寄存器
读性能地址 | ||||
空调品牌 | 产品类型 | 内机数量 | 温度下限 | 温度上限 |
2000 | 2001 | 2002 | 2003 | 2004 |
读参数地址(每台内机占用 6 个寄存器) | ||||||
开关查询 | 模式查询 | 温度查询 | 风速查询 | 室温查询 | 故障查询 | |
【内机 0】 | 0 | 1 | 2 | 3 | 4 | 5 |
【内机 1】 | 6 | 7 | 8 | 9 | 10 | 11 |
【内机 2】 | 12 | 13 | 14 | 15 | 16 | 17 |
【内机 3】 | 18 | 19 | 20 | 21 | 22 | 23 |
... | ... | ... | ... | ... | ... | ... |
【内机 n】 | 6n | 6n+1 | 6n+2 | 6n+3 | 6n+4 | 6n+5 |
开关 | 模式 | 温度 | 风速 | 室温 | 故障 |
0 关闭 | 1 制热 | 无符号数
| 0 自动 | 有符号数
| 不同品牌对应故障代码不同,
|
1 开启 | 2 制冷 | 1 低速 | |||
4 送风 | 2 中速 | ||||
8 除湿 | 3 高速 | ||||
注 :如果有空调系统自带的新风机接入,模式会出现三种 0x10 自动进风 0x20 热交换进风 0x30 旁通进风,风速会出现两种 0x01 低风 0x03 高风,新风机只有开关和风速可控。
写寄存器
写参数地址(每台内机占用 4 个寄存器) | ||||
开关设定 | 模式设定 | 温度设定 | 风速设定 | |
【内机 0】 | 4000 | 4001 | 4002 | 4003 |
【内机 1】 | 4004 | 4005 | 4006 | 4007 |
【内机 2】 | 4008 | 4009 | 4010 | 4011 |
【内机 3】 | 4012 | 4013 | 4014 | 4015 |
... | ... | ... | ... | ... |
【内机 n】 | 4000+4n | 4001+4n | 4002+4n | 4003+4n |
开关 | 温度 | 模式 | 风速 |
0 关闭 | 无符号数
| 1 制热 | 0 自动 |
1 开启 | 2 制冷 | 1 低速 | |
4 送风 | 2 中速 | ||
8 除湿 | 3 高速 | ||
Java demo
完整版代码链接:
https://download.csdn.net/download/weixin_43652507/76658909
public static void main(String[] args) throws Exception {
String ip = "192.168.1.66";
int port = 502;
ModbusFactory modbusFactory = new ModbusFactory(); // 设备ModbusTCP的Ip与端口,如果不设定端口则默认为502
IpParameters params = new IpParameters();
params.setHost(ip);
if (502 != port) {
params.setPort(port);
}// 设置端口,默认502
ModbusMaster tcpMaster = null;
tcpMaster = modbusFactory.createTcpMaster(params, true);
try {
tcpMaster.init();
/**
* 写寄存器: 0FA0~0FA3(对应00号内机) 代表每台内机占用 4 个寄存器。
* 分别为 0FA0开关设定、0FA1模式设定、0FA2温度设定、0FA3风速设定
*
* 0FA0~0FA3 的十进制分别为: 4000、4001、4002、4003
*/
int address = Integer.parseInt("0FA0", 16);
int data = Integer.parseInt("01", 16);
writeRegister(tcpMaster, 1, address,data);
} finally {
tcpMaster.destroy();
Modbus.releaseSharedResources();
}
}
测试
1、开关设定: 将0-0号机空调关闭(0 关闭 ,1 开启)
参数: (tcpMaster, 1, 0FA0, 0)
writeRegister(tcpMaster, 1, address,data);
2、模式设定: 将0-0号机空调制热(1 制热 、2 制冷、4 送风、8 除湿)
参数: (tcpMaster, 1, 0FA1, 1)
writeRegister(tcpMaster, 1, address,data);
3、温度设定: 将0-0号机空调设置成20°c (20℃对应 0x14、25℃对应 0x19)
参数: (tcpMaster, 1, 0FA2, 14)
writeRegister(tcpMaster, 1, address,data);
4、风速设定: 将0-0号机空调风速设置成中速(0 自动、1 低速、2 中速、3 高速)
参数: (tcpMaster, 1, 0FA3, 2)
writeRegister(tcpMaster, 1, address,data);
发送内容: "modbus"