AVL Cruise与Simulink联合仿真(通过MATLAB DLL方式)

  最近毕业设计需要用到AVL Cruise与Simulink进行联合仿真,分析汽车模型的经济性。下面介绍一下我所知的AVL Cruise与Simulink联合仿真的几种方式,它们各自的优缺点,以及DLL方式联合仿真的具体配置过程。我这里用的MATLAB软件版本是2021a,Cruise软件版本是2019.2,电脑操作系统是Windows11。

这是一个目录0.0

  • 1.AVL Cruise与Simulink联合仿真的不同方式及各自优缺点
    • 1.1MATLAB DLL方式
    • 1.2MATLAB API方式
  • 2.DLL联合仿真MATLAB配置过程
    • 2.1在MATLAB里安装编译器
    • 2.2在MATLAB中安装DLL的必要文件并设置编译器
  • 3 AVL Cruise和MATLAB DLL联合仿真时快速生成Simulink模型的方法
  • 4.Simulink编译DLL文件
  • 5.联合仿真

1.AVL Cruise与Simulink联合仿真的不同方式及各自优缺点

1.1MATLAB DLL方式

该方式是先把SImulink中建立的模型编译成一个DLL文件,之后把这个文件内嵌到Cruise软件中作为一个模块,并进行仿真的方法。
优点:因为是内嵌到Cruise软件中了,因此运行时不需要调用Simulink,运行速度非常快,且是由Simulink模型编译生成的dll文件,在Cruise软件里看不到具体的模型是如何搭建的,比较保密,不会泄露控制模型信息。
缺点:同样是因为内嵌到Cruise软件中了,因此运行时无法实时查看模型内部的参数,不适用于调试Simulink控制模型,因为改一点模型就需要编译一次dll文件,且无法有效的定位模型中出错的地方。

1.2MATLAB API方式

该方式是Cruise在前台,处于主要地位,联合仿真时打开对应的Simulink模型,由Cruise向Simulink发送必要的参数以及指令,在Simulink中完成计算后把结果返回到Cruise中,继续进行下一步。该方法和DLL方法的优缺点正好反过来了。
优点:可以实时查看Simulink模型中的参数变化,便于调试,更改模型后不需要重新编译dll文件就能进行联合仿真。
缺点:没有内嵌到Cruise模型中,运行时需要实时调用Simulink,因此运行速度极慢无比,且必须要拿到Simulink控制模型源文件才能进行联合仿真,容易泄露信息。

2.DLL联合仿真MATLAB配置过程

2.1在MATLAB里安装编译器

  1. 编译dll文件是需要编译器的,我的MATLAB版本没有自带编译器,因此需要外部安装一个,这里我选择了TDM-GCC-64编译器,该安装包我已经上传到了CSDN资源库,可以从这里下载。下载完成后进行安装,这里因为我的电脑操作系统就是64位的,因此安装的版本选择了64位的:
    在这里插入图片描述
    期间安装程序会自动去网上下载必要的安装文件,因为可能是外网,因此下载速度会很慢,如果安装失败,建议换个网络后重新安装。
  2. 在计算机处右键单击,选择属性按钮:
    在这里插入图片描述
  3. 点击高级系统设置:
    在这里插入图片描述
  4. 在弹出的窗口中选择环境变量:
    在这里插入图片描述
  5. 点击系统变量下的新建按钮:
    在这里插入图片描述
  6. 在弹出框中,变量名处输入MW_MINGW64_LOC,变量值处输入刚刚TDM-GCC-64的安装路径C:\TDM-GCC-64,之后点击确定:
    在这里插入图片描述
    可以看到系统变量里已经有了刚刚加入的环境变量,注意查看此处显示的环境变量名和值是否为MW_MINGW64_LOC和安装目录。

2.2在MATLAB中安装DLL的必要文件并设置编译器

  1. 先把MATLAB软件的当前目录展开至Cruise软件安装目录下的AVL\R2019.2\CRUISE\matlab\Install_DLL文件夹,并双击打开Install.m文件,如下图所示:
    在这里插入图片描述
  2. 打开后点击运行按钮,结果如下图所示:
    在这里插入图片描述
  3. 在下方的输入框中输入mex -setup后按回车:
  4. 提示如下图所示,代表已经成功的为C语言编译选择了编译器:
    在这里插入图片描述

3 AVL Cruise和MATLAB DLL联合仿真时快速生成Simulink模型的方法

  1. 在Cruise软件里拖入MATLAB DLL模型后,进行数据总线连接,这里输入信号连接了Cockpit里的Velocity信号,输出信号连接了Engine里的Desired Torque信号,如下图所示:
    在这里插入图片描述
    在这里插入图片描述

  2. 双击MATLAB DLL模块,打开设置菜单,切换到Description of Data Bus选项卡,并点击下方的update按钮:
    在这里插入图片描述

  3. 可以看到这里更新了连接到MATLAB DLL模块的信号,双击每个信号中Unit的空白处,对该信号进行必要的设置,比如设置单位等:
    在这里插入图片描述

  4. 点击下拉框,可以选择对应的项目和单位,比如这里选择Velocity,km/h,并点击OK完成设置:
    在这里插入图片描述

  5. 依次设置完每个信号的单位,点击最下方的Create mdl-File,即可创建含有对应输入输出信号的Simulink模型:
    在这里插入图片描述
    在这里插入图片描述

  6. 该模型保存在Cruise模型根目录下的userdata文件夹中,其中这个后缀为.mdl的文件就是刚刚生成的Simulink模型文件:
    在这里插入图片描述

4.Simulink编译DLL文件

对生成的SImulink文件进行必要的建模之后,就开始进行编译DLL文件的准备工作,具体如下所示:

  1. 点击SImulink模型中最上面的APPS,再点击SImulink Coder打开编译器,如果红色框处没有SImulink Coder,那么就点击右侧的下拉框,在里面寻找SImulink Coder并点击打开:
    在这里插入图片描述
  2. 点击Settings:
    在这里插入图片描述
  3. 在Slover选项卡中按标红所示的参数进行设置:
    在这里插入图片描述
  4. 在Data Import/Export选项卡中,设置Format为Array:
    在这里插入图片描述
  5. Code Generation选项卡中按如下图所示进行配置:在这里插入图片描述
  6. 完成上述设置后,点击Build按钮进行编译DLL文件:
    在这里插入图片描述
  7. 左下角显示Ready并且没有报错后即完成了DLL文件的编译:
    在这里插入图片描述

5.联合仿真

  1. 在Cruise软件中打开DLL模块,点击图中所画的按钮,选择之前上一步编译Simulink文件得到的后缀名为.dll的文件,点击OK并确定,即完成了DLL模块的配置。
  2. 保持页面在Sub-System 001页面的情况下,点击上方的options并选择Layout,设置编译平台为Win64,并点击OK确定。
    在这里插入图片描述
  3. 切换到计算中心,点击开始计算按钮,即可开始运行设定好的仿真任务,实现联合仿真。

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

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

相关文章

有边数限制的最短路

文章目录 题目 有边数限制的最短路算法分析1、问题:为什么Dijkstra不能使用在含负权的图中?dijkstra详细步骤2、什么是bellman - ford算法?3、bellman - ford算法的具体步骤4、在下面代码中,是否能到达n号点的判断中需要进行if(di…

水准网间接平差

目录 一、原理概述二、案例分析三、代码实现 一、原理概述 间接平差的函数模型和随机模型为: L ^ B X ^ d D σ 0 2 Q σ 0 2 P − 1 \hat{L}B\hat{X}d\\ D\sigma_0^2Q\sigma_0^2P^{-1} L^BX^dDσ02​Qσ02​P−1 误差方程为: V B x ^ − l VB\ha…

信息系统项目管理师0104:详细可行性研究(7项目立项管理—7.2项目可行性研究—7.2.3详细可行性研究)

点击查看专栏目录 文章目录 7.2.3详细可行性研究1.详细可行性研究的依据2.详细可行性研究的原则3.详细可行性研究的方法4.详细可行性研究的内容5.详细可行性研究报告记忆要点总结7.2.3详细可行性研究 详细可行性研究是在项目决策前对与项目有关的技术、经济、

智慧公厕:打造智能、安全、舒适的公共厕所新时代

随着智慧城市建设的不断推进,公共设施的智能化也已成为一种必然趋势。在这一背景下,智慧公厕作为城市管理的一个重要方面,正逐渐走进人们的视野。通过对所在辖区内所有公共厕所的全域感知、全网协同、全业务融合以及全场景智慧的赋能&#xf…

如何训练一个大模型:LoRA篇

目录 写在前面 一、LoRA算法原理 1.设计思想 2.具体实现 二、peft库 三、完整的训练代码 四、总结 写在前面 现在有很多开源的大模型,他们一般都是通用的,这就意味着这些开源大模型在特定任务上可能力不从心。为了适应我们的下游任务,…

【退役之重学 Java】初步认识 AQS

一、AQS 是什么 Abstract Queued Synchronizer ,翻译过来就是“抽象的排好队的同步器”。 AQS 是一个用来构建锁和同步器的框架。是用来构建锁或者其他同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO队列来完成线程获取资源的排队工作&…

251 基于matlab的动态粒子群算法

基于matlab的动态粒子群算法。普通粒子群算法无法感知外界环境的变化,在外界环境发生改变时无法实时进行响应,因而缺乏动态环境寻优能力。在普通粒子群算法基本上通过增加敏感粒子得到一种动态粒子群算法,该算法通过实时计算敏感粒子的适应度…

2024年第七届可再生能源与电力工程国际会议(REPE 2024)即将召开!

2024年第七届可再生能源与电力工程国际会议(REPE 2024)将于2024年9月25-27日在中国北京召开, 由清华大学主办。REPE 2024将汇聚国内外知名专家学者通过主旨报告、分组讨论和互动交流等形式,分享最新的研究成果、技术进展和应用案例&#xff0…

【教程向】从零开始创建浏览器插件(二)深入理解 Chrome 扩展的 manifest.json 配置文件

第二步:深入理解 Chrome 扩展的 manifest.json 配置文件 上一次我们已经着手完成了一个自己的浏览器插件,链接在这里:我是链接 在本篇博客中,我们将更详细地探讨 Chrome 扩展中的 manifest.json 文件。这个文件是每个浏览器扩展…

docker容器实现https访问

前言: 【云原生】docker容器实现https访问_docker ssl访问-CSDN博客 一术语介绍 ①key 私钥 明文--自己生成(genrsa ) ②csr 公钥 由私钥生成 ③crt 证书 公钥 签名(自签名或者由CA签名) ④证书&#xf…

C入门笔记

1. c文件执行过程 C语言程序的执行过程可以分为四个基本步骤:预处理、编译、汇编和链接。下面是这些步骤的简要概述: 预处理:在这个步骤中,预处理器将源代码中以 # 开头的指令进行处理,例如 #include 和 #define。预…

STM32快速入门(定时器之输出PWM波形)

STM32快速入门(定时器之输出PWM波形) 前言 本节主要讲解STM32利用通用定时器,利用CCR和CNT寄存器,输出指定占空比和频率的PWM波形。其功能的应用有:实现LED呼吸灯的效果、控制步进电机、控制直流电机转速等。 导航 …

ue5地编模块学习记录

ue5网站功能3d溜溜网下载模型https://anyconv.com/max-to-fbx-converter/3dmax转换fbx模型解决问题记录 一、光源 搜索光源搜索不到的时候可以点击 窗口> 对场景内的光照进行处理

最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin

先看链接:原文链接 参照原文链接生成的文件(下面是我放的位置) mvn指令 mvn install:install-file -DfileD:\mavenrepository/maven-shade.jar -DgroupIdcom.wj -DartifactIdmaven-shade -Dversion1.1 -Dpackagingjar如果配置了maven_home 和java_home可以任意打开cmd执行(…

Google: 在新知识上微调大语言模型是否会鼓励产生幻觉?

摘要 当大型语言模型通过监督式微调进行对齐时,它们可能会遇到在预训练期间没有获得的新事实信息。人们经常推测,这可能会教导模型产生事实上不正确的回应的行为,因为模型被训练成生成没有基于其预先存在的知识的事实。在这项工作中,Google研究了这种暴露在新知识下对微调后模…

基于springboot实现高校教师电子名片系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现高校教师电子名片系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,名片信息因为其管理内容繁杂&#xff…

C++的数据结构(五):树和存储结构及示例

在计算机科学中,树是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。这种数据结构以一系列连接的节点来形成树形结构。在C中,树的概念和存储结构是实现各种复杂算法和…

Java--初识类和对象

前言 本篇讲解Java类和对象的入门版本。 学习目的: 1.理解什么是类和对象。 2.引入面向对象程序设计的概念 3.学会如何定义类和创建对象。 4.理解this引用。 5.了解构造方法的概念并学会使用 考虑到篇幅过长问题,作者决定分多次发布。 面向对象的引入 J…

GIAT: 蛋白质结构预测的新利器

瑞典Karolinska研究院在瑞典政府赞助下由Ben Murrell等研究团队在AlphaFold 3最新报告后提出这篇论文提出了一种非常有趣和创新的方法来生成蛋白质骨架结构,称为生成式不变角度转换器(GIAT)。与现有的主要基于扩散模型和流匹配的方法不同,GIAT采用了类似于大型语言模型(如GPT)中…

【C语言|数据结构】双向链表

文章目录 前言1、初步认识双向链表1.1 定义:1.2 结构1.3 节点的存储 2、双向链表的接口函数2.1 链表的节点的动态申请2.2 链表的初始化2.3 尾插2.4 头插2.5 头删2.5 尾删2.6 在pos节点后面添加数据2.6 删除pos节点 3、双向链表的实现: 前言 各位小伙伴大…