图1 配电控制系统结构图 系统设计软件分析
根据对飞机配电系统的分析,电源系统处理机软件可分为下述模块:
a. 系统控制指令处理模块
b. 供电系统布局状态处理模块
c. MIL-STD-1553B 数据总线控制模块
d. 供电系统初始化模块
e. 电气系统监控模块
f. 处理机请求排序模块
g. 处理机请求处理模块
由于采用了VxWorks作为操作系统,必须将上述模块划分为具体的任务,提交给操作系统,由操作系统来调度、管理。任务调度一般采用RM和EDF方式,遵循的原则是:首先,要避免死锁。引起死锁的原因主要是资源的竞争,所以要保证资源的合理使用。其次,必须为每个任务合理分配CPU使用时间,对于那些I/O操作多的任务优先级要低一些,运算多的任务优先级要高一些。为保证CPU的充分利用,大量运算归为一个任务;功能耦合归为一个任务;对于周期时间,针对不同的频率处理不同任务。如果我们在具体分析一个系统的时候发生原则冲突,则要针对具体的系统为每一个原则设定“权重”,必要的时候可以通过计算“权重”来最终确定如何去划分任务。为了系统的稳定和可扩展性,CPU不能全载工作,达到60"70%就可以了。 VxWorks介绍
VxWorks 是Wind River 公司开发的嵌入式实时操作系统软件,为程序员提供了高效的实时任务调度和中断管理,实时的系统资源以及实时的任务间通信。其核心功能主要有微内核,任务间通信机制,网络支持,文件系统和I/O管理,POSIX标准实时扩展,以及C++等其它标准支持。目前,VxWorks操作系统已经广泛应用于通信、国防、工业控制、医疗设备等嵌入式实时应用领域。 综合设计软件系统有严格的层次结构,如图2所示。
图2 主执行软件结构图 这样做的目的在于明确各个层面的功能,便于软件的工程化开发。 硬件构架:包括了处理机和总线接口部件。软件层对它的要求是适合于嵌入式开发。
BSP:这一层是连接硬件与VxWorks的,其功能是对上层屏蔽硬件操作,实现系统的配置,驱动的集成,硬件的初始化等等,其部分功能类似于PC机的BIOS。
VxWorks:这是操作系统层。VxWorks是一款出色的嵌入式实时操作系统,该操作系统采用抢占式优先级调度,并且根据应用可以配置和裁减以提高系统的效率、可靠性和实时性。其功能是对应用软件提供接口界面,进行实时任务调度,系统资源管理等。通过在Tornado开发环境下创建Bootable Project 来定制所需要的VxWorks image。用户一般要根据实际情况,适当地进行添加或裁减。
应用软件:这是用户层,关键在于根据飞机的负载特性和优先级分布来合理地划分任务。建立有限状态机和Petri网都能有效地帮助建立合理的应用程序模型,正确地使用相关辅助工具可以简化建模过程。
根据开发的需要,应用软件分为内核软件和外围集成软件两大块。其中内核软件实现PSP主执行软件的基本功能,外围集成软件实现参数输入、显示等调试过程的人机界面,所有的外围模块通过内核软件的指定接口模块与内核通信。
鉴于数据被各个任务频繁使用,所以建立一个嵌入式实时数据库来管理数据是安全而高效的。关于嵌入式实时数据库的建立,请参阅相关书籍。这里只是简单的采用内存数据库来实现,目的是消除一般数据库中I/O操作的时间不确定性。首先,要为相关的数据类型建立相应的结构体。在该系统中需要为模拟量、状态量、数字量、控制量建立数据结构。以数据中的模拟量为例,可定义如下: typedef struct AnalogEntity
{
int
ID;
char
Name[NAME_LEN];
char
U[UNIT_LEN];
int
PValue;
/*前一周期值*/
float
Value;
/*模拟量值*/
int
State;
int
Node;
int
Aisle;
/* 通道 */
ATIME
Time;
/* 报警时间 */
float
Uplimit;
/ * 报警上限 */
float
Lowerlimit;
/* 报警下限 */
float
IncValue;
/* 过载值*/
int
ALevel;
/* 报警等级 */
int
Ratio;
/ * 比例系数 */
/* 向后兼容 */
float
Res;
char
Reserve[10];
} ANALOG;
其次,将所有的数据和方法封装在一起,完成数据库的定义而得到的数据库,在这里把它称为数据布局文件。对于本数据库最重要的是要保证读写的时间限制,如果规定时间内未能完成读写操作,必须要终止操作,并且回滚到未操作状态。
内核软件的大致任务为:1553B通信处理任务,电源系统监测任务,与备份PSP通信任务,控制台处理任务,电源请求与执行任务,外围模块通信处理任务,系统自监测任务等。外围软件主要是航空电子模拟任务、模拟控制台任务、综合显示任务。 整个软件的简单流程如图3所示。
[!--empirenews.page--]
图3 数据流图(DFD)
内核软件:处理电源请求和执行任务,主要是解飞机负载逻辑方程,从而得出当前的最佳控制方案,将结果通过1553B总线送给ELMC、RT等控制机构。系统自监测任务主要是监视当前软件系统工作情况,防止外界原因使得内部数据不稳定,导致错误控制的发生。外围软件主要是模拟PSP的工作环境和简单的人机接口,并不是PSP功能的组成部分。采用外围模块通信处理任务来管理外围的任务,可以方便地扩展外围开发中的模块,而不影响内核功能,便于软件的裁减。备份PSP通信任务通过RS422与备份PSP通信,达到双机热备份。电源系统监测任务主要是查看电源系统的工作状态,定期地修改数据布局文件中的状态量,得到当前的系统工作情况,对于历史数据布局文件可以写入历史数据库,以备查询。另外,任务之间如果需要同步,可以采用信号量来实现。 结语
本文简单讲述了基于VxWorks的飞机电源系统软件设计过程,在实际应用中还有许多问题需要解决。比如考虑到程序用途的特殊性,必须保证程序的正确运行,所以程序的健壮性是研究的另一个重点。比如,采用程序固化运行、冗余容错技术、程序互检验等技术都是为了保证程序准确无误地运行。另外,飞机逻辑负载方程库的建立和求解,以及相应日志文件系统的建立,都是必要的工作。