CN109032577A - 一种数据仿真方法 - Google Patents
一种数据仿真方法 Download PDFInfo
- Publication number
- CN109032577A CN109032577A CN201810678096.5A CN201810678096A CN109032577A CN 109032577 A CN109032577 A CN 109032577A CN 201810678096 A CN201810678096 A CN 201810678096A CN 109032577 A CN109032577 A CN 109032577A
- Authority
- CN
- China
- Prior art keywords
- data
- variable
- file
- signal field
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Automation & Control Theory (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种数据仿真方法,涉及软件设计技术。所述方法包括步骤一、从头文件数据接口中提取信号字段信息,并存储在编译器能够识别的头文件中;步骤二、将所述头文件中的信号字段信息存储至XML文件中,根据XML文件中保存的变量值初始化所述信号字段信息中的字段变量;步骤三、修改XML文件中字段变量值,进行数据仿真。本发明能够非常容易地对XML文件进行仿真数据的读写操作,既可用于仿真软件的开发,又可用于监控软件的开发。本发明提出的从头文件数据接口提取仿真信号字段信息的方法,能够解决接口控制文件数据库与实际机载代码中接口不一致时需要人工核对接口控制文件的问题。使用代码生成技术,还能实现标准统一的编程风格。
Description
技术领域
本发明属于计算机软件设计领域,具体涉及一种数据仿真方法。
背景技术
接口控制文档(ICD,Interface Control Document)是航电系统设计的顶层文件,是接口仿真软件初始化的基础。ICD定义了航电系统和子系统要处理和管理的各种电气电子接口、信号、消息和数据流,由总体设计单位在系统的详细设计过程中编写,是航电软件详细设计、代码编写、程序测试、功能联试等研发工作的重要依据,贯穿于航电软件研发过程中。头文件是软件程序的组成文件之一,数据接口是软件头文件的重要组成,需要按照程序编码要求编写,软件头文件的数据接口必须按照接口控制文件的要求组织定义。
为降低开发成本、缩短研制周期、提高研发效率并保证产品质量,在航电系统研制过程中,需要开发航电仿真系统,模拟各航电子系统的工作状态。航电仿真系统的开发需要根据ICD定义的要求,模拟相关子系统的数据和逻辑仿真。通过纯仿真、半实物仿真及系统联调,支持各航电子系统的协同开发,有效提高航电系统开发效率。
《车辆与动力技术》2010年第1期第11页《接口控制文件仿真方法研究》提出了一种根据接口控制文件自动建立UML系统模型的方法,通过将自动生成的模型联合详细设计模型一起下载到主仿真机,并联合相关工具来完成ICD的自动仿真。
专利申请号CN201010518157.5“一种适用于航天器系统的1553B总线网络仿真系统”公开了一种适用于航天器系统的1553B总线网络仿真系统,用于仿真分析实际航天器总线系统的信息传输及系统运行。
专利申请号201120330280.4“接口控制文件解析处理器”介绍了一种接口控制文件解析处理器产品,其中在接口数据解析过程中,将特定格式的接口控制文件用于解析接收的数据流,并在面板显示,用于产品检验。
传统的仿真通过提供仿真程序界面,在程序界面输入仿真数值或者通过在程序内部赋值,然后按照接口控制文件的要求将仿真数据进行打包发送。对于航电系统复杂的各种子系统而言,若要建立整个系统的仿真模型,仿真数据量大,需要针对各仿真数据逐个编程。不仅开发周期长,而且分工建立起来的各个模型设计思路不同,存在代码复用性差等缺点,会给软件开发和维护带来许多麻烦。
目前公开文献中的仿真器大都需要重新定义接口控制文件,或将重新编写的接口控制文件导入到相关系统中实现数据的仿真。实际型号航电系统研制过程中,经常因为接口控制文档或相关数据库更新不及时,使得生成的接口文档与机载模型不一致,导致仿真数据错误。
发明内容
本发明针对传统方法的不足设计了一种数据块仿真数据模型,并提出了利用现有机载软件代码接口头文件自动生成仿真数据模型C++支持类的方法,通过该C++类可以实现从XML文件初始化仿真数据、修改仿真数据、将当前数据块结构体状态保存到本地XML文件等功能。该数据仿真模型可用于各类航电子系统仿真软件和监控软件的开发。本发明同步开发了相关工具软件,能够自动根据数据接口头文件自动生成数据仿真模型所需要的C++代码。
本发明数据仿真方法,主要包括:
步骤一、从头文件数据接口中提取信号字段信息,并存储在编译器能够识别的头文件中;
步骤二、将所述头文件中的信号字段信息存储至XML文件中,根据XML文件中保存的变量值初始化所述信号字段信息中的字段变量;
步骤三、修改XML文件中字段变量值,进行数据仿真。
优选的是,在步骤一中,从头文件数据接口中提取信号字段信息包括采用正则表达式找出数据定义块,在所述数据定义块中解析出数据块名称、信号字段的数据类型、变量名以及变量注释。
优选的是,在所述步骤二中,进一步包括:
定义C++类成员变量,每个成员变量对应着数据块结构体的每个信号字段变量;
定义对数据块结构体各字段变量名枚举,通过该枚举索引遍历C++支持类成员变量和对应的数据块结构体变量;
定义获取每个成员变量数据类型、变量名和注释的函数,这些函数使用上一步枚举索引作为形式参数,返回C++标准库中的string类型;
在结构函数中创建根据数据块名作为标识命名的XML文件,使用变量名作为一个节点,在子节点保存变量的值和变量注释。
本发明提出了一种数据仿真模型及相应的C++支持类,通过该支持类能够实现对信号数据块的数据解析,并将数据块的字段数据保存到本地XML文件中,用户通过对XML文件的修改和读取,能够方便快速地对仿真数据进行修改和监控。配套开发的代码生成工具能够从机载软件代码中的头文件数据结构体中提取需要仿真的信号字段信息并按照指定格式自动生成相应的信号C++支持类和属性定义头文件代码,减少开发者代码编写工作量,实现数据仿真软件的快速开发。
机载航电系统数量繁多,开发综合任务系统软件需要同步开发相关交联子系统的仿真软件,需要仿真的信号数量特别大。采用传统人工开发仿真软件的模式需要逐个多仿真信号进行编程,低技术含量的重复编码工作较多。采用本发明提出的数据仿真模型C++支持类,能够非常容易地对XML文件进行仿真数据的读写操作,既可用于仿真软件的开发,又可用于监控软件的开发。本发明提出的从头文件数据接口提取仿真信号字段信息的方法,能够解决接口控制文件数据库与实际机载代码中接口不一致时需要人工核对接口控制文件的问题。使用代码生成技术,还能实现标准统一的编程风格。
附图说明
图1为本发明数据仿真方法的一优选实施例的流程图。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图对本发明的实施例进行详细说明。
如图1所示,本发明数据仿真方法主要包括以下步骤:
步骤一、从头文件数据接口中提取信号字段信息,并存储在编译器能够识别的头文件中;
步骤二、将所述头文件中的信号字段信息存储至XML文件中,根据XML文件中保存的变量值初始化所述信号字段信息中的字段变量;
步骤三、修改XML文件中字段变量值,进行数据仿真。
以下通过具体实施例对本发明做进一步解释。
1)头文件数据接口的格式定义
ICD定义了每一个数据块名称、用途、数据块大小、总线类型、传输类型、周期、所包含的信号在数据块中的位置关系等信息,信号的定义包括信号名称、比例因子、构成信号的字段、字段的位置关系、字段的大小、字段的含义等信息,一些信号只有一个字段独立占一个数据字,还有一些信号有多个字段复合构成一个数据字。实际机载软件编码过程中,会将每个数据块定义为一个结构体,多个字段复合构成的信号定义为一个结构体,按编码要求需要先定义构成数据块的信号的结构体,再定义数据块的结构体。结构体由结构体的注释、结构体类型、成员列表构成。
信号由字段构成,一个字段占用一个或多个数据位。由多个字段构成的信号需要用结构体类型表示。信号的结构体类型由多个字段的成员变量构成,每个字段的成员变量占用一个或多个基本类型(字符类型、整形等)的数据位,所占的数据位位数用:n表示,如下所示:
/*信号的注释*/
struct信号的结构体类型
{
基本类型字段的变量名:n;/*字段的注释*/
…
};
数据块由信号构成。由一个字段构成的信号直接用基本类型变量表示,由多个字段构成的信号用该信号结构体类型变量表示。数据块的结构体由基本类型成员变量和结构体类型成员变量构成,基本类型成员变量对应只有一个字段的信号,结构体类型成员变量对应由多个字段构成的信号,如下所示:
/*数据块的注释*/
typedef struct
{
基本类型一个字段构成的信号的变量名;/*信号的注释*/
struct结构体类型多个字段构成的信号的变量名;/*信号的注释*/
…
}数据块的结构体类型名称;
2)从头文件数据接口自动提取仿真数据模型所需要的信号各字段信息
a)读入数据接口头文件,解析通过正则表达式匹配“typedef”开头的行,如果匹配结果为真,则找到了数据定义块;
b)继续读入文件的新一行,利用正则表达式匹配右括号“}”和分号“;”之间的内容,解析出数据块名称;
c)得到数据块名称后,通过正则表达式匹配含有“{”和含有“}”行之间的结构体变量定义部分;
d)进一步处理上述步奏得到的结构体定义部分,通过空格符号和分号“;”进行分割,即可得到信号字段的数据类型、变量名称和变量注释;
e)将上一步所获取的信号字段信息输出成C++宏定义.h文件的形式,得到编译器能够识别代码。
3)数据仿真模型C++支持类的设计
本发明提出的数据仿真模型C++支持类通过上一节输出的宏定义文件,实现以下功能:
a)根据宏定义文件中定义的宏,自动定义C++类成员变量,每个成员变量对应着数据块结构体的每个信号字段变量;
b)根据宏定义文件中定义的宏,自动定义对数据块结构体各字段变量名枚举,通过该枚举索引遍历C++支持类成员变量和对应的数据块结构体变量;
c)根据宏定义文件中定义的宏,自动定义获取每个成员变量数据类型、变量名和注释的函数,这些函数使用上一步枚举索引作为形式参数,返回C++标准库中的string类型;
d)在结构函数中创建根据数据块名作为标识命名的XML文件,使用变量名作为一个节点,在子节点保存变量的值和变量注释;
e)提供数据保存功能,调用后能够将数据块结构体中的变量值更新给C++支持类对应的成员变量,并保存到XML文件中对应节点元素;
f)读取数据块名作为标识命名的XML文件,根据XML文件中保存的变量值初始化C++支持类对应的成员变量和对应的数据块结构体字段变量;
4)数据仿真模型的使用
开发航电子系统等仿真软件时,调用本发明提出的数据仿真模型C++支持类能够在类初始化的时候创建仿真数据块对应的XML文件,XML文件中保存的变量值即作为仿真模型对应的数据块信号字段值,通过对该XML文件的操作,可以间接地更新数据块信号字段的仿真数值,而且可以在关闭程序下一次再启动时,读取XML文件原封不动地还原数据仿真状态。
开发航电子系统总线监控器时,调用本发明提出的数据仿真模型C++支持类,将监控到的数据经过解析后保存到XML文件中,读取XML文件即可得到总线数据的实时状态。
5)本发明关键点
本发明提出了一种数据仿真模型及相应的C++支持类,通过该支持类能够实现对信号数据块的数据解析,并将数据块的字段数据保存到本地XML文件中,用户通过对XML文件的修改和读取,能够方便快速地对仿真数据进行修改和监控。配套开发的代码生成工具能够从机载软件代码中的头文件数据结构体中提取需要仿真的信号字段信息并按照指定格式自动生成相应的信号C++支持类和属性定义头文件代码,减少开发者代码编写工作量,实现数据仿真软件的快速开发。
机载航电系统数量繁多,开发综合任务系统软件需要同步开发相关交联子系统的仿真软件,需要仿真的信号数量特别大。采用传统人工开发仿真软件的模式需要逐个多仿真信号进行编程,低技术含量的重复编码工作较多。采用本发明提出的数据仿真模型C++支持类,能够非常容易地对XML文件进行仿真数据的读写操作,既可用于仿真软件的开发,又可用于监控软件的开发。本发明提出的从头文件数据接口提取仿真信号字段信息的方法,能够解决接口控制文件数据库与实际机载代码中接口不一致时需要人工核对接口控制文件的问题。使用代码生成技术,还能实现标准统一的编程风格。
最后需要指出的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (3)
1.一种数据仿真方法,其特征在于,包括
步骤一、从头文件数据接口中提取信号字段信息,并存储在编译器能够识别的头文件中;
步骤二、将所述头文件中的信号字段信息存储至XML文件中,根据XML文件中保存的变量值初始化所述信号字段信息中的字段变量;
步骤三、修改XML文件中字段变量值,进行数据仿真。
2.根据权利要求1所述的数据仿真方法,其特征在于,在步骤一中,从头文件数据接口中提取信号字段信息包括采用正则表达式找出数据定义块,在所述数据定义块中解析出数据块名称、信号字段的数据类型、变量名以及变量注释。
3.根据权利要求1所述的数据仿真方法,其特征在于,在所述步骤二中,进一步包括:
定义C++类成员变量,每个成员变量对应着数据块结构体的每个信号字段变量;
定义对数据块结构体各字段变量名枚举,通过该枚举索引遍历C++支持类成员变量和对应的数据块结构体变量;
定义获取每个成员变量数据类型、变量名和注释的函数,这些函数使用上一步枚举索引作为形式参数,返回C++标准库中的string类型;
在结构函数中创建根据数据块名作为标识命名的XML文件,使用变量名作为一个节点,在子节点保存变量的值和变量注释。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810678096.5A CN109032577B (zh) | 2018-06-27 | 2018-06-27 | 一种数据仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810678096.5A CN109032577B (zh) | 2018-06-27 | 2018-06-27 | 一种数据仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109032577A true CN109032577A (zh) | 2018-12-18 |
CN109032577B CN109032577B (zh) | 2022-03-08 |
Family
ID=64610772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810678096.5A Active CN109032577B (zh) | 2018-06-27 | 2018-06-27 | 一种数据仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032577B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765592A (zh) * | 2019-10-09 | 2020-02-07 | 成都天和讯达科技有限公司 | 一种仿真模型及其设计、信息更新方法、设备及存储介质 |
CN112162495A (zh) * | 2020-09-25 | 2021-01-01 | 中国直升机设计研究所 | 一种基于arinc429总线的惯性导航仿真系统及仿真方法 |
CN112286512A (zh) * | 2020-10-30 | 2021-01-29 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空电子仿真测试平台ui管理子系统 |
CN112507449A (zh) * | 2020-11-27 | 2021-03-16 | 中汽研汽车检验中心(天津)有限公司 | 一种基于xml的车辆性能仿真数据架构方法 |
CN113282280A (zh) * | 2021-06-18 | 2021-08-20 | 卡斯柯信号有限公司 | 面向功能可扩充的通用信号设备交互方法、设备及介质 |
CN113569333A (zh) * | 2021-06-24 | 2021-10-29 | 中国人民解放军63620部队 | 基于预编译指令的多种飞行器仿真模型并行开发维护方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775607A (zh) * | 2015-11-24 | 2017-05-31 | 中国直升机设计研究所 | 一种将接口控制文件自动生成头文件数据接口的方法 |
-
2018
- 2018-06-27 CN CN201810678096.5A patent/CN109032577B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775607A (zh) * | 2015-11-24 | 2017-05-31 | 中国直升机设计研究所 | 一种将接口控制文件自动生成头文件数据接口的方法 |
Non-Patent Citations (1)
Title |
---|
李峭等: ""XML技术在航空电子接口控制中的应用前景"", 《航空电子技术》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765592A (zh) * | 2019-10-09 | 2020-02-07 | 成都天和讯达科技有限公司 | 一种仿真模型及其设计、信息更新方法、设备及存储介质 |
CN110765592B (zh) * | 2019-10-09 | 2023-08-25 | 成都天和讯达科技有限公司 | 一种仿真模型及其设计、信息更新方法、设备及存储介质 |
CN112162495A (zh) * | 2020-09-25 | 2021-01-01 | 中国直升机设计研究所 | 一种基于arinc429总线的惯性导航仿真系统及仿真方法 |
CN112286512A (zh) * | 2020-10-30 | 2021-01-29 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空电子仿真测试平台ui管理子系统 |
CN112286512B (zh) * | 2020-10-30 | 2024-02-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航空电子仿真测试平台ui管理子系统 |
CN112507449A (zh) * | 2020-11-27 | 2021-03-16 | 中汽研汽车检验中心(天津)有限公司 | 一种基于xml的车辆性能仿真数据架构方法 |
CN112507449B (zh) * | 2020-11-27 | 2022-10-14 | 中汽研汽车检验中心(天津)有限公司 | 一种基于xml的车辆性能仿真数据架构方法 |
CN113282280A (zh) * | 2021-06-18 | 2021-08-20 | 卡斯柯信号有限公司 | 面向功能可扩充的通用信号设备交互方法、设备及介质 |
CN113569333A (zh) * | 2021-06-24 | 2021-10-29 | 中国人民解放军63620部队 | 基于预编译指令的多种飞行器仿真模型并行开发维护方法 |
CN113569333B (zh) * | 2021-06-24 | 2023-02-17 | 中国人民解放军63620部队 | 基于预编译指令的多种飞行器仿真模型并行开发维护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109032577B (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032577A (zh) | 一种数据仿真方法 | |
US5390320A (en) | Automatically converting structured analysis tool database outputs into an integrated simulation model via transportable standardized metafile | |
CN106598612B (zh) | 一种数据库中数据表的操作方法及系统 | |
CN106776343A (zh) | 一种Web应用程序自动化测试工具及方法 | |
CN111813661B (zh) | 一种全局业务数据驱动自动测试方法、装置、设备和介质 | |
CN107844424A (zh) | 基于模型的测试系统及方法 | |
CN108279885B (zh) | 一种对多个模型代码进行软件集成的方法及装置 | |
CN112286512A (zh) | 航空电子仿真测试平台ui管理子系统 | |
CN103605556A (zh) | 虚拟试验对象一体化构建系统及方法 | |
CN110222318A (zh) | 基于xml的数据生成工具开发方法 | |
CN106650149B (zh) | 基于Modelica模型的运行时故障注入系统及方法 | |
CN111782117B (zh) | 界面的展示方法和装置、存储介质、电子装置 | |
CN110209389A (zh) | 一种基于xml的数据生成工具开发系统 | |
CN116680885A (zh) | 一种基于SysML和Tango的复杂装置控制软件建模与验证方法 | |
CN103942092A (zh) | 一种支持LabView图形化编程的HLA协同仿真方法 | |
CN104298603B (zh) | 一种应用系统版本构建的正确性的检查方法 | |
CN111311461B (zh) | 基于b-s的结构化动态病历表单的编辑器及生成方法 | |
CN106775607A (zh) | 一种将接口控制文件自动生成头文件数据接口的方法 | |
CN102629213B (zh) | 一种c语言仿真模型的剖析及监控方法 | |
CN109375525A (zh) | 一种基于验证平台的仪控成品文件导入建模方法 | |
CN105824684B (zh) | 一种多模式大数据软件模拟器的实现方法 | |
CN114327416A (zh) | 应用于开发分支的接口同步方法、装置及电子设备 | |
CN110389955A (zh) | 一种数据仓库调度文件自动生成系统及生成方法 | |
CN117874393B (zh) | 通过xml文件构建sca模型工程的方法和系统 | |
CN111294350B (zh) | 一种快速适应协议变化的数据处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |