贾利,张维彪,杨薇,智海峰,刘涛,况涪洪,肖维
(中国北方发动机研究所(天津),天津 300400)
发动机控制系统Simulink模型中MAP模块的开发
贾利,张维彪,杨薇,智海峰,刘涛,况涪洪,肖维
(中国北方发动机研究所(天津),天津 300400)
针对发动机控制系统Simulink模型自动生成的代码不支持MAP标定和烧写的问题,开发了基于S函数的MAP模块。建立使用该MAP模块的发动机模型并生成基于飞思卡尔MPC5634M单片机的控制代码。发动机台架试验结果证明,该MAP模块生成的代码可以实现MAP在线标定和离线烧写功能。
控制单元;代码生成;在线标定
随着代码生成工具的不断发展,基于模型的设计方法被广泛应用于汽车控制系统的开发[1-5]。Matlab/Simulink是在汽车电子控制软件开发领域应用较广泛的基于模型的设计软件,提供了图形化的编程环境,并支持根据模型来生成、测试和配置产品级的C代码[6-13]。通过Simulink模型生成的发动机电子控制软件必须支持发动机匹配标定所需的在线标定和离线烧写功能,才能满足发动机电控系统开发的应用需要[14-15]。目前国内尚缺乏支持上述功能的Matlab/Simulink工具箱以及配套软硬件产品,不能满足产品级的控制器模型开发。因此,开发Simulink模型中支持标定和烧写功能的MAP模块具有切实的应用价值。
S函数是Simulink中系统函数(System Function)的简称,是Simulink提供的用于功能扩展的一种机制。S函数的运作机制与Simulink的仿真流程一致(见图1)。在每个仿真阶段,Simulink内核都会调用S函数中相应的回调方法,执行特定的任务。不同阶段的任务包括:
1) 初始化 在仿真循环运行之前,内核引擎将初始化S函数,包括初始化包含S函数信息的仿真结构体SimStruct、设置输入输出口的信息、设置功能块采样时间、分配存储空间;
2) 计算下一个采样时间 如果模型是可变采样时间步长,那么这一阶段将计算下一个计算时间步长;
图1 S函数的运作流程
3) 计算输出 在这个调用完成后,所有功能块输出端口在当前时间步长下更新完毕;
4) 更新离散状态变量 在这个调用中,功能块进行每个时间步长一次的动作,例如,更新离散状态变量。
上述各阶段中,Simulink内核会调用S函数中相应的回调方法,Simulink规定了这些回调方法的名称和功能,而具体实现则是根据实际需求来编写。
1) 初始化阶段,调用回调方法static void mdlInitializeSizes(SimStruct *S)设置模块的各项参数,如输入、输出、参数、仿真选项等的信息,以及回调方法static void mdlInitializeSampleTimes(SimStruct *S)规定模块的采样时间,如采样时间值等;
2) 计算输出阶段,调用回调方法static void mdlOutputs(SimStruct *S,int_T tid)在每个仿真步长,计算功能块的输出,并将结果保存在S函数输出信号数组;
3) 仿真结束阶段,调用回调方法static void mdlTerminate(SimStruct *S)执行仿真结束的相关操作,如释放分配的内存等,如果不要求进行操作,这个函数可以为空;
4) 代码生成阶段,调用回调方法static void mdlRTW(SimStruct *S)将模型中的参数传递至目标语言编辑器(Target Language Compiler,TLC),用于代码生成。
在代码生成阶段,为了生成所需的代码,还需要编写与S函数配套的 TLC文件。在TLC文件中读取S函数传递至目标语言编辑器的参数,并规定目标语言编辑器生成指定的代码。这些操作被定义在TLC文件中名为%function Outputs(block,system) Output函数中。
MAP可以分为单值MAP、曲线MAP、曲面MAP、一维数组MAP、二维数组MAP等多个类型。不同类型MAP模块的软件不尽相同,但方法和思路是一致的,这里以曲线MAP为例进行MAP模块的软件设计。
曲线MAP模块的功能是根据输入的数值,查询其在曲线MAP的x轴中的位置,进行线性插值得到相应的y轴数值,作为输出。其中,输入为模块的输入信号,输出为模块的输出信号,x轴和y轴为模块的参数,即在Matlab中定义的数值向量。
MAP模块的软件设计,是对S函数中各阶段的回调函数以及TLC文件进行软件设计,使其完成上述功能。首先,在初始化阶段的mdlInitializeSizes回调方法中,设置模块有2个输入参数,不含有连续和离散状态参数,有1个维数为1数据类型与x轴一致的输入信号,有1个维数为1数据类型与y轴一致的输出信号,采样时间个数为1,不含有工作向量,使用默认仿真选项。在mdlInitializeSampleTimes回调方法中,设置模块的仿真步长继承模型的仿真步长。初始化流程(见图2)。
图2 mdlInitializeSizes初始化流程
在计算输出阶段的mdlOutputs回调方法中,读取输入信号的数据类型以及储存值,根据该类型对x轴进行查表和对y轴进行插值,得到输出信号的储存值,再读取输出信号的数据类型,根据该类型计算模块的实际输出。计算输出的流程见图3。
图3 mdlOutputs计算流程
在仿真结束阶段的mdlTerminate回调方法中,不进行操作。在代码生成阶段的mdlRTW回调方法中,将模块参数的数据类型等信息传递至目标语言编辑器用于生成代码。在TLC文件的Outputs函数中,读取模块参数信息,并规定生成函数调用代码,例如当输入、输出信号类型均为无符号32位时,Outputs函数中规定生成代码的语句为:
%
设计完成的曲线MAP模块以及单值MAP模块、曲面MAP模块、一维数组MAP模块、二维数组MAP模块见图4。
图4 MAP模块
使用上述MAP模块和Simulink自带模块,开发柴油-天然气双燃料发动机控制模型(见图5)。
图5 发动机控制模型
通过Simulink自动代码生成,生成基于飞思卡尔MPC5634M单片机的发动机控制代码,并在一台WP10发动机上进行台架试验。
选取发动机工况点1 347 r/min,359 N·m,通过在线标定来调节柴油喷油定时MAP参数,测量发动机排气中污染物NOx排放,结果见图6。可以看出,随着喷油定时MAP参数的改变,发动机缸内燃烧状态随之变化,导致NOx排放变化。证明上述MAP模块生成的代码可以实现MAP在线标定功能。
然后使用数据烧写工具将发动机性能优化后的MAP烧写至单片机中,再次进行试验,发动机性能参数与在线标定时一致,说明烧写的MAP数据与在线标定的MAP数据相同。证明上述MAP模块生成的代码可以实现MAP离线烧写功能。
图6 NOx排放随喷油定时的变化
在分析Simulink中S函数工作原理的基础上,开发了基于S函数的发动机控制用MAP模块。使
用该MAP模块建立了柴油-天然气发动机控制模型,并通过Simulink自动生成基于飞思卡尔MPC5634M单片机的控制算法代码。使用该控制算法进行了发动机台架试验验证,试验结果证明,该MAP模块生成的代码可以完全实现MAP在线标定和离线烧写功能,满足产品级模型开发的匹配标定,可以用于发动机性能开发,具有切实的应用价值。
[1] 刘巨江.基于模型的高压共轨柴油机扭矩算法研究[D].杭州:浙江大学,2007.
[2] 周广猛,刘瑞林,李骏,等.基于模型的电控发动机标定技术[J].汽车技术,2011(1):1-5.
[3] 宋秦中.高压共轨柴油机控制策略的研究[J].大连:大连理工大学, 2007.
[4] 方烨.基于模型的高压共轨柴油机控制策略研究与台架优化[D].杭州:浙江大学,2017.
[5] 周海涛,闫萍,王新权.电控柴油机平均值模型建模研究[J].柴油机,2010,32(2):12-17.
[6] 姚俊.Simulink建模与仿真算法语言动态仿真[M].西安:西安电子科技大学出版社,2002.
[7] 刘福水,仇滔,刘兴华,等.基于模型的电控柴油机标定技术[J].车用发动机,2005(6):1-4.
[8] 刘孟祥.基于Simulink的柴油机及其控制系统的建模与仿真研究[D].长沙:湖南大学,2001.
[9] 朱婉.基于Simulink的柴油机高压共轨喷油系统建模与仿真[D].合肥:合肥工业大学,2015.
[10] 杨向忠,安锦文,崔文革.嵌入式自动代码生成技术应用研究[J].弹箭与制导学报,2008,28(3):250-253.
[11] 邱宝梅,左文英,王凤娟.基于Simulink/RTW的汽车电子控制系统的研究[J].计算机测量与控制,2011,19(5):1086-1088.
[12] 严雨,单冲.基于Simulink和RTW的底层驱动软件集成开发[M].北京:北京理工大学出版社,2013.
[13] Mathworks.Matlab R2013b Help[M].[S.l.]:[s.n.],2013.
[14] 王科杰.基于模型的高压共轨柴油机标定技术研究[D].杭州:浙江大学,2016.
[15] 孟长江,褚全红,张炜,等.CCP协议在发动机匹配标定平台的应用[J].现代车用动力,2008(1):34-38.
DevelopmentofMAPModuleinSimulinkModelofEngineControlSystem
JIA Li,ZHANG Weibiao,YANG Wei,ZHI Haifeng,LIU Tao,KUANG Fuhong,XIAO Wei
(China North Engine Research Institute(Tianjin),Tianjin 300400,China)
The codes of Simulink model for engine control system could not support the calibration and programming of MAP and MAP module based on S-function was hence developed. Then the corresponding engine model was built and the control codes applied to Freescale MPC5634M was generated. The test results show that the MAP module supports the online calibration and offline programming.
control unit;code generation;online calibration
袁晓燕]
2017-05-18;
2017-12-12
贾利(1979—),男,副研究员,本科,主要研究方向发动机控制策略和算法及HIL测试等;jiali7901@163.com。
10.3969/j.issn.1001-2222.2017.06.012
TP211
B
1001-2222(2017)06-0062-03