发明名称 一种基于RS422总线的通讯协议匹配方法
摘要 一种基于RS422总线的通讯协议匹配方法,涉及通讯协议匹配方法,尤其涉及一种基于RS422总线的通讯协议匹配方法。本发明是要解决现有的复杂信息系统内部由于RS422数据接收过程中断数据分组不均匀导致数据包易丢失和通讯过程易受到错误帧干扰问题、通讯协议数据完整性和正确性难以保障的问题。本发明方法通过以下步骤进行:一、建立通讯协议匹配模板;二、接收并缓存RS422数据;三、匹配传输通道;四、匹配帧头首字节;五、匹配帧头全内容;六、匹配帧长度;七、匹配帧尾。采用本发明方法后,通讯协议数据满足了完整性和正确性要求。本发明可应用于航空航天和工业控制等各个领域中。
申请公布号 CN105187420A 申请公布日期 2015.12.23
申请号 CN201510534673.X 申请日期 2015.08.27
申请人 哈尔滨工业大学 发明人 杨京礼;魏长安;林连雷;姜守达
分类号 H04L29/06(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 哈尔滨市松花江专利商标事务所 23109 代理人 杨立超
主权项 一种基于RS422总线的通讯协议匹配方法,其特征在于它按以下步骤进行:一、建立通讯协议匹配模板:通讯协议匹配模板是根据ICD中所定义的通讯协议信息在软件中建立的模型,根据RS422总线常用ICD格式,以XML文件手动撰写方式建立通讯协议匹配模板,其中协议帧头数组和协议帧尾数组为由若干元素组成的动态数组,其内部每个元素为一个协议帧头或协议帧尾;二、接收并缓存RS422数据:在建立通讯协议匹配模板后,利用RS422通讯板卡进行数据接收;在接收RS422数据之前,需要按照各个部件或子系统的通讯参数对通讯板卡每个传输通道进行初始化,初始化的具体参数包括:波特率、数据位、停止位和校验位;由于复杂信息系统内部所含部件较多,需要采用多传输通道模式进行信息传输,因此需要为每个传输通道建立数据缓冲区;每个传输通道的数据缓冲区大小为65535个字节,同时为管理数据缓冲区并使后续帧头匹配和帧长度匹配能够顺利进行,需要为每个传输通道设置单独的数据当前位置标识,该标识用于表征该通道当前所缓存等待进行通讯协议匹配的RS422数据量;三、传输通道匹配:接收到的RS422数据经过各通道数据缓存后,首先根据通讯协议匹配模板中的传输通道字段进行匹配,通讯协议匹配模板中某条协议的传输通道字段与本次接收的数据传输通道相同则认为传输通道匹配成功,将该条通讯协议加入到条件1协议队列中,并启动后续帧头首字节匹配过程;对于其它传输通道非本次接收的数据或传输通道不匹配的通讯协议不进行任何处理;四、匹配帧头首字节:采用帧头首字节匹配从数据缓冲区中寻找所有可能的数据起始位置;四.一、从步骤三传输通道匹配成功后的条件1协议队列中取出一条通讯协议;四.二、从该通讯协议的帧头数组中取出第一个帧头元素;四.三、根据该帧头的是否固定值标识判断该帧头是否是固定值;四.三.一、如果该帧头是固定值,则取该帧头值中的第一个字节数据与缓冲区中的数据从起始位置依次进行比较;四.三.一.一、如果存在两者值相同的情况,则记录第一个相同数据在缓冲区的位置,判断该位置是否小于之前其它通讯协议首字节匹配成功后的首字节位置;四.三.一.一.一、如果该条协议的首字节位置小于之前其它通讯协议首字节匹配成功后的首字节位置,则清空条件2协议队列中的所有通讯协议,将该条通讯协议加入到条件2协议队列中;四.三.一.一.二、如果该条协议的首字节位置等于之前其它通讯协议首字节匹配成功后的首字节位置,将该条通讯协议加入到条件2协议队列中;四.三.一.一.三、如果该条协议的首字节位置大于之前其它通讯协议首字节匹配成功后的首字节位置,则对该条通讯协议不进行任何处理;四.三.一.二、如果不存在两者值相同的情况,则对该条通讯协议不进行任何处理;四.三.二、如果该帧头是变值,则取该条通讯协议中帧头数组的下一个帧头元素进行比较,转至步骤四.三;四.四、如果条件1协议队列中还包含其它协议,则转至步骤四.一,否则转至四.五;四.五、完成帧头首字节匹配,输出条件2协议队列;五、帧头全内容匹配:帧头全内容匹配过程也同样采用线性查找方式;五.一、从步骤四帧头首字节匹配成功后的条件2协议队列中取出一条通讯协议;五.二、判断该通讯协议帧头长度与帧头首字节位置到该传输通道数据当前位置标识的大小关系;五.二.一、如果该通讯协议帧头长度大于帧头首字节位置到该传输通道数据当前位置标识的长度,认为帧头全内容匹配失败;五.二.二、如果该通讯协议帧头长度大于帧头首字节位置到该传输通道数据当前位置标识的长度,则从帧头首字节位置开始按照单字节取值的方法将该通讯协议帧头与缓冲区数据进行比较;五.二.二.一、如果出现任意一个单字节不相同的情况,则认为帧头全内容匹配失败;五.二.二.二、如果出现所有单字节比较都相同,则认为帧头全内容匹配成功,将该条协议加入到条件3协议队列;五.三、如果条件2协议队列中还包含其它协议,则转至步骤五.一,否则转至步骤五.四;五.四、完成帧头全内容匹配,输出条件3协议队列;六、帧长度匹配:在帧头全内容匹配成功后,该条通讯协议有较大可能匹配成功,但是在帧头之后数据所蕴含的内容是否完整也是通讯协议匹配的重要依据,因此在帧头全内容匹配成功之后,对于步骤五输出的条件3协议队列中的通讯协议,根据通讯协议匹配模板中的协议长度字段进行帧长度匹配;如果通讯协议长度小于或等于帧头首字节位置到该传输通道数据当前位置标识的长度,则该条协议是将携带完整的数据信息,将其加入到条件4协议队列中;如果通讯协议长度大于帧头首字节位置到该传输通道数据当前位置标识的长度,则认为该条通讯协议尚未传输完成或者传输过程出现了数据丢失,通讯协议匹配过程失败;七、帧尾匹配:在协议帧长度匹配成功后,对于所传输数据需要通过帧尾内容再次进行匹配验证;七.一、从步骤五帧长度匹配成功后的条件3协议队列中取出一条通讯协议;七.二、计算该通讯协议帧尾在通讯协议数据中的起始位置;七.三、取出该通讯协议的下一个帧尾数据,判断帧尾数据与缓冲区中该帧尾所在位置的数据是否相同;七.三.一、如果帧尾数据与缓冲区中该帧尾所在位置数据相同,则转至步骤七.四;七.三.一、如果帧尾数据与缓冲区中该帧尾所在位置数据不同,则将该条通讯协议从条件3协议队列中删除,并转至步骤七.五;七.四、如果完成已经完成该通讯协议所有帧尾数据的比对,转至步骤七.五;否则转至步骤七.三;七.五、如果条件3协议队列中还包含其它协议,则转至步骤七.一,否则转至步骤七.六;七.六、输出条件3协议队列中剩余的通讯协议极为最终匹配成功的通讯协议。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号