国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C#與Matlab混合編程在EA211水泵殼體平行度檢測(cè)中的應(yīng)用

2014-07-05 01:06:34金洋洋李居峰
機(jī)械制造 2014年6期
關(guān)鍵詞:殼體平行水泵

□ 金洋洋 □ 李居峰 □ 袁 麗

上海大學(xué) 機(jī)電工程與自動(dòng)化學(xué)院 上海 200072

水泵是發(fā)動(dòng)機(jī)冷卻系統(tǒng)的重要部件,它的作用是泵送冷卻液,使冷卻液在發(fā)動(dòng)機(jī)的冷卻水道內(nèi)快速流動(dòng),以帶走工作時(shí)產(chǎn)生的熱量,保持發(fā)動(dòng)機(jī)正常的工作溫度。汽車發(fā)動(dòng)機(jī)使用的是離心式水泵,由殼體、葉輪、軸承、泵軸、水封以及傳動(dòng)帶輪等組成。

水泵殼體由鑄鐵或鑄鋁制成。鑄鐵殼體壁厚且質(zhì)量大,隨著對(duì)發(fā)動(dòng)機(jī)輕量化要求的提高,目前只在某些商用汽車的大型發(fā)動(dòng)機(jī)上還在使用鑄鐵殼體的水泵。很多鑄鐵殼體上還帶有部分水道和節(jié)溫器安裝室,這使殼體的質(zhì)量進(jìn)一步增加。大多數(shù)轎車水泵采用了鑄鋁殼體,而且尺寸越來(lái)越小,很多殼體已經(jīng)不再具有水道的功能。本文所研究的大眾汽車EA211發(fā)動(dòng)機(jī)冷卻系統(tǒng)的水泵殼體也是采用鑄鋁材料,在其生產(chǎn)過(guò)程中,水泵殼體上下面的平行度是一個(gè)重要指標(biāo),它直接影響到水泵整體的性能以及汽車的行車安全。水泵殼體上下面的平行度要求如圖1所示。

1 Matlab和C#結(jié)合的思路

當(dāng)下,Matlab已成為應(yīng)用最廣泛的科學(xué)工程計(jì)算軟件,它廣泛應(yīng)用于自動(dòng)控制、數(shù)學(xué)運(yùn)算、信號(hào)分析、圖象處理、財(cái)務(wù)分析等各領(lǐng)域。Matlab所使用的是一種腳本語(yǔ)言,是逐行解釋執(zhí)行的,程序中所有的變量都是通過(guò)mxArray來(lái)實(shí)現(xiàn)的,所以為了保證通用性,它的執(zhí)行效率非常低,在開(kāi)發(fā)一些復(fù)雜算法時(shí)會(huì)發(fā)現(xiàn)程序執(zhí)行得特別慢,雖然MathWorks公司已竭力提高M(jìn)腳本文件的運(yùn)算速度,但到目前為止,效果仍然不能和同樣功能的可執(zhí)行程序相比。而且,M文件不能脫離Matlab的應(yīng)用程序環(huán)境,這就大大制約了程序的可移植性和通用性,因此,Matlab不適合作為通用的編程平臺(tái),這給混合編程出了一個(gè)大難題。

C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NETFramework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。它是一種安全、穩(wěn)定、簡(jiǎn)單、優(yōu)雅的,由C和C++衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開(kāi)發(fā)的首選語(yǔ)言。

如果利用C#與Matlab接口技術(shù),一方面充分發(fā)揮Matlab的數(shù)值計(jì)算功能,并且可以不依賴它的軟件運(yùn)行,另一方面在C#里做出漂亮的界面,把復(fù)雜的數(shù)據(jù)處理交給Matlab去做,這樣有助于發(fā)揮程序各自的優(yōu)點(diǎn),降低開(kāi)發(fā)難度,縮短編程時(shí)間,提高執(zhí)行效率?;贑#和Matlab結(jié)合優(yōu)勢(shì)的考慮,本文介紹一種C#與Matlab通過(guò)COM組件混合編程的技術(shù),并且將這種技術(shù)成功地用于平行度在線自動(dòng)檢測(cè)項(xiàng)目。

2 Matlab和C#混合編程的實(shí)現(xiàn)過(guò)程

▲圖1 EA211發(fā)動(dòng)機(jī)水泵殼體的示意圖

通過(guò)COM組件的形式進(jìn)行混合編程,首先要考慮的問(wèn)題是編好的程序到了工廠的電腦上能否正常運(yùn)行。經(jīng)過(guò)實(shí)際操作試驗(yàn),發(fā)現(xiàn)只要拷貝一下Matlab的MCR(即 MatlabCompilerRuntime)安裝文件,然后到所要運(yùn)行的電腦上安裝一下就可使用。如果電腦上安裝了Matlab,則不需要再重新安裝這個(gè)軟件。另外,不同的Matlab版本提供的MCR可能會(huì)不同,如果在另一臺(tái)電腦上自己編寫的軟件運(yùn)行有問(wèn)題,可能是編譯器的版本不同引起的。

使用混合編程,首先把Matlab提供的MWARRAY類庫(kù)MWARRAY.dll添加到C#程序中。它的作用是把C#中的數(shù)組轉(zhuǎn)化為Matlab中的數(shù)組。同時(shí)需要在程序開(kāi)始部分添加下面兩句話:

using MathWorks.Matlab.NET.Arrays; using MathWorks.Matlab.NET.Utility;

接下來(lái)需對(duì)Matlab進(jìn)行編譯,然后生成.dll文件,和添加MWARRAY一樣,添加到C#引用之中,并在程序開(kāi)始處添加下面一句話:

usingmyFuti;(假設(shè)函數(shù)名為 myFuti)

這里有一點(diǎn)要注意,就是Matlab中M文件里編寫的程序必須是函數(shù)格式,不然就生成不了所需要的.dll文件。如果不是函數(shù)格式,需將其轉(zhuǎn)換成函數(shù)合適之后再進(jìn)行轉(zhuǎn)換。具體操作就是在程序的第一行添加:function[]=myFuti(即建立一個(gè)空函數(shù)),在程序的最后一行添加:end,這樣就將其轉(zhuǎn)成函數(shù)格式了。

最后通過(guò)C#編程調(diào)用Matlab進(jìn)行計(jì)算,實(shí)現(xiàn)混合編程的任務(wù)。

3 Matlab和C#混合編程技術(shù)在平行度檢測(cè)中的應(yīng)用

掌握了混合編程的技術(shù)之后,筆者打算把它應(yīng)用在近期所做的EA211水泵殼體平行度檢測(cè)項(xiàng)目上。在計(jì)算平行度的算法選擇中,決定使用當(dāng)今最流行的最小二乘法進(jìn)行曲面擬合,即根據(jù)空間所給的n個(gè)點(diǎn)坐標(biāo)來(lái)擬合一個(gè)面,使各個(gè)點(diǎn)到這個(gè)擬合面之間的距離最小,那么這個(gè)平面就是所要求的面。從另一角度來(lái)看,就是求得一個(gè)平面方程 z=a(1)*x+a(2)*y+a(3),使各個(gè)點(diǎn)盡可能都是此方程的解。

現(xiàn)在就以具體數(shù)據(jù)為例,取空間8個(gè)點(diǎn),各點(diǎn)的空間坐標(biāo) x、y、z 如下:

x=[2020.0520171616.0511.059.05];y=[1520231810583];

z=[4.04664.01034.05384.01804.0119

4.04394.03244.0360]

利用Matlab最小二乘算法編程如下:

A=[x′,y′,ones(size(x′))];

a=A/z′,其中a為擬合曲面的3個(gè)未知系數(shù)。

將 3 個(gè)系數(shù)分離下來(lái)為:a(1)=[1,0,0]a; a(2)=[0,1,0]a; a(3)=[0,0,1]a

最后可以得到:a(1)=0.0010, a(2)=-0.0006,a(3)=4.0233

與傳統(tǒng)的三坐標(biāo)測(cè)量的結(jié)果對(duì)比發(fā)現(xiàn),兩者的誤差非常小,說(shuō)明使用該算法是切實(shí)可行的。這樣就得到了擬合曲面的方程 z=a(1)x+a(2)y+a(3),為下一步計(jì)算平行度打下了基礎(chǔ)。

在項(xiàng)目方案中,筆者打算通過(guò) “基恩士”LK-G30系列激光位移傳感器采點(diǎn)的方法來(lái)測(cè)EA211水泵殼體上下面的平行度。初步計(jì)劃在上平面采7個(gè)點(diǎn),在下平面采8個(gè)點(diǎn),采完這些點(diǎn)之后計(jì)算平行度。先利用下面8個(gè)點(diǎn)擬合一個(gè)虛擬平面,然后再計(jì)算上面7個(gè)點(diǎn)分別到這個(gè)擬合面的距離,取這些距離中的最大值和最小值,兩者相減即得到所求的平行度。圖2和圖3分別為水泵殼體上下面的采點(diǎn)情況示意圖。

▲圖2 上平面的采點(diǎn)情況

▲圖3 下平面的采點(diǎn)情況

4 結(jié)論

本文主要介紹了基于Matlab與C#的混合編程技術(shù),并通過(guò)EA211水泵殼體平行度檢測(cè)的案例說(shuō)明了這種方法的可行性與優(yōu)越性。文中的程序結(jié)合了C#與Matlab各自的優(yōu)勢(shì),不僅提高了工作效率,使程序員更容易開(kāi)發(fā)出功能強(qiáng)大、界面友好的軟件,同時(shí)也提高了系統(tǒng)的運(yùn)行效率與精確性。這對(duì)于實(shí)現(xiàn)系統(tǒng)的無(wú)縫集成、有效縮短軟件開(kāi)發(fā)周期、優(yōu)化系統(tǒng)性能是十分有意義的。

[1] 施杰,嚴(yán)慎.用最小條件法求解平面度誤差[J].計(jì)量技術(shù),1993(3):3-4.

[2] 張眆.平面度誤差的最小二乘法分析[J].機(jī)械制造與研究,2002(3):17-19.

[3] 馮俊艷,馮其波,匡萃方.高精度激光三角位移傳感器的技術(shù)現(xiàn)狀[J].應(yīng)用光學(xué),2004,25(3).

[4] 張文選.曲臂兩臂軸線平行度誤差非接觸檢測(cè)技術(shù)研究[D].長(zhǎng)春:長(zhǎng)春理工大學(xué),2002.

[5] 肖永韌,解習(xí)農(nóng),劉曉峰.VC與Matlab混合編程之dll實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程與應(yīng)用,2001(13):174-176.

猜你喜歡
殼體平行水泵
向量的平行與垂直
平行
減速頂殼體潤(rùn)滑裝置的研制與構(gòu)想
凝結(jié)水泵全系列優(yōu)化改進(jìn)
逃離平行世界
水泵節(jié)能改造在昆鋼的應(yīng)用實(shí)踐
昆鋼科技(2021年1期)2021-04-13 07:55:04
汽車變速箱殼體零件自動(dòng)化生產(chǎn)線
油泵殼體的沖壓工藝及模具設(shè)計(jì)
低壓除氧水泵變頻改造
再頂平行進(jìn)口
汽車觀察(2016年3期)2016-02-28 13:16:36
封丘县| 辉县市| 磐石市| 大厂| 桐乡市| 微山县| 高阳县| 通城县| 娄烦县| 伽师县| 仙游县| 桐梓县| 应城市| 板桥市| 义乌市| 沂源县| 龙川县| 乌兰浩特市| 东兴市| 青神县| 江北区| 巫山县| 遂平县| 隆回县| 平度市| 津南区| 永兴县| 西丰县| 池州市| 红河县| 玉环县| 阳东县| 岚皋县| 依兰县| 永寿县| 新沂市| 花垣县| 双桥区| 南宁市| 封开县| 星子县|