段雨昕,赵斌,周敏
(1.中国航天科工集团 第二研究院 北京 100854;2.北京仿真中心 航天系统仿真重点试验室,北京 100854; 3.西北工业大学 航天学院,陕西 西安 710072)
在新军事变革需求的牵引及新技术的推动下,仿真技术迅速发展成为一项通用性、战略性技术,已成为继理论研究和试验研究之后的第3种认识、改造客观世界的重要手段[1]。而半实物仿真是仿真技术的重要组成部分之一。
半实物仿真又称为硬件在回路的仿真[2],指在仿真系统中接入实物以取代相应的数学模型,这样更能体现真实的情况下系统的反应从而获得更为准确的仿真信息。这种仿真试验会把仿真对象的动态特性通过建立数学模型、编程在计算机上运行。同时还需要有相关的模拟生成传感器用于测量环境的各种物理效应。由于有实物在仿真回路中,半实物仿真系统必须实时运行。
半实物仿真计算机的实时性要求很高,仿真实时性对于半实物仿真试验的可信度是至关重要的[3]。目前仿真所用的计算机的型号和种类繁多,有混合计算机和全数字型计算机、PC机、工作站甚至巨型计算机,有通用计算机也有专用计算机。专用仿真计算机在半实物仿真中具有很高的实时性优势,但其造价和维护成本太高,不适合普通试验室作为仿真设备。普通计算机一般运行在Windows系统下,达不到试验所要求的实时运行,因此很多试验室选用Windows+RTX实时系统作为仿真运行环境,获得了很好的实时性效果[4-6]。这样的解决方案具有较高的性价比。但是Windows+RTX实时系统在实际应用以及分布式半实物仿真中也存在中断响应速度不如标称的理想的问题[7]。并且,当采用RTX构建分布式实时仿真系统时,各个实时节点计算机时钟性能的差异会带来时钟同步误差[8]。因此本研究通过计算机并口采集外部高精度定时信号来触发硬中断的方式[9]在仿真环境中实现高精度的定时。测试结果表明,该方法具有很好的实时性,满足半实物仿真实时性的要求。
RTX是美国InterverZero公司开发的基于Windows平台的硬实时系统,它拓展了Windows操作系统内核体系,修改并扩展了整个硬件抽象层(hardware abstraction layer,HAL),实现独立的内核驱动模式,使用RTX的中断管理机制和对实时线程的高速调度策略,形成了与Windows操作系统并列的实时子系统。可以为用户提供优秀的实时控制性能,其高效的可扩展性及稳定性是迄今为止在Windows平台上最优秀的基于软件的实时解决方案。
RTX提供了对中断请求、输入输出、内存的精确控制,以确保实时任务执行时具有100%的可靠性。RTX支持30 kHz的持续中断触发速度,中断服务线程平均延迟小于1 μs。RTX可以利用Windows系统的大量标准的API函数;高效的内存管理机制;以及各种Windows下的通用资源。RTX最高支持1 000个独立的进程,每个进程下可以运行的线程数不受限制。128个优先级可以满足几乎所有用户的编程需要,RTX调度器可以确保线程切换时间保持在0.5~2 μs。RTX的时钟分辨率可以达到0.1 μs,定时器周期最低可以做到100,200,500,1 000 μs[10-12]。
RTX时钟在Win32运行环境下提供3种时钟计时方式,在对比了3种时钟的计时方式和精度差异后,结合本研究的时钟精度要求较高且周期比较确定等技术要求特点,本次选择使用时钟2来完成后续相关试验,并在RTX控制面板里把定时器周期设置为100 μs。图 1为RTX定时程序结构。
在测试中采用的硬件平台和RTX版本为:
CPU type:Intel P4 3 000 MHz。
Memory:2048M DDRII 800。
RTX 8.1。
图1 RTX定时程序流程Fig.1 Flow chart of RTX timer program
考虑到在程序运行过程中直接打印出来的数据存在不同程度的延迟,所以把所有测得数据先保存在内存中,程序运行完成后再统一以文件方式输出,避免了打印的延迟。
RTX内部软时钟定时精度测试分别进行了时长为0.2,1,5 ms定时,每一个时长采集10组数据,每组数据为5 000次定时。表1为经过统计后的定时精度误差结果。
由见表1可以得出,RTX实时子系统本身系统定时周期非常准确,定时器工作稳定性好,时钟抖动在μs级别。
表1 RTX软时钟定时精度误差统计Table 1 Error statistics of RTX timer accuracy
并口是并行端口的简称,采用的是25针D型接头,8位数据同时通过并行线进行传送,这样数据传送速度大大提高。并行接口最初是为打印机设计的接口,但发展到今天,除了打印机以外,几乎所有其他设备也同样可以通过并口连接到PC机上,包括打印机、扫描仪、调制解调器等[13]。
大多数并口都可以检测来自外设的中断信号。外设可以通过使用中断信号通知PC它已做好了接收或者发送一个字节的准备。要使用中断,首先要为并口配置中断请求号(interrupt request,IRQ)。按照惯例,LPT1(line printer,LPT)使用IRQ7,LPT2使用IRQ5。但是很多声卡使用的也是IRQ5,由于系统中的空闲IRQ可能很少,有时IRQ7也被占用了,一些并口容许使用上述2个之外的其他IRQ。可以从设备管理其中查看具体使用的计算机的并口使用的中断号。
本研究中用到的并口针脚如图 2 并口针脚所示,第10针脚nAck信号用于把外部中断送入系统;第23针脚是nAck信号的接地引脚。
图2 并口针脚Fig.2 Stitches of parallel port
标准并行接口使用的3个连续地址是下列地址范围中的一个:3BCh,3BDh,3BEh;378h,379h,37Ah;278h,279h,27Ah;其中的第1个地址是接口的基地址,也叫数据寄存器地址简称接口地址。第2个地址为接口的状态寄存器。最后1个则是控制寄存器地址。
本研究使用的是研华610H工控机,该计算机并口基址为378h,中断号为7。因此数据寄存器的地址为378h,状态寄存器的地址为379h,控制寄存器的地址为37Ah。
并口输出每8bits组成一个字节,每字节能以二进制形式表示十进制中的0~255间的数字。本研究的中断信号将从nAck引脚触发,因此在控制寄存器的第4位要写1才能允许中断从nAck引脚接受,即写入控制端口0x35。
为了保证并口中断信息处理的及时有效,本研究在RTX环境下对并口进行测试,因此要将RTX驱动中并口的硬件驱动更新。
在RTSS和Win32环境中,都是由分配给中断处理线程的优先级决定中断处理函数的优先次序。
当一个中断处理函数被添加到一个特定的中断时,一个线程就会被创建来响应此中断。当中断发生时,中断源被屏蔽;中断信号的线程恢复;并且,如果它的优先级比当前执行的线程的优先级要高,它就会变成当前执行的那个线程。中断处理函数返回以后,中断源取消屏蔽,线程被暂停。
RTSS有12个中断级别。同所有RTAPI调用一样,调用RtAttachInterruptVector()会将RTSS优先级映射到这12个中断级别。即有递增的硬件优先级:0~127。本研究中,为了在理想状态下测试中断响应时间,因此把中断优先级设置为最高的127。
中断定时程序结构如图3所示。其中中断信号由函数发生器产生固定频率的脉冲信号,起到模拟外部时钟信号的作用。信号发生器采用理光DG4162型函数发生器,可以产生高精度的周期性信号如方波、脉冲波等。至此已经可以产生固定周期的稳定的中断信号,由计算机采集并进行数据整理。
图3 并口定时中断程序流程图Fig.3 Flow chart of parallel port timer interruption program
如同RTX内部软时钟定时测试,并口外部硬时钟中断定时测试也在每次中断后,把时钟数据保存在内存中然后以文本文件形式输出以后处理。同样每组数据都记录了大于5 000个中断,处理数据后得出平均误差和方差,结果如表 2所示。
从表2得出采用并口输入硬中断定时的方式具有很好的稳定性,其定时周期的误差也已经达到μs级别。但与表 1对比发现相较RTX软时钟,其误差数据还是偏大,原因将在下一节讨论。
表2 并口中断定时周期误差统计Table 2 Error statistics of parallel port timer
由图4所示,在目前的测试环境下,RTX内部软时钟的定时误差小于并口硬中断定时误差,经分析产生这样的结果可能的原因有:
(1) 使用计算机并口发送和接收数据本身存在较大硬件延迟,这样的延迟可能会导致不稳定的定时周期;
(2) 在运行之前的定时程序时,计算机负载很小,没有能发挥出并口硬中断的优势,应在系统满负荷工作时进行测试。
图4 RTX内部时钟与外部硬中断定时误差对比Fig.4 Error comparisons between RTX timer and external interrupt timer
为了验证是否外部时钟源信号通过并口由计算机接收的延迟比较大而导致,设计了用示波器检测中断延迟的试验进行验证。
3.2.1 RTX下并口中断响应延迟
测试方案如图5所示。示波器的2路信号CH1与CH2分别连接并口中断输出端和信号发生器的输出端,从而能够对比信号发生器产生的脉冲信号的跳变时刻与并口响应中断后输出的一个跳变信号之间的时间差,从而得出并口的中断响应时间。
图5 中断响应延迟测试方案Fig.5 Test scheme of interrupt response delay
信号发生器产生周期1 ms的脉冲波信号,在每一次并口接收到信号后执行中断服务程序,向并口数据位输出一个由高电平向低电平的跳变,经验证延迟普遍在7~9 μs左右。这样的延迟相比于之前测得的时钟定时误差已经相当大了,因此可能是造成定时精度不理想的重要因素。
3.2.2 并口输出延迟
为了研究是否并口的写入写出过程延迟较大,相应的在RTX内部时钟定时的情况下,在其定时器服务程序处也通过并口向示波器输出信号[14],通过示波器观察每个定时周期的时间是否与之前测得的数据一致。经验证,采用1 ms定时周期,其误差在1.5~2 μs波动,相比于之前测试的0.224 μs的平均误差要大。可以证明,并口执行输入输出的过程中存在较大硬件延迟。
上文中所完成的无论并口定时测试还是RTX内部时钟定时测试,都是在系统几乎空载的情况下完成的。而真实的仿真环境还会涉及到复杂的图像处理、大量的数据运算以及频繁的硬盘与内存的读写,在系统资源被大量占用的时候,仿真定时的准确度就会受到很大的影响。此时一个稳定的定时时钟对于仿真系统的可信度是十分重要的。
因此本次试验在真实的仿真程序中进行RTX内部软时钟定时和外部硬时钟定时,分别用示波器观测其实际定时精度,并做出初步评价。
用于试验的仿真程序是实际应用的一个制导算法软件,其中涉及到定时器的使用。这款仿真软件以7.7 ms为时长循环执行周期任务,因此本次试验的所有时钟周期都设置为7.7 ms,以此作为仿真周期任务的定时器。同样在每次定时开始时向并口输出一个高电平以方便在示波器能看出电平跳变,在计算任务结束也就是时钟周期结束之前再输出低电平从而在示波器显示出方波信号。考虑到之前测得的并口1.7 μm的输入输出的延迟相比于7.7 ms的定时周期来讲基本可以忽略,因此直接用示波器观察测试结果是可行的,而不需要处理记录时钟数据。系统稳定运行后对RTX软时钟定时与并口采集硬时钟中断定时对比结果如图6所示。
图6 仿真运行过程中定时误差对比Fig.6 Error comparisons of timer in simulation environment
从图6可以看出,在实际仿真运行环境下,并口硬中断的定时周期比RTX内部软时钟的周期更为稳定,主要原因为系统在空载情况下有足够的资源和响应速度来运行RTX定时程序并做出迅速的响应,但是实际应用中很难有系统空载的情况。当系统实际运行仿真程序时,并口硬中断定时的优势就显现了出来,在定时周期稳定性和响应速度上都有了超越RTX内部时钟的表现。
本文对RTX内部软时钟的定时以及利用并口采集外部硬时钟的周期中断信号定时的相关技术方法进行了方案设计、研究与测试对比。采用并口采集外部硬时钟定时信号的定时方式其精度已经足以满足目前大部分半实物仿真任务需求,而在系统高负荷运行时其表现出相较RTX软时钟更优秀的稳定性,且具有定时周期灵活的特点,最小定时周期也与RTX软时钟的最小定时周期持平。这样的表现也足以肯定该方法可以用于半实物仿真的时钟推进。在未来的工作中可以自行设计外部时钟的触发电路板作为分布式半实物仿真的时钟源进行时钟同步,设计相关算法来补偿并口输入输出延迟,并结合反射内存网[15]使其应用于分布式仿真试验。
[1] 王赟,蔡帆.国外武器装备体系仿真技术综述[J].兵工自动化,2015,34(7):15-20.
WANG Yun,CAI Fan.Review on Foreign Weapon System Simulation Technology[J].Ordnance Industry Automation,2015,34(7):15-20.
[2] 徐德华.实时半实物仿真系统关键技术的研究[D].哈尔滨:哈尔滨工程大学,2005.
XU De-hua.Research on the Key Technologies of Real Time Hardware in the Loop Simulation System[D].Harbin:Harbin Engineering University,2005.
[3] 符文星,孙力,于云峰,等.导弹武器系统分布式半实物仿真系统研究[J].系统仿真学报,2009,21(19):6073-6076.
FU Wen-xing,SUN Li,YU Yun-feng,et al.Distributed Hardware in Loop Simulation System for Missile Weapon System[J].Journal of System Simulation,2009,21(19):6073-6076.
[4] 袁刚,张文杰,亢原平.基于RTX的分布式平台及仿真系统设计与实现[J].计算机仿真,2011,28(9):32-35.
YUAN Gang,ZHANG Wen-jie,KANG Yuan-ping.Design and Realization of Distributed Platform-Level Simulation System Based on RTX[J].Computer Simulation,2011,28(9):32-35.
[5] 周林雪.RTX平台下半实物仿真系统实时性能研究[D].长春:中国科学院长春光学精密机械与物理研究所,2012.
ZHOU Lin-xue.Real-Time Performance of the HIL System Based on RTX[D].Changchun:Changchun Institute of Optics,Fine Mechanics and Physics,Chinese Academy of Sciences,2012.
[6] 刘同栓,郭晓月.RTX在半实物仿真系统中的应用[J].北京:航空精密制造技术,2010,46(4):50-52.
LIU Tong-shuan,GUO Xiao-yue.Hardware-in-the-Loop Simulation System Based on RTX[J].Aviation Precision Manufacturing Technology,2010,46(4):50-52.
[7] 姚建勇,焦宗夏,吴帅,等.RTX在半实物仿真中的时延问题及解决[J].机床与液压,2008,36(12):162-165.
YAO Jian-yong,JIAO Zong-xia,WU Shuai,et al.Analysis and Resolve Method on Time-Delay of RTX in Hardware-In-the-Loop Simulation[J].Machine Tool & Hydraulics,2008,36(12):162-165.
[8] 李强,王民钢.导弹半实物仿真中定时及数据同步问题研究[J].计算机测量与控制,2010,18(1):110-115.
LI Qiang,WANG Min-gang.Research on Time and Data Synchronization in the Hardware-in-the-Loop Simulation for Missile[J].Computer Measurement & Control,2010,18(1):110-115.
[9] 米乾宝.基于RTX的并口实时中断控制系统[J].测控技术,2009,28(2):65-67.
MI Qian-bao.LPT Real-Time Interrupt Control System Based on RTX[J].Measurment & Control Technology,2009,28(2):65-67.
[10] 刘晓川,樊子明.Windows 2000(XP)+RTX的实时性分析与测试[J].舰船电子工程,2007,27(6):135-138.
LIU Xiao-chuan,FAN Zi-ming.Real-Time Analysis and Tests for Windows 2000(XP)+RTX[J].Ship Electronic Engineering,2007,27(6):135-138.
[11] Interval Zero,Inc,RTX help[DB/OL].(2017-03-25)[2009-08-01].https://www.intervalzero.com/library/RTX/WebHelp/RTX_Help.htm.
[12] 黄键,宋晓,薛顺虎.RTX平台下实时仿真系统的设计方法[J].计算机应用与软件,2009,26(6):167-169.
HUANG Jian,SONG Xiao,XUE Shun-hu.Design Method of Real Time Simulation System Based on RTX Platform[J].Computer Applications and Software,2009,26(6):167-169.
[13] Jan Axelson.并行端口大全[M].那怡超,译.北京:中国电力出版社,2001.
Jan Axelson.Parallel Port Synthesis[M]. NA Yi-chao, Translated. Beijing: China Electric Power Press,2001.
[14] 王静,薛武军,任钊.Windows 2000下并口数据采集的驱动设计和实现[J].计算机应用,2003,29(3):6-9.
WANG Jing,XUE Wu-jun,REN Zhao.Design and Implement of Data Acquisition Driver for EPP in Environment of Windows 2000[J].Journal of Computer Applications,2003,29(3):6-9.
[15] 刘志国,刘太阳,王仕成,等.基于实时网络的半实物仿真集成平台研究[J].系统仿真学报,2007,19(15):3425-3427.
LIU Zhi-guo,LIU Tai-yang,WANG Shi-cheng.et al.Research on Hardware-in-the-Loop Simulation Integrated Platform Based on Real-Time Network[J].Journal of System Simulation,2007,19(15):3425-3427.