本文展示了如何用GCKontrol和GCAir实现半实物仿真。我们首先简单介绍一下半实物仿真或硬件在环HiL (Hardware-in-Loop)的概念和用途。
HiL是一种控制器测试方法。控制器是实物,被控对象是一个实时仿真模型。通过实时仿真机的硬件板卡、I/O接口与被测对象(控制器)连接,对被测对象进行全方面的、系统的测试。从安全性、可行性和合理的成本上考虑,HiL硬件在环仿真测试已经成为开发流程中非常重要的一环。这个技术在航空航天汽车等领域是一个很标准的应用。
本实例将GCKontrol建模、GCAir模型集成、GCAir实时仿真机和硬件板卡相结合,完成了从建模到硬件输出的完整过程,并验证了仿真过程的实时性。工程总体示意图如下:
其中GCKontrol用于搭建模型,该工程模型可视为一个独立的模块,可以生成FMU运行到GCAir、进行半实物仿真,在实时仿真机上基于工业总线的板卡配置,与被测硬件连接,可进行硬件在环(HiL)测试。
本实例以GCKontrol的涡轴发动机工程为基础,在其中加入PWM方波生成器,使得该系统工程在每个步长运算时会运行一次PWM波。在此基础上将工程模型导出为FMU,将该FMU导入GCAir工程,然后进行硬件端口配置,输出模拟量及数字量。最后在工程运行时,实时仿真机的数字量输出端口与示波器相连,PWM波信号可以在示波器显示,并验证和得到实时性结论。
一、GCKontrol涡轴发动机模型介绍及PWM生成器模块加入,及导出FMU
GCKontrol涡轴发动机工程模型,由发动机、负载、控制三部分组成,发动机系统模块、控制系统模块、负载系统模块;同时在该模型中加入PWM生成器,总体工程如下图所示:
在该模型中有一个输入量,三个输出量,其对应的含义分别为:
输入量:speed_set为发动机的设定转速,该数据在控制模块。
输出量:speed_load为发动机实际转速,该数据在负载模块。
输出量:fuel_flow为发动机燃油量,该数据在控制模块。
输出量:out_pwm为PWM生成器的数据,该数据在PWM方波模块。
注意:在加入PWM生成器模块时,需要把频率和副值设为全局参数,以在后期导入GCAir后能对这两个参数进行调节。
基于以上的GCKontrol工程的输入输出设定,导出工程的FMU。
二、将FMU导入GCAir工程,进行参数设定及输出端口配置
GCAir工程中第一个虚拟子系统用于导入涡轴发动机工程的FMU,第二个虚拟子系统用于设为被测硬件。如下图所示:
导入该FMU后,有一个输入量和三个输出量如下表所示
In_speed_set | 设定的飞机发动机目标转速 |
Out_control_speed | 飞机发动机输出的实际转速 |
Out_fuelflow | 控制系统输出的发动机油耗 |
Out_PWM | PWM生成器生成的方波信号 |
由于FMU的输入参数是飞机发动机的目标转速,所以该转速需要给定一个固定值,在该GCAir工程中,采用表达式模块设定,此处设为27(rad/s)。如下图所示:
对FMU的三个输出量做端口配置,以用于和被测硬件进行连接。三个端口配置如下图所示:
对三个输出量与三个输出端口建立连接,如图所示:
三、被测硬件输入端口与硬件板卡绑定
被测硬件子系统需要三个输入,才能与系统模型子系统的三个输出端口建立链接。被测硬件的子系统做如下端口配置,然后对各个端口进行硬件端口绑定。如下图所示:
在编辑硬件连接时,会有半实物仿真机(RTSE)的硬件列表,列出所有硬件及板卡信息。三个输入量中,飞机发动机实际转速和飞机发动机油耗是两个模拟量,PWM生成器的方波信号是数字量(0101010101…)。故选择两个模拟量端口和一个数字量端口。
模拟量的输出量程为设为0~10V电压,故需要将飞机发动机转速和油耗两个物理量转换至0~10V之间,才能在模拟量端口输出。故需要设置增益和偏移,才使模拟量端口输出信号可从示波器观察并被捕捉。
四、用示波器与硬件板卡的端口进行连接,并运行工程,及性能检测对比。
依据被测硬件信息,我们用示波器的正极与数字量输出(DQ)相连,负极接地。在GCAir的2D面板上可以看到涡轴发动机的目标设定转速与实际转速的输出对比,如下图所示:
图10:实时仿真机在GCAir 2D面板输出的涡轴发动机转速(实际值与目标值)实时性能检测与对比:
图12:GCAir配套的Linux实时仿真机(T=0.001秒)性能检测
由性能检测结果-线程实时曲线(秒)可知,在该工程中设定的调度步长(秒)(图中红线),实际每个步长的调度时间(秒)蓝线,蓝线均在红线之下。
结论1:调度周期从0.01秒,0.001秒到0.0001秒,每个调度周期的实际耗时越来越大。由线程实时曲线(秒)可知:
GCAir在个人电脑PC机的Windows系统运行时,在调度周期为0.01秒(图中红线),每个周期实际耗时(图中蓝线)比设定调度周期小。但在0.001秒和0.0001秒调度周期时,每个周期实际耗时(图中蓝线)均高于设定的调度周期(图中红线)。GCAir在配套的Linux实时仿真机运行时,在调度周期为0.01秒, 0.001秒, 0.0001秒(图11,12,13中红线),每个周期实际耗时(图中蓝线)均比设定调度周期小。
故:以上表明GCAir在配套的Linux实时仿真机运行,符合实时性调度。
结论2:由性能检测结果-FMU操作占用的时间(秒)可知:
GCAir在个人电脑PC机的Windows系统运行时,调度周期为0.01秒,0.001秒,0.0001秒时,工程运行总时长分别为67.5秒,62.5秒,59.6秒,均高于调设定的仿真时长30秒。
故:以上表明GCAir在配套的Linux实时仿真机运行,符合实时性调度,且更高效。
五、在示波器捕捉PWM信号并进行周期测量
启动GCAir工程,在半实物仿真机运行,并用示波器与PWM信号输出端口相链,可捕捉如图所示的PWM波,占空比为50%和30%的数字信号输出如图,在GCAir 2D面板可实时显示实时仿真机运算的PWM波,占空比为50%和30%。如下图17~图20。将示波器波形进行精度测量,数字信号输出的时间精度在0.1ms之内。
六、结论:GCAir实时性验证
由示波器测量可知:仿真模型、实时仿真机、硬件处理,均满足了实时性精度,实时性<0.1ms(毫秒),该指标满足大多数控制器测试场景。