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

news2024/11/25 23:21:36

  最近毕业设计需要用到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.coloradmin.cn/o/1652378.html

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

相关文章

数字人捕捉、建模与合成

在感知系统中,我们与外部合作者一起创建逼真的 3D 人类,其行为可以像虚拟世界中的真实人类一样。这项工作在今天有许多实际应用,并且对于元宇宙的未来至关重要。但是,在感知系统中,我们的目标是科学的——通过重现人类…

汽车灯罩一般都是用什么材质做的?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车灯罩一般都是用什么材质做的? 汽车灯罩一般使用的主要材质是聚碳酸酯(PC)和丙烯酸酯(PMMA)这两种塑料。这两种材料具有良好的透明性、耐候性和耐冲击性,因此非常适合用于汽车灯罩的制造。 聚碳酸酯&am…

C#中实现DataGridView数据的优雅Excel之旅(EPPlus)

DataGridView效果图: EXCEL效果图: 代码如下: 首先要引入EPPlus包 可以使用命令行来安装 Install-Package EPPlus 也可以使用NUGet搜索EPPlus来安装 public Homes(){InitializeComponent();ExcelPackage.LicenseContext OfficeOpenXml.LicenseContext…

如何快速优雅的免费申请和搭建属于自己的服务器

今天来讲一下如何快速优雅的搭建属于自己的服务器,我们以阿里云的云服务器为例,新用户一般是有三个月使用期限。 首先我们进入官网,选择云服务器ecs 链接直达:https://cn.aliyun.com 打开网页后,往下滑,然…

PyPI 与 GitHub 的双因素认证 | 2FA 配置指南

唠唠闲话 最近登录 GitHub 一直提示设置双重验证。除此之外,开发 Python 包常用的平台—— PyPI ,也宣布从今年开始强制启用双因素认证(2FA)。这一变化虽然在提高安全性方面起到了积极作用,但也给日常工作带来了麻烦。…

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络,侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展,自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理(NLP)、机…

ESPN 即将登陆 Disney Plus 应用

震撼消息!迪士尼CEO鲍勃艾格今日宣布,ESPN板块即将推出精选现场游戏和工作室节目,让所有美国订户目瞪口呆! 鲍勃艾格表示:“这是将ESPN带给Disney观众的第一步,我们准备在2025年秋季推出增强型独立ESPN流媒…

代码随想录算法训练营第36期DAY14

DAY14(周二) 二叉树的递归遍历 144二叉树的前序遍历 过了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullp…

卡尔曼滤波实战

入门内容 假如有个超声波,它传回的数据是这样的,这样的数据是用不了的 我们想要的是稳定的数据 此时我们引入滤波,把里面的噪声去掉,使得数据更平滑 适用系统: 符合两个特质:线性和高斯。 也叫线性高斯…

PyCharm怎么安装Comate与使用示范

目录 简单介绍Comate 安装步骤详解 Comate使用示范详解 使用总结 简单介绍Comate Baidu Comate智能编码助手是一款基于文心大模型打造的编码辅助工具,具备多重优势,包括代码智能、应用场景丰富、创造价值高、广泛应用等。它能帮助开发者提升编码效率…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案,实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力,为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会,为用户带来前所未有的互动体验。 颠覆传统,开启AR人…

【Debug日记】albumentations包安装失败解决方案

直接pip安装pip install albumentations 报错: ERROR: Command errored out with exit status 1:command: D:\anaconda3\envs\pytorch\python.exe D:\anaconda3\envs\pytorch\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py build_wheel C:\Users…

2024年营销技术远景图发布:14,106种营销技术产品(同比增长27.8%)

每年五月的第一个星期二(美国东部时间),Scott Brinker设定为Martech Day,以此来庆祝营销技术行业和所有有才华的营销技术专家和营销运营专业人士的工作,「为你们在开拓这片荒野所做的一切而欢呼!」 同时&a…

24年考研管综199真题PDF共18页

整理了24年考研管综199真题PDF共18页,包含问题求解,条件充分性判断,逻辑推理,写作,几个部分,希望对大家有所帮助 一、问题求解 这部分包含15道小题,每题3分,共45分。题目类型为选择…

SpringBoot使用AOP注解记录操作日志

一、前言 日志:指系统所指定对象的某些操作和其操作结果按时间有序的集合。 操作日志:主要是对某个对象进行新增操作或者修改操作后记录下这个新增或者修改,操作日志要求可读性比较强。比如张三在某个时间下了订单买了某个商品! …

CSS选择器(基本+复合+伪类)

目录 CSS选择器 基本选择器 标签选择器:使用标签名作为选择器->选中同名标签设置样式 类选择器:给类选择器定义一个名字.类名,并给标签添加class"类名" id选择器:跟类选择器非常相似,给id选择器定义…

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

往期回顾: 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…

完全背包问题(零钱交换+组合总和

完全背包问题(物体可以无限使用,正序遍历即可 For循环顺序也能交换,装满的话 零钱交换 完全背包问题,如果求装满背包有几种方法,都用累加。 遍历顺序影响到输出的结果是组合数还是排列数 先物品再背包是组合数&…

宏集PLC+HMI触控一体机助力构建物料自动分拣系统

一、应用背景 随着工业生产和物流领域的快速发展,对仓储、分拣和配送效率以及准确性的需求不断提高。传统的人工分拣已无法满足市场需求,为了实现智能物流,对高性能的物料输送分拣设备需求更为迫切。 二、物料分拣系统介绍 智能化物料分拣系…

【强训笔记】day15

NO.1 代码实现&#xff1a; #include<iostream> #include<cmath>using namespace std; typedef long long ll;int main() {ll x;cin>>x;ll asqrt(x);ll x1a*a,x2(a1)*(a1);if(x-x1<x2-x) cout<<x1<<endl;else cout<<x2<<endl;r…