一种CAN信号封装、解析方法及装置制造方法及图纸

技术编号:18814561 阅读:43 留言:0更新日期:2018-09-01 10:29
本发明专利技术公开了一种CAN信号封装、解析方法和装置,需要发送报文进行信号封装时,将需赋值的CAN信号直接对信号组结构体变量进行赋值;同时与报文联合体变量中的信号组结构体变量位于相同地址空间的数组变量发生相同改变;将数组变量中的报文数据发送至CAN控制器的发送寄存器,完成CAN信号封装。当接收报文进行信号解析时,根据待解析报文的名称查找报文缓冲区对应的报文数据;将报文数据写入报文联合体变量的数组变量中,同时与数组变量位于相同地址空间的信号组结构体变量发生相同改变;读取信号组结构体变量中的信号变量,完成CAN信号解析。本发明专利技术避免了大量的位操作,CAN节点软件设计更加简洁高效。

A CAN signal encapsulation, analysis method and device

The invention discloses a CAN signal encapsulation, analysis method and device, which assigns the CAN signal needed to be assigned directly to the signal group structure variable when the sending message is needed for signal encapsulation, and changes the array variable in the same address space as the signal group structure variable in the message combination variable. The packet data in the array variable is sent to the sending register of the CAN controller to complete the CAN signal encapsulation. When receiving a message for signal resolution, the message data corresponding to the message buffer is searched according to the name of the message to be resolved; the message data is written into the array variable of the message Federation variable, and the same change occurs with the signal group structure variable whose array variable is in the same address space; the signal group structure volume change is read; The signal variable in the quantity completes the CAN signal resolution. The invention avoids a large number of bit operations, and the design of CAN node software is more concise and efficient.

【技术实现步骤摘要】
一种CAN信号封装、解析方法及装置
本专利技术属于现场总线信号处理的
,尤其是涉及一种CAN信号封装、解析方法和装置。
技术介绍
CAN总线是国际上应用最广泛的现场总线之一,广泛应用于工业控制、楼宇自动化、汽车、船舶等领域。在CAN节点的软件开发中,底层通信完成CAN报文的发送和接收,上层应用根据网络矩阵表的定义,从接收到的CAN报文中提取解析相应的CAN信号,并实现对CAN信号的赋值,将多个CAN信号封装到相应的发送报文中。对底层通信而言,CAN节点有报文发送者和报文接收者两种角色。作为接收者,CAN节点接收到总线上的报文后,CAN控制器将接收到的报文数据存放在字节形式的接收寄存器中,作为发送者,CAN节点启动报文发送前需要把报文数据写入CAN控制器中字节形式的发送寄存器中。接收寄存器和发送寄存器均为字节形式,接收报文和待发送报文的数据均为字节数组形式。对上层应用而言,CAN总线系统设计者以网络矩阵表的形式定义了各个CAN信号在报文中的位置、长度、起始位置和取值范围。CAN信号一般是位形式,从字节数组形式的接收报文中提取解析位形式的CAN信号,以及赋值CAN信号并封装成字节数组形式的发送报文是上层应用一个非常重要的工作。传统的CAN信号读取和赋值方法以报文字节数组为操作对象,读取某个CAN信号或者对某个CAN信号赋值时,需要对报文字节数组中的某个字节进行位操作。根据具体应用不同,一个CAN节点需要读取和赋值的CAN信号可能多达数十个甚至上百个,这种位操作方式使得提取解析CAN信号和赋值封装CAN信号成为了一个非常繁重而且容易出错的工作。而且,随着CAN节点功能的升级,一旦网络矩阵表发生改变,CAN信号的位置或长度或起始位置发生了变化,CAN信号对应的读取和赋值操作也会随之发生变化,这时需要对程序中所有涉及到该报文该信号的位操作进行修改。综上所述,现有技术中如何方便、快捷地进行提取解析CAN信号和赋值封装CAN信号的问题,尚缺乏行之有效的解决方案。
技术实现思路
针对现有技术中存在的不足,解决现有技术中如何方便、快捷地进行提取解析CAN信号和赋值封装CAN信号的问题,本专利技术提出了一种CAN信号封装、解析方法和装置,有效避免了现有技术中在提取解析CAN信号、赋值封装CAN信号或网络矩阵表发生改变时对CAN信号大量的位操作,以方便快捷地解析和封装CAN信号。本专利技术的第一目的是提供一种CAN信号封装方法。为了实现上述目的,本专利技术采用如下一种技术方案:一种CAN信号封装方法,该方法包括:将需赋值的CAN信号直接对信号组结构体变量进行赋值;同时与报文联合体变量中的信号组结构体变量位于相同地址空间的数组变量发生相同改变;将数组变量中的报文数据发送至CAN控制器的发送寄存器,完成CAN信号封装;所述报文联合体变量为预先定义的与报文数据长度一致的联合体类型,包括数组变量和信号组结构体变量;所述信号组结构体变量为预先定义的与报文数据长度一致的信号组结构体类型,包括信号变量和占位符变量,所述信号变量的名称、长度、在信号组结构体中的位置分别与网络矩阵表中CAN信号的名称、长度、在报文中的位置一致。作为进一步的优选方案,将数组变量中的报文数据发送至CAN控制器的发送寄存器,以报文联合体类型定义相关报文变量。作为进一步的优选方案,所述信号组结构体类型根据每个报文的信号布局图和MCU大小端模式预先定义,每个报文对应一个大小与其报文数据长度一致的信号组结构体类型。作为进一步的优选方案,所述信号布局图的生成方法包括:根据网络矩阵表给出的每个报文的所有CAN信号的名称、长度和起始位置,在CAN总线开发及测试工具中定义各个CAN信号的名称、长度及其在报文中的起始位置;将所有CAN信号添加至相应的报文中,针对每个报文生成图形形式的信号布局图。作为进一步的优选方案,所述信号组结构体变量的占位符变量的大小与报文的信号布局图中空位置大小一致,用于填充信号布局图中没有信号的空位置。作为进一步的优选方案,所述报文联合体变量的数组变量为以单字节类型定义的数组,用于存储字节形式的报文数据;所述报文联合体变量的信号组结构体变量为以所述信号组结构体类型定义的结构体,信号组结构体变量和数组变量的大小相同,且存放在相同的地址空间上,用于存储信号组结构体类型的报文数据。本专利技术的第二目的是提供一种计算机可读存储介质。为了实现上述目的,本专利技术采用如下一种技术方案:一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备设备的处理器加载并执行以下处理:将需赋值的CAN信号直接对信号组结构体变量进行赋值;同时与报文联合体变量中的信号组结构体变量位于相同地址空间的数组变量发生相同改变;将数组变量中的报文数据发送至CAN控制器的发送寄存器,完成CAN信号封装;所述报文联合体变量为预先定义的与报文数据长度一致的联合体类型,包括数组变量和信号组结构体变量;所述信号组结构体变量为预先定义的与报文数据长度一致的信号组结构体类型,包括信号变量和占位符变量,所述信号变量的名称、长度、在信号组结构体中的位置分别与网络矩阵表中CAN信号的名称、长度、在报文中的位置一致。本专利技术的第三目的是提供一种终端设备。为了实现上述目的,本专利技术采用如下一种技术方案:一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行以下处理:将需赋值的CAN信号直接对信号组结构体变量进行赋值;同时与报文联合体变量中的信号组结构体变量位于相同地址空间的数组变量发生相同改变;将数组变量中的报文数据发送至CAN控制器的发送寄存器,完成CAN信号封装;所述报文联合体变量为预先定义的与报文数据长度一致的联合体类型,包括数组变量和信号组结构体变量;所述信号组结构体变量为预先定义的与报文数据长度一致的信号组结构体类型,包括信号变量和占位符变量,所述信号变量的名称、长度、在信号组结构体中的位置分别与网络矩阵表中CAN信号的名称、长度、在报文中的位置一致。本专利技术的第四目的是提供一种CAN信号解析方法。为了实现上述目的,本专利技术采用如下一种技术方案:一种CAN信号解析方法,该方法包括:根据待解析报文的名称查找报文缓冲区对应的报文数据;将报文数据写入报文联合体变量的数组变量中,同时与数组变量位于相同地址空间的信号组结构体变量发生相同改变;读取信号组结构体变量中的信号变量,完成CAN信号解析;所述报文联合体变量为预先定义的与报文数据长度一致的联合体类型,包括数组变量和信号组结构体变量;所述信号组结构体变量为预先定义的与报文数据长度一致的信号组结构体类型,包括信号变量和占位符变量,所述信号变量的名称、长度、在信号组结构体中的位置分别与网络矩阵表中CAN信号的名称、长度、在报文中的位置一致。作为进一步的优选方案,将报文数据写入报文联合体变量的数组变量中,以报文联合体类型定义相关报文变量。作为进一步的优选方案,所述信号组结构体类型根据每个报文的信号布局图和MCU大小端模式预先定义,每个报文对应一个大小与其报文数据长度一致的信号组结构体类型。作为进一步的优选方案,所述信号布局图的生成方法包括:根据网络矩阵表给出的每个报文的所有CAN信号的名称、长度和起本文档来自技高网
...

【技术保护点】
1.一种CAN信号封装方法,其特征在于,该方法包括:将需赋值的CAN信号直接对信号组结构体变量进行赋值;同时与报文联合体变量中的信号组结构体变量位于相同地址空间的数组变量发生相同改变;将数组变量中的报文数据发送至CAN控制器的发送寄存器,完成CAN信号封装;所述报文联合体变量为预先定义的与报文数据长度一致的联合体类型,包括数组变量和信号组结构体变量;所述信号组结构体变量为预先定义的与报文数据长度一致的信号组结构体类型,包括信号变量和占位符变量,所述信号变量的名称、长度、在信号组结构体中的位置分别与网络矩阵表中CAN信号的名称、长度、在报文中的位置一致。

【技术特征摘要】
1.一种CAN信号封装方法,其特征在于,该方法包括:将需赋值的CAN信号直接对信号组结构体变量进行赋值;同时与报文联合体变量中的信号组结构体变量位于相同地址空间的数组变量发生相同改变;将数组变量中的报文数据发送至CAN控制器的发送寄存器,完成CAN信号封装;所述报文联合体变量为预先定义的与报文数据长度一致的联合体类型,包括数组变量和信号组结构体变量;所述信号组结构体变量为预先定义的与报文数据长度一致的信号组结构体类型,包括信号变量和占位符变量,所述信号变量的名称、长度、在信号组结构体中的位置分别与网络矩阵表中CAN信号的名称、长度、在报文中的位置一致。2.如权利要求1所述的方法,其特征在于,将数组变量中的报文数据发送至CAN控制器的发送寄存器,以报文联合体类型定义相关报文变量。3.如权利要求1所述的方法,其特征在于,所述信号组结构体类型根据每个报文的信号布局图和MCU大小端模式预先定义,每个报文对应一个大小与其报文数据长度一致的信号组结构体类型。或所述信号布局图的生成方法包括:根据网络矩阵表给出的每个报文的所有CAN信号的名称、长度和起始位置,在CAN总线开发及测试工具中定义各个CAN信号的名称、长度及其在报文中的起始位置;将所有CAN信号添加至相应的报文中,针对每个报文生成图形形式的信号布局图。或所述信号组结构体变量的占位符变量的大小与报文的信号布局图中空位置大小一致,用于填充信号布局图中没有信号的空位置。或所述报文联合体变量的数组变量为以单字节类型定义的数组,用于存储字节形式的报文数据;所述报文联合体变量的信号组结构体变量为以所述信号组结构体类型定义的结构体,信号组结构体变量和数组变量的大小相同,且存放在相同的地址空间上,用于存储信号组结构体类型的报文数据。4.一种计算机可读存储介质,其中存储有多条指令,其特征在于,所述指令适于由终端设备设备的处理器加载并执行根据权利要求1-3中任一项所述的方法。5.一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,其特征在于,所述指令用于执行根据权利要求1-3中任一项所述的方...

【专利技术属性】
技术研发人员:马建辉王知学慕永云胡代荣
申请(专利权)人:山东省科学院自动化研究所
类型:发明
国别省市:山东,37

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

1