本帖最后由 WSTAR 于 2019-3-26 09:06 编辑
对于这系列温控器解析开关没多大难度,难度就在于温度协议的解析
下面就做一个详细介绍(用01,02地址解析协议)
目前我这边没有完整的协议解析说明文档,纯属实测
我们先看下01地址解析好的协议
485 | 4800 ,8,1,奇校验 | 485 | 4800 ,8,1,奇校验 | | 地址1 | | 地址2 | 开 | 01 06 00 00 00 01 48 0A | 开 | 02 06 00 00 00 01 48 39 | 关 | 01 06 00 00 00 00 89 CA | 关 | 02 06 00 00 00 00 89 F9 | 15 | 01 06 00 01 00 96 58 64 | 15 | 02 06 00 01 00 96 58 57 | 16 | 01 06 00 01 00 A0 D8 72 | 16 | 02 06 00 01 00 A0 D8 41 | 17 | 01 06 00 01 00 AA 58 75 | 17 | 02 06 00 01 00 AA 58 46 | 18 | 01 06 00 01 00 B4 D8 7D | 18 | 02 06 00 01 00 B4 D8 4E | 19 | 01 06 00 01 00 BE 58 7A | 19 | 02 06 00 01 00 BE 58 49 | 20 | 01 06 00 01 00 C8 D9 9C | 20 | 02 06 00 01 00 C8 D9 AF | 21 | 01 06 00 01 00 D2 58 57 | 21 | 02 06 00 01 00 D2 58 64 | 22 | 01 06 00 01 00 DC D9 93 | 22 | 02 06 00 01 00 DC D9 A0 | 23 | 01 06 00 01 00 E6 59 80 | 23 | 02 06 00 01 00 E6 59 B3 | 24 | 01 06 00 01 00 F0 D8 4E | 24 | 02 06 00 01 00 F0 D8 7D | 25 | 01 06 00 01 00 FA 58 49 | 25 | 02 06 00 01 00 FA 58 7A | 26 | 01 06 00 01 01 04 D8 59 | 26 | 02 06 00 01 01 04 D8 6A | 27 | 01 06 00 01 01 0E 58 5E | 27 | 02 06 00 01 01 0E 58 6D | 28 | 01 06 00 01 01 18 D9 90 | 28 | 02 06 00 01 01 18 D9 A3 | 29 | 01 06 00 01 01 22 59 83 | 29 | 02 06 00 01 01 22 59 B0 | 30 | 01 06 00 01 01 2C D8 47 | 30 | 02 06 00 01 01 2C D8 74 | 31 | 01 06 00 01 01 36 59 8C | 31 | 02 06 00 01 01 36 59 BF | 32 | 01 06 00 01 01 40 D8 6A | 32 | 02 06 00 01 01 40 D8 59 | 33 | 01 06 00 01 01 4A 58 6D | 33 | 02 06 00 01 01 4A 58 5E | 34 | 01 06 00 01 01 54 D8 65 | 34 | 02 06 00 01 01 54 D8 56 | 35 | 01 06 00 01 01 5E 58 62 | 35 | 02 06 00 01 01 5E 58 51 | 查状态 | 01 03 00 00 00 05 85 C9 | 查状态 | 02 03 00 00 00 05 85 FA |
一、地址01协议,开机命令01 06 00 00 00 01 48 0A中48 0A是CRC校验,其它控制协议的后两个都是CRC校验,低位在前,高位在后。
二、地址01协议中,15摄氏度的协议 01 06 00 01 00 96 58 64,前4个字符01 06 00 01是一样的,而第五,第六个字符就是温度(这个是找规律找到的)。那么这个15度是怎么算出来的呢?首先第六个字符96为十六进制需转换成十进制为150,第五个字符00由十六进制转换成十进制为0,接着我们发现这个温度值比实际的大10倍,所以我们需要把这个值除以10得到15就是协议对应的温度。
三、26摄氏度以前的协议可以按照“二”中的算法,26摄氏度之后就行不通了,我们再举个例子:地址01的26摄氏度,先看协议01 06 00 01 01 04 D8 59,第五、第六分别为01和04,按照“二”中的算法把第六字符计算一下,值为0.4,那么第五字节就用上了,26怎么得到呢,具体算法用第五字符转换十进制后乘以26加上第六字符算出来的0.4,就等于26.4,四舍五入等于26。为了验证这种算法是否正确我们可以多测试几组协议,文字描述可能看不大懂,那我就直接设值描述
设第五字符为A,第六个字符为B,温度为C,算法为B/10+A*26=C。(已验证此公式是正确的,设的值都为16进制转换10进制之后的值)
四、我们做真实反馈的时候,需要用查询命令查询地暖的当前状态,开关机正常查询,温度需要通过上面计算方式计算。
接下来我们讲一下聪普工程
1、Analog Equate温度反馈
2、Serial to Byte查询后匹配的字节
3、AnaScaler第五个字符的运算
4、Analog Mod Constant第六个字符的运算
5、Analog Sum3和4处理的值求和,之后输出到1实现温度的真实反馈
有几组查询数据,大家可以看看
开机,室内温度29,设置温度21 | | 03 03 0A 00 01 00 D2 01 F4 00 32 00 00 CD A2 | 开机,室内温度29,设置温度27 | | 03 03 0A 00 01 01 0E 01 F4 00 32 00 00 11 A3 | 开机,室内温度28,设置温度35 | | 03 03 0A 00 01 01 5E 01 F4 00 32 00 00 41 A6 | 开机,室内温度27,设置温度35 | | 03 03 0A 00 01 01 5E 01 F4 00 32 00 00 41 A6 | 开机,室内温度27,设置温度34 | | 03 03 0A 00 01 01 54 01 F4 00 32 00 00 EB A6 |
欢迎大家留言交流
地暖协议说明解析及工程.rar
(389.8 KB, 下载次数: 862)
|