掌桥专利:专业的专利平台
掌桥专利
首页

一种CAN通信模块的快速创建方法及系统

文献发布时间:2023-06-19 13:26:15


一种CAN通信模块的快速创建方法及系统

技术领域

本发明涉及CAN通信技术领域,尤其涉及一种CAN通信模块的快速创建方法及系统。

背景技术

氢燃料电池系统的零部件中很多关键部件通过CAN(Controller Area Network,控制器局域网络)通信网络进行整体协调控制。氢燃料电池系统优势的发挥、关键性能指标的达成与氢燃料电池控制器的控制功能密不可分。氢燃料电池控制器的控制由上层应用控制、底层驱动控制、以及上层与底层集成三部分共同完成,也就是控制系统的软硬件集成控制。氢燃料电池系统控制是通过CAN通信模块进行报文信号的传输,完成上层应用对底层驱动的调度,实现氢燃料电池系统的控制功能需要构建CAN通信模块。

CAN通信模块包括CAN接收配置模块、CAN发送配置模块、CAN中断接收处理模块、CAN编码模块、CAN解码模块5个子模块,氢燃料电池系统零部件报文信号以及与整车控制器交互的报文信号必须经过5个子模块的相关定义和处理,目前已知的氢燃料电池系统控制上下层集成中的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通信矩阵中提取每个所述报文信号的所述基础信息并保存为所述基本信息表;

将每个所述报文信号的所述新增信息添加到所述基本信息表中。

优选的,所述基础信息包括报文ID列,所述新增信息包括接收或发送列、CAN缓存列;

所述将每个所述报文信号的新增信息添加到所述基本信息表中,包括:

根据所述接收或发送列及所述报文ID列为每个所述报文信号分配一个CAN通道缓存空间,对每个所述CAN通道缓存空间进行编号;

将每个所述CAN通道缓存空间的编号添加到所述CAN缓存列中。

优选的,所述新增信息还包括CAN接收函数列;

所述将每个所述报文信号的新增信息添加到所述基本信息表中,还包括:

根据所述接收或发送列、所述报文ID列以及调用的每个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中断接收处理函数的代码文本文件、CAN编码函数的代码文本文件及CAN解码函数的代码文本文件,便可完成CAN接收配置模块、CAN发送配置模块、CAN中断接收处理模块、CAN编码模块及CAN解码模块的定义与处理,最后将CAN接收配置模块、CAN发送配置模块、CAN中断接收处理模块、CAN编码模块及CAN解码模块进行合并、生成CAN通信模块的源文件,与手工创建CAN通信模块相比,本发明通过软件实现了CAN通信模块的自动创建,从而实现了氢燃料电池系统控制的CAN通信模块的快速创建,提高了CAN通信模块的创建效率,降低了工作量。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中CAN通信模块的快速创建方法的流程图;

图2为本发明实施例中步骤S2的部分流程图;

图3为本发明实施例中CAN接收配置规则的示意图;

图4为本发明实施例中CAN发送配置规则的示意图;

图5为本发明实施例CAN中断接收处理规则的示意图;

图6为本发明实施例中CAN编码函数规则的示意图;

图7为本发明实施例中CAN解码函数规则的示意图;

图8为本发明实施例中CAN报文信号的排列格式为Intel时CAN通道缓存的读写规则示意图;

图9为本发明实施例中CAN报文信号的排列格式为Motorola时CAN通道缓存的读写规则示意图;

图10为本发明实施例中CAN通信模块的快速创建系统的示意图。

具体实施方式

本发明实施例通过提供一种CAN通信模块的快速创建方法及系统,解决了现有技术以手工方式构建CAN通信模块效率低的技术问题。

为了更好的理解本发明的技术方案,下面将结合说明书附图以及具体的实施方式对本发明的技术方案进行详细的说明。

首先说明,本文中出现的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

如图1所示,本实施例的CAN通信模块的快速创建方法,包括:

步骤S1,获取氢燃料电池系统的CAN通信矩阵;

步骤S2,根据CAN通信矩阵生成基本信息表,基本信息表包含氢燃料电池系统中特定CAN通信节点的报文信号的基本信息;

步骤S3,根据基本信息表分别定义CAN接收配置函数、CAN发送配置函数、CAN中断接收处理函数、CAN编码函数及CAN解码函数;

步骤S4,分别生成CAN接收配置函数的代码文本文件、CAN发送配置函数的代码文本文件、CAN中断接收处理函数的代码文本文件、CAN编码函数的代码文本文件及CAN解码函数的代码文本文件;

步骤S5,将CAN接收配置函数的代码文本文件、CAN发送配置函数的代码文本文件、CAN中断接收处理函数的代码文本文件、CAN编码函数的代码文本文件及CAN解码函数的代码文本文件进行合并,生成CAN通信模块的源文件。

步骤S1中,CAN通信矩阵由高压CAN通信矩阵、低压CAN通信矩阵以及与整车控制器通信的CAN通信矩阵等3个通信矩阵Excel文件组成,CAN通信矩阵包含CAN通道定义、CAN通信节点、CAN节点所属通道、CAN节点报文信号属性描述,CAN通道定义包括第一CAN通道(CANB)、第二CAN通道(CAND)及第三CAN通道(CANC),高压CAN通信矩阵的CAN通道定义为第一CAN通道(CANB),低压CAN通信矩阵的CAN通道定义为第二CAN通道(CAND),与整车控制器通信的CAN通信矩阵的CAN通道定义为第三CAN通道(CANC),第一CAN通道(CANB)用于传输氢燃料电池系统的第一类部件的报文信号,第二CAN通道(CAND)用于传输氢燃料电池系统的第二类部件的报文信号,第三CAN通道(CANC)用于与整车控制器通信,第一类部件为高压部件,第二类部件为低压部件,即第一类部件的工作电压大于第二类部件的工作电压。第一类部件可包括氢气循环泵、直流变换器、水泵及空压机等高压部件中的一种或多种,第二类部件可包括单体电压监控器、节温器、温度传感器、氢气浓度传感器、调温阀、泄流阀及冷却风扇等低压部件中的一种或多种,如表1所示。

表1

步骤S2中,氢燃料电池系统的每一个高压部件或低压部件对应一个CAN通信节点,特定CAN通信节点可为所有高压部件及所有低压部件对应的所有CAN通信节点,也可为部分高压部件或部分低压部件对应的部分CAN通信节点。如图2所示,步骤S2包括:

步骤S21,从CAN通信矩阵中提取每个报文信号的基础信息并保存为基本信息表;

步骤S22,将每个报文信号的新增信息添加到基本信息表中。

步骤S2通过提取3个通信矩阵Excel文件中所有报文信号的基本信息并保存为一个新的Excel文件,即基本信息表can.xlsx,每个报文信号的基本信息包括基础信息和新增信息,新增信息为根据基础信息通过直接、间接计算或格式转换方法获得,基础信息和新增信息均包括多种信息。基本信息表can.xlsx中,每一个报文信号的基本信息单独成行,所有报文信号的同一种信息单独成列。如图3所示,每个报文信号的基础信息包括控制器、报文名称、排列格式、报文ID、报文发送类型、报文周期、报文长度(字节)、信号名称(英)、信号名称(中)、信号长度(位)、起始字节位置(0~7)、起始位位置(0~63)、数据类型、精度及偏移量等,每个报文信号的新增信息包括CAN网络、CAN缓存、CAN接收函数及接收或发送等,接收或发送列的信息为根据原有的三个通信矩阵Excel文件接收或发送的报文信号格式转换得到,由此形成基本信息表can.xlsx中的CAN网络列(CAN)、CAN缓存列(CANBUF)、CAN接收函数列(CANRCV)、接收或发送列(Rx or Tx)、控制器列(ECU)、报文名称列(Msg Name)、排列格式列(Byte Order)、报文ID列(Msg ID(hex))、报文发送类型列、报文周期列(Msg Cycle Time(ms))、报文长度(字节)列、信号名称(英)列(Signal Name)、信号名称(中)列、信号长度(位)列(Signal Length(bits))、起始字节位置(0~7)列、起始位位置(0~63)列、数据类型列、精度列(Resolution)及偏移量列(Offset)。其中,CAN网络列记录每个报文信号对应的CAN通道,CAN缓存列记录每个报文信号对应的CAN通道缓存空间的编号,CAN接收函数列记录分配给每个CAN通道的每个CAN通道缓存空间的中断接收处理函数的名称,即CAN中断接收处理函数包括第一CAN通道(CANB)的每个CAN通道缓存空间的中断接收处理函数、第二CAN通道(CAND)的每个CAN通道缓存空间的中断接收处理函数及第三CAN通道(CANC)的每个CAN通道缓存空间的中断接收处理函数。

步骤S22中,将每个报文信号的CAN缓存添加到基本信息表中,包括:根据接收或发送列及报文ID列为每个报文信号分配一个CAN通道缓存空间,对每个CAN通道缓存空间进行编号;将每个CAN通道缓存空间的编号添加到CAN缓存列中。对每个CAN通道缓存空间单独编号的规则为:报文接收分配的CAN通道缓存空间的编号从CANB_BUF00、CANC_BUF00、CAND_BUF00开始,报文发送分配的CAN通道缓存空间的编号从CANB_BUF[Num_S]、CANC_BUF[Num_S]、CAND_BUF[Num_S]开始,Num_S为每个CAN通道的发送报文总数。

步骤S22中,将每个报文信号的CAN接收函数添加到基本信息表中,还包括:根据接收或发送列、报文ID列以及调用的每个CAN接收函数允许的CAN通道缓存空间的最大编号,为每个CAN通道的每个CAN通道缓存空间分配相应的中断接收处理函数;将每个中断接收处理函数的名称添加到CAN接收函数列中。

本实施例中,分配给每个CAN通道的每个CAN通道缓存空间的中断接收处理函数如表2所示。

表2

表3

这样通过步骤S2便可得到如表3所示的基本信息表can.xlsx。其中,CAN通信矩阵对于创建CAN通信模块来说,可以过滤冗余信息;标准格式的表文件数据,可以直接作为自动创建CAN通信模块的输入信息;CAN通信矩阵到标准格式的表文件过渡,可以方便特殊情况下的信息修改;标准格式的表文件为自动创建,未增加工作量且保存了CAN通信模块的创建过程文件。

下面分别对步骤S3、S4进行说明。

CAN接收配置函数用于CAN通信网络中CAN接收报文信号的初始化定义,包括通道接收ID、CAN通道缓存编号、通道接收的滤波ID、CAN通道缓存滤波掩码、通道配置报文格式标准帧还是扩展帧的定义和配置。CAN接收配置的范围为CAN通信矩阵中所有CAN通信节点发送的报文(即氢燃料电池系统控制器接收的报文)。CAN接收配置函数以氢燃料电池系统控制器接收的CAN通道及报文组合为单位,不同的CAN通道需要创建不同的CAN接收配置函数,本实施例中CAN接收配置函数包括第一CAN通道(CANB)的接收配置函数FlexCANBRcv_Init()、第二CAN通道(CAND)的接收配置函数FlexCANDRcv_Init()及第三CAN通道(CANC)的接收配置函数FlexCANCRcv_Init()。CAN接收配置函数的报文数据提取的筛选条件为提取基本信息表can.xlsx中接收或发送列为“Rx”的报文信息。以第一CAN通道(CANB)的接收配置函数FlexCANBRcv_Init()为例,CAN接收配置的规则如图3所示,其中:

a1:由基本信息表can.xlsx中的CAN网络字段获取FlexCANBRcv_Init;

a2:来源于can.xlsx中的报文名称(Msg Name)字段;

a3:来源于can.xlsx中的CAN网络(CAN)字段;

a4:来源于can.xlsx中的CAN缓存(CANBUF)字段;

a5:来源于can.xlsx中的报文ID(Msg ID(hex))字段;

a6:本CAN通信模块下的CAN滤波掩码统一设置为0xFFFFFFFF;

a7:CAN缓存通道可配置为标准帧还是扩展帧0-标准帧;1-扩展帧;

帧格式,由报文ID长度确定;

提取的报文ID长度字段=4,为标准帧,置0;

提取的报文ID长度字段>4,为扩展帧,置1。

a8:本CAN通信模块下的最后一位统一设置为1。

通过Python Jupyter编程工具将所有CAN通道的CAN接收配置函数定义完毕,生成的CAN接收配置函数定义代码保存在文本文件can_ini.txt中,这样就完成了CAN接收配置模块的定义与处理。

CAN发送配置函数用于CAN通信网络中CAN发送报文信号的初始化定义,包括指定CAN通道发送标准帧还是扩展帧函数的调用、CAN通道缓存编号、CAN报文ID及要发送的CAN缓存报文数据的定义和配置。CAN发送配置的范围为CAN通信矩阵中氢燃料电池控制器要发送的所有报文(即氢燃料电池控制器接收的报文)。CAN发送配置函数的报文数据提取的筛选条件为提取can.xlsx中的接收或发送(Rx or Tx)字段为Tx的报文信号。CAN发送配置函数以氢燃料电池控制器发送的不同CAN通道的发送标准帧还是扩展帧函数及发送的报文ID组合为单位,CAN发送配置信息全部包含在J1939_Send_Schd()函数中,J1939_Send_Schd()引用CAN发送配置子函数,CAN发送配置子函数分为不同CAN通道的发送标准帧函数、不同CAN通道的发送扩展帧函数,如表4所示,CAN发送配置子函数发送内容包含发送的报文ID、CAN通道缓存编号及发送的CAN通道缓存数据的定义和配置。

表4

CAN发送配置函数的报文数据定义为将要CAN发送配置函数的报文数据按照一定规则(Intel或Motolora制式)分配到CAN通道缓存不同的缓存区段内;分配规则为根据报文制式将要发送的数据分配到CAN通道缓存不同的缓存区段;一个CAN通道缓存包含从低字节到高字节共8个缓存区段,如表5所示。

表5

CAN发送配置的规则如图4所示,其中:

a1:由can.xlsx中的接收或发送(Rx or Tx)字段中的取值为Tx的报文信号,注释为CAN发送;

a2:来源于can.xlsx中的报文名称(Msg Name)字段;

a3:由can.xlsx中的报文周期(Msg Cycle Time(ms))字段获取;

a4:由can.xlsx中的报文周期(Msg Cycle Time(ms))字段;

a5:Sys_1ms_Cnt/文周期,取余;

a6:由GlobalSW_Var.h中定义

a7:此CAN报文中的信号,信号名称(英)(Signal Name)字段

a8:仅应用于CAN报文中的信号为滚动码(rollingcount)、校验码(checksum)和心跳值(life),其值由信号长度(位)(Signal Length(bits))字段来获取,数值=SignalLength(bits)*8;

a9:初值即为0;

a10:同a6和a7;

a11:来源于can.xlsx中的CAN缓存(CANBUF)字段;

a12:由can.xlsx中的CAN网络(CAN)和报文ID(Msg ID(hex))两个字段来获取;具体调用的函数如表6所示:

表6

通过Python Jupyter工具将所有CAN通道的CAN发送配置函数定义完毕,生成的CAN发送配置函数定义代码保存在文本文件can_send.txt中,这样就完成了CAN发送配置模块的定义与处理。

CAN中断接收处理是指将CAN通道的缓存空间中按一定规则(Intel或Motolora制式)取出CAN报文信号信息分配给预先声明的CAN节点的结构体的报文信号变量中。CAN中断接收处理函数是将从CAN网络上接收下的CAN报文信号信息,按照一定规则(Intel或Motolora制式)从CAN通道缓存区间取出分配给预测声明的指定变量,涉及的信息包括CAN报文、预先定义的CAN节点报文结构体和信号变量;CAN节点报文结构体主要存放与CAN节点部件相关的所有发送和接收的报文信号变量共同构成的结构。CAN中断接收处理的范围包含所有CAN通道缓存接收报文信号的处理,CAN中断接收处理处理函数根据CAN通道和CAN缓存编号共同确定,如上文表2所示。CAN中断接收处理的规则如图5所示,其中:

a1:来源于can.xlsx中的CAN接收函数(CANRCV)字段;

a2:来源于can.xlsx中的报文名称(Msg Name)字段;

a3:来源于can.xlsx中的报文ID(Msg ID(hex))字段;

a4:由GlobalSW_Var.h中定义;GlobalSW_Var.h为结构体、变量声明和初始化定义文件,可事先完成,结构体是CAN网络节点的部件为单位,一个部件建立一个结构体,部件涉及的发送和接收报文信号均需声明和初始化;

a5:此CAN报文中的信号,信号名称(英)(Signal Name)字段;

a6:本段函数中tempbuf[8]的i循环的不同取值。

将PythonJupyter编辑工具完成的CAN中断接收处理函数代码文件保存为can_rcvdo.txt文件,这样就完成了CAN中断接收处理模块的定义与处理。

CAN编码是在由氢燃料电池控制器的报文信号发送到CAN网络前,对CAN报文信号初始值的精度和偏移量进行数据转换。CAN编码的报文信号包括氢燃料电池系统控制器发送到CAN网络上的所有报文信号,即can.xlsx中的接收或发送(Rx or Tx)字段中为Tx的报文信号进行编码。CAN编码函数的名称为CAN_Encode(),CAN编码函数最终发送的数据=发送前数据初值/精度-偏移量,CAN编码函数的规则如图6所示,其中:

a1:CAN编码函数名称;

a2:来源于can.xlsx中的控制器(ECU)字段;

a3:来源于can.xlsx中的报文名称(Msg Name)字段;

a4:来源于can.xlsx中的排列格式(Byte Order)字段;

a5:来源于can.xlsx中的报文ID(Msg ID(hex))字段;

a6:由GlobalSW_Var.h中定义;

a7:由GlobalSW_Var.h中定义;

a8:来源于can.xlsx中的信号名称(英)(Signal Name)字段;

a9:来源于can.xlsx中变量的计算,考虑精度(Resolution)、偏移量(Offset)值。

将通过Python Jupyter编辑工具完成的CAN编码代码文件保存在文本文件can_encode.txt中,便完成了CAN编码模块的定义与处理。

CAN解码是将氢燃料电池控制器从CAN网络上收到的报文信号初始值,根据CAN报文信号的精度和偏移量进行数据转换。CAN解码的报文信号是指氢燃电系统控制器从CAN网络上收到的所有报文信号,即对can.xlsx中的接收或发送(Rx or Tx)字段中为Rx的报文信号进行解码。CAN解码函数的名称为CAN_Decode(),CAN解码函数最终接收的数据=接收前数据初值*精度+偏移量,CAN解码函数的规则如图7所示,其中:

a1:CAN解码函数名称;

a2:来源于can.xlsx中的控制器(ECU)字段;

a3:来源于can.xlsx中的报文名称(Msg Name)字段;

a4:来源于can.xlsx中的排列格式(Byte Order)字段;

a5:来源于can.xlsx中的报文ID(Msg ID(hex))字段;

a6:由GlobalSW_Var.h中定义;

a7:来源于can.xlsx中的信号名称(英)(Signal Name)字段;

a8:由GlobalSW_Var.h中定义;

a9:来源于can.xlsx中的信号名称(英)(Signal Name)字段;

a10:来源于can.xlsx中的精度(Resolution)字段,用于解码结果计算;

a11:来源于can.xlsx中的偏移量(Offset)字段,用于解码结果计算。

将通过Python Jupyter编辑工具完成的CAN解码代码文件保存在can_decode.txt中,便完成了CAN解码模块的定义与处理。

步骤S5中,将前文得到的代码文本文件can_ini.txt、can_send.txt、can_rcvdo.txt、can_encode.txt、can_decode.txt合并,并与上层应用和底层驱动一起编译,可生成CAN通信模块的源文件CAN_Interface.c,如表7所示,最终生成可烧写到氢燃料电池控制器上的代码,控制氢燃料电池系统正常启动和运行。其中,编译器可为S32 DesignStudio for Power Architecture Version 2017。

表7

这样本实施例首先获取氢燃料电池系统的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报文信号的排列格式(Intel或Motolora)来确定。Intel:由低位到高位(MSB),由低字节到高字节的排列方式,起始位在低字节的低位(LSB),如图8所示。Motorola:不跨字节时与Intel排列完全相同;跨字节时,信号的高位(MSB)放在低字节的高位,信号的低位(LSB)放在高字节的低位,起始位该信号的低位(LSB),如图7所示。具体排列的起始位、起始字节、信号长度由can.xlsx中的相应字段获得。

如图10所示,本实施例还提供一种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通信模块的源文件,与手工创建CAN通信模块相比,本实施例通过软件实现了CAN通信模块的自动创建,从而实现了氢燃料电池系统控制的CAN通信模块的快速创建,提高了CAN通信模块的创建效率,降低了工作量。

基于与前文所述的CAN通信模块的快速创建方法同样的发明构思,本实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前文所述的CAN通信模块的快速创建方法的任一方法的步骤。

其中,总线架构(用总线来代表),总线可以包括任意数量的互联的总线和桥,总线将包括由处理器代表的一个或多个处理器和存储器代表的存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和接收器和发送器之间提供接口。接收器和发送器可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。

由于本实施例所介绍的电子设备为实施本发明实施例中CAN通信模块的快速创建方法所采用的电子设备,故而基于本发明实施例中所介绍的CAN通信模块的快速创建方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中CAN通信模块的快速创建方法所采用的电子设备,都属于本发明所欲保护的范围。

基于与上述CAN通信模块的快速创建方法同样的发明构思,本发明还提供一种计算机可读存储介质,计算机可读存储介质被执行时实现上述任一CAN通信模块的快速创建方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

相关技术
  • 一种CAN通信模块的快速创建方法及系统
  • 一种针对基站通信模块三维快速装配的系统及方法
技术分类

06120113675444