一种电传飞控软件数据流分区构架及其分区搭建方法与流程

文档序号:12718704阅读:215来源:国知局
一种电传飞控软件数据流分区构架及其分区搭建方法与流程

本发明属于电传飞控计算技术,涉及一种电传飞控系统软件数据流构架,以及此构架的搭建方法。



背景技术:

电传飞控的计算平台中,数据流是系统结构化设计的重点,是各个功能模块进行交互的基本要素,数据流的管理直接影响系统的正确性。现有技术中,由于软件没有分区,数据流的管理分散在各个功能模块中,造成模块耦合大,验证困难。本发明提供的方法能够对基于分区的电传飞控系统软件中全系统的数据流进行有效管理,降低模块耦合和验证成本。



技术实现要素:

本发明的目的是:提供一种结构合理、维护方便、稳定性好的电传飞控系统软件数据流分区构架。

本发明的技术方案是:

一种电传飞控软件数据流分区构架,包括输入分区1、计算分区2、输出分区3和系统数据字典4。

每个分区1、2或3中包含序列调用组件5,输入输出组件6和计算组件7,序列调用组件和其它组件间是调用和被调用的关系。

输入输出组件6中有消费函数8和生产函数9。

所述输入分区1、计算分区2、输出分区3间不能直接访问,只能通过操作系统的应用编程接口访问;所述输入分区1、计算分区2、输出分区3可以独立更新或维护而互不影响。

所述序列调用组件5,输入输出组件6和计算组件7间不能直接访问,只能通过操作系统的应用编程接口访问;所述序列调用组件5,输入输出组件6和计算组件7可以独立更新或维护而互不影响。

所述输入分区1、计算分区2、输出分区3共享一份系统数据字典4,所述系统数据字典4中的数据项以字符串形式的数据名为标识,通过操作系统的系统 调用,可以通过数据名查找到某个数据项的索引信息,称之为描述符,通过描述符可以快速引用该数据项。

可以有多个输入分区1、多个计算分区1和多个输出分区3。

所述输入分区1、计算分区2、输出分区3均通过以下步骤搭建:

步骤1:分析该分区控制计算模块的输入数据和输出数据,构建输入数据列表和输出数据列表,将该模块作为一个编译为一个独立的构件,即计算组件7;

步骤2:根据收集的该分区所需的输入数据列表,构建该分区的消费函数8,消费函数8完成的功能是:根据所需输入数据的名称字符串对应描述符,从系统数据字典中拷贝相应数据到本地;

步骤3:根据收集的该分区产生的输出数据列表,构建该分区的生产函数9,生产函数9完成的功能是:根据所产生输出数据的名称字符串对应描述符,把本地数据拷贝到系统数据字典中;

步骤4:将步骤2和步骤3所构建好的消费函数8和生产函数9,编译为一个独立的构件,即输入输出组件6;

步骤5:按照消费函数8、计算组件中7的计算函数、生产函数9的调用顺序,构建序列调用组件5;

步骤6:将本分区的输入输出数据加入到系统数据字典4中。

所述输入分区1、计算分区2、输出分区3间互相不能直接访问,只能通过操作系统的接口互相访问。

序列调用组件5、输入输出组件6、计算组件7间互相不能直接访问,只能通过操作系统的接口互相访问。

系统数据字典4中每一个数据项都有一个字符串和该数据项一一对应,并且有一个描述符与该数据项一一对应。

所述输入分区1、计算分区2、输出分区3内部的输入输出数据是全局数据字典4的拷贝。

本发明所示的系统数据流分区构架具有如下有益效果:

(1)数据流处理的单元按照组件和分区进行管理,这样不仅能够实现计算模块能够独立更新和维护,也使得输入输出数据能够实现独立更新和维护。举例:如果系统只改变计算算法,而不改变输入输出,仅仅更新控制计算组件即可;如 果系统增加或减少输入输出数据(对应算法也必然发生改变),仅仅改变输入输出组件和计算组件即可;分区管理使得某个分区的更新不影响其它分区。

(2)系统数据字典组织方式的全局性、明确性。系统数据字典是所有分区,包括输入分区、计算分区和输出分区的共享资源,这样保证了数据项只有全局数据和分区内拷贝两份,不会产生过多冗余导致的数据冲突问题。再有,系统数据字典按照字符串进行组织,有效避免数据产生重复项的问题。

附图说明

图1是本发明的电传飞控软件数据流分区构架示意图,其中,1:输入分区,2:计算分区3:输出分区;4:系统数据字典。

图2是分区内组件函数的关系图,其中,5:序列调用组件6:输入输出组件7:计算组件;8:消费函数;9:生产函数。

图3是已经搭建好的分区的运行流程图。

图4是按照本发明的数据流构架设计的一个实例。

具体实施方式

下面结合一个有一个采集计算函数、作动计算函数、两个控制计算函数的系统对本发明做详细说明:

搭建步骤:

1.分析控制计算函数1和控制计算函数2的输入数据和输出数据,在此基础上,将这两个控制计算函数分别编译成控制计算组件1(7)和控制计算组件2(7)(依赖的输入数据暂用本地局部数据);分析采集计算函数和作动计算函数的输入数据和输出数据(本例中假设采集计算函数不依赖其它输入数据,作动计算函数不依赖其它输出数据),将采集计算函数编译成采集计算组件(7),作动函数编译成作动计算组件(7);

2.将两个控制计算函数、作动计算函数的输入数据汇总,分别构建相应的消费函数(8)(图4中的consume1,consume2,consume3);特别的,采集计算函数不依赖输入数据,因此消费函数留空;

3.将采集计算函数、两个控制计算函数的输入数据汇总,分别构建相应的生产函数(9)(图4中的produce0,produce1,produce2);特别的,作动计算函数不产生输入数据,因此生产函数留空;

4.将produce0函数编译为隶属于输入分区(1)的输入输出组件(6);将consume1和produce1函数编译为隶属于计算分区1(2)的输入输出组件(6);将consume2和produce2函数编译为隶属于计算分区2(2)的输入输出组件(6);将consume3编译为隶属于输出分区(3)的输入输出组件(6);

5.构建输入分区的序列调用组件(5),其内容为先调用采集计算函数,再调用produce0函数;构建计算分区1的序列调用组件(5),其内容为先调用consume1函数,再调用控制计算函数1,再调用produce1函数;构建计算分区2的序列调用组件(5),其内容为先调用consume2函数,再调用控制计算函数2,再调用produce2函数;构建输出分区的序列调用组件(5),其内容为先调用consume3函数,再调用作动计算函数;需要注意的是,由于组件间的不可直接访问性,这里的调用需要通过操作系统接口进行;

6.将步骤1分析得出的计算函数1和控制计算函数2的输入数据和输出数据,采集计算函数的输出数据,作动计算函数的输入数据加入到系统数据字典(4)中。至此,该构架搭建完毕。

图4是该实例的示意图,该实例中的输入分区不依赖数据字典中的其它输入,即没有消费函数;该实例的输出分区没有产生数据字典中的输出,即没有生产函数;计算分区1的输入依赖输入分区中的生产函数,即必须在输入分区中的生产函数执行完毕,对系统数据字典进行更新后,计算分区1的消费函数才能正确执行。同理,计算分区2依赖计算分区1、输入分区的输出,输出分区依赖计算分区2、计算分区1和输入分区的输出。

每个分区中均包括各自的计算组件,输入输出组件和序列调用组件,其中,输入分区的输入输出组件中仅包含生产函数,不包含消费函数,输出分区与此相反;两个计算分区中的输入输出组件均包含生产函数和消费函数。除此之外,各个分区还包含各自的序列调用组件,完成对消费函数、计算函数、生产函数的调用,由于图4中箭头关系能反映此调用关系,所以没有将各个组件的详细内容标出。

系统运行分初始化阶段和周期运行阶段两个阶段来描述。

初始化阶段:

依据加载顺序,各个分区根据预先分配好的输入数据字符串列表和输出数据字符串列表查找到相对应的输入数据描述符和输出数据描述符(图3的流程图中的前2步);

周期运行阶段:

操作系统调度应保证四个分区按照数据流向顺序先后调用,且每个周期中能够将所有分区调用一遍。即先执行前一分区的消费函数获得系统数据字典中最新的输入数据(通过输入数据描述符以避免查找字符串带来的效率问题),再执行该分区中的控制计算函数,接着执行该分区中的生产函数,更新数据字典中的相应数据;在此基础上,执行后一分区中的同样内容,直到执行到最后一个分区。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1