随着科技的迅猛发展,在多个工业领域(航空、航天、汽车、船舶等等)面对复杂系统,用户的设计和分析的手段逐渐丰富完善,其中仿真技术越来越受到重视,不同的客户运行来自不同供应商的仿真软件,例如有限元工具、机械和热力工具、信号流工具等等,这些工具都有着许多专门针对特定问题或条件设计的代码,这些代码几乎所有都是专有格式。
客户一直希望有一种方法来共同模拟他们的异构工具,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会报错误。
IDC报告深度分析:智能照明势头迅猛,安防仍是重要推动力
东软来以软件技术推动实体经济优化升级
法院认定美光对福建晋华的起诉文件有瑕疵,驳回了美光对晋华的民事诉讼
亚马逊涉足所有有利可图的领域 要与世界为敌?
雷诺启动大规模可逆充电试点计划
基于FMI接口的协同仿真应用
你知道门锁的颜色组合吗?
香港航空正式宣布公司正在研究机队与航线网络整合计划
高通:全球5G部署取得令人惊叹的成绩
[原创] ADI ADM3055ECAN物理层收发器解决方案
今日看点丨郭明錤看好 AMD 的 AI 加速卡;vivo回应员工在印度被捕
美国制造业的六大典型特征分析
电能管理系统在商业广场的应用
浅谈动力电池技术的三个矛盾关系
LED显示屏单元板常见故障及其处理
芯片行业持续升温之下,芯片培训班也开始变得火爆
一文解析大众ID4.X的网络架构及各类控制器
谷歌和Labster宣布:大学将通过虚拟现实模拟实验代替现实实验室
数字源表优势介绍
柔性上料工作站的优势