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

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

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. 切换到计算中心,点击开始计算按钮,即可开始运行设定好的仿真任务,实现联合仿真。
  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
AVLcurise是一个用于飞行器气动性能分析的软件,MATLAB可以通过调用AVLcurise的命令行接口来执行AVLcurise的计算。下面是一个简单的示例,演示如何使用MATLAB运行AVLcurise: 1. 首先,你需要安装AVLcurise,并将其添加到系统的环境变量中。 2. 然后,在MATLAB中,你可以使用`system`函数来执行AVLcurise的命令行接口。命令行接口的语法如下: ``` avl -i input_file.avl -o output_file.txt ``` 其中,`input_file.avl`是AVLcurise输入文件的文件名,`output_file.txt`是AVLcurise输出文件的文件名。 3. 在MATLAB中,你可以使用以下代码来执行AVLcurise的命令行接口: ```matlab % 指定AVLcurise输入文件和输出文件的文件名 input_file = 'your_avl_file.avl'; output_file = 'your_output_file.txt'; % 执行AVLcurise的命令行接口 command = ['avl -i ' input_file ' -o ' output_file]; system(command); ``` 在上面的代码中,我们首先指定AVLcurise输入文件和输出文件的文件名,然后使用`system`函数执行AVLcurise的命令行接口。需要注意的是,输入文件和输出文件的文件名需要根据实际情况进行修改。 4. 执行AVLcurise的命令行接口之后,AVLcurise会自动计算气动性能,并将结果保存到输出文件中。你可以使用MATLAB的`readtable`函数读取输出文件中的数据,并进行后续的分析和处理。 需要注意的是,AVLcurise的使用需要有一定的经验和知识,如果你不确定如何进行操作,建议寻求专业人士的帮助。另外,AVLcurise的输入文件和输出文件的格式也需要符合一定的规范,具体可以参考AVLcurise的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值