论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc

上传人:laozhun 文档编号:2387669 上传时间:2023-02-17 格式:DOC 页数:6 大小:648.50KB
返回 下载 相关 举报
论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc_第1页
第1页 / 共6页
论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc_第2页
第2页 / 共6页
论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc_第3页
第3页 / 共6页
论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc_第4页
第4页 / 共6页
论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc》由会员分享,可在线阅读,更多相关《论文(设计)基于多线程MVC 模式的航电仿真系统软件设计.doc(6页珍藏版)》请在三一办公上搜索。

1、基于多线程MVC模式的航电仿真系统软件设计熊鹏飞,秦开宇,陈华伟,李志强 (电子科技大学空天科学技术研究院,四川 成都 611731)摘要:为了构建航电仿真系统,提出了一种基于多线程MVC(Modal View Controller)模式的航电仿真系统软件的设计与实现。软件架构采用多线程MVC模式,在保证系统的实时性和数据的可靠性的同时,简化了软件设计的复杂度。对于多线程间的数据同步问题,采用由内存映射技术设计的共享变量池,为系统仿真模块、数据监控模块与参数设置模块之间的大量数据交互提供了可靠的解决方案。测试实验结果证实了,该航电仿真系统软件的实时性与可靠性。关键词:多线程;MVC模式;航电仿

2、真;共享变量;高精度定时 中图分类号:TP391 文献标识码:A 文章编号:Software Design for Avionics Simulation System Based on Multi-thread MVC Model Xiong Peng-fei,Qin Kai-yu,Chen Hua-wei,Li Zhi-qiang(Institute of Astronautics & Aeronautics, University of Electronic Science and Technology of China, Chengdu 611731, China)Abstract:

3、In order to build an Avionics Simulation System, software design and implementation for avionics simulation based on multi-thread MVC (Modal View Controller) model are proposed. By using the multi-thread MVC mode, the complexity of software design is simplified and the real-time performance and the

4、reliability of data transmission is guaranteed. For the problem of data synchronization, a shared variable pool based on the memory mapping technique is employed so that a reliable solution is provided for the interaction of large amounts of data between the system simulation module, the data monito

5、ring module and the parameter setting module. Finally, an experiment is carried out and the results verify the real-time performance and the reliability of the avionics simulation system.Keywords: multi-thread; MVC model; avionics simulation; shared variable pool; high resolution timing航空电子系统在飞行系统中起

6、着重要的作用,是飞机先进性的标志之一。现代航空电子设备的复杂程度和信息综合程度比以往有了很大的提高,系统规模越来越大,系统结构越来越复杂。另一方面,要求在极短的时间内设计出新的高品质航空电子设备来满足市场需求。仿真试验的引入可以大大缩短航空电子系统研制周期,降低研制成本,是航空电子设备开发、系统综合以及支持工程试飞和系统升级各个阶段必备的工具和手段。半实物仿真 (Hardware-in-Loop-Simulation)将实物引入到仿真回路中,避免了对实物建立数学模型所带来的误差,提高了仿真结果的可信度。通过半实物仿真手段,既能为被测对象构建接近真实的外部工作环境,更能实现对复杂的电子控制系统,

7、如综合航电系统性能进行的全面测试。因此,在航空电子系统研制的初期,使用半实物仿真技术,并贯穿于整个系统研发过程中,可以最大限度地保证航电系统开发的高效性,并降低研制成本。本文基于半实物航电仿真系统架构,设计和实现了航电仿真系统软件,并根据实时性要求,提出了一种简单有效的软件设计架构模式。1 航电仿真系统结构在综合化模块化的航空电子系统中,任务计算机属于系统的核心部分,所有的飞行控制和系统响应都需要通过任务计算机完成。因此,任务计算机具有强实时性和数据可靠性。在半实物仿真系统中,使用真实的任务计算机作为仿真系统的硬件设备,提高了仿真结果的可信度与系统的实时性。航电仿真系统的整体结构框图如图1所示

8、。仿真系统软件进行飞行数据仿真,并且为任务计算机提供仿真数据。图1 航电仿真系统框图仿真系统软件与任务计算机之间的数据传输,采用反射内存与接口模拟软件结构。反射内存网络是基于环状或者是星状,高速复制的共享内存网络,可以较好地解决飞行仿真实时系统中数据传输的实时性问题,提高网络数据的传输速率及纠错能力。系统中反射内存中的数据通过接口模拟软件转换到接口总线,再传输到任务计算机。通过该传输机制使系统在数据传输过程中的实时性得到了有效的保证。2 航电仿真系统软件设计为航电仿真系统提供基于数学仿真方式产生的仿真数据是航电仿真系统软件的基本功能。航电仿真系统软件主要完成仿真数据的实时监控以及飞行控制系统、

9、惯导系统、光电系统、敌我识别系统等数学仿真模型的数据处理,并与任务计算机进行数据交互。航电仿真系统对数据模型有严格的实时性要求,因此,如何完成航电仿真系统数据模型的实时运算,以及实现仿真数据的实时交互,是航电系统仿真软件开发的一大难题。下面将针对此问题以及航电系统仿真软件开发的关键技术进行详细说明。2.1 多线程MVC模式MVC 模式(Modal View Controller) 是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。其目的是实现一种动态的程序设计,将视图与数据处理分开,可以简化对程序的修改和扩展,并且

10、使程序重用性成为可能。MVC模式的结构如图2所示。图2 MVC模式结构多线程技术是在应用程序在同一时间内运行多个线程(任务)。多任务同时运行,相互独立,互不干扰,大大地提高了程序的运行效率。鉴于MVC模式和多线程技术的优点,本航电仿真系统软件创造性地采用多线程MVC架构。将数据处理与数据显示归为不同的线程任务,各自使用不同的定时器,互相隔离、互不影响。基于多线程MVC模式的航电仿真系统软件架构如图3所示,在此架构中,主线程完成数据监控与参数设置功能,对应于MVC模式中的视图。多个分线程完成航电仿真系统模型数据运算与交互,对应于MVC模式中的模型。共享变量池负责主线程与分线程之间的指令与数据交互

11、,对应于MVC模式中的控制器。因此,航电仿真系统的软件架构结合了多线程技术与MVC设计模式的优点,在进行人机交互的同时能保证高效完成仿真系统模型数据运算。图3 航电仿真系统软件架构2.2 共享变量池由于采用多线程MVC架构和模块化的设计思想,主线程与分线程之间,以及不同系统仿真模块之间,存在着大量的数据交互,因此,不同模块之间的数据传递无法通过简单的参数传递和变量共享的方式实现,导致系统软件的设计复杂度和开发难度大幅增加。内存映射文件提供了管理大型数据流(通常来自文件)以及在单台计算机上多个进程或应用程序的多线程之间共享数据方法,因此,内存映射文件是解决本地多个进程间数据共享的最有效方法。仿真

12、系统软件设计采用内存映射技术,将共享变量池设计为动态链接库(DLL)的形式,有效地解决了各系统仿真模型之间数据交互以及多线程中变量共享的问题。航电仿真系统软件存在多任务同时访问共享变量池同一资源的情况。因此,在设计中对共享内存数据块访问的代码段设置了互斥保护。在享变量池初始化时,调用CreateMutex()创建互斥对象。在程序运行中有任务访问共享变量池时,首先调用WaitForSingleObject()等待互斥对象,如果有多个任务同时访问共享变量池时,根据任务优先级,最先获取互斥对象的任务,可以对共享变量池的内存空间进行访问操作,在当前任务执行完后调用ReleaseMutex()释放互斥对

13、象,完成访问操作,此时,下一任务可以获取互斥对象,对共享变量池进行访问。多任务访问共享变量池流程如图5所示。图5 多任务访问共享变量池2.3 高精度定时采用多线程MVC模式和共享变量池技术,使航电仿真系统软件在设计架构上满足了航电仿真系统对数据模型的实时性和稳定性设计要求。对于实现仿真系统模型数据的实时运算与交互,还需要准确和稳定的高精度定时器,用于驱动各个系统仿真数据模块的运行,以及控制仿真数据模块与反射内存的数据交互。本航电仿真系统软件基于windows XP操作系统,采用QT图形用户界面应用程序框架进行开发和设计。使用windows XP与QT为程序开发与设计带来便利的同时,也带来了一个

14、难题,即如何实现windows环境下的高精度定时。Windows是基于消息机制的多任务非实时操作系统,而且Windows封装对计算机底层硬件的访问,所以想通过直接利用访问硬件来完成精确定时,比较困难。因此在实际应用时,需要针对定时精度的要求,采取与之相适应的定时方法。微软公司在多媒体windows中提供了高精度定时器的低层API支持。利用多媒体定时器可以精确地读出系统的当前时间,并且能在非常精确的时间间隔内完成一个事件、函数或过程的调用,其定时精度在1ms以内。在本航电仿真系统软件中,仿真系统模型帧数据输入和输出的最高频率是100Hz即周期为10ms。从理论上来说,采用windows的多媒体定

15、时器能够达到该系统的实时性要求。因此,航电仿真系统软件采用windows的多媒体定时器timeSetEvent()函数驱动各个系统仿真数据模块的运行,和控制仿真数据模块与反射内存的数据交互。另外,主线程为用户交互界面,主要用于动态的显示监控数据,和接收用户的操作信息。由于显示监控数据和接收用户操作信息的实时性要求不高,不需要精确的达到毫秒级的刷新速率,因此选用QT自带的QTimer作为定时器,用于定时刷新界面显示的监控数据和接收用户的操作信息。2.4 实时性分析以数据监控任务、飞行数据任务,飞行控制任务为例,对航电仿真系统软件的实时性进行分析。如图4所示,截取了一段时间内,这三个任务的执行流程

16、。通过对该流程的分析,可以清楚的反映出航电仿真系统软件的执行过程。图中以Step1的开始时间为时间零点,T1为timeSetEvent()函数的一个定时周期10ms,T2为timeSetEvent()函数的两个定时周期即20ms,T3为QTimer的一个定时周期100ms。图4 程序执行流程1) Step1,数据监控任务开始运行,主线程首先从共享变量池读取所有的飞行数据、飞行控制数据等信息,然后将所有的数据信息显示在人机交互界面上,此过程需要对界面进行刷新,因此,将耗费大量时间。与此同时,飞行数据任务和飞行控制任务也开始运行,飞行数据任务和飞行控制任务,从反射内存和共享变量池读取对应的数据,然

17、后对数据进行相应的数学仿真运算,最后再将数据写入反射内存和共享变量。至此Step1过程完成,数据监控任务继续运行,飞行数据任务和飞行控制任务等待下一次timeSetEvent()函数的定时周期到达。2) timeSetEvent()函数的定时周期到达,Step2过程开始,数据监控任务继续运行。飞行数据任务和飞行控制任务开始第二次运行,由于飞行数据模型的运行周期是10ms,飞行控制模型的运行周期是20ms,因此,飞行数据任务重复Step1中的运行过程,而飞行控制任务在判断完本次定时周期是否运行后,将停止运行。Step2过程完成,监控任务继续运行,飞行数据任务和飞行控制任务等待下一次timeSet

18、Event()函数的定时周期到达。3) timeSetEvent()函数的定时周期到达,Step3过程开始,飞行数据任务和飞行控制任务开始第三次运行。由于飞行数据任务和飞行控制任务同时满足运行周期条件,因此飞行数据任务和飞行控制任务重复Step1中的运行过程。Step3时间较长,飞行数据任务和飞行控制任务将继续重复Step1和Step2中的运行过程,而数据监控任务将在Step3的某一时刻完成,完成后,数据监控任务将等待下一次QTimer定时周期,开始下一次的数据监控任务。图4是对真实程序执行流程的抽象,在实际运行过程中,数据监控任务使用QTimer作为定时器,飞行数据任务和飞行控制任务使用ti

19、meSetEvent()函数作为定时器,QTimer和timeSetEvent()的定时精度不同。图中的T1,T2的时间精准度是非常高的,使得航电仿真系统软件有了实时性的保障,而T3的时间长短会受数据监控任务影响,但数据监控任务不需要较高的时间准确度,因此本航电仿真系统软件完全能够满足数据模型的实时性要求。3系统测试与结果分析3.1 测试方法系统测试主要对航电仿真系统软件的实时性进行了测试。测试的内容包括:数据输入实时性测试,即测试各系统仿真数据模块读取反射内存数据的实时性;数据输出实时性测试,即测试各系统仿真数据模块帧数据输出到反射内存的实时性。测试方法如下。1) 数据输入实时性测试:所有数

20、据以帧数据形式发送和接收,每一帧数据都包含帧计数信息,相邻帧数据的帧计数信息是连续的。因此,系统仿真数据模块读取反射内存数据的实时性的测试方法是,在程序内添加代码,将各仿真数据模块读取到的每一帧数据的帧计数信息都记录到对应的文本文件中。通过分析文本文件中的帧计数是否连续来检测数据输入的实时性。2)数据输出实时性测试方式:使用QueryPerformanceFrequency/ QueryPerformanceCounter函数,记录发出两帧数据之间的时间间隔。QueryPerformanceFrequency/ QueryPerformanceCounter函数分别用于获取CPU的计时器的时钟

21、频率和CPU计时器的值,在时钟频率为1GHz以上的CPU,其定时精度在1ns以上,因此,使用该函数能够准确地测出系统仿真数据模块帧数据的输出频率。将测量的数据进行误差分析并与误差标准进行比较来检测数据输出的实时性。本航电仿真系统对帧数据发送的周期误差标准是小于0.5%。3.2 测试结果分析数据输入实时性测试:各系统仿真数据模块记录30000帧输入数据。对记录文件进行分析,所有记录到的帧计数信息都连续,帧数据没有丢失。测试结果表明,航电仿真系统软件满足数据输入的实时性要求。数据输出实时性测试:各系统仿真数据模块分别记录10组数据,每组数据为各系统仿真数据模块发送1000帧数据耗费的时间。对原始数

22、据进行分析计算,求出系统仿真数据模块发送帧数据的平均周期与标准误差,如表1所示。将测试结果与误差标准进行对比,实验结果表明,系统仿真数据模块帧数据输出实时性满足实验要求。表1数据输出实时性测试结果数据模块理论频率(Hz)理论周期(ms)平均周期(ms)标准误差(%)飞行数据1001010.00520.052飞控系统502020.00340.017光电系统254040.00150.004惯导系统1001010.00480.0484 结束语航电仿真系统在航电设备的开发中起到缩短航空电子系统研制周期,降低研制成本,提高开发效率的作用。本文为构建半实物航电仿真系统,对航电仿真系统软件进行了设计与实现。

23、软件设计中采用了并行程序设计思想,多线程MVC架构与windows的高精度定时方案,为满足航电仿真系统软件的实时性要求提供了保障。模块化的设计方法,为以后的系统升级和模块更新带了来极大的便利。文中所提出的多线程MVC架构模式可以作为一种通用的软件设计架构模式,具有一定的工程应用价值。参考文献:1 赵宁社,翟正军,王国庆. 新一代航空电子综合化及预测与健康管理技术J. 测控技术,2011, 30(1) :1-52 李权,陈骊醒,高亚奎. 航空电子系统动态模拟综合环境研究J. 系统仿真学报,2003, 15(2) :179-1813 周宁.仿真与航空试验技术J.测控技术,1994,13(4) :3

24、-54 白曦,刘强基于Windows的跨进程共享变量池设计J仪器仪表用户,2011,(1)5 诸文洁综合航电仿真测试系统关键技术研究J民用飞机设计与研究,2010,(1)6 洪锡军,李从心Windows下高精度定时的实现J计算机应用研究,2000,(3):96-977 Jim Beveridge & Robert WienerWin32多线程程序设计M侯捷,译武汉:华中科技大学出版社20028 Bruce EckelC+编程思想(第二版)M刘宗田,刑大红,孙慧杰,译北京:机械工业出版社2003Editors note: Judson Jones is a meteorologist, jour

25、nalist and photographer. He has freelanced with CNN for four years, covering severe weather from tornadoes to typhoons. Follow him on Twitter: jnjonesjr (CNN) - I will always wonder what it was like to huddle around a shortwave radio and through the crackling static from space hear the faint beeps o

26、f the worlds first satellite - Sputnik. I also missed watching Neil Armstrong step foot on the moon and the first space shuttle take off for the stars. Those events were way before my time.As a kid, I was fascinated with what goes on in the sky, and when NASA pulled the plug on the shuttle program I

27、 was heartbroken. Yet the privatized space race has renewed my childhood dreams to reach for the stars.As a meteorologist, Ive still seen many important weather and space events, but right now, if you were sitting next to me, youd hear my foot tapping rapidly under my desk. Im anxious for the next o

28、ne: a space capsule hanging from a crane in the New Mexico desert.Its like the set for a George Lucas movie floating to the edge of space.You and I will have the chance to watch a man take a leap into an unimaginable free fall from the edge of space - live.The (lack of) air up there Watch man jump f

29、rom 96,000 feet Tuesday, I sat at work glued to the live stream of the Red Bull Stratos Mission. I watched the balloons positioned at different altitudes in the sky to test the winds, knowing that if they would just line up in a vertical straight line we would be go for launch.I feel this mission wa

30、s created for me because I am also a journalist and a photographer, but above all I live for taking a leap of faith - the feeling of pushing the envelope into uncharted territory.The guy who is going to do this, Felix Baumgartner, must have that same feeling, at a level I will never reach. However,

31、it did not stop me from feeling his pain when a gust of swirling wind kicked up and twisted the partially filled balloon that would take him to the upper end of our atmosphere. As soon as the 40-acre balloon, with skin no thicker than a dry cleaning bag, scraped the ground I knew it was over.How cla

32、ustrophobia almost grounded supersonic skydiverWith each twist, you could see the wrinkles of disappointment on the face of the current record holder and capcom (capsule communications), Col. Joe Kittinger. He hung his head low in mission control as he told Baumgartner the disappointing news: Missio

33、n aborted.The supersonic descent could happen as early as Sunday.The weather plays an important role in this mission. Starting at the ground, conditions have to be very calm - winds less than 2 mph, with no precipitation or humidity and limited cloud cover. The balloon, with capsule attached, will m

34、ove through the lower level of the atmosphere (the troposphere) where our day-to-day weather lives. It will climb higher than the tip of Mount Everest (5.5 miles/8.85 kilometers), drifting even higher than the cruising altitude of commercial airliners (5.6 miles/9.17 kilometers) and into the stratos

35、phere. As he crosses the boundary layer (called the tropopause), he can expect a lot of turbulence.The balloon will slowly drift to the edge of space at 120,000 feet (22.7 miles/36.53 kilometers). Here, Fearless Felix will unclip. He will roll back the door.Then, I would assume, he will slowly step

36、out onto something resembling an Olympic diving platform.Below, the Earth becomes the concrete bottom of a swimming pool that he wants to land on, but not too hard. Still, hell be traveling fast, so despite the distance, it will not be like diving into the deep end of a pool. It will be like he is d

37、iving into the shallow end.Skydiver preps for the big jumpWhen he jumps, he is expected to reach the speed of sound - 690 mph (1,110 kph) - in less than 40 seconds. Like hitting the top of the water, he will begin to slow as he approaches the more dense air closer to Earth. But this will not be enou

38、gh to stop him completely.If he goes too fast or spins out of control, he has a stabilization parachute that can be deployed to slow him down. His team hopes its not needed. Instead, he plans to deploy his 270-square-foot (25-square-meter) main chute at an altitude of around 5,000 feet (1,524 meters

39、).In order to deploy this chute successfully, he will have to slow to 172 mph (277 kph). He will have a reserve parachute that will open automatically if he loses consciousness at mach speeds.Even if everything goes as planned, it wont. Baumgartner still will free fall at a speed that would cause yo

40、u and me to pass out, and no parachute is guaranteed to work higher than 25,000 feet (7,620 meters).It might not be the moon, but Kittinger free fell from 102,800 feet in 1960 - at the dawn of an infamous space race that captured the hearts of many. Baumgartner will attempt to break that record, a feat that boggles the mind. This is one of those monumental moments I will always remember, because there is no way Id miss this.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号