Adams与Matlab通过FMI联合仿真

news2024/11/15 7:06:35

Adams与Matlab的联合仿真通过Adams/Controls中的接口功能已经很早就实现,具体是通过Adams安装路径下的支持文件,利用Adams/Controls中的导出功能,将Adams模型生成模型文件以及同Matlab的接口文件*.m,然后在Matlab中执行该*.m文件后,再执行相关命令将机械和控制融合为一个模型进行求解。该功能实现比较容易,操作比较简单,因此工程师普遍接受并展开了广泛的工程应用,而随着FMI技术的发展,有了更多借助FMU实现二者联合仿真的需求,为此,本文针对Adams与Matlab通过FMI协议接口进行联合仿真展开描述。

模型准备

为了展现本文的通用性,使用Adams安装路径下的模型,具体为:

将上述路径下的antenna.cmd和antenna.mdl拷贝到指定的工作路径下,二者分别对应Adams和Matlab/Simulink的模型。

联合仿真

基于FMI协议接口的联合仿真与二者传统的方式类似,需要在多体模型中将输入输出信号以状态变量的方式定义好并与模型建立关联,控制模型需要将多体模型融合,将输入与输出信号按照规定的逻辑关系进行关联。

Adams模型的操作

首先将描述点驱动的azimuth_motion_csd失效,因为,我们将使用Matlab传过来的驱动力矩替换它。

Adams与Matlab联合仿真,需要基于Adams状态变量描述输入和输出信号,本文提供的模型,输入和输出状态变量已经定义好,如下所示:

然后,利用Adams/Controls中的FMI功能将模型导出为相应的FMU模型。当然,我们对FMI协议的类型需要明确一下,Cosim和ModelExchange并且二者还会根据实际应用划分为Master和Slave等模式。我们这里以Adams的角度看,展示的是Cosim中的Slave的模型,因此,通过Adams将模型导出为FMU后,再将其导入Matlab中,在后者环境中提交仿真。另外,在生成FMU时,Adams支持FMI1.0和2.0两个版本,两者对编译环境的依赖有所区别,为了方便,这里使用了FMI2.0版本生成FMU。具体生成FMU如下所示:

上图中生成的Controls plant名称、前缀等保持默认不变,将输入输出信号进行选择,将Target Software进行选择FMU v2.0,其它保持不变。这里需要说明的是,在本对话框最下端有SmartFMU的选择项,这个功能是近期MSC软件所推出的一组功能,主要涉及Adams/Easy5/Elements三个产品在FMI方面的应用,可以只生成一次FMU,用户可以方便地对模型参数进行修改等,是一项非常实用的功能。生成的文件如下:

Matlab模型的操作

在Matlab中,首先打开控制模型antenna.mdl,之后将其中的橙色框删除,此时为控制模型的初始状态。然后,在Simulink库中找到FMU的功能元件,拖拽到Simulink控制模型中,最后,将所需的FMU模型通过路径进行指定和选择,并将输入输出信号进行关联。完成后的状态如下所示:

联合仿真提交计算与结果

本次仿真以Matlab为主进行任务提交,因此,需要借助Matlab环境完成,可以对其求解器参数进行设置,然后点击Run进行任务提交。

仿真完成后其输入输出的时域曲线可以通过双击Scope进行展现,具体如下所示:

上图中分别对应控制扭矩、角位移和角速度随时间的历程。

既然是联合仿真,那么同样可以在Adams中查看结果。为此,需要首先找到联合仿真的计算结果,然后导入Adams中,在其后处理环境中进行查看。

由于不同软件的设置不同,联合仿真结果存放的位置也是不同的,甚至有些软件基于FMI联合仿真后,其联合仿真的结果仅在联合仿真过程中存在临时文件中,一旦仿真终止,其结果也会删除。对于Adams与Matlab通过FMI的联合仿真,其结果存在于联合仿真的工作路径之下,会新形成一个文件夹slprj,然后在其中找对应FMU名称的文件夹,一直深入到resources文件中可以看到对应的结果文件,如下所示:

在Adams后处理中,可以看到如下结果,分别为角位移、扭矩和角速度等。

结论

通过上述内容,可以看到Adams与Matlab通过FMI接口可以方便地完成联合仿真应用流程,整个流程设置相似于传统生成M文件的方式,甚至还要更简洁。比如,传统生成M文件方式在Matlab中融合模型时,需要执行.m文件并录入adams_sys命令将橙色框调出两步,而实用FMI的话只需要将FMI框调出设置好指定的FMU路径一步即可。另外,如果使用MSC系列软件新功能SmartFMU的话会有更方便的工程应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用SoapUI、Postman工具调用Webservice方法

SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称,输入wsdl地址: 在左侧列表找到方法名,双击“Request 1”, 在请求数据中,添加对应的参数,然…

Linux文件IO(五)-三种进程退出方法及空洞文件

1.三种进程退出方法 return 当程序在执行某个函数出错的时候,如果此函数执行失败会导致后面的步骤不能在进行下去时,应该在出错时终止程序运行,不应该让程序继续运行下去,那么如何退出程序、终止程序运行呢?有过编程…

面试面经|大模型算法岗常见面试题100道

本文提供了一份全面的大模型算法岗位面试题清单,包括基础理论、模型结构、训练微调策略、应用框架、分布式训练和模型推理等方面的知识点,旨在帮助求职者准备相关技术面试。 一、基础篇 1、目前主流的开源模型体系有哪些? Transformer体系&a…

RTX NVIDIA 3090卡配置对应pytorch,CUDA版本,NVIDIA驱动过程及问题整理

买了两块3090卡闲置很长时间了,之前tf 1.12.0版本用习惯了不想转工具。这段时间闲下来转了之后有些环境不适配,在雷神帮助下安装完毕,虽然出了点怪东西,整体还好。 原环境CUDA为11.4 其他配置如下 之前conda install的pytorch实为…

智慧仓储-AI销量预测

1、预测系统技术选型 基础层: Hbase、ClickHouse、Hdfs 用来做数据存储 框架层: 以 Spark RDD、Spark SQL、Hive 为主, MapReduce 程序占一小部分,是原先遗留下来的,目前正逐步替换成 Spark RDD。 选择 Spark 除了对…

【hot100-java】【每日温度】

R8-栈篇 印象题:单调栈的使用 参考本人博客&#xff1a;单调栈 class Solution {public int[] dailyTemperatures(int[] temperatures) {int numtemperatures.length;int [] retnew int[num];Stack<Integer>stnew Stack<>();for (int i0;i<num;i){while(!st.…

vscode 配置rust格式化的正确方法

vscode 配置rust格式化的正确方法&#xff1a; 在settings.json里输入&#xff1a; "[rust]": {"editor.defaultFormatter": "rust-lang.rust-analyzer","editor.formatOnSave": true}

揭露大模型本质,大模型入门必看的12本书!看完我直接跪了

敢不敢用一年时间读完这12本书&#xff0c;模型入门必看的12本书&#xff01;建议收藏&#xff01;&#xff01; 第一本&#xff1a; 《基于GPT-3,ChatGPT,GPT-4等Transformer架构的自然语言处理》 主要内容 了解用于解决复杂语言问题的新技术。将GPT-3与T5、GPT-2和基于BE…

[Linux]基础操作指令

开机/重启/登录/注销 进入xhsell 或者虚拟系统中, 右键桌面打开终端, 在终端执行命令, 重启或关机linux系统 建议使用普通账号登录, 如果权限不够时, 使用 su - 用户名 命令切换到超管, 然后再使用 logout命令退回到普通账号, logout 不能在图形界面的终端中使用 用户管理 Li…

【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;Linux Shell &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux基础IO &#x1f4d2;1. …

python源代码编译exe 防止反编译的问题

1&#xff09;使用pyinstaller 打包为exe, 记住是版本是5.*&#xff0c;我用的是5.13.2 &#xff0c;不能是6.* 这是第一步。 pyinstaller -F -i d:\whs.ico packer.py -w 2&#xff09;使用pyarmor 再次加密,我使用的版本是8.3.11&#xff0c;不是7.*&#xff0c;这是第二步…

[深度学习]神经网络

1 人工神经网络 全连接神经网络 2 激活函数 隐藏层激活函数由人决定输出层激活函数由解决的任务决定: 二分类:sigmoid多分类:softmax回归:不加激活(恒等激活identify)2.1 sigmoid激活函数 x为加权和小于-6或者大于6,梯度接近于0,会出现梯度消失的问题即使取值 [-6,6] ,…

C++速通LeetCode中等第16题-环形链表II(快慢指针)

算法思路&#xff08;主要是数学推导&#xff09;&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detectCycle(ListNo…

实施项目,“流程重组”你是躲不开的

文/杨长春 作者简介&#xff1a;某IT公司项目总监&#xff0c;资深IT博主&#xff0c;专注于IT项目知识分享&#xff0c;著有《实战需求分析》、《软件需求分析实战》、《数字化管理软件实施》。 甲方跟本项目相关的领域&#xff0c;一定运行着一套管理体系&#xff0c;各个岗…

从EtherCAT到PROFINET,迈威通信带你解锁工业网络!

工业自动化领域&#xff0c;你选对交换机了吗? 在工业自动化和控制系统中&#xff0c;工业以太网协议扮演着至关重要的角色。它们确保了数据在设备间的高效、实时和可靠传输。随着工业4.0的兴起&#xff0c;对不同设备与系统间互联互通的需求不断增加&#xff0c;这就要求现代…

【24华为杯数模研赛赛题思路已出】国赛D题思路丨附参考代码丨免费分享

2024年华为杯研赛C题解题思路 D 题 大数据驱动的地理综合问题 地理系统是自然、人文多要素综合作用的复杂巨系统[1-2]&#xff0c;地理学家常用地理综合的方式对地理系统进行主导特征的表达[3]。如以三大阶梯概括中国的地形特征&#xff0c;以秦岭—淮河一线和其它地理区划的…

数据结构-2.9.双链表

一.双链表与单链表的对比&#xff1a; 二.双链表的初始化(带头结点)&#xff1a; 1.图解&#xff1a; 2.代码演示&#xff1a; #include<stdio.h> #include<stdlib.h> ​ //定义双链表结构体 typedef struct DNode {int data;struct DNode *prior;//前驱指针即指…

初学者的15个Python实用库

Python 是初学者易于学习的一门语言&#xff0c;并且提供了大量的第三方库。超过230,000个用户贡献的包使得Python功能强大且广受欢迎。在本文中&#xff0c;我重点介绍了15个最有用的包&#xff0c;详细说明了它们的功能和特性。 这里插播一条粉丝福利&#xff0c;如果你正在…

ThreadX源码:Cortex-A7的tx_thread_irq_nesting_end(嵌套中断结束动作).s汇编代码分析

0 参考资料 Cortex M3权威指南(中文).pdf&#xff08;可以参考ARM指令集用法&#xff09; 1 前言 tx_thread_irq_nesting_end.S是用来实现Cortex-A7 IRQ嵌套中断的结束函数实现的汇编文件。 2 源码分析 源码如下&#xff1a; 1.#ifdef TX_ENABLE_FIQ_SUPPORT 2.DISABLE_INT…

AIoT应用开发:给机器人装上‘眼睛‘,接入CV能力,实现人脸识别

最近新入手了一台 arm 开发板&#xff0c;希望打造一款有温度、有情怀的陪伴式 AI 对话机器人。 大体实现思路如下&#xff1a; 前几篇&#xff0c;给板子装上LLM 大脑、耳朵和嘴巴装上&#xff1a; 如何在手机端部署大模型&#xff1f;手机端跑大模型&#xff1a;Ollma/ll…