(19)中华人民共和国国家知识产权局

(12)发明专利

(10)【授权公告号】CN110637521B
(45)【授权公告日】20180914

(21)【申请号】201618009481.2
(22)【申请日】20161207
(73)【专利权人】 上海爱韦讯信息技术股份有限公司 ; 【地址】 201203 上海市浦东新区亮秀路112号Y1座806室 ;
(72)【发明人】 王云明 ;
(74)【专利代理机构】中国兵器工业集团公司专利中心 11011【代理人】刘东升 ;
(51)【Int.CI.】 G06F 9/44 (2006.01) ; G06F 17/50 (2006.01) ;
(56)【对比文件】 【审查员】

(54)【发明名称】一种基于模型仿真的数据实时存储方法和系统
(57)【摘要】本发明涉及飞行控制领域,具体涉及一种基于模型仿真的数据实时存储方法和系统,包括变量定位模块、变量观察模块、符号字典模块和测试驱动模块;所述变量定位模块对控制律增益模型中第一类型变量和第二类型变量进行标记和记录;所述变量观察模块对所述控制律增益模型中第一类型变量进行实时观察;所述符号字典模块将控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;所述测试驱动模块自动生成测试驱动代码。通过本发明,能对控制律增益模型中RAM变量和NVM变量进行定位标记,从而在代码生成时自动生成相应的变量定位代码,实现RAM变量和NVM变量的存储记录功能。

【权利要求书】


1.一种基于模型仿真的数据实时存储系统,其特征在于,所述系统包括变量定位模块、变量观察模块、符号字典模块和测试驱动模块;

所述变量定位模块对控制律增益模型中第一类型变量和第二类型变量进行标记和记录,第一类型变量是RAM变量,第二类型变量是NVM变量;

所述变量观察模块对所述控制律增益模型中第一类型变量进行实时观察;

所述符号字典模块将控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;

所述测试驱动模块自动生成测试驱动代码。

2.如权利要求1所述的基于模型仿真的数据实时存储系统,其特征在于:

所述变量定位模块通过在所述控制律增益模型添加探针对RAM变量进行标记和记录;

通过在所述控制律增益模型中遍历包含状态的节点,调用代码生成器内置的状态管理功能对NVM变量进行标记和记录。

3.如权利要求1所述的基于模型仿真的数据实时存储系统,其特征在于,所述符号字典模块将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量,以支持RAM变量和NVM变量的定位、观测和记录,具体包括:

遍历控制律增益模型中SCADE节点的输入变量;

分析所述输入变量及其类型;

若所述输入变量为结构体类型,则将所述结构体类型逐层分解成基本类型;

遍历控制律增益模型中SCADE节点的输出变量;

分析所述输出变量及其类型;

若所述输出变量为结构体类型,则将所述结构体类型逐层分解成基本类型。

4.如权利要求1所述基于模型仿真的数据实时存储系统,其特征在于,所述系统是在SCADE开发环境下运行。

5.一种基于模型仿真的数据实时存储的方法,包括:

S1,对控制律增益模型中第一类型变量和第二类型变量进行标记和记录,第一类型变量是RAM变量,第二类型变量是NVM变量;

S2,对所述控制律增益模型中第一类型变量进行实时观察;

S3,将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;

S4,自动生成测试驱动代码。

6.如权利要求5所述基于模型仿真的数据实时存储的方法,其特征在于:对控制律增益模型中第一类型变量和第二类型变量进行标记和记录包括:

通过在所述控制律增益模型添加探针对RAM变量进行标记和记录;

通过在所述控制律增益模型中遍历包含状态的节点,调用代码生成器内置的状态管理功能对NVM变量进行标记和记录。

7.如权利要求6所述基于模型仿真的数据实时存储的方法,其特征在于,将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量,以支持RAM变量和NVM变量的定位、观测和记录,具体包括S31输入变量封装成全局变量和S32输出变量封装成全局变量:

S31输入变量封装成全局变量:

S311,遍历控制律增益模型中SCADE节点的输入变量;

S312,分析所述输入变量及其类型;

S313,若所述输入变量为结构体类型,则将所述结构体类型逐层分解成基本类型;

S32输出变量封装成全局变量:

S321,遍历控制律增益模型中SCADE节点的输出变量;

S322,分析所述输出变量及其类型;

S323,若所述输出变量为结构体类型,则将所述结构体类型逐层分解成基本类型。

8.如权利要求5所述基于模型仿真的数据实时存储的方法,其特征在于,所述自动生成测试驱动代码包括:

S41,分析输入数据文件的变量名,与预期的输入数据进行映射;

S42,读取一拍输入数据至全局变量;

S43,利用全局变量的数据对SCADE节点输入赋值;

S44,调用SCADE节点函数;

S45,将SCADE节点输出数据更新到全局变量;

S46,记录RAM变量/NVM变量;

S47,将所有全局变量写至输出文件;

返回S42,读取下一拍输入数据至全局变量。

9.如权利要求5所述基于模型仿真的数据实时存储的方法,其特征在于,所述方法是在SCADE开发环境下实现。

【说明书】


一种基于模型仿真的数据实时存储方法和系统

【0001】技术领域

【0002】本发明涉及飞行控制领域,具体涉及一种基于模型仿真的数据实时存储方法和系统。

【0003】背景技术

【0004】为了保证飞行控制系统的安全性以及运行的实时性,机载飞行控制软件的开发对数据存储方式有着严格的要求:(1)为了保证部分安全关键数据在飞行控制系统空中非正常掉电之后能够立刻载入掉电之前的数值,需要将此部分关键数据保存到NVM(Non-Volatile Memory,非易失性存储器)内;(2)对于常量数据,由于在程序运行不需要修改其数值,因此需要将此类变量直接定位到ROM(Read Only Memory,只读存储器)内;(3)其他所有的变量都存储在RAM(Random Access Memory,随机存取存储器)区内。

【0005】ROM(Read Only Memory):只读存储器。烧入数据后,无需外加电源来保存数据,断电后数据不会丢失,但速度较慢。在系统运行过程中数据不可以再改变,适合存储需长期保留的不变数据。

【0006】NVM(Non-Volatile Memory):非易失性存储器。断电后,存储数据不丢失,在系统运行过程中数据可以被程序修改。

【0007】RAM(Random Access Memory):随机存取存储器。CPU可以从RAM中任意地址直接读取所需的数据,而不必从头至尾一一查找。RAM的内容可以随时刷新,访问速度快,但掉电后存储信息会丢失。

【0008】现有传统增益建模方法如图1所示,包括:

【0009】步骤001,数据存储设计。工程人员根据自然语言描述的数据存储需求文档,进行数据存储架构设计和详细设计,确定数据存储的实现方式。

【0010】步骤002,人工错误检查(设计)。工程人员在完成数据存储的设计文档后,需要人工检查设计文档的正确性、完整性、可验证性、与需求的一致性和追踪性,为编码做好准备。

【0011】步骤003,编写数据存储代码。工程人员基于数据存储设计文档,实现源代码编写。

【0012】步骤004,人工错误检查(源代码)。在完成源代码编写后,工程人员还需要人工进行代码检查,确保代码的正确性、与设计的一致性和追踪性。

【0013】传统增益建模方法存在以下缺点:(1)人工检查数据存储设计和代码效率低。不同的人对同一份设计和代码的检查结果可能不同,而且通过人工核查的手段往往很难发现设计和代码的缺陷(很多缺陷往往得到后期测试才能发现),因此人工检查数据存储设计和代码的效率比较低。(2)一旦发生变更,设计与代码需要进行影响分析,识别出受变更影响的设计和代码,并同步进行修改。一旦设计与代码的追踪关系没建立好,或者粒度过粗,就会对变更影响分析的结果产生不利影响。而且同步修改设计和代码的工作量也比较大。

【0014】发明内容

【0015】本发明的目的在于提供一种基于模型仿真的数据实时存储方法和系统,所述方法和系统可以提升代码正确性、降低人工检查代码的工作量。

【0016】为达到上述发明目的,本发明所述一种基于模型仿真的数据实时存储系统,包括变量定位模块、变量观察模块、符号字典模块和测试驱动模块;

【0017】所述变量定位模块对控制律增益模型中第一类型变量和第二类型变量进行标记和记录,第一类型变量是RAM变量,第二类型变量是NVM变量;

【0018】所述变量观察模块对所述控制律增益模型中第一类型变量进行实时观察;

【0019】所述符号字典模块将控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;

【0020】所述测试驱动模块自动生成测试驱动代码。

【0021】进一步,所述变量定位模块通过在所述控制律增益模型添加探针对RAM变量进行标记和记录;

【0022】通过在所述控制律增益模型中遍历包含状态的节点,调用代码生成器内置的状态管理功能对NVM变量进行标记和记录。

【0023】进一步,所述符号字典模块将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量,以支持RAM变量和NVM变量的定位、观测和记录,具体包括:

【0024】遍历控制律增益模型中SCADE节点的输入变量;

【0025】分析所述输入变量及其类型;

【0026】若所述输入变量为结构体类型,则将所述结构体类型逐层分解成基本类型;

【0027】遍历控制律增益模型中SCADE节点的输出变量;

【0028】分析所述输出变量及其类型;

【0029】若所述输出变量为结构体类型,则将所述结构体类型逐层分解成基本类型。

【0030】一种基于模型仿真的数据实时存储的方法,包括:

【0031】S1,对控制律增益模型中第一类型变量和第二类型变量进行标记和记录,第一类型变量是RAM变量,第二类型变量是NVM变量;

【0032】S2,对所述控制律增益模型中第一类型变量进行实时观察;

【0033】S3,将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;以及

【0034】S4,自动生成测试驱动代码。

【0035】进一步,对控制律增益模型中第一类型变量和第二类型变量进行标记和记录包括:

【0036】通过在所述控制律增益模型添加探针对RAM变量进行标记和记录;

【0037】通过在所述控制律增益模型中遍历包含状态的节点,调用代码生成器内置的状态管理功能对NVM变量进行标记和记录。

【0038】进一步,将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量,以支持RAM变量和NVM变量的定位、观测和记录,具体包括S31输入变量封装成全局变量和S32输出变量封装成全局变量:

【0039】S31输入变量封装成全局变量:

【0040】S311,遍历控制律增益模型中SCADE节点的输入变量;

【0041】S312,分析所述输入变量及其类型;

【0042】S313,若所述输入变量为结构体类型,则将所述结构体类型逐层分解成基本类型;

【0043】S32输出变量封装成全局变量:

【0044】S321,遍历控制律增益模型中SCADE节点的输出变量;

【0045】S322,分析所述输出变量及其类型;

【0046】S323,若所述输出变量为结构体类型,则将所述结构体类型逐层分解成基本类型。

【0047】进一步,所述自动生成测试驱动代码包括:

【0048】S41,分析输入数据文件的变量名,与预期的输入数据进行映射;

【0049】S42,读取一拍输入数据至全局变量;

【0050】S43,利用全局变量的数据对SCADE节点输入赋值;

【0051】S44,调用SCADE节点函数;

【0052】S45,将SCADE节点输出数据更新到全局变量;

【0053】S46,记录RAM变量/NVM变量;

【0054】S47,将所有全局变量写至输出文件;以及

【0055】S42,读取下一拍数据数据至全局变量。

【0056】进一步,所述系统是在SCADE开发环境下运行,所述方法是在SCADE开发环境下实现。

【0057】通过本发明,能对控制律增益模型中RAM变量和NVM变量进行定位标记,从而在代码生成时自动生成相应的变量定位代码,实现RAM变量和NVM变量的存储记录功能。一方面,可以在测试中对RAM变量进行实时观测,另一方面在目标机掉电时能自动恢复掉电前的NVM变量,实现NVM变量的恢复功能。进一步本发明使用模型仿真的方式实现数据实时存储,可以借用SCADE模型自带的模型检查器对模型进行检查,保证模型的正确性。加上SCADE自带了通过鉴定的高质量代码生成器(KCG),能自动生成符合模型设计的代码,从另一个角度上保证了数据实时存储功能的代码质量。

【0058】附图说明

【0059】图1是背景技术中传统方法实现数据存储功能的流程图。

【0060】图2是本发明基于SCADE模型仿真的数据实时存储系统的架构图。

【0061】图3是本发明符号字典模块的子功能流程图。

【0062】图4是本发明自动生成测试驱动代码的实现流程框图。

【0063】图5是基于模型仿真的数据实时存储的计算机系统的结构框图。

【0064】具体实施方式

【0065】一种基于模型仿真的数据实时存储系统,包括变量定位模块、变量观察模块、符号字典模块和测试驱动模块;

【0066】所述变量定位模块对控制律增益模型中第一类型变量和第二类型变量进行标记和记录,第一类型变量是RAM变量,第二类型变量是NVM变量;

【0067】所述变量观察模块对所述控制律增益模型中第一类型变量进行实时观察;

【0068】所述符号字典模块将控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;

【0069】所述测试驱动模块自动生成测试驱动代码。

【0070】进一步,所述变量定位模块通过在所述控制律增益模型添加探针对RAM变量进行标记和记录;

【0071】通过在所述控制律增益模型中遍历包含状态的节点,调用代码生成器内置的状态管理功能对NVM变量进行标记和记录。

【0072】进一步,所述符号字典模块将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量,以支持RAM变量和NVM变量的定位、观测和记录,具体包括:

【0073】遍历控制律增益模型中SCADE节点的输入变量;

【0074】分析所述输入变量及其类型;

【0075】若所述输入变量为结构体类型,则将所述结构体类型逐层分解成基本类型;

【0076】遍历控制律增益模型中SCADE节点的输出变量;

【0077】分析所述输出变量及其类型;

【0078】若所述输出变量为结构体类型,则将所述结构体类型逐层分解成基本类型。

【0079】SCADE(Safety-Critical Application Development Environment):安全关键应用开发环境,可用于模型设计开发,并能自动基于模型生成符合规范的源代码。

【0080】随着基于模型的开发技术在飞行控制系统机载软件中应用范围的扩大,基于Windows的SCADE(Safety-Critical Application Development Environment,安全关键应用开发环境)模型开发工具已经成为飞行控制系统控制律软件开发过程中较为核心的环节。因此,在飞行控制系统的控制律软件开发过程中,需要通过模型实现来满足飞行数据的存储要求。需要通过基于SCADE模型,提供辅助设计的工具和手段,达到高效地进行飞行控制系统控制律软件的开发,并确保生成正确的、符合编码规范的控制律代码。

【0081】下面通过基于SCADE模型来对本发明具体内容进行说明,即基于模型仿真的数据实时存储系统在SCADE开发环境下运行,基于模型仿真的数据实时存储方法在SCADE开发环境下实现。

【0082】本发明基于模型仿真的数据实时存储系统,包括变量定位模块、变量观察模块、符号字典模块和测试驱动模块;

【0083】其中,变量定位模块:使用SCADE中的探针Probe对RAM变量进行定位和标识。遍历包含FBY状态节点,调用KCG内置的状态管理功能,对NVM变量进行状态记录和恢复。

【0084】变量观察模块:用来生成控制律增益模型中的RAM变量观察代码,对控制律增益模型中第一类型变量进行实时观察。

【0085】符号字典模块:对控制律增益节点所有输入和输出变量进行分析,对输入输出变量的结构体递归分解至基本类型,并将分解后的输入输出变量及类型封装成全局变量,支持RAM和NVM变量的定位、观测和记录。

【0086】测试驱动自动生成模块:自动生成变量定位、符号字典、控制律增益模型功能的驱动代码,支持RAM和NVM变量的自动化实时观测和记录。

【0087】本发明基于模型仿真的数据实时存储的方法,包括:

【0088】S1,对控制律增益模型中第一类型变量和第二类型变量进行标记和记录,第一类型变量是RAM变量,第二类型变量是NVM变量;

【0089】S2,对所述控制律增益模型中第一类型变量进行实时观察;

【0090】S3,将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量;以及

【0091】S4,自动生成测试驱动代码。

【0092】进一步,对控制律增益模型中第一类型变量和第二类型变量进行标记和记录包括:

【0093】通过在所述控制律增益模型添加探针对RAM变量进行标记和记录;

【0094】通过在所述控制律增益模型中遍历包含状态的节点,调用代码生成器内置的状态管理功能对NVM变量进行标记和记录。

【0095】进一步,将所述控制律增益模型中第一类型变量的输入变量和输出变量、第二类型变量的输入变量和输出变量封装成全局变量,以支持RAM变量和NVM变量的定位、观测和记录,具体包括S31输入变量封装成全局变量和S32输出变量封装成全局变量:

【0096】S31输入变量封装成全局变量:

【0097】S311,遍历控制律增益模型中SCADE节点的输入变量;

【0098】S312,分析所述输入变量及其类型;

【0099】S313,若所述输入变量为结构体类型,则将所述结构体类型逐层分解成基本类型;

【0100】S32输出变量封装成全局变量:

【0101】S321,遍历控制律增益模型中SCADE节点的输出变量;

【0102】S322,分析所述输出变量及其类型;

【0103】S323,若所述输出变量为结构体类型,则将所述结构体类型逐层分解成基本类型。

【0104】进一步,所述自动生成测试驱动代码包括:

【0105】S41,分析输入数据文件的变量名,与预期的输入数据进行映射;

【0106】S42,读取一拍输入数据至全局变量;

【0107】S43,利用全局变量的数据对SCADE节点输入赋值;

【0108】S44,调用SCADE节点函数;

【0109】S45,将SCADE节点输出数据更新到全局变量;

【0110】S46,记录RAM变量/NVM变量;

【0111】S47,将所有全局变量写至输出文件;以及

【0112】S42,读取下一拍数据数据至全局变量。

【0113】实施例一

【0114】如图2所示,本发明基于SCADE自带的KCG进行二次开发,通过自定义的用户操作接口xCG Adaptor(适配器)对KCG生成的代码进行了封装,实现了变量定位、变量观察、符号字典映射和测试驱动自动生成等功能。

【0115】图2中xCG Adaptor是基于SCADE的扩展功能,二次开发的接口适配器。可以在SCADE中自定义xCG Adaptor。xCG Adaptor的机制是:在SCADE KCG完成代码生成后,在调用KCG Settings(设置),Code Integration(代码整合)中选择的Adaptor适配器“xCG for CADI(成都飞机设计研究所)”,对生成的代码进行有针对性的封装。这种机制能在KCG生成代码后,再完成符号字典代码、测试驱动代码的生成功能,有效地利用了KCG对模型进行检查,保证代码的准确性。对KCG设置了Adaptor适配器“xCG for CADI”后,在KCG设置页面中会出现xCG配置选项卡,用户可根据实际需要进行配置。

【0116】在xCG标签页中的配置选项可以包括如下选项。生成测试驱动程序选项:用于生成测试驱动代码,并将该代码与其它代码进行集成编译,生成可用于机载软件测试的可执行程序。允许输入变量与增益重名选项:用于处理在自动生成代码过程中,是否允许输入变量和增益的重名。浮点数类型为“double”选项:在生成代码过程中,是否对浮点类型的数据以double类型进行处理。显示代码目录选项:生成代码后,是否自动打开目标目录。

【0117】此外,xCG Adaptor的实现方法主要通过创建一系列tcl脚本实现:(1)CustomTarget.tcl:完成初始化,创建变量定位代码生成、变量观察代码生成、符号字典代码生成、测试驱动代码生成、编译代码等函数。(2)CustomTargetSettings.tcl:自定义xCG Adaptor的界面。(3)CustomTarget.srg:自定义xCG Adaptor的配置信息,包括:指定调用的tcl程序;修改系统注册表,注册自定义的xCG Adaptor。

【0118】下面分别介绍xCG Adaptor主要包括的模块:变量定位模块、变量观察模块、符号字典模块和测试驱动模块。

【0119】1、变量定位模块

【0120】变量定位模块的功能是针对第一类型变量(RAM变量)和第二类型变量(NVM变量)进行标记和记录。

【0121】(1)RAM变量标识:通过SCADE中的“探针”(Probe)功能直接标识出,其值为标记节点所在位置的值。例如,可以在控制律增益模型中添加探针以观察指定变量。

【0122】(2)RAM变量记录:利用KCG的代码生成功能,实现被标识为“探针”的变量输出,再通过符号字典模块,将其映射为全局变量,方便记录和存储RAM变量的数值。

【0123】(3)NVM变量标识和记录:由于NVM变量主要关注模型中的状态量,如:延迟状态FBY,前一拍状态PRE等。本发明基于控制律增益模型设计的实际情况,仅考虑延迟状态FBY。通过递归遍历控制律增益模型中包含状态(FBY)的节点,调用KCG内置的状态管理功能KCG(选择Configuration(配置)选项卡,勾选Generate system memory state management(生成系统存储器状态管理)),生成对NVM变量的状态记录和恢复的代码,如:

【0124】extern void kcg_save_SV_modcount(SV_modcount*SV,outC_modcount*outC);//记录

【0125】extern void kcg_load_SV_modcount(outC_modcount*outC,SV_modcount*SV);//恢复

【0126】2、变量观察模块

【0127】变量观察模块的功能主要用来生成控制律增益模型中的RAM变量观察代码,实现以下子功能:

【0128】对工程中出现的RAM变量进行初始化定义,默认情况下所有real类型的RAM变量被初始化为0.0。

【0129】对工程中使用的所有RAM类型变量,实现了变量恢复函数。在代码集成过程中,每个单独周期执行完之后,调用该函数记录及存储RAM变量。

【0130】3、符号字典模块

【0131】由于SCADE自带的代码生成器KCG生成的代码所包含的信息量没有模型的信息丰富,不支持全局变量,无法直接对RAM变量和NVM变量进行观测和记录。因此,需要通过符号字典代码对KCG生成的代码进行封装,将输入输出接口代码封装成全局变量,从而支持RAM变量和NVM变量的定位、观测和记录。

【0132】对于RAM变量而言,首先利用变量定位功能中的Probe“探针”标识出需要存入RAM的变量,然后在KCG自动生成的代码中找到标识代码,将其映射成全局变量,从而实现将变量中各个元素记录存储于RAM存储器的功能。

【0133】对于NVM变量而言,首先利用变量定位功能中调用状态管理功能,标识出需要存入NVM的变量,然后在KCG自动生成的代码中找到标识代码,将其映射成全局变量,从而实现将变量中各个元素记录存储于NVM存储器的功能。

【0134】符号字典模块包含以下子功能:

【0135】(1)所有输入变量封装成全局变量

【0136】图3为符号字典模块的子功能流程图,即输入变量封装流程图。

【0137】a)针对指定的SCADE节点,利用SCADE内置的API(MapRole,Get,GetRole),分析出该增益节点的所有输入变量及其类型。

【0138】MapRole<nodeid>input<input process procedure>

【0139】Get<inputid>name

【0140】GetRole<inputid>type

【0141】b)若输入变量的类型是结构体类型,则将该结构体类型逐层分解成基本类型(包括:整型int,实型real,布尔型bool,字符型char),即将结构体类型按成员展开,通过递归分析,得到结构体成员的名称和基本类型,生成allInputs.h,allInputs.c文件。

【0142】(2)所有输出变量封装成全局变量

【0143】a)针对指定的SCADE节点,利用SCADE内置的API(MapRole,Get,GetRole),分析出该增益节点的所有输出变量及其类型。

【0144】MapRole<nodeid>output<output process procedure>

【0145】Get<outputid>name

【0146】GetRole<outputid>type

【0147】b)若输出变量的类型是结构体类型,则将该结构体类型逐层分解成基本类型(包括:整型int,实型real,布尔型bool,字符型char),即将结构体类型按成员展开,通过递归分析,得到结构体成员的名称和基本类型,生成allOutputs.h,allOutputs.c文件。以下给出了某SCADE节点所有输出变量的代码示例。

【0148】

【0149】

【0150】4、测试驱动模块

【0151】测试驱动模块主要是在完成了变量定位代码、符号字典代码、控制律增益模型代码之后,生成C语言测试驱动代码,实现自动化测试,支持RAM和NVM变量进行实时观测和记录。

【0152】测试驱动模块完成的工作包括:(1)提供主程序入口,用于生成可执行程序;(2)能读取测试用例数据;(3)通过测试用例数据驱动机载代码工作,得到输出结果;(4)将输出结果输出到文件,分析测试结果;(5)支持测试自动化,能批量(多拍)处理测试用例数据,而非交互的方式指定测试用例数据。

【0153】图4为自动生成测试驱动代码的实现流程框图。自动生成测试驱动代码的实现包括如下各步骤:

【0154】S41,分析输入数据文件的变量名,与预期的输入数据进行映射;S42,读取一拍输入数据至全局变量;S43,利用全局变量的数据对SCADE节点输入赋值;S44,调用SCADE节点函数;S45,将SCADE节点输出数据更新到全局变量;S46,记录RAM变量/NVM变量;S47,将所有全局变量写至输出文件;然后回到S42,读取下一拍数据数据至全局变量。

【0155】综上,本发明基于SCADE的扩展功能,二次开发了接口适配器,对SCADE自带的高质量代码生成器进行的封装,实现了控制律增益数据变量的定位、观测、存储和自动化测试功能,大大提高控制律增益数据调试、排故的时间和成本。

【0156】本实施例具有以下优点:

【0157】1)使用了基于模型的开发方法,提升了代码的正确性。本发明是基于SCADE内置的通过鉴定的高质量代码生成器KCG进行了封装,能自动生成符合模型设计的代码,保证数据实时存储功能的代码质量,降低人工检查代码的工作量。

【0158】2)自动化定位和记录RAM和NVM变量数据,提高调试和维护的效率。控制律增益的数值对飞行控制系统的性能影响很大,因此在地面排故和测试过程中,需要频繁对控制律增益,尤其是RAM和NVM变量进行实时的监控、分析和更改。使用了本装置,可以方便高效地定位、记录RAM和NVM变量,提高控制律增益的调试和地面排故的效率。

【0159】3)自动化了编码过程和测试过程,把开发人员从传统的、繁重的工作中解放出来,更加关注需求、设计等创造性的工作,大大提高了开发和测试的效率。

【0160】应当理解,上述实施例仅作为示例而非限制,本领域技术人员还可以构想更多其他类似方法来实现基于模型仿真的数据实时存储。这样的实现方式不应被解读成导致脱离了本申请的范围。

【0161】实施例二

【0162】一种基于模型仿真的数据实时存储的计算机系统,所述计算机系统包括计算机可读存储介质和至少一个逻辑处理器;

【0163】所述计算机可读存储介质存储用于执行以下操作的计算机可执行指令:

【0164】对控制律增益模型中第一类型变量和第二类型变量进行标记和记录;

【0165】对所述控制律增益模型中第一类型变量进行实时观察;

【0166】将所述控制律增益模型中输入变量和输出变量封装成全局变量;以及

【0167】自动生成测试驱动代码。

【0168】如图5所示,一种示例性的计算机系统400。计算机系统400可以包括逻辑处理器402,例如执行核。尽管图示了一个逻辑处理器402,但在其它的实施例中,计算机系统400可以具有多个逻辑处理器,例如,每个处理器基片多个执行核,和/或多个处理器基片,其中每个处理器基片可以具有多个执行核。如图所示,各种计算机可读存储介质410可以通过一条或多条系统总线互连,所述系统总线将各种系统组件耦合到逻辑处理器402。系统总线可以是若干类型的总线结构中的任何类型,包括存储器总线或存储器控制器、外围总线、以及使用各种各样的总线体系结构中的任一种的本地总线。在示例性的实施例中,计算机可读存储介质410可以包括例如随机存取存储器(RAM)404、存储设备406(例如,机电硬驱动器、固态硬驱动器等等)、固件408(例如,快闪RAM或ROM)、以及可拆卸存储设备418(诸如像CD-ROM、软盘、DVD、闪存驱动器、外部存储设备等等)。本领域的技术人员应当意识到,可以使用其它类型的计算机可读存储介质,诸如磁带盒、闪存卡和/或数字视频盘。计算机可读存储介质410可以提供计算机可执行的指令422、数据结构、程序模块、以及用于计算机系统400的其它数据的非易失性和易失性存储。基本输入/输出系统(BIOS)420——其包含诸如在启动期间帮助在计算机系统400的单元之间转移信息的基本例行程序——可以被存储在固件408中。大量的程序可以被存储在固件408、存储设备406、RAM 404和/或可拆卸存储设备418上,并可以由逻辑处理器402执行,逻辑处理器402包括操作系统和/或应用程序。命令和信息可以通过输入设备416被计算机系统400所接收,输入设备416可以包括但不限于键盘和指向设备。其它的输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其它输入设备常常通过被耦合到系统总线的串行端口接口而被连接到逻辑处理器402,但是也可以通过其它的接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。显示器或其它类型的显示设备也可以经由接口连接到系统总线,比如视频适配器,其可以是图形处理单元412的一部分或被连接到图形处理单元412。除了显示器,计算机典型地包括其它的外围输出设备,诸如扬声器和打印机(未示出)。图4的示例性系统还可以包括主机适配器、小型计算机系统接口(SCSI)总线、以及连接到SCSI总线的外部存储设备。计算机系统400可以在使用到一个或多个远程计算机(诸如,某个远程计算机)的逻辑连接的联网环境中操作。远程计算机可以是另外的计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,以及典型地可以包括上面相对于计算机系统400描述的单元中的多个或所有单元。当在LAN或WAN联网环境中使用时,计算机系统400可以通过网络接口卡414被连接到LAN或WAN。网卡(NIC)414(其可以是内部的或外部的)可以被连接到系统总线。在联网环境中,相对于计算机系统400描绘的程序模块或者它们的一些部分可以被存储在远程存储器存储设备中。应意识到,这里描述的网络连接是示范性的,以及可以使用在计算机之间建立通信链路的其它手段。

【0169】在一个或更多个示例性实施例中,所描述的功能和过程可以在硬件、软件、固件、或其任何组合中实现。如果在软件中实现,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。对于固件和/或软件实现,这些方法可以用执行本文中所描述功能的模块(例如,程序、函数等等)来实现。有形地体现指令的任何机器可读介质可用于实现本文中所描述的方法体系。例如,软件代码可被存储在例如移动站的存储器之类的存储器中,并由例如台式计算机、膝上型计算机、服务器计算机、移动设备的微处理器等处理器执行。存储器可以实现在处理器内部或处理器外部。如本文所使用的,术语“存储器”是指任何类型的长期、短期、易失性、非易失性、或其他存储器,而并不限于任何特定类型的存储器或特定数目的存储器、或记忆存储在其上的介质的类型。

【0170】上述描述和图示仅作为说明性示例提供。对单数形式的权利要求元素的任何引述,例如使用冠词“一”、“某”或“该”的引述不应解释为将该元素限定为单数。技术人员对于每种特定应用可用不同的方式来实现所描述的结构,但这样的实现方式不应被解读成导致脱离了本申请的范围。

【0171】提供所公开的实施例的先前描述是为了使本领域任何技术人员皆能制作或使用本申请。对这些实施例的各种修改对本领域技术人员来说将是显而易见的,且本文所定义的一般原理可被应用于其它实施例而不背离本申请的精神或范围。由此,本申请并非旨在限定于本文中示出的实施例,而是应被授予与所附权利要求和本文中公开的原理和新颖性特征一致的最广义的范围。

【说明书附图】


【0001】


图1

【0002】


图2

【0003】


图3

【0004】


图4

【0005】


图5