IEC61850报告服务(报文解析)

<p>61850报告服务,是一项非常重要的ACSI服务,它通过SCSM映射为MMS协议中的InformationReport服务,由于InformationReport各类成员的数据类型是确定的,根据ASN.1编码规则,各数据编码后的数据也是确定的。列举如下表</p> <p>表1: </p> <table border="1" cellspacing="0" cellpadding="1" width="587"> <tbody> <tr> <td valign="top" width="207">RptID编码后的数据<br>(报告ID)</td> <td valign="top" width="180">8a xx xx ... xx</td> <td valign="top" width="198">始终存在</td></tr> <tr> <td valign="top" width="207">OptFlds编码后的数据<br>(报告选择域)</td> <td valign="top" width="180">84 03 07 xx x0</td> <td valign="top" width="198">始终存在</td></tr> <tr> <td valign="top" width="207">SeqNum编码后的数据<br>(顺序编号)</td> <td valign="top" width="180">86 xx xx .. xx</td> <td valign="top" width="198">当OptFlds.sequence-number为TRUE时存在</td></tr> <tr> <td valign="top" width="207">TimeOfEntry编码后的数据<br>(入口时间) </td> <td valign="top" width="180">8c 06 xx xx xx xx xx xx</td> <td valign="top" width="198">当OptFlds.report-time-stamp为TRUE时存在</td></tr> <tr> <td valign="top" width="207">DataSet编码后数据<br>(数据集)</td> <td valign="top" width="180">8a xx xx ... xx</td> <td valign="top" width="198">当OptFlds.data-set-name为TRUE时存在</td></tr> <tr> <td valign="top" width="207">BufOvfl编码后数据<br>(发生缓存溢出)</td> <td valign="top" width="180">83 01 xx</td> <td valign="top" width="198">当OptFlds.buffer-overflow为TRUE时存在</td></tr> <tr> <td valign="top" width="207">EntryID编码后数据<br>(入口标识)</td> <td valign="top" width="180">89 xx xx ... xx</td> <td valign="top" width="198">当OptFlds.entryID为TRUE时存在</td></tr> <tr> <td valign="top" width="207">ConfRev编码后数据<br>(配置版本)</td> <td valign="top" width="180">86 xx xx ... xx</td> <td valign="top" width="198">当OptFlds.confRev为TRUE时存在</td></tr> <tr> <td valign="top" width="207">SubSeqNum编码后数据<br>(子序号)</td> <td valign="top" width="180">86 xx xx ... xx</td> <td valign="top" width="198">当OptFlds.segmentation为TRUE时存在</td></tr> <tr> <td valign="top" width="207">MoreSegmentFollow编码后数据<br>(有后续数据段)</td> <td valign="top" width="180">83 01 xx</td> <td valign="top" width="198">当OptFlds.segmentation为TRUE时存在</td></tr> <tr> <td valign="top" width="207">Inclusion-bitstring编码后数据<br>(包含位串)</td> <td valign="top" width="180">84 xx ... xx</td> <td valign="top" width="198">一般应存在</td></tr> <tr> <td valign="top" width="207">Data-Reference编码后数据<br>(数据引用)</td> <td valign="top" width="180">8a xx ... xx</td> <td valign="top" width="198">当OptFlds.data-reference为TRUE时存在</td></tr> <tr> <td valign="top" width="207">Value取决于具体数据类型<br>(值)</td> <td valign="top" width="180">&nbsp;</td> <td valign="top" width="198">即数据的当前值(始终存在)</td></tr> <tr> <td valign="top" width="207">ReasonCode编码后数据<br>(原因代码)</td> <td valign="top" width="180">84 xx ... xx</td> <td valign="top" width="198">当OptFlds.reason-for-inclusion为TRUE时存在</td></tr></tbody></table> <p>表2: 下面以设备实时数据报文为例说明整个报告的含义,整个报文对应的ethernet截图如图1,数据和对应的含义如下:</p> <table border="1" cellspacing="0" cellpadding="1" width="806"> <tbody> <tr> <td valign="top" width="140">RptID</td> <td valign="top" width="229">8A 29 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4C 4C 4E 30 24 52 50 24 75 72 63 62 34 55 34 49 30 4D 4D 58 55 30 31</td> <td valign="top" width="435">tag为:8A,长度为:29<br>RptID为:TEMPLATEMEAS4U4I0/LLN0$RP$urcb4U4I0MMXU01</td></tr> <tr> <td valign="top" width="140">OptFlds</td> <td valign="top" width="229">84 03 06 FC 80</td> <td valign="top" width="435">tag为:84&nbsp; 长度为:03<br>可选域选择(FC 80): 1111 1100 1000 决定各可选项是否出现<br>各bit位对应含义如下表3</td></tr> <tr> <td valign="top" width="140">SeqNum</td> <td valign="top" width="229">86 01 04</td> <td valign="top" width="435">tag为: 86 长度为: 01<br>SeqNum值: 04</td></tr> <tr> <td valign="top" width="140">TimeOfEntry</td> <td valign="top" width="229">8C 06 01 B9 BD F0 2A 17</td> <td valign="top" width="435">tag为: 8C, 长度为: 06<br>时间取值为: 01 B9 BD F0 2A 17 <br>该时间值的类型为BTIME6关于时标的具体含义详见<br><a href="http://my.oschina.net/rookiedavin/blog/141947">http://my.oschina.net/rookiedavin/blog/141947</a></td></tr> <tr> <td valign="top" width="140">DataSet</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4C 4C 4E 30 24 64 73 34 55 34 49 30 4D 4D 58 55</td> <td valign="top" width="435">tag为: 8A&nbsp; 长度为:22<br>DataSet取值为:TEMPLATEMEAS4U4I0/LLN0$ds4U4I0MMXU</td></tr> <tr> <td valign="top" width="140">SubSeqNum</td> <td valign="top" width="229">86 01 01</td> <td valign="top" width="435">tag为: 86 长度为: 01<br>取值为: 01</td></tr> <tr> <td valign="top" width="140">Inclusion-bitstring</td> <td valign="top" width="229">84 05 07 FF FF FF FF</td> <td valign="top" width="435">tag为: 84 长度为:05<br>取值为: 07 FF FF FF FF<br>代表所传输的数据在数据集中的具体位置,由于实际中有的数据集比较大,里面有包含上百个成员,如果每次上送都将所有的数据成员传输一遍,会占用大量网络资源,尤其在数据集较多的情况下,利用包含位串可以有选择的上送一部分数据集成员值</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 68 56 24 70 68 73 41</td> <td valign="top" width="435">tag: 8A&nbsp; 长度: 23<br>取值:TEMPLATEMEAS4U4I0/MMXU0$MX$PhV$phsA<br>该值为数据集中&lt;FCDA&gt;对应的数据引用</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 68 56 24 70 68 73 42</td> <td valign="top" width="435">tag: 8A 长度: 23<br>取值:TEMPLATEMEAS4U4I0/MMXU0$MX$PhV$phsB</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 68 56 24 70 68 73 43</td> <td valign="top" width="435">tag: 8A 长度: 23<br>取值:TEMPLATEMEAS4U4I0/MMXU0$MX$PhV$phsC</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 68 56 24 6E 65 75 74</td> <td valign="top" width="435">tag: 8A 长度: 23<br>取值:TEMPLATEMEAS4U4I0/MMXU0$MX$PhV$neut</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 41 24 70 68 73 41</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$A$phsA<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 41 24 70 68 73 42</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$A$phsA<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 41 24 70 68 73 43</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$A$phsB<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 41 24 6E 65 75 74</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$A$phsC<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 57 24 70 68 73 41</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$A$neut<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 57 24 70 68 73 42</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$W$phsA<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 57 24 70 68 73 43</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$W$phsB<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 56 41 24 70 68 73 41</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$VA$phsC<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 56 41 24 70 68 73 42</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$VA$phsC<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 56 41 24 70 68 73 43</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$VA$phsC<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 56 61 72 24 70 68 73 41</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$VA$phsA<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 56 61 72 24 70 68 73 42</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$VA$phsB<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 23 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 56 61 72 24 70 68 73 43</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$VA$phsC<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 46 24 70 68 73 41</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$Var$phsA<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 46 24 70 68 73 42</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$Var$phsB<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 22 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 50 46 24 70 68 73 43</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$Var$phsC<br></td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 1F 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 54 6F 74 57</td> <td valign="top" width="435">tag: 8A 长度: 1F<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$TotW</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 21 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 54 6F 74 56 41 72</td> <td valign="top" width="435">tag: 8A 长度: 21<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$TotVAr</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 20 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 54 6F 74 56 41</td> <td valign="top" width="435">tag: 8A 长度: 22<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$TotPF</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 20 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 58 55 30 24 4D 58 24 54 6F 74 50 46</td> <td valign="top" width="435">tag: 8A 长度: 20<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$TotVA</td></tr> <tr> <td valign="top" width="140">Data-Reference</td> <td valign="top" width="229">8A 1D 54 45 4D 50 4C 41 54 45 4D 45 41 53 34 55 34 49 30 2F 4D 4D 1D</td> <td valign="top" width="435">tag: 8A 长度: 1D<br>取值: TEMPLATEMEAS4U4I0/MMXU0$MX$Hz</td></tr> <tr> <td valign="top" width="140">........</td> <td valign="top" width="229">.......部分已省略....</td> <td valign="top" width="435">...........</td></tr> <tr> <td valign="top" width="140">Value[0]</td> <td valign="top" width="229">A2 1A A2 09 A2 07 87 05 08 43 62 E6 5E 84 03 03 00 00 91 08 51 D2 89 16 00 00 00 2A</td> <td valign="top" width="435"> <p>结构体tag:&nbsp;&nbsp;&nbsp;&nbsp; A2&nbsp;&nbsp; 长度:1A (26) <p>结构体tag:&nbsp;&nbsp;&nbsp;&nbsp; A2&nbsp;&nbsp;&nbsp; 长度:09 </p> <p>结构体tag:&nbsp;&nbsp;&nbsp;&nbsp; A2&nbsp;&nbsp;&nbsp; 长度:07 </p> <p>浮点数tag:&nbsp;&nbsp;&nbsp;&nbsp; 87&nbsp;&nbsp;&nbsp; 长度:05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p> <p>浮点值:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08 43 62 E6 5E </p> <p><font color="#ff0000">注:其表示浮点值部分为: 43 62 E6 5E(226.899872)</font></p> <p><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 08的具体含义暂不清楚</font><br>bit-string tag:84&nbsp;&nbsp;&nbsp; 长度:03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bit-string值:&nbsp; 03 00 00 <br>UTC时间tag:&nbsp; 91&nbsp;&nbsp;&nbsp;&nbsp; UTC时间长度:08 <br>UTC时间值:&nbsp;&nbsp; 51 D2 89 16 00 00 00 2A</p></td></tr></tbody></table> <p>表3:OptFlds各bit位与可选项的对应关系(从左往右)</p> <table border="1" cellspacing="0" cellpadding="1" width="400"> <tbody> <tr> <td valign="top" width="24">0</td> <td valign="top" width="376">保留(Reserved)</td></tr> <tr> <td valign="top" width="24">1</td> <td valign="top" width="376">序列号(sequence-number)</td></tr> <tr> <td valign="top" width="24">2</td> <td valign="top" width="376">报告时标(report-time-stamp)</td></tr> <tr> <td valign="top" width="24">3</td> <td valign="top" width="376">触发条件(reason-for-inclusion),又称包含原因</td></tr> <tr> <td valign="top" width="24">4</td> <td valign="top" width="376">数据集名称(data-set-name)</td></tr> <tr> <td valign="top" width="24">5</td> <td valign="top" width="376">数据引用(data-reference)</td></tr> <tr> <td valign="top" width="24">6</td> <td valign="top" width="376">缓存区溢出标志(buffer-overflow)</td></tr> <tr> <td valign="top" width="24">7</td> <td valign="top" width="376">条目号(entryID),又称入口标识</td></tr> <tr> <td valign="top" width="24">8</td> <td valign="top" width="376">配置版本(conf-rev)</td></tr> <tr> <td valign="top" width="24">9</td> <td valign="top" width="376">分段号(Segmentation)</td></tr></tbody></table> <p>图1:实时数据非缓存报告截图</p> <p><a href="http://static.oschina.net/uploads/img/201307/02184929_8BTV.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="report" border="0" alt="report" src="http://static.oschina.net/uploads/img/201307/02184929_2Qlp.jpg" width="529" height="353"></a></p>

转载于:https://my.oschina.net/rookiedavin/blog/141854

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值