实时多任务控制系统(精选9篇)
实时多任务控制系统 篇1
控制系统一般需要并行执行多个子任务, 如模拟量数据采集、开关量输入扫描、数据存储、PID控制计算、模拟量输出、开关量输出、串口通讯等。对于单核处理器来说, 同时执行多个子任务是不可能的, 只能是以极快的速度按照任务的轻重缓急顺序完成各个子任务, 使其看起来像是同时在执行。
对于不同的子任务有着不同的实时性要求。对于某型微型燃机控制系统来说, 其PID控制子程序要求20ms调用1次, 而串口通讯子程序, 则要求500ms才调用1次, 但调用1次其执行的时间却大于实时性要求较高的PID控制子程序的调用周期20ms, 即一旦开始执行串口通讯子程序, PID控制子程序将无法按要求的时间间隔被调用执行。
对于一个实时多任务控制系统, 应根据子任务不同的实时性要求来调用各个子程序, 使其即使在最恶劣的情况下也能够被一一实时执行。
所谓实时, 是指信号的输入、计算、存储和输出都要在一定的时间范围内完成, 亦即计算机对输入信息, 以足够快的速度进行控制, 超出了这个时间, 就失去了控制的时机, 控制也就失去了意义[1]。
所谓多任务, 是指控制系统需要并行执行多项工作。
如何使长执行周期的子程序 (如串口通讯) 得到完整执行, 又能保证高实时性的子程序 (如PID控制) 被及时调用, 这是设计实时多任务控制系统软件的一个关键问题。
TMS320F2812是一款用于控制的高性能、多功能、高性价比的32位定点DSP芯片, 最高可在150MHz主频下工作。TMS320F2812片内集成众多资源, 并一改传统的冯·诺依曼结构, 采用了先进的哈佛总线结构, 使数据的吞吐率提高了一倍[2]。TMS320F2812的高性能使其在处理速度、精度方面要求高的领域得到了广泛的应用。
基于TMS320F2812设计实时多任务控制系统软件, 综合利用其3级中断系统、片内32位CPU定时器以及TI专为定点处理器设计的快速浮点运算函数库IQmath, 使用以程序切割为核心的程序设计方法设计实时控制程序, 能够开发出满足某型微型燃机控制要求的实时多任务控制系统软件。
1、中断系统在实时多任务控制系统中的应用
中断的灵活使用不仅能够实现最高级别实时子程序的调用, 而且合理的中断安排可以提高事件执行效率。
TMS320F2812的中断系统为3级中断, 分别为外设级、PIE级以及CPU级, 如图1所示。对于某一个具体的外设中断请求, 任意一级的不许可, CPU最终都不会执行该外设中断[3]。
在微型燃机控制系统中, 故障报警、紧急停机等紧急事件可以利用中断触发其相应的处理程序被立即执行, 满足其对实时性的最高要求。
2、程序切割法
正如引言中所提到的, 一旦长执行时间的子程序被主程序调用, 调用周期较短的子程序将不能够按设计要求被及时调用, 从而影响控制器的控制性能及响应事件的实时性。
我们以微型燃机控制系统PID控制子程序和串口通讯子程序为例进行研究说明。系统要求每20ms调用1次PID控制子程序, 执行1次PID控制子程序的时间大约为2ms。串口通讯子程序为每500ms执行1次, 执行1次大约需要100ms。串口通讯子程序一旦被主程序调用执行, 在其执行完毕前PID控制子程序将无法被调用。如何既能够使串口通讯子程序被执行, 又能使PID控制子程序按设计要求的20ms调用周期被实时调用?
注意到PID控制子程序两次调用时间间隔虽然为20ms, 但每次的执行时间仅为2ms, CPU还有大约18ms的空闲时间 (暂假定系统只有PID控制和串口通讯两个子程序需要执行) 。串口通讯子程序1次执行时间虽然为100ms, 但调用周期为500ms, 即在500ms内执行完整个通讯程序即能满足其实时性设计要求。
一种有效的解决方案是将串口通讯子程序切割为几个执行周期很短 (小于CPU空闲时间18ms) 的子程序, 分别安排在PID控制子程序执行后被执行, 每个子程序只完成很少数据的传输任务, 经过多次调用即可完成1次完整的数据通讯任务, 与PID控制子程序合计总执行时间小于500ms, 能够满足通讯任务的实时性能要求。这就是本文提出的实时多任务控制系统的程序切割设计方法。
通过程序切割法还可以对控制系统中其它子程序进行切割分步执行, 满足其不同的实时性要求。
3、CPU定时器在实时多任务控制系统中应用
对于一个实时多任务控制系统, 许多子程序的调用与相对时间有关, 如20ms调用一次PID控制程序、500ms调用一次串口通讯子程序、点火操作最长时间为10秒等。
显然使用延时程序不但不容易实现精确定时, 更重要的是会占用CPU时间, 不利于实现实时多任务控制系统的设计。
一种有效的方法是利用TMS320F2812片上的CPU定时器进行定时, 由定时中断子程序去判断时序, 触发相应的子程序, 可以很好的协调不同实时性要求的子程序有序执行。
TMS320F2812器件上有3个32位CPU定时器 (TIMER0/1/2) 。当TMS320F2812运行在150MHz时, CPU定时器可以触发最短6.67ns定时周期的定时中断。
本文提到的基于TMS320F2812设计的某型微型燃机控制系统, 对各个子程序设置一个启动标志变量, 启动CPU定时器, 定时周期设置为4ms。在定时器中断服务子程序中对定时中断次数进行计数, 以实现4ms分辨度的精确计时, 并根据计数结果改变相关子程序启动标志变量值。主程序依次判断各个标志变量值, 根据判断结果调用相应的子程序, 使各个子程序能够按照固定的时间间隔被启动执行。程序流程图如图2~3所示。
从图中可以看出, 每次CPU定时器中断 (即4ms) 启动1次ADC转换子程序, 每5次定时中断 (即20ms) 执行1次PID控制子程序, 并执行某1个序列号的串口通讯子程序, 在最后1个序号的串口通讯子程序中将通讯子程序启动标志变量置0, 停止执行通讯子程序。每125次定时中断 (即500ms) 重新启动串口通讯子程序, 将启动标志变量置1。
4、试验验证
使用上述设计方法设计的基于TMS320F2812的某型微型燃机控制系统经试验验证, 能够满足系统多任务的功能要求, 也能够满足各个子任务的实时性能要求。图4为试验中控制系统上位机界面。从图中可以看到控制器通过串口实时向上位机传输上来的燃机运行状态数据。
5、结语
本文提出的基于TMS320F2812的实时多任务控制系统的设计方法已在某型微型燃机控制系统中得到应用。经试验验证, 利用该方法在单核信号处理器TMS320F2812上设计的实时多任务控制系统软件可靠, 能满足系统各个子任务实时性能的要求。
摘要:本文提出了基于TMS320F2812设计实时多任务控制系统软件的一种设计方法, 即综合利用TMS320F2812的中断系统、CPU定时器及程序切割法, 将控制系统中实时性要求相对较低、执行周期相对较长的子程序切割为几部分合理有序的安排在CPU空闲时间段执行, 保障关键子任务的实时性。本方法已在某型微型燃机控制系统中得到了成功应用。
关键词:实时多任务控制系统,TMS320F2812,中断,定时器,程序切割法
参考文献
[1]于海生, 丁军航.微型计算机控制技术 (第2版) .清华大学出版社, 2009.
[2]孙丽明.TMS320F2812原理及其C语言程序开发.清华大学出版社, 2008.
[3]TEXAS INSTRUMENTS.TMS320x281x DSP System Control and In-terrupts Reference Guide, 2008.
[4]王潞钢, 陈林康.DSP C2000程序员高手进阶.机械工业出版社, 2005.
实时多任务控制系统 篇2
关键词:单片机任务线程并行处理
引言
首先要指出的是一点是,我们不是讨论嵌入式实时多任务操作系统(RTOS)的设计。我们讨论的是,在不使用RTOS的控制系统中,如何体现多任务多线程机制的程序设计思想。
一些嵌入式设备可以需要操作系统,例如掌上电脑、PDA、网络控制器等高性能的手持设备和移动设备。它们往往和无线通信、互联网访问和多媒体处理等复杂而强大的功能联系在一起;对CPU要求也很高,往往是以通用CPU为原型的各种高端嵌入式处理器。
作为一个完整的操作系统,RTOS有一个可靠性很高的实时内核,将CPU时间、中断、I/O、定时器等资源都包括起来,留给用户一个标准的应用程序接口(API);根据各个任务的优先级,合理地在不同任务之间分配CPU的时间,保证程序执行的实时性、可靠性。内核一般都能提供任务调度和中断服务等功能,部分高档商业化产品,如WindowsXPEmbedded,甚至支持32位地址空间、虚拟存储管理、多进程以及嵌入式操作系统中不多见的动态链接库(DLL)。对于这些RTOS来说,多任务实时处理不是件困难的事情。
但更多的情况下,用户使用的是另一类CPU――微控制器,即单片机,往往是按照某一流程执行单一任务。出于成本和技术上的原因,这类软件开发多数还是基于处理器直接编写,没有选配实时多任务操作系统作为开发平台,也不需要将系统软件和应用软件分开处理。但是在实际应用中,有时也会面临同时处理多个并行任务的要求,这就需要安排一种运行机制,来模拟RTOS中的处理方法。
1RTOS中的设计思想
单处理机多道程序系统具有如下特征:
①从宏观上看,几种程序“同时运行”。即它们先后开始了各自的运行,且均未结束。
②从微机上看,几道程序“交替执行”。对于单处理机系统而言,它们只能轮流地占用CPU。
其实质是指几道程序在处理机中“交替执行”。我们按照现在常用的方法,把一道程序和一个任务对应,把任务中的每个分开的、独立执行的部分称之为线程。
具体到RTOS来说,一方面,实时操作中的多任务引起的并发性和实时性,要求操作系统对资源分配具有更强的控制能力。通常的办法是采取设立前台与后台两个作业的分配办法。前台作业中包含实时采集、控制、处理有关的任务,任务优先级较高;后台作业一般是对数据进行分析、输出数据、响应操作员请求等任务,优先级较低。后台作业中与后台作业并非完全孤立的;后台作业所需数据由前台作业存储共享内存区内,作业之间通过共享存储区进行数据交换。
另一方面,实时任务总是由某个事件发生或时间条件满足来激活。事件有两种:内部事件和外部事件。时间驱动也有两种:按绝对时间驱动和按相对时间驱动。内部事件驱动是指某一程序运行的结果导致另一任务的启动,这个结果可能是数据满足一定条件,也可能是释放了某一资源;而最典型的实时任务是由外部事件驱动的。在实时系统中,外部事件发生有时是不可预测的,由外部事件驱动的任务一般是需要立即执行的任务,它的优先级最高。绝对时间驱动是指在某指定时刻执行的任务,也就是在自然时钟的绝对时间执行。相对时间驱动是指周期性执行的任务,总是相对上一次执行时间计时,执行时间间隔一定。除了周期性任务外,还有一些同步任务也可能由相对时间驱动,如等待某种条件到来。等待时间是编程设定的。相对时间可用计算机内部时钟或软件计时。
图2独立并行任务
实时多任务控制系统 篇3
关键词:多任务操作系统;嵌入式系统;开发;应用
中图分类号:TP316.2 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01
所谓多任务系统,顾名思义就是指能够满足实时控制系统的实时性要求,可以有效地管理系统及资源的操作系统软件,随着近些年来对互联网技术的需求,凭借其在企业管理之中的重要地位,获得了飞速发展的机会,一般说来多应用在嵌入式系统之中,两者相辅相成。众所周知,嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统,并以计算机作为运行基础,如何才能够将两者有机的结合,已经成为越来越多专业人士密切关注的人们话题之一,本文仅代表个人观点,片面偏颇之处,还望不吝指正。
一、项目概述
(一)任务及多任务
就计算机技术工程之中,任务是指独立执行的一个功能或这个处理的过程,是RTOS调度的基本单位。一般说来,在一个多任务处理的环境之下,只有当其它程序认可的时候,一个运行程序才可获得处理的时间。在现实的生活之中,这种技术的应用可以表现为在计算机上多程序的运行,可以较大程度的提高人们利用互联网的效率,提高居民幸福指数,此外在企业的应用之中,通常表现为对机器、装置多种工况的实时监测,可以有效地提高机器、装置运行效率,促进生产力的进一步提升。
(二)调度方式
随着时代的不断快速发展,激烈的市场竞争要求任务及多任务技术的应用必须更加精确的采样和实时反馈信息,所以,多任务操作系统的优势可以说是十分显著的。任务调度在一个任务的完成、中断处理结束以及任务被阻塞时执行。调度的时候首先要得到最高优先级的就绪任务,然后再进行现场的保存和恢复。
(三)发展趋势
正如上文所述,城市化进程的加剧,使人类对于计算机的运行做出了更高的要求,多任务操作系统在嵌入式系统开发中的应用,可以有效、及时的反馈信息,不仅仅对于民用互联网技术的提高,具有非常重要的意义,且在企业中的意义也十分的显著,主要表现在促进企业管理的方面,有鉴于此,其发展一直备受关注,然而随着时间的逐渐推移,其中也逐渐暴露出一些问题,正日益阻碍该领域成果的取得,所以,必须要及时的提出切实可行的方案,才能够为其发展重新注入活力,促进生活质量及综合竞争力的更好提高。
二、多任务操作系统在嵌入式系统应用的不足之处
(一)技术层面
就我国互联网的发展现状而言,技术方面的缺陷是当前首要处理的问题之一。计算机的起源可以追溯到1946年,由美国人率先研制并使用,第三次工业革命的爆发,促进了以互联网技术为基础的计算机行业的蓬勃发展,至今计算机互联网已经成为科技的象征,并在国民经济之中占据重要的成分。然而由于我国在该领域的发展和起步都比较的晚,且起初的重视程度不够高,一些居民对待其态度也有失准确,导致其发展还远远不如其他发达国家,甚至更多的互联网技术都只是舶来品,没有多少能代表我国技术的标志性产品。此外,由于我国教育制度的不足,大多数学校培养的人才缺乏创新,使技术瓶颈也很难得到大的突破。
(二)管理层面
在管理层面导致计算机互联网技术不足,主要表现在软件开发企业和应用该技术的企业。在软件开发企业之中,由于上文所提及的技术性缺陷,导致在人员的管理上存在缺陷,笔者通过对相关数据的整理和分析发现,众多计算机软件开发公司在职员的录用上,大多忽视对高校专业人士的重视,因为他们缺乏一定的实践经验,对职员的学习机会也不加把握,往往只是培养少数骨干,所以,在整个业内难以形成浓郁的学习成长氛围,此外各软件公司之间的竞争也属于一种混乱无序的状态。在一般企业的应用中,由于内部关系逐渐呈现复杂化的趋势,企业经营者一味追求利益,也忽视该技术的运用及升级,尤其是中小型企业,该技术的应用近乎空白,这些客观因素的存在,无疑都在一定程度上阻碍多任务操作系统在嵌入式系统之中的应用。
三、多任务操作系统在嵌入式系统应用的相应对策
(一)技术层面
正如上文所述,我国计算机互联网技术仍然处于起步阶段,针对技术不足的现象,个人认为不妨通过政策予以大力的扶持与鼓励,改变从前的教育模式,实现企业和高校之间的密切合作,形成一股有效的合力,共同推动人才的成长,为计算机互联网技术的发展提供坚实的技术保证;在企业内部,重视职员的学习机会,使每个职员都有机会为企业的发展贡献才智;通过现代传媒的手段,普及互联网的知识,吸引更多专业人士的关注,共同致力于互联网技术的更好发展;建立软件开发区,通过各个企业之间的良性竞争,激烈共同发展。
(二)管理层面
在管理層面,必须革新企业经营者的发展观念,通过各种符合时代发展要求的观念理念,为多任务操作系统在嵌入式系统的应用保驾护航;加强和高校之间的联系,使最新的研究成果更加有效地运用到现实生活当中,促进该技术的升级;建立健全、完备的监督制度,规范企业内部的管理,为计算机技术的应用提供一定的制度保证。
四、结束语
正如上文所述,随着时代的不断快速发展,计算机技术的应用不仅仅能够为居民的生活品质提高做出相应的保障,还能够在较大程度上提升企业的综合竞争力,有鉴于此,必须对其有正确的认知,并能够积极分析其存在的不足,技术予以妥善的解决,促进该领域的健康、稳定发展,本文仅结合个人多年的工作实践经验,就多任务操作系统在嵌入式系统之中的应用展开了论述,旨在促进该行业的更好发展,观点片面不足之处,还望专业人士不吝指正。
参考文献:
[1]荣国平,刘天宇,谢明娟.嵌入式系统开发中敏捷方法的应用研究综述[J].科学学报,2014(02).
[2]喻亮.嵌入式系统的结构特征与研究概况[J].企业科技与发展,2010(08).
实时多任务控制系统 篇4
实时性是单片机程序设计的基本要求。为了满足复杂的实时控制要求, 一些实时操作系统 (RTOS) 被引入到单片机控制装置中, 典型的如μC/OS-II[1,2]。但是, 实时操作系统虽然功能强大, 但占用资源多、移植工作量大。由于大多数的单片机应用并不要求具有复杂的操作系统功能而只需要较高的实时性, 所以, 很多应用场合是开发人员利用多任务调度的思想自己开发一种简单而实用的多任务处理方法[3,4]。 参考文献[3]提出了一种基于优先权但非抢占式的任务调度方法, 参考文献[4]采用了一种基于时间片管理思想的多任务处理方法。本文提出了一种抢占式实时多任务处理的简易实现方法, 因抢占式的任务调度方法被公认为实时性最高的方法, 所以本文提出的方法对单片机应用的实时性要求具有更好的适应性。
1 用软中断实现实时多任务处理的基本思想
实时多任务调度就是多个任务按照一定的规则依次占有CPU时间, 各个任务在就绪、执行、阻塞3个状态间变换, 如图1所示。阻塞状态的任务对应于中断源没有触发的任务;就绪状态的任务对应于中断已经触发但中断级别较低、暂时停止执行的任务;而执行状态的任务对应已触发中断中优先级最高的任务。从宏观上看, 会有多个任务都在“尚未完成”状态, 故称为多道程序的“并发”运行。当高级任务获得资源进入就绪状态时低级任务就从执行状态退出到就绪状态, 让高级任务执行, 这称为抢占式任务调度机制。
中断技术本质上就是一种抢占式的实时多任务调度方法, 每个中断服务程序就是一个任务, 但由于硬中断源数量和优先级别不能改变的限制, 使得仅靠硬中断难以满足复杂的实时性要求。如果能够使用软件方法扩展中断源的数量和灵活定义中断源的优先级别, 则利用中断技术完全可以满足大多数的实时性要求。
根据这一设想, 可以设计一种软件扩展中断, 它和硬中断一样, 具有“事件触发产生中断”和“高级中断可以打断低级中断 (同级中断之间不允许打断) ”的特性, 从而实现抢占式任务调度功能。但它更有硬中断所不具备的特性:中断的数量和级别可以通过软件设定。
用软中断方法实现多任务处理时, 每个任务就是一段软中断服务程序。假设设计了n段软中断服务程序, 再加1段必不可少的主程序, 则整个软件系统就是一个有n+1个任务的多任务系统。它们按照优先权的大小, 依次占用CPU, 各任务在就绪、执行、阻塞3个状态之间交换。所以, 本文提出的最简化的实时多任务管理程序实质上就是一个软中断管理程序。
2 软中断的实现方法
该软中断管理程序由1个调度程序和4个系统调用组成。
2.1 调度程序 (软中断排队程序)
调度程序流程如图2所示。调度程序的主要功能是对软中断按优先级排队, 实现对高级软中断的响应和中断嵌套。因为调度程序是优先级别最高的任务, 是管理中断的程序, 一旦被中断后可能导致无法正确返回, 所以该程序必须在CPU关中断的状态下执行。
进入调度程序共有3种渠道:一是从硬中断中通过 (JP OUT) 调用进入, 由于硬中断是触发软中断的最直接的原因之一, 所以对于硬中断, 服务完后应进入调度程序;二是从软中断中通过 (CALL TRAP) 调用进入;三是每个软中断服务程序完毕后, 都要重新进入调度程序, 以使同级或已经就绪的高级软中断能及时服务。
每个软中断都有4个属性:中断号、中断状态、中断级别和中断入口地址。各中断入口地址可放在指定位置的一张与中断号对应的顺序表中。
每个软中断有3种状态:正在服务、申请服务和不需服务。每个软中断的中断级别和状态可以使用1个字节来表示, 如图3所示。
多个软中断, 构成一个软中断信息表, 如图4所示。
中断号可以连续排列, 所以中断号可用中断信息在软中断信息表中的位置来表示。为了处理简单, 可以进一步规定排在前面的软中断优先级较高, 同级中断紧邻排列。若不设同级中断, 则中断优先级部分可以不要, 直接用中断号代表优先级。
2.2 软中断触发调用 (CALL INT)
作用:触发某序号的软中断, 申请服务。
入口参数:软中断序号。
框图:略。对该序号软中断信息字节中“本中断申请服务”置位。
在任何一个任务中一旦触发另一个中断的条件满足, 就执行软中断触发调用。执行该调用后并不会结束正在服务的程序。如果触发的中断是一个更高级的软中断, 必须再使用陷阱调用 (CALL TRAP) 才能执行高级中断。
2.3 硬中断进入调用 (CALL IN)
作用:参加嵌套的硬中断进入时必须调用完成硬中断嵌套数+1等功能。
入口参数:无。
框图:图5所示的A部分。
2.4 硬中断退出调用 (JP OUT)
作用:和CALL IN成对使用, 参加嵌套的硬中断必须从该出口退出。
入口参数:无。
框图:图5所示的B部分。
考虑到硬中断本身有嵌套功能, 对参加嵌套的硬中断都要进行硬中断嵌套计数, 然后参加调度程序统一调度。显然, 硬中断的优先级应高于软中断, 所以, 调度程序中要对硬中断嵌套数进行判别, 只有在硬中断嵌套数为0时才能开始软中断服务。设一个专门单元存放硬中断嵌套计数。
对于那些不可能触发软中断也不可能参加嵌套 (即关中断执行) 的硬中断, 就不必参加嵌套计数, 服务完毕后也不用进入调度程序, 即与常规中断服务程序一样处理, 不使用CALL IN和JP OUT。
2.5 陷阱调用 (CALL TRAP)
作用:暂停正在执行的中断, 进入调度程序。
入口参数:无。
框图:如图6所示。
在软中断中, 若触发了高级中断, 需要暂停本级软中断而及时响应高级软中断时, 可以通过CALL TRAP进入调度程序, 重新按优先级排队进行中断服务。
2.6 任务间的通信
该软中断管理程序没有专门为任务间的通信提供调用, 因为对于单片机级的应用来说, 任务间的通信问题不会很复杂。任务间的通信可以通过在约定的RAM区设置各种标志来实现。
例如, 若需要在2个任务间传递数据块, 只需约定1个RAM区作为“仓库”, 同时设定1个“满/空”标志。负责放数据的任务确认“空”后才能放数, 放数完毕后置“满”;负责接收数据的任务确认“满”后才能收数, 接收完毕后置“空”。这样即可确保2个任务间实现正确的数据传递任务。
3 结语
软中断技术是实现单片机实时多任务处理的有效办法, 它具有核心程序短 (每个调用仅几条指令, 调度程序也只要几十条指令) 、效率高等优点, 是目前文献中所见到的最简单的实现方式, 必要时还可进一步简化 (如不设同级软中断等) , 所以有着很强的实用性。该方法已成功应用于煤炭科学研究总院常州自动化研究院开发的一种矿用监控产品上。
摘要:提出了一种采用软件扩展中断技术的简易实时多任务调度程序设计方法, 详细介绍了1个调度程序和4个系统调用即软中断触发调用、硬中断进入调度、硬中断退出调用及陷阱调用的实现, 并给出了相应的程序框图。该软中断单片机抢占式实时多任务处理方法具有核心程序短、效率高、使用简单等优点, 适合于单片机级的应用。
关键词:单片机,实时,多任务,调度,软中断,硬中断,抢占式
参考文献
[1]黄亮亮, 朱欣华.基于实时多任务操作系统μC/OS-Ⅱ的C8051F系列单片机应用系统开发[J].测控技术, 2005 (9) .
[2]王卫东, 徐志强, 王振.基于ARM+μC/OS-Ⅱ的超声波水煤浆粒度检测仪的设计[J].工矿自动化, 2008 (1) .
[3]汪滢, 辛晓宁, 袁德成.实时多任务机制在低功耗单片机系统中的最小实现[J].化工自动化及仪表, 2002 (3) .
多模式试飞实时监控系统设计 篇5
多模式试飞实时监控系统是一个以无线遥测技术、计算机信号处理技术、数据处理技术和计算机软件技术等综合应用为一体的网络化的信息处理系统。近年来,随着电子与计算机技术的飞速发展,大大促进了试飞遥测数据处理技术的发展,同时航空科技的发展也对飞行试验遥测数据处理提出了更高的要求,图形化、虚拟化、测试参数更多、采集数据海量、实时监控标准化、实时监控与数据处理统一化是未来发展的方向。
多模式试飞实时监控系统是基于C/S和B/S混合模式的实时飞行数据监控系统,并应用了ActiveX组件嵌入技术,网络架构采用双网络互备设置,网络传输尽量选择组播方式,一是可以保证网络的正常运转;二是可以保证在网络负载过重时能分担部分数据传输工作。
系统通过数据库将遥测飞行数据、飞行参数、飞机的各类信息、飞行课题、各类飞行数据实时处理软件和系统使用状况等进行统一管理,使飞行数据的保密性、处理实时性、安全性大大加强。将此系统与“飞行数据处理管理系统”通过网络连接配合使用,将使各类信息共享最大化。
系统B端主要完成飞行试验事先准备的工作和相关信息的浏览,也可用ActiveX组件嵌入浏览器的技术进行实时监控与回放(主要用于远端)。
系统C端主要完成对实时处理软件进行管理,也可在C端嵌入B端进行必要的信息浏览。
ActiveX组件既可以由网页嵌入调用,也可以由应用程序直接调用。ActiveX组件由网页嵌入调用时,用户可在任何一台终端上实现所有的监控与回放,由应用程序直接调用时,扩展了应用程序的功能。
第三方软件(控件)可分为通用性软件与专用性软件;通用性是指可应用于各类飞机的各飞行科目中;专用性是指仅应用于某架飞机的某个科目中。
通用性软件包括以下几种:
(1) 航迹软件(三维与二维可互换应用),并可多架飞机同一界面实时显示飞行航迹;
(2) 视频播放软件(多画面),可同时监控多架飞机的视频;
(3) 远端监控与回放查看相关数据在B端主要以统一的ActiveX组件为主;
(4) 回放软件。
1 系统分析与设计
1.1 系统结构
多模式试飞实时监控系统是一个综合性的集成飞机试飞实时监控、遥测数据、参数和其他相关信息管理的系统,通过内部接口有机地进行交联,组成一个系统化、集成化、标准化的网络应用系统。该系统面向飞行指挥人员、飞行实时监控人员、飞行数据管理人员、数据处理人员以及其他相关人员,为他们提供试飞工程管理和试飞数据处理服务,使飞行实时监控、遥测数据管理、相关信息管理更加标准化,并且使遥测数据处理与管理效率有大幅度的提升。
从系统功能角度来看,多模式试飞实时监控系统的逻辑结构可以用图1~图4四个结构图清楚地描述。
1.2 系统设计
本系统采用B/S和 C/S混合模式设计,实时监控与回放主要采用C端或在B端嵌入ActiveX实现,事前准备、浏览等主要采用B端实现,遥测数据与参数等用数据库统一管理,这样设计的优点在于:数据安全性大大增强;试飞资源共享性更强;实时监控软件的设计更加标准化、统一化;远端监控成为可能;提高实时监控科研技术水平。该系统主要硬件采用冗余设计,使整个系统更加可靠,也提高了系统的运行效率。硬件框架结构如图5所示。
访问数据库主要有3种模式:客户端应用程序;浏览器;ActiveX控件开发的嵌入浏览器中的应用程序。
1.3 关键技术
ActiveX控件是微软提供的功能强大的程序设计和开放技术,是组建对象模型COM组件开发技术的重要组成部分,ActiveX控件作为一种可重用组件,相当于一个封装好的代码模块,通过其方法、属性、事件来与应用程序通信,任何支持ActiveX空间的软件平台都可以使用它们。B/S三层架构软件只需要管理服务器,所有客户端只需要浏览器就能工作,确保了应用与维护的简洁。
2 运行设计
2.1 运行流程
客户端软件运行遥测数据实时监控软件进行监控流程如下:
(1) 运行行客户端软件,检测数据库连接状态,如正常进入下一步;
(2) 在默认显示首页通过读取本地数据库安装实时监控软件的信息,并用列表形式列出,通过嵌入浏览器功能显示部分飞行相关信息;
(3) 当单击选中的实时监控软件时,先访问数据库中对应课题,将需要测试的参数读取并传给客户端实时监控软件用;
(4) 再通过实时通信服务器获得需要的数据,进行实时显示。
客户端软件运行视频数据监控软件流程如下:
(1) 在客户端直接设定通过网络接收数据,并设定接收画面个数(最大4个),运行视频播放软件;
(2) 直接通过网络接收视频服务器传的视频数据,并进行实时显示。
浏览器运行实时监控软件流程如下:
(1) 浏览器请求,经Web服务器访问数据库,将相应课题的测试参数读取,并传给客户端实时监控软件(ActiveX控件)使用;
(2) 再通过实时通信服务器获得需要的数据,进行实时显示。
运行流程基本分5类:一类:客户端→应用服务器→数据库服务器;二类:浏览器→Web服务器→数据库服务器;三类:客户端监控软件→实时通信服务器→遥测接收数据系统;四类:视频监控数据→视频服务器→遥测接收数据系统;五类:客户端↔视频服务器↔实时通信服务器↔管理服务器(本地局域网)。
2.2 运行控制
运行控制将严格按照各模块间函数调用关系来实现。在各事务中心模块中,需对运行控制进行正确的判断,选择正确的运行控制路径。
在网络传输方面,客户端(浏览器)在发送数据(请求)后,将等待服务器的确认收到反馈,收到后,再次等待服务器发送应答数据,然后对数据进行确认。服务器在接收到数据后发送确认信号,在对数据处理、访问数据库后,将返回信息送回客户端,并等待确认。实时方面要保证接收端与发送端的同步(本地局域网),基于园区网的远端请求可次之。
2.3 运行时间
在系统的需求分析中,对运行时间的要求为必须对做出的操作有较快的反应。网络硬件对运行时间有最大的影响,当网络负载量大时,对操作反应将受到很大的影响。所以客户端与服务器之间的连接将采用双高速1 000 Mb/s以太网络冗余设置,尽量采用组播方式,各服务器磁盘阵列通过1 000 Mb/s光缆连接,以减少网络传输上的开销。其次是服务器的性能,这将影响对数据库访问时间即操作时间的长短,影响加大客户机操作的等待时间,所以必须使用高性能的服务器,使硬件对本系统的速度影响小于软件的影响。
3 结 语
多模式试飞实时监控系统采用C/S与 B/S模式结合的方式,并应用了ActiveX组件嵌入技术,使基于园区网实时监控与事后处理成为可能,最大限度满足试飞工程师的需求。在网络传输方面,建立了一条后备网络,以保证当主网络故障时数据的通信通畅。利用数据库对各类相关信息与数据统一管理,确保了信息与数据完整性。系统通过对各类相关技术的合理应用,使实时监控更加标准化、规范化和系统化,提高了试飞实时监控效率、保证了试飞安全。
参考文献
[1]施伯乐.数据库教程[M].北京:电子工业出版社,2004.
[2]冯飞.数据库原理[M].北京:清华大学出版社,2008.
[3]吴企渊.计算机网络[M].北京:清华大学出版社,2001.
[4]SNADER Jon C.Effective TCP/IP programming:44tips to improve your network programs[M].USA:Addison-Wes-ley Professional,2011.
[5]蔡孟哲.COM/ActiveX实用技巧[M].北京:中国铁道出版社,2001.
[6]孙鑫.VC++深入详解[M].北京:电子工业出版社,2006.
[7]RICHTER Jeffrey.Windows核心编程[M].北京:机械工业出版社,2008.
[8]侯捷.WIN32多线程程序设计[M].武汉:华中科技大学出版社,2006.
实时多任务控制系统 篇6
随着社会和计算机科学的发展,许多企业要求以“及时方式”(即按所要求的时间)处理并管理大量的共享信息。这就要求维护大量的数据和应用的实时性,应用之间及数据与应用之间带有时间语义的彼此依赖关系。因此,产生了实时数据库系统[1]。实时数据库系统需要完成对实时数据的各种操作:如实时数据处理、历史数据存储、统计数据处理、报警处理、事件处理、数据服务请求处理等。既需要数据库技术来支持大量数据的共享,维护其数据的一致性,又需要实时处理技术来支持其任务与数据的定时限制的实现。针对以上多种事件并发处理,多个客户端并发访问,实时数据库系统的并发控制与性能问题成为需要解决的紧迫问题。多线程程序设计是指单个程序中使用多个线程,这些线程在同一时间并发运行,执行不同的任务[2]。用多个线程同时为多个客户端提供服务是提高服务器并发性能的最常用手段。并且,java线程池技术已经越来越多地被应用到服务器中,在一定程度上缓解了系统的压力
1 实时数据库系统的设计
1.1 实时数据库系统的功能需求
实时数据库系统由1个主线程和5个线程组组成,它们分别是主控线程(MainT hread)、OPC通讯线程组(OPCComT hread Group)、Dtag计算线程组(DtagC alcT hreadG roup)、事件计算线程组(EventC alcT hread Group)、组播线程组(MultiC astT hreadG roup)[3]、处理客户端请求线程组(RequestP roT hreadG roup)。
主控线程负责初始化运行时的内存对象;OPC通讯线程组负责采集数据;Dtag计算线程组负责计算Dgroup中Dtag的值;事件计算线程组负责处理事件;组播线程组(MultiC astT hreadG roup)负责将组播队列中的组播包组播给客户端;处理客户端请求线程组负责对客户端的请求进行响应处理。
1.2 实时数据库系统架构
路径1:OPC通讯线程组首先建立异步通讯,然后定期轮询实时数据,发现有数据更新就会复制tag点的实时值和时间戳,并计算报警。接下来,组播线程组从数据区取出数据和报警记录,最后组播给客户端。
路径2:Dtag计算线程组首先比较每个DGroup的周期和当前时间,获得到期的DGroup并计算Dtag点的值和报警。然后由组播线程组将其组播给客户端。
路径3:事件计算线程组首先比较每个Event的周期和当前时间,获得到期的Event,然后执行Event脚本。
路径4:处理客户端请求线程组同步处理客户端的请求。其中包含请求有7种:客户端登录、客户端注销、全组播、读TIDs、写TIDs、读取时间范围的报警记录、报警确认记录。
2 实时数据库系统的实现
2.1 总控线程
主控线程是控制5个线程组的总控制器,它也是管理其他5个线程组的父线程组。总控线程中的最大子线程额度为N,所以5个线程组的总子线程数量的和不能超过N。每个线程组也中各有一个额度(线程组中可以同时活动的最大线程数量),分别用sign1,sign2,...,sign5来表示5个线程组中的子线程额度,即(N>=sign1+sign2+sign3+sign4+sign5)。
主控线程基于各个线程组的历史吞吐量(在一个整体时间内尽可能多地执行完任务,或者尽可能多地发出请求并响应)、任务队列大小和任务对象类型,自动增减并发的子线程数量,调整线程池的容量,能够最大化线程池的吞吐量[4]。吞吐量(TPS)是在系统运行稳定后,主控线程计算单位时间内各个线程组的完成的任务数,单位:个数/s。主控线程动态的根据时间段内各个线程组的吞吐量来调整每个线程组的额度大小。
2.2 线程组内架构的实现
实时数据库系统服务器应用程序中经常出现单个任务处理的时间很短而请求的数目却是巨大的。每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。那么为每个请求创建一个新线程的开销很大,在一个JVM里创建太多的线程可能会导致系统由于过度消耗内存而用完内存或“切换过度”。
线程池恰恰能够解决以上问题,父线程用于创建并管理线程池,任务队列用于存放没有处理的任务,提供一种缓冲机制[5]。线程池在还没有任务到来之前,预先创建一定数量的子线程,放入空闲队列中。这些线程都是处于睡眠(Sleep)状态,不消耗CPU,但占用较小的内存空间。
外部因素触发产生任务,任务的创建通过new操作,动态的创建具体的任务对象,然后添加任务对象到任务队列中,队列头head+1,任务队列可以为无限大。同时,外部因素唤醒了父线程,父线程便会分配任务给一个空闲子线程,即启动空闲子线程,把任务传入此线程中运行,进行处理,任务队列的头head-1。子线程获取到任务后,信号量sign-1。子线程执行完任务后信号量sign+1。当预先创建的线程都处于运行(Run)状态,即预制线程不够,线程池可以自由创建一定数量的新线程,用于处理更多的请求,但是总的子线程数不能超过线程组的额度(sign)。当系统比较空闲时,大部分线程都一直处于挂起(Suspend)状态,线程池自动销毁一部分线程,回收系统资源[6]。
2.3 线程组内调度算法
父线程首先初始化线程运行时的内存对象,然后处于等待状态。当有外部因素或者其他子线程完成任务后,会唤醒父线程,父线程在分配任务给子线程之前,要检查线程组的额度是否为0(if sign==0),如果额度不为0,则分配任务给子线程,否则,等待有空闲线程后才能分配任务,然后自己挂起,等待再次被唤醒。子线程被唤醒之后执行任务,执行完任务后唤醒其他组的父线程并挂起,等待下次唤醒。
父线程可以为子线程动态的设置优先级,保证紧急任务尽早处理完成。父线程在静态优先级的基础上,根据线程组的吞吐量以及某些特定条件动态的提高或者降低子线程的优先级。从而使得高优先级的子线程能够优先得到处理器的执行[7]。
2.4 线程间的协作
OPCServer与实时数据库系统建立异步通讯,当有实时数据更新时,OPCServer会唤醒OPC通讯线程组对数据进行及时处理,OPC通讯线程对数据进行处理之后唤醒组播线程组,同时也唤醒Dtag计算线程组,Dtag计算线程组对DGroup中的派生点进行计算后将数值给组播线程组,最后由组播线程组通过UDP协议将数据和报警记录组播给客户端[8]。
数据区是共享资源区,需要线程同步对数据区进行保护,Event计算线程组会定时轮询事件,如果数据区的数据满足事件条件表达式,就会唤醒Event计算线程组来处理事件,事件一般是往硬件物理地址读写数据,此时会触发硬件物理驱动。
客户端通过TCP协议与服务器进行互动,服务器会根据客户端的不同请求返回不同的响应[9]。
3 结论
基于java多线程编程技术实现了实时数据库系统,解决处理器单元内多个线程执行的问题,显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力[10]。其中,java线程池的并发执行多个任务而对线程高效的并发控制策略有效的提高了实时数据库系统的并行处理能力,改善了交互响应时间,提高了实时数据库系统的整体性能。接下来,要致力于整个系统中线程间的同步研究,设计出完善的同步机制。
摘要:为了满足实时数据库系统中多种操作并发执行的需求,采用了多线程设计模式设计了实时数据库系统构架,利用java语言中多线程技术特性实现了多种任务的并发处理。多线程技术提高了程序的实时响应能力,改进程序的设计结构,更有效地发挥处理器的功能,减少对系统资源的频繁调度和切换。同时,增强了实时数据库系统的并行处理能力,改善了客户的交互响应时间,提高了实时数据库系统的整体性能。
关键词:多线程,实时数据库,并发处理,线程池
参考文献
[1]郑阿奇,刘启芬,顾韵华.SQL Server 2000实用教程[M].北京:电子工业出版,2002.
[2]闪四清.SQL Server 2000简明教程[M].北京:清华大学出版社.2003.
[3]文家焱,施平安.数据库系统原理与应用[M].北京:冶金工业出版社,2002.
[4]高荣芳,张晓滨,赵安科.数据库原理[M]西安电子科技大学出版社,2003.
实时多任务控制系统 篇7
上层模块管理下层模块的一个重要工作就是传送新配置的数据。以交换机以例,当某个手机用户的信息变更时,也就产生了新的配置数据。新的配置数据需要迅速正确地传递到交换机系统的各个模块中,而这往往会成为影响系统性能稳定的瓶颈问题,如何使新配置的数据快速传送到系统的各个模块,成为层次型多模块结构嵌入式实时系统数据管理的一个重要课题。
1 树形结构模型的建立
为了更好地研究模块之间数据传送的问题,我们将这种层次型多模块结构抽象成一个树形结构。一个模块就是树中一个结点,两个可以传送数据的模块所代表的结点之间以边相连。上层模块是父结点,被管理的下层模块是子结点。
以某种类型的交换机系统为例:第一层是系统主模块,它管理两台交换机;第二层是交换机主模块,它管理交换机的若干层框架;第三层是框架主模块,它管理框架上的各个插板;第四层是插板主模块,它管理插板上的各个子板;第五层是子板模块。每个模块是树上一个结点,有一个唯一编号。这个交换机系统的模块树结构可以用图1表示。
图1中根结点是整个系统的主模块,交换机的后台管理系统所产生的配置数据,都传送向这个模块[3]。每个模块都有一个唯一整数编号,可以作为对应结点的结点号。当根结点接收到新的数据后,应尽可能快地传送到树中各个结点,以便各个模块及时拥有新的数据,保证整个系统的可靠性和实时性[2]。
由于是多模块系统,单个模块便是一个嵌入式系统,它们之间是相对独立工作的。因此多个模块可以同时向相邻模块传送数据。但是,一个模块不可能同时将数据传送给若干个相邻模块。也就是在这个树形结构中,各个结点可同时向自身的子结点传送数据,但不能一个结点同时向自身多个子结点传送数据。综上所述,我们将要解决的问题归纳为:从一棵树的根结点开始将数据传送给树上的所有结点,结点之间的边的权值表示了结点和子结点之间数据传送所花费的时间。每次数据传送只能从父结点传向一个子结点,多个结点可以同时向其子结点传送数据。如何安排每个非叶结点向其所有子结点传送数据的顺序,使得数据传送到所有结点所花费时间最少,并求这个时间值。
2 求解传送顺序算法的提出和证明
如果在多模块系统中,任意两个相邻模块传送数据的时间相等,那么这个模块树的边就没有权值或所有边的权值相等,这个问题就是算法分析中的鸡毛信问题了[4]。但是在实际系统中,模块之间的数据传送时间不仅不相等,而且还会根据系统运行的状态而改变。因此,这个模块树边的权值也是不相等的,且动态可变。
2.1 算法的描述
首先定义一个函数F(x)。x是模块树中的一个结点号,函数的值表示数据从结点x,传遍整个以x为根的子树所有结点的最短时间。很显然,如果x为叶结点,则F(x)为0;如果x为根结点,则F(x)为就是我们所求取的最少花费时间值。
设一个非叶结点A有n个子结点,分别为A1、A2…An,A结点将数据传送给各个子结点的时间为t1、t2…tn。如果A向子结点传送数据的顺序安排为A1、A2…An,对于任一子结点Ai(1≤i≤n),定义一个函数D(Ai),其值是:以结点A获得数据时刻为起始,以Ai为根的子树的所有结点都获得数据时刻为终止,这两个时刻之间的时间间隔。
根据D函数的定义,更改两个相邻结点Ai和Ai+1的传送顺序,也就是先传送给Ai+1结点,后传送给Ai结点,将不影响其它n-2个结点的D函数值。
定理:对于模块树中任意一个非叶结点,其向子结点的数据传送顺序按子结点的F函数值从大到小排列,即可保证树中所有结点都获取数据所花费的时间最短。
2.2 算法的证明
根据上节中D函数的定义,如果交换两个传送顺序连续的子结点Ai和Ai+1的传送顺序,也就是先传送给Ai+1结点,后传送给A结点,将不影响其它n-2个结点的D函数值。
假设F(Ai)≤F(Ai+1),在Ai和Ai+1的传送顺序交换前:
在Ai和Ai+1的传送顺序交换后:
由于,所以交换后的MAX(D(Ai),D(Ai+1))值要小于等于交换前的值。又由于其它n-2个结点的D函数值不受影响,故此交换后的MAX(D(A1)、D(A2)…D(An))的值要小于等于交换前的值。
综上所述,两个传送顺序连续的子结点Ai和Ai+1,如果F(Ai)≤F(Ai+1),则交换它们的传送顺序后,可以取得一个更优的F(A)值。以此类推,可以证明只要向子结点的数据传送顺序按子结点的F函数值从大到小排列,就可以得到一个最优的F(A)值。
3 算法的实现
3.1 模块树和传送顺序的数据结构
表示树的数据结构种类较多,由于模块树的边有权值,所以使用矩陈来表示这个树结构[3]。定义二维数组tree[N+1][N+1],其中N表示树中结点数,结点号分别为1、2…N。其中任一元素tree[i][j],若i>j,表示结点i到结点j的权值。如果i≤j,或i结点到j结点没有边,tree[i][j]值设置为-1。
算法的输出结果有两类:一类是所有节点的F函数值,另一类是所有非叶接点的数据传送顺序。用另外一个整型二维数组order[N+1][N+1]表示输出结果。假设结点i(1≤i≤N)有k个子结点,则order[i][0]表示结点i的F函数值,初值设置为0;order[i][j](j=1~k)表示i结点向所有子结点的传送顺序。如order[i][1]表示第1个传送的子结点,order[i][j]表示第j个传送的子结点。order数组的其它元素值无意义,其值设置为-1。
3.2 算法流程设计
计算所有结点的F函数值和传送顺序的最直观的算法当然是递归算法,但是递归算法效率差,所消耗资源多,不适合于嵌入式实时系统。可以使用动态规划法计算所有节点的F值和传送顺序,其算法原理是:首先将所有叶结点的F函数值设置为0,并将下述过程循环m次,m是树的非叶结点数。
找到一个结点,其子结点的F函数值都已经获得。按照子结点的F函数值从大到小的顺序,将这些子结点的结点号排列在order数组中相应的位置,并计算出这个结点的F函数值,放入order数组相应位置。流程图如图2。
4 结束语
每个复杂的多模块结构的实时嵌入式系统都有不同的特点,如果能设计出一个适用于本系统的快速数据配置方法,将极大地提高系统的稳定性、可靠性和实时处理能力。嵌入式实时系统的数据配置方法牵涉到数据库技术,计算机通信,嵌入式操作系统和嵌入式编程等多方面的知识,是一项复杂的工作,需要在实践中不断地创新和发展。
参考文献
[1]连一峰.分布式侵入检测模型研究[J].计算机研究与发展,2003,40(8):23-24.
[2]李忠民.ARM嵌入式VXWORKS实践教程[M].北京:北京航空航天大学出版社,2006.
[3]耿国华.数据结构-C语言描述[M].西安:西安电子科技大学出版社,2002.
[4]王哓东.算法设计与分析[M].北京:清华大学出版社,2003.
实时多任务控制系统 篇8
任务成功概率是装备在规定任务剖面内能完成任务的概率, 是任务成功性的度量指标, 也是重要的装备保障性评估指标。当前任务成功概率评估模型多是针对单系统开展研究, 系统组成结构串联或是并联, 根据系统部件的可修复情况和修复时间分布给出任务成功概率计算公式[2—4]。文献[5, 6]给出了多种任务特点及要求情况下可修系统的任务成功概率评估模型。对多阶段任务则是研究备件保障水平对任务成功概率的影响[7—10]。网络计划技术非常适用于复杂系统的分析, 其中主要的PERT技术主要考虑工序的时间取值对任务工期的影响[11,12], 没有考虑工序单元故障及修复情况;GERT模型根据概率有多个不同的引出端[13,14], 能够很好地描述流程中活动之间的关系及状态转移, 但不适用于逻辑关系要求严格的系统可靠性问题。多数方法研究保障系统本身的可靠性及维修策略问题, 而对保障任务组成及复杂度关注不够。
鉴于此, 本文基于流水网络计划技术提出一种较为通用的任务成功概率评估仿真方法, 面向多任务要求, 在考虑系统故障及维修资源的基础上, 处理诸如弹药调度系统等此类复杂系统的任务可靠性评估问题。
1 面向多任务的调度系统分析
弹药调度系统具有显著的网络计划性质, 多任务调度过程可理解为流水网络计划的任务分段处理, 但时距关系要求严格。分析其特征如下。
(1) 调度系统由多个相互独立的分系统组成, 分系统之间工作不交叉, 都可独自进行调度任务, 只是在管理系统的统一布置下并行工作。
(2) 分系统具有相同的工序组成, 逻辑关系相同并且要求严格, 分系统按照工序关系组成调度网络计划图, 流水网络计划以此为基础。
(3) 根据资源人员等限制, 确定某些分系统参与调度工作, 最后一个分系统完成任务后才算所要求调度任务的结束。
(4) 根据任务批次量及参与调度的分系统数量, 合理分配调度任务, 工作过程中可根据状态实时调整任务分配。
(5) 分系统中工序单元故障服从一定的分布, 可通过更换件等维修工作进行完全修复, 即故障后恢复为初始完整的功能状态。
(6) 暂不考虑修复失败的情况。
通常的解析方法针对的是串 (并) 联系统的单任务成功性, 或是单部件中多任务的成功性。而弹药调度系统由于其网络结构复杂, 且任务批次量多, 尤其是工序自由时差的存在导致工序单元故障率分布函数取值范围各相不同, 系统的故障率分布函数几乎不可整合, 特别是当工序单元分布函数不同的情况下更是如此。故而采用Monte Carlo仿真方法进行任务成功概率评估, 根据各工序单元分布产生随机数, 以此计算所需数据进行统计分析。
2 基于流水网络计划的任务总工期
2.1 分系统时间参数计算
一般流水网络计划是将一个任务计划分解为多个阶段实施, 以利于工程任务连续紧凑地进行。其区别于网络计划技术的特点是工序间存在时距关系, 即某工序只需其紧前工序开始一段时间后即可实施, 而不需要其完全结束, 如图1所示。
满足时距方程的网络计划才具有流水关系, 方程如下:
式 (1) 中, Ki, i+1为开始时距 (Ki, i+1>0) ;Ji, i+1为结束时距 (Ji, i+1>0) ;ti为活动的持续时间 (ti>0) ;i为活动的代号 (i≥0) 。
而调度任务本身具有多阶段性质, 单个调度分系统任务计划的实施由多个相同的任务流程组成, 每个任务流程都具有相同逻辑顺序关系的网络图, 依照约束条件多个任务流程顺次展开, 最后一个任务流程完成时整个任务计划才算结束。只是其时距关系相对较为严格, 同一流程的工序只有在紧前工序完成后方可开始, 需要对一般流水网络计划的时距方程加上Ki, i+1≥ti条件, 关系如图2所示。此时的工序显然也满足时距关系, 这里仍称作流水网络计划技术。
在此时距关系基础上计算流水网络计划的时间参数, 这里仍以网络计划通常使用的参数作为对象;但需做出调整。假设参与调度任务的分系统共计M个, 第m个调度分系统负责Qm个批次量的任务。双代号网络计划图有n个工作节点组成, 第q个任务流程的工序i-j的时间参数以此表示为:工序持续时间Dm, qi-j、工序最早开始时间Em, qS, i-j、工序最早完成时间Em, qF, i-j、网络计划工期Tm, qp、工序最迟完成时间Lm, qF, i-j、工序最迟开始时间Lm, qS, i-j、工序总时差Tm, qF, i-j等。由于约束条件的变化, 对多任务流程的流水网络计划时间参数的通用计算公式进行修正。
2.1.1 工序最早开始 (完成) 时间
此参数不仅受同一任务流程下其紧前工序的约束, 也受限于前一任务流程的同一工序的完成时间。
(1) 网络计划起始工序:
(2) 其他工序:
式 (3) 中, Em, qS, h-i为工序i-j的各项紧前工序h-i的最早开始时间;Dm, qh-i为工序i-j的紧前工序h-i的持续时间;Em, q-1F, i-j为工序i-j的前一流程的最早完成时间。
计算从网络计划的起节点开始, 各任务流程顺着箭线方向依次逐项计算。
多任务流程的工序最早完成时间计算方法与单流程的网络计划相同, 公式为
2.1.2 网络计划工期
单个调度分系统的任务完成工期为最后一个任务流程的最后一道工序的完成时间, 本文流水网络计划中属于无规定工期情况, 各任务流程的计划工期即等于计算工期Tm, qc=max{Em, qF, i-n}, 其中Em, qF, i-n为第q个流程以终节点为完成节点的工序i-n的最早完成时间。显然此调度分系统的网络计划工期为Tmp=Tm, Qmc。则各任务流程的计划工期为不耽误下一流程完工的完成时间:
2.1.3 工序最迟完成 (开始) 时间
与最早开始时间类似, 受到其紧后工序和下一任务流程中同一工序的最迟开始时间约束。
(1) 以终节点为完成节点的工序:
(2) 其他工序:
多任务流程的工序最迟开始时间计算方法与单流程相同, 公式为
2.1.4 工序总时差
工序总时差表示该工序可以利用的机动时间, 这里仍用单流程计算公式
需要说明的是, 多任务流程工序总时差不仅对其本流程紧前紧后工序有影响, 而且影响到了其他流程工序的可利用时间。正是此参数的存在导致了不同工序相同的故障恢复时间对本分系统任务总工期的影响不同。流水网络计划中, 以各工序最迟开始时间为实际执行时间, 此时可充分利用总时差进行准备工作及任务间的休整。
2.2 总工期确定
基于单个调度分系统流水网络计划时间参数的计算, 确定整个调度任务的总工期。由2.1节可知, 只要确定了调度分系统各任务流程的工序持续时间Dm, qi-j, 就可计算出此系统的任务工期, 因此可将其表示为工序持续时间集合的函数形式:
式 (10) 中, 所有流程工序持续时间集合, 而各任务流程工序时间参数集合
整个调度任务中所有调度分系统全部完成工作后任务才算完成, 亦即是任务总工期由最后完成任务的分系统工期决定, 表示为
2.3 任务分配调整方法
由于各调度分系统组成结构相同, 对每批次调度任务的相同工序持续时间可认为是无差别的, 在任务进展顺利 (即系统各阶段无故障现象发生) 时, 分系统工期与任务批次量有关。此种情况下调度系统可靠性达到100%, 依据对式 (11) 的最小化原则即可确定各分系统的任务批次量。然而, 调度任务风险就是由系统不可预测的故障所造成的, 分析任务成功性则是考虑可能出现的系统故障对任务总工期的影响。
可以设定各分系统的同一工序i-j的故障修复时间为Ri-j。为方便计算操作, 调度任务进行时若分系统m的第q批次任务流程中某工序i-j发生故障, 可任务此时的工序持续时间增加了修复时间的增量, 表示为
考虑修复时间的分系统可形成新的工序持续时间集合, 若任务批次量不作调整, 则其工期表示为。发生故障的情况下, 分系统工期可能显著延长, 必要的情况下则需要向其他分系统转移尚未开始的任务, 其工期又与调度任务量有关, 修正分系统工期表示函数为
设定各分系统的任务量为Q=[Q1…Qm…QM], 依据式 (10) 得到的工期值, 各分系统任务量调整方法如图3所示。
在这种情况下, 以整个调度任务总工期最小化为目标, 以动态调整各分系统的任务批次量为手段来调整调度过程中个别工序故障造成的影响, 在实际可操作情况下获得了任务总工期及各分系统任务量。
3 任务成功概率计算模型
3.1 任务成功率模型
弹药调度的任务成功性表现为调度系统设定保障资源的情况下按时完成规定任务的可能性, 对应的任务成功概率是指其规定任务剖面中成功完成的概率。则可定义弹药调度系统任务成功概率为其任务成功完成总次数与任务执行总次数的比值, 应用蒙特卡罗仿真方法可以简化任务成功概率的计算, 即任务成功概率PMCS=成功完成任务的总次数/仿真总次数。
由第2节的计算可知, 调度任务成功性与上级下达的调度时间有直接关系, 这里要求的调度时间表示为TR, 第w次仿真的任务完成工期为T (w) 。显然, 当T (w) ≤TR时任务成功, 否则失败。统计得出在共计W次仿真中, 按升序关系出现的任务完工期有T=[T1T2…Tc…], 对应出现的频数为N=[N1N2…Nc…], 即有∑Nc=W, 表示其出现概率为P=[P1P2…Pc…]。以要求调度时间TR确定截断位置c', 即当c≤c'时Tc≤TR, 当c>c'时Tc>TR。根据以上描述, 则可得到仿真方法下与TR有关的任务成功概率模型:
式 (14) 表示了任务成功概率与任务要求调度时间的关系, 在加上第2节中考虑到的计划工期与流水网络计划中工序持续时间及故障修复时间的关系, 任务成功概率仿真方法如实反映了调度系统结构组成及可靠性对调度任务的影响。
3.2 仿真操作方法
3.2.1 随机数产生方法
蒙特卡洛仿真的基础工作即是产生合理的随机数, 就本文而言需要产生调度各分系统所有任务流程下的工序持续时间, 以及在此基础上根据工序单元的可靠性分布产生故障点, 进一步修复时间也可随机产生。
设总的调度任务批次量为Q, 各分系统的任务量为Q=[Q1…Qm…QM], 由于调度过程中不可预测故障的出现, Q是动态调整的。而对于每一次仿真过程而言, 各分系统工序的持续时间一旦产生之后就是固定的, 不可随任务量的增减而改变。这里为保证操作方便, 在第w次仿真过程中, 对每个分系统m的工序i-j持续时间都产生Q个, 即, 任务工期计算过程中, 根据分系统的任务量取其前Qm个进行运算, 可保证Qm≤Q。具体的数值根据工序的持续时间分布随机产生。
随机产生的时刻点落在范围内, 表示该工序单元此阶段任务过程中出现故障, 则应用公式 (12) 处理其持续时间。需要说明的是, 由于故障均可通过更换备件等措施予以排除, 可认为单元“修复如新”, 即其累计工作时间需要从0重新开始算起。
以上的相关随机数产生方法确定了各调度分系统的时间参数, 只是的维数全为总任务批次量Q, 通过任务工期的计算及任务量的调整, 可最终确定此次仿真过程中的任务总工期及各分系统的任务量。
3.2.2 仿真流程
根据随机数产生方法及通用Monte Carlo方法, 基于仿真过程的多任务调度系统任务成功概率评估流程如下。
步骤1:设定仿真次数W、调度批次量Q、参与调度的分系统数量M, w=1;
步骤2:产生各分系统工序的Q维持续时间集合, 以此为基础产生随机故障点, 修正持续时间集合为
步骤3:确定各分系统任务量Q=[Q1…Qm…QM];
步骤5:如果需要根据2.3节方法调整Q, 转步骤3, 否则转步骤6;
步骤6:若w<W, w=w+1转步骤2, 否则转步骤7;
步骤7:统计总工期为Tc的次数Nc, 获取各总工期值出现的频率P=[P1P2…Pc…];
步骤8:根据式 (14) 得到任务成功概率与要求调度时间的关系PMCS (TR) ;
步骤9:结束。
3.3 几类情况考虑
考虑到调度系统工序持续时间分布、故障概率分布、修复时间分布以及保障资源配置对任务成功性的影响, 将调度任务可能遇到的情况分为以下几类。
3.3.1 Ⅰ类情况
此类情况属于无故障条件下的任务调度, 调度系统各设施设备可靠性极高, 或设定任务下故障现象不可能发生。则仿真过程中只需确定工序持续时间, 根据均衡化原则确定调度任务分配方案, 以任务总工期最小化为目标静态确定调度时间。
3.3.2 Ⅱ类情况
通常情况下需要考虑工序可能的故障情况。工序单元的可靠性函数与其累计工作时间有关, 实际情况中必须考虑发生故障情况下的调度任务风险。由于故障发生的不可预测性, 工序故障修复时间显然影响了此分系统的任务工期, 进而可能影响调度任务总工期。若分系统的任务工期由于故障而显著延长, 则需随时调整任务分配方案, 仿真过程中这是个动态过程。进一步可讨论工序故障修复持续时间的取值, 通过其分布函数同样随机产生式 (12) 中的Ri-j。
3.3.3 Ⅲ类情况
以上两种情况下没有考虑维修资源的限制, 而有些情况下维修小组数量级备件数量会限制到故障的即是修复。此类情况下可能会出现两种结果: (1) 维修小组的限制, 倘若某工序故障时所有的维修小组已经处于忙的状态, 则修复时间Ri-j还需加上等待时间; (2) 备件数量的限制, 如果某工序故障时缺乏相应备件, 则其处于不可修复状态, 此分系统只能完成本工序之后业已开始的任务, 之前的乔杜批次量需要调整给其他分系统。
4 算例
某调度系统包括6个工序逻辑关系相同的分系统, 网络计划关系如图5所示。系统中各工序执行小组兼有维修职责, 故可不考虑维修资源对任务进度的影响, 显然属于Ⅱ类情况。下面对调度任务批次量为Q=20的任务成功概率进行仿真分析。
工序持续时间采用三时估计法确定, 其概率分布可认为是正态分布, 分布形状可由乐观时间a、最可能时间m和悲观时间b确定, 计算公式:期望、方差。工序单元故障率服从指数分布F (t) =1-e-t/λ, 故障修复时间认为是固定的。相关时间参数见表1, 时间单位为同一量纲。
仿真次数设置为W=10 000, 图6所示为当参与调度任务的分系统数量为3时的一次仿真结果, 进度条中间的数字表示此分系统的第几批次任务, 3个分系统的任务批次量依次为7、7、6, 调度时间由分系统1决定, 进度条中浅颜色为故障修复时间。调度任务成功概率随要求调度时间的变化情况如图7所示。
当参与调度的分系统数量不同时, 对应的任务成功概率及要求任务工期显然不同, 图8所示为任务成功概率分别为99.9%、99.0%和90.0%时不同分系统数量对应的要求任务工期大小。参与调度的分系统数量要求越多, 需要的资源及人员也就越多, 此参数的意义在于可供指挥决策人员综合任务工期、可靠性要求以及调度资源来确定调度方案。
5 总结
从弹药调度系统执行多任务情况出发, 分析提取了此类复杂系统的特征。应用流水网络计划技术确定了分系统固定任务下的进度时间参数, 在确定任务总工期的基础上建立了任务成功概率仿真模型。此模型具有广泛的通用性, 工序单元可服从不同的可靠性函数, 甚至只需知道工序持续时间及故障时间的取值规则和范围便可进行仿真分析, 系统结构越复杂越能体现其优越性。此方法给出了几类不同保障情形下的应用形式, 正确评估了复杂多任务下的任务成功概率, 为弹药调度方案的制定及保障资源的优化配置提供决策依据。
摘要:正确评估弹药调度系统的任务成功概率, 作为装备可靠性分析的重要内容, 是制定装备保障方案和优化配置保障资源的重要依据。针对多任务调度系统的复杂性, 以流水网络计划为框架, 计算分系统调度进度时间参数。考虑工序单元故障及修复时间的情况下动态调整分系统的任务量, 最终确定任务总工期。以此将任务总工期作为任务成功概率的比较数据, 根据工序持续时间及故障时间分布产生随机数据, 应用蒙特卡洛方法对仿真结果进行统计分析, 建立了任务成功概率评估模型。并且分析了几类维修资源配置情形下的仿真操作方法, 提高了评估方法的实际应用能力。最后, 通过一个算例验证评估方法的有效性和实用性。
实时多任务控制系统 篇9
关键词:全自主足球机器人,视觉系统,目标检测,红外测距
0 引言
全自主足球机器人比赛要求多个机器人活动在一个实时、噪声以及对抗性的复杂环境下, 通过协作、配合朝向一个共同的目标 (或完成复杂任务) 。它包括智能机器人系统、多智能体系统、实时图像处理与模式识别、智能体数据结构设计、实时规划和推理、移动机器人技术、机器传动与控制、传感器与数据融合和无线通讯等技术。机器人足球比赛是近几年发展起来、进步较快且有很大研究潜力的一类。这类机器人的视觉及控制器等各类部件均装载在机器人本体上, 通过无线通讯与其它机器人、主控计算机及人的信息交流。比赛过程中, 机器人通过视觉系统搜索球及球门等环境信息, 通过声纳、红外或激光等测距系统进行机器人全局定位及障碍物检测, 在进行信息融合之后形成行动策略并实施。因此机器人如何快速识别目标并且定位是比赛取胜的关键性环节, 本文将对这方面的问题进行讨论。
1 全自主型足球机器人视觉系统介绍
1.1 视觉系统的硬件组成
实验中使用的足球机器人是上海广茂达伙伴机器人有限公司研制的AS-UII能力风暴智能机器人大学版。它是典型的自主移动机器人, 具有较高的自规划、自适应能力, 适合于较复杂的非结构环境中工作的复杂系统。机器人与计算机之间使用基于68HCll单片机开发的交互式C语言进行编程。
视觉系统采用CMUcam视觉系统:CMUcam视觉模块主要是由1个SX28微处理器与OV6620摄像头 (CMOS) 组成, CMOS摄像头把当前窗口的视图通过简单的处理, 返回像素点矩阵。板卡通过RS-232或者TTL串口进行通讯。
1.2 视觉系统的软件流程
在比赛中, 视觉系统依靠颜色来识别并判定目标。机器人对颜色的识别过程如下:当摄像头获得彩色图像以后, 机器人上的嵌入计算机系统将模拟视频信号数字化, 将像素根据颜色分成两部分:感兴趣的像素 (搜索的目标颜色) 和不感兴趣的像素 (背景颜色) 。然后对这些感兴趣的像素进行颜色分量的匹配。在比赛之前已经存储了比赛场地环境下的各种颜色信息, 比赛时需要将实时信息与颜色信息比较或匹配, 以寻找搜索目标的颜色区域。判断:如果目标出现在视野中, 通过多种传感器的综合应用, 确定目标与机器人的相对位置, 为决策子系统提供依据。否则继续寻找。视觉系统的软件流程如图1所示。
2 视觉系统中目标的识别与相对定位
2.1 颜色空间的建立
颜色空间是一个描述体系, 用于确定颜色在体系中的位置及相互之间的关系。同一物体, 在不同的光照和成像距离条件下, 映射到内存的RGB数值会发生较大的变化, 不利于目标的识别。特别是在环境复杂、目标较多且颜色相近的比赛环境中, 识别率会大大下降。为提高识别效果, 我们将颜色表示从RGB颜色空间转化到更接近人眼观察方式的HSI (Hue, Saturation, Intensity) 颜色空间, 从而提高不同光照环境下识别系统的鲁棒性。RGB颜色空间转化HSI到颜色空间公式如下:
2.2 目标检测
成熟的目标检测技术有:模板匹配、边缘检测、色彩分类等。足球机器人视觉系统要求有很高的实时性。而且比赛规定:机器人和球都用不同的颜色加以区分, 因此, 为了快速地检测到目标, 采用基于色彩的图像分割是最好的方法。由于不同的光照环境下, 物体的RGB值变化很大。为了能够准确的识别目标, 我们只有设定颜色空间中3个分量的上下阈值。这样就能在很大程度上把目标物体与图像背景颜色区分开。
比赛之前针对特殊的比赛环境, 手工设定各个目标颜色分量的值。操作办法:通过计算机串口连接视觉传感器, 锁定一幅目标图片。通过鼠标选取颜色参考区域, 通过计算该颜色区域中各点的颜色特征统计出RGB和HSI空间中各分量的最大值和最小值, 利用最初确定的阈值对彩色图像进行二值化处理, 参照图象处理的结果对阈值进行小范围调整, 达到理想效果后记录阈值, 在此范围内的子空间为目标颜色。
2.3 图像噪声的去除
在图像获取过程中由于采样量化、传递和环境干扰的存在致使图像出现一些高频的噪声, 这些噪声会影响后续处理的效果, 对图像进行平滑处理可降低噪声, 获取比较理想的图像质量, 提高后续处理的精度。因为系统要求有极高的实时性, 而频率域法所采用的算法比较复杂, 要求对整个图像进行处理, 实时性较差, 因此系统采用比较简单的高斯滤波法。
试验中高斯算子用模板表示卷积核为A/16, 高斯函数能把图像变模糊, 有效的消除一切尺度远小于高斯分布空间常数σ的图像强度变化, 它在空域和频域内都是平滑的, 因而引入任何在原始图像中未曾出现的变化的可能性最小。
小结:经过我们实际的实验测定, 高斯滤波方法速度快, 并且效果也较理想, 因此图像平滑采用这种方法。
2.4 边缘的增强
边缘通常是图像中某些特性不连续行为表征的, 如灰度的突变、彩色的变换、纹理结构的变化等。边缘表示图像中一个区域过渡到另一个区域。通常图像的边界有以下几种形式:阶跃式、灰度渐变式、斜率上升又下降式、脉冲式以及带有不同干扰等形式, 要突出图像中的边缘, 然后再用某些阈值使之分割出来, 从而得到边界的图像。常用的几种处理有差分运算、梯度算子、模板匹配等。
小结:在实际应用中, 模板匹配方法需要建立大量的模板以适应不同的光线环境, 灵活性小, 在此不予考虑此方法。以上几种算子经过实际应用进行比较, Sobel算子运算时间少且精度高, 效果比较好。
Sobel算子:是加权平均再求差分, 对x, y的模板如下
图像的初始状态 (见图2) 和图像经过处理后的效果 (见图3) 。
2.5 目标的定位
当机器人确定目标出现在视野区域内时, 为了进一步得到机器人与目标的相对距离, 本系统采用了红外测距卡。它利用PSD距离测量传感器能精确测量10-80cm范围内物体的距离。在机器人比赛中可对周围环境进行探测, 确定对手所在方位等。红外测距卡能连续地读出距离, 将距离信号转换为电压, 不需要多余的外围控制电路。物体颜色对测量精度影响较小。用红外测距卡测量距离PSD输出的是电压变化值, 由于PSD所输出的电压与测量的距离是非线性关系, 用函数可表示为Y=α+βx-1
因此若要显示所测距离, 必须根据实验数据求出α、β的值, 在对测量距离精度要求不是很高的情况下 (比如用于比赛) , 我们可以用较为简单的分段线性方法对距离值进行校正。其方法如下:在PSD距离传感器有效距离 (10cm-80cm) 范围内得到机器人显示数据与距离的曲线关系, 如图4所示。
然后将曲线均匀分为n段, 每段可近似认为是线性的, 根据公式
公式中Xi-1, Yi-1分别为第i-1点的距离和机器人显示的读数, Xi, Yi分别为第i点的距离和机器人显示的读数Y为测量点的机器人读数, X为实际测量距离可得到机器人显示的读数Y所对应距离为
具体定位方法:机器人通过视觉系统发现目标后, 通常需要确定目标相对机器人的位置。本文综合运用数字罗盘标定方向, 声纳和红外测距。先判断机器人的方向, 如果朝向对方球门方向、通过声纳和红外传感器确定目标和球门的距离, 采取相应的子策略。否则, 通过数字罗盘方向, 改变机器人的方向。
3 结束语
通过两个机器人合作进球的测试, 表明视觉软件系统可较好地完成检测、识别和跟踪预测的功能。系统运行稳定, 其速度可达到25帧/s。在运行过程中, 当发生快速碰撞时, 系统的跟踪效果有些下降, 但可以通过其它方法解决。
参考文献
[1]高大忠.机器人足球—智能机器人的新领域[J].机器人, 1998 (4) .
[2]PARKS W, KI MJ H.et al.Development of a Multi-a-gent Systemfor Robot Soccer Game[C].InIEEE proc International Conferenceon Robotics and Automation Albuquenque.New Mexico.1997:626-631.
[3]贾云得.机器视觉[M].北京:科学技术出版社, 2003.
[4]R.C.GONZALEZ.R.E.WOODS Digital i mage processing[J].Addison-wesley.1999.
[5]章毓晋.图像工程 (下) [M].北京:清华大学出版社, 2000.