理论教育 信息系统的仿真模型设计与应用

信息系统的仿真模型设计与应用

时间:2023-06-16 理论教育 版权反馈
【摘要】:信号量数据主要包括战车行驶参数、系统状态参数等仿真数据。

信息系统的仿真模型设计与应用

3.4.2.1 仿真模型架构

模型对外的数据接口通过数据共享区域实现,这部分数据共享区域由模型负责开辟和维护。在满足本规范要求的前提下,供应商可以选择其他的架构或实现方式。

在图3-55 中,模型解算过程由模型自身维护,外围中间层程序(适配器)只对模型状态进行控制。适配器向模型的输入数据共享区输入模型所需的输入数据,从模型的输出数据共享区获取模型的输出数据;模型从其输入数据共享区获取输入数据,向输出数据共享区输出解算后的输出数据。这两块数据共享区属于模型,由模型负责开辟和维护。

图3-55 仿真模型架构

为区别周期性数据和触发性数据,模型需要在数据共享区域建立先入先出队列,使用FIFO 机制来保证数据的完整性和可靠性。对于周期性数据,FIFO深度为1,只保留最新的数据;对于触发性数据,FIFO 深度视具体情况来确定,保证一定的数据生命周期。

在仿真过程中,外围中间层程序(适配器)会通过输入输出API 访问数据共享区域的FIFO,给模型解算提供必要的输入,获得模型解算的输出。外围中间层程序(适配器)访问FIFO 的时间系统与模型解算的时间系统互相独立,只通过外部数据接口来交互,数据接口API 负责保证数据的完整性。一般来说,外围中间层程序(适配器)访问数据共享区域的频率高于模型访问数据共享区域的频率。

3.4.2.2 核心功能模型

仿真模型要实现某个控制器节点的具体功能,除内部算法逻辑之外,还需要有对外数据接口的管理和仿真模型状态的管理。对外的数据接口和控制接口要发布出来,内部算法和逻辑可不必暴露,封装在内部。

模型的仿真节拍由模型内部自行控制,外部只控制初始化、运行、停止、冻结状态,并获取相关仿真数据。如果模型不部署在仿真服务器内,而是一个独立的节点,则基于1588 协议通过以太网对各个仿真节点的系统时钟统一授时,保证整个仿真系统的时钟统一。

3.4.2.3 适配器

适配器是介于DDS、COBAR 中间件网络和仿真模型之间的一层,实现模型数据收发、模型状态控制等具体功能。

适配器分为两部分:第一部分是使用DDS、COBRA 中间件提供的API 函数,实现数据收发与监控软件交互等具体功能;第二部分是根据不同模型的要求,使用封装好的API 函数和模型按照建模规范提供的函数,实现模型解算、模型控制、模型间数据交换等功能。

适配器使用标准C 语言编写,要实现的具体功能包括:

·模型状态控制和监控;

·模型工作模式控制;

·模型初始化参数控制;

·模型参数监控与调参;

·模型内信号量监控;

·模型间ICD 数据收发与监控;

·模型与I/O 接口设备间ICD 数据收发与监控;

·模型间非ICD 数据收发与监控。

3.4.2.4 接口模型

模型的数据接口分为三大类:

(1)战车行驶参数、系统状态等信号量数据接口,这些数据会在模型之间传递;

(2)ICD 数据接口,由ICD 定义的模型之间的交互数据;

(3)模型参数接口,包括初始化参数、可调参数、不可调参数等,用于模型内部,可调参数对模型仿真解算产生影响。

信号量数据主要包括战车行驶参数、系统状态参数等仿真数据。仿真模型在一个头文件内,使用全局变量定义每个信号量数据,并为每个变量提供get 函数和set 函数,保证变量名称的唯一性。针对不同仿真模型供应商,需要各自填写一个Excel 格式的文件,说明本模型使用到的信号量和具体描述。

1.模型参数接口

模型参数分为可调参数、不可调参数、初始化参数三类:不可调参数在模型解算过程中不会更改,可调参数在解算过程中可以修改,初始化参数只在模型初始化过程中可以修改。参数初始化数据包括积分运算过程中的信号量初始值。

2.ICD 数据接口

ICD 数据来自ICD 接口定义,每个系统收发的数据定义到一个头文件,其中总线数据头文件以结构体的方式定义数据结构,非总线数据以变量形式定义数据。

数据接口配置以ICD 文件为基础,配合数据网络定义,导出可仿真的Simulink 模型框架和Rhapsody 模型框架。

(1)Simulink 模型框架。

Simulink 导出以ICD 信息为基本输入,配合数据网络定义,导出可仿真的Simulink 模型框架,包含各个ICD 数据的ID 定义。(www.daowen.com)

Simulink 导出主要生成ICD 打解包文件、将生成的打解包函数封装成Simulink RTI 模块的.m 文件以及DDS 数据收发文件。

■ICD 打解包文件。

ICD 数据打解包文件是以pack、unpack 开头的.cpp 文件,其中pack 文件为打包函数,函数中将ICD 数据进行打包,通过调用DDS 的相应接口函数将数据发送到DDS 网络中。

■RTI 模块封装文件。

RTI 模块封装文件是以.m 为后缀的文件,全称为slblocks.m,文件中调用Simulink 的函数,将打解包文件生成Simulink 对应的打解包模块,生成时,在Matlab 软件的控制台中输入slblocks.m,按下回车键,由Matlab 自动调用.m文件中的函数进行RTI 模块的生成。

■DDS 数据收发文件。

DDS 数据收发的文件包含global_dds.h、global_dds.cpp 两个文件,这两个文件根据ICD 数据块的定义封装DDS 数据收发函数,主要包括DDS TOPIC 的初始化函数以及读写函数,如图3-56所示。

图3-56 DDS TOPIC 初始化及读写函数

(2)Rhapsody 模型框架。

Rhapsody 导出以ICD 信息为基本输入,配合数据网络定义,导出可仿真的Rhapsody 模型框架,包含各个ICD 数据的ID 定义。

Rhapsody 导出主要生成Rhapsody 模型下的DD 包、ICD 包、Targert 包。

■DD 包。

静态数据模块为Rhapsody 下的DD 包,DD 包下定义的系统与ICD 中设备的定义相同。这些设备在DD 包下都定义为SysML 中的Block,在每个系统中,包含所有Block 的属性、内部函数、FlowPort 接口等内容。

在设备下的所有输出Block 都对应Rhapsody DD 包下Attributes 下的一个节点,如图3-57所示。

DD 模型中的FlowPort 描述了各子系统与其他系统间的通信接口,ADS 系统的FlowPort 通信接口如图3-58所示。

■ICD 包。

ICD 包主要包含各总线数据报文所对应的数据结构体和位域结构体的声明,以及对各FlowPort 端口类型的声明。系统之间的数据传递主要靠SysML 提供的FlowPort 实现。

ICD 数据包括数据块和数据帧两部分,如图3-59所示。

在ICD 包下为每一个总线块创建相应的事件,事件定义为以后状态图的搭建提供了ICD 数据收发的各种触发事件,生成FlowPort 端口类型,如图3-60和图3-61所示。

■Target 包。

图3-57 数据块与类属性

图3-58 DD FlowPort 接口示意图

Target 包下是各个仿真节点的目标模型,每个节点各自实现了上述DD 包下类的实例,具体内容如图3-62所示。

图3-59 结构体数据类型示意图

图3-60 数据块到事件示意图

图3-61 子系统通信数据块示意图

图3-62 Target 包结构示意图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈