

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 數(shù)控仿真技術(shù)課程設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 從工程的角度來看,仿真就是通過對(duì)系統(tǒng)模型的實(shí)驗(yàn)去研究一個(gè)已有的或設(shè)計(jì)中的系統(tǒng),分析復(fù)雜的動(dòng)態(tài)對(duì)象,仿真是一種有效的方法,可以減少風(fēng)險(xiǎn),縮短設(shè)計(jì)和制造的周期并節(jié)約投資。計(jì)算機(jī)仿真就是借助計(jì)算機(jī),利用系統(tǒng)模型對(duì)實(shí)際系統(tǒng)進(jìn)行實(shí)驗(yàn)研究的過程。它隨著計(jì)算機(jī)技術(shù)的發(fā)展而迅
2、速地發(fā)展,在仿真中它有越來越重要的地位。</p><p> 計(jì)算機(jī)仿真技術(shù)的發(fā)展趨勢(shì)主要表現(xiàn)在兩個(gè)方面:應(yīng)用領(lǐng)域的擴(kuò)大和仿真計(jì)算機(jī)的智能化。計(jì)算機(jī)仿真技術(shù)不僅在傳統(tǒng)的工程技術(shù)領(lǐng)域(航空、航天、化工等方面)繼續(xù)發(fā)展,而且擴(kuò)大到社會(huì)經(jīng)濟(jì)、生物等許多非工程領(lǐng)域,此外,并行處理、人工智能、知識(shí)庫和專家系統(tǒng)等技術(shù)的發(fā)展正影響著仿真計(jì)算機(jī)的發(fā)展。</p><p> 數(shù)控加工仿真利用計(jì)算機(jī)來模擬實(shí)際
3、的加工過程,是驗(yàn)證數(shù)控加工程序的可靠性和預(yù)測(cè)切削過程的有力工具,以減少工件的試切,提高生產(chǎn)效率。</p><p> 仿真軟件界面友好,基本實(shí)現(xiàn)了設(shè)計(jì)任務(wù)的要求,通過本軟件可以知道在仿真加工刀具的坐標(biāo)、各軸的工作情況以及輔助電機(jī)(冷卻液的控制情況)</p><p> 本仿真程序應(yīng)用的是脈沖插補(bǔ)算法。在仿真過程中應(yīng)用了兩種插補(bǔ)方法:直線插補(bǔ),圓弧插補(bǔ)(包括順時(shí)方向插補(bǔ)和逆時(shí)方向插補(bǔ))。&l
4、t;/p><p> 本仿真程序可以實(shí)現(xiàn)如下指令的判別和執(zhí)行:G01,G02, G03, G04,G05,M05,M08 ,M09,M03,M30.</p><p> 在應(yīng)用時(shí),編程者只要按照本應(yīng)用程序的要求輸入程序,即可以實(shí)現(xiàn)所要求的加工過程的仿真過程。本程序能夠判斷所輸入的程序的正確性,可以對(duì)程序進(jìn)行編輯。</p><p> 本軟件可以從平面和軸測(cè)兩個(gè)視圖同時(shí)觀
5、察仿真過程。</p><p><b> Abstract</b></p><p> The type of numerical control in my resign is point-to-point .</p><p> There are two interpolation schemes that have been used
6、to generating a smooth continuous path. They include:</p><p> Linear interpolation</p><p> Circular interpolation </p><p> Linear interpolation is used to generate a straight-lin
7、e path. The programmer is required to specify the beginning point and end point of the straight line (X. Y. Z.). Circular interpolation schemes is used to generate a circular (I. J). The interpolator computes the feed ra
8、tes for each of the two (or three)axes in order to achieve the specified feed rate.</p><p> My resign can carry out these commands such as G01,G02, G03, G04,G05,M05,M08 ,M09,M03,M30;</p><p> T
9、he simulation process can be seen in two means: orthographic and Isometric at the same time.</p><p><b> 目 錄</b></p><p> 設(shè)計(jì)任務(wù)書……………………………………………4</p><p> 數(shù)控仿真技術(shù)發(fā)展?fàn)顩r
10、………………………………5</p><p> 功能簡介………………………………………………7</p><p> NC代碼的讀取…………………………………………9</p><p> 插補(bǔ)過程………………………………………………10</p><p> 設(shè)計(jì)小結(jié)………………………………………………13</p><p>
11、; 參考書目………………………………………………13</p><p> 數(shù)控代碼………………………………………………14</p><p> 第一章 設(shè)計(jì)任務(wù)書</p><p><b> 1.設(shè)計(jì)題目:</b></p><p> 對(duì)于給定的一段NC代碼,用VB或其他高級(jí)語言編寫程序解釋、插補(bǔ),在PC機(jī)上仿真數(shù)控
12、裝置,進(jìn)行圖形描繪、坐標(biāo)值顯示、步進(jìn)電機(jī)控制模擬顯示及信號(hào)輸出、冷卻液和主軸開關(guān)量控制模擬顯示及信號(hào)輸出。 </p><p><b> 具體要求如下:</b></p><p> NC代碼中包含的代碼類型有:</p><p> G90 G54 G00 G01 G02 G03 M03 M05 M08 M09 M30<
13、;/p><p> 2、數(shù)控系統(tǒng)的計(jì)算機(jī)仿真</p><p> 對(duì)于給定的一段NC代碼,用VB或其他高級(jí)語言編寫程序解釋、插補(bǔ),在PC機(jī)上仿真數(shù)控裝置,進(jìn)行圖形描繪、坐標(biāo)值顯示、步進(jìn)電機(jī)控制模擬顯示及信號(hào)輸出、冷卻液和主軸開關(guān)量控制模擬顯示及信號(hào)輸出。具體要求如下:</p><p> (1) NC代碼中包含的代碼類型有:</p><p>
14、 G90 G54 G00 G01 G02 G03 M03 M05 M08 M09 M30</p><p> 圖1 工件平面 </p><p> 例:下面給出一個(gè)具體的圖形示意圖,NC代碼及其加工軌跡圖: </p><p> (2)、要求根據(jù)NC代碼屏幕模擬加工過程,圖形顯示位置,坐標(biāo)值顯示,輔助功能狀態(tài)顯示(冷卻液和主軸開關(guān)量控
15、制模擬顯示)。</p><p> (3)、PC機(jī)模擬加工過程中,要求有實(shí)時(shí)的驅(qū)動(dòng)三軸步進(jìn)電機(jī)的控制信號(hào)、控制冷卻液和主軸轉(zhuǎn)動(dòng)的開關(guān)量輸出控制信號(hào)。假設(shè)信號(hào)從計(jì)算機(jī)并行打印口的數(shù)據(jù)信號(hào)線輸出,端口地址為0x378。并行口數(shù)據(jù)線分配如下(低電平有效):</p><p><b> 圖2 加工仿真示圖</b></p><p> 第二章 數(shù)控仿真技
16、術(shù)發(fā)展?fàn)顩r</p><p> ?。?) 計(jì)算機(jī)仿真的概念及應(yīng)用</p><p> 為了解決數(shù)控加工中的程序編制問題,50年代,MIT設(shè)計(jì)了一種專門用于機(jī)械零件數(shù)控加工程序編制的語言,稱為APT(Automatically Programmed Tool)。其后,APT幾經(jīng)發(fā)展,形成了諸如APTII、APTIII(立體切削用)、APT(算法改進(jìn),增加多坐標(biāo)曲面加工編程功能)、AP
17、TAC(Advanced contouring)(增加切削數(shù)據(jù)庫管理系統(tǒng))和APT/SS(Sculp tured Surface)(增加雕塑曲面加工編程功能)等先進(jìn)版。 采用APT語言編制數(shù)控程序具有程序簡煉,走刀控制靈活等優(yōu)點(diǎn),使數(shù)控加工編程從面向機(jī)床指令的“匯編語言”級(jí),上升到面向幾何元素.APT仍有許多不便之處:采用語言定義零件幾何形狀,難以描述復(fù)雜的幾何形狀,缺乏幾何直觀性;缺少對(duì)零件形狀、刀具運(yùn)動(dòng)軌跡的直觀圖形顯示和刀
18、具軌跡的驗(yàn)證手段;難以和CAD數(shù)據(jù)庫和CAPP系統(tǒng)有效連接;不容易作到高度的自動(dòng)化,集成化。 針對(duì)APT語言的缺點(diǎn),1978年,法國達(dá)索飛機(jī)公司開始開發(fā)集三維設(shè)計(jì)、分析、NC加工一體化的系統(tǒng),稱為為CATIA。隨后很快出現(xiàn)了象EUCLID,UGII,IN</p><p> ?。?)數(shù)控仿真技術(shù)的研究現(xiàn)狀</p><p> 數(shù)控機(jī)床加工零件是靠數(shù)控指令程序控制完成的。為確保數(shù)控程序
19、的正確性,防止加工過程中干涉和碰撞的發(fā)生,在實(shí)際生產(chǎn)中,常采用試切的方法進(jìn)行檢驗(yàn)。但這種方法費(fèi)工費(fèi)料,代價(jià)昂貴,使生產(chǎn)成本上升,增加了產(chǎn)品加工時(shí)間和生產(chǎn)周期。后來又采用軌跡顯示法,即以劃針或筆代替刀具,以著色板或紙代替工件來仿真刀具運(yùn)動(dòng)軌跡的二維圖形(也可以顯示二維半的加工軌跡),有相當(dāng)大的局限性。對(duì)于工件的三維和多維加工,也有用易切削的材料代替工件(如,石蠟、木料、改性樹脂和塑料等)來檢驗(yàn)加工的切削軌跡。但是,試切要占用數(shù)控機(jī)床和加工
20、現(xiàn)場(chǎng)。為此,人們一直在研究能逐步代替試切的計(jì)算機(jī)仿真方法,并在試切環(huán)境的模型化、仿真計(jì)算和圖形顯示等方面取得了重要的進(jìn)展,目前正向提高模型的精確度、仿真計(jì)算實(shí)時(shí)化和改善圖形顯示的真實(shí)感等方向發(fā)展。</p><p> ?。?)虛擬制造目前的發(fā)展?fàn)顩r 虛擬制造從提出到現(xiàn)在已歷經(jīng)了20多年,技術(shù)上得到了很大的發(fā)展,應(yīng)用方面也得到了廣泛的擴(kuò)展。在國外,有很多學(xué)校、研究所、科研單位、大型企業(yè)等都在不斷的研究和
21、應(yīng)用虛擬制造技術(shù)。近年來,虛擬現(xiàn)實(shí)技術(shù)已較多地應(yīng)用到汽車開發(fā)工作中,已初步形成一種集專業(yè)理論、工程設(shè)計(jì)、科學(xué)試驗(yàn)等為一身的較為完整的應(yīng)用體系。例如,1995年美國標(biāo)準(zhǔn)與技術(shù)研究所的報(bào)告“國家先進(jìn)制造實(shí)驗(yàn)臺(tái)的概念設(shè)計(jì)計(jì)劃”,強(qiáng)調(diào)了分散的、多節(jié)點(diǎn)的分散虛擬制造(DVM),即虛擬企業(yè)的概念;而美國國家研究委員會(huì)的報(bào)告“制造中的信息技術(shù)”,則探討了產(chǎn)品集成、過程設(shè)計(jì)、車間控制、虛擬工廠等的信息技術(shù)問題。福特汽車公司也已經(jīng)計(jì)劃應(yīng)用虛擬環(huán)境技術(shù)來設(shè)
22、計(jì)和開發(fā)汽車,該公司的先進(jìn)車輛技術(shù)組把虛擬制造技術(shù)應(yīng)用于裝配仿真和虛擬成形,以提高空氣動(dòng)力學(xué)、人機(jī)工程學(xué)和表面建模的效果。</p><p> 第三章 功能簡介</p><p><b> 圖(1)</b></p><p><b> 1.1、主界面簡介</b></p><p> 如圖(1)
23、所示,程序主界面由如下幾個(gè)部分組成:工具欄、NC代碼輸入框、坐標(biāo)值實(shí)時(shí)狀態(tài)框、工作狀態(tài)框、NC模擬框。其中,工具欄菜單依次為:文件、編輯、視圖、運(yùn)行,工作狀態(tài)框顯示了冷卻液的開關(guān)狀態(tài)、主軸的轉(zhuǎn)速及轉(zhuǎn)向、步進(jìn)電機(jī)X電機(jī)、Y電機(jī)的轉(zhuǎn)向。NC代碼在NC代碼輸入框輸入,根據(jù)NC代碼在NC模擬框進(jìn)行模擬加工。</p><p> 1.2、參數(shù)設(shè)置定界面:</p><p><b> 圖(2
24、)</b></p><p> 如圖(2)所示,在此界面,根據(jù)需要可以選擇脈沖當(dāng)量(單位為毫米mm)以及圖形的放大倍數(shù),以便顯示,插補(bǔ)形式由于時(shí)間關(guān)系。通過寫入工件坐標(biāo)的原點(diǎn)。便可隨時(shí)改變坐標(biāo)的原點(diǎn)。</p><p> 1.3、NC代碼格式</p><p> 在NC代碼輸入框輸入代碼,開頭必須要有程序開始符“%”、結(jié)尾同樣以結(jié)束符“%”結(jié)束,程序不能
25、輸入行符,因?yàn)楸境绦蜻€不能辨別。指令符(G、M)可以是大寫也可以是小寫,指令間允許有空格。輸入圓心時(shí)只能用IJ指令,R指令不能識(shí)別——這是該程序的不足之處,還有待提高。</p><p> 1.4、程序基本操作</p><p> 首先,在NC代碼輸入框輸入NC代碼或打開已有的代碼,接著按工具欄上的運(yùn)行——“調(diào)試”,程序經(jīng)過調(diào)試后,如果程序有錯(cuò),會(huì)自動(dòng)報(bào)錯(cuò),報(bào)錯(cuò)時(shí)光標(biāo)將會(huì)定位在有錯(cuò)的代碼附
26、近,可以方便用戶修改,直到無誤為至,此時(shí)程序會(huì)告訴用戶——調(diào)試成功,緊接著按——“模擬”,在NC模擬框便會(huì)出現(xiàn)用戶希望的圖形。繪圖的過程中用戶可以按——“暫?!辨I——暫停繪圖、再按時(shí)便繼續(xù)繪制,按——“結(jié)束”整個(gè)程序?qū)⑼V?。與此同時(shí),坐標(biāo)值實(shí)時(shí)顯示框?qū)崟r(shí)顯示動(dòng)點(diǎn)的坐標(biāo),工作狀態(tài)框也反映工作狀況。在快捷工具欄功能按鈕一樣可以實(shí)現(xiàn)如上功能。整個(gè)加工過程比較直觀,一目了然。本程序優(yōu)秀之處在于——當(dāng)程序未調(diào)試之前“模擬”鍵成淡色,不能使用,以防
27、出錯(cuò),而當(dāng)模擬時(shí)“調(diào)試”鍵成淡色,程序不會(huì)亂套。</p><p> 第四章 NC代碼的讀取</p><p><b> 第五章 插補(bǔ)過程</b></p><p><b> 3.1插補(bǔ)算法說明</b></p><p> 本軟件應(yīng)用脈沖增量插補(bǔ)方法,這類插補(bǔ)方法的特點(diǎn)是:</p>
28、<p> 每次插補(bǔ)的結(jié)果僅產(chǎn)生一個(gè)單位的行程增量(一個(gè)脈沖當(dāng)量),以一個(gè)脈沖的方式輸出給步進(jìn)電機(jī)。其基本思想是:用折線來逼近曲線(包括直線)。</p><p> 插補(bǔ)速度與進(jìn)給速度密切相關(guān)。</p><p> 脈沖增量插補(bǔ)的實(shí)現(xiàn)方法較簡單。</p><p> 脈沖增量插補(bǔ)的方法有逐點(diǎn)比較法、數(shù)字積分法,本軟件用逐點(diǎn)比較法。逐點(diǎn)比較法的原理是:在仿
29、真過程中,能逐點(diǎn)地計(jì)算和判別運(yùn)動(dòng)軌跡與給定軌跡的偏差,并根據(jù)偏差控制進(jìn)給軸向給定輪廓靠近,縮小偏差,使加工輪廓逼近給定輪廓。逐點(diǎn)比較法是以折線來逼近直線和圓弧曲線的,它與規(guī)定的直線或圓弧之間的最大誤差不超過一個(gè)脈沖當(dāng)量,因此,只要將脈沖當(dāng)量取得足夠小,就可達(dá)到加工精度的要求。</p><p> 3.2直線插補(bǔ)原理:</p><p> 3.2.1直線插補(bǔ)流程圖</p>&l
30、t;p><b> :</b></p><p> 3.2.2偏差計(jì)算公式</p><p> 假設(shè)加工如圖 所示直線OA,取直線起點(diǎn)為坐標(biāo)原點(diǎn),直線終點(diǎn)坐標(biāo)A(Xe,Ye)為已知,即直線OA為給定軌跡。M(Xm,Ym)點(diǎn)為加工點(diǎn)(動(dòng)點(diǎn))。若M點(diǎn)在直線OA上,則根據(jù)相似三角形的關(guān)系可得:</p><p> Xm/Ym=Xe/Ye<
31、/p><p> 即 Ym Xe—YeXm=0</p><p> 由此,可定義直線插補(bǔ)的偏差判別式如下:</p><p> Fm=XeYm-YeXm</p><p> 若 Fm=0 表示動(dòng)點(diǎn)在OA直線上</p><p> 若 Fm>0 表示動(dòng)點(diǎn)在OA直線上方</p><p&
32、gt; 若 Fm<0 表示動(dòng)點(diǎn)在OA直線下方</p><p> 當(dāng) 時(shí)M點(diǎn)在直線上或在直線上方</p><p> ,應(yīng)沿+X方向進(jìn)給一步,走步后新的坐標(biāo)值為</p><p> Xm+1=Xm +1</p><p><b> Ym+1=Ym</b></p><p> 新的偏差為:F
33、 m+1=Fm—Ye</p><p> 若Fm<0 則應(yīng)沿+Y方向進(jìn)給一步,走步后新的坐標(biāo)值為</p><p><b> Xm+1=Xm</b></p><p> Ym+1=Ym +1</p><p> 新的偏差為:F m+1=Fm+Xe</p><p> 3.2.3終點(diǎn)判斷的方法
34、</p><p> 設(shè)置變量CountN減法計(jì)數(shù)器,在</p><p> 加工之前存入終點(diǎn)坐標(biāo)值Xe 、Ye,</p><p> X或Y坐標(biāo)每進(jìn)給一步時(shí),就</p><p> 在計(jì)數(shù)器中、減去1,直到為零,</p><p> 停止插補(bǔ),到達(dá)終點(diǎn)。</p><p> 3.2.4其它象限
35、的直線插補(bǔ)計(jì)算</p><p> 其它象限其實(shí)與第一象限或關(guān)于原心</p><p> 對(duì)稱或關(guān)于X軸對(duì)稱,所以,只要作符合上的</p><p> 變化,程序?qū)崿F(xiàn)非常方便。</p><p><b> 圓弧插補(bǔ)流程圖</b></p><p><b> ?。?lt;/b><
36、/p><p> 3.2.1偏差計(jì)算公式</p><p> 以第一象限逆圓為例介紹插補(bǔ)公式</p><p> 如圖7所示,要加工圓弧AB,設(shè)圓弧的圓心在原點(diǎn),并已知圓弧的起點(diǎn)A(Xo,Yo),終點(diǎn)B(Xe,Ye),圓弧半徑為R。加工動(dòng)點(diǎn)M(Xm,Ym),</p><p> 它到圓心的距離為Rm。則有三種情況:</p><
37、p><b> 當(dāng)動(dòng)點(diǎn)M在圓上有:</b></p><p><b> 當(dāng)動(dòng)點(diǎn)M在圓內(nèi)有:</b></p><p><b> 當(dāng)動(dòng)點(diǎn)M在圓外有:</b></p><p> 因此,可定義圓弧偏差判別公式如下:</p><p> 若,應(yīng)沿-X軸方向進(jìn)給一步,到M+1點(diǎn),
38、</p><p><b> 其坐標(biāo)值為: </b></p><p> 則新加工點(diǎn)的偏差為:</p><p> 若,沿+Y軸方向進(jìn)一步,到M+1點(diǎn),其坐標(biāo)值為</p><p> 則新加工點(diǎn)的偏差為:</p><p> 3.2.2終點(diǎn)判斷的方法</p><p> 在
39、繪圖的過程中,不斷地比較動(dòng)點(diǎn)與終點(diǎn)的距離,當(dāng)其距離小于脈沖當(dāng)量時(shí),在誤差允許的范圍達(dá)到終點(diǎn)。</p><p> 3.2.3其它象限的圓弧插補(bǔ)計(jì)算</p><p> 如圖8所示,其它象限的圓弧或關(guān)于X軸對(duì)稱、或關(guān)于X軸對(duì)稱、或關(guān)于原心對(duì)稱,完全可以按第一象限逆圓偏差公式進(jìn)行計(jì)算,所不同的是將進(jìn)給方向改變。</p><p><b> 第六章 設(shè)計(jì)小結(jié)&
40、lt;/b></p><p> 數(shù)控課程設(shè)計(jì)是機(jī)電專業(yè)的一個(gè)重要的實(shí)踐性環(huán)節(jié),是對(duì)所學(xué)《數(shù)控技術(shù)》課程和其它有關(guān)課程知識(shí)和技能的一次綜合性練習(xí),旨在使我們的知識(shí)得以鞏固、充實(shí)、系統(tǒng)化,并進(jìn)一步擴(kuò)展。課程設(shè)計(jì)是培養(yǎng)我們理論聯(lián)系實(shí)際、解決生產(chǎn)實(shí)際問題的良好機(jī)會(huì)。通過對(duì)數(shù)控銑床典型部件的設(shè)計(jì)和零件編程的具體問題的解決,不僅使我們對(duì)CAD/CAM仿真軟件有了更深刻的了解,還是我們編程能力有了很大的提高。</
41、p><p> 通過這次的設(shè)計(jì),使我們更加明白知識(shí)的聯(lián)貫性、融合性、全面性以及交錯(cuò)性的重要所在,這也是設(shè)計(jì)目的所在。我們應(yīng)該持有自我增值、自我發(fā)展的人生觀。要領(lǐng)悟“學(xué)海無邊苦作舟”的真諦。力爭上游。</p><p><b> 第七章 參考書目</b></p><p> [1] 廖效果等主編.《數(shù)控技術(shù)》[M]湖北科學(xué)技術(shù)版社-2000.5&l
42、t;/p><p> [2]《數(shù)控原理》機(jī)械工業(yè)出版社1997.3</p><p> [3] 龔沛曾等.《Visual Basic 程序設(shè)計(jì)教程》[M].高等教育出版社-1998</p><p> [4]《Visual Basic6.0》清華大學(xué)出版社1998.1</p><p><b> 第八章 數(shù)控代碼</b>&l
43、t;/p><p> Dim X As Double, Y As Double, z As Double 'X,Y,Z起點(diǎn)坐標(biāo)</p><p> Dim x1 As Double, y1 As Double, z1 As Double 'X,Y,Z終點(diǎn)坐標(biāo)</p><p> Dim gorder As String, morde
44、r As String, ornumber As Integer 'GM指令</p><p> Dim movorder As String, conorder1 As String, conorder2 As String '移動(dòng),控制指令</p><p> Dim cbstype As Integer '移動(dòng)指令類型</p><
45、;p> Dim xpoint As Double, ypoint As Double '軸測(cè)圖坐標(biāo)</p><p> Dim xpp As Double, ypp As Double, zpp As Double '平面圖坐標(biāo)</p><p> Dim centi As Double, centj As Double '圓心相對(duì)起點(diǎn)坐
46、標(biāo)</p><p> Public getx As Double, gety As Double, getz As Double 'get參數(shù)設(shè)置</p><p> Public bei As Integer '圖形放大倍數(shù)</p><p> Dim str As String '讀入NC代碼</p><
47、p> Dim prgline As Integer '運(yùn)行行數(shù)</p><p> Dim readnum As Integer</p><p> Dim mm As Double '積分插補(bǔ)累加數(shù)</p><p> Dim fm As Double '比較插補(bǔ)FM</p><p> D
48、im dl As Double '脈沖當(dāng)量</p><p> Dim Stepdl As Integer</p><p> Dim xm As Double, ym As Double, zm As Double '動(dòng)點(diǎn)X,Y,Z</p><p> Dim mx As Double, my As Double, mz As Inte
49、ger '積分插補(bǔ)數(shù)</p><p> Dim pausecon As Integer '暫??刂?lt;/p><p> Dim xx() As Double, yy() As Double, zz() As Double '保存XYZ值</p><p> Dim xx0() As Double, yy0() A
50、s Double, zz0() As Double</p><p> Dim xf0() As Double, yf0() As Double, zf0() As Double</p><p> Dim xf1() As Double, yf1() As Double, zf1() As Double</p><p> Dim movrou As Intege
51、r</p><p> Dim mousex As Double, mousey As Single</p><p> 'Private Declare Sub DIO_OutputByte Lib "d:/dio.dll" (ByVal Address As Integer, ByVal DataOut As Integer)</p><
52、p> 'Private Declare Function DIO_InputByte Lib "dio.dll" (ByVal Address As Integer) As Integer</p><p> '并行口輸入輸出函數(shù)</p><p><b> '畫坐標(biāo)</b></p><p>
53、 Sub drawxyz()</p><p> linez.Cls '畫軸測(cè)圖坐標(biāo)</p><p> linez.Scale (-700 / bei, 700 / bei)-(600 / bei, -600 / bei)</p><p> linez.Line (0, 0)-(0, 650 / bei), QBColor(10)</
54、p><p> linez.Line (0, 650 / bei)-(-10 / bei, 620 / bei), QBColor(10)</p><p> linez.Line (0, 650 / bei)-(10 / bei, 620 / bei), QBColor(10)</p><p> linez.Line (0, 0)-(-650 / bei, 0),
55、QBColor(10)</p><p> linez.Line (-650 / bei, 0)-(-620 / bei, 10 / bei), QBColor(10)</p><p> linez.Line (-650 / bei, 0)-(-620 / bei, -10 / bei), QBColor(10)</p><p> linez.Line (0,
56、0)-(650 / bei * 0.7071, -650 / bei * 0.7071), QBColor(10)</p><p> linez.Line (650 / bei * 0.7071, -650 / bei * 0.7071)-(620 / bei * 0.7071, -640 / bei * 0.7071), QBColor(10)</p><p> linez.Line
57、 (650 / bei * 0.7071, -650 / bei * 0.7071)-(640 / bei * 0.7071, -620 / bei * 0.7071), QBColor(10)</p><p> xlab.Caption = "X": ylab.Caption = "Y": zlab.Caption = "Z": olab.Capti
58、on = "0"</p><p> xlab.Refresh: ylab.Refresh: zlab.Refresh: olab.Refresh</p><p> linez.PSet (0, 600)</p><p> linep.Cls '畫平面圖坐標(biāo)</p><p> linep.Scal
59、e (-200 / bei, 1000 / bei)-(1000 / bei, -200 / bei)</p><p> linep.Line (0, 950 / bei)-(0, -150 / bei), QBColor(10)</p><p> linep.Line (10 / bei, 920 / bei)-(0, 950 / bei), QBColor(10)</p>
60、;<p> linep.Line (-10 / bei, 920 / bei)-(0, 950 / bei), QBColor(10)</p><p> linep.Line (-150 / bei, 0)-(950 / bei, 0), QBColor(10)</p><p> linep.Line (950 / bei, 0)-(920 / bei, 10 / be
61、i), QBColor(10)</p><p> linep.Line (950 / bei, 0)-(920 / bei, -10 / bei), QBColor(10)</p><p> linep.PSet (0, 0)</p><p><b> End Sub</b></p><p><b>
62、'逆圓插補(bǔ)</b></p><p> Private Sub ycirsub(rr As Double, qbc As Integer)</p><p> Dim xtemp, ytemp, ztemp As Double</p><p> Dim xppt, yppt, zppt As Double</p><p>
63、; Dim xpointtemp, ypointtemp As Double</p><p> xtemp = xm: ytemp = ym: ztemp = zm</p><p> If X = x1 And Y = y1 Then Exit Sub</p><p> If fm >= 0 Then</p><p> If
64、xm >= 0 Then</p><p> If ym >= 0 Then</p><p> xm = xm - dl</p><p> outdata(0).Text = 0</p><p><b> Else</b></p><p> ym = ym + dl</p
65、><p> outdata(2).Text = 0</p><p><b> End If</b></p><p><b> Else</b></p><p> If ym >= 0 Then</p><p> ym = ym - dl</p>&l
66、t;p> outdata(2).Text = 0</p><p><b> Else</b></p><p> xm = xm + dl</p><p> outdata(0).Text = 0</p><p><b> End If</b></p><p>
67、<b> End If</b></p><p><b> Else</b></p><p> If xm >= 0 Then</p><p> If ym >= 0 Then</p><p> ym = ym + dl</p><p> outdata
68、(2).Text = 0</p><p><b> Else</b></p><p> xm = xm + dl</p><p> outdata(0).Text = 0</p><p><b> End If</b></p><p><b> Else&
69、lt;/b></p><p> If ym >= 0 Then</p><p> xm = xm - dl</p><p> outdata(0).Text = 0</p><p><b> Else</b></p><p> ym = ym - dl</p>
70、<p> outdata(2).Text = 0</p><p><b> End If</b></p><p><b> End If</b></p><p><b> End If</b></p><p> If xtemp = xm And ytemp
71、 = ym And ztemp = zm Then Exit Sub</p><p> xpp = xm - (centi - X) * 10: ypp = ym - (centj - Y) * 10: zpp = zm</p><p> xppt = xtemp - (centi - X) * 10: yppt = ytemp - (centj - Y) * 10: zppt = z
72、temp</p><p><b> '平面圖坐標(biāo)</b></p><p> If zpp <= 0 Then</p><p> ReDim Preserve xx(UBound(xx) + 1), yy(UBound(yy) + 1), zz(UBound(zz) + 1) As Double</p><
73、p> xx(UBound(xx)) = xpp: yy(UBound(yy)) = ypp: zz(UBound(zz)) = zpp</p><p> ReDim Preserve xx0(UBound(xx0) + 1), yy0(UBound(yy0) + 1), zz0(UBound(zz0) + 1) As Double</p><p> xx0(UBound(xx0
74、)) = xpp: yy0(UBound(yy0)) = ypp: zz0(UBound(zz0)) = 0</p><p><b> End If</b></p><p> xpoint = -xpp + ypp * 0.7071 '軸測(cè)變換</p><p> ypoint = -ypp * 0.7071 + zpp<
75、;/p><p> xpointtemp = -xppt + yppt * 0.7071</p><p> ypointtemp = -yppt * 0.7071 + zppt</p><p> xcText.Text = xpp / 10: ycText.Text = ypp / 10: zcText.Text = zpp / 10 '工件坐標(biāo)</p
76、><p> linep.Line -(xpp, ypp), QBColor(qbc) '畫平面圖</p><p> linez.Line (xpointtemp, ypointtemp)-(xpoint, ypoint), QBColor(qbc)</p><p> If zpp < 0 Then</p><p&g
77、t; linez.Line (xpointtemp, ypointtemp - zppt)-(xpoint, ypoint - zpp), QBColor(qbc - 1)</p><p><b> End If</b></p><p> fm = xm ^ 2 + ym ^ 2 - rr ^ 2</p><p><b> E
78、nd Sub</b></p><p><b> '順圓插補(bǔ)</b></p><p> Private Sub scirsub(rr As Double, qbc As Integer)</p><p> Dim xtemp, ytemp, ztemp As Double</p><p> Di
79、m xppt, yppt, zppt As Double</p><p> Dim xpointtemp, ypointtemp As Double</p><p> xtemp = xm: ytemp = ym: ztemp = zm</p><p> If X = x1 And Y = y1 Then Exit Sub</p><p&g
80、t; If fm >= 0 Then</p><p> If xm >= 0 Then</p><p> If ym >= 0 Then</p><p> ym = ym - dl</p><p> outdata(2).Text = 0 '0表示正方向</p><
81、;p> outdata(3).Text = 1 '1表示負(fù)方向</p><p><b> Else</b></p><p> xm = xm - dl</p><p> outdata(0).Text = 0</p><p> outdata(1).Text = 1<
82、/p><p><b> End If</b></p><p><b> Else</b></p><p> If ym >= 0 Then</p><p> xm = xm + dl</p><p> outdata(0).Text = 0</p>
83、<p> outdata(1).Text = 0</p><p><b> Else</b></p><p> ym = ym + dl</p><p> outdata(2).Text = 0</p><p> outdata(3).Text = 0</p><p><
84、b> End If</b></p><p><b> End If</b></p><p><b> Else</b></p><p> If xm >= 0 Then</p><p> If ym >= 0 Then</p><p>
85、 xm = xm + dl</p><p> outdata(0).Text = 0</p><p> outdata(1).Text = 0</p><p><b> Else</b></p><p> ym = ym - dl</p><p> outdata(2).Text =
86、0</p><p> outdata(3).Text = 1</p><p><b> End If</b></p><p><b> Else</b></p><p> If ym >= 0 Then</p><p> ym = ym + dl</p&
87、gt;<p> outdata(2).Text = 0</p><p> outdata(3).Text = 0</p><p><b> Else</b></p><p> xm = xm - dl</p><p> outdata(0).Text = 0</p><p>
88、; outdata(1).Text = 1</p><p><b> End If</b></p><p><b> End If</b></p><p><b> End If</b></p><p> If xtemp = xm And ytemp = ym An
89、d ztemp = zm Then Exit Sub</p><p> xppt = xtemp - (centi - X) * 10: yppt = ytemp - (centj - Y) * 10: zppt = ztemp</p><p> xpp = xm - (centi - X) * 10: ypp = ym - (centj - Y) * 10: zpp = zm<
90、/p><p> If zpp <= 0 Then</p><p> ReDim Preserve xx(UBound(xx) + 1), yy(UBound(yy) + 1), zz(UBound(zz) + 1) As Double</p><p> xx(UBound(xx)) = xpp: yy(UBound(yy)) = ypp: zz(UBound
91、(zz)) = zpp</p><p> ReDim Preserve xx0(UBound(xx0) + 1), yy0(UBound(yy0) + 1), zz0(UBound(zz0) + 1) As Double</p><p> xx0(UBound(xx0)) = xpp: yy0(UBound(yy0)) = ypp: zz0(UBound(zz0)) = 0</p
92、><p><b> End If</b></p><p> xpoint = -xpp + ypp * 0.7071 '軸測(cè)變換</p><p> ypoint = -ypp * 0.7071 + zpp</p><p> xpointtemp = -xppt + yppt * 0.70
93、71</p><p> ypointtemp = -yppt * 0.7071 + zppt</p><p> xcText.Text = xpp / 10: ycText.Text = ypp / 10: zcText.Text = zpp / 10 '工件坐標(biāo)</p><p> linep.Line -(xpp, ypp), QBColor(qbc
94、) '畫平面圖</p><p> linez.Line (xpointtemp, ypointtemp)-(xpoint, ypoint), QBColor(qbc)</p><p> If zpp < 0 Then</p><p> linez.Line (xpointtemp, ypointtemp - zppt)-(xpoin
95、t, ypoint - zpp), QBColor(qbc - 1)</p><p><b> End If</b></p><p> fm = xm ^ 2 + ym ^ 2 - rr ^ 2</p><p><b> End Sub</b></p><p><b> '
96、直線積分插補(bǔ)</b></p><p> Private Sub linesub(cx, cy, cz As Integer, fangx, fangy, fangz As Integer, qbc As Integer)</p><p> 'CX,CY,CZ為x,y,z偏移量,fangx,fangy,fangz 1表示正方向,-1為負(fù)方向</p>&l
97、t;p> If cx = 0 And cy = 0 And cz = 0 Then Exit Sub</p><p> Dim xtemp, ytemp, ztemp As Double</p><p> Dim xppt, yppt, zppt As Double</p><p> Dim xpointtemp, ypointtemp As Doub
98、le</p><p> xtemp = xm: ytemp = ym: ztemp = zm</p><p> mx = mx + cx / 10: my = my + cy / 10: mz = mz + cz / 10</p><p> If mx >= mm Then</p><p> xm = xm + fangx *
99、dl</p><p> mx = mx - mm</p><p> outdata(0).Text = 0</p><p><b> End If</b></p><p> If my >= mm Then</p><p> ym = ym + fangy * dl</p&g
100、t;<p> my = my - mm</p><p> outdata(2).Text = 0</p><p><b> End If</b></p><p> If mz >= mm Then</p><p> zm = zm + fangz * dl</p><p&
101、gt; mz = mz - mm</p><p> outdata(4).Text = 0</p><p><b> End If</b></p><p> If xtemp = xm And ytemp = ym And ztemp = zm Then Exit Sub</p><p> xpp = xm +
102、 X * 10: ypp = ym + Y * 10: zpp = zm + z * 10</p><p> If zpp <= 0 Then</p><p> ReDim Preserve xx(UBound(xx) + 1), yy(UBound(yy) + 1), zz(UBound(zz) + 1) As Double</p><p> xx(U
103、Bound(xx)) = xpp: yy(UBound(yy)) = ypp: zz(UBound(zz)) = zpp</p><p> ReDim Preserve xx0(UBound(xx0) + 1), yy0(UBound(yy0) + 1), zz0(UBound(zz0) + 1) As Double</p><p> xx0(UBound(xx0)) = xpp: y
104、y0(UBound(yy0)) = ypp: zz0(UBound(zz0)) = 0</p><p><b> End If</b></p><p> xppt = xtemp + X * 10: yppt = ytemp + Y * 10: zppt = ztemp + z * 10</p><p> xpoint = -xpp +
105、ypp * 0.7071 '軸測(cè)變換</p><p> ypoint = -ypp * 0.7071 + zpp</p><p> xpointtemp = -xppt + yppt * 0.7071</p><p> ypointtemp = -yppt * 0.7071 + zppt</p><p> xcText.Te
106、xt = xpp / 10: ycText.Text = ypp / 10: zcText.Text = zpp / 10 '工件坐標(biāo)</p><p> linep.Line -(xpp, ypp), QBColor(qbc)</p><p> linez.Line (xpointtemp, ypointtemp)-(xpoint, ypoint), QBColor(qbc)&
107、lt;/p><p> If zpp < 0 Then</p><p> linez.Line (xpointtemp, ypointtemp - zppt)-(xpoint, ypoint - zpp), QBColor(qbc - 1)</p><p><b> End If</b></p><p><b
108、> End Sub</b></p><p> Private Sub Form_Load()</p><p> Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)</p><p> Me.Top = GetSetting(App.
109、Title, "Settings", "MainTop", 1000)</p><p> Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500)</p><p> Me.Height = GetSetting(App.Title, &q
110、uot;Settings", "MainHeight", 6500)</p><p><b> '讀入設(shè)置</b></p><p> fileframe.Caption = "代碼"</p><p> getx = getform.getxt.Text '讀入get
111、參數(shù)設(shè)置</p><p> gety = getform.getyt.Text</p><p> getz = getform.getzt.Text</p><p> bei = getform.beit.Text</p><p> dl = dlt.Text * 10</p><p> Call drawx
112、yz</p><p> ReDim xx(0) As Double, yy(0) As Double, zz(0) As Double</p><p> ReDim xx0(0) As Double, yy0(0) As Double, zz0(0) As Double</p><p><b> End Sub</b></p>
113、<p> Private Sub Form_Unload(Cancel As Integer)</p><p> If Me.WindowState <> vbMinimized Then</p><p> SaveSetting App.Title, "Settings", "MainLeft", Me.Left&l
114、t;/p><p> SaveSetting App.Title, "Settings", "MainTop", Me.Top</p><p> SaveSetting App.Title, "Settings", "MainWidth", Me.Width</p><p> SaveS
115、etting App.Title, "Settings", "MainHeight", Me.Height</p><p><b> '保存設(shè)置</b></p><p><b> End If</b></p><p><b> End</b><
116、;/p><p><b> End Sub</b></p><p><b> '清除</b></p><p> Private Sub mnueditclear_Click()</p><p> filetxt.Text = "" '清除文件框<
117、;/p><p> arimage.Top = 300</p><p><b> End Sub</b></p><p><b> '清除</b></p><p> Private Sub clear_Click()</p><p> filetxt.Text =
118、 "" '清除文件框</p><p> arimage.Top = 300</p><p><b> End Sub</b></p><p><b> '暫停</b></p><p> Private Sub mnurunpause_Click
119、()</p><p> clear.Enabled = True</p><p> Timer2.Interval = 0</p><p> Timer1.Interval = 0</p><p> pausecon = 1</p><p><b> End Sub</b></p&
120、gt;<p><b> '暫停</b></p><p> Private Sub pause_Click()</p><p> clear.Enabled = True</p><p> Timer2.Interval = 0</p><p> Timer1.Interval = 0<
121、;/p><p> pausecon = 1</p><p><b> End Sub</b></p><p><b> '運(yùn)行</b></p><p> Private Sub mnurunrun_Click()</p><p> If pausecon = 1
122、 Then '當(dāng)暫停時(shí)為繼續(xù)</p><p> Timer1.Interval = 1</p><p> Timer2.Interval = 1</p><p> pausecon = 0</p><p><b> Else</b></p><p> If file
123、txt.Text = "" Then</p><p> MsgBox "請(qǐng)加載NC程序", vbOKOnly, "加載失敗"</p><p><b> Exit Sub</b></p><p><b> Else</b></p><p&g
124、t; clear.Enabled = False</p><p> ReDim xx(0), yy(0), zz(0) As Double</p><p> ReDim xx0(0), yy0(0), zz0(0) As Double</p><p> ReDim xf0(0) As Double, yf0(0) As Double, zf0(0) As D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)控加工課程設(shè)計(jì)說明書
- 數(shù)控加工與編程課程設(shè)計(jì)說明書
- 數(shù)控課程設(shè)計(jì)說明書
- 數(shù)控課程設(shè)計(jì)說明書 .doc
- 數(shù)控編程課程設(shè)計(jì)說明書
- 數(shù)控課程設(shè)計(jì)說明書 .doc
- 數(shù)控課程設(shè)計(jì)說明書 .doc
- 數(shù)控課程設(shè)計(jì)說明書.doc
- 數(shù)控課程設(shè)計(jì)說明書 .doc
- 數(shù)控機(jī)床課程設(shè)計(jì)說明書
- 數(shù)控機(jī)床課程設(shè)計(jì)說明書
- 機(jī)械系統(tǒng)仿真課程設(shè)計(jì)(課程設(shè)計(jì)說明書)
- 鋁型材加工工廠課程設(shè)計(jì)說明書
- 數(shù)控課程設(shè)計(jì)-nc仿真系統(tǒng)編制說明書
- 課程設(shè)計(jì)說明書
- 《生產(chǎn)建模與仿真課程設(shè)計(jì)》-工業(yè)工程課程設(shè)計(jì)說明書
- 課程設(shè)計(jì)說明書
- 數(shù)控課程設(shè)計(jì)(說明書).doc
- 數(shù)控課程設(shè)計(jì)(說明書).doc
- 數(shù)控銑床主軸箱課程設(shè)計(jì)說明書
評(píng)論
0/150
提交評(píng)論