APP下载

基于AUTOSAR的汽车电控系统代码自动生成技术

2014-06-27孙颖王建俊张承瑞

关键词:代码生成转向灯车灯

孙颖,王建俊,张承瑞

(1.山东重工集团有限公司,济南 250014;2.山东大学机械工程学院,济南 250061)

基于AUTOSAR的汽车电控系统代码自动生成技术

孙颖1,王建俊2,张承瑞2

(1.山东重工集团有限公司,济南 250014;2.山东大学机械工程学院,济南 250061)

基于汽车开放式系统架构标准AUTOSAR的方法,探讨了以普华基础软件和Simulink工具为基础的汽车电控系统软件自动代码生成技术的开发流程。以汽车车灯控制系统为代表,对BSW配置、软件组件封装、Runnable设计、逻辑功能开发和RTE实现等关键环节进行了介绍。对建模系统进行在线仿真,对生成代码进行汽车试验控制箱实验,验证了生成的代码的正确性。

汽车开放系统架构标准;汽车电控系统;代码自动生成

随着汽车电子技术的发展和功能需求的不断增加,汽车电控系统变得越加复杂。不同汽车制造商和供应商对特定问题提供各自的专有解决方案,使得软硬件系统的不兼容性和应用组件的复杂性成为E/E凸显的问题[1-2]。为改善E/E复杂性管理,增强可移植性、可扩展性、安全可靠性和便于产品更新换代,由制造商、供应商及其他半导体和软件系统公司联合推出了汽车开放系统架构标准(AUTomotive open software ARchitecture,AUTOSAR),包括架构、方法学和应用接口三方面的内容。AUTOSAR为车辆系统提供了基于标准接口的通用软件架构[3]。应用层由SWC组成,SWC的独立性通过虚拟功能总线(VFB)实现,VFB由RTE和BSW共同完成。RTE通过提供一致的接口和服务完成SWC之间、SWC与底层的通信。BSW屏蔽底层细节,向SWC提供服务。AUTOSAR方法学采用标准化的数据交换格式描述软件架构信息,包括SWC、ECU资源、系统约束、系统配置和ECU配置[4]。

本文以Freescale HCS12_XEP100处理器为硬件开发平台,应用普华基础软件ORIENTAIS工具对操作系统(OS)、通信(Com)、硬件端口(I/O)等基础软件(BSW)和运行时的环境(RTE)等进行了配置,生成底层驱动代码和实时交互层代码。在Matlab/Simulink中开发应用软件组件(SWC)的运行实体(Runnable)。应用Stateflow设计Runnable内部逻辑,并建立仿真模型在线仿真。应用Embedder Coder生成逻辑层代码。将底层驱动代码、实时交互层代码和逻辑层代码融合,在汽车实验箱中进行实验。

1 基于AUTOSAR的汽车电控系统开发流程

根据AUTOSAR方法学的开发流程,结合Matlab的使用方法,首先在Authoring Tool中进行系统级设计。然后将系统描述文件导入到Matlab/Simulink中提取SWC。运用Stateflow对SWC中的Runnable进行设计,生成代码并导出SWC描述文件。将SWC描述文件重新导入Authoring Tool中,在RTE中将Runnable映射到BSW的任务中。在进行Runnable设计的同时,应用Authoring Tool对BSW各模块进行配置,并生成底层驱动代码。最后将代码融合[5]。开发流程如图1所示。

图1 汽车电控系统开发流程

2 汽车车灯系统设计与代码自动生成

2.1 汽车车灯系统SWC设计

汽车车灯系统由信号灯和照明灯等组成,主要包括夜间照明灯、左右转向灯、前后雾灯、刹车灯、双闪灯和车内照明灯。根据功能将车灯系统分为如表1所示的5个SWC,其中转向灯的跳转频率和最小跳转次数通过CAN调试终端发送参数修改报文,通过CAN调试终端可以查看车门状态信息。车门状态信息报文第1字节低4位分别表示4个车门的状态。

表1 SWC的功能说明

SWC功能分配完成后,在ORIENTAIS中建立SWC、接口(interface)和数据类型(datatype)。因为Simulink不能读取SWC的行为(behavior),所以不设计SWC Behavior。最后导出系统描述文件LampControlSystem.arxml。汽车车灯控制系统SWC结构树如图2所示。

2.2 Simulink中Runnable设计及应用代码生成

2.2.1 Simulink与AUTOSAR对应关系

Simulink在AUTOSAR整个设计流程中的作用是建立模型的逻辑功能,并仿真验证基于模型的设计中模型逻辑功能的正确性。Simulink之所以能用于AUTOSAR的开发过程中,是因为Simulink与AUTOSAR中很多概念的相通性。表2列出了设计汽车电控系统中常用的术语对应关系[6]。将SWC端口配置为服务器操作时,SWC在Simulink模型中只能用模型表示。如果将SWC封装到部件(composition),各SWC只能用虚拟子系统(virtual subsystem)表示。

图2 SWC结构树

表2 AUTOSAR和Simulink中的常用术语对应关系

2.2.2 Runnable在Simulink中的实现

将ORIENTAIS生成的系统描述文件导入到Simulink中,然后对SWC端口进行相应的修改,结果如图3所示。

鉴于篇幅限制,以转向灯应用组件SWC_ TurnLampControl为例对SWC在Simulink中逻辑功能的实现细节进行说明。如图4所示,转向灯应用组件SWC_TurnLampControl对外屏蔽掉内部实现细节,并预留了7个输入口和3个输出口。其中头2个输入口连接RTE触发事件控制信号,每一个SWC的第1个端口需要留给RTE触发事件。内部包含2个Runnable,两者公用GetMincycle和GetFlashFrm两个输入端口信号,每个Runnable由状态图实现。转向灯逻辑状态如图5所示。

图3 汽车车灯系统模型

图4 SWC在Simulink中的层次化实现结构

图5 转向灯逻辑状态

2.2.3 Simulink仿真

将每个SWC逻辑功能设计好之后,需要将5个SWC封装到部件(composition)中。Composition作为系统抽象只负责封装组件提供系统结构,不影响SWC和VFB之间的通信。

系统仿真模型如图6所示。

图6 汽车车灯系统仿真模型

Function Call Generator和Event Chart一起为各Runnable提供RTE触发事件。每一个Runnable需要单独的RTE触发事件,不同的Runnable不能共用同一个Runnable。Simulation Environment模拟实际环境,为汽车车灯控制系统提供信号输入,并用示波器观察输出信号。每一个车灯都由开关控制。为方便观察输出信号随输入信号的变化,用周期为50 s、占空比为20%的脉冲发生器代替开关。用矢量输出值为[3 1 4 2 1]、采样周期为40 s的任意信号发生器表示通过CAN调试终端修改转向灯闪烁频率。从仿真结果(图7)可以看出:通过更改闪烁频率的数值,转向灯状态输出波形疏密度发生了变化,表明转向灯闪烁频率已经发生了变化。

图7 仿真结果

2.2.4 与AUTOSAR兼容的应用代码自动生成

在确认上述模型仿真结果正确后,采用Matlab/Embedded Coder工具实现应用层代码的自动生成。Embedded Coder是Matlab图形建模和仿真环境Simulink的功能补充,用以创建目标系统的C代码。为生成与AUTOSAR兼容的代码,需要将系统目标代码文件选为autosar.tlc。

在图6所示的模型中只对LampControlSystem封装部件中的所有SWC进行代码生成,不对其仿真环境和事件触发部分进行代码生成。图8为利用Embedded Coder工具生成的汽车车灯控制系统应用代码生成报告。生成的文件主要包括system.c、system.h和system.arxml文件。system.c文件包含了模型的初始化代码、模型代码及模型终止操作代码等。system.h文件包含了模型的数据结构、模型输入与数据结构件的全局接口,并对模型函数进行外部声明。system.arxml文件描述了SWC的接口、数据类型和内部行为特征。

2.3 BSW配置与底层驱动代码生成

BSW各模块的配置是和SWC设计同时进行的,但两者相互分离。首先为与底层通信的信号分配相应的引脚;然后在ORIENTAIS中对I/O,COM,CAN总线,CAN接口(Canif),数据链路层(PduR),OS,硬件抽象层(IoHwAb)等模块进行配置,每一个配置模块生成相应的配置代码。

图8 汽车车灯控制系统应用代码生成报告

2.4 底层与应用层通信机制及代码整合

系统级设计SWC时隐藏了内部具体行为,只预留了通信接口,需要将Embedded Coder的导出文件system.arxml导入到ORIENTAIS中提取内部行为信息;BSW配置完成后只为上层提供一致的接口,RTE实现应用层SWC之间、SWC与BSW之间的通信,以及Runnable到操作系统任务的映射。提取系统描述文件,完成端口之间的连接。端口间连接关系如图9所示。

图9 端口间连接关系

AUTOSAR文档中提到了Runnable到任务的3种映射规则,其他文献[7-8]也对映射规则进行了详细研究。本文按照具体功能优先原则进行映射,任务分配、触发事件及映射关系如表3所示。InitTask实现模块的完全初始化,在程序开始运行时执行,然后终止任务。为了实现通信功能,需要周期性的调度MainFuncTask。与CAN通信的Runnable需要不断读取和发送信息,设定周期要求短。

配置完RTE生成的代码对应用层的SWC封装了下层的基础软件,并利用下层的基础软件(比如OS,COM等)的功能实现向上层SWC提供运行、组件间通信和生命周期控制,类似于向应用层提供基础软件的接口。RTE将Embedded Coder生成的逻辑代码和ORIENTAIS生成的底层代码无缝连接,在整合过程中只需要将Embedded Coder生成的system.c,system.h 2个文件导入到ORIENTAIS中,然后满足system.c包含Rte_system.h头文件即可。这是因为Rte_system.h头文件定义了Runnable函数和底层部分接口信息。

表3 Runnable到任务的映射

3 试验验证

在试验控制箱中随机控制车灯开关,并通过CAN调试终端更改转向灯闪烁频率参数Flash-Frm。程序中转向灯闪烁频率f=FlashFrm×2× 0.3 s,当FlashFrm=0时,f=0.3 s。从实验结果(图10)可以看出:闪烁频率从1.8 s到0.6 s再到2.4 s的过程中转向灯状态疏密变化明显,与肉眼观察到的转向灯闪烁情况相符合。

图10 实验结果

4 结束语

本文基于AUTOSAR标准详细介绍了汽车电控系统的整个设计流程和代码自动生成技术,并以汽车车灯控制系统为例,通过仿真和实验箱实验验证了生成代码的可用性。采用普华基础软件ORIENTAIS配置BSW各模块,以Matlab/Simulink开发应用层逻辑功能,然后进行代码的无缝连接,很好地完成了AUTOSAR期望的目标,提高了组件重复利用性、软件兼容性、可移植性,缩短了产品开发周期,促进了各生产厂商的产品互通性。

[1]Broy Manfred.Challenges in Automotive Software Engineering[C]//Proceedings International Conference of Software 2006.China:[s.n.],2006:33-42.

[2]Heinecke H.Automotive Open System Architecture-An Industry Wide Initiative to Manage the Complexity of E-merging Automotive E/E Architectures[J].SAE Paper,2004(5):21-42.

[3]AUTOSAR GbR.Layered Software Architecture[EB/OL].[2012-10-12].http://www.autosar.org/download/ R3.2/AUTOSAR_LayeredSoftwareArchitecture.pdf.

[4]AUTOSAR GbR.Methodology[EB/OL].[2012-11-16].http://www.autosar.org/download/R3.2/AUTOSAR_Methodology.pdf.

[5]Kohler A,Reck T.AUTOSAR-Compliant Functional Modeling with MATLAB,Simulink,Stateflow and Real-Time Workshop Embedded Coder of a Serial Comfort Body Controller[C]//MathWorks Automotive Conference.Dearborn:[s.n.],2007.

[6]AUTOSAR GbR.Specification of Applying Simulink to AUTOSAR[EB/OL].[2012-12-19].http:// www.autosar.org/download/R3.2/AUTOSAR_SimulinkStyleguide.pdf.

[7]LONG R S,LI H,PENG W,et al.An approach to optimize intra-ECU communication based on mapping of AUTOSAR runnable entities[C]//International Conference on Embedded Software and Systems.China:[s.n.],2009:138-143.

[8]胡琦,李红,赵民德,等.基于AUTOSAR的电控汽油机ECU软件设计与实现[J].浙江大学学报:工学版,2011,29(6):1119-1123.

(责任编辑 刘舸)

Code Generation Technique of Automotive Electronic Control System Based on AUTOSAR

SUN Ying1,WANG Jian-jun2,ZHANG Cheng-rui2
(1.Shandong Heavy Industry Group,Jinan 250014,China;
2.School of Mechanical Engineering,Shandong University,Jinan 250061,China)

The development process of code generation technique of automotive electronic control system conforming to the AUTomotive open software ARchitecture(AUTOSAR)is presented.The key points about basic software(BSW)configuration,software component composition,Runnable and logical function design and real time environment(RTE)implementation are discussed in details.The outcomes of system simulation using Simulink and experiment using generated codes on car test bench verify the practicability of generated and merged codes.

AUTomotive open software ARchitecture;automotive electronic control system;code generation

U467

A

1674-8425(2014)03-0033-06

10.3969/j.issn.1674-8425(z).2014.03.007

2014-01-07

孙颖(1967—),女,山东人,高级工程师,主要从事工程机械开发研究。

孙颖,王建俊,张承瑞.基于AUTOSAR的汽车电控系统代码自动生成技术[J].重庆理工大学学报:自然科学版,2014(3):33-38.

format:SUN Ying,WANG Jian-jun,ZHANG Cheng-rui.Code Generation Technique of Automotive Electronic Control System Based on AUTOSAR[J].Journal of Chongqing University of Technology:Natural Science,2014 (3):33-38.

猜你喜欢

代码生成转向灯车灯
Lustre语言可信代码生成器研究进展
南非的车灯会说话
一种基于模型和模板融合的自动代码生成方法
基于MoldFlow的汽车转向灯支架注射模浇口优化设计
代码生成技术在软件开发中的应用
STP与无线调车灯显设备结合技术探讨
基于单片机的汽车LED转向灯控制研究
基于XML的代码自动生成工具
瑞风商务车危险报警灯与转向灯为何不亮
车灯:“明眸”方能“善睐”