APP下载

新能源整车控制软件自动化集成的实现

2018-12-28纪淑玲南涛

汽车实用技术 2018年23期
关键词:应用层脚本底层

纪淑玲,南涛

(上海汽车集团股份有限公司商用车技术中心,上海 200438)

引言

随着电动汽车的快速发展,企业对电子控制系统的开发效率以及自动化程度提出了越来越高的要求,基于模型的开发方式是目前汽车控制系统普遍采用的开发方式,这种方法越来越多的取代了传统手写代码的开发方式,尤其是应用层的控制模型普通采用基于模型的方式,底层软件采用目前流行的AUTOSAR架构的代码,而一款控制器有了应用层模块和底层软件代码还需要把两者集成到一起才能实现完整的控制功能。目前主要的集成方法是将应用层模型生成的代码和底层软件的代码放到编译器里对接口和调度功能以及 CAN矩阵的解析等信息手动编写代码进行集成,手动集成时需要手写代码,对工程师编写代码的能力要求高,周期长,手写容易出现问题不便于查找问题。自动集成的方式是利用excel表和DBC文件以及数据类来管理接口数据和CAN矩阵的解析,生成统一格式的代码,有利于代码的平台化,一次开发永久复用。

对于基于Simulink应用层模型和AUTOSAR架构的底层软件的控制平台来说,接口通用,任务调度周期固定,这种平台的集成可以编写一些固定模板的脚步实现自动化集成,利用GUI界面把集成工作显示在一个界面内,集成人员只需要通过操作控件即可实现应用层和底层软件的集成,可操作性高,复用性高,开发人员可以把更多精力放到应用层策略开发中。

因此,本论文基于Matlab/Simulink软件平台,利用一些脚本实现了软件集成中需要集成的接口对应、数据存储、任务调度以及自动生成代码,并自动对生成的代码编译,生成可执行文件和可供标定的文件A2L。

1 软件自动集成工作主要模块

图1 软件自动集成

图1是软件自动化集成的GUI界面,主要包含以下功能:

1)数据管理模块

2)任务调度

3)CAN解析

4)接口层

5)A2L合并

6)自动代码生成

7)一键集成

功能1~6可分步执行的目的是在集成软件需要修改部分内容时可只运行部分脚步,如果是想一键生成点击7即可实现软件集成功能。使用说明里介绍了这个集成界面的用法以及各个模块功能的简单介绍。

1.1 数据管理模块

图2 自定义数据类

数据管理模块主要采用 MATLAB的自定义数据类的方式Custom Storage Class Designer。模型的数据主要是一些标定量和测量量,自定义一个数据类 MYCSC,这个数据类是在simulink自带的数据类mpt基础上定义的,MYCSC数据类里主要定义了标定量和测量量的数据类型和存储类型。自定义数据类的界面如图2所示。

1.1.1 数据类定义

MYCSC数据类借用simulink自带的mpt数据,又自定义了两种数据类型CAN_IO和CAL,其中CAN_IO数据类型是定义的CAN矩阵的信号,CAN信号的信息主要在文件my_canTskCode.h定义,所以需要此文件作为输入,此文件是CAN解析时得到的,请参见CAN解析部分。

图3 自定义数据类a

数据类型 CAL是与标定量相关的数据,属于要输出到A2L文件中的数据,所以Data scope项需要选择为export,memory section需要选择一个memory section定义的文件,memory section中会定义数据存储的方式。

图4 自定义数据类b

1.1.2 内存分区

内存分区的部分主要把需要存储的数据放到内存指定的位置,在代码中会有具体位置的体现,本文主要用下列方式划分代码区域:

图5 内存分区

#define SECTION_SEL MEM_CALDAT

#include "memsect.h"

XXX

XXX需要存储的数据

#define SECTION_SEL MEM_DEFAULT

#include "memsect.h"

在自定义类中实现如图5所示。

1.1.3 数据管理的实现

在上文对数据类定义之后,数据管理时即可使用自定义的数据类来定义信号和变量的数据类型。数据管理采用excel表的形式,excel表中包括了数据的基本信息,再利用脚本文件DDM.m将自定义的数据类分配给excel表中不同页的信号和变量,最后导入workspace中,workspace中的数据信息可供模型运行或生成代码时使用,以上工作实现了数据信息的定义,存储,以及导入到workspace空间中,如图6所示。

图6 数据管理

1.2 任务调度

基于AUTOSAR架构的底层软件带有OS功能,任务调度由OS实现,应用层的不同周期的任务可以在excel表里选择周期,脚本文件会自动识别任务的周期将应用层的任务分配到OS的不同周期内。

脚步语言主要完成以下工作:

The electric field at the gate–oxide and channel interface is assumed to be continuous in GSGCDMT-SON MOSFET, we have

分析excel表中函数的名称及周期,并在底层软件OS.c中搜索到对应的调度周期,把函数放到对应的调度周期中,并在 OS.h文件中搜索是否包含了函数所在的头文件,如果没包含将函数所在的头文件包含进OS.h文件中。

1.3 CAN解析

CAN解析的方法常用的有两种:一种是用simulink自带的pack和unpack两个模块由应用层建模时实现,一种是底层模块实现,本文采用的是利用脚步把 CAN矩阵直接解析成.c/.h文件供底层使用,CAN矩阵中信号的具体信息在数据管理模块已经导入到workspace中,本部分主要功能把CAN矩阵中信号的信息传递给底层 CAN收发模块,要传递的信息底层软件会提前给出来函数的格式及需求,不同的底层要求不同,本文利用的底层软件要求传的参数如CAN报文发送模块包括CAN ID,报文 长度DLC,报文的数据Data,因此脚本生成.c/.h文件需要把CAN矩阵里的CAN信号全部打包成CAN Massage的形式以适应底层CAN发送模块的需要。下图7是CAN解析用的脚本文件和生成的CAN模块相关的.c/.h文件。

图7 CAN解析文件

1.4 接口层的功能

接口层主要是应用层输入输出接口的信号名称与底层软件的参数名称匹配,本部分功能也是采用excel表的形式管理,然后利用脚本为模型自动生成一个外围接口层,将应用层信号与底层参数一一匹配起来,信号和变量在excel表中定义格式如图8所示,SW_BSWIO表中不同的页定义了不同的数据形式,每一页都根据信号或变量的名称、数据类型、偏移量定义好。

图8 接口管理表

利用脚本解析出上述 excel表中的内容,然后为应用层模型生成一个外围接口层,运行后的结果如图9所示。

图9 带接口层的应用层模型

1.5 A2L合并

图10 perl脚本

Simulink模型生成的A2L文件只包含了测量量和标定量的名称,不包含变量的内存地址,本部分的功能是为了生成一个带地址的可供标定工具使用的A2L文件,利用perl脚本文件合成 A2L文件,在自动代码生成的控制文件里将 perl脚本文件添加进去,在生成代码的过程中自动生成可供标定工具使用的A2L文件。

Perl脚本生成带地址的A2L文件主要做了以下工作:

1)首先利用正则运算查找模型生成的A2L文件中变量名与map文件中匹配的位置,抓取出map文件中变量名中的地址;

2)将抓取到的地址赋给A2L文件中的变量。

1.6 自动代码生成

本部分主要是为了能自动生成代码做的一些配置文件的编写,simulink提供了模板,可以直接在模板上修改成项目需要的形式,自动代码生成过程如图11所示。

图11 自动代码生成过程

主要包括以下几个文件:

1)makefile:这个文件是和项目使用的编译器相关的,里边包含了对项目文件的编译连接的过程的定义,是开发过程中的重要内容。

2)系统TLC文件:对整个代码生成过程的控制。

3)Hook文件:用于对代码生成的各个阶段操作处理,可以在这个文档里自定义一些编译链接相关的内容,A2L合并的文件就是在这个文件里的“after_make”阶段调用的。

4)Template makefile file:文件的作用是按照编译器编译链接的格式生成一个和代码编译链接相关的 makefile文件,对模型生成的代码与底层代码库一起编译链接生成一个可执行文件和一个A2L文件。

图12 自动代码生成

测试的例子中生成了可执行文件elf和A2L,把两个文件加载到标定工具 INCA中可以看到测量量 BS_BrakePedal SwitchSts_BCAN_01的值。

1.7 一键生成代码

一键生成代码其实包含了以上的6个部分内容,把上述6部分内容的脚步文件全部链接到一键生成代码按钮下边,按执行顺序调度,最后的效果也和分步执行相同。

1.8 验证结果

利用上述的自动集成方法:从统计变量信息制作 excel表,利用现有DBC,设计集成文件的格式,写脚本到一键生成代码,应用在一款纯电动车整车控制器软件集成上,可快速对生成的代码做测试,并搭建了测试环境对生成的可执行文件和A2L文件做了功能测试,图13是把可执行文件和A2L文件加载到INCA工具中,通过刷写可执行文件到控制器中,以及监控 CAN通讯报文的操作,对可执行文件的功能做了测试,测试结果证明了此种软件集成方式的可靠性和准确性。

图13 控制器通讯报文

2 结论

本文实现了对基于simulink应用层模型生成的代码与基于AUTOSAR底层软件代码的自动化集成,减少了手写代码量,缩短了软件集成的时间,有利于软件开发的平台化发展,应用到实际项目中验证了可行性,大大降低了集成工程师的工作量。

a)首次自动集成应用,由于搭建流程及脚本文件,开发时间可能比手动集成时间稍长三四天,后续开发好的流程及脚本文件可直接扩展到其他整车控制器开发项目,复用性高。

b)这种方法不仅适用于整车控制器的软件集成,同样适用于新能源其他电控系统软件的集成,可以加快新能源控制软件的开发进度。

c)目前,对于不基于 AUTOSAR架构的底层软件来说不适用,需继续研究开发一套可以把底层接口函数封装成统一的接口形式,完善通用性,使自动集成的过程对底层限制减少。

猜你喜欢

应用层脚本底层
航天企业提升采购能力的底层逻辑
自动推送与网站匹配的脚本
传输层和应用层的隧道技术
基于分级保护的OA系统应用层访问控制研究
友谊的小船说翻就翻
物联网技术在信息机房制冷系统中的应用
举一反三新编
回到现实底层与悲悯情怀
中国底层电影研究探略
略论“底层”