你目前正在查看 TSMasterHIL实时仿真系列1-实时仿真原理

TSMasterHIL实时仿真系列1-实时仿真原理

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

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

1、TSMaster的软实时能力

以需要仿真的1毫秒任务为例,此任务1秒内将运行1000次,以TSMaster的能力,可以将此任务的运行频率精确控制在1000赫兹,甚至更高。比如我们将这个报文的周期改为1毫秒,那么我们可以看到这帧报文的频率就变成了1000帧每秒。

 在频率正确的情况下,下一步要做的就是通过数学的方法统计每次任务的时间点的命中情况。例如,在一个任务将要执行的1毫秒时刻的正负20%的时间范围内得以运行完毕,则认为此任务的这一次运行成功命中。整个仿真过程结束后,我们就可以得到一个命中率,比如97%,这意味着平均每100次的任务运行只有3次因为时机的不确定性带来了误差,那么我们完全可以将命中率的大小作为一个评价实时仿真结果与预期结果的相似度的依据。命中率越高,仿真效果越好,这个算法就是TSMaster软件的HIL的基础


2、TSMaster定时功能-参与仿真测试

我们可以打开TSMaster的系统信息窗口,转到诊断信息这一栏,有一个软件性能测试工具,它可以评估TSMaster内置的定时器的性能,默认是8毫秒的定时周期,容忍误差是10%。这意味着定时的偏差极限是0.8毫秒,也就是定时时刻在7.2毫秒到8.8毫秒之内都是可以接受的。

我们可以直接点击“性能评估”按钮,就可以看到实测结果了。中间是实测结果的平均值,左侧是周期的最小平均值,右侧是周期的最大平均值,还附带了一个误差比例为1.%几。

接下来,我们打开任务管理器,可以看到这是我们TSMaster的进程,在5%这样低的误差比例下,TSMaster CPU占用率也是相当低的,这足以说明TSMaster软件本身的优越性能。这意味着使用大多数情况下,使用TSMaster的定时功能就可以直接参与实时仿真,无需再做更多的布置。


3、同星硬件的实时性

我们以一个简单的报文收发的示例来验证一下TSMaster的实时性,首先创建一个全新的工程,我们选择总线测量模板,在这个工程中我们选择TC1005硬件作为我们的软件世界与真实世界的沟通桥梁。

打开通道选择器,选择两个TC1005的通道,在此之前这两个通道已经通过CAN线互相连接在一起。这就意味着我们在其中一个通道上发送数据,另一个通道就可以接收到。

接着我们启动仿真,打开发送窗口发送一条报文,选择5毫秒的周期,也就是1秒发送200帧,可以看到TRACE窗口上面帧率是200,然后切换到图形窗口,添加帧率统计的系统变量,可以看到帧率也是在200上下,变化幅度很小。

当然这只是软件层面上的帧率统计。接下来我们看看现实世界是否相同。需要使用示波器来观察报文统计帧的频率和误差,在这里我们已经准备好了PicoScope。在此之前这个示波器的通道1已经链接到CAN总线上,且测量的是差分信号,也就是表笔,接CAN高地接CAN低。

我们将尺度缩放到5毫秒1格,可以看到持续变化的波形,接着我们设置一个简单触发,触发点放在第一个格子上,我们可以看到在每一个格子的虚线处都有一帧报文,这就意味着我们此时的软件在尽量的保证报文出现在每一个5毫秒的一个间隔上。

接着我们测量频率,测量频率需要保证的是有足够的采样范围,我们换到10毫秒1格,那么可以看到基本上一个格子中间有两帧报文,在总体情况下保证了200帧每秒的一个频率范围。那么我们在这个时候增加测量,可以看到这个时候的频率是200赫兹,和我们软件上的帧率是完全相符的。这也就验证了TSMaster软件的一个实时性。基于这样的实时性,我们就可以通过操纵总线数据发送的方法来执行实时仿真,甚至是HIL仿真。