CN112671721A - 一种智能电能表的报文解析方法 - Google Patents
一种智能电能表的报文解析方法 Download PDFInfo
- Publication number
- CN112671721A CN112671721A CN202011438136.2A CN202011438136A CN112671721A CN 112671721 A CN112671721 A CN 112671721A CN 202011438136 A CN202011438136 A CN 202011438136A CN 112671721 A CN112671721 A CN 112671721A
- Authority
- CN
- China
- Prior art keywords
- byte
- message data
- data
- message
- analysis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 description 5
- 230000006854 communication Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
Images
Landscapes
- Arrangements For Transmission Of Measured Signals (AREA)
Abstract
本发明公开了一种智能电能表的报文解析方法,利用报文超时或字节超时中的一种或多种获取应用层循环缓存的报文数据,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息;若预解析输出的是正确指示信息,则将对应的所述报文数据进行拷贝提取;若预解析输出的是错误指示信息,则删除所述报文数据中的第一个所述第一字节;若预解析输出的是未完成指示信息,则判断在设定的持续时间内是否接收到数据,并进行对应的数据处理,避免删除正确的报文数据。
Description
技术领域
本发明涉及电表技术领域,尤其涉及一种智能电能表的报文解析方法。
背景技术
智能电能表作为测量电学量的仪表,主要是测量电能,提供数据给供电局收费使用。智能电能表处于整个抄表系统的最底端设备,上行可以和上位机、采集终端、主站等设备通讯,通讯是以报文的形式,所以在整个通讯过程中,各个设备都必须解析报文,符合标准协议的报文为有效报文,进而对相应功能进行处理。
智能电能表应用层接收到一串数据帧,如果这帧数据中含有多帧报文,由于外部干扰,导致第一帧报文中有些字节出错,或者上层设备发送的数据就是错误的,遇到这种情况,表计解析不成功后会删除所有数据,后面正确的报文也会被删除掉。另外如果接收到的数据为一帧正常报文的半截数据,后半截数据暂时没有收到,比如直到字节超时时间过后再接收到,处理的时候也会当成异常数据,把本次所有数据删除,导致可能将正确的报文数据都删除了。
发明内容
本发明的目的在于提供一种智能电能表的报文解析方法,避免删除正确的报文数据。
为实现上述目的,本发明提供了一种智能电能表的报文解析方法,包括以下步骤:
获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果;
根据所述预解析结果对所述报文数据进行相应的操作处理,其中,所述预解析结果包括以下任一种正确、错误和未完成指示信息,所述操作处理包括数据拷贝和数据删除处理。
其中,获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果,包括:
利用报文超时或字节超时中的一种或多种获取应用层循环缓存的报文数据;
分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息。
其中,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息,包括:
若多种所述解析协议中的所述参考字节与所述报文数据中的所述第一字节不匹配,则删除所述第一字节,并将所述第一字节之后的相邻字节作为新的第一字节;
将所述参考字节与所述新的第一字节进行匹配;
若所述参考字节与下一个所述第一字节匹配,则对所述报文数据进行完整度检测,得到正确或未完成两种指示信息;
若所述参考字节与所述报文数据中的所有字节均不匹配,则输出错误指示信息。
其中,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息,包括:
若任一所述解析协议中的所述参考字节与所述报文数据中的所述第一字节匹配,则对所述报文数据进行完整度检测;
若检测结果和对应的所述解析协议完全匹配或部分匹配,则输出正确指示信息或未完成指示信息;
若检测结果和对应的所述解析协议不匹配,则删除所述报文数据中的第一个所述第一字节后,利用多种所述解析协议进行字节匹配,得到正确、错误或未完成指示信息。
其中,根据所述预解析结果对所述报文数据进行相应的操作处理,包括:
若预解析输出的是正确指示信息,则将对应的所述报文数据进行拷贝提取;
若预解析输出的是错误指示信息,则删除所述报文数据中的第一个所述第一字节;
若预解析输出的是未完成指示信息,则判断在设定的持续时间内是否接收到数据,并进行对应的数据处理。
其中,获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果之前,所述方法还包括:
利用底层串口中断程序接收智能电能表数据,并将接收到的所述数据在所述应用层对应的循环缓存。
本发明的一种智能电能表的报文解析方法,利用报文超时或字节超时中的一种或多种获取应用层循环缓存的报文数据,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息;若预解析输出的是正确指示信息,则将对应的所述报文数据进行拷贝提取;若预解析输出的是错误指示信息,则删除所述报文数据中的第一个所述第一字节;若预解析输出的是未完成指示信息,则判断在设定的持续时间内是否接收到数据,并进行对应的数据处理,避免删除正确的报文数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种智能电能表的报文解析方法的步骤示意图。
图2是本发明提供的一种智能电能表的报文解析方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
请参阅图1和图2,本发明提供一种智能电能表的报文解析方法,包括以下步骤:
S101、获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果。
具体的,利用底层串口中断程序接收智能电能表数据,然后将所述数据放入应用层进行循环缓存,通过报文超时或字节超时中的一种或多种从应用层循环缓存区接收应用层循环缓存的报文数据,其中,所述报文超时的解释为:比如智能表报文超时为2秒,表示用这个时间去接收外部设备回复的数据,2秒内接收到的数据作为一帧报文,时间结束后进行报文数据处理。所述字节超时的解释为:智能表在接收数据时,比如字节超时为100ms,表示接收到一个字节后,100ms内如果又接收到一个字节,表示数据还没接收完,继续接收,反之表示当前没有后续数据;预解析为从应用层循环缓存读出一串数据,进行解析,但是没有把读出的这些数据从应用层缓存中删除。然后分别利用多种支持的解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息,包括如下两种情况:
一、若多种所述解析协议中的所述参考字节与所述报文数据中的所述第一字节不匹配,包括以下内容:
若多种所述解析协议中的所述参考字节与所述报文数据中的第一个所述第一字节不匹配,其中,所述参考字节为所述解析协议中的第一个字节,即所述报文数据中的所述第一字节与多种所述解析协议中的所述参考字节不匹配,则删除所述第一字节,并将所述第一字节之后的相邻字节作为新的第一字节,将所述参考字节与所述新的第一字节进行匹配:
若所述参考字节与下一个所述第一字节匹配,则对所述报文数据进行完整度检测,得到正确或未完成两种信息;具体为:
若所述第一字节与所述多种所述解析协议中的任意一个所述解析协议的所述参考字节匹配,然后再获取所述报文数据中的第三个所述第一字节,根据对应的所述解析协议的长度,判断对应长度下的所述第一字节与对应长度下的所述长度字节是否匹配,若匹配,则输出正确指示信息,若对应长度下没有所述第一字节,则输出未完成指示信息,其中,所述长度字节为所述解析协议中除所述参考字节外的其他字节。
若所述参考字节与所有的所述第一字节不匹配,即表明获取的所述报文数据与任意的所述解析协议都不匹配,则输出错误指示信息。
二、若任一所述解析协议中的所述参考字节与所述报文数据中的所述第一字节匹配,包括以下内容:
若任一所述解析协议中的所述参考字节与所述报文数据中的所述第一字节匹配,则对所述报文数据进行完整度检测,具体为:
若检测结果和对应的所述解析协议完全匹配或不完全匹配,则输出正确指示信息或未完成指示信息;即若所述第一字节与所述多种所述解析协议中的任意一个所述解析协议的所述参考字节匹配,然后再获取所述报文数据中的第三个所述第一字节,根据对应的所述解析协议的长度,判断对应长度下的所述第一字节与对应长度下的所述长度字节是否匹配,若匹配,则输出正确指示信息,若对应长度下没有所述第一字节(表示在所述报文数据的的末尾没有字节,不会存在中间没有字节,两边有字节的情况),则输出未完成指示信息,其中,所述长度字节为所述解析协议中除所述参考字节外的其他字节。
若检测结果和对应的所述解析协议不匹配,则删除所述报文数据中的第一个所述第一字节后,利用多种所述解析协议进行字节匹配,得到正确、错误或未完成指示信息,即重复第一种情况的匹配方法,再次进行预解析。
S102、根据所述预解析结果对所述报文数据进行相应的操作处理。
具体的,若预解析输出的是正确指示信息,则将对应的所述报文数据进行拷贝提取,然后删除应用层循环缓存拷贝提取所使用长度的数据;
若预解析输出的是错误指示信息,则删除所述报文数据中的第一个所述第一字节;
若预解析输出的是未完成指示信息,则判断在设定的持续时间内是否接收到数据,并进行对应的数据处理,具体为:在设定的时间内,判断报文超时和字节超时是否有接收到数据,若在设定的持续时间内有继续接收数据,则将接收的数据与所述报文数据进行组合,然后进行字节判断,若在所述持续时间内一直没有后续数据接收到,则删除所有数据,然后电能表就可以做相应的数据处理。
举例来说:
以电能表支持解析HDLC协议和DLT698.45协议为例,报文都为16进制,如下所示:
HDLC正确报文举例:7E A0 08 02 21 03 93 86 C1 7E
DLT698.45正确报文举例:68 17 00 43 05 11 11 11 11 11 11 11 E327 05 0100 40 00 02 00 00 56 1F 16
举例1:例如此时电能表接收到的数据,HDLC正确报文前面有两个字节为错误字节:02 77 7E A0 08 02 21 03 93 86 C1 7E
根据图2所示,电能表接收到数据后,第一轮预解析过程中,首先使用HDLC协议判断第一个字节不是7E,再使用DLT698.45协议判断第一个字节不是68,则预解析结果为错误,删除第一个所述第一字节02,接下来第二轮预解析后,第二个所述第一字节77也被删除,第三轮预解析结果为正确,提取数据后电能表删除应用层循环缓存中的相应数据,并根据相应功能做数据处理。
举例2:例如此时电能表接收到的数据,DLT698.45正确报文前面有HDLC协议的半截报文:7E A0 08 02 21 03 93 86 68 17 00 43 05 1111 11 11 11 11 11 E3 27 05 0100 40 00 02 00 00 56 1F 16
电能表接收到数据后,第一轮预解析过程中,首先使用HDLC协议判断第一个所述第一字节是7E,则表明所述参考字节与所述报文数据中的第一个所述第一字节匹配,再取第三个第一字节为08,标识这个帧除去两个7E长度为8,总长度为10,判断第十个字节不是7E,表示这个为错误帧,删除第一个字节。之后用两种协议预解析,即采用举例1中的方法步骤,每一个轮次预解析结果都为错误,删除字节直到68为止,预解析结果为DLT698.45协议正确帧,提取数据后电能表删除应用层循环缓存中的相应数据,最后电能表根据相应功能做数据处理。
假如以上数据只有:7E A0 08 02 21 03 93 86,为HDLC协议的半截报文,并且超过n秒后,一直没有后续数据接收到,则删除所有数据,否则如果在超时时间内再次接收到C1 7E两个字节,则能组成正确的HDLC协议的报文,电能表就可以做相应的数据处理。
本发明运用预解析的结果和数据删除功能相结合,无论对于电能表接收到怎样的数据,都能一一解析,提取有效的报文,并不会漏掉一帧有效的报文,可以解决不完整报文和错误报文的解析问题,避免删除正确报文。
本发明的一种智能电能表的报文解析方法,利用报文超时或字节超时中的一种或多种获取应用层循环缓存的报文数据,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息;若预解析输出的是正确指示信息,则将对应的所述报文数据进行拷贝提取;若预解析输出的是错误指示信息,则删除所述报文数据中的第一个所述第一字节;若预解析输出的是未完成指示信息,则判断在设定的持续时间内是否接收到数据,并进行对应的数据处理,避免删除正确的报文数据,避免删除正确的报文数据。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (6)
1.一种智能电能表的报文解析方法,其特征在于,包括以下步骤:
获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果;
根据所述预解析结果对所述报文数据进行相应的操作处理,其中,所述预解析结果包括以下任一种正确、错误和未完成指示信息,所述操作处理包括数据拷贝和数据删除处理。
2.如权利要求1所述的智能电能表的报文解析方法,其特征在于,获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果,包括:
利用报文超时或字节超时中的一种或多种获取应用层循环缓存的报文数据;
分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息。
3.如权利要求2所述的智能电能表的报文解析方法,其特征在于,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息,包括:
若多种所述解析协议中的所述参考字节与所述报文数据中的所述第一字节不匹配,则删除所述第一字节,并将所述第一字节之后的相邻字节作为新的第一字节;
将所述参考字节与所述新的第一字节进行匹配;
若所述参考字节与下一个所述第一字节匹配,则对所述报文数据进行完整度检测,得到正确或未完成两种指示信息;
若所述参考字节与所述报文数据中的所有字节均不匹配,则输出错误指示信息。
4.如权利要求2所述的智能电能表的报文解析方法,其特征在于,分别利用多种解析协议的参考字节对所述报文数据的第一字节进行匹配,得到正确、错误和未完成中的任一种指示信息,包括:
若任一所述解析协议中的所述参考字节与所述报文数据中的所述第一字节匹配,则对所述报文数据进行完整度检测;
若检测结果和对应的所述解析协议完全匹配或部分匹配,则输出正确指示信息或未完成指示信息;
若检测结果和对应的所述解析协议不匹配,则删除所述报文数据中的第一个所述第一字节后,利用多种所述解析协议进行字节匹配,得到正确、错误或未完成指示信息。
5.如权利要求1所述的智能电能表的报文解析方法,其特征在于,根据所述预解析结果对所述报文数据进行相应的操作处理,包括:
若预解析输出的是正确指示信息,则将对应的所述报文数据进行拷贝提取;
若预解析输出的是错误指示信息,则删除所述报文数据中的第一个所述第一字节;
若预解析输出的是未完成指示信息,则判断在设定的持续时间内是否接收到数据,并进行对应的数据处理。
6.如权利要求1所述的智能电能表的报文解析方法,其特征在于,获取应用层循环缓存的报文数据,并利用多个解析协议对应的解析方式对所述报文数据进行预解析,得到预解析结果之前,所述方法还包括:
利用底层串口中断程序接收智能电能表数据,并将接收到的所述数据在所述应用层对应的循环缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011438136.2A CN112671721A (zh) | 2020-12-11 | 2020-12-11 | 一种智能电能表的报文解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011438136.2A CN112671721A (zh) | 2020-12-11 | 2020-12-11 | 一种智能电能表的报文解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112671721A true CN112671721A (zh) | 2021-04-16 |
Family
ID=75401950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011438136.2A Pending CN112671721A (zh) | 2020-12-11 | 2020-12-11 | 一种智能电能表的报文解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671721A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116033044A (zh) * | 2021-10-25 | 2023-04-28 | 中移(苏州)软件技术有限公司 | 报文的分段解析方法、装置、设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000307593A (ja) * | 1999-04-19 | 2000-11-02 | Fujitsu Ltd | Mpoaキャッシュ管理装置及びその方法 |
US20090073970A1 (en) * | 2007-09-14 | 2009-03-19 | Cswitch Corporation | System and method for parsing frames |
CN102301764A (zh) * | 2011-07-01 | 2011-12-28 | 华为技术有限公司 | 终端分布信息获取方法、数据获取装置以及通信系统 |
CN103546250A (zh) * | 2013-09-18 | 2014-01-29 | 中标软件有限公司 | 一种用于车载终端的通信方法及系统 |
CN105187420A (zh) * | 2015-08-27 | 2015-12-23 | 哈尔滨工业大学 | 一种基于rs422总线的通讯协议匹配方法 |
CN107395565A (zh) * | 2017-06-15 | 2017-11-24 | 北京机械设备研究所 | 一种定长单字节格式报文协议下串口接收预处理方法 |
CN111770055A (zh) * | 2020-05-29 | 2020-10-13 | 宁波三星医疗电气股份有限公司 | 一种应用于电能表的多协议通讯帧快速判别方法 |
-
2020
- 2020-12-11 CN CN202011438136.2A patent/CN112671721A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000307593A (ja) * | 1999-04-19 | 2000-11-02 | Fujitsu Ltd | Mpoaキャッシュ管理装置及びその方法 |
US20090073970A1 (en) * | 2007-09-14 | 2009-03-19 | Cswitch Corporation | System and method for parsing frames |
CN102301764A (zh) * | 2011-07-01 | 2011-12-28 | 华为技术有限公司 | 终端分布信息获取方法、数据获取装置以及通信系统 |
CN103546250A (zh) * | 2013-09-18 | 2014-01-29 | 中标软件有限公司 | 一种用于车载终端的通信方法及系统 |
CN105187420A (zh) * | 2015-08-27 | 2015-12-23 | 哈尔滨工业大学 | 一种基于rs422总线的通讯协议匹配方法 |
CN107395565A (zh) * | 2017-06-15 | 2017-11-24 | 北京机械设备研究所 | 一种定长单字节格式报文协议下串口接收预处理方法 |
CN111770055A (zh) * | 2020-05-29 | 2020-10-13 | 宁波三星医疗电气股份有限公司 | 一种应用于电能表的多协议通讯帧快速判别方法 |
Non-Patent Citations (1)
Title |
---|
胡令超: "自动抄表管理系统", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑 2012年》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116033044A (zh) * | 2021-10-25 | 2023-04-28 | 中移(苏州)软件技术有限公司 | 报文的分段解析方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112614331B (zh) | 抄读电能表事件的方法与电能表抄读事件系统 | |
CN102118293A (zh) | 一种通讯报文压缩存储方法 | |
CN111901356A (zh) | 智能变电站过程层网络风暴抑制方法、装置和电子设备 | |
CN111130690A (zh) | 一种ir46智能电表的多通讯协议的处理方法及装置 | |
CN113259886B (zh) | 工业边缘端的数据传输方法和装置 | |
CN109728879B (zh) | 串口突发接入应用层slip协议报文同步纠错方法 | |
CN106788888A (zh) | 弱网络环境下提高安卓移动终端通信成功率的方法及系统 | |
CN112491990A (zh) | 混合云网络数据传输方法、装置、电子设备及存储介质 | |
CN101478623B (zh) | 话单传输方法及系统 | |
CN112671721A (zh) | 一种智能电能表的报文解析方法 | |
CN115604052B (zh) | 车辆通讯交互方法、系统及电子设备 | |
CN112104442A (zh) | 一种电力采集终端的报文回复方法 | |
CN111786898A (zh) | 一种监控设备信息获取方法、装置、设备及介质 | |
CN114726893B (zh) | 可支持多种底层承载协议的物联网应用层接入方法和系统 | |
CN116614326A (zh) | 一种基于单通道多设备的modbus通信方法 | |
CN115878914A (zh) | 一种域名匹配方法、装置、设备及存储介质 | |
CN114401147B (zh) | 一种基于摘要算法的新能源电站通讯报文比对方法及系统 | |
CN211630177U (zh) | 设备数据的采集系统 | |
CN112419698B (zh) | 基于配电线报文规范的电能表数据传输方法、系统及装置 | |
CN115102892A (zh) | 基于gat 1400协议模拟测试方法 | |
CN110493081B (zh) | 游戏客户端的网络流量确定方法、装置、设备及存储介质 | |
CN113849135A (zh) | 日志的访问方法、装置及服务器 | |
CN104637540A (zh) | 接收电路、接收电路的实现方法及ic卡 | |
CN115002135B (zh) | 多端协同方法、装置、系统及计算机可读存储介质 | |
CN112751873B (zh) | 蓝牙midi数据转换方法、电路及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210416 |