你目前正在查看 使用TSMaster从零打造车辆控制器HIL实时仿真

使用TSMaster从零打造车辆控制器HIL实时仿真

实时仿真在汽车零部件的开发和测试中占据着重要地位,通常情况下,要实现实时仿真和硬件在环测试,免不了要和NI、Veristand、Dspace等等这些大牌的软件或者硬件产品打交道,这些产品的成本高昂,也有一定的准入门槛,并不利于大面积推广。而TSMaster的出现则打破了这样一个局面。


概述

首先,解释一下实时仿真中的实时性,它不要求仿真速度要有多快,而是对仿真计算任务的返回结果的时刻提出了确定性的要求。比如ECU中的一个任务,它的执行周期是5毫秒,实时性对它的最基本要求便是这个任务必须在当前的5毫秒内执行完毕,而不能推迟到下一个5毫秒周期,这仅仅只是最基本的要求。因为ECU的处理器的计算资源有限,其中有众多不同周期的任务,都需要在指定时间内完成,这就是为何需要使用实时系统来执行仿真任务,实时系统完全模拟了ECU控制器的运行环境。

首先,解释一下实时仿真中的实时性,它不要求仿真速度要有多快,而是对仿真计算任务的返回结果的时刻提出了确定性的要求。比如ECU中的一个任务,它的执行周期是5毫秒,实时性对它的最基本要求便是这个任务必须在当前的5毫秒内执行完毕,而不能推迟到下一个5毫秒周期,这仅仅只是最基本的要求。因为ECU的处理器的计算资源有限,其中有众多不同周期的任务,都需要在指定时间内完成,这就是为何需要使用实时系统来执行仿真任务,实时系统完全模拟了ECU控制器的运行环境。


二、ECU嵌入式代码与TSMaster小程序集成

我们会从零一步步基于TSMaster来搭建ABS算法的实时仿真环境。通过Simulink将ABS的算法自动生成嵌入式代码,将它作为一个小程序运行在TSMaster的实时环境中。我们首先将模型另存,然后需要修改路径,让代码的生成放置在这个新的路径中。随后我们需要在模型上做一些修改让其可以生成嵌入式代码。首先就需要删除示波器等等一系列无用的控件,再删除CarSim的s function,将s function的接口转化为in 和 out。

为了正确的生成嵌入式代码,还需要在代码生成上做一番修改,打开配置,首先是stop time,设置为inf,然后是salvar,再次使用的是定步长,step我们使用了业界通用的5毫秒。接下来来到代码生成的环节,Target file自然是ert,我们还需要转到interface,在这里将continuous time勾上,因为轮缸压力模型中间用到的是传递函数,是连续状态,随后按Ctrl+B生成代码,很快代码就生成完毕了。那么在这份代码中,我们需要将ABS.c.h以及一些列的其他的头文件复制粘贴到TSMaster的小程序的文件夹中间参与编译过程。


三、脱离RT的车辆模型的实时仿真

不论我们的ABS算法是处在TSMaster的小程序中,还是处在真实的ECU硬件中,它的运行必然都需要输入外部环境给它提供的轮速等信号,它的输出也必然要施加到外部的环境中,这里的外部环境就是指整车以及其他的控制器。很明显,我们需要一个整车模型来参与仿真的过程,通常意义上,这个整车模型就是CarSim的RT版本。

基于前面我们对HIL仿真的实时性探讨,我们同样可以使用非RT版本的CarSim,而仅仅通过实时调用CarSim相关的API函数,将整车模型搬到个人电脑上来运行。我们专门为CarSim打造的CarSim Controller,它相当于CarSim的RT版本,具有在个人电脑上高精度的仿真车辆模型的能力。

基于TSMaster的软件平台,我们可以轻易的干预ECU算法中的任意变量。需要说明的是CarSim Controller仅仅是将一个动力学软件CarSim做到实时控制的千万种方法中的一种。基于此原理,同样可以实现Carmaker等等其他动力学软件的实时控制。

四、ECU HIL仿真的具体实施

上面我们介绍了ABS算法仿真和车辆模型的运行,它们的功能并不是简简单单地绘制曲线,搜集运行数据,而是有着更深层次的目的,那就是与外部世界联动,将输入和输出数据完完全全暴露在真实世界中,达到HIL的真正目的——硬件在环。与外部世界交互这个过程可以说十分简单,只需要为此专门设计一个dbc文件,加载TSMaster中,再将系统变量中的内容映射到总线上即可。