没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
模型交换和联合仿真的功能模型接口 FMI
专业名词翻译说明:
Model Exchange:模型交换
Co-simulation,Cosimulation:联合仿真,协同仿真
simulators:模拟器,仿真器
solver:解算器,求解器
slave simulators:从仿真器
integration:积分
integrate:积分
integrator:积分器
numerical integration:数值积分
time integration:时间积分
geometrical dimensions:几何尺寸
differential-algebraic equations:微分代数方程
difference equations:差分方程
time dependent coupled systems:时变联合系统
coupling of simulation tools:仿真工具联合
tool coupling:工具联合
block representation:方框图表示
Schema:模式
subsystems (slaves):子系统,从机
master:主机
slave:从机
master algorithm:主机算法,主算法
independent variable :自变量,独立变量
continuous-time states:连续时间状态
discrete states:离散状态
state event:状态事件
time instant:时间瞬间
time event:时间事件
event instant:事件瞬间
event indicator:事件指示器
coupling:耦合,联合
numerical solvers:数值求解器
zero-crossing:过零,零交叉(二阶导数为 0 的点,常用于边缘检测)
derivative:导数
schema files:模式文件
capability flag:能力标志
error estimation:误差估计,错误估计
ScalarVariables:标量变量
2
parameters, inputs, start values,outputs:机理模型的模型变量,包括参数、输入、起
始值、输出等
stiff differential equations:刚性微分方程,即步长很小才能收敛的微分方程
state derivatives:状态导数
ordered lists:有序列表
unordered sets:无序集
Globally Unique Identifier:全局唯一标识符
the solution is singular:解是奇异的,奇异解
direct feed through:直接馈通连接
communication steps:通讯步骤, 的动作,两个通讯点直接的宏步骤,一般
是解常微分方程并进行连续变量仿真
communication points:通讯点 ,也称采样点、同步点
communication step sizes:通讯步长, ,两个通讯点之间的时间差,也称
采样率
tolerance:指定最大可接受求解器误差(相对于每个时间步期间每个状态的大小)。如
果相对误差超过此容限,求解器会减少时间步大小
1. 概述
FMI(Function Mock-up Interface)定义接口,接口通过叫做 FMU(Function Mock-up Unit)
的可执行文件实现。FMI 函数在一个仿真环境中创建一个或多个 FMU 实例,通常与其它模
型一起进行仿真。一个 FMU 可能有它自己的求解器(支持 Co-simulation 的 FMI,第 4 章)
或者需要仿真环境执行数值积分(支持 Model Exchange 的 FMI,第 3 章)。接口的目标是使
得在仿真环境中调用 FMU 相对简单。本文档不提供怎样从模型环境中生成 FMU。可以在配
套的文档“FunctionMockupInterface-ImplementationHints.pdf”中找到实现的提示。
Model Exchange FMI 接口定义了动态系统模型的接口,动态系统是使用微分、代数和离
散时间方程描述的,并在不同仿真环境需要时提供求解这些方程的接口,此外,在嵌入式控
制系统中,带有显式或隐式积分器,以及固定的或可变的步长(step-size)。该接口的设计
适用于大型模型。
Co-simulation FMI 接口是为仿真工具的联合(模拟器联合、工具联合)以及与子系统模
型的联合而设计的,子系统模型是其仿真器及求解器作为可运行代码导出的。其目的是计算
由时间连续的子系统(由微分代数方程描述的模型部件)或时间离散的子系统(由差分方程
描述的模型部件,例如离散控制器)组成的时变联合系统(time dependent coupled systems)
的解。在联合系统的方框图表示中,子系统由带(内部)状态变量 x(t)的方框表示,这些方
框通过子系统输入 u(t)和子系统输出 y(t)连接到联合问题的其他子系统(方框)。
在工具联合的场景下,仿真过程的全部阶段(从不同仿真工具独立子系统的单独建模和预
处理开始)都运用了联合问题的模块化结构。在时间积分过程中,再次对所有子系统独立进
行仿真,将子系统之间的数据交换限制在离散通信点上。最后,在各自的本地仿真工具中对
各子系统的仿真数据分别进行可视化和后处理(post-processing)。
这两类接口(Model Exchange FMI 和 Co-simulation FMI)大部分是相同的。这些部分在
第二章中定义。特别的:
FMI 应用程序接口(C)
所有需要的方程或工具联合计算都通过调用标准化的“C”函数来执行。之所以使用
3
“C”,是因为它是当今可移植性最好的编程语言,也是所有嵌入式控制系统中唯一可
以使用的编程语言。
FMI 描述模式 (XML)
模式(schema)由建模环境生成的 XML 文件的结构和内容定义。这个 XML 文件以
标准化的方式包含 FMU 的所有变量的定义。这样就可以在嵌入式系统中运行 C 代码,
而无需变量定义的开销(另一种方法是将此信息存储在 C 代码中并通过函数调用访
问它,但这对于嵌入式系统和大型模型都不实用)。此外,变量定义是一种复杂的数
据结构,工具应该可以自由地在程序中表示这种数据结构。选中的方法允许工具在仿
真环境的编程语言(例如 C++、C 语言、Java 或 Python)中存储和访问变量定义(没
有标准化访问函数的任何内存或效率开销)。注意,有许多不同编程语言的免费和商
业库可以将 XML 文件读入适当的数据结构,请参见 http://en.wikipedia.org/wiki/xml
解 析 器 , 特 别 是 高 效 的 开 源 解 析 器 SAX (http://sax.sourceforge.net/,
http://en.wikipedia.org/wiki/Simple_API_for_XML)
FMU(换句话说,没有积分器的模型、带有积分器的可运行模型或工具联合接口)发布在
一个 zip 文件中。zip 文件包含(更多详细信息见第 2.3 节):
FMI 描述文件(xml 格式)
FMU 的 C 源,包括模型中使用的所需运行时库,和/或一台或多台目标计算机的二进
制文件,如 windows 动态链接库(.dll)或 linux 共享对象库(.so)。如果 FMU 提供
商希望隐藏源代码以保护所包含的技术机密,或允许在另一个仿真环境中完全自动导
入 FMU,则优先使用后一种解决方案。FMU 可以包含物理参数或几何尺寸,但不应
公开。另一方面,有些功能需要源代码
其他 FMU 数据(如表格、映射(maps))采用 FMU 特定的文件格式
FMU 的示意图如下图所示:
图 1:环境与 FMU 间的数据流。细节见第三章和第四章
蓝箭头:由 FMU 提供的信息
红箭头:为 FMU 提供的信息
可从 https://www.fmi-standard.org/literature,特别是 2011 年和 2012 年的 blochwitz 等
获取有关 fmi 的出版物。。
4
1.1 Properties and Guiding Ideas 属性和指导思想
在本节中,列出了一些属性,并定义了一些指导 FMI 低层设计的原则。这将提高接口功能
的自一致性。列出的问题按从高级属性到低级实现的顺序排序。
表示性:FMI 提供了 modelica、simulink 和 simpack 模型可以转换为 FMU 的必要功能。
稳定性:世界范围内的多数模拟工具都将支持 FMI。实现这种支持是工具供应商的一项重
大投资。因此,FMI 的稳定性和向后兼容性具有很高的优先级。为了支持这一点,在可行的
情况下,FMI 定义了“能力标志”,供将来版本的 FMI 使用,以向后兼容的方式扩展和改进 FMI。
实现:FMU 可以手工编写,也可以由建模环境自动生成。现有的人工编码模型可以根据
FMI 标准手动转换为模型。
处 理 器 独 立 性: 可 以 在 不 知 道 目 标 处 理 器 的 情 况 下 分 发 FMU 。 允 许 在 PC 机 、
Hardware-in-the-Loop 仿真平台或作为电子控制单位的控制器软件的一部分(例如作为
Autosar SWC 的一部分)上运行 FMU。保持 FMU 独立于目标处理器可以提高 FMU 的可用
性,甚至是 AUTOSAR 软件组件模型所需要的。实现:使用文本 FMU(分发 FMU 的 c 源代
码)。
仿真器独立性:可以在不知道目标仿真器的情况下编译、链接和分发 FMU。原因:否则,
该标准的吸引力将大大降低,没有必要限制 FMU 在编译时的后期使用,并迫使用户维护 FMU
特定于仿真器的变体。实现:使用二进制 FMU。生成二进制 FMU 时,比如 windows 动态链
接库(.dll)或 linux 共享对象库(.so),必须知道目标操作系统和最终的目标处理器。但是,
生成二进制 FMU 不需要目标仿真器的运行时库、源文件或头文件。因此,二进制 FMU 可以
由在目标平台上运行的任何仿真器执行(如果模型或使用的运行时库需要,提供必要的许可
证)。
运行时开销小:FMU 和目标模拟器之间通过 FMI 进行的通信不会带来显著的运行时开销。
它通过一种新的缓存技术(避免多次计算相同的变量),以及通过交换矢量而不是标量来实
现。
占用空间小:编译后的 FMU(可执行文件)很小。原因:FMU 可以在 ECU(电子控制单
位,例如微处理器)上运行,ECU 有很强的内存限制。这是通过将信号属性(名称、单位等)
和模型计算不需要的所有其他静态信息存储在单独的文本文件(=模型描述文件)中来实现
的,该文本文件在运行可执行文件的微处理器上是不需要的。
隐藏数据结构:用于模型交换的 FMI 没有规定表示模型的数据结构(c 结构)。理由:FMI
标准不应不必要地限制或规定 FMU 或模拟器(无论谁持有模型数据)的某种实现,以便于
不同工具供应商的实现。
支持多个、嵌套的 FMU:模拟器可以在一个仿真中运行多个 FMU 和/或一个 FMU 的多个
实例。这些 FMU 的输入和输出可以通过直接馈通连接(direct feed through)。此外,FMU
可以包含嵌套 FMU。
数值稳健性:FMI 标准允许以稳健的方式处理数值上关键的问题(例如时间和状态事件、
多采样率、刚性问题)。
隐藏缓存:典型的 FMU 将缓存计算结果以供后期重用。为了简化使用并减少仿真器出错
的可能性,缓存机制对于 FMU 的使用是隐藏的。原因:首先,FMI 不应该强制 FMU 执行某
种缓存策略。其次,这有助于保持 FMI 的简单性。实现:FMI 提供显式方法(由 FMU 环境
调用)来设置使缓存数据失效的属性。选择实现高速缓存的 FMU 可以维护一组“dirty”标志,
对仿真器隐藏。一个 get 方法,例如获取一个状态,然后会触发一个计算,或者返回缓存的
数据,这取决于这些标志的值。
支持数值求解器:典型的目标模拟器将使用数值求解器。这些求解器需要状态向量、导数
5
和过零(zero-crossing)函数。FMU 直接填充求解器提供的这些向量的值。原因:最小化
执行时间。这些向量的暴露在某种程度上与“隐藏数据结构”的要求相冲突,但效率的提高证
明这是有必要的。
显式声明:指定的操作、参数类型和返回值在显示中显式指定。例如,运算符(例如
“compute_derivatives”)不作为 int 参数传递,但为此调用了一个特殊函数。“const”前缀用
于任何不应更改的指针,包括“const char*”而不是“char*”。原因:FMI 的正确使用可以在编
译时检查,并允许在 C++环境中调用 C 代码(对“const”比 c 更严格)。这将有助于以预期方
式使用 FMI 开发 FMU。
功能少:FMI 由几个“正交”功能组成,避免了可以用其他功能定义的冗余功能。原因:这
导致了一个紧凑、易于使用并因此有吸引力的有紧凑文档的 API。
错误处理:所有的 FMI 方法都使用一组通用的方法来传递错误。
分配器必须空闲:FMU 分配的所有内存(和其他资源)都由 FMU 释放。同样,仿真器分
配的资源由仿真器释放。原因:这有助于防止由于不同组件的运行时环境不兼容而导致的内
存泄漏和运行时错误。
不可变字符串:作为参数传递或返回的所有字符串都是只读的,接收方不得修改。原因:
这简化了字符串的重用。
命名列表元素:在 fmiModelDescription.xsd XML 架构文件中定义的所有列表都具有列表
元素的字符串属性名。对于同一列表的所有其他名称属性,此属性必须是唯一的。
使用 C:FMI 是用 C 编码的,而不是 C++。原因:避免与编译器和链接器相关的行为出现
问题。在嵌入式目标上运行 FMU。
此版本的功能模型接口没有以下所需的属性。它们可能会在将来的版本中添加:
Model Exchange 的 FMI 是状态空间形式的常微分方程(ode)。它不适用于一般的微
分代数方程组。但是,支持 FMU 中的代数方程系统(例如,因为无法找到代数方程
系统的解,FMU 可以向环境报告以较小的步长重新运行当前步骤)。
不包括对多体系统程序(如 simpack)可能有用的特殊功能。
接口用于仿真和嵌入式系统。不包括轨迹优化可能额外需要的特性,例如连续积分过
程中模型相对于参数的导数。
XML 文件中没有变量层次结构的明确定义。
FMU 的状态数和事件指示器数是固定的,不能更改。
1.2 Acknowledgements
略
2. FMI Common Concepts for
Model Exchange and Co-Simulation
FMI 通用概念
在本章中,定义了“model exchange 模型交换”和“co-simulation 联合仿真”的常见概念。在
剩余97页未读,继续阅读
资源评论
影子飞扬
- 粉丝: 33
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功