基于Scilab/Linux RTAI的探空火箭半实物仿真平台研究①

2020-11-13 07:15李勇波崔建鹏
固体火箭技术 2020年5期
关键词:实时性驱动程序内核

李勇波,潘 涛,崔建鹏,张 辉

(中国航天科技集团有限公司四院四十一所,西安 710025)

0 引言

半实物仿真,又称“硬件在环仿真”,是指将实物部件引入仿真回路,取代相应部分的数学模型,降低了建模难度,也克服了干扰因素的影响。半实物仿真技术是在二战后逐渐发展起来的,它结合了数字仿真的灵活性和物理仿真的精确性,以成本低、见效快、可信度高的优势[1],广泛应用于航空航天、控制系统、武器系统等领域。

目前,国内外主流的半实物仿真平台[2-7]主要有dSPACE、RT-LAB、RTX、xPCTarget等,它们都是利用商业软件Matlab/Simulink进行前端建模,在Windows系统下通过RTW自动代码生成技术将模型编译为可在Vxworks/QNX等实时环境运行的可执行代码。这些平台固然性能强大、接口丰富、稳定性高,但存在着源代码封闭、定制性不强、核心功能更改难度大、软件升级成本高等不足。近年来,Linux系统发展迅速,其拥有开放源码、性能稳定、内核可裁剪等优势,但实时性不尽人意,不能直接用于半实物仿真,需要对其进行实时化改进。

本文研究了在Linux系统下利用开源软件Scilab/Xcos[8]进行前端建模,采用双内核实时化方案搭建Linux RTAI[9]实时运行环境,通过RTAI-LAB[10]将数学模型编译为实时代码,并下载到搭建好的Linux RTAI实时环境下运行,完成某型探空火箭半实物仿真试验的技术方案。所用软件均为开源软件,源码开放可修改且硬件成本低,降低了半实物仿真平台开发成本,满足半实物仿真试验的实时性和可靠性要求,且二次开发性强,不局限于某一种弹箭。

1 半实物仿真系统方案

基于Scilab/Linux RTAI的某型探空火箭半实物仿真系统结构如图1所示,包含综控计算机、仿真计算机、接口计算机、仿真设备、VMIC光纤反射内存实时网络、参试实物部件等,主要部件功能如下:综控计算机是整个仿真系统的控制中心,负责仿真节点资源配置、状态监控和数据存储,及试验后数据分析。

图1 基于Scilab/Linux RTAI的探空火箭半实物仿真系统结构

仿真计算机是本文研究的重点,采用上下层结构,上层的Scilab/Xcos软件和Xrtailab软件运行于Linux环境,分别负责模型的建立和变量监控、参数在线调整;根据仿真模型自动生成的实时代码运行于下层Linux RTAI实时环境,主要负责火箭仿真模型的实时解算及分离信号输出、舵机反馈信号采集、时序信号采集等实时I/O处理。

接口计算机负责参试实物部件的非实时信号及CAN总线、串口通信流信号处理,如模拟测发控、仿真数据注入、遥测信息解析等,并通过VMIC网络实现仿真模型与参试部件的信息交互。

仿真设备包括三轴转台、五轴转台、舵机负载台等,负责通过VMIC网络读取火箭仿真模型实时解算结果,为火箭测量装置和执行机构提供真实物理环境。

VMIC光纤反射内存网络负责实现综控计算机、仿真计算机、接口计算机和仿真设备之间的信息交互,具有通信时延小、共享内存空间大、传输速率高、抗干扰性强的特点。

参试实物部件主要有舵机、飞控计算机、惯性测量组件、GPS等。

2 仿真平台设计方案

为减少各节点数据丢失,本文采用Linux RTAI实时运行环境+VMIC网络传输模式,VMIC的传输延迟小于700 ns,远小于仿真步长1 ms,最大程度减少了数据丢失。

2.1 仿真建模环境

CACSD(Computer Aided Control System Design)软件采用Scilab/Xcos,Scilab是一种由法国学者开发的类似于Matlab的开源软件,Xcos是Scilab的一个工具箱,是Simulink等进行图形化动态系统建模与仿真的唯一开源代替软件。半实物仿真是Xcos在模块开发和代码生成的主要应用,可通过为接口控制和测量装置创建特殊的Xcos模块以进行半实物仿真。用户可自行开发所需模块并加载到Xcos模块库或下载互联网其他用户的共享模块。

2.2 RTAI自动化代码生成技术

RTAI(Real-time application interface)是一套用来写实时应用程序的系统界面。RTAI-LAB是以RTAI为基础开发的一套开源实时控制系统工具链,提供了RTAI和数据采集卡的接口。

根据接口模块的特性自定义RTAI接口模块;将模块拖放到利用Scilab/Xcos建立的火箭数学仿真模型中,利用RTAI-LAB将模型编译成可在Linux RTAI实时运行环境执行的实时代码,这些代码相当于实时运行环境的一个实时任务,原理如图2所示。

图2 仿真计算机结构及原理

2.3 Linux RTAI实时运行环境

由于仿真过程中有实物接入仿真回路,故仿真时钟必须与真实物理时钟同步,为此需要构建Linux RTAI实时运行环境。

2.3.1 双内核实时化方案

双内核实时化方案即在普通Linux系统的最底层增加一层RTAI实时核心,实质是把Linux内核当作一个运行在RTAI内核的普通进程,其软件架构如图3所示。通过Adeos[11]来建立RTAI和Linux的硬件共享环境,Adeos是在底层硬件与操作系统之间插入的Linux内核补丁。

图3 Linux RTAI软件架构

在Linux RTAI软件架构中,RTAI是Adeos的上层域,作为根域的Linux优先级低于RTAI,故当有实时任务产生时,Adeos先调度RTAI处理该任务,Linux根域仅在RTAI没有实时任务或中断需要处理时才会发生,从而保障Linux RTAI双核实时运行环境的实时性。

2.3.2 Linux RTAI实时运行环境的搭建

搭建Linux RTAI实时运行环境的具体步骤如下:

(1)准备工作

下载Scilab 5.5.2版本,RTAI 5.2版本,对RTAI内核进行解压,查看其所支持的Linux Kernel版本并在官网下载,本文选用的Linux Kernel版本为4.9.135。

(2)双内核法建立Linux RTAI实时运行环境

主要包括6步,分别是解压Linux内核、给Linux内核打补丁、配置Linux内核、编译安装Linux内核、配置安装RTAI、安装RTAI-Lab相关插件。关键代码为:

# tar-jxvf linux-4.9.135.tar.gz

# make mrproper

# cd/usr/src/linux-4.9.135

# patch-Npl

# make menuconfig

# make-j4

# make install

# make modules_install

(3)实时运行环境的测试

采用testsuite工具测试所搭建实时环境的内核空间的中断延迟时间、调度器延迟时间、调度器运行延迟时间等实时性指标[12],如表1所示。

由表1可知,搭建的Linux RTAI双核实时环境的最大时延为17 μs左右,远小于普通Linux系统的28 ms[13],降低了3个数量级,相比Vxworks和Xenomai 也有所缩短,可满足实时仿真的需求。

表1 Linux RTAI实时运行环境实时性测试

2.4 实时接口技术

本节开发了VMIC的实时驱动程序和实时接口模块,实时驱动程序用于满足模型与实物间通信对驱动实时性的要求,实时接口模块用于VMIC和数学模型之间的通信[14]。

2.4.1 驱动程序和接口模块在系统中的作用

由于普通Linux驱动的实时性较差,故自行开发了RTAI下的VMIC驱动程序,VMIC驱动程序运行于Linux RTAI实时环境;RTAI自带的RTAI-lib模块库可分为两类,一类是Scilab realtime lib库,如可在实时环境下运行的增益模块gain模块等;另一类是RTAI realtime lib库,如示波器模块rtai_scope等,但缺少VMIC反射内存卡与模型通信的模块,故自行开发了VMIC实时接口模块。二者在系统中的位置见图4。

图4 驱动程序和实时接口模块在系统中的作用

2.4.2 VMIC驱动程序的开发

驱动程序包括头文件和主程序,头文件中声明了驱动程序用到的重要变量,加载了主函数调用的动态模块库等。本文主要定义了3个头文件:(1)rtvmic.h:包括数据偏移量offset、数据长度length及缓冲区buffer;(2)rtvmic_driver.h:定义了变量的数据类型及rtvmic设备信息的结构体等;(3)rtvmic_5565_pci.h:VMIC卡节点的最大最小地址、DMA通道、扩展地址、扩展中断等。

与用户访问内存不同,访问VMIC卡分两步,第一步是在Linux层,从PCI总线上寻找VMIC设备,通过编写rt_vmic_5565_pci.c( )函数来实现;第二步是读取设备信息,进行RTAI层面的配置,通过编写rtvmic_driver.c( )函数来实现。

(1)rt_vmic_5565_pci.c:定义了静态结构体变量rt_ge_5565_pci_table{ }描述VMIC设备信息,定义了GetPciSpaceSize( )函数寻找PCI总线空间大小,定义了rt_ge_5565_pci_probe( )函数读取VMIC板上的PCI物理地址及寄存器状态;定义了rt_ge_5565_pci_remove( )函数清除内存的数据。

(2)rtvmic_driver.c:包括5个函数,分别是rt_vmic_open( )函数用于打开VMIC设备;rt_vmic_init( )函数用于初始化驱动;rt_vmic_ioctrl( )函数用于控制I/O信号流,写入是将信号流写入buffer中,读取是从buffer中读取信号流;rt_vmic_exit( )函数用于退出驱动;rt_vmic_close( )用于关闭设备。

2.4.3 VMIC实时接口模块的开发

实时接口模块是Xcos模型的一部分,通过设备文件实现用户空间与内核空间的通信。自定义接口模块包括自定义接口函数和自定义计算函数。

接口函数作为用户空间与Scilab的交互界面,用于处理用户接口,指定模块外观与类型、数据和事件的输入输出个数等,必须用Scilab语言编写,返回值依赖于输入标记job,以VMIC-PCI5565读操作为例,其接口函数格式如下:

function[x,y,typ]=vmic_read_pci5565(job,arg1,arg2)

计算函数定义了模块在仿真过程中的行为,以不同的方式被Xcos调用,主要包括初始化(flag=4)、输出更新(flag=1)、结束(flag=5)等,flag标记了计算函数必须完成的任务。采用C语言编写,以VMIC-PCI5565读操作为例,主函数中定义了init函数、inout函数、end函数。计算函数格式如下:

#include“scicos_block.h”

#include “rtmain.h”

void vmic_read_pci5565(scicos block *block, int flag) init(block); inout(block); end(block); }

接口函数和计算函数定义完毕后,将其封装成模块,如图5所示。当模型运行时,实时接口模块调用RTAI下VMIC驱动程序,当加载VMIC的驱动程序与设备文件关联后,接口模块就可以通过此设备文件对VMIC反射内存卡进行操作。

图5 自定义VMCI-PCI5565接口模块

2.5 节点同步方式和同步精度

由综控计算机负责更新全局时钟,仿真计算机、仿真设备等节点在每个定时周期内读全局时钟,并以此更新各节点时钟。仿真初始化时,全局时钟和各节点时钟均置零;仿真开始后,全局时钟由综控计算机累加仿真步长,节点时钟检测到全局时钟不为零时就开始累计仿真步长;由综控计算机进行判断,当每100 s全局时钟和节点时钟相差大于2 ms时,停止仿真。

2.6 仿真模型监控

在RTAI的另一个工具包Xrtailab中利用RTAI-LAB提供的RTAI-SCOPE等变量监视模块,对仿真模型进行可视化监控和在线调参,如图6所示。建模主机和目标机在同一仿真计算机上,故Xrtailab与目标机的通信方式采用本地通信。

图6 Xrtailab监控界面

2.7 硬件方案

考虑到计算性能和速度及I/O接口的扩展能力,仿真计算机采用研华工控机,四核,主频2.5 GHz。仿真平台提供4路模拟量采集输入、1路开关信号采集、1路开关信号输出和2路RS422串口通信接口。PCI数据采集卡采用NI-PCI6229,32通道16位最高100 kHz采样,16路隔离DI和16路隔离DO;光纤反射内存卡采用VMIC-PCI5565,内存为256 M。

3 半实物仿真试验与分析

3.1 仿真平台实时性能

半实物仿真平台的实时性直接影响仿真时序控制和仿真结果的置信度,实时性能参数有定时精度、单步仿真耗时和时钟漂移量[15]。对本文搭建的平台进行实时性测试,得到实时性能参数如图7所示。

( Simulation step size

由图7可见,仅有小概率出现的几次单个仿真步长大于1 ms且不超过1.05 ms;单步仿真耗时不超过0.2 ms,相比文献[15]的0.35 ms有所缩短,严格小于设定的1 ms;时钟漂移最大为25 μs,偏差率满足要求。以上3个实时性能参数表明本文设计的半实物仿真平台可以满足仿真步长为1 ms的半实物仿真的实时性要求,实时性良好。

3.2 仿真结果

分别利用本文设计的半实物仿真平台和现有的Simulink/RT-LAB半实物仿真平台对同一型号探空火箭进行半实物仿真试验,仿真结果对比曲线见图8。

由图8可见,该仿真平台的半实物仿真结果与Simulink/RT-LAB仿真平台下的仿真结果一致性很好,验证了所搭建的半实物仿真平台的可靠性和稳定性。

( Range and altitude

4 结论

(1)为保证整个半实物仿真平台的实时性,采用双内核实时化方案搭建了Linux RTAI双核实时运行环境作为实时代码的运行环境,并测试了其实时性能,结果表明其最大时延相比普通Linux系统降低了三个数量级。

(2)为保证硬件设备与模型实时信息交流的实时性,开发了VMIC-PCI5565的驱动程序和实时接口模块,实现了外部硬件和内部模型的实时交互。

(3)测试了整个半实物仿真系统的实时性,实时性相对其他平台有所提升;成功进行了某型探空火箭的半实物仿真试验,仿真结果相比Simulink/RT-LAB平台一致性很好。

本文搭建的半实物仿真平台主要有以下优势和特点:(1)实时性有所提升,单步仿真耗时不超过0.2 ms;(2)所用软件均为开源软件,扩展性强、源代码开放可修改、开发成本低;(3)有良好的二次开发能力,针对但不局限于某一种弹箭,可利用RTAI开源特性,开发相关实时接口模块和驱动程序,添加相应支持模块即可扩展仿真平台的应用范围。可为火箭、导弹的半实物仿真试验提供一种新平台,对火箭、导弹的研制和试验有重要的价值。

猜你喜欢
实时性驱动程序内核
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
避免Windows系统更新反复安装显示驱动
阻止Windows Update更新驱动程序
微软发布新Edge浏览器预览版下载换装Chrome内核
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
基于B/S的实时用户行为检测管理系统设计与实现
妙用鼠标驱动
驱动程序更新与推荐