本文以实例说明CJ/T-188水表协议的解析过程,以下数据未经特殊说明,均指十六进制。
数据发送:
FE FE FE FE 68 20 44 33 22 11 00 33 78 01 03 1F 90 01 91 16
说明如下:
FE FE FE FE:协议头(1-4组)。
68:帧起始符。
20:仪表类型,此实例指冷水水表,还可定义为:
10:冷水水表
11:生活热水水表
12:直饮水水表
13:中水水表
20:热量表(记热量)
21:热量表(记冷量)
30:燃气表
40:电度表
44 33 22 11 00:倒序为0011223344(以BCD码形式看待),表示表号。
33 78:倒序为7833(以BCD码形式看待),表示厂家代码。
01:控制码表示读表计数据,后面跟固定数据域长度、数据标识和序列号。
03:数据域长度(固定)。
1F 90:数据标识(固定)。
01:序列号(固定)。
91:累加和,68+20+44+33+22+11+00+33+78+01+03+1F+90+01=91。
16;结束符。
回复数据:
FE FE FE FE 68 20 44 33 22 11 00 33 78 81 2E 1F 90 01 78 56 34 12 05 78 56 34 12 05 78
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
56 34 12 17 78 56 34 12 35 78 56 34 12 2C 56 34 12 56 34 12 56 34 12 20 14 03 18 12 56 59 00
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
00 91 16
56 57 58
说明如下:
FE FE FE FE:协议头(1-4组)。
68:帧起始符。
20:仪表类型。
44 33 22 11 00:倒序为0011223344(以BCD码形式看待),表示表号。
33 78:倒序为7833(以BCD码形式看待),表示厂家代码。
81:实际为控制码+80,我们可以简单认为只有81正确,非81均为异常,不进行解析。
2E:数据域长度,为十进制46,表示后面有46个有效数据。
1F 90:数据标识(固定)。
01:序列号(固定)。
78 56 34 12 05:结算日热量(123456.78-kwh)。
78 56 34 12 05:当前热量(123456.78-kwh)。
78 56 34 12 17:热功率(123456.78-kw)。
78 56 34 12 35:瞬时热量(123456.78-mmm/h)。
78 56 34 12 2C:当前累计流量(123456.78-mmm)。
56 34 12:供水温度(1234.56-0C)。 (注1)
56 34 12:回水温度(1234.56-0C)。 (注1)
56 34 12:仪表累计工作时间(123456-h)。
20 14 03 18 12 56 59:当前日期,2014-03-18 12:56:59
00 00:状态,两个字节,00 00表示正常,01 00表示欠压。
91:累加和,68+20+44+33+22+11+00+33+78+81+2E+1F+90+01+78+56+34+12+05+78+56+34+12+05+78+56+34+12+17+78+56+34+12+35+78+56+34+12+2C+56+34+12+56+34+12+56+34+12+20+14+03+18+12+56+59+00+00=06。
16:结束符。
注1:此处为摄氏度符号,为了防止混淆,本文所有数值和单位之间加“-”,予以分隔。
注2:单位符号可查看日志:http://user.qzone.qq.com/2756567163/blog/1436472675
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
版权声明:本文为博主原创文章,未经博主允许不得转载。