0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:Saber仿真 作者:Greatalent 2023-12-05 09:58 次阅读

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

客户一直希望有一种方法来共同模拟他们的异构工具,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会报错误。

图片

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

    关注

    98

    文章

    14253

    浏览量

    136030
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83607
  • 模拟器
    +关注

    关注

    2

    文章

    864

    浏览量

    43142
  • 协同仿真
    +关注

    关注

    0

    文章

    6

    浏览量

    8110
  • HDL语言
    +关注

    关注

    0

    文章

    46

    浏览量

    8905
收藏 人收藏

    评论

    相关推荐

    康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(二)

    功能模型接口在复杂系统的建模与仿真中具有重要作用。本文探讨了FMU的时间概念、模型交换和联合仿真的通信机制。通过C代码示例,介绍了联合仿真接口
    的头像 发表于 06-26 14:40 3241次阅读
    康谋分享 | 自动驾驶联合<b class='flag-5'>仿真</b>——功能模型<b class='flag-5'>接口</b><b class='flag-5'>FMI</b>(二)

    康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(四)

    功能模型接口是一个开放且独立于工具的标准,便于实现自动驾驶仿真工具间的模型交换和联合仿真。本篇文章继续展示如何建立一个FMU并实现基于UDP和FMI联合
    的头像 发表于 07-24 10:54 3099次阅读
    康谋分享 | 自动驾驶联合<b class='flag-5'>仿真</b>——功能模型<b class='flag-5'>接口</b><b class='flag-5'>FMI</b>(四)

    自动驾驶联合仿真——功能模型接口FMI(终)

    本文带您了解,如何在aiSim中,通过UDP和aiSim车辆动力学API(Vehicle Dynamics Interface, VDI)来实现和外部的FMU车辆动力学模型的联合仿真
    的头像 发表于 08-07 10:19 2674次阅读
    自动驾驶联合<b class='flag-5'>仿真</b>——功能模型<b class='flag-5'>接口</b><b class='flag-5'>FMI</b>(终)

    求助协同仿真程序调试

    本人在做matlab和optisystem的协同仿真,下载的资料也都有, 就是写的器件程序在Matlab中无法运行,就连用Matlab仿真optisystem自带程序,都显示Undefined
    发表于 04-02 11:22

    采用Modelsim FLI接口协同仿真技术

    1 前言协同仿真就是利用仿真工具提供的外部接口,用其它程序设计语言(非HDL语言,如c语言等)编程,用辅助仿真工具进行
    发表于 05-15 07:00

    基于Altera FPGA的软硬件协同仿真方法介绍

    摘要:简要介绍了软硬件协同仿真技术,指出了在大规模FPGA开发中软硬件协同仿真的重要性和必要性,给出基于Altera FPGA的门级软硬件协同
    发表于 07-04 06:49

    什么是Ansoft Designer与Ansoft HFFS双工器协同仿真

    Ansoft Designe采用了最新的视窗技术,将电路仿真和电磁仿真集成到一个环境中,它可以与和电磁仿真工具HFSS,Q3D,Slwave进行动态连接和协同
    发表于 08-23 06:03

    HW协同仿真错误

    亲爱的读者们,我有一个RTL,一切正常。模拟没问题。生成编程文件没有任何问题。没有修剪硬件。但是,当我尝试执行HW协同仿真时,我得到一些关于多个网络驱动程序,非法加载等的ngdbuild和xflow
    发表于 03-17 09:49

    如何使用Artix-7 FPGA进行以太网协同仿真

    你好,我有兴趣使用Artix-7 FPGA进行以太网协同仿真(在Simulink中通过System Generator)。在System Generator中,我看到AC701
    发表于 07-15 08:45

    Saber Simulink协同仿真方法

    Saber可以和Simulink实现协同仿真(Co-Sim),仿真时以Saber为主机,调用Simulink,两个软件以固定时间步长交换数据.运用Saber和Simulink 进行协同
    发表于 06-18 15:37 68次下载

    Modelsim FLI接口协同仿真技术

    1 前言    协同仿真就是利用仿真工具提供的外部接口,用其它程序设计语言(非HDL语言,如c语言等)编程,用辅助仿真
    发表于 06-07 08:33 1219次阅读
    Modelsim FLI<b class='flag-5'>接口</b>的<b class='flag-5'>协同</b><b class='flag-5'>仿真</b>技术

    ADS无线协同仿真平台

    ADS无线协同仿真平台
    发表于 10-11 16:30 0次下载
    ADS无线<b class='flag-5'>协同</b><b class='flag-5'>仿真</b>平台

    基于集成电路协同仿真的数据管理

    数据管理平台软件系统对集成电路协同仿真数据进行了管理与数据处理,实现了协同仿真数据的规范化存储以及相关仿真性能参数的比对,并支持与ANSYS
    发表于 02-28 11:29 0次下载
    基于集成电路<b class='flag-5'>协同</b><b class='flag-5'>仿真</b>的数据管理

    康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)

    功能模型接口是一个开放且独立于工具的标准,包含C-API接口、XML描述文件和可交换的功能模型单元,提供容器化模型,便于在不同平台上重复使用和部署,实现自动驾驶仿真工具间的模型交换和联合仿真
    的头像 发表于 06-12 13:07 1464次阅读
    康谋分享 | 自动驾驶联合<b class='flag-5'>仿真</b>——功能模型<b class='flag-5'>接口</b><b class='flag-5'>FMI</b>(一)

    康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(三)

    功能模型接口是一个开放且独立于工具的标准,便于实现自动驾驶仿真工具间的模型交换和联合仿真。本文以康谋aiSim为例,来展示如何建立一个FMU并实现基于UDP和FMI联合
    的头像 发表于 07-10 15:52 1395次阅读
    康谋分享 | 自动驾驶联合<b class='flag-5'>仿真</b>——功能模型<b class='flag-5'>接口</b><b class='flag-5'>FMI</b>(三)