Modbus - ModbusTCP基于Java代码实现的操作真机 (并非模拟)

中央空调集中管控系统

 

集控系统设备

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 协议)

模拟器
美的
博世
威能
特灵

(十进制)

大金
(十进制)
日立
海信
约克
(十进制)
三菱重工
(十进制)
三菱电机
海尔
格力
东芝
广州松下
大连松下
(十进制)
其他读/写
(十六进制)

(十六进制)

(十六进制)
01-00 0-00-010000000~00050FA0~0FA3
11-010-10-121010006~000B 0FA4~0FA7
21-02 0-20-23202000C~00110FA8~0FAB
31-030-30-343030012~0017 0FAC~0FAF
41-040-40-454040018~001D0FB0~0FB3
51-050-50-56505001E~00230FB4~0FB7
61-060-60-676060024~00290FB8~0FBB
71-070-70-78707002A~002F0FBC~0FBF
81-080-80-898080030~00350FC0~0FC3
...........................
151-150-150-1516150F005A~005F0FDC~0FDF
162-001-01-01716100060~00650FE0~0FE3
...........................
634-153-153-1564633F017A~017F109C~109F

功能码

           功能码                                                           作用
 
0x03(读参数)用于查询性能信息
 
用于查询单台或多台空调的多项参数。
每次可读操作多个寄存器,每个寄存器保存当前空调的一项状态参数,根据
寄存器读取的数量,可以一次读取单台或多台多台空调的多项参数。
0x06(写单项参数)用于更改单台空调的一项参数。
每次只能写操作一个寄存器,从而对单台空调的一项参数进行更改。
0x10(写多项参数)
 
用于更改多台空调的一项或多项参数。
每次写操作多个寄存器,从而对单台或者多台空调的多项参数进行更改。

 寄存器地址(十进制)

 读寄存器

                                                                  读性能地址
空调品牌产品类型内机数量温度下限温度上限
20002001200220032004
读参数地址(每台内机占用 6 个寄存器)
开关查询模式查询温度查询风速查询室温查询故障查询
【内机 0】012345
【内机 1】67891011
【内机 2】121314151617
【内机 3】181920212223
.....................
【内机 n】6n6n+16n+26n+36n+46n+5
开关模式温度风速室温故障
0 关闭 1 制热

无符号数


例如:


20℃对应 0x14


25℃对应 0x19

0 自动

有符号数


0x00~0x32 对应 0~50℃


0x33~0xcd 为非法值


0xce~0xff 对应-50~-1℃


例如:0x13 对应 19℃


0xfe 对应-2℃

不同品牌对应故障代码不同,


可根据附录表做对应解析。

1 开启2 制冷1 低速
4 送风2 中速
8 除湿3 高速
 

 注 :如果有空调系统自带的新风机接入,模式会出现三种 0x10 自动进风 0x20 热交换进风 0x30 旁通进风,风速会出现两种 0x01 低风 0x03 高风,新风机只有开关和风速可控。 

 写寄存器 

                                  写参数地址(每台内机占用 4 个寄存器)
开关设定模式设定温度设定风速设定
【内机 0】4000400140024003
【内机 1】4004400540064007
【内机 2】4008400940104011
【内机 3】4012401340144015
...............
【内机 n】4000+4n4001+4n4002+4n4003+4n
开关 温度 模式风速
0 关闭 

无符号数


例如:


20℃对应 0x14


25℃对应 0x19

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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stjl.xyz

谢谢打赏,祝老板心想事成

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值