电子说
随着科技的迅猛发展,在多个工业领域(航空、航天、汽车、船舶等等)面对复杂系统,用户的设计和分析的手段逐渐丰富完善,其中仿真技术越来越受到重视,不同的客户运行来自不同供应商的仿真软件,例如有限元工具、机械和热力工具、信号流工具等等,这些工具都有着许多专门针对特定问题或条件设计的代码,这些代码几乎所有都是专有格式。
客户一直希望有一种方法来共同模拟他们的异构工具,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导出
窗口参数说明:
如果需要更精准的仿真结果,可以设置,格式如下: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会报错误。
全部0条评论
快来发表一下你的评论吧 !