C#与Matlab混合编程在EA211水泵壳体平行度检测中的应用.pdf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# Matlab 混合 编程 EA211 水泵 壳体 平行 检测 中的 应用
- 资源描述:
-
C#与 Matlab混合编程在EA211水泵売体平行度检测中的应用
口金洋洋□李居峰□袁丽
上海大学机电工程与自动化学院上海200072
摘要:介绍了一种EA211水泵壳体的上下面平行度的最小二乘检测算法。根据采点测量坐标值的原则检测形位误
差,采用“基恩士”激光位移传感器来获得空间坐标值。借助 Matlab强大的数值运算功能,结合C#界面设计的简洁性和程
序编辑上易学易操作性,设计了一种面平行度的简洁算法,用C#和 Matlab的混合编程来实现此算法,不仅提高了检測精
度,还提高了产品测试的效率。
关键词: Matlab C#编程面平行度最小二乘法
中图分类号:TH311;TG801.3
文献标识码:B
文章编号:10004998(2014)06-0088-02
水泵是发动机冷却系统的重要部件,它的作用是安全、稳定、简单、优雅的,由C和C++衍生出来的面向
泵送冷却液,使冷却液在发动机的冷却水道内快速流对象的编程语言。C#综合了VB简单的可视化操作和
动,以带走工作时产生的热量,保持发动机正常的工作C++的高运行效率,以其强大的操作能力、优雅的语法
温度。汽车发动机使用的是离心式水泵,由売体、叶轮、风格、创新的语言特性和便捷的面向组件编程的支持
轴承、泵轴、水封以及传动带轮等组成。
成为.NET开发的首选语言。
水泵壳体由铸铁或铸铝制成。铸铁壳体壁厚且质
如果利用C#与 Matlab接口技术,一方面充分发
量大,随着对发动机轻量化要求的提高,目前只在某些挥 Matlab的数值计算功能,并且可以不依赖它的软件
商用汽车的大型发动机上还在使用铸铁売体的水泵。运行,另一方面在C#里做出漂亮的界面,把复杂的数
很多铸铁売体上还带有部分水道和节温器安装室,这据处理交给 Matlab去做,这样有助于发挥程序各自的
使売体的质量进一步增加。大多数轿车水泵采用了铸优点,降低开发难度,缩短编程时间,提高执行效率。基
铝売体,而且尺寸越来越小,很多売体已经不再具有水于C#和 Matlab结合优勢的考虑,本文介绍一种C#与
道的功能。本文所研究的大众汽车EA211发动机冷却 Matlab通过COM组件混合编程的技术,并且将这种技
系统的水泵壳体也是采用铸铝材料,在其生产过程中,术成功地用于平行度在线自动检测项目。
水泵壳体上下面的平行度是一个重要指标,它直接影
响到水泵整体的性能以及汽车的行车安全。水泵壳体
2 Matlab和C#混合编程的实现过程
上下面的平行度要求如图1所示。
通过COM组件的形式进行混合编程,首先要考虑
1 Matlab和C#结合的思路
0.15
Z02
当下, Matlab已成为应用最广泛的科学工程计算
软件,它广泛应用于自动控制、数学运算、信号分析、图
象处理、财务分析等各领域。 Matlab所使用的是一种脚
本语言,是逐行解释执行的,程序中所有的变量都是通
プ0.15
过 mxarray来实现的,所以为了保证通用性,它的执行
效率非常低,在开发一些复杂算法时会发现程序执行得
O
O
特别慢,虽然 Math Works公司已竭力提高M脚本文件
的运算速度,但到目前为止,效果仍然不能和同样功能
的可执行程序相比。而且,M文件不能脱离 Matlab的应
用程序环境,这就大大制约了程序的可移植性和通用
性,因此, Matlab不适合作为通用的编程平台,这给混合
編程出了一个大难题。
C#是微软公司发布的一种面向对象的、运行于
NET Framework之上的高级程序设计语言。它是一种
收稿日期:2013年12月
▲图1EA211发动机水泵壳体的示意图
88120146
机械制造52卷第598期N
的间题是编好的程序到了工厂“的电脑上能否正常运
将3个系数分离下来为:a(1)=[1,0,0]a;a(2)=
行。经过实际操作试验,发现只要拷贝一下 Matlab的
0,1,0]a;a(3)=[0,0,1]a
MCR(見即 Matlab Compiler Runtime)安装文件,然后到
最后可以得到:a(1)=0.0010,a(2)=-0.000
所要运行的电脑上安装一下就可使用。如果电脑上安a(3)=4.0233
装了 Matlab,则不需要再重新安装这个软件。另外,不
与传统的三坐标测量的结果对比发现,两者的误
同的 Matlab版本提供的MCR可能会不同,如果在另差非常小,说明使用该算法是切实可行的。这样就得到
一台电脑上自己编写的软件运行有间题,可能是编译了拟合曲面的方程z=a(1)x+a(2)y+a(3),为下一步计
器的版本不同引起的。
算平行度打下了基础。
使用混合编程,首先把 Matlab提供的 MWARRAY
在项目方案中,笔者打算通过“基恩士"ILK-G30
类库 MWARRAY.dl添加到C#程序中。它的作用是把系列激光位移传感器采点的方法来测EA211水泵壳
C#中的数组转化为 Matlab中的数组。同时需要在程体上下面的平行度。初步计划在上平面采7个点,在下
序开始部分添加下面两句话:
平面采8个点,采完这些点之后计算平行度。先利用下
using Math Works. Matlab.NET. Arrays;
usin
面8个点拟合一个虚拟平面,然后再计算上面7个点
Math Works. Matlab. NET Utility
分别到这个拟合面的距离,取这些距离中的最大值和
接下来需对 Matlab进行编译,然后生成,dl文件,最小值,炳者相减即得到所求的平行度。图2和图3分
和添加 MWARRAY一样,添加到C#引用之中,并在别为水泵壳体上下面的采点情况示意图。
程序开始处添加下面一每话
using myfuti;(假设函数名为 my Futi
这里有一点要注意,就是 Matlab中M文件里编写
的程序必须是函数格式,不然就生成不了所需要的.dl
文件。如果不是函数格式,需将其转换成函数合适之后
再进行转换。具体操作就是在程序的第一行添加
function[l= myfuti(即建立一个空函数),在程序的最
后一行添加:end,这样就将其转成函数格式了。
▲图2上平面的采点情况
▲图3下平面的采点情况
最后通过C#编程调用 Matlab进行计算,实现混
合编程的任务。
4结论
3 Matlab和C#混合编程技术在平行度检
本文主要介绍了基于 Matlab与C#的混合编程技
术,并通过FA211水泵壳体平行度检测的案例说明了
中的应用
这种方法的可行性与优越性。文中的程序结合了C#
掌握了混合编程的技术之后,笔者打算把它应用与 Matlab各自的优势,不仅提高了工作效率,使程序
在近期所做的EA211水泵売体平行度检测项目上。在员更容易开发出功能强大、界面友好的软件,同时也提
计算平行度的算法选择中,决定使用当今最流行的最高了系统的运行效率与精确性。这对于实现系统的无
小二乘法进行曲面拟合,即根据空间所给的n个点坐缝集成、有效缩短软件开发周期、优化系统性能是十分
标来拟合一个面,使各个点到这个拟合面之间的距离有意义的。
最小,那么这个平面就是所要求的面。从另一角度来
参考文献
看,就是求得一个平面方程z=展开阅读全文
文档分享网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。



链接地址:https://www.wdfxw.net/doc84356144.htm