數(shù)控加工仿真課程設計說明書_第1頁
已閱讀1頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  數(shù)控仿真技術課程設計</p><p><b>  摘 要</b></p><p>  從工程的角度來看,仿真就是通過對系統(tǒng)模型的實驗去研究一個已有的或設計中的系統(tǒng),分析復雜的動態(tài)對象,仿真是一種有效的方法,可以減少風險,縮短設計和制造的周期并節(jié)約投資。計算機仿真就是借助計算機,利用系統(tǒng)模型對實際系統(tǒng)進行實驗研究的過程。它隨著計算機技術的發(fā)展而迅

2、速地發(fā)展,在仿真中它有越來越重要的地位。</p><p>  計算機仿真技術的發(fā)展趨勢主要表現(xiàn)在兩個方面:應用領域的擴大和仿真計算機的智能化。計算機仿真技術不僅在傳統(tǒng)的工程技術領域(航空、航天、化工等方面)繼續(xù)發(fā)展,而且擴大到社會經(jīng)濟、生物等許多非工程領域,此外,并行處理、人工智能、知識庫和專家系統(tǒng)等技術的發(fā)展正影響著仿真計算機的發(fā)展。</p><p>  數(shù)控加工仿真利用計算機來模擬實際

3、的加工過程,是驗證數(shù)控加工程序的可靠性和預測切削過程的有力工具,以減少工件的試切,提高生產(chǎn)效率。</p><p>  仿真軟件界面友好,基本實現(xiàn)了設計任務的要求,通過本軟件可以知道在仿真加工刀具的坐標、各軸的工作情況以及輔助電機(冷卻液的控制情況)</p><p>  本仿真程序應用的是脈沖插補算法。在仿真過程中應用了兩種插補方法:直線插補,圓弧插補(包括順時方向插補和逆時方向插補)。&l

4、t;/p><p>  本仿真程序可以實現(xiàn)如下指令的判別和執(zhí)行:G01,G02, G03, G04,G05,M05,M08 ,M09,M03,M30.</p><p>  在應用時,編程者只要按照本應用程序的要求輸入程序,即可以實現(xiàn)所要求的加工過程的仿真過程。本程序能夠判斷所輸入的程序的正確性,可以對程序進行編輯。</p><p>  本軟件可以從平面和軸測兩個視圖同時觀

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>  設計任務書……………………………………………4</p><p>  數(shù)控仿真技術發(fā)展狀況

10、………………………………5</p><p>  功能簡介………………………………………………7</p><p>  NC代碼的讀取…………………………………………9</p><p>  插補過程………………………………………………10</p><p>  設計小結(jié)………………………………………………13</p><p>

11、;  參考書目………………………………………………13</p><p>  數(shù)控代碼………………………………………………14</p><p>  第一章 設計任務書</p><p><b>  1.設計題目:</b></p><p>  對于給定的一段NC代碼,用VB或其他高級語言編寫程序解釋、插補,在PC機上仿真數(shù)控

12、裝置,進行圖形描繪、坐標值顯示、步進電機控制模擬顯示及信號輸出、冷卻液和主軸開關量控制模擬顯示及信號輸出。 </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)的計算機仿真</p><p>  對于給定的一段NC代碼,用VB或其他高級語言編寫程序解釋、插補,在PC機上仿真數(shù)控裝置,進行圖形描繪、坐標值顯示、步進電機控制模擬顯示及信號輸出、冷卻液和主軸開關量控制模擬顯示及信號輸出。具體要求如下:</p><p>  (1) NC代碼中包含的代碼類型有:</p><p> 

14、 G90 G54 G00 G01 G02 G03 M03 M05 M08 M09 M30</p><p>  圖1 工件平面 </p><p>  例:下面給出一個具體的圖形示意圖,NC代碼及其加工軌跡圖: </p><p>  (2)、要求根據(jù)NC代碼屏幕模擬加工過程,圖形顯示位置,坐標值顯示,輔助功能狀態(tài)顯示(冷卻液和主軸開關量控

15、制模擬顯示)。</p><p>  (3)、PC機模擬加工過程中,要求有實時的驅(qū)動三軸步進電機的控制信號、控制冷卻液和主軸轉(zhuǎn)動的開關量輸出控制信號。假設信號從計算機并行打印口的數(shù)據(jù)信號線輸出,端口地址為0x378。并行口數(shù)據(jù)線分配如下(低電平有效):</p><p><b>  圖2 加工仿真示圖</b></p><p>  第二章 數(shù)控仿真技

16、術發(fā)展狀況</p><p> ?。?) 計算機仿真的概念及應用</p><p>  為了解決數(shù)控加工中的程序編制問題,50年代,MIT設計了一種專門用于機械零件數(shù)控加工程序編制的語言,稱為APT(Automatically Programmed Tool)。其后,APT幾經(jīng)發(fā)展,形成了諸如APTII、APTIII(立體切削用)、APT(算法改進,增加多坐標曲面加工編程功能)、AP

17、TAC(Advanced contouring)(增加切削數(shù)據(jù)庫管理系統(tǒng))和APT/SS(Sculp tured Surface)(增加雕塑曲面加工編程功能)等先進版。 采用APT語言編制數(shù)控程序具有程序簡煉,走刀控制靈活等優(yōu)點,使數(shù)控加工編程從面向機床指令的“匯編語言”級,上升到面向幾何元素.APT仍有許多不便之處:采用語言定義零件幾何形狀,難以描述復雜的幾何形狀,缺乏幾何直觀性;缺少對零件形狀、刀具運動軌跡的直觀圖形顯示和刀

18、具軌跡的驗證手段;難以和CAD數(shù)據(jù)庫和CAPP系統(tǒng)有效連接;不容易作到高度的自動化,集成化。 針對APT語言的缺點,1978年,法國達索飛機公司開始開發(fā)集三維設計、分析、NC加工一體化的系統(tǒng),稱為為CATIA。隨后很快出現(xiàn)了象EUCLID,UGII,IN</p><p> ?。?)數(shù)控仿真技術的研究現(xiàn)狀</p><p>  數(shù)控機床加工零件是靠數(shù)控指令程序控制完成的。為確保數(shù)控程序

19、的正確性,防止加工過程中干涉和碰撞的發(fā)生,在實際生產(chǎn)中,常采用試切的方法進行檢驗。但這種方法費工費料,代價昂貴,使生產(chǎn)成本上升,增加了產(chǎn)品加工時間和生產(chǎn)周期。后來又采用軌跡顯示法,即以劃針或筆代替刀具,以著色板或紙代替工件來仿真刀具運動軌跡的二維圖形(也可以顯示二維半的加工軌跡),有相當大的局限性。對于工件的三維和多維加工,也有用易切削的材料代替工件(如,石蠟、木料、改性樹脂和塑料等)來檢驗加工的切削軌跡。但是,試切要占用數(shù)控機床和加工

20、現(xiàn)場。為此,人們一直在研究能逐步代替試切的計算機仿真方法,并在試切環(huán)境的模型化、仿真計算和圖形顯示等方面取得了重要的進展,目前正向提高模型的精確度、仿真計算實時化和改善圖形顯示的真實感等方向發(fā)展。</p><p> ?。?)虛擬制造目前的發(fā)展狀況 虛擬制造從提出到現(xiàn)在已歷經(jīng)了20多年,技術上得到了很大的發(fā)展,應用方面也得到了廣泛的擴展。在國外,有很多學校、研究所、科研單位、大型企業(yè)等都在不斷的研究和

21、應用虛擬制造技術。近年來,虛擬現(xiàn)實技術已較多地應用到汽車開發(fā)工作中,已初步形成一種集專業(yè)理論、工程設計、科學試驗等為一身的較為完整的應用體系。例如,1995年美國標準與技術研究所的報告“國家先進制造實驗臺的概念設計計劃”,強調(diào)了分散的、多節(jié)點的分散虛擬制造(DVM),即虛擬企業(yè)的概念;而美國國家研究委員會的報告“制造中的信息技術”,則探討了產(chǎn)品集成、過程設計、車間控制、虛擬工廠等的信息技術問題。福特汽車公司也已經(jīng)計劃應用虛擬環(huán)境技術來設

22、計和開發(fā)汽車,該公司的先進車輛技術組把虛擬制造技術應用于裝配仿真和虛擬成形,以提高空氣動力學、人機工程學和表面建模的效果。</p><p>  第三章 功能簡介</p><p><b>  圖(1)</b></p><p><b>  1.1、主界面簡介</b></p><p>  如圖(1)

23、所示,程序主界面由如下幾個部分組成:工具欄、NC代碼輸入框、坐標值實時狀態(tài)框、工作狀態(tài)框、NC模擬框。其中,工具欄菜單依次為:文件、編輯、視圖、運行,工作狀態(tài)框顯示了冷卻液的開關狀態(tài)、主軸的轉(zhuǎn)速及轉(zhuǎn)向、步進電機X電機、Y電機的轉(zhuǎn)向。NC代碼在NC代碼輸入框輸入,根據(jù)NC代碼在NC模擬框進行模擬加工。</p><p>  1.2、參數(shù)設置定界面:</p><p><b>  圖(2

24、)</b></p><p>  如圖(2)所示,在此界面,根據(jù)需要可以選擇脈沖當量(單位為毫米mm)以及圖形的放大倍數(shù),以便顯示,插補形式由于時間關系。通過寫入工件坐標的原點。便可隨時改變坐標的原點。</p><p>  1.3、NC代碼格式</p><p>  在NC代碼輸入框輸入代碼,開頭必須要有程序開始符“%”、結(jié)尾同樣以結(jié)束符“%”結(jié)束,程序不能

25、輸入行符,因為本程序還不能辨別。指令符(G、M)可以是大寫也可以是小寫,指令間允許有空格。輸入圓心時只能用IJ指令,R指令不能識別——這是該程序的不足之處,還有待提高。</p><p>  1.4、程序基本操作</p><p>  首先,在NC代碼輸入框輸入NC代碼或打開已有的代碼,接著按工具欄上的運行——“調(diào)試”,程序經(jīng)過調(diào)試后,如果程序有錯,會自動報錯,報錯時光標將會定位在有錯的代碼附

26、近,可以方便用戶修改,直到無誤為至,此時程序會告訴用戶——調(diào)試成功,緊接著按——“模擬”,在NC模擬框便會出現(xiàn)用戶希望的圖形。繪圖的過程中用戶可以按——“暫?!辨I——暫停繪圖、再按時便繼續(xù)繪制,按——“結(jié)束”整個程序?qū)⑼V?。與此同時,坐標值實時顯示框?qū)崟r顯示動點的坐標,工作狀態(tài)框也反映工作狀況。在快捷工具欄功能按鈕一樣可以實現(xiàn)如上功能。整個加工過程比較直觀,一目了然。本程序優(yōu)秀之處在于——當程序未調(diào)試之前“模擬”鍵成淡色,不能使用,以防

27、出錯,而當模擬時“調(diào)試”鍵成淡色,程序不會亂套。</p><p>  第四章 NC代碼的讀取</p><p><b>  第五章 插補過程</b></p><p><b>  3.1插補算法說明</b></p><p>  本軟件應用脈沖增量插補方法,這類插補方法的特點是:</p>

28、<p>  每次插補的結(jié)果僅產(chǎn)生一個單位的行程增量(一個脈沖當量),以一個脈沖的方式輸出給步進電機。其基本思想是:用折線來逼近曲線(包括直線)。</p><p>  插補速度與進給速度密切相關。</p><p>  脈沖增量插補的實現(xiàn)方法較簡單。</p><p>  脈沖增量插補的方法有逐點比較法、數(shù)字積分法,本軟件用逐點比較法。逐點比較法的原理是:在仿

29、真過程中,能逐點地計算和判別運動軌跡與給定軌跡的偏差,并根據(jù)偏差控制進給軸向給定輪廓靠近,縮小偏差,使加工輪廓逼近給定輪廓。逐點比較法是以折線來逼近直線和圓弧曲線的,它與規(guī)定的直線或圓弧之間的最大誤差不超過一個脈沖當量,因此,只要將脈沖當量取得足夠小,就可達到加工精度的要求。</p><p>  3.2直線插補原理:</p><p>  3.2.1直線插補流程圖</p>&l

30、t;p><b> ?。?lt;/b></p><p>  3.2.2偏差計算公式</p><p>  假設加工如圖 所示直線OA,取直線起點為坐標原點,直線終點坐標A(Xe,Ye)為已知,即直線OA為給定軌跡。M(Xm,Ym)點為加工點(動點)。若M點在直線OA上,則根據(jù)相似三角形的關系可得:</p><p>  Xm/Ym=Xe/Ye<

31、/p><p>  即 Ym Xe—YeXm=0</p><p>  由此,可定義直線插補的偏差判別式如下:</p><p>  Fm=XeYm-YeXm</p><p>  若 Fm=0 表示動點在OA直線上</p><p>  若 Fm>0 表示動點在OA直線上方</p><p&

32、gt;  若 Fm<0 表示動點在OA直線下方</p><p>  當 時M點在直線上或在直線上方</p><p>  ,應沿+X方向進給一步,走步后新的坐標值為</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方向進給一步,走步后新的坐標值為</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終點判斷的方法

34、</p><p>  設置變量CountN減法計數(shù)器,在</p><p>  加工之前存入終點坐標值Xe 、Ye,</p><p>  X或Y坐標每進給一步時,就</p><p>  在計數(shù)器中、減去1,直到為零,</p><p>  停止插補,到達終點。</p><p>  3.2.4其它象限

35、的直線插補計算</p><p>  其它象限其實與第一象限或關于原心</p><p>  對稱或關于X軸對稱,所以,只要作符合上的</p><p>  變化,程序?qū)崿F(xiàn)非常方便。</p><p><b>  圓弧插補流程圖</b></p><p><b> ?。?lt;/b><

36、/p><p>  3.2.1偏差計算公式</p><p>  以第一象限逆圓為例介紹插補公式</p><p>  如圖7所示,要加工圓弧AB,設圓弧的圓心在原點,并已知圓弧的起點A(Xo,Yo),終點B(Xe,Ye),圓弧半徑為R。加工動點M(Xm,Ym),</p><p>  它到圓心的距離為Rm。則有三種情況:</p><

37、p><b>  當動點M在圓上有:</b></p><p><b>  當動點M在圓內(nèi)有:</b></p><p><b>  當動點M在圓外有:</b></p><p>  因此,可定義圓弧偏差判別公式如下:</p><p>  若,應沿-X軸方向進給一步,到M+1點,

38、</p><p><b>  其坐標值為: </b></p><p>  則新加工點的偏差為:</p><p>  若,沿+Y軸方向進一步,到M+1點,其坐標值為</p><p>  則新加工點的偏差為:</p><p>  3.2.2終點判斷的方法</p><p>  在

39、繪圖的過程中,不斷地比較動點與終點的距離,當其距離小于脈沖當量時,在誤差允許的范圍達到終點。</p><p>  3.2.3其它象限的圓弧插補計算</p><p>  如圖8所示,其它象限的圓弧或關于X軸對稱、或關于X軸對稱、或關于原心對稱,完全可以按第一象限逆圓偏差公式進行計算,所不同的是將進給方向改變。</p><p><b>  第六章 設計小結(jié)&

40、lt;/b></p><p>  數(shù)控課程設計是機電專業(yè)的一個重要的實踐性環(huán)節(jié),是對所學《數(shù)控技術》課程和其它有關課程知識和技能的一次綜合性練習,旨在使我們的知識得以鞏固、充實、系統(tǒng)化,并進一步擴展。課程設計是培養(yǎng)我們理論聯(lián)系實際、解決生產(chǎn)實際問題的良好機會。通過對數(shù)控銑床典型部件的設計和零件編程的具體問題的解決,不僅使我們對CAD/CAM仿真軟件有了更深刻的了解,還是我們編程能力有了很大的提高。</

41、p><p>  通過這次的設計,使我們更加明白知識的聯(lián)貫性、融合性、全面性以及交錯性的重要所在,這也是設計目的所在。我們應該持有自我增值、自我發(fā)展的人生觀。要領悟“學海無邊苦作舟”的真諦。力爭上游。</p><p><b>  第七章 參考書目</b></p><p>  [1] 廖效果等主編.《數(shù)控技術》[M]湖北科學技術版社-2000.5&l

42、t;/p><p>  [2]《數(shù)控原理》機械工業(yè)出版社1997.3</p><p>  [3] 龔沛曾等.《Visual Basic 程序設計教程》[M].高等教育出版社-1998</p><p>  [4]《Visual Basic6.0》清華大學出版社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起點坐標</p><p>  Dim x1 As Double, y1 As Double, z1 As Double 'X,Y,Z終點坐標</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 '移動,控制指令</p><p>  Dim cbstype As Integer '移動指令類型</p><

45、;p>  Dim xpoint As Double, ypoint As Double '軸測圖坐標</p><p>  Dim xpp As Double, ypp As Double, zpp As Double '平面圖坐標</p><p>  Dim centi As Double, centj As Double '圓心相對起點坐

46、標</p><p>  Public getx As Double, gety As Double, getz As Double 'get參數(shù)設置</p><p>  Public bei As Integer '圖形放大倍數(shù)</p><p>  Dim str As String '讀入NC代碼</p><

47、p>  Dim prgline As Integer '運行行數(shù)</p><p>  Dim readnum As Integer</p><p>  Dim mm As Double '積分插補累加數(shù)</p><p>  Dim fm As Double '比較插補FM</p><p>  D

48、im dl As Double '脈沖當量</p><p>  Dim Stepdl As Integer</p><p>  Dim xm As Double, ym As Double, zm As Double '動點X,Y,Z</p><p>  Dim mx As Double, my As Double, mz As Inte

49、ger '積分插補數(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>  '畫坐標</b></p><p>

53、  Sub drawxyz()</p><p>  linez.Cls '畫軸測圖坐標</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 '畫平面圖坐標</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></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>  '平面圖坐標</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 '軸測變換</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 '工件坐標</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></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表示負方向</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 '軸測變換</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 '工件坐標</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></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為負方向</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 '軸測變換</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 '工件坐標</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>  '讀入設置</b></p><p>  fileframe.Caption = "代碼"</p><p>  getx = getform.getxt.Text '讀入get

111、參數(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>  '保存設置</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>  '運行</b></p><p>  Private Sub mnurunrun_Click()</p><p>  If pausecon = 1

122、 Then '當暫停時為繼續(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 "請加載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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論