基于FMI接口的协同仿真应用

电子说

1.2w人已加入

描述

随着科技的迅猛发展,在多个工业领域(航空、航天、汽车、船舶等等)面对复杂系统,用户的设计和分析的手段逐渐丰富完善,其中仿真技术越来越受到重视,不同的客户运行来自不同供应商的仿真软件,例如有限元工具、机械和热力工具、信号流工具等等,这些工具都有着许多专门针对特定问题或条件设计的代码,这些代码几乎所有都是专有格式。

客户一直希望有一种方法来共同模拟他们的异构工具,FMI标准的出现提供了一种很好的解决方案。FMI标准的全称是Functional Mock-up Interface,它是一个不依赖于工具的标准,其通过XML文件和已编译的C代码的组合来同时支持动态模型的模型交换( Model Exchange)和联合仿真(Co-Simulation)。

遵循FMI标准,Synopsys SaberRD解决了用户的需求,它允许客户导出他们的Saber模型,并使用基于标准的接口与其他工具进行联合仿真。

1. 简介

FMI协同仿真为协同仿真环境中的仿真工具的耦合提供了接口标准。子系统之间的数据交换仅限于离散序列点。在两个通信点之间的时间内,子系统由各自的解算器独立求解。主算法控制子系统之间的数据交换和所有仿真解算器(从机)的同步。

协同仿真的方法:FMU实现将FMI函数调用包装到仿真工具提供的API调用。

模拟器

图1 在单台计算机上与工具耦合的联合仿真

2. 如何使用FMI2.0 Co-Simulation导出FMU

通过SaberRD的FMI 2.0 Co-Simulation接口可以将一个完整的Saber设计工程或部分Saber模块导出成为一个FMU。步骤如下:

2.1 创建一个 SaberRD设计

2.2 添加输入输出端口

模拟器

图2 在原理图上添加分层端口

从器件库中的“原理图连接器”类别中选择适当的端口符号,并将其连接到需要导出到FMU的原理图节点。

对于离散端口和模拟控制端口,将分层输入连接器连接到输入端口,将分层输出连接器连接到输出端口。

模拟器

对于物理模拟端口,如电气和液压端口,将分层模拟连接器连接到它们。

模拟器

注意:

将错误的分层连接器连接到节点会导致FMU导出失败。将端口连接器添加到原理图中的顺序很重要,因为在modelDescription.xml中为导出的FMU定义FMU端口的顺序需要相同。

2.3 添加原理图参数(可选)

对于任何需要在主模拟器中作为设计参数的模型参数,以便在计算开始时更改它,应在原理图上添加设计参数,选择需要在模型属性网格上作为参数导出的属性,并将其值更改为所需的名称,该名称将在创建层次符号时用作层次参数。

模拟器

图3 在原理图上添加设计参数

注意

只有标量数、整数和字符串类型的属性才能导出为FMU参数。像MAST structure, array, VHDL-AMS record, and vectors 等数据结构不能导出到FMU。

2.4 基于原理图创建顶层symbol

注意顶层symbol名称必须与底层原理图名称一致。

模拟器

图4 为原理图创建层次符号

2.5 编辑顶层symbol外形(可选)

如果分层设计具有任何设计参数或物理模拟端口,则需要手动更新生成的符号

模拟器

图5在符号上添加设计参数

在分层符号上更新物理端口方向,对于离散和模拟控制端口,在创建Saber设计原理图时,输入/输出信息端口已经定义这些类型的端口不需要进一步处理。

但是,模拟能量守恒物理端口,如电气或液压端口有两个组件, across变量和through变量在同一个端口,而且没有方向信息,要将这种端口导出到FMU,必须提供其方向和类型信息。

提供方向和类型,打开Symbol Editor ,选择这个模拟器physical port., 添加 behavior property

模拟器

模拟器

在 Property Name栏,输入 causality

在Initial Value栏, 输入方向和类型信息,用空格隔开

模拟器

方向信息和信号类型参考下表:

模拟器

表1 更新后的物理端口因果关系属性

模拟器

图5 在物理端口符号上添加因果关系

2.6 检查设计文件的正确性

2.7 将Saber设计文件导出为FMU

File > Export, 选择 Function Mockup Interface (FMI)…

模拟器

模拟器

模拟器

图6 Saber FMU导出

窗口参数说明:

  • Design Symbol: 选择响应的symbol文件,该symbol文件必须是基于原理图的层次文模型,而且原理图要与symbol在同一个文件夹下,
  • Platform: win64, win32, linux64, and linux32. 选择操作系统平台
  • Additional Design Data Files: 添加除了models ( .sin, .vhdl), symbols ( .ai_sym),和 schematic ( .ai_sch),外其他文件,如 (*.ai_dat) for the TLU (Table Look-Up) 模型,仿真时会用到该文件。如果不需要相关文件,该栏可以空着。
  • stopTime: FMI co-simulation仿真停止时间,默认为1.0 seconds.
  • stepSize: the co-simulation仿真步长,. 默认为 is 1.0e-3 seconds.
  • Timeout: 协同仿真响应最大时间
  • Simulator Settings: SaberHDL simulator settings. 不填写,为默认仿真设置。

如果需要更精准的仿真结果,可以设置,格式如下:dc; tr -tend 1 -tstep 1 us -tniter 10 -order

如果需要跳过DC仿真,可设置如下:tr -tend 1 -tstep 1 ms -trip zero

如果需要保存仿真结果:dc; tr -tend 1 -tstep 1u -wdir saber_results

*Communication Port: 主仿真器和从仿真器之间的 TCP/IP 端口号. 默认为0

3. 将SaberRD设计导出到FMU

使用SaberRD导出的FMU模型,可以用于任何FMU仿真,平台包括win64, win32, linux64 和 linux32。

模拟器

3.1 设计示例说明

A、该设计有两个参数

第一个 Von:二极管导通压降

模拟器

第二个Load:负载电阻

模拟器

B、该设计有3个模拟电压输入端口

模拟器

C、该设计有4个输出端口ia、ib、ic、vdc

3.2 示例操作步骤

A、 下载示例,解压并将符号文件(rectifier_3p.ai_sym),原理图文件(rectifier_3p.ai_sch)和三相电压激励文件(v_3p.csv)复制到本地目录D:SaberworkFMIrectifier_3p。

模拟器

B、调用SaberRD,点击菜单从原理图文件中打开设计:“File ->Open->Open design”,选择原理图文件rectifier_3p.ai_sch。

C、将设计导出到FMU,单击菜单“File->Export->Function Mockup Interfaces (FMI)…”,选择Design Symbol为rectifier_3p.ai_sym(下图示例中为D:SaberworkFMIrectifier_3prectifier_3p.ai_sym),点击“导出”按钮,保存rectifier_3p_saberhdl .fmu。生成的FMU文件在本地目录D:SaberworkFMIrectifier_3p。

模拟器

4.FMU模型测试

A、设置环境变量SABER_FMU_SOLVER的值为SaberRD的安装路径,例如:C:SynopsysSaberRD64T-2022.03

B、下载本文提供了FMUChecker-2.0.4b1-win64,来进行模型测试。

C、打开FMUChecker-2.0.4b1-win64文件夹,将v_3p.csv和rectifier_3p_saberhdl.fmu文件复制进来

模拟器

D、打开dos命令窗口,进入fmuCheck.win64.exe目录路径

模拟器

E、在命令窗口运行如下命令。它运行瞬态仿真2秒,通信步长为1e-3。输出信息保存在log.txt文件中,仿真结果保存在result.csv文件中。

fmuCheck.win64.exe -e log.txt -i v3_3p.csv -o results.csv -s 2 -h 1.0e-3 -n 0 receifier_3p_saberhdl.fmu

F、使用任何支持csv格式的波形查看器打开结果文件results.cs查看仿真结果,验证导出的模型

模拟器

注意

fmucheck运行时会在底层调用SaberRD仿真器,如果没有simulator license会报错误。

模拟器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分