张 辉,苏朋军,孙连明,赵立安
(1.中国第一汽车股份有限公司技术中心,吉林 长春 130011;2.北京经纬恒润科技有限公司,北京 100191)
目前汽车技术发展的主要推动力是汽车电子电气技术,国内整车厂(尤其商用车)都在不断地深化电子电气技术在自主车型上的应用。其中,整车厂除了利用供应商资源进行合作开发之外,同时也在建立自主的开发能力。
车身控制器是整车电子电气架构中重要的控制部件,涉及整车电气系统的功能分配、控制逻辑等等,国内外很多整车厂也将车身控制器作为一个重要部件自行开发。开发模式是供应商提供硬件和基础软件,整车厂进行应用层软件开发,并针对不同车型进行产品系列化。尤其在商用车领域,针对商用车车型多、批量小的特点,为了实现零部件的成本最优,需要针对不同车型,设计应用同一款车身控制器产品能应用到尽可能多的车型。
另外针对当前产品开发的模式,充分借鉴国际上流行的基于模型的开发方法,利用现有的建模仿真工具(Matlab/Simulink/Stateflow)直接进行应用软件设计,同时完成仿真测试等,然后利用Matlab自带的代码生成工具(Embedded Coder)生产C代码,结合车身控制器所选芯片的编译器,生成特定的可执行代码,完成在产品上的应用。目前,Matlab工具支持产品级的代码生成,并且已经成为了汽车行业内的标准编程工具。本文也是基于Matlab的使用,开发出针对于商用车的车身控制器应用环境,用于整车厂进行产品软件开发,供给不同的车型使用。
本文提及的商用车车身控制器是针对一汽商用车应用设计的一款产品,硬件资源需求如表1所示。
表1 商用车车身控制器资源需求
表1可以满足当前一汽商用车的全系列车型的资源需求,可以在此基础上进行不同车型应用车身控制器的系列化和平台化。车身控制器部件为24 V系统,用于实现灯光系统(如转向灯、前照灯、雾灯、位置灯和室内灯等)控制、刮水系统控制,各种传感器信号以及开关信号的采集,同时实现底盘CAN、舒适CAN的报文和信号路由,支持标准的UDS诊断,支持CCP标定配置,支持OSEK NM,支持LIN通信功能、BT功能等等。
在硬件设计方案方面,包括主控MCU、信号采集电路、电源管理电路、硬件驱动电路以及CAN、LIN通信电路等。软件由硬件驱动程序、故障诊断协议栈、嵌入式系统软件框架、接口程序以及Matlab/Simulink环境下的一套图形界面构成。通过Matlab/Simulink环境下的图形界面可以配置输入接口模式、输出控制口模式以及系统功能等,在Matlab/Simulink环境下搭建模型,借助RTW Embeded Coder工具将图形界面翻译为C代码,借助Codewarrior IDE及其编译器将C代码翻译为机器码,最终通过BT下载机器码,形成最终产品状态。
车身控制器是整车电子电气架构中非常重要的零部件,主要控制车身上的灯具和电机等负载,同时采集相关的开关以及传感器信号,集中进行信息分析处理,并通过CAN总线进行信息交互。针对商用车车身控制器的结构特点,硬件系统定义如图1所示。
图1 硬件系统定义
根据输入输出资源的要求、数量及性能的定义,选择原Freescale公司的32 bit芯片MPC5604B作为系统CPU,主要的资源包括:主频:64 MHz;Flash :512 Kbyte;RAM :32 Kbyte;EEPROM: 64 Kbyte;CAN:3路;AD(10 bit):36路。
系统的开关量输入提供上拉配置和下拉配置,硬件方案如图2所示。
图2 开关量配置方案
系统的模拟量输入同时提供电压信号输入和电阻信号输入。针对电压信号,硬件方案如图3所示。
系统提供低端驱动输出,按照功能需求选用INFINEON公司的集成式低端输出MOS驱动芯片,驱动电流约1A。硬件方案如图4所示。
图3 电压信号硬件方案
图4 低端驱动硬件方案
系统提供高端驱动输出,同时需要对输出负载的状态进行故障诊断,按照功能需求选用ST公司的智能MOS功率驱动芯片,根据不同的功率大小设置进行系列选型。硬件方案如图5所示。
图5 高端驱动硬件方案
CAN收发器方面选型NXP公司的TJA1042,CAN通信接口电路硬件方案如图6所示。
LIN收发器选型NXP公司的TJA1021,24 V-LIN总线接口电路硬件方案如图7所示。
图6 CAN通信接口电路
图7 LIN通信接口电路
图8 传统的嵌入式软件开发流程
传统的软件开发模式如图8所示,直接在嵌入式芯片上进行算法的设计验证,存在着开发周期长、调试环境不友好等各方面的问题。
而新兴的开发模式如图9所示。借助Matlab仿真工具(Simulink/Stateflow),首先在仿真环境下进行算法的仿真、验证,然后再利用其RTW及Embedded Coder直接将算法模型生成C语言代码,所见即所得,快速、便捷、可靠,本论文也是利用此工具进行实现。将车身控制器所需的底层驱动、I/O输入输出、总线接口通信等接口代码封装成Simulink下面的模型库,可以直接将算法模型和驱动模型连接,为最终产品代码的生成做准备。
图9 新兴的嵌入式软件开发流程
车身控制器的软件总体框架如图10所示,标准通用模块需要供应商开发并封装成Simulink模型库,应用层软件进行设计由整车厂工程师完成,BootLoader部分是实现烧录入车身控制器底层的引导程序,主要负责在上位机生成可执行代码之后,通过Bootloader可以将代码引导入车身控制器内部存储器上,从而实现最新应用代码的更新。
图10 软件总体框架
本文的主要工作就是实现车身控制器各个底层驱动模块程序的设计及封装,然后完成和CPU-MPC5604B编译器的链接,直接实现可执行代码的生成。
GPIO模块,是CPU底层驱动的基本模块。根据功能使用的不同,划分为3个类别。①Digital Input模块:主要用于MCU管脚作为普通I/O功能的输入状态的采集;②Digital Output模块:主要用于MCU管脚作为普通I/O功能输出状态的控制;③PWM Output模块:主要用于MCU管脚配置为EMIOS功能且作为PWM输出功能的控制。
在Simulink中封装接口示例如图11所示。
图11 模型示例(I/O示例)
双击点开GUI配置参数界面如图12所示,可以设置输入、输出、PWM等配置参数,从而实现不同的应用选型。
图12 GPIO接口示例(输入)
AD采集模块主要负责采集模拟量开关或是模拟量传感器信号,其Simulink模型示例如图13所示。
图13 示例模型
把ADC GetValue模块拖到目标模型中,双击打开ADC GetValue模块的配置界面,在Channel项选择目标通道,即可完成不同通道信号采集的设置,如图14所示。
图14 ADC GetValue配置界面
中断控制在车身控制器软件设计中用于休眠唤醒(开关输入唤醒或是传感器唤醒)或是实时性控制(信号触发要求控制立刻响应某个控制功能,或是用它来触发一个Function-Call System模块),如图15所示。
图15 中断控制配置界面
针对外部中断源,需要在GUI中的Ports模块中配置将要控制管脚的参数,主要参数包括:中断来源的管脚(Assignment)、中断的方向属性(Direction)、初始电平属性(Initial Level),如图16所示。
图16 Ports模块配置示例界面
关于CAN总线,MPC5604B共有3个模块:CAN接收模块主要接收数据进行处理,CAN发送模块主要完成CAN的发送功能,以及CAN配置模块。
双击打开GUI界面上的CAN配置模块,选择需要使能的CAN通道,其它参数需要进行配置,如图17所示。
图17 CAN模块配置界面
用户自定义接收模块的用法为:把CAN Receive Fun模块拖到目标模型中,使其触发一个Function-Call Subsystem模块,配置接收的信息,接收信息需要和CAN BUS协议中配置的自定义接收信息一致,如图18所示。
MCU模块主要完成对芯片工作的晶振和系统工作频率进行配置,如图19所示。
除此之外,还需要完成SPI、SCI、定时器、看门狗的应用封装。这些底层驱动程序都是在MCU上进行验证过的代码,确认工作可靠,然后完成在Matlab下面的Simulink模块封装。
图18 CAN Receive Fun示意界面
图19 MCU模块配置示例界面
针对车身控制器的产品开发,除硬件和软件开发环境设计外,还需要通过实际样件的试制、调试和软件测试,实现以下功能:①通过Simnulink进行控制逻辑模型的开发;②在Matlab环境中的RTW工具直接进行C代码生成;③通过CodeWarrior完成针对C代码的编译形成机器码;④通过车身控制器内部的Bootlaoder程序,利用CANape软件实现软件下载。
通过在试验室环境台架的测试验证,整个开发环境实现了预期的功能目标,整个开发过程工作可靠,可以用于产品软件的开发。
本文主要论述基于模型的车身控制器产品设计实现,该车身控制器产品基于Freescale的MPC5604B芯片为平台的完整系统,由硬件驱动程序、故障诊断协议栈、嵌入式系统软件框架和接口程序以及Matlab/Simulink环境下的一套图形界面构成。通过Matlab/Simulink环境下的图形界面,可以配置驱动程序、故障诊断协议栈以及将用户在Matlab/Simulink环境下搭建的模型关联到嵌入式系统软件框架的某个接口,借助RTW Embeded Coder工具将图形界面翻译为C代码,通过BT下载代码。可根据车型功能需求开发逻辑层,灵活地控制输入输出的关系。
通过本文可以快速实现不同车型车身控制器的功能定义、算法仿真以及产品实现,整个过程统一集成在快速原型开发环境内,为用户提供了一个高效的产品平台,为一汽商用车车身控制器的平台化、系列化打下了很好的基础,并取得一定的经济效益成果。
[1] 陈婷,张烈平.基于MATLAB/RTW的实时控制器快速开发方法的研究[J].科学技术与工程,2008(17) :5071-5074.
[2] 余新栓.基于Matlab的STM32软件快速开发方法[J].单片机嵌入式系统应用,2011,11(10):46-48.
[3] 任书明,揭金良,石开强.基于Simulink/Stateflow模型的嵌入式软件开发研究[J].福建电脑,2008(1):79-80.
[4] 张永博,沈勇.基于Simulink 的OSEK嵌入式软件开发方法[J],单片机嵌入式系统应用,2009(5):21-24.