文章目录
DLMS/COSEM协议比较复杂,完成协议部分内容的协议栈以及报文解析器花了5个月时间,同时同事也完成了基于协议栈的上位机,可以实现和DLMS电表进行通信。这里记录一下完成协议栈和报文解析器过程中遇到的报文类型。
(推荐博文 https://blog.csdn.net/SGJcgj/article/details/119417655)
一、非分帧报文
1 getRequestNormal和getResponseNormal
->7E A0 1A 02 23 03 32 75 62 E6 E6 00 C0 01 81 00 01 00 09 60 63 41 FF 02 00 82 91 7E
<-7E A0 27 03 02 23 52 B9 CF E6 E7 00 C4 01 81 00 09 14 53 54 43 38 36 38 49 52 41 4E 2E 44 2E 46 2E 31 36 56 53 31 69 EE 7E
2 setRequestNormal和setResponsenormal
->7E A0 2A 00 02 0C A5 03 32 9A FB E6 E6 00 C1 01 81 00 08 00 00 01 00 00 FF 02 00 09 0C 07 E8 02 1A 01 10 02 25 00 00 00 00 3D 67 7E
<-7E A0 13 03 00 02 0C A5 52 BE D3 E6 E7 00 C5 01 81 00 36 CF 7E
3 actionRequestNormal和actionResponseNormal
->7E A0 1E 00 02 0C A5 03 DC D6 4C E6 E6 00 C3 01 81 00 46 00 00 60 03 0A FF 01 01 0F 00 39 C5 7E
<-7E A0 14 03 00 02 0C A5 1E CE 9C E6 E7 00 C7 01 81 00 00 8A B2 7E
二、分帧报文
1 getRequestNormal、getResponseWithDatablock、确认帧、 getRequestNext
-> 7E A0 1C 00 02 0C A5 03 D4 25 F7 E6 E6 00 C0 01 81 00 07 01 00 63 01 00 FF 03 00 89 5D 7E
<- 7E A8 8C 03 00 02 0C A5 7C 5E 1C E6 E7 00 C4 02 81 00 00 00 00 01 00 82 01 C6 01 82 00 20 02 04 12 00 08 09 06 00 00 01 00 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 01 08 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 02 08 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 03 08 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 04 08 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 01 07 00 FF 0F 02 12 00 00 02 94 8A 7E
-> 7E A0 0A 00 02 0C A5 03 F1 8E 6C 7E
<- 7E A8 8C 03 00 02 0C A5 7E 4C 3F 04 12 00 03 09 06 01 00 02 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 15 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 16 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 29 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 2A 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 3D 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 3E 07 00 FF 0F 02 12 00 00 02 04 12 03 AD 7E
-> 7E A0 0A 00 02 0C A5 03 11 80 8B 7E
<- 7E A8 8C 03 00 02 0C A5 70 32 D6 00 03 09 06 01 00 03 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 04 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 17 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 18 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 2B 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 2C 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 3F 07 00 FF 0F 02 12 00 00 02 04 12 00 03 6A 57 7E
-> 7E A0 0A 00 02 0C A5 03 31 82 AA 7E
<- 7E A0 61 03 00 02 0C A5 72 4B D4 09 06 01 00 40 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 20 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 34 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 48 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 1F 07 00 FF 0F 02 12 00 00 F6 CB 7E
-> 7E A0 16 00 02 0C A5 03 56 68 B9 E6 E6 00 C0 02 81 00 00 00 01 73 7F 7E
<- 7E A8 8C 03 00 02 0C A5 94 18 77 E6 E7 00 C4 02 81 01 00 00 00 02 00 82 00 7E 02 04 12 00 03 09 06 01 00 33 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 47 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 5A 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 0D 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 21 07 00 FF 0F 02 12 00 00 02 04 12 00 03 09 06 01 00 35 07 00 FF 0F 02 12 00 00 02 04 12 00 03 6F 39 7E
-> 7E A0 0A 00 02 0C A5 03 71 86 E8 7E
<- 7E A0 19 03 00 02 0C A5 96 C1 BA 09 06 01 00 49 07 00 FF 0F 02 12 00 00 C3 90 7E
三、其他类型报文
1 RR帧-确认帧
->7E A0 0A 00 02 0C A5 03 F1 8E 6C 7E
分帧报文第二帧开始需要使用RR帧读取。
2 FRMR帧-拒绝帧
->7E A0 0F 03 00 02 0C A5 97 4C 46 91 76 08 8E 34 7E
出现非校验码错误时,电表发送拒绝帧。
3 SNRM帧
->7E A0 21 00 02 0C A5 03 93 9B 39 81 80 12 05 01 80 06 01 80 07 04 00 00 00 01 08 04 00 00 00 01 53 3B 7E
设置正常响应模式。
4 UA帧-SNRM和DISC的响应帧
<-7E A0 21 03 00 02 0C A5 73 C4 02 81 80 12 05 01 80 06 01 80 07 04 00 00 00 01 08 04 00 00 00 01 53 3B 7E
<-7E A0 21 03 00 02 0C A5 73 C4 02 7E
5 DISC帧-解除连接帧
->7E A0 0A 00 02 0C A5 03 53 96 EA 7E
6 DM帧-DISC的响应帧
<- 7E A0 0A 03 00 22 00 23 1F 43 4C 7E
7 RNR-忙帧
(根据协议手动组的报文)7E A0 0A 00 02 0C A5 03 F5 AA 2A 7E
8 UI-保持链路连接
(根据协议手动组的报文)7E A0 0A 00 02 0C A5 03 03 13 B8 7E