Simulink实时仿真--Desktop Real-Time

时间:2024-04-07 13:04:29

什么是实时仿真

  首先简单介绍一下实时仿真的概念,所谓Real-Time就是指程序运行的时间和真实时间是一致的。比如我们建立一个惯性环节对单位阶跃信号的响应的仿真程序,仿真时间为10秒;而程序很可能几毫秒就运行完,并给出了你计算结果,也就是说这个过程是非实时的。它所耗费的时间却决于模型的复杂程度、计算机性能等因素,因此这个时间对我们来说是不可控的。然而在进行仿真,特别是涉及到硬件的硬件再环仿真(HIL)的时候,我们往往要求程序的响应和真实时间是一致的。举例来说,如果我们建立了一个飞机的动力学模型,现在希望考察它对摇杆操纵的响应情况。如果程序运行的太快或太慢都将导致和摇杆输入量的不匹配,那么计算出来的结果也是没有意义的。所以实时仿真就显得十分重要了。一个程序要实时,包括两层含义:程序不能响应太慢,也就是在一个仿真步长内必须完成一次计算;也不能太快,完成一次计算后还没有到下一个步长就要等待。能进行实时仿真的工具很多,其中Matlab/Simulink可以很方便地实现这一功能。下面介绍一下Simulink的实时仿真功能。

Simulink的实时仿真类型

在Matlab早期的版本中,提供的实时仿真工具称为Real Time WorkShop也就是常常见到的RTW工具箱。现在最新的Matlab把它更名为Simulink Real-Time,并添加了Simulink Desktop Real-Time功能。相比前者,后者使用起来更加简单、方便上手,基本上可以满足一些常见的实时仿真要求。具体地说,Desktop Real-Time可以在一台电脑上完成仿真,而Simulink Real-Time则有宿主机(host)和目标机(target)之分。
Simulink实时仿真--Desktop Real-Time
从性能上讲,Normal模式支持的最高仿真频率为1kHz,即最小仿真步长为0.001;而External模式则最高可达20kHz。本文主要讲Desktop Real-Real,至于另一种功能相对繁琐,以后再写。下面举例说明,如何仿真的具体过程。

如何进行Desktop Real-Time仿真

Normal模式

还以上文中提到的惯性环节对单位阶跃的响应为例,首先在Simulink中建立相关模型,其模型如下图所示
Simulink实时仿真--Desktop Real-Time

可以注意到除了模型必须的模块外,还有一个Real-Time Synchronization模块,它是Desktop Real-Time中用来输出错过的仿真步长的模块。这个需要特别说明,模型中至少应该含有一个实时模块才能在Normal模式下进行实时仿真,否则模型实际上处于FreeRun状态,是非实时的。我们知道上述响应在时域的函数应该为:
Simulink实时仿真--Desktop Real-Time
我们点击工具栏中的设置按钮,进入参数配置页面。
Simulink实时仿真--Desktop Real-Time
这时候可以进行一些参数设置,比如仿真的时间、步长类型、求解器类型等等,这里我们保持默认即可。
Simulink实时仿真--Desktop Real-Time

点击运行我们即可观察到持续10秒的实时的响应过程,最终结果如图所示:
Simulink实时仿真--Desktop Real-Time

以上即为Normal模式下的实时仿真。下面介绍External模式。

External模式

External外部模式下需要进行一些配置。首先是求解器中的仿真步长必须设定为定步长,然后其数值可以选自动也可以手动指定。然后代码生成设置中,选择目标文件为是sldrt.tlc,最后选择在工具栏中把模式改为External,点击运行即可。等待编译完成即开始实时仿真。
Simulink实时仿真--Desktop Real-Time

外部模式下不需要特别加入实时模块,这一点和Normal模式是有区别的。关于Desktop Real-Time就写这些非常基本的内容,以后会继续写实时仿真的相关内容。