基于Simulink的模型调度系统设计及应用

时间:2022-10-16 06:19:33

基于Simulink的模型调度系统设计及应用

摘 要:本系统采用Excel表格管理任务函数,通过M脚本文件读取调度信息生成Simulink调度模型,控制集成模型中各个模型的执行周期、执行顺序及代码生成结构。在实际ECU开发中的应用表明,此系统既能节省模型搭建时间,也可以有效提高代码生成和集成效率,确保功能运行的正确性。

关键词:任务函数;调度模型;执行周期;执行顺序;代码生成

中图分类号:U464.12 文献标识码:A 文章编号:1005-2550(2016)02-0065-05

Design and Application of Model Scheduling System Based on Simulink

LIU Shao-fei , WANG Wei

( BAIC Motor Powertrain Co.,Ltd, Beijing 101108,China )

Abstract: The system adopts Excel table to manage task function, reads scheduling information to generate simulink scheduling model by M script file and controls the execute periods, execute order and code generation structure of every model in integrated model. The application of the system in ECU development indicates that it can save the time of model building, improve the efficiency of code generation and integration, and ensure the correctness of functions run.

1 前言

汽车作为机电类产品,电子系统是其重要的组成部分。日益严格的法规及对安全与舒适性的更高要求使得ECU软件越来越复杂[1],采用传统的ECU开发流程已经难以完成现代控制系统的设计[2],基于模型的设计方法克服了传统开发平台的缺陷[3,4],保证了设计和开发的正确性,缩短了开发周期。

模型调度系统在基于模型的软件开发过程中占据着重要地位,精确控制着整个功能软件的运行。本文采用Simulink建模工具,通过M脚本文件将调度信息表与模型关联,自动生成调度模型,调度整个集成模型,即可用于早期模型级别的仿真测试,保证控制算法完整可靠,也可控制后期的代码生成结构,大大提高了ECU的开发效率。

2 模型调度系统方案设计

本系统除初始化任务外,模型任务调度分为同步任务和时间任务。对同步任务,本调度系统方案是将发动机转速转化为角度步长(精度由系统仿真步长决定,可任意调节),通过角度累加来模拟曲轴转角(0到720度),与目标角度比较判断是否达到相应角度,从而触发相应同步任务(S0或S1);而对时间任务,则是通过计数器来实现。此系统用来实现集成模型的调度,主要由基本输入参数、任务触发器(角度步长计算、角度累加、任务触发)、任务列表、任务分配和模型集成组成,虚线框表示ECU软件开发的其他环节,通过充分测试的模型会与基础软件集成,最终生成的可执行文件会下载到ECU中。

该调度系统是通过Simulink建模实现,将发动机相关参数(发动机转速,即每分钟曲轴转过的角度,可以反映不同时刻,发动机处于哪个工作行程,进气行程、压缩行程、做功行程,还是排气行程,从而应该控制哪些任务执行,如喷油或点火)和系统参数(角度位置定义和仿真步长)作为系统输入,从发动机转速中提取发动机位置信息,从而触发相应任务,本系统针对的是四缸发动机,对于其他缸数发动机只需做少量修改即可。

2.1 任务触发器

设计出的任务触发器如下图所示。

1、基本输入参数

(1)发动机转速

发动机转速可以是定值,也可以是实时变化的量。

(2)同步标志位S0

曲轴缺齿后第二个齿的下降沿为第一个S0(此位置也定义为系统0点),之后每间隔180度会出现一个S0。

(3)同步标志位S1

曲轴缺齿后第二十二个齿的下降沿为第一个S1,之后每间隔180度会出现一个S1。

(4)系统仿真步长dT

系统运行周期,该参数决定着整个系统的精度,可以任意调节。

2、任务触发器

(1)角度步长计算

将发动机转速(1/min)转化为每秒转过的角度,再乘以系统仿真步长,便得到角度步长。

(2)角度累加器

针对于四缸GDI发动机,一个工作循环(进气、压缩、做功、排气),曲轴转两圈,即720度[5]。此部分通过角度累加器实现,初始值默认为0度,将角度步长(随发动机转速的变化而变化)累加,累加值达到720度后,将累加器重置为0度,重新累加,周而复始,这样就可以模拟实际曲轴转角。

(3)任务触发

触发的任务类型包含三类:

初始化任务:模拟ECU上电初始化,模型运行第一步触发该任务,之后不再执行;

同步任务:包括S0和S1任务,S0对应的触发角度为0度、180度、360度和540度,S1任务对应的触发角度为120度、300度、480度和660度,同步任务是通过判断上一个执行周期曲轴转角到当前曲轴转角是否覆盖目标角度来决定是否触发的。同步任务主要针对于对发动机同步角度要求较高的任务,如喷油、点火,通过同步任务调度可以实现发动机的精确喷油和点火。

时间任务:主要包含1 ms、10 ms、20 ms、50 ms、100 ms和200 ms任务,如果需要,还可以添加其他时间任务,时间任务是通过计数器来实现,每个时间任务对应一个计数器,计数器以系统仿真步长累加,当达到相应时间时,触发该时间任务,并将计数器重置为0,用于该任务的下一次触发。时间任务主要针对于那些对同步角度无要求而对时间周期要求较高的任务,如传感器信号采集,节气门控制等。

2.2 任务分配

根据发动机控制需求,将不同任务函数按照先后顺序分别列于相应任务的Excel.Sheet中,如图3所示,这些文件包含了整个控制系统模型的任务调度信息。

任务函数列表与集成模型中的任务函数(模块)是一一对应的,按照任务类型和优先级进行了分类,放在不同的Excel.Sheet中,通过M脚本文件可以将任务函数与模型中对应的任务函数(模块)触发信号相关联,当集成模型中的任务函数(模块)发生变化时,通过修改Excel中的任务函数列表,运行M脚本文件,模型中的任务触发信号会自动更新,与需要集成的模型自动对应。

2.3 Simulink调度系统模型

设计出的调度系统模型分为两部分:任务触发器和任务分配器,如下图所示:

(1)任务触发器

任务触发器内部结构分为两种,一种用于模型级别的仿真测试,另一种用于代码生成,两种结构之间通过脚本文件可以自动替换。

(左:用于模型测试;右:用于代码生成)

(2)任务分配器

任务分配器是根据调度信息表中的任务函数类型及执行顺序生成的模型调度触发信号。

(左:分配器结构;右:其中200 ms任务的分配)

3 模型调度系统在ECU软件开发中的应用

3.1 模型集成与测试

集成模型中的子模块是按照任务类型区分的,每个任务子模块与调度信息表中的任务函数列表一一对应,也就是和任务触发信号是一一对应的,每个任务子模块的触发信号从任务触发信号中选取(通过调度信息表和M脚本文件已经在调度系统模型中自动生成)。模型的调度机制模拟的是底层操作系统任务调度机制,集成模型加上调度后,运行机制与底层实际代码运行机制更接近,这样模型的测试会更准确,更充分。

以GDI发动机控制系统为例,集成模型包含调度模型(任务触发和任务分配)和被调度模型(包括:发动机系统模型、扭矩模型、空气模型、喷油模型、点火模型及与底层驱动之间的接口模型)。在模型级别测试模型时,将发动机转速作为调度模型的输入,再将调度信息列表中与被调度模型一一对应的函数通过M脚本文件自动生成调模型的调度信息,用于测试时的模型调度。

被调度模型如下图所示(以其中的一个点火模型为例)。

生成调度后,给定集成模型输入目标数据,可以测试整个集成模型,以点火角计算模型为例,仿真测试结果如图10所示:

3.2 模型代码生成

对集成的每个任务子模块代码生成项进行了设置,生成的代码,会按照任务类型区分开,同一种任务类型的函数会按照执行顺序生成到同一个文件中,便于后期的代码集成与测试。如图11所示,所有200 ms任务函数按照执行顺序生成到Task_200 ms函数(或文件)中。

3.3 系统集成与测试

目前此模型调度系统已经应用到了ECU软件开发中,与应用软件、基础软件等相关文件一同集成到了一键生成工具中,如图12所示:

利用一键生成工具,可以将所有文件整合直接生成可执行文件,下载到ECU开发板中进行HIL或台架测试。

图13~图15是自主开发的ECU台架测试中爆震控制的测试结果,通过爆震传感器检测缸体振动情况,当振动能量达到一定阈值后,ECU会检测到爆震,并进行点火角推迟,当爆震消失后,点火角推迟量会逐渐恢复到0。

4 结束语

本文设计的模型调度系统通过Excel表格管理任务调度信息,方便直观,通过M脚本文件实现了调度信息与调度模型的关联,模型调度信息自动生成,节省了模型搭建与修改时间,并能够控制代码生成结构,使代码更优化,集成效率更高。在实际ECU开发中的应用表明,利用该系统开发的功能运行正确可靠,能够满足发动机精确控制的要求。

参考文献:

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

[2] 赵彦斌,钟再敏. 基于代码自动生成技术的汽车电子实时控制软件开发[J]. 计算辅助工程,2008,(03):36~40.

[3] 邱宝梅. 基于Simulink/RTW的汽车电子控制系统的研究[J]. 计算机测量与控制,2011,(05):1086~1088.

[4] 张德丰. MATLAB/Simulink建模与仿真实例精讲[M]. 北京:机械工业出版社,2010.

[5] 魏春源 译. 汽车工程手册[M]. 北京: 北京理工大学出版社,2008.

上一篇:浅析“孩子劳动能力的培养” 下一篇:如何打造高考英语听力高效课堂