MATLAB与C_混合编程在列车动力学后处理计算中的应用.pdf

上传人:asd****56 文档编号:70332406 上传时间:2023-01-19 格式:PDF 页数:5 大小:524.37KB
返回 下载 相关 举报
MATLAB与C_混合编程在列车动力学后处理计算中的应用.pdf_第1页
第1页 / 共5页
MATLAB与C_混合编程在列车动力学后处理计算中的应用.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《MATLAB与C_混合编程在列车动力学后处理计算中的应用.pdf》由会员分享,可在线阅读,更多相关《MATLAB与C_混合编程在列车动力学后处理计算中的应用.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、机械 2009 年第 12 期 总第 36 卷 计算机应用技术 29 收稿日期:20090723 基金项目:国家自然科学基金(50705079);973 项目(2007CB714701);863 项目(2006AA04Z406)作者简介:蒋益平(1984),湖南黔阳人,硕士研究生,主要研究方向为机车车辆动力学。MATLAB 与 C#混合编程在列车动力学 后处理计算中的应用 蒋益平,池茂儒,孟宪全,柴秀英(西南交通大学 牵引动力国家重点实验室,四川 成都 610031)摘要:详细介绍了 MATLAB 和 C#.NET 混合编程的实现方法。将 C#强大的界面开发能力与 MATLAB 强大的数值计算

2、和图形显示能力相结合,开发了适合于处理动力学计算所得时间载荷历程文件从而实现动力学计算和强度计算“无缝”结合的一个简单有效的数据处理软件。最后通过对列车动力学计算所得到的时间载荷历程文件进行处理验证了该数据处理软件软件的可行性。关键词:C#;MATLAB;混合编程;动力学后处理;时间载荷历程 中图分类号:TP391 文献标识码:A 文章编号:10060316(2009)12002905 Application of MATLAB and C#mixed-language programming in post-processing of train dynamics calculation J

3、IANG Yi-ping,CHI Mao-ru,MENG Xian-quan,CHAI Xiu-ying (Traction Power State Key Laboratory,Southwest Jiaotong University,Chengdu 610031,China)Abstract:The implementation method of mixed-language programming using C#and MATLAB is described in detail.Combining the powerful interface development capabil

4、ities of C#with the powerful numerical computation and graphics display of MATLAB,a simple and effective data-processing software for processing the time-load history which got from dynamics calculation thus to combine the dynamics and strength calculation closely has been developed.Finally,the feas

5、ibility of this software is verified by processing the time-load history data got from a train dynamics calculation.Key words:C#;MATLAB;mixed-language programming;dynamics post-processing;time-load history 随着近几年高速、重载铁路的发展,我国铁路进入了快速发展的时期。各种列车、车辆的研发、设计也得到了快速的发展。在研发、设计列车、车辆过程中运用了大量的仿真软件,例如用于强度计算的 ANSYS

6、 软件、用于动力学计算的 SIMPACK软件等。一直以来,列车、车辆的各种仿真基本上是分开的,例如强度计算和动力学计算是脱节的,动力学计算的结果(如时间载荷历程)并不用于强度计算。但是随着对列车、车辆技术研究的发展,以及仿真技术和计算机技术的进步,目前在列车、车辆的研发过程中倾向于把动力学仿真、强度仿真、空气动力学仿真等一系列仿真计算有机结合起来。在仿真过程中,动力学仿真的结果不仅用于评价其自身动力学性能,得到的时间载荷历程还用于强度计算,这样就进一步将动力学仿真和强度仿真结合,有利于得到更加实际的列车、车辆的各项性能,从而进行评价,进而改进设计,为我国铁路快速发展提供依据。目前,在列车、车辆

7、研发设计过程中将强度计算和动力学计算结合时,一般都是重新开发或利用一部分现有商业通用软件二次开发将其整合成一个更大的软件系统。强度计算软件一般选用 ANSYS,但是无论是重新开发动力学软件还是借用现有的例如 SIMPACK 软件,都会遇到的一个问题是两者的 30 计算机应用技术 机械 2009 年第 12 期 总第 36 卷 输出输入不能很好的结合。例如动力学计算输出的结果文件相当多,对于时间载荷历程文件,由于设置成单独列输出占据电脑资源相当大,所以一般都是将同一种工况下很多部位的时间载荷历程输出在一个文件内,这样在进行强度计算时就无法直接调用这种格式的时间载荷历程文件,势必要人为地对时间载荷

8、历程文件进行处理(一直以来动力学结果文件的处理一般借助 Origin 等第三方软件),这样不仅从结构上造成了整个大软件系统的不连贯,而且处理过程花费的时间也很多,还有可能出现错误。因此,开发一种能够自动处理动力学仿真计算产生的时间载荷历程文件,从而实现动力学计算和强度计算“无缝”结合的技术就显得十分必要。本文所提出的MATLAB软件与C#.NET混合编程正是为解决上述问题而提出的。1 MATLAB 与 C#混合编程的原理 MATLAB 软件是美国 MathWorks 公司开发的一种面向科学和工程计算的高级软件。MATLAB 包含几十个工具箱,覆盖通信、自动控制、信号处理、图像处理、生命科学等科

9、学技术领域,汲取了当今世界这些领域的最新研究成果。它集数值计算、信号处理和图形分析为一体,具有计算功能强大、计算结果精确、编程效率高、程序易懂等特点1。当前,MATLAB 软件在科学与工程计算领域得到广泛应用,其程序的运行速度和运行效率是任何其它高级程序设计语言所无法比拟的。Visual Studio.NET 技术是微软公司推出的一个全新概念,它代表了一个集合、一个环境、一个编程的基础。它的核心是公共语言运行时(Common Language Runtime,CLR)环境。CLR 的中心思想就是提供一个多种应用程序接口(Application Program Interface,API)的中间

10、层,作用于低级的Windows Win32 API 功能和应用程序代码之间。Visual C#.NET(以下简称 C#)是 Visual Studio.NET软件开发包的重要组成部分,其编程语言 C#是微软推出的一种面向对象的程序设计语言,它结合了许多新的功能和特点,已经逐渐成为开发应用程序的首选2。C#在设计开发 Windows 应用程序方面,界面友好、方便快捷,能够生成可执行文件,能有效地保护算法和数据,并可脱离编程环境运行,但是在工程计算方面,和 MATLAB 软件相比编程显得复杂得多3。MATLAB 软件虽然具有强大的科学计算和数据处理能力,但在可视化界面设计上,相对其它可视化程序设计

11、语言(如 C#)来讲,界面设计的功能不强,因而不易设计和开发与用户进行可视化交互的应用软件,使 MATLAB 软件的应用受到很大限制。若能在程序的开发过程中集成 C#和 MATLAB各自的优点,把计算过程和数据图形显示功能留给MATLAB 完成,而用 C#语言编写 Windows 应用程序,将极大地提高程序的开发效率。因此,目前在设计“高端计算”应用程序时,为了既发挥 MATLAB 软件高效的计算能力,又能使应用程序的交互界面友好,往往采用混合编程来实现。方法是将核心计算部分使用 MATLAB 软件编写成动态链接库(Dynamic Link Library,DLL)文件,软件可视化界面部分由

12、C#等程序来实现,通过可视化界面上的某些命令控件来调用动态链接库中的 MATLAB 软件过程完成有关计算任务4。本文就选用 C#设计软件可视化用户界面,并调用 MATLAB 动态链接库以实现混合编程。2 MATLAB 与 C#混合编程的实现 为了解决与其它应用程序之间的接口问题,MathWorks 公司在 2002 年推出的 MATLAB 6.5 及以后版本中新增了一个功能强大的 MATLAB COM Builder模块,它提供了简单易用的图形化用户界面,帮助用户将 MATLAB 的 M 函数文件自动快速地转变为独立的进程内 COM 组件,它以.DLL(ActiveX DLL)形式被装入到客户

13、的进程空间中,可以在任何支持 COM 组件的应用中使用,例如 VC+、VB、C#等5。而且在访问 COM 组件时,还具有不需要进行环境切换、运行速度很快的优点。(1)MATLAB 编译环境的设置 在 MATLAB 命令窗口输入:Mbuild setup 如果已经成功安装被支持的编译器,命令将能够检测到计算机上所有可以使用的 C/C+编译器。笔者系统使用 Visual Studio.Net 2005 和 MATLAB 机械 2009 年第 12 期 总第 36 卷 计算机应用技术 31 2007B 版本。Please choose your compiler for building stand

14、alone MATLAB applications:Would you like mbuild to locate installed compilers y/n?Select a compiler:1 Lcc-win32 C 2.4.1 in F:PROGRA1MATLABR2007bsyslcc 2 Microsoft Visual C+2005 in F:Program FilesMicrosoft Visual Studio 8 0 None Compiler:2 按照屏幕提示,选择合适的 C/C+编译器,就完成了对 MATLAB 编译环境的设置。(2)生成 COM 组件 首先,编写

15、M 函数文件,M 函数文件既能够接收参数,也允许返回参数。需要注意的是:只能是函数文件,不能是脚本文件,否则将无法编译;M函数文件的文件名必须和函数名一致。然后,在 MATLAB 命令窗口键入 deploytool,出现 MATLAB Builder for.NET 窗口(如图 1 所示),然后在窗口上,点击 File,再点击 New Deployment Project,创建新的工程。图 1 MATLAB Builder for.NET 窗口界面 在随后出现的界面中,选择 MATLAB Builder for.NET,并选择 Generic COM Component 选项,并给工程命名和指

16、定路径,确定后出现如图 2 所示的界面。单击 Add File 按钮,给工程添加 M 文件,保存工程,编译工程。图 2 Deployment tool 界面 如果编译正确,就会在当前工作路径下创建与工程名同名的目录,其中有两个子目录,分别是 src和 distrib,编译好的 COM 组件在 distrib 中,是一以dll 为后缀的文件。这里包含了在调用中需要用到的文件、库、资源、接口等。(3)打包组件及 MCR 步骤(2)中产生的 COM 组件只能在当前计算机上使用,为了能够把它发布到其它计算机上使用,还需要其它的一些支持文件。不同于普通的.DLL 文件,COM 组件必须注册才能在计算机上

17、使用。另外,COM 组件必须运行在 MCR 环境。MCR 的全称是MATLAB Component Runtime,它是一组独立的共享库,支持 MATLAB 语言的所有功能,通过它能够执行在 MATLAB 中编写的 M 文件。如果目标计算机没有安装 MCR,那么在打包组件的时候最好选择包含 MCR,那样就可以在目标计算机上运行COM 组件。(4)在 C#中使用 DLL 动态链接库 在 C#.NET 中添加引用,找到按上述步骤编译好的 COM DLL,将其添加到 COM 选项卡上的组件列表中,就完成了 COM 组件的添加,也就可以在C#代码中使用该 COM 组件了。在 C#中使用 COM组件调用

18、组件中类的方法之前,需要创建包含这个方法的类的实例,C#中类的实例可以用 new 运算符来实现,在 C#项目.CS 文件中编写如下语句,创建类的实例(name 为 COM 组件的名字、name1 为类的实例的名字)。name.nameclassClass name1=new name.nameclassClass();创建实例后,MATLAB 中的 M 函数可作为该实例的方法进行调用。3 软件流程及界面 本文利用 C#设计界面,从 C#界面获取数据,并将获取的数据传递给 MATLAB,从而实际的数值计算通过调用 COM DLL 动态链接利用 MATLAB程序计算。时间载荷历程处理软件的流程图如

19、图 3所示,软件的界面如图 4 所示。4 计算分析实例 在此利用该软件处理由动力学软件 SIMPACK进行列车动力学计算得到的时间载荷历程文件,来 32 计算机应用技术 机械 2009 年第 12 期 总第 36 卷 验证该软件。图 5 所示为 SIMPACK 进行列车动力学计算得到的时间载荷历程文件。该文件包含了很多列,第一列为时间历程,后面的每一列都代表某一部位的载荷历程,强度计算软件例如 ANSYS 等不能直接调用这种格式的时间载荷历程文件,必须将文件处理成这样的格式:即每个文件只包含两列,第一列是时间历程,第二列是载荷历程,这样强度计算软件才能调用该时间载荷历程文件进行加载,图 6 即

20、是将图 5 中的第一、二列分出来单独作为一个时间载荷历程文件。MATLAB程序动力学计算所得时间载荷历程文件C#界面结束待分割的文件名待分割的文件路径分割后文件的路径待分割文件列数分割后的时间载荷历程文件和图形显示 图 3 时间载荷历程处理软件实现流程图 图 4 时间载荷历程文件分割软件界面 图 7 是利用本软件将图 6 中的时间载荷历程数据图形化显示,该图形显示也是调用 MATLAB 软件在图形显示方面的强大功能,它让使用者可以在强度计算调用时间载荷历程文件时看到更加直观的时间载荷历程数据,对该数据内容有更深的了解。图 5 SIMPACK 计算所得多列时间载荷历程文件 图 6 软件处理后的时

21、间载荷历程文件 图 7 软件处理后时间载荷历程图形显示 利用该软件对文件进行处理后,包含很多列的时间载荷历程文件被分割成多个文件,分割后每个文件包含两列,第一列是时间历程(对于从一个原始时间载荷文件分割而来的文件,这一列都是相同的),第二列是载荷历程。可以看到,图 6 的数据与图 5 中的前两列是完全一致的,证明了软件分割时间载荷历程的正确性。图 7 图形化显示了图 6 的数据,更加直观。(下转第 39 页)0 20 40 60 80 100 120 时间历程/s 1 悬挂力11.txt 载荷历程/kN 4002000-200-400机械 2009 年第 12 期 总第 36 卷 计算机应用技

22、术 39 Inputsignal=MSComm1.Input Case Else End Select End Sub 开始代码从PC转至MCU MCU接收成功?要求重发否是返回校验信息保存数据MCU调用插补程序处理数据 产生控制信号发送信号至执行机构结束 图 6 MCU 与 PC 通信程序框图 3 运行结果 在等离子切割机自动控制台上进行调试,将存在硬盘上的 NC 文件通过路径选择调入本系统进行转换,产生 MCU 可识别的 ASCII 码,同时生成一文本文件供查阅。然后在本系统的控制下,通过串口通信将 PC 机上转换后的指令代码传送至单片机,单片机能顺利接受并识别代码,通过插补运算后输出控制

23、信号,经驱动后控制末端执行机构,按照图纸设计的线路切割。表明本文的方法可以实现 NC代码转换及 PC 和 MCU 串口通信。参考文献:1施永贵.基于 Internet 的双点水闸液压启闭机远程监控系统研究D.福州:福州大学,2005.2李敏孜,刘志鸿,王宏.利用 VB 6.0 实现 PC 机与 MCS51 单片机之间的串行通信J.内蒙古科技与经济,2004,(24):6566.3李江全,张丽,岑红蕾.Visual Basic 串口通信与测控应用技术实战详解M.北京:人民邮电出版社,2007.(上接第 32 页)在传统的动力学计算完成后,对于计算所产生的文件,除了一部分利用动力学软件自身进行后处

24、理,大部分的数据都是借用如 Origin 等进行后处理,这样在做大型动力学、强度系统软件时就造成了系统的不连贯。而通过本文的程序可以看到:该程序是一个独立的可执行程序,它的运行不依赖于其它程序,因此它既可以单独地作为一个独立的软件来处理多列文件,也可以通过可执行程序调用作为大型系统软件中的一部分,从而使大型软件系统连贯,实现“无缝”结合。5 小结 在进行列车、车辆动力学和强度仿真计算结合的大型软件系统编程的过程中,采用了 C#和MATLAB 混合编程的技术,对动力学软件计算所得的包含多列的时间载荷历程文件进行了处理,从而实现了大型软件系统的“无缝”衔接。由此得出,在进行大型软件编程时可以高效地

25、利用 MATLAB强大的科学计算功能、图形显示和丰富的工具箱,并能充分发挥 C#编程灵活和界面友好以及易于维护、升级、发布的优点。混合编程提高了软件开发效率,优化了软件的性能,增强了算法和数据的保密性,可广泛应用于科学研究和工程技术中。参考文献:1胡劲松,周方洁.基于 COM 的 MATLAB 与 Delphi 混合编程研究J.计算机应用研究,2005,(1):165166.2焦纲领,邓建辉,韩啸.MATLAB 与 Visual C#.N ET 混合编程J.海军航空工程学院学报,2008,23(1):109111.3赵士伟,赵明波,陈平.基于 COM 的 MATLAB 与 C#.NET 混合编程的实现与应用J.山东理工大学学报(自然科学版),2006,20(4):2629.4李学哲,白云,陈国新.Fortran 90 与 VB 混合编程技术的研究与实现J.苏州科技学院学报(工程技术版),2008,21(4):7680.5朱文良.高速列车转向架动态仿真与强度分析系统数据库研究D.成都:西南交通大学,2007.6邓洋,易先中,田亚南,张春生.MATLAB 与 VB 的混合编程在稳态渗流分析中的应用J.机械,2007,34(1):3031.7许雪开.VC+与 MATLAB 混合编程J.机电工程,2007,24(2):2627.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁