10.16638/jki.1671-7988.2016.12.031
Matlab混合编程技术在汽车有限元仿真中的应用
徐英
(华晨汽车工程研究院底盘部,辽宁沈阳110021)
摘要:随着数值分析技术和计算机处理技术的迅猛发展,有限元仿真在汽车开发过程中应用越来越多。针对汽车整车开发中底盘零部件设计开发而言,多达数十种的仿真工况应用于底盘零部件强度校核当中;仿真工程师不得不编写对应数十种工况的仿真代码来完成底盘零部件的强度校核工作;尽管仿真前处理软件能部分解决繁重的建模问题,但是面对数十种的工况载荷输入仍然让仿真工程师头痛不已。因此我们需要开发一种自动化有限元仿真代码生成程序,使仿真工程师从大量重复性工作中解脱出来。Matlab是Mathworks公司推出的面向工程和计算的交互式计算软件,它在众多的工程软件中以其非常强大的运算能力且使用简便易著称,已成为国际公认的最优秀的科技应用软件;Excel VBA是一种应用程序自动化语言,通过编写VBA程序可以让Excel等自动完成相关操作文章利用Matlab和Excel之间的Excel Link接口技术,实现Matlab和Excel之间的混合编程;利用Matlab主程序调用在Excel VBA程序预先处理的数据实现有限元仿真代码自动生成。
关键词:有限元仿真代码;Excel VBA;Matlab;混合编程;Excel Link接口技术
中图分类号:U467 文献标识码:A 文章编号:1671-7988 (2016)12-91-04
The application of MATLAB mixed programming on automobile finite element analysis
Xu Ying
( Brilliance Automotive Engineering Research Institute, Liaoning Shenyang 110021 )
Abstract: With rapid development of numerical analysis and computer processing technology ,finite element simulation in car design aspect has got more and more application .In the design process of chassis component of the vehicle development, there are dozens of simulation cases applied for strength analysis of chassis component. therefore, simulation engineer have to make different FEA code corresponding to dozens of simulation cases to finish strength analysis of chassis component. Although some pre-process softwares about finite element simulation could make it easy for some parts of these boring job, the amount of repetitive jobs has made our engineers so bored. As for it,we need to develop a computer program with some computer language ,which could build finite element code automatically, to make engineers get out of lots of repetitive jobs. Matlab is a interactive calculati
on software for engineering and computing, launched by the Mathworks company. Among most engineering applications, Matlab is well known by its very powerful computer capabilities and ease to use, which has become an international famous application software on science and technology applications. And Excel VBA is a kind of computer language which may make an application to deal with some actions automatically. This article uses the Excel Link interface technique between Excel and Matlab, realizes the mixed programming between Excel VBA and Matlab. First, the program have the data pretreatment by Excel VBA, then the main program (wrote by MATLB) could perform automatically some operations to build the FEA code which will be request for the next step on strength analysis.
Keywords: Finite element analysis code; Excel VBA; Matlab; Mixed programming; Excel Link interface technique CLC NO.: U467 Document Code: A Article ID: 1671-7988 (2016)12-91-04
作者简介:徐英,就职于华晨汽车工程研究院。
徐英:Matlab混合编程技术在汽车有限元仿真中的应用92 2016年第12期
前言
近年来,利用计算机程序编写工作应用软件越来越受到工程师,特别是仿真工程师的青睐。一方面由于计算机技术的迅猛发展,伴随的应用软件以及开发程序语言层出不穷;另一方面在结构设计和仿真过程中存在着大量的重复性的、机械性的工作,使工程师不停地进行重复性劳动。正因于此,工程师便倾向于利用自己熟悉的计算机语言,结合自己工作实际情况,编写计算机程序代替人工进行重复性劳动。这样即提高了工作效率和减少工作失误率,又让工程师从繁琐的重复劳动中解放出来。
本文作者研究方向是有限元仿真分析。实际工作中经常遇到对结构进行多种工况强度校核的情况。由于需要实现包括试验场路面和客户路面在内的所有工况的再现,因此通常仿真工况数量不少于十几种,有时多达三十几种,这就给仿真工程师带来了相当大的工作量。针对工这种实际情况,作者利用Matlab和Excel混合编程,通过程序实现有限元输入文件自动生成。
1、Matlab简介
Matlab是Mathworks公司推出的面向工程和计算的交互式计算软件,它在众多的工程软件中以其非常强大的运算能力且使用简便易著称,已成为国际公认的最优秀的科技应用软件[1]。
Matlab是matrix和laboratory两个词的组合,意为矩阵工厂(矩阵试验室)。主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进
行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
Matlab的应用非常广泛,包括信号处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用Maltab函数集)扩展了Matlab环境以解决应用领域内特定类型的问题。
Excel是一个非常出的电子表格软件,在制表、绘图、数据运算中有很好的性能;但在处理较复杂的数据时,却显得力不从心,如大量数据处理,进行三维视图绘制等。如能将Matlab强大的数据计算和处理能力、灵活的可编程能力、完美的图形数据输出能力与Excel相结合,那将会使程序变得更加强大。2、Excel VBA简介
Microsoft Excel是微软公司提供的一个强大的电子表格处理软件,它是微软公司Microsoft office套装办公软件的一个重要组成部分。Microsoft Excel是分析和提供信息的强有力的工具,它功能强大,界面友好,使用方便。在此软件中有一个十分重要的组件VBA组件[2]。
Excel VBA(Visual Basic for Application)是微软应用程序开发语言---Visual Basic的子集,是一种应用程序自动化语言,通过编写VBA程序可以让常规应用程序(如Excel,Word 等)自动完成工作。
VBA不是一个独立存在的语言,它必须基于一个主应用程序。例如,基于Microsoft Excel的VBA。实际上VBA用于Excel时并没有加入Excel的特有的成分,Excel通过一个叫做对象库的特殊命令集对VBA显示出它的能力。正因为VBA通过不同的对象对应用程序进行控制,所以VBA能控制任何一个能提供对象库的应用程序(如下图1所示)。
图1 VBA控制含对象库应用程序
3、MATLAB与VBA接口技术
Excel VBA的不足之处是缺少一些复杂的库函数,因此要通过Excel VBA实现复杂的控制算法,就需要做大量的编程工作。Matlab语言是目前使用最为广泛的科学计算软件,包括大量实用的工具箱和库函数,
很容易实现各种复杂的控制算法,如模糊控制、神经网络、遗传算法等。如果实现两种软件的联合应用,就可以综合利用它们各自的优越之处。因此,利用Excel VBA 与Matlab的接口技术,实现Matlab 语言和EXCEL VBA混合编程,充分利用两者的优点已经成为当前研究的一个热点[3]。
总的来说,EXCEL VBA和MATLAB的常用接口技术有以下三种:
1)利用Excel Link插件
Excel Link是一个在Windows环境下实现Excel与Matlab进行数据通信的插件。通过Excel Link连接Excel和Matlab实现数据共享,不脱离Excel环境直接在Excel中调用Matlab函数。
2)文件导入方法
利用xlsread和xlswrite函数读写Excel文件,然后进行数据处理操作。
3)MATLAB作为COM服务器
汽车实用技术
93 2016年第12期
COM是一组面向对象的技术和工具的集合。利用Matlab 提供的COM生成器,把Matlab算法程序生成组件,这些组件可作为独立的COM对象被Excel的VBA使用。
本文采用第1种方法,即利用Excel Link插件。该方法对Matlab支持最全面、实现最容易,可直接在Excel VBA中利用Matlab引擎调用Matlab中现有的库函数实现程序控制,接口原理如下图2所示。
图2 Excel和Matlab接口原理图
Excel Link可将Excel与Matlab进行集成,实现它们之间的数据共享。通过Matlab与Excel的链接,用户可以在Excel 的工作空间中,利用Excel的宏编程功能,使用Matlab函数调用等相关操作,使用Excel Link时,不必脱离Excel环境,而直接在Excel的工作区或者宏操作中调用Matlab函数,Excel提供了11个函数
来实现链接和数据操作[4]。
4、MATLAB与VBA混合编程
根据以上内容,利用Excel数据处理优势和Matlab丰富的库函数以及强大的格式化输出能力,混合编写有限元求解输入文件的生成程序。
4.1 程序界面
图3所示为程序操作界面,程序大体分为数据输入、数据预处理、生成文件三个步骤。
图3 程序操作界面
Input Cases:点击该按钮,程序自动弹出输入窗口,输入仿真工况数以及工况名称;
Input Nodes:点击该按钮,程序自动弹出输入窗口,按一定顺序输入载荷节点ID(顺序必须与载荷输入顺序一致);
Input Loads:点击该按钮,程序自动弹出输入窗口,输入所有工况载荷数据;
Updata和Start ML:进行数据预处理并后台启动Matlab 程序;
Run:运程主程序生成文件。
4.2 工作过程
本程序以Excel作为GUI程序界面,利用Excel VBA编程进行数据预处理,再通过Excel Link 插件调用Matlab实现设计目标。
程序工作原理如图4所示:
图4 程序工作原理图
首先,在程序操作界面依次点击各输入按钮,在弹出的窗口中输入相应数据。
然后,点击Updata按钮进行数据预处理。Excel VBA程序自动运行,进行相应预处理操作,并将处理后的数据自动保存。
图5 部分VBA程序代码
部分Excel VB程序代码段如图5所示。
最后,点击Run按钮调用Matlab程序生成有限元求解文件(自动载入有限元初始文件)。
图6 部分Matlab程序代码
部分Matlab程序代码段如图6所示。
通过Excel Link插件连接Excel和Matlab,操作代码如下图7所示[5]。
图7 Excel Link 操作代码
4.3 应用实例
本文以某车型三角臂强度仿真分析为例,仅分析五种工况以描述该程序的应用过程。
三角臂的几何模型如图8所示:
图8 某车型三角臂几何模型
对该三角臂进行五种工况的强度仿真分析;模型共有三个受力点(每个受力点承受六个方向载荷),即共有五种载荷工况,每个工况18行载荷数据,总计90行载荷数据。首先
徐英:Matlab混合编程技术在汽车有限元仿真中的应用94 2016年第12期
利用有限元前处理软件Hypermesh对三角臂几何进行网格划
分、焊缝连接、赋材料属性及厚度信息等前处理操作,生成
初始原始有限元求解文件(内仅无载荷信息)。
工况信息、节点信息、载荷信息如下表1-表3所示:
表1 节点1输入列表
节点1(ID:12;载荷单位:N)
FX FY FZ TX TY TZ
工况1 -3811 -11286 -818 0 0 0
工况2 2109 23537 948 0 0 0
工况3 235 30331 845 0 0 0
工况4 -307 -938 32 0 0 0
工况5 6020 -4488 362 0 0 0
表2 节点2输入列表
节点2(ID:13;载荷单位:N)
FX FY FZ TX TY TZ
工况1 2036 7279 574 -7312 -5580 4208
工况2 -2467 -23119 -940 -3617 237 5714
工况3 -2359 -33173 -1069 -13732 -7672 14189
工况4 200 617 -29 4854 -743 697
工况5 -202 12978 423 -188 15137 -13602
表3 节点3输入列表
节点3(ID:14;载荷单位:N)
FX FY FZ TX TY TZ
工况1 1775 4012 282 -32022 764
-359
工况2358 -416 31 -16310 796
494
工况32124 2851 261 -68974 2271 723 工况4107 317 35 25585 -1319
1378 工况5-5817 -8487 -746 -16473 3277 -2711
按照顺序在程序内输入以上输入信息,运行程序。当出现提示窗口“程序运行结束”,表示程序已经运行结束,成功生成有限元求解文件。
生成的求解文件如下图9所示。
图9 生成的部分求解文件
将求解文件导入Hypermesh查看模型载荷输入准确无误,如图10所示:
图10 带有载荷的有限元模型
提交生成的求解文件“final.bdf”进行有限元分析,经过有限元求解验证文件可以正常运行。工况1的应力云图如下图11所示:
图11 三角臂应力云图(工况1)
华晨汽车5、结论
本文通过对Matlab和Excel混合编程的程序的阐述,得出以下结论:
1)Excel Link 插件在实现Excel和Matlab两种软件的无缝连接上简单易行;
2)多种程序混合编程可以充分发挥各自程序优势,取长补短;
3)利用编写的程序执行固定重复性工作既提高工作效率又减少工作失误率。
总之,随着计算机和软件技术的高速发展,类似的应用会越来越多,也会给我们工作的各个方面带来更多好处。
参考文献
[1] 马兴义.Matlab应用开发指南[M].北京:机械工业出版社.
[2] 杜茂康.Excel与数据处理[M].北京:电子工业出版社,2002.
[3] 卢守峰.韦钦平.沈文.刘喜敏.集称VISSIM、EXCELVBA和
MATLAB的仿真平台研究.交通运输系统工程与信息.第12卷第4期.2012.8:43-48.
[4] 李晓玫.杨小平.Excel中的VBA程序设计.四川师范大学学报(自
然科学版).第27卷.2004.07:423-426.
[5] TheMathworksInc.ExcelLinkUser'sGuide,Version1.0.8.