XY步進(jìn)電機(jī)控制系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁
XY步進(jìn)電機(jī)控制系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁
XY步進(jìn)電機(jī)控制系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁
XY步進(jìn)電機(jī)控制系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁
XY步進(jìn)電機(jī)控制系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.機(jī)電系統(tǒng)綜合設(shè)計(jì)報(bào)告平面XY步進(jìn)(伺服)數(shù)字控制設(shè)計(jì)院系名稱: 機(jī)械與儲運(yùn)工程學(xué)院 專業(yè)班級: 機(jī)械設(shè)計(jì)制造及其自動化09-3班 學(xué)生姓名: 徐利達(dá) 學(xué)號: 2009041322 同組學(xué)生姓名: 王鵬 學(xué)號: 2009041319 指導(dǎo)教師: 張 蓬 完成日期 2013年 4 月 7 日; 摘 要本次機(jī)電系統(tǒng)綜合設(shè)計(jì)要求通過計(jì)算機(jī)高級編程語言實(shí)現(xiàn)對步進(jìn)電機(jī)的運(yùn)動控制來進(jìn)行控制,以達(dá)到對機(jī)電一體化知識的鞏固提高及綜合運(yùn)用。本報(bào)告詳細(xì)講述了GT運(yùn)動控制的硬件和軟件環(huán)境,闡述了GT系統(tǒng)運(yùn)動控制器的控制原理,數(shù)控技術(shù)中逐點(diǎn)比較法的插補(bǔ)原理,圖像二值化原理,圖形輪廓提取四鄰域法原理,以及這些原理在本次

2、機(jī)電系統(tǒng)綜合設(shè)計(jì)中的具體應(yīng)用和實(shí)現(xiàn)方法。介紹本小組制作NL(No Limited)步進(jìn)電機(jī)控制系統(tǒng)的界面和原理,讓讀者在一定程度上了解數(shù)控技術(shù),圖像處理技術(shù)以及其他方面的相關(guān)內(nèi)容。關(guān)鍵詞:步進(jìn)電機(jī);C語言;二值化目 錄摘 要I第1章 設(shè)計(jì)目的及要求11.1 設(shè)計(jì)目的11.2 設(shè)計(jì)要求1第2章 設(shè)計(jì)的軟硬件環(huán)境22.1 設(shè)計(jì)系統(tǒng)硬件環(huán)境22.2 設(shè)計(jì)系統(tǒng)軟件環(huán)境2第3章 設(shè)計(jì)原理33.1 電機(jī)驅(qū)動使能及驅(qū)動33.1.1 運(yùn)動控制卡的初始化33.1.2 對專用輸入信號參數(shù)進(jìn)行設(shè)置33.1.3 運(yùn)動控制軸的初始化33.2 單軸運(yùn)動43.3 多軸運(yùn)動53.4 圖像的二值化輪廓提取63.5 輪廓繪制7第

3、4章 設(shè)計(jì)方案及具體實(shí)施84.1 總體設(shè)計(jì)方案84.2 運(yùn)動控制的初始化以及測試94.2.1 運(yùn)動控制的初始化94.2.2 運(yùn)動測試104.3 幾何圖形加工的程序?qū)崿F(xiàn)方法104.3.1 直線加工的程序?qū)崿F(xiàn)方法104.3.2 圓弧以及橢圓弧加工的程序?qū)崿F(xiàn)方法114.4 圖形輪廓加工的程序?qū)崿F(xiàn)方法114.4.1 筆頭位置調(diào)整方法114.4.2 圖像二值化及輪廓提取方法124.4.3 圖像數(shù)據(jù)處理及輪廓加工方法13第5章 設(shè)計(jì)結(jié)果與分析145.1 任務(wù)完成情況以及設(shè)計(jì)優(yōu)缺點(diǎn)145.1.1 優(yōu)點(diǎn)145.1.2 缺點(diǎn)145.2 困難及解決14第6章 設(shè)計(jì)總結(jié)16附錄A 機(jī)電設(shè)計(jì)日志17附錄B 設(shè)計(jì)成果(

4、加工的曲線圖,輪廓圖,軟件設(shè)計(jì)界面)18III第1章 設(shè)計(jì)目的及要求1.1 設(shè)計(jì)目的本次機(jī)電系統(tǒng)綜合設(shè)計(jì)要求以GT系列運(yùn)動控制器為核心,以計(jì)算機(jī)語言為控制手段,通過計(jì)算機(jī)與運(yùn)動控制器相互通信,對其進(jìn)行運(yùn)動的初始化,運(yùn)動過程的控制來實(shí)現(xiàn)運(yùn)動控制器兩軸和筆架的運(yùn)動,并繪制簡單的幾何圖形如:直線、圓、橢圓等,以及繪制通過計(jì)算機(jī)程序圖形識別、輪廓識別處理后的圖像。1.2 設(shè)計(jì)要求利用GT系列運(yùn)動控制器和GXY系列運(yùn)動平臺,在windows下用VB語言實(shí)現(xiàn)平面XY的數(shù)字加工控制?;疽笕缦拢壕帉慓T系列運(yùn)動控制器和GXY系列運(yùn)動平臺的初始化程序,通過初始化程序可實(shí)現(xiàn)系統(tǒng)的復(fù)位;編寫平面X、Y的驅(qū)動程序

5、以控制X、Y方向的運(yùn)動;編寫插補(bǔ)算法以實(shí)現(xiàn)平面四象限的直線,順、逆圓,順、逆橢圓,以及圓弧和橢圓弧簡單的幾何圖形繪制;編寫控制程序以實(shí)現(xiàn)任意圖像的輪廓提取,并對提取的輪廓數(shù)據(jù)進(jìn)行處理,將輪廓數(shù)據(jù)轉(zhuǎn)化為對二維伺服數(shù)據(jù)控制機(jī)床的驅(qū)動代碼,利用伺服驅(qū)動函數(shù)庫實(shí)現(xiàn)在該設(shè)備上的輪廓加工;實(shí)現(xiàn)以上加工圖形的繪制時(shí)必須在圖形繪制中實(shí)現(xiàn)抬筆落筆的控制盒超界判斷。第2章 設(shè)計(jì)的軟硬件環(huán)境2.1 設(shè)計(jì)系統(tǒng)硬件環(huán)境本次機(jī)電系統(tǒng)綜合設(shè)計(jì)所采用的GT運(yùn)動控制器主要用于對機(jī)械傳動裝置的速度、位置進(jìn)行實(shí)時(shí)的控制管理,使運(yùn)動部件按照預(yù)期的軌跡和規(guī)定的運(yùn)動參數(shù)完成相應(yīng)的動作。運(yùn)動控制系統(tǒng)為開環(huán)控制系統(tǒng)。GT系列運(yùn)動控制器機(jī)械本

6、體采用模塊化拼裝,其主體由兩個(gè)直線運(yùn)動單元(X、Y兩直線運(yùn)動軸)組成。每個(gè)直線運(yùn)動單元主要包括工作臺面、滾珠絲杠、導(dǎo)軌、軸承座、基座、伺服電機(jī)等部分。為實(shí)現(xiàn)運(yùn)動對平臺運(yùn)動軌跡的記錄,GT運(yùn)動控制器還配備了由繼電器控制上下運(yùn)動的筆架,來進(jìn)行圖形的繪制。2.2 設(shè)計(jì)系統(tǒng)軟件環(huán)境本次機(jī)電系統(tǒng)綜合設(shè)計(jì),通過計(jì)算機(jī)高級語言C實(shí)現(xiàn)對運(yùn)動控制器運(yùn)動參數(shù)、運(yùn)動方式的計(jì)算和控制。本小組采用VC6.0+進(jìn)行可視化的編程,GT運(yùn)動控制器提供了DOS下的運(yùn)動函數(shù)庫和Windows下的運(yùn)動函數(shù)動態(tài)鏈接庫,本小組使用的是Windows下的運(yùn)動函數(shù)動態(tài)鏈接庫,只要調(diào)用運(yùn)動函數(shù)庫中的函數(shù),就可以實(shí)現(xiàn)運(yùn)動控制器的各種功能。在W

7、indows系統(tǒng)下使用VC中函數(shù)庫,只需要將GT400.dll、GT400.h、GT400.lib三個(gè)文件放到源程序根目錄下,再將GT400.lib添加到用戶工程中,GT運(yùn)動控制器提供的Windows下的運(yùn)動函數(shù)動態(tài)鏈接庫就可以直接調(diào)用。第3章 設(shè)計(jì)原理按照本次機(jī)電系統(tǒng)綜合設(shè)計(jì)的要求,本小組利用VC+,實(shí)現(xiàn)對運(yùn)動控制器的控制,使運(yùn)動控制按照 VB程序進(jìn)行單軸運(yùn)動、多軸協(xié)調(diào)運(yùn)動、簡單幾何圖形插補(bǔ)運(yùn)算繪制、復(fù)雜圖形繪制等等。3.1 電機(jī)驅(qū)動使能及驅(qū)動在實(shí)現(xiàn) GT運(yùn)動控制器的運(yùn)動之前,需對其運(yùn)動控制卡、運(yùn)動控制軸、運(yùn)動控制器、專用輸入信號參數(shù)設(shè)置進(jìn)行初始化,初始化之后才可以實(shí)現(xiàn)運(yùn)動控制器簡單的單軸運(yùn)

8、動,多軸協(xié)動。 3.1.1 運(yùn)動控制卡的初始化在運(yùn)動控制器初始化中需先打開運(yùn)動控制器設(shè)備,復(fù)位運(yùn)動控制器,設(shè)置控制周期并對每一軸進(jìn)行中斷屏蔽。GT運(yùn)動控制器庫函數(shù)中提供的運(yùn)動控制器初始化函數(shù)中 GT_Open()用于打開運(yùn)動控制器設(shè)備,GT_Reset() 用于復(fù)位運(yùn)動控制器,GT_SetSmplTm()用于設(shè)置控制周期,rtn=GT_SetIntrMsk()屏蔽軸中斷。(詳細(xì)初始化過程程序見源程序)。其中,運(yùn)動控制器以特定的控制周期刷新控制輸出,單位是微秒。運(yùn)動控制器再控制周期內(nèi)要完成必要的計(jì)算,控制周期不能太小,因此設(shè)定的范圍為 481966.08微秒。運(yùn)動控制器默認(rèn)的控制周期為 200微

9、秒,一般不應(yīng)小于這個(gè)值。在本次設(shè)計(jì)中,始終采用 200毫秒的控制周期。 3.1.2 對專用輸入信號參數(shù)進(jìn)行設(shè)置對專用輸入信號參數(shù)進(jìn)行設(shè)置即設(shè)置限位開關(guān)有效電平。運(yùn)動控制器通過兩個(gè)(正向、負(fù)向)限位開關(guān)自動地設(shè)定控制軸的運(yùn)動范圍。一旦限位開關(guān)被觸發(fā),運(yùn)動控制器自動地禁止控制軸朝越限的方向運(yùn)動。運(yùn)動控制器默認(rèn)的限位開關(guān)為常閉開關(guān)。即正常工作時(shí),限位開關(guān)信號為低電平;限位開關(guān)觸發(fā)時(shí),限位開關(guān)為高電平。在此用到了函數(shù)庫中的 GT_LmtSns(LmtSense)來對限位開關(guān)有效電平進(jìn)行設(shè)置。(詳細(xì)程序見源程序)。 3.1.3 運(yùn)動控制軸的初始化對運(yùn)動控制軸的初始化則需要用 GT_ClrSts()函數(shù)清

10、除當(dāng)前軸不正確狀態(tài),用 GT_StepPulse()函數(shù)設(shè)置輸出正負(fù)脈沖信號,用 GT_AxisOn()函數(shù)開啟當(dāng)前軸的驅(qū)動使能(詳細(xì)的軸初始化源程序見源程序)3.2 單軸運(yùn)動在運(yùn)動的初始化完成以后,便可以通過調(diào)用庫函數(shù)的單軸運(yùn)動命令來實(shí)現(xiàn)運(yùn)控器的單軸運(yùn)動。運(yùn)控器針對單軸運(yùn)動提供了四種運(yùn)控模式:S-曲線模式、梯形曲線模式、速度控制模式、電子齒輪模式。在本次課程設(shè)計(jì)中會使用 S-曲線模式和梯形曲線模式。梯形曲線模式的速度曲線如圖3.1所示:圖3.1 梯形速度曲線第一階段,速度按照設(shè)定的加速度值從零加速到最大速度;第二階段,加速度為零,速度保持已達(dá)到的最大速度運(yùn)行到第三階段;第三階段,按設(shè)定的加速

11、度減速到零,此時(shí)達(dá)到要求的目標(biāo)位置。編程中,調(diào)用庫函數(shù)中 GT_PrflT()函數(shù)可以實(shí)現(xiàn)梯形曲線運(yùn)動模式,另外還需進(jìn)行相應(yīng)的參數(shù)設(shè)置: GT_SetAcc() 設(shè)置當(dāng)前軸的加速度,GT_SetVel() 設(shè)置當(dāng)前軸的最大速度,GT_SetPos() 設(shè)置當(dāng)前軸的目標(biāo)位置。S形曲線模式的速度曲線如圖3.2所示:圖3.2 S-曲線模式速度、加速度、加加速度曲線用 GT_PrflS()函數(shù)設(shè)置當(dāng)前軸的運(yùn)動模式為 S-曲線模式,其它必需函數(shù)以及函數(shù)功能如下:GT_SetJerk() 設(shè)置當(dāng)前軸的加加速度GT_SetMAcc() 設(shè)置當(dāng)前軸的最大加速度 GT_SetVel() 設(shè)置當(dāng)前軸的目標(biāo)速度 G

12、T_SetPos() 設(shè)置當(dāng)前軸的目標(biāo)位置這里,加速度的單位是 Pulse/ST 2,速度單位是 Pulse/ST,目標(biāo)位置單位是 Pulse,Pulse是脈沖數(shù)。其換算關(guān)系為:平臺向前運(yùn)動 10000Pulse相當(dāng)于運(yùn)動 4mm。 在對單軸的這些運(yùn)動模式設(shè)置好后,使用 GT-Update()對參數(shù)進(jìn)行刷新后便可使單軸按照所定參數(shù)進(jìn)行運(yùn)動了。3.3 多軸運(yùn)動運(yùn)動控制器可以實(shí)現(xiàn)兩種軌跡的雙軸協(xié)調(diào)運(yùn)動:直線插補(bǔ)、圓弧插補(bǔ)。在雙軸協(xié)動之前,需對坐標(biāo)進(jìn)行映射,以實(shí)現(xiàn)坐標(biāo)系與軸的對應(yīng),實(shí)現(xiàn)軸的坐標(biāo)化。通過調(diào)用 GT_MapAxis() 命令可以將在坐標(biāo)系內(nèi)描述的運(yùn)動通過映射關(guān)系映射到相應(yīng)的軸上。從而建立

13、各軸的運(yùn)動和要求的運(yùn)動軌跡之間的運(yùn)動學(xué)傳遞關(guān)系。運(yùn)動控制器根據(jù)坐標(biāo)映射關(guān)系,控制各軸運(yùn)動,實(shí)現(xiàn)要求的運(yùn)動軌跡。調(diào)用 GT_MapAxis() 命令時(shí),所映射的各軸必須處于靜止?fàn)顟B(tài)。這種映射關(guān)系能夠簡單地描述成下面的計(jì)算公式: Axis _ N = Cx × x + Cy × y + Cz × z + Ca × a + C 由于所用的運(yùn)動控制系統(tǒng)僅限于兩軸,因此上式中 Cz,Ca為零。映射是雙軸聯(lián)動的前提,雙軸運(yùn)動實(shí)現(xiàn)還必須設(shè)置雙軸聯(lián)動的合成速度和合成加速度。其合成速度和合成加速度的數(shù)學(xué)表達(dá)式如下:合成速度: V=Vx2+VY2+VZ2+VA2合成加速度:

14、 Acc=Accx2+AccY2+AccZ2+AccA2在 GT運(yùn)動控制函數(shù)庫中可以通過調(diào)用 GT_SetSynVel(double Vel)來設(shè)置軌跡段的合成運(yùn)動速度,調(diào)用 GT_SetSynAcc(double Accel)來設(shè)置坐標(biāo)系運(yùn)動中軌跡段的合成加速度。雙軸映射和運(yùn)動參數(shù)的設(shè)置是雙軸聯(lián)動的基礎(chǔ)。GT運(yùn)動控制器提供了兩種多軸聯(lián)動的方式即多維直線插補(bǔ)運(yùn)動和多平面圓弧插補(bǔ)運(yùn)動。本次課程設(shè)計(jì)的共同運(yùn)動控制器限于兩軸,因而直線插補(bǔ)僅為兩維直線插補(bǔ),圓弧插補(bǔ)僅為 XY平面圓弧插補(bǔ)。調(diào)用函數(shù)庫中 GT_LnXY()可以實(shí)現(xiàn)兩維直線插補(bǔ)(以終點(diǎn)為輸入?yún)?shù)),調(diào)用 GT_ArcXY()可以實(shí)現(xiàn) XY

15、平面圓弧插補(bǔ)(以圓心位置和角度為輸入?yún)?shù)),調(diào)用 GT_ArcXYP()可以實(shí)現(xiàn) XY平面圓弧插補(bǔ)(以終點(diǎn)位置和半徑為輸入?yún)?shù)),這樣便可實(shí)現(xiàn)雙軸聯(lián)動下直線和圓弧的繪制。運(yùn)控器簡單運(yùn)動的控制只需要直接調(diào)用函數(shù)庫中函數(shù)即可,涉及到的程序設(shè)置還不是很多。3.4 圖像的二值化輪廓提取圖形輪廓提取是要從黑白的圖片中提取出運(yùn)動控制器的運(yùn)動軌跡 ,是可以脫離控制器單單由程序?qū)崿F(xiàn)的過程。在進(jìn)行圖形輪廓提取之前得先對圖形進(jìn)行二值化處理,使彩色的圖片變成僅有黑白兩種顏色的圖片,這里需要通過編寫程序來實(shí)現(xiàn)。在對彩色圖像的處理中,首先要對彩色位圖顏色值進(jìn)行分解。像素的顏色值(用 Col表示)是一個(gè)長整形的數(shù)值,使用

16、四個(gè)字節(jié),最上位的字節(jié)為零,其他三個(gè)個(gè)下位字節(jié)依次為 B、G、R,值為 0-255。從 Col值分解出 R、G、B使用 AND運(yùn)算符,得出 R=COLAND&Hff G= (COLAND&Hff00)/256 B=(COLAND&Hff00)/(256*256) 分別是紅,綠,藍(lán)三種顏色值。此后,運(yùn)用三種顏色值,計(jì)算出灰度值,其算法為 rr=gg=bb=(R+G+B)/3,使彩色圖像生成灰度圖象。以方便后續(xù)的二值化處理。使灰度圖象二值化的方法很多,這里采取了一種比較簡單的二值化方法。設(shè)定了一個(gè)顏色分界點(diǎn)的值,在提取每個(gè)像素點(diǎn)顏色值之后使其同這個(gè)值進(jìn)行比較,大于這個(gè)值則認(rèn)

17、為這個(gè)點(diǎn)是白色的,并將白色值 255賦給它,反之,認(rèn)為它是黑色的,同樣把黑色值 0賦給它。這樣灰度圖象便變成了黑白的二值圖像。在經(jīng)過多次的調(diào)試后可以得出比較滿意的分界值和效果比較好的黑白圖片。對圖形進(jìn)行二值化處理之后,便可以提取輪廓了。圖形輪廓提取的方法有很多種,如:四鄰域法、八鄰域法、全面檢測法等。在這三種提取輪廓的方法中,四鄰域法從本像素點(diǎn)出發(fā)從它的上、下、左、右四個(gè)方向?qū)ふ沂欠袢渴呛谏狞c(diǎn),如果是則認(rèn)為這個(gè)點(diǎn)在圖形的內(nèi)部,標(biāo)記后清除,這種方法雖然會丟失圖形輪廓上的一些點(diǎn),但它的算法比較簡單,易于實(shí)現(xiàn)。本小組此次輪廓提取主要采用八鄰域法。圖像二值化以后,將所有位圖點(diǎn)的灰度二維矩陣記錄下來

18、,輪廓提取時(shí),逐點(diǎn)掃描灰度,當(dāng)遇到第一個(gè)黑點(diǎn)時(shí)停住,判斷該點(diǎn)周圍八點(diǎn)是否都為黑點(diǎn),若是,則該點(diǎn)不是輪廓點(diǎn),故設(shè)置其為白點(diǎn)。繼續(xù)掃描,重復(fù)判斷邊界最后即可得到位圖的輪廓。相比較四鄰域法而言,八鄰域法的優(yōu)點(diǎn)在于它不會丟失圖像輪廓上的點(diǎn),而且對于VC的算法編程上比較容易實(shí)現(xiàn)。經(jīng)過多次試驗(yàn),最終選用八鄰域法。下圖為原位圖(圖3.3)和輪廓提取后的位圖(圖3.4)比較: 圖3.3 原位圖圖3.4 輪廓提取后的位圖3.5 輪廓繪制圖像數(shù)據(jù)處理及在提取出圖形輪廓之后,進(jìn)行圖形繪制,在這個(gè)過程中同樣存在兩種方法,“四鄰域法”和“八鄰域法”第4章 設(shè)計(jì)方案及具體實(shí)施4.1 總體設(shè)計(jì)方案本次機(jī)電系統(tǒng)綜合設(shè)計(jì)所采用

19、的 GT運(yùn)動控制器的硬件示意圖如圖 4.1所示: 圖4.1 采用GT系列運(yùn)動控制器組成的控制系統(tǒng)框圖由于VC+可視化編程較為困難,因此本小組采用單界面的簡易形式實(shí)現(xiàn)所有功能。下圖4.2為我們整個(gè)軟件的界面:圖4.2 軟件界面共分五個(gè)大區(qū)域,分別實(shí)現(xiàn)初始化、測試、直線插補(bǔ)、圓弧插補(bǔ)、輪廓化五大功能。4.2 運(yùn)動控制的初始化以及測試4.2.1 運(yùn)動控制的初始化下圖4.3為軟件的初始化區(qū)域圖4.3 初始化區(qū)域 “初始化(定義原點(diǎn))”按鈕按下以后,調(diào)用程序中的huiling()函數(shù),其中包括GT_Open()打開運(yùn)動控制器設(shè)備,GT_Reset()復(fù)位運(yùn)動控制器,GT_SetSmplTm(200)設(shè)置

20、控制周期為200ms,實(shí)現(xiàn)對運(yùn)控設(shè)備的初始化。此時(shí),運(yùn)控設(shè)備將會建立起以當(dāng)前位置為坐標(biāo)原點(diǎn)的XY坐標(biāo)系。 “關(guān)閉(回到原點(diǎn))”按下以后,分別對X、Y調(diào)用GT_SetPos(0)兩軸同時(shí)回到初始化時(shí)所定義的原點(diǎn)位置。詳細(xì)程序見源程序。4.2.2 運(yùn)動測試下圖4.4為軟件測試區(qū)圖示圖4.4 軟件測試區(qū)測試區(qū)又分為三個(gè)部分:坐標(biāo)顯示區(qū)(上區(qū)域),參數(shù)設(shè)置區(qū)(左下區(qū)域),按鈕區(qū)(右下區(qū)域)。參數(shù)設(shè)置區(qū)用于設(shè)置參數(shù)單步移動量(單位mm)和移動速度(mm/s),坐標(biāo)顯示區(qū)用于顯示板卡當(dāng)前坐標(biāo),按鈕區(qū)用于控制所需操作。本區(qū)主要實(shí)現(xiàn)運(yùn)動控制器的單軸運(yùn)動。例如:設(shè)置好參數(shù)L=20、V=3,按下“X+”按鈕,則X

21、運(yùn)動軸向正方向以3mm/s速度前進(jìn)20mm的距離。參數(shù)設(shè)置區(qū)靠動態(tài)編輯框控件實(shí)現(xiàn),使用GetDlgItem(IDC_EDIT)->GetWindowText(*,10)語句得到所設(shè)置的參數(shù)L和V,用于實(shí)現(xiàn)單軸前進(jìn)。單軸運(yùn)動功能的實(shí)現(xiàn)關(guān)鍵靠GT_SetPos()語句,通過設(shè)置位置達(dá)到令單軸前進(jìn)的目的。其中還有軸開啟GT_Axis(),打開軸驅(qū)動使能GT_AxisOn()等語句。坐標(biāo)顯示區(qū)屬于本小組的一大特色功能,使用了VC+軟件提供的動態(tài)編輯框控件,使用GetDlgItem(IDC_EDIT)->SetWindowText()語句,將計(jì)算得到的當(dāng)前軸位置顯示在動態(tài)編輯框中,從而能夠清

22、楚地知道當(dāng)前點(diǎn)與初始點(diǎn)的距離。詳細(xì)程序見源程序。4.3 幾何圖形加工的程序?qū)崿F(xiàn)方法4.3.1 直線加工的程序?qū)崿F(xiàn)方法下圖4.5為軟件的直線插補(bǔ)功能區(qū)圖4.5 直線插補(bǔ)功能區(qū)本區(qū)主要實(shí)現(xiàn)兩軸聯(lián)動的四象限直線插補(bǔ)運(yùn)動。例如:設(shè)置參數(shù)X=30,Y=-20,則板卡將向第四象限(30,-20)的方向直線運(yùn)動。參數(shù)設(shè)置功能實(shí)現(xiàn)方法同上文所述采用動態(tài)編輯框。直線插補(bǔ)時(shí),程序通過cnt12=1000,0,cnt22=0,1000設(shè)置X,Y兩軸坐標(biāo)映射。經(jīng)實(shí)際測試,該設(shè)備1000個(gè)脈沖行進(jìn)的距離是1mm,故而采用上述語句。程序通過設(shè)備函數(shù)庫中的GT_LnXY(X,Y)直接實(shí)現(xiàn)直線插補(bǔ)。4.3.2 圓弧以及橢圓弧

23、加工的程序?qū)崿F(xiàn)方法下圖4.6為軟件的圓弧插補(bǔ)功能區(qū),集成橢圓弧加工功能。圖4.6 圓弧插補(bǔ)功能區(qū)本區(qū)主要實(shí)現(xiàn)以當(dāng)前點(diǎn)為圓心的各種圓弧的插補(bǔ)。X、Y為圓弧起點(diǎn)坐標(biāo),為角度(當(dāng)為正時(shí)畫逆圓,當(dāng)為負(fù)時(shí)畫正圓),a/b為橢圓的X軸長和Y軸長之比(當(dāng)a/b>1時(shí),X為長軸,Y為短軸;當(dāng)a/b<1時(shí),X為短軸,Y為長軸)。例如:設(shè)置參數(shù)X=10,Y=0,=-120,a/b=1,則將得到一個(gè)以(0,0)為圓心,起點(diǎn)為(10,0)的120度正圓弧;設(shè)置參數(shù)X=20,Y=0,=60,a/b=2,則將得到一個(gè)以(0,0)為圓心,起點(diǎn)為(20,0)的60逆橢圓弧,X為長軸,Y為短軸。功能的實(shí)現(xiàn)方法。首先

24、,進(jìn)行兩軸映射cnt12=1000,0,cnt22=0,1000/atoi(bili),bili即為a/b,用GT_LnXY(X,Y)進(jìn)行直線插補(bǔ)從原點(diǎn)走到起點(diǎn)位置,用GT_ArcXY(0,0,JD)進(jìn)行以(0,0)為原點(diǎn),JD為角度的圓弧插補(bǔ)。當(dāng)bili為1時(shí),X、Y兩軸坐標(biāo)映射相同,圓弧上的每一點(diǎn)到原點(diǎn)的距離相同,則得到圓?。划?dāng)bili不為1是,X、Y兩軸坐標(biāo)映射不同,圓弧上的每一點(diǎn)到原點(diǎn)的距離不同,則得到橢圓弧。4.4 圖形輪廓加工的程序?qū)崿F(xiàn)方法4.4.1 筆頭位置調(diào)整方法如圖4.7所示為筆頭控制區(qū):圖4.7 筆頭控制區(qū)運(yùn)動控制器為用戶提供了一個(gè)通用數(shù)字輸入/輸出口。主機(jī)可以通過命令的方

25、式對該輸入/輸出口進(jìn)行操作。設(shè)備函數(shù)庫給出GT_ExOpt(),參數(shù)為十六進(jìn)制數(shù),用來對16個(gè)端口進(jìn)行賦值。經(jīng)過實(shí)際操作測試,本小組得到GT_ExOpt(0x0)為落筆指令,GT_ExOpt(0xF)為起筆指令。4.4.2 圖像二值化及輪廓提取方法如圖4.8所示為圖像二值化以及輪廓提取區(qū)圖4.8 圖像二值化及輪廓提取區(qū)本部分實(shí)現(xiàn)的功能是,在第一個(gè)框內(nèi)輸入原位圖文件名,第二個(gè)框內(nèi)輸入處理后另存的位圖文件名,(默認(rèn)的提取與存放路徑都是EXE程序所在的文件夾)T內(nèi)輸入灰度的閾值,點(diǎn)擊按鈕,就能得到輪廓提取以后的圖形。例如下兩圖4.9和4.10所示,閾值設(shè)定為254:圖4.9 原位圖圖4.10 處理后

26、位圖圖像二值化采用的基本原理同3.4節(jié)中提到的,采用逐點(diǎn)比較灰度的方法實(shí)現(xiàn)。位圖的結(jié)構(gòu)分為四部分,文件頭、信息頭、調(diào)色板和數(shù)據(jù)實(shí)體。編程時(shí),首先找到位圖的數(shù)據(jù)區(qū)的地址,再對每個(gè)位圖點(diǎn)進(jìn)行循環(huán)遍歷,到某點(diǎn)時(shí),將其灰度計(jì)算出來存入buff,再對其值大小做出判斷,若大于所設(shè)閾值,則令其為255(白),否則為0(黑),關(guān)鍵語句:buff=(buff>=t?ONE:ZERO)當(dāng)整個(gè)循環(huán)遍歷結(jié)束以后,我們就得到了二值化的位圖了。圖像的輪廓提取的基本原理同3.4節(jié),采用“八鄰域法”。編程關(guān)鍵在于,將二值化中所計(jì)算得到的二值化位圖的灰度矩陣存入一個(gè)二維數(shù)組,作為輪廓處理的一個(gè)依據(jù)。關(guān)鍵語句: if(n1

27、+n2+n3+n4+n5+n6+n7+n8=0) /n1n8為該位點(diǎn)周圍八個(gè)相鄰點(diǎn)的灰度值 shuchuji=255;/若周圍八點(diǎn)都為0,則該點(diǎn)為255 4.4.3 圖像數(shù)據(jù)處理及輪廓加工方法如3.5節(jié)所描述,輪廓加工方法主要采用四鄰域法,關(guān)鍵語句:for(c=-1;c<=1;c+)/雙循環(huán)for(d=-1;d<=1;d+)if(saomiaoa+cb+d=255)/判斷上下左右四點(diǎn)中掃描到第一個(gè)黑點(diǎn)a+=c;b+=d;saomiaoab=0;/修改讀取到的黑點(diǎn)為白goto f;/前往控制器運(yùn)動區(qū)向所讀取的黑點(diǎn)前進(jìn)經(jīng)過多次試驗(yàn)以及理論證實(shí),“四鄰域法”繪制的圖形更為流暢,且產(chǎn)生的孤

28、點(diǎn)較少,且圖形完整,同時(shí),本小組也提出了處理孤點(diǎn)的方案及程序,如下所示for(c=-1;c<=1;c+) for(d=-1;d<=1;d+) if(c*d=0) if(saomiaoa+cb+d=255)/判斷上下左右是否有黑點(diǎn) goto jixu;/有黑點(diǎn),則不是孤點(diǎn),繼續(xù)運(yùn)行g(shù)oto Re;/沒有黑點(diǎn),是孤點(diǎn),則返回重新尋找落筆點(diǎn)第5章 設(shè)計(jì)結(jié)果與分析5.1 任務(wù)完成情況以及設(shè)計(jì)優(yōu)缺點(diǎn)整個(gè)軟件設(shè)計(jì)成功地完成了設(shè)備初始化、系統(tǒng)測試、直線插補(bǔ)、圓弧插補(bǔ)、二值化、輪廓提取與繪制等幾大功能,基本能達(dá)到老師所要求的功能,但是還存在不少缺陷,以下是軟件的優(yōu)缺點(diǎn)。5.1.1 優(yōu)點(diǎn)1、初始化區(qū)

29、的一鍵回零功能:關(guān)閉設(shè)備的同時(shí)能使X、Y軸回到初始定義的原點(diǎn)位置,簡單便捷;2、使用測試區(qū)進(jìn)行單軸步進(jìn)時(shí),可以顯示兩軸當(dāng)前位置坐標(biāo);3、圓弧插補(bǔ)與橢圓弧插補(bǔ)功能集成,大大簡化操作界面,全面而簡潔;4、輪廓繪制中加入孤點(diǎn)去除程序,能夠自動跳過孤點(diǎn),縮短加工時(shí)間,并且大大增加筆頭的壽命;5.1.2 缺點(diǎn)1、不能連續(xù)做直線插補(bǔ);2、圓弧插補(bǔ)的起筆落筆控制不佳,原點(diǎn)到起點(diǎn)之間會留下一條線;3、二值化中,對位圖畫布的比例有一定要求,如果比例不符合,會出現(xiàn)繪圖失敗。5.2 困難及解決困難一:圖像的二值化關(guān)于VC中對圖像的處理設(shè)計(jì)到相當(dāng)多的編程知識,首先VC中對文件的輸入輸出、文件流的讀寫等等,所涉及到的V

30、C庫函數(shù)眾多而且參數(shù)復(fù)雜,需要查閱大量的編程指導(dǎo)書和進(jìn)行大量的才能真正掌握,算是一大難點(diǎn);其次,位圖文件結(jié)構(gòu)復(fù)雜,每一個(gè)位圖文件都有34部分組合而成,變量較多,易混淆;再次,文件跟位圖的知識結(jié)合點(diǎn)較多,更是增加難度。針對問題的復(fù)雜性,本組借閱了大量VC編程教程并且通過網(wǎng)絡(luò)獲取相關(guān)程序,最后經(jīng)過實(shí)際操作,最終得到了本次設(shè)計(jì)結(jié)果。困難二:VC中的界面設(shè)計(jì)以及控件使用VC環(huán)境下的程序設(shè)計(jì)不同于VB,可視化程度較低,因此帶來了不少困難,例如,最初對坐標(biāo)顯示區(qū)的編寫中對動態(tài)編輯框控件的運(yùn)用,不知道如何才能設(shè)置所需要的參數(shù),即將數(shù)據(jù)通過界面?zhèn)鬏數(shù)匠绦蛑腥⑴c運(yùn)算。經(jīng)過翻閱書籍,本組最終找到了所需要的語句,成功地寫出了坐標(biāo)顯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論