一种通用型多种串口通信协议检测识别方法技术

技术编号:14842843 阅读:60 留言:0更新日期:2017-03-17 08:08
本发明专利技术公开了一种通用型多种串口通信协议检测识别方法,涉及数字通信领域,包括如下步骤:将n种串口通信协议写入ins配置文件;将串口接收缓冲区中的字节读入到环形缓冲区;从环形缓冲区中检测得到最靠前的数据帧首地址;判断所检测到符合通信协议的数据帧个数是否不为0,若是将检测到的数据帧内容复制到目标数组、进行解析并在环形缓冲区的有效数据中删除检测到的数据帧;判断环形缓冲区中有效数据长度是否大于等于帧长度最长的通信协议的帧长度maxprolen,若是保留环形缓冲区有效数据中最新写入的maxprolen-1个字节,其它字节均删除;否则读取退出标识,若退出标识为真时,则退出本方法。本方法在出现各种异常情况下均能检测、识别及解析出全部符合通信协议的数据帧。

【技术实现步骤摘要】

本专利技术涉及数字通信领域,具体涉及一种各类导弹武器系统、工控系统中对各个电气部件多种串口通信协议检测识别方法。
技术介绍
串口通信,如RS-232、RS-422、RS-485,作为一种稳定性高、构建方便的数字通信方式在导弹武器系统、工控系统中应用最为广泛,各个部件通过检测与识别各种不同通信协议的数据帧来完成特定的功能或对其它部件进行状态监测。导弹武器系统中各电气部件之间信息交互错综复杂,通信协议往往也存在较大差异。目前对于不同通信协议的检测与识别常用的方法是在软件代码中写入特定的通信协议,比如帧头、帧标识、帧长度、帧尾、校验方式、各变量数据类型、所占字节数及分辨率等,虽然这种方式可以达到目的,但若通信协议稍有变化则需重新修改代码,重新调试,软件可靠性低且工作量大,不适于用来对多个电气部件不同通信协议的检测与识别。另外,目前大多数串口通信协议检测识别及解析算法如下:首先不断搜索帧头,找到帧头后再依据帧标识检查特定字节数后的帧校验和帧尾是否正确,若正确则根据各变量数据类型、所占字节数及分辨率进行帧解析,随后执行相应功能,若帧校验或帧尾不正确,则删除该帧长度字节数;接着从下一个字节开始重新搜索帧头,如此循环。这种方法虽然简单易行,但是存在一个较大漏洞:如果出现以下情况则不能检测识别出符合通信协议的数据帧(引起丢帧):(1)、通信中出现了与帧头相同的误码(串口通信传输距离及通信接口芯片上电不稳定状态均可能引起误码);(2)、帧中出现了与帧头相同的字节。上述两种情况下,通常的检测与识别算法都会误认为这些字节为真实的帧头而随后删掉有用的数个字节而导致丢帧,不能执行被要求的动作或未能监测关键状态,可能引起系统故障。
技术实现思路
有鉴于此,本专利技术提供了一种通用型多种串口通信协议检测识别方法,在出现各种异常情况下均能检测、识别及解析出全部符合通信协议的数据帧,提高电气部件可靠性、安全性、容错性。为了达到上述目的,本专利技术的技术方案为:一种通用型多种串口通信协议检测识别方法,包括如下步骤:第一步、针对n种串口通信协议,将串口通信协议写入ins配置文件,并在所述ins配置文件中为每种串口通信协议配置顺序1~n。第二步、将串口接收缓冲区中的字节读入到环形缓冲区。第三步、从环形缓冲区的有效数据中检测第1种通信协议数据帧,以该第1种通信协议数据帧的首地址作为最靠前首地址;设定检测次序i的初始值为2。第四步、从环形缓冲区的有效数据中检测第i种通信协议数据帧,若检测到则进入第五步,否则判断i是否等于n,若是则进入第六步,否则将i自增1,返回第四步。第五步、判断检测到的第i种通信协议数据帧首地址是否小于已检测到的最靠前的数据帧首地址,若是则将第i种数据帧首地址作为最靠前首地址,否则判断i是否等于n,若是则进入第六步,否则i自增1,返回第四步。第六步、判断所检测到符合通信协议的数据帧个数是否不为0,若是则将检测到的最靠前首地址对应的数据帧内容复制到目标数组、进行解析并在环形缓冲区的有效数据中删除检测到的数据帧,进入第七步,否则直接进入第七步。第七步、判断环形缓冲区中有效数据长度是否大于或者等于帧长度最长的通信协议的帧长度maxprolen,若是保留环形缓冲区有效数据中最新写入的maxprolen-1个字节,其它字节均删除,然后读取退出标识;否则直接读取退出标识。当退出标识为真时,则退出本方法,否则返回第二步。进一步地,第四步中从环形缓冲区的有效数据初始位置处开始检测第i种通信协议数据帧的具体方法为:S401、判断在有效数据中能够搜索到第i种通信协议数据帧帧头,若搜索到则进入步骤S402,否则判为不能检测到第i种通信协议数据帧。S402、标记搜索到的第i种通信协议数据帧帧头的起始位置。S403、判断帧头起始位置之后有效字节长度是否大于或者等于第i种通信协议数据帧长度;若大于或者等于则进入步骤S404,否则判为不能检测到第i种通信协议数据帧。S404、依据第i种通信协议检查帧标识、帧校验及帧尾是否均正确,若正确则判为检测到第i种通信协议数据帧,否则判断此时有效数据位置是否已经处于环形缓冲区的有效数据最末位置,若是,则判为不能检测到第i种通信协议数据帧,否则将有效数据的起始位置自增1后进入步骤S401。进一步地,第六步中的解析并在环形缓冲区的有效数据中删除检测到的数据帧的具体过程如下:S501、读取数据帧中第k个变量的首字节在数据帧中的位置,k为变量序号,k初始值为1。S502、读取第k个变量所占字节数。S503、读取第k个变量数据类型和比例尺,计算变量实际值。S504、判断k是否小于该通信协议变量个数,若小于则进入步骤S505,否则在环形缓冲区的有效数据中删除检测到的数据帧。S505、k自增1,将第k个变量首字节位置加第k个变量所占字节数作为第k+1个变量的首字节位置,返回步骤S502,直至k为数据帧中的变量总数,该过程结束。进一步地,在ins配置文件中,初始化ini文件中的节,将串口通信协议中的帧属性和变量属性分别写入到ini文件中的节中。其中帧属性包括帧名称、帧头、帧标识、帧长度、校验方式和变量个数,分别写入到相应帧属性节中的项目中。变量属性划分为变量名、变量单位、数据类型、数值上限、数值下限、比例尺和字节数,分别写入到相应变量属性节中的项目中。进一步地,环形缓冲区为先入先出的存储方式。有益效果:1、支持多种串口通信协议,通信协议可配置;若通信协议需要修改则只需修改配置文件即可,软件代码不需改动,可大幅提高软件可靠性、安全性、提高工作效率。2、对于通信中出现的各种异常情况,如出现与帧头相同的误码、某帧中存在与帧头相同的字节等,本专利技术提供的方法依然能够正确地检测识别出全部符合通信协议的数据帧,不漏检,不误检,提高电气部件可靠性、安全性、容错性。附图说明图1为本专利技术方法流程图。具体实施方式下面结合附图并举实施例,对本专利技术进行详细描述。实施例1、一种通用型多种串口通信协议检测识别方法,其特征在于,包括如下步骤:第一步、针对n种串口通信协议,将串口通信协议写入ins配置文件,并在所述ins配置文件中为每种串口通信协议配置顺序1~n。第二步、将串口接收缓冲区中的字节读入到环形缓冲区。第三步、从环形缓冲区的有效数据中检测第1种通信协议数据帧,以该第1种通本文档来自技高网
...

【技术保护点】
一种通用型多种串口通信协议检测识别方法,其特征在于,包括如下步骤:第一步、针对n种串口通信协议,将串口通信协议写入ins配置文件,并在所述ins配置文件中为每种串口通信协议配置顺序1~n;第二步、将串口接收缓冲区中的字节读入到环形缓冲区;第三步、从环形缓冲区的有效数据中检测第1种通信协议数据帧,以该第1种通信协议数据帧的首地址作为最靠前首地址;设定检测次序i的初始值为2,第四步、从环形缓冲区的有效数据中检测第i种通信协议数据帧,若检测到则进入第五步,否则判断i是否等于n,若是则进入第六步,否则将i自增1,返回第四步;第五步、判断检测到的第i种通信协议数据帧首地址是否小于已检测到的最靠前的数据帧首地址,若是则将第i种数据帧首地址作为最靠前首地址,否则判断i是否等于n,若是则进入第六步,否则i自增1,返回第四步;第六步、判断所检测到符合通信协议的数据帧个数是否不为0,若是则将检测到的最靠前首地址对应的数据帧内容复制到目标数组、进行解析并在环形缓冲区的有效数据中删除检测到的数据帧,进入第七步,否则直接进入第七步;第七步、判断环形缓冲区中有效数据长度是否大于或者等于帧长度最长的通信协议的帧长度maxprolen,若是保留环形缓冲区有效数据中最新写入的maxprolen‑1个字节,其它字节均删除,然后读取退出标识;否则直接读取退出标识;当退出标识为真时,则退出本方法,否则返回第二步。...

【技术特征摘要】
2016.03.04 CN 20161012526491.一种通用型多种串口通信协议检测识别方法,其特征在于,包括如下步
骤:
第一步、针对n种串口通信协议,将串口通信协议写入ins配置文件,并在
所述ins配置文件中为每种串口通信协议配置顺序1~n;
第二步、将串口接收缓冲区中的字节读入到环形缓冲区;
第三步、从环形缓冲区的有效数据中检测第1种通信协议数据帧,以该第1
种通信协议数据帧的首地址作为最靠前首地址;设定检测次序i的初始值为2,
第四步、从环形缓冲区的有效数据中检测第i种通信协议数据帧,若检测到
则进入第五步,否则判断i是否等于n,若是则进入第六步,否则将i自增1,
返回第四步;
第五步、判断检测到的第i种通信协议数据帧首地址是否小于已检测到的最
靠前的数据帧首地址,若是则将第i种数据帧首地址作为最靠前首地址,否则判
断i是否等于n,若是则进入第六步,否则i自增1,返回第四步;
第六步、判断所检测到符合通信协议的数据帧个数是否不为0,若是则将检
测到的最靠前首地址对应的数据帧内容复制到目标数组、进行解析并在环形缓
冲区的有效数据中删除检测到的数据帧,进入第七步,否则直接进入第七步;
第七步、判断环形缓冲区中有效数据长度是否大于或者等于帧长度最长的
通信协议的帧长度maxprolen,若是保留环形缓冲区有效数据中最新写入的
maxprolen-1个字节,其它字节均删除,然后读取退出标识;否则直接读取退出
标识;
当退出标识为真时,则退出本方法,否则返回第二步。
2.如权利要求1所述的一种通用型多种串口通信协议检测识别方法,其特
征在于,所述第四步中从环形缓冲区的有效数据初始位置处开始检测第i种通信

\t协议数据帧的具体方法为:
S401、判断在有效数据中能够搜索到第i种通信协议数据帧帧头,若搜索到
则进入步骤S402,否则判为不能检测到第i种通信协议数据帧;
S402、...

【专利技术属性】
技术研发人员:李晖刘晓燕王芳王巧明许哲
申请(专利权)人:西安航天动力技术研究所
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1