引言
作为飞机电气系统的重要组成部分,飞机配电系统主要用于实现电功功率的合理分配和控制。目前,我国大多数飞机采用的都是常规配电系统,但由于这种配电系统具有电网重量大、空勤人员负担重、自动化程度低等缺点,在一定程度上已经对飞机的研制进程产生了许多不利的影响,因此开发更为先进的飞机配电系统成为当务之急。随着电子及计算机技术的发展,借鉴国外的研究现状,采用分布式配电和负载自动管理技术的先进飞机配电系统是目前发展的总趋势。本实验室对先进飞机配电系统进行了多年研究,设计了包括电源系统处理机、负载管理中心、汇流条控制器及负载仿真器四部分的飞机配电地面实验系统。本文所要介绍的飞机测控终端是适用于汇流条控制器和负载管理中心的通用测控终端,其主要实现对负载状态的监测并依据电源系统处理机发布的控制命令实现对负载的控制。下面将从硬件及软件两方面介绍测控终端的实现。
硬件设计
TMS320F2812DSP介绍
TMS320F2812DSP是德州仪器公司(TI)推出一种32位高性能数字信号处理器,它拥有峰值每秒运行150万条指令(MIPS)的处理速度和单周期完成32×3
系统硬件设计
作为飞机电气系统测控平台的组成部分,测控终端主要功能包括:处理主控模块控制命令、监控主电力汇流条、检测开关量的状态、控制开关量及传送智能终端状态数据等。为了实现上述功能,并充分利用DSPTMS320F2812强大的外设功能及嵌入式操作系统的优点,设计中将系统分为交流电压采集模块、频率采集模块、开关量管理模块及通信模块四部分来实现,系统结构
如图1所示。交流电压采集模块及频率采集模块用来实现对电力汇流条参数的检测,开关量管理模块用来实现对开关量状态的检测并依据电源系统处理机发来的控制命令及负载优先级状态实现对开关量的控制,通信模块主要实现测控终端与电源系统处理机间的通信。
图1 电气测控终端系统结构图
通信模块
国外先进飞机配电系统中均采用1553B总结实现各模块的通信,考虑到本次设计的是地面实验系统,因此各模块的通信采用与1553B相似的CAN通信。由于F2812本身具有增强型CAN总线控制器,因此通信模块的硬件设计主要是CAN总线驱动电路的设计,这里我们选用飞利浦公司的CAN通信收发器PCA820C250作为F2812的CAN控制器和物理总线间的接口,以实现对总线的差动发送和接收功能。为了防止干扰信号的引入,设计中采用高速光耦6N137对F2812及物理总线进行隔离。
软件设计
软件设计包括系统软件设计和应用软件设计。系统软件设计的主要任务是实现μCOS_II在F2812上的移植;应用软件设计的主要任务是测控终端功能的实现。
系统软件设计
本次设计系统软件采用源代码公开实时操作系统μC/OS_II,它是一个基于优先级的、可移植、可固化、可裁剪、占先式实时操作系统,其绝大部分源码是用ANSIC写的。μC/OS_II通过了联邦航空局(FAA)商用航行器认证,符合RTCA(航空无线电技术委员会)DO-178B标准。这也是本次设计采用μC/OS_II的一个原因。要使用μC/OS2-II,首先要把这个内核成功移植到所使用的CPU上。μC/OS_II在F2812上的移植工作包括以下几个内容:
①在OS_CPU.H中定义与处理器相关的常量、宏及数据类型,例如关中断和开中断的定义分别为#defineOS_ENTER_CRITICAL()asm“DINT”及#defineOS_EXIT_CRITICAL()asm“EINT”。
②调整和修改头文件OS_CFG.H,以裁减或修改μC/OS_II的系统服务,减少资源损耗。例如#defineOS_MBOXEN_0即禁止使用邮箱相关的代码。
③编写C语文件OS_CPU.C。由于本次设计中未用到其他几个函数,因此这里主要完成函数OS-TaskStkInit()的编写。OS-TaskStkInit()用来初始
化任务的堆栈结构,使其看起来象刚发生过中断并将所有的寄存器保存到堆栈的情形一样。④编写汇编语言文件OS_CPU.ASM。本文件包括4个子函数程序:OSStartHighRdy()(运行最高优先级任务)、OSCtxSw()(任务级的任务切换)、OS-IntCtxSw()(中断级的任务切换)和OSTickISR()(μC/OS_II的时间节拍中断函数),这是μC/OS-II移植中的重点和难点,这几个函数的合理实现,是保证μC/OS-II运行的基础。上述工作完成后,μCOS_II就可以运行了。
应用软件设计
系统任务的构成及优先级分配
本测控终端要完成的任务包括:①16路模拟量的采集;②2路频率采集;③32路状态量采集;④16路控制量输出;⑤与上位机的实时CAN总线通信;⑥自检测。根据上述实现功能划分系统的任务如表1所示,对任务优先级的分配,这里主要考虑任务的实时性,对实时性要求高的任务分配较高的优先级,使其得到优先调度。
优先级最高的是开始任务(TaskStart),这是系统启动后运行的第一个任务。在该任务中要完成系统及相关外设的初始化,并进行必要的自检
/*系统及外设的初始化*/
/*系统自检测*/
/*创建各个任务*/
StartCpuTimer2();; /*起动时间片*/
OSStatInit(); /*统计任务初始化*/
创建智能终端的各个应用任务;
KickDog(); /*WatchDog复位*/
OSTaskDel(OS_PRIO_SELF); /*删除开始任务*/
除了TaskStart()之外,其余各个任务模块的结构都是一个无限循环体,图2给出了一般任务的任务流程图。各任务的运行采用事件驱动方式,用户创建任务后,初始化为挂起状态,等待中断或其他任务发相应的事件来驱动该任务。
图2任务流程图
任务的通信与同步
μC/OS-II提供了五种用于数据共享和任务通信的方法:信号量、邮箱、消息队列、事件标志及互斥型信号量。信号量可以控制共享资源的使用权,也可以协调外部事件与任务的执行,提供了任务间通信、同步和互斥的最快通信,μC/OS-II提供了3种类型的信号量,即二进制型、计数型和互斥型。事件标志可使任务与多个事件同步,若与多个事件的任何一个同步,称为独立型同步,若与多个事件都同步,称之为关联型同步。邮箱是一种通信机制,它可以使一个任务或中断服务子程序向另一个任务发送一个指针型的变量,该指针指向一个包含了特定消息的数据结构。消息队列是另一种通信机制,它可以使一个任务或中断服务子程序向另一个任务发送以指针定义的变量,具体应用不同,每个指针指向的数据结构也不同。互斥型信号量是一种特殊的二进制型信号量,主要用于解决内在的互斥问题,减少实际应用中所必需的优先级翻转。
在设计测控终端软件时,充分利用了μC/OS-II提供的这些通信机制,来协调各个独立任务的运行。这里以通信模块为例介绍通信机制在设计中的应用。通信模块共包含四个任务TaskUnpack()、TaskPack()、TaskCANRX()和TaskCANTX()和一个中断Intecan(),任务间的通信流程如图3所示。在采集模块中如果发现系统某个信号发生异常则各采集模块就会发送Qstate,从而使打包任务处于就绪状态。终端对上位机数据的接收采用中断方式,在中断服务程序中发送标志量给任务TaskCANRX(),使其处于就绪态。在接收任务函数中通过判断自定义的数据包头决定接收数据的类型,如果接收的数据是开关量控制命令,则发送邮箱标志MboxUnpack给解包任务,如果接收的数据是发送状态量请求命令,则发送标志量FlagCANTX给发送任
务。另外,在打包任务和发送任务处理中,为了防止对共享数据区Data_BusToSend[x]误操作,我们使用了共享冲突信号量MutexSendEMPCMu-texSendDI和MutexSendBus。:其执行表示意性代码如下:
OSMutexPend(MutexSendBUS,0,&err);/*对数据区DataBusToSend[x]进行操作*/OSMutexPost(MutexSendBUS);
图3任务通信流程
通信及同步处理是保证μC/OS_II系统及各应用任务稳定运行的关键,通过在仿真软件CCS2.2中调试,证明本次设计软件系统运行稳定,且能够保证各任务的实时性要求,这也证明了设计中对通信及同步的处理合理正确。
结束语
作为飞机配电地面实验系统的组成部分,测控终端必须满足实时性的要求,因此我们选用了主频为150MHz的数字信号处理器TMS320F2812作为主CPU;在软件设计方面,采用实时嵌入式系统μCOS_II不仅使各任务的实时性得到满足,而且提高了软件运行的可靠性。该测控终端具有软件结构简单,模块化程度高,便于