适用于多机可靠通信的通信协议、编解码方法及通讯设备与流程

文档序号:11234711阅读:469来源:国知局
适用于多机可靠通信的通信协议、编解码方法及通讯设备与流程

本发明涉及通信和控制领域中有关协议制定的编解码方法,具体为一种适用于多机可靠通信的通信协议编解码方法。



背景技术:

通信协议是需要通信设备间达成一种约定,它对包含数据格式、传送速度、同步方式、校验方式以及功能字符定义等问题作出统一规定,在设备间通信中必须共同遵守。在实际通信应用中,如果缺少一个合理、严格、规范的通信协议,将无法保证数据传输的正确性和通信的可靠性。一般传送的数据内容被定义为字节的形式组织在协议帧中,并在帧中从前到后依次排列。传统的帧编码格式简单,一般包括:起止标记位、数据长度、功能码、数据、校验和结束标志位,多适应于上位机和下位机之间通信,不能满足多设备之间的通信需要。此外,传统帧解码时中只通过功能码识别该帧功能,没有对帧内容进行分类,导致代码可读性差不利于代码维护和升级。



技术实现要素:

针对传统帧编解码方法的不足,本发明拟解决的问题是,提供一种适用于多机间可靠通信的具备帧内容分类的低误码率通信协议编解码方法。该方法帧头部分包含源地址、目标地址和帧类型,适用于多机通信,同时帧解析时可通过帧类型对帧数据进行分类解析,代码可读性强便于维护和升级。此外,该方法采用循环冗余校准方式,保证数据传输误码率低通信过程可靠。

本发明解决所述技术问题所采用的技术方案是,

一种适用于多机可靠通信的通信协议,所述的通讯协议的帧格式包括按照从前至后的顺序依次排列的帧开始字段、帧头字段、负载字段、校验字段和结束字段;其中,所述的帧头字段包含按照从前至后的顺序依次排列的帧类型字段、源地址字段、目标地址字段、负载长度字段和功能码字段;所述的负载字段按照负载内容表示成多个连续数据类型字段,形成负载结构模型。

帧开始字段和结束字段为两到三个字节的固定值;所述的校验字段为两个字节的循环冗余校验值,参与校验的数据从帧类型字段到负载字段。

所述的负载长度字段为一个字节长度的数据,定义为负载长度值,该值为负载结构模型的长度;功能码字段为两个字节长度的帧识别码用以标识不同的传输路径、方向和帧类型。

数据类型为char型、short型、fool型、int型或自定义结构体类型。

帧类型字段为一个字节长度,用以标识数据帧类型、命令帧类型或应答帧类型。

所述的适用于多机可靠通信的通信协议的编解码方法,其特征在于,包括以下步骤,组帧编码过程和帧解析过程,

所述的组帧编码过程包括,

负载装载步骤,将发送的负载数据按照负载结构模型依次赋值,负载长度为连续类型字段的总长度即负载结构模型的长度;

帧头打包步骤,数据发送设备创建字节数组缓冲区用于存储发送数据帧,依次为帧头字段的每个字段内容赋值并装载到发送数据缓存区中,完成帧头打包;

完整传输帧打包步骤,结合帧类型字段到负载字段,计算得到循环冗余校验值,将负载内容、校验码和结束字段装载到发送数据缓存区中,完成完整传输帧打包;最后装载发送数据缓冲区,完成组帧编码过程;

帧解析过程包括,

前导码过滤步骤:创建接收数据字节数组缓冲区,对接收数据进行前导码过滤,检测数据包有效性,

过滤步骤:提取帧头数据,依次对目标地址过滤,对帧类型过滤,提取功能码,

解析步骤:进行帧功能码适配,进入功能码匹配的负载数据解析函数,结合该函数中的负载结构模型,完成负载数据解析。

在所述的负载装载步骤还包括负载结构模型定义步骤,其为发送的负载内容定义负载结构模型,该负载结构模型为负载内容表示成的多个连续数据类型字段。

一种采用所述的的通信协议的通讯设备,包括数据总线和多个通过所述的数据总线通讯连接的设备,所述的设备分别包括组帧编码模块和帧解析模块,

所述的组帧编码模块包括,

负载装载子模块,用以将发送的负载数据按照负载结构模型依次赋值,负载长度为连续类型字段的总长度即负载结构模型的长度;

帧头打包子模块,用以数据发送设备创建字节数组缓冲区用于存储发送数据帧,依次为帧头字段的每个字段内容赋值并装载到发送数据缓存区中,完成帧头打包;

完整传输帧打包子模块,用以结合帧类型字段到负载字段,计算得到循环冗余校验值,将负载内容、校验码和结束字段装载到发送数据缓存区中,完成完整传输帧打包;最后装载发送数据缓冲区,完成组帧编码过程;

帧解析模块包括,

前导码过滤子模块,用以创建接收数据字节数组缓冲区,对接收数据进行前导码过滤,检测数据包有效性,

过滤子模块,用以提取帧头数据,依次对目标地址过滤,对帧类型过滤,提取功能码,

解析子模块,用以进行帧功能码适配,进入功能码匹配的负载数据解析函数,结合该函数中的负载结构模型,完成负载数据解析。

在所述的负载装载子模块还包括负载结构模型定义模块,其用以为发送的负载内容定义负载结构模型,该负载结构模型为负载内容表示成的多个连续数据类型字段。

多设备间利用can总线通信或can总线与串口结合通信,can总线间通信时,所有设备通过can口挂在can总线上,帧协议中目标地址和源地址作为总线上的canid,设备间通信时通过canid识别是否为自己设备处理的数据,如果是则进行数据解包处理;

串口与can总线间结合通信时,串口接收到数据后解析出原地址和目标地址,形成canid,即链接到can总线上的设备地址,再将该数据发送到can总线上,通过canid识别是否为自己设备处理的数据,如果是则进行数据解包处理。

与现有技术相比,本发明适用于多机可靠通信的通信协议编解码方法的积极效果在于:

1、帧头字段包含源地址字段和目标地址字段,适用于多设备间通信。

2、采用负载结构模型有效提高数据组帧和解析效率。

3、帧头字段包含帧类型字段,帧解析时可通过帧类型对负载数据进行分类解析,有效提高代码的可读性和维护性。

4、采用循环冗余校准方式,保证数据传输误码率低通信质量高。

附图说明

图1为本发明适用于多机可靠通信的通信协议编解码方法所采用的帧格式,其中a部分为帧头部分,负载长度值为负载结构模型长度大小。

图2为本发明适用于多机可靠通信的通信协议编解码方法负载内容与负载结构模型对于关系。

图3为本发明适用于多机可靠通信的通信协议编解码方法多机通信示意图。

图4为本发明适用于多机可靠通信的通信协议编解码方法组帧编码流程图。

图5为本发明适用于多机可靠通信的通信协议编解码方法帧解析流程图。

具体实施方式

下面参考附图描述本发明的实施例。

一种适用于多机可靠通信的通信协议,帧格式包含按照从前至后的顺序依次排列的帧开始字段、帧头字段、负载字段、校验字段和结束字段;其中,帧开始字段和结束字段为两到三个字节的固定值;帧头字段包含按照从前至后的顺序依次排列的帧类型字段、源地址字段、目标地址字段、负载长度字段和功能码字段;

其中,负载字段按照负载内容表示成多个连续数据类型字段,形成负载结构模型,负载结构模型一般为用户自定义的多个不同数据类型组成的结构体,结构体内每个负载类型字段连续排列。负载结构模型确定后,数据发送方和接收方都需要定义负载结构模型,数据发送方为负载结构模型的每个字段内容进行赋值,数据接收方需要完全按照负载结构模型的顺序对负载内容进行解析;负载结构模型的存在能有效提高数据组帧和解析效率。

所述的校验字段为两个字节的循环冗余校验值,参与校验的数据从帧类型字段到负载字段;帧类型字段为一个字节的不同帧类型值,如数据帧、命令帧或应答帧等;帧类型字段不同于帧识别码和目标地址,它是对数据负载类型的分类,数据解析时帧类型解析位于目的地址解析之后、帧识别码解析之前。帧类型的存在使不同类型,如命令、数据或应答等的负载进行分类解析,与传统协议相比有效提高了数据解析的可读性和代码的维护迭代性。

源地址字段为一个字节长度的数据,定义为发送方设备地址标识,不同设备地址标识唯一;目标地址字段为一个字节长度的数据,定义为接收方设备地址标识,不同设备地址标识唯一;负载长度字段为一个字节长度的数据,定义为负载长度值,该值为负载结构模型的长度;功能码字段为两个字节长度的帧识别码,同一传输路径、方向和帧类型的功能码不能相同。

本发明的帧头字段包含源地址字段和目标地址字段,适用于多设备间通信。采用负载结构模型有效提高数据组帧和解析效率。帧头字段包含帧类型字段,帧解析时可通过帧类型对负载数据进行分类解析,有效提高代码的可读性和维护性。采用循环冗余校准方式,保证数据传输误码率低通信质量高。

本发明适用于多机可靠通信的通信协议编解码方法,参见图1-5,其具体步骤是:

步骤s1,建立通用帧格式:帧格式包含开始字段、帧头字段、负载字段、校验字段和结束字段,按照从前至后的顺序依次排列,如帧格式如图1所示)。

本实施例的开始字段和结束字段为两个字节的固定值,开始字段为0x100x02,结束字段为0x310xaa。

步骤s2,建立帧头字段:帧头字段的格式包含帧类型字段、源地址字段、目标地址字段、负载长度字段和功能码字段,各字段按照从前至后的顺序依次排列,如图1中a部分框所示。

负载字段按照负载内容表示成多个连续数据类型字段形成负载结构模型,其中负载内容数据类型可以是char型、short型、fool型、int型以及自定义结构体类型等,如图2所示。

校验字段为两个字节的循环冗余校验值,参与校验的数据从帧类型字段开始到负载字段结束。结合图1计算本实施例中的校验值为0x350xdb。

帧类型字段为一个字节长度的不同帧类型值,如数据帧(0x01)、命令帧(0x02)、应答帧(0x03)等;本实施例中帧类型为数据帧。

源地址字段为一个字节长度的数据,定义为数据发送方设备地址标识,如图3所示,不同设备地址标识唯一,设备0x02为数据发送方。

目标地址字段为一个字节长度的数据,定义为数据接收方设备地址标识,如图3所示,不同设备地址标识唯一,设备0x03为数据接收方。不同的设备间都可以通过数据总线通信,不同设备通过目的地址字段来识别是否为发给自己的数据。

负载长度字段为一个字节长度的数据,定义为负载长度值,该值的大小取决于负载结构模型长度。

功能码字段为两个字节长度的帧识别码,用于定义该帧功能的唯一标识,对于同一传输路径、方向和帧类型的功能码不能相同,本实施例中数据从设备0x02发送到设备0x03,帧类型为数据帧,功能码0x100x22用于表示该帧功能的唯一标识。

步骤s3组帧编码过程:首先完成负载装载,然后创建发送数据字节数组缓冲区完成帧头打包,最后完成完整传输帧打包,并装载发送数据字节数组缓冲区,完成组帧编码过程;

所述步骤s3具体如图4所示。

1、为发送的负载内容定义负载结构模型,该模型为负载内容表示成的多个连续数据类型字段。将发送的负载数据按照负载结构模型依次赋值。负载长度为连续类型字段的总长度即负载结构模型的长度,完成负载内容装载。

2、数据发送设备0x02创建数据发送字节数组缓冲区sendbuf[],结合源地址、发送地址、帧类型、负载长度和功能码内容打包帧头,并装载到发送数据缓冲区中,完成帧头打包装载。

3、结合帧头内容和负载内容计算循环冗余校验值,并将负载内容、校验码和结束字段按帧格式顺序装载到发送数据缓冲区中,完成完整传输数据帧打包装载。

步骤s4,帧解析过程:创建接收数据字节数组缓冲区,对接收数据进行前导码过滤,检测数据包有效性,提取帧头数据,对目标地址过滤,对帧类型过滤,提取功能码,结合负载结构模型完成负载数据解析。

所述步骤s4具体如图5所示。

1、数据接收设备0x03创建接收数据字节数组缓冲区receivebuf[],存放设备0x02发来的数据。

2、结合开始字段信息对缓冲区接收到的数据进行前导码过滤,验证收到第一个字节内容是否为开始字段,如果是则继续执行解析过程,否则抛弃该帧从新解析新收到的帧内容。

3、结合帧格式进行循环冗余校验,参与校验的数据从帧类型字段到负载字段结束,验证数据包的有效性,如果计算得到的校验码和帧格式中的校验位一致表示该数据包有效继续执行解析过程,否则抛弃该帧从新解析新收到的帧内容。

4、去除开始字段、结束字段和校验位字段形成有效的数据报文,结合帧格式提取帧头信息。

5、对步骤4)形成的有效数据报文进行目标地址过滤,接收到的目标地址为本地址(0x03),则继续执行解析过程,否则抛弃该帧从新解析新收到的帧内容。

6、进行帧类型适配,针对不同的帧类型(如数据帧类型、命令帧类型、应答帧类型)进入不同类型数据处理函数。

7、提取功能码,进行帧功能码适配,进入功能码匹配的负载数据解析函数,结合该函数中的负载结构模型,完成负载数据解析。

同时本发明还公开了一种采用所述的的通信协议的通讯设备,包括数据总线和多个通过所述的数据总线通讯连接的设备,所述的设备分别包括组帧编码模块和帧解析模块,

所述的组帧编码模块包括,

负载装载子模块,用以将发送的负载数据按照负载结构模型依次赋值,负载长度为连续类型字段的总长度即负载结构模型的长度;

帧头打包子模块,用以数据发送设备创建字节数组缓冲区用于存储发送数据帧,依次为帧头字段的每个字段内容赋值并装载到发送数据缓存区中,完成帧头打包;

完整传输帧打包子模块,用以结合帧类型字段到负载字段,计算得到循环冗余校验值,将负载内容、校验码和结束字段装载到发送数据缓存区中,完成完整传输帧打包;最后装载发送数据缓冲区,完成组帧编码过程;

帧解析模块包括,

前导码过滤子模块,用以创建接收数据字节数组缓冲区,对接收数据进行前导码过滤,检测数据包有效性,

过滤子模块,用以提取帧头数据,依次对目标地址过滤,对帧类型过滤,提取功能码,

解析子模块,用以进行帧功能码适配,进入功能码匹配的负载数据解析函数,结合该函数中的负载结构模型,完成负载数据解析。

其中,在所述的负载装载子模块还包括负载结构模型定义模块,其用以为发送的负载内容定义负载结构模型,该负载结构模型为负载内容表示成的多个连续数据类型字段。

具体来说,多设备间利用can总线通信或can总线与串口结合通信,can总线间通信时,所有设备通过can口挂在can总线上,帧协议中目标地址和源地址作为总线上的canid,设备间通信时通过canid识别是否为自己设备处理的数据,如果是则进行数据解包处理;

串口与can总线间结合通信时,串口接收到数据后解析出原地址和目标地址,形成canid,即链接到can总线上的设备地址,再将该数据发送到can总线上,通过canid识别是否为自己设备处理的数据,如果是则进行数据解包处理。

本发明的通讯设备的优势表现为:1、实现多设备间稳定可靠通信。2、can总线通信时,canid为总线上的设备地址,同时帧协议中包含目标地址,这两个地址是一一对应的,canid用于总线设备寻址,帧协议中目标地址可用于数据传输校验,提高数据传输的可靠性。3、该协议中采用负载结构模型有效提高数据组帧和解析效率。4、该帧帧头字段包含帧类型字段,帧解析时可通过帧类型对负载数据进行分类解析,有效提高代码的可读性和维护性。

以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1