基于VxWorks与RTW Embedded Coder的无人直升机机载飞控软件系统开发

2012-07-13 03:06施晓颖褚双双
电子设计工程 2012年4期
关键词:信号量飞控任务调度

施晓颖,褚双双

(1.海军装备部 陕西 汉中 723213;2.陕西千山航空电子有限责任公司 陕西 西安 710065)

近年来,无人直升机因为在军民领域中的普遍应用,而在全世界范围内得到广泛研究。无人直升机需要面对地面障碍,敌人攻击和设备损坏等各种复杂的环境,同时它还要保持与地面技术人员的信息交互。因此,无人直升机的控制系统除了具备基本的控制律计算功能,还要负责更高层次的决策制定与任务规划。

机载飞控软件作为无人直升机飞控系统逻辑核心,需要处理硬件驱动,控制律计算,信息交互,任务规划和事件处理等多种不同任务,这对飞控软件的实时性、可靠性提出了很高的要求。飞控软件作为嵌入式软件的一种,具备嵌入式软件开发调试的所有不利因素,应用传统模式开发嵌入式飞控软件系统容易效率低下。由于上述原因,使得飞控系统框架,软件执行策略,控制方法,嵌入式软件开发测试平台的研究更加迫切。

文中搭建了一种基于VxWorks嵌入式操作系统和Simulink/RTW Embedded coder环境的无人直升机机载飞控软件执行框架与开发测试平台。利用该平台生成的嵌入式飞控软件将被直接应用于某型无人直升机飞行控制系统。

1 机载飞控软件

主要介绍机载飞控软件的的总体框架,包括大量的任务框图与外围设备。描述这些任务在VxWorks系统下是如何被调度执行以及基于行为的自动飞行控制是如何实现的。

1.1 机载飞控软件任务分类

飞控软件的任务按照触发机制不同可分为两类,一类是周期任务,即每隔一个固定时间段任务执行一次,飞行控制律计算任务(FCS)是一种典型的周期任务。另一类就是没有周期的任务,当特定事件发生时,任务被执行,称为非周期任务,串口接收数据任务(SerialRecv)就是一个典型的非周期任务。根据任务的重要性、紧迫性,可以定义任务的优先级。一般来说,非周期任务的优先级要高于周期任务,因为非周期任务的触发是不可预测的,需要及时处理。而对于周期任务,执行越频繁的任务优先级越高。

1.2 机载飞控软件总体框架

机载飞控软件的总体框架如图1所示。整个飞控系统框架由一系列框图组成,这些框图代表了不同的任务或设备。下面简要介绍代表任务的框图,余下的框图(除main外)皆代表外围设备。

SerialRecv代表了串口数据接收任务,该任务监视了机载计算机上所有串口设备。当某个串口设备有数据到达时,该任务被触发,并将收到的数据根据串口设备号的不同,填入到相应的数组型环形缓冲区中,等待其他周期任务处理。tBaseTask是基频任务,用来触发其他周期任务和执行自身的功能函数(例如对串口数据缓存区数据的解析与发布)。基频任务的执行频率应是其它周期任务执行频率的最小公倍数。FCS是飞行控制律计算任务 (包含将操纵量通过DA转换输出到舵机),经典的飞行控制律计算任务只包含外回路和内回路的计算。当应用基于行为的控制方法后,还要加上一层使用有限状态机原理实现的行为调度层,用来帮助无人直升机完成各种复杂的行为。ECS是发动机控制律计算任务,用来稳定发动机转速。CMM是回送数据到地面站任务,帮助地面技术人员监视无人直升机工作状态,获得有用的信息。Measure是测量任务,通过AD转换获得旋翼转速,舵机位置等实际参数。以上周期任务的优先级顺序为:SerialRecv>tBaseTask>FCS>ECS>Measure>CMM。任务间数据的交换是通过全局变量的形式实现的。

图1 机载飞控软件总体框架Fig.1 Airborne flight control software framework

1.3 任务调度管理

所有飞控任务调度的实时性,可靠性依赖于其所运行的环境,即嵌入式操作系统(RTOS)。VxWorks是一款广泛应用于军事、航空航天、医疗等领域的实时嵌入式操作系统,具备强实时性,高可靠性的优点。VxWorks在80486 66MHZ下任务切换时间,系统调用时间和中断响应时间都在几个微秒,支持基于优先级的抢占调度机制,保证任务能在规定时间内完成,同时VxWorks提供了一套高度优化的信号量机制,能够实现任务互斥与同步操作。

一组基于任务优先级抢占和信号量同步的多任务调度机制被用来确保所有周期任务按照预定时序执行,并使非周期任务能够及时得到处理。整套机制的伪代码实现如下:

Main任务被用来初始化飞控软件,创建多个周期任务,包括numTasks个子任务 (tSubRate)和一个基频任务(tBaseRate),再创建非周期任务,并将“释放属于基频任务的同步信号量(clockSem)”这个语句挂接到时钟的定时处理函数中去。为了使基频任务能够按时得到处理,要求时钟的定时处理函数运行在很高的优先级上,而中断服务程序(ISR)具有高于一切任务的优先级,显然是最适合用来作为定时处理函数的载体。VxWorks提供了两种定时处理函数运行在中断服务程序上的定时时钟,如表1所示。

表1 VxWorks提供的时钟Tab.1 The clock provided by VxWorks

由于受到机载计算机硬件条件的限制,看门狗时钟被用来作为定时释放基频任务信号量的时钟,基频任务的执行频率被设定为100 Hz(即周期为10 ms)。创建完所有任务后,main任务将挂起在stopSem信号量上直到其被释放,然后结束整个飞控程序。

基频任务包含一个主循环。在这个主循环中,基频任务首先等待信号量clockSem被释放,在clockSem被释放之前,基频任务将一直处于挂起状态。当clockSem被释放后,基频任务将根据每个子任务的周期,按时释放其对应的同步信号量,例如当某个子任务的周期为40 ms时,意味着基频任务每执行四次才释放一次该子任务的同步信号量。最后基频任务在执行完自己功能代码Model_Step后,重新挂起在clockSem上。

子任务的执行与基频任务执行属于相同的模式。子任务的循环首先挂起在对应的同步信号量上。当基频任务释放这些信号量后,被唤醒的子任务将按照优先级顺序依次执行,执行完后挂起在相应的同步信号量上。

非周期任务的实现与tSubRate类似,只是释放信号量是由非周期的事件触发的。

每个任务的执行必定会消耗一定的物理时间,任务执行的快慢依赖于CPU与外围设备的速度,以及控制算法的复杂性。高优先级的任务会抢占低优先级任务的CPU资源,在完成操作后,再把CPU资源还给低优先级的任务。VxWorks提供的任务优先级机制能保证系统资源的最优分配。

图2是采用上文描述的基于任务优先级抢占和信号量同步的多任务调度机制实现的多任务程序时序图。图中,tBaseRate代表基频任务,tSubRate1与tSubRate2代表周期子任务,这三个周期任务的周期长度之比为1:2:4。tAsync代表一个非周期任务,拥有最高的优先级。从图中可以发现,周期任务被定时触发,并按照优先级顺序依次执行 (即tBaseRate->tSubRate1->tSubRate2)。低优先级的任务会被高优先级的任务,比如tAsync在图中执行了两次,先后挂起了tSubRate1与tBaseRate任务。

图2 基于优先级抢占和信号量同步的多任务调度机制实现的多任务程序时序图Fig.2 Multi-task program timing diagram achieved by multi-task scheduling mechanism which is based on priority preemptive and semaphore synchronization

1.4 行为控制的有限状态机实现

飞控系统要求能够控制无人直升机完成一系列基本的行为,例如起飞,悬停,定速前飞等。通过这些行为的有序组合能使无人直升机完成复杂的任务。各种行为间的相互转换则是通过事件驱动的。

有限状态机(FSM)是用来表示有限个状态以及这些状态之间的转移和动作等行为的数学模型,具备有限和离散这两个特点。而这些行为的发生也是由事件驱动的。

如果把有限状态机的状态与无人直升机的基本行为相对应,那么就可以使用有限状态机的方法来实现无人直升机的行为控制。状态的转移可以理解为无人直升机行为的变化,执行的动作可以看作是飞行控制律结构和参数的改变。事件则可来源于以下4方面:

1)由传感器探测到的外围环境变化;

2)机载设备的损坏;

3)对飞行任务执行进度的判断;

4)地面站发来的指令。

这些事件的发生都可以驱动状态 (即行为)的转移。MATLAB为实现有限状态机,专门提供了Stateflow模块。应用Stateflow能够搭建无人直升机任务行为规划的逻辑模型并进行仿真。借助Stateflow Coder则可以将模型转换成实际的产品代码。

2 机载飞控软件开发测试平台

机载飞控软件系统的开发与测试是一项复杂的系统工程,一个良好的开发测试平台能够加快软件开发进度,提高软件可靠性。

基于Simulink/RTW Embedded Coder开发测试平台框架:使用Simulink作为控制器开发与数学仿真的平台已成为业界的标准。其图形化的界面以及丰富的资源能帮助技术人员设计各种复杂的控制器。但Simulink实现的只是数学仿真,离控制器的最终实现有很大距离。而MATLAB推出的RTW Embedded Coder模块(相对于RTW模块更加适合于产品级的嵌入式目标),用于将Simulink框图直接生成规范高效的嵌入式C/Ada代码(通过RTCA/DO-178B标准A级认证),调用合适的编译器生成可执行目标程序并提供良好的用户界面,将控制器的数学仿真与嵌入式软件实现统一在Simulink环境下。图3展示了基于Simulink/RTW Embedded Coder的开发测试平台框架。该平台由宿主机与目标机两部分组成,通过网络实现目标程序下载与运行时信息交互。

宿主机部分安装了MATLAB和Tornado。MATLAB提供了Simulink图形环境和RTW Embedded Coder工具,可以将在Simulink中设计的飞控软件周期任务模型转换成嵌入式C代码,生成model.c等文件。在model.c文件中包含了以下3种函数:

1)model_initialize函数:该函数主要用于整个软件全局变量的初始化,将中断服务程序关联到对应的中断向量和创建非周期任务等。

2)model_terminate函数:该函数主要用于在要退出飞控程序前,释放系统资源。

3)model_step函数:这种函数的个数与周期任务的个数相同,并且包含了这些周期任务的功能代码,比如tBaseRate的功能代码就包含在model_step0中。

图3 基于Simulink/RTW Embedded Coder平台框架Fig.3 The platform framework based on Simulink/RTW Embedded Coder

按照上节提供的伪代码修改RTW生成的ert_main.c文件,并将上述文件和客户代码(主要包含设备驱动等支持性代码)一起调用Tornado下的gcc编译器进行编译,就可生成VxWorks环境下的可执行的动态链接库(即model.lo文件)。

目标机包含了VxWorks嵌入式操作系统。将model.lo下载到目标机后,就可以运行飞控程序了。

无论是开发测试中的还是已经投入实际应用的机载飞控软件系统,都要涉及与宿主机或地面站的信息交互。Simulink/RTW提供了外部模式和C-API模式作为嵌入式软件的用户界面,方便用户监视变量和在线调参,有利于嵌入式飞控软件的测试和仿真。外部模式直接利用Simulink框图作为监视调参的界面,但因为其与宿主机数据交互的方式为网络通信,故只适合在仿真环境应用。当飞控软件完成仿真测试后,可以保留C-API模式做为用户界面,因为C-API未涉及与宿主机具体的通信方式,而只是提供了获得变量信息和修改参数的应用程序接口,故更加适合在嵌入式产品代码中使用,在应用中具备更大的灵活性。

3 飞控软件阶段性测试与评估

3.1 飞控软件开发现状

目前,已经搭建好上述嵌入式飞控软件开发测试平台,开发了包含串口接收任务 (tComDataRecv),基频任务(tBaseRate,100HZ),飞行控制律计算任务(tRate1,50HZ),发动机控制律计算任务(tRate2,20HZ)并加入外部模式的嵌入式飞控软件雏形,如图4所示。

图4 嵌入式飞控软件Simulink框图Fig.4 The Simulink diagram of the embedded flight control software

3.2 性能测试与评估

为了测试上文提出的任务调度机制的有效性,使用Tornado提供的WindView监视软件运行,获得飞控软件运行时序图,如图5和6所示。

图5为串口端无数据到达的时序图,非周期任务tComDataRecvy一直未被激活,而基频任务tBaseRate总是在中断0(即系统时钟中断)发生后被执行,说明基频任务被按时的触发了。而其他两个子周期任务也按照设计中的时间间隔和执行顺序被触发。这说明整个周期任务调度机制是正确可行的。

图6为串口端有数据到达的时序图,当有串口数据到达时,tComDataRecvy总是立刻被激活,同时周期任务依然被按时触发。

由以上测试结果说明本文设计的任务调度机制是完全可行的。

图5 串口端无数据到达的时序图Fig.5 The timing diagram without serial data

图6 串口端有数据到达的时序图Fig.6 The timing diagram with serial data

4 结论

文中搭建了一种基于VxWorks嵌入式操作系统和Simulink/RTW Embedded coder环境的无人直升机机载飞控软件执行框架与开发测试平台,结合控制律软件的设计提出一种基于该执行框架和开发测试平台的飞控软件开发方案,构建了机载飞控软件总体架构。采用VxWorks多任务调度机制进行任务管理满足飞行控制的实时性要求,应用有限状态机实现无人直升机的行为控制,最后搭建了基于Simulink/RTW Embedded Coder开发测试平台框架并验证了该方案的有效性和可靠性。本文利用VxWorks嵌入式操作系统和RTW环境生成的嵌入式飞控软件,测试验证了该方案的有效性和可实施性,表明该方案可应用于无人直升机机载飞控软件的开发。

[1]Meyrowitz A L,Blidberg D R,Michelson R C.Autonomous vehicles[J].Proceedings of the IEEE,1996,84(8):1147-1164.

[2]Kottmann M.Software for model helicopter flight control[R].Technical Report Nr314,Eidgenossisches Technische Hochschule Zurich,1999.

[3]Dong M.and Sun Z.A behavior-based architecture for unmanned aerial vehicles[C]//Proceedings of the International Symposium on Intelligent Control,Taipei,2004:149-155.

[4]杨忠,谭皓,樊琼剑,等.飞行器控制软件的Statechart原型及其验证[J].南京航空航天大学学报,2005,37(2):217-221.

YANG Zhong,TAN Hao,FAN Qiong-jian,et al.Statechart prototype of flight lontrol software and its verifications[J].Journal of Nanjing University of Aeronauties&Astronauties,2005,37(2):217-221.

[5]Dong M,Chen B M,Cai G,et al.Development of a real-time onboard and ground station software for UAV helicopter[J].Journal of Aerospace,Computing,Information,and Communication , 2007(4):933-955.

[6]Markus B,Konstantin K,Gunter H.Framework for development and test of embedded flight control software for autonomous smallsize helicopters [C]//Embeded Systems-Modeling,Technology,and Applications,2006:159-168.

[7]邝坚.Tornado/VxWorks入门与提高[M].北京:科学出版社,2004.

猜你喜欢
信号量飞控任务调度
民用飞机飞控通电自检测安全性研究
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于时间负载均衡蚁群算法的云任务调度优化
Nucleus PLUS操作系统信号量机制的研究与测试
机载飞控1553B总线转以太网总线设计
02 飞控技术与机场安保引关注
飞控系统故障告警实时监控软件的设计与实现
云计算环境中任务调度策略
云计算中基于进化算法的任务调度策略
硬件信号量在多核处理器核间通信中的应用