一种基于VxWorks的导弹火控系统软件实时多任务设计方法

时间:2022-07-27 03:36:36

一种基于VxWorks的导弹火控系统软件实时多任务设计方法

摘要:在某导弹火控系统的设计开发过程中,为满足系统的实时性和多任务处理的要求。选用VxWorks嵌入式实时操作系统用于火控系统的软件设计中。根据系统功能的研制需求,给出火控系统软件的任务划分及任务优先级设置、软件运行时序、任务间运行调用关系、任务间通信机制遴选方法、中断处理程序设计中的注意事项等。

关键词:防空导弹 火控系统 多任务 实时性 VxWorks

中图分类号:TP391.9 文献标识码:A 文章编号:1007-9416(2015)03-0127-02

目前,实时嵌入式操作系统已得到广泛应用,VxWorks以其优秀的性能成为实时操作系统的最佳选择之一。火控系统是导弹武器系统中火力单元作战控制的核心,主要用于响应指挥系统的各种命令,处理雷达等探测设备的目标信息,组织火力配置,控制导弹发射。

随着技术的进步,导弹武器系统对于火控系统功能要求越来越多,性能要求越来越高,然而在实现多种复杂任务功能的同时又必须保证任务处理的实时性。为了保证火控系统的实时性和可靠性,基于Vxworks操作系统的火控软件实时性设计会显得越来越重要。将VxWorks嵌入式实时操作系统用于火控软件,通过多任务合理设计可提高火控系统的实时性和可靠性。

为此,本文对某导弹火控系统软件进行了设计。根据不同任务间的关系,给出了主处理流程,以及内外网数据的接收与发送、软件运行时序、数据录取等主要处理环节的实现方法。

1 Vxworks的多任务特性与火控软件设计

VxWorks操作系统是嵌入式可剪裁的实时多任务操作系统,它提供以优先级为基础的抢占调度策略[1]。VxWorks操作系统在其开发环境下,可通过适当配置、修改系统参数,对相应芯片进行驱动生成。

在VxWorks操作系统中,用户的应用程序通常由一个父任务开始,此任务在VxWorks操作系统启动运行后由系统创建。在父任务中,用户可以创建自己的应用任务。

在Vxworks操作系统中每个任务都处于以下四种状态之一:

(1)ready――准备由CPU处理;

(2)pended――由于得不到某些资源而阻塞;

(3)delayed――任务休眠、不占有CPU时间片;

(4)suspended――悬挂状态,任务不能执行。

多任务需要一种排序算法,以向CPU分配ready态的任务。Vxworks提供的基于优先级抢占式排序算法特别适用于实时应用,在抢占式优先级排序机制下,每个任务具有一个优先级,内核确保CPU分配给准备运行的最高优先级任务。这种排序方法是抢占式的,即若一个任务的优先级比当前正在运行的任务优先级高,内核立即保存当前任务的上下文,切换到最高优先级的任务。在图1中,任务A被高优先级的任务B抢占,B被C抢占。当C完成时,B继续执行;当B完成时,A继续执行。

根据导弹武器系统的特点,其火控软件应是火力单元的指挥控制核心,需接收指挥单元和外部设备的多种信息,能够组织多目标打击所需的目标和火力资源,具备武器装备作战、训练等多种能力。具体包括:

(1)接收多个内外部节点(如:通信、导航设备,指控系统,发控系统和雷达系统等)的数据和信息;

(2)能够实现多目标同时跟踪,并对其实现火控级的精度解算和导弹制导控制;

(3)能够完成武器装备作战使用所需的作战、训练、维护等功能。

另外,导弹武器系统对信息解算和命令处理的实时性要求很高,防空导弹和空中目标均以高速运动,若导弹火控软件的实时性不好,则会导致数据处理结果与目标的实际飞行情况差距较大,不能满足导弹武器系统的使用要求。

实际上,这些数据和信息的到达时间具有一定的随机性,要对这些数据和信息进行实时处理,为了满足处理输出精度要求,运行的同时既不能丢失数据、信息、降低实时性,又要按照事件的出现的顺序和轻重缓急,合理的排队处理,就提出了实时控制多任务调度问题。因此高效的实时内核,提供优良的多任务环境对于火控软件的实现尤为重要。

Vxworks的实时性体现在多任务处理机制上,它具有高效的任务管理、快速灵活的任务间通信、强实时性等优点,基于以上特性,Vxworks非常适合作为火控软件的实时操作系统。

2 火控软件设计

2.1 任务的划分及优先级设置

火控软件设计基于Vxworks操作系统,采用多任务的设计思想,根据火控对内、对外连接和本身功能设置的需要,对任务进行合理划分和优先级的合理设置。任务划分得准确合理,可以简化火控软件设计的复杂性,也可以增强火控系统的稳定性和健壮性[2]。任务优先级设置得准确合理,能够保证任务调度的正确性并为系统提供更好的实时性保障。

火控软件按照周期性地运行,通过网络接收内部传感器和外部指控单元的命令和数据,经过解析和数据处理后向其它结点发送命令及数据。根据软件各功能特点,将火控软件主要划分为8个任务,优先级由高至低分别为:

(1)看门狗定时器中断处理任务;

(2)初始化任务;

(3)软件关闭任务;

(4)准秒脉冲中断任务;

(5)网络数据接收任务;

(6)串口数据接收处理任务;

(7)主处理任务;

(8)数据录取任务。

根据任务优先级划分,火控软件基本时序如图2所示。

其中初始化任务在Vxworks启动后自动运行,看门狗定时器中断处理任务、准秒脉冲中断任务、网络数据接收任务、串口数据接收处理任务和主处理任务在初始化任务中发起,初始化任务一次性运行完成后自动消亡;数据录取任务在“录取令”到达时,在主处理任务中发起;系统关机任务在武器系统待命状态下,收到“系统关机令”时在主处理任务中发起,软件关闭任务将关闭正在运行的其它所有任务及相关的信号量、消息队列、网络套接字等资源,并保存相关数据及配置。

看门狗定时器中断处理任务决定了主处理任务的运行周期,为确保主处理任务周期的准确性,火控软件其它任务的优先级必须低于看门狗定时器中断处理任务。初始化任务和软件关闭任务实现开启和关闭其它任务和资源的作用,为不影响软件的正常开启和关闭,两者的优先级高于除看门狗定时器中断处理任务以外的任务。为了保证主处理任务能够处理到最新数据,火控软件遵循“先收后处理”的原则,网络数据接收任务和串口数据接收处理任务优先级都高于主处理任务,而网络数据的重要性大于串口数据,故网络数据接收任务优先级高于串口数据接收处理任务。

火控软件任务运行关系如图3所示。

2.2 任务间通信机制的选择

任务间通信机制是多任务间相互同步和通信,以协调各自活动的主要手段。Vxworks提供的任务间通信手段按其速度由快到慢依次是信号量、消息队列、管道和Socket套接字。常用的通信机制是信号量和消息队列,套接字用于网络编程[3]。

2.2.1 信号量

信号量是提供任务间通信、同步和互斥的最优选择。它提供任务间的最快速通信,也是提供任务间同步和互斥的主要手段。对于互斥,信号量可以上锁对共享资源的访问,并且比禁止中断或禁止抢占提供更精确的互斥粒度。对于同步,信号量可以协调外部事件与任务的执行。Vxworks有三种类型的信号量,分别用于解决不同的问题。

(1)二进制信号量:最快的最常用的信号量,可用于同步或互斥。

(2)互斥信号量:为解决具有内在的互斥问题、优先级继承、删除安全和递归等情况而最优化的特殊的二进制信号量。

(3)计数器信号量:类似于二进制信号量,但是随信号量释放的次数而改变。适合于一个资源的多个实例需要保护的情形。

在火控软件中充分利用了二进制信号量的同步和互斥功能。

(1)同步。在看门狗定时器中释放同步信号量给主处理任务,使得主处理任务能够周期性的运行。

(2)互斥。利用二进制信号量的互斥功能,对网络数据接收任务与主处理任务共用的数据接收缓冲区进行互斥保护,防止产生对同一缓冲区的同时读写操作。

2.2.2 消息队列

消息队列是Vxworks提供的单CPU中任务间通信的主要机制。消息队列允许以FIFO或基于优先级方式排队消息,消息的数目可变,消息的长度可变。任何任务都可以向消息队列发送消息,也可以从消息队列接收消息。多个任务允许从一个消息队列收发消息。但是,两个任务间的双向通信通常需要两个消息队列,各自用于一个方向。

由于数据录取的优先级最低,但为了能够完整的录取有效数据并且不影响其它任务的运行,我们需要用一个临时的缓冲区来存储未能及时写进文件的数据,而消息队列正是能够满足我们要求的既可靠又方便的一种机制。

建立了一个基于FIFO方式的消息队列,消息的数目可根据需要进行设置,消息的长度设置到需要的最大长度,在网络数据接收任务与主处理任务中将要录取的数据发送到消息队列,数据录取任务从消息队列中接收消息,并在CPU空闲时实时记录数据。

2.3 中断处理程序的编写

中断处理程序是实时系统的重要组成部分。系统通过中断机制了解外部世界,并对外部事件作出响应。实时系统的反应取决于系统对于中断的响应速度和中断处理程序的处理速度。为了获得最好的反应时间,编程者必须清楚地了解Vxworks提供的函数库的特点。由于在很短的时间内,可能产生很多中断,高优先级的中断将阻塞低优先级的中断,因此,必须使中断服务程序的处理时间最短。在编写中断服务程序时,如果需要输出调试信息,由于printf可能引起阻塞,所以应该调用logMsg或其它的由logLib库提供的函数调用。

3 结语

本文给出了一种基于VxWorks实时操作系统的导弹火控软件的设计方法。该软件已在某导弹武器系统中得到了试验验证,试验结果表明,该设计方法效果良好,软件运行稳定可靠,能够满足该导弹武器系统的功能、性能需求。

参考文献

[1]孔祥营,柏桂枝.嵌入式实时操作系统VxWorks及其开发环境Tornado[M].北京:中国电力出版社,2002.

[2]陈养平,贺占庄.基于VxWorks的实时多任务软件设计[J].微电子学与计算机,2002(10).

[3]宋晓莉.基于VxWorks的数据通信及控制技术的研究与实现[D].西安:西安电子科技大学,2009.

上一篇:智能建筑中独立能源管理系统的规划设计 下一篇:油品升级变局