1 系統(tǒng)總體結(jié)構(gòu)設(shè)計本文所研制仿真系統(tǒng)總體結(jié)構(gòu)如圖 1所示,系統(tǒng)主要由程序代碼編輯、加工過程和動畫仿真兩大模塊組成. 代碼檢查器檢查錯誤,并通過編譯得出可執(zhí)行數(shù)據(jù),從而得到刀具軌跡,以此來驅(qū)動加工過程. 動畫仿真模塊由人機(jī)交互得到的加工條件等信息,并生成和顯示虛擬加工環(huán)境. 動畫仿真是整個系統(tǒng)的核心模塊.2 精工仿真系統(tǒng)具體實現(xiàn)2. 1 精工代碼編輯模塊精工代碼編輯模塊提供一個文本編輯器,可以用來創(chuàng)建和打開精工代碼文件,其精工代碼文件沒有設(shè)立專門的擴(kuò)展名,而是用文本文件的擴(kuò)展名,這樣可以在別處編輯,而后在此打開. 編輯器內(nèi)提供一些簡單的文本編輯功能,如復(fù)制、粘貼、剪切、撤銷等. 此外編輯器也具有提示功能,當(dāng)代碼被更改和尚未存儲時,再打開或新建另一個代碼文件時,自動提示用戶保存文檔,文本編輯器內(nèi)還有快捷菜單,方便了操作. 編輯器對精工代碼的長度可以說是沒有限制的. 應(yīng)用程序界面如圖 2所示.2. 2 程序代碼檢查編譯模塊精工加工具有加工內(nèi)容具體和嚴(yán)密的特點,所以在編制精工程序時需要分析考慮的內(nèi)容較多,例如精工系統(tǒng)的基本功能,精工程序的結(jié)構(gòu),精工指令的作用、應(yīng)用格式,零件圖紙的技術(shù)特性,幾何形狀、尺寸及工藝要求等.2. 2. 1 語法檢查語法檢查主要是檢查一些不符合要求的非法字符及參數(shù)指定錯誤或者拼寫錯誤. 對于系統(tǒng)不能識別的指令同樣給出提示.2. 2. 2 精工代碼的轉(zhuǎn)換精工代碼在編輯好后存盤, 并通過了錯誤檢查,此時計算機(jī)并不能識別,需要將其轉(zhuǎn)化為相應(yīng)的內(nèi)容以供程序來識別[ 3 ]. 對于發(fā)現(xiàn)的錯誤給出相應(yīng)的提示,包括: 錯誤的詳細(xì)信息、錯誤所在編輯其中的位置. 用鼠標(biāo)雙擊改錯誤信息,可到達(dá)相應(yīng)的行. 具體實現(xiàn)采用的方法是: 建立一組結(jié)構(gòu)體來記錄精工指令的相關(guān)信息,按照精工指令的格式,把此序列按程序段和程序的格式來存儲. 即一個程序是由幾個程序段序列組成,程序段則是由精工指令序列組成.結(jié)構(gòu)體如下:2. 3 動畫仿真模塊2. 3. 1 O p e n G L簡介科學(xué)可視化、計算機(jī)動畫和虛擬現(xiàn)實是近年來的熱門話題,而這些熱門話題中的核心技術(shù)都是三維真實感圖形顯示. 當(dāng)前三維圖形顯示在各個領(lǐng)域內(nèi)都有廣泛的應(yīng)用. O p e n G L是目前比較完善的三維圖形標(biāo)準(zhǔn),它是S G I 公司推出的. O p e n G L被嚴(yán)格定義為“一種到圖形硬件的軟件接口”. 從本質(zhì)上說,它是一個完全可移植并且速度很快的 3 D圖形和建模庫. O p e n G L不是像C或C++ 那樣的編程語言,它更像一種運行時庫,提供一些預(yù)封裝的函數(shù).2. 3. 2 軸的模型的建立在進(jìn)行三維動畫顯示之前,我們必須對軸的模型加以確定,因為車削時需要改變軸的尺寸,因此必須用一種方法來記錄軸上面的尺寸. 用下面的結(jié)構(gòu)體來表達(dá)軸上的尺寸信息:程序?qū)崿F(xiàn)刀具切削軸的過程如下: 從轉(zhuǎn)換后的精工指令里讀出數(shù)據(jù),進(jìn)行插補(bǔ),將插補(bǔ)后的點存入一個數(shù)組中來控制刀具移動路線. 同時根據(jù)刀具在其預(yù)定軌跡的某一個位置來確定軸被刀具切削掉的部分,進(jìn)而改變軸上面的片的坐標(biāo),這樣軸的尺寸就被改變了.2. 4 仿真顯示模塊加工仿真就是利用計算機(jī)圖形技術(shù),讓計算機(jī)模擬真實的加工過程,通過動畫的形式形象、直觀地模擬精工加工的切削過程. 零件仿真畫面在屏幕切分窗口的顯示區(qū)域顯示. 用戶可以調(diào)節(jié)切分窗口大小,旋轉(zhuǎn)圖像觀看加工工件. 通過仿真結(jié)果的可視化顯示,可以發(fā)現(xiàn)錯誤,修改工藝文件,優(yōu)化加工方案. 根據(jù)計算機(jī)動畫原理,每秒顯示 25幅以上的切削加工場景,整個加工過程的演示就是連續(xù)的.用O p e n G L的雙緩存( D o u b l e B u f f e r i n g ) 技術(shù)可以方便地實現(xiàn)刀具相對運動過程的動畫仿真. 雙緩存提供兩個顏色緩存,在一個緩存中顯示幀時,在另一個緩存中繪制幀. 在繪圖時,精工加工仿真系統(tǒng)根據(jù)插補(bǔ)計算得到的刀位軌跡值,在屏幕上實時地顯示刀具的變化情況. 對于每一個計算出的插值點,刀具就進(jìn)給一步,系統(tǒng)即刷新一次,此時在后臺緩存進(jìn)行建模及對模型進(jìn)行變換,在前臺緩存顯示由后臺緩存已計算好的畫面,如此反復(fù),最終動態(tài)顯示切削加工過程. 另外還利用 O p e n G L的顯示列表技術(shù)和局部刷新技術(shù)防止場景的顫動,增強(qiáng)切削場景的顯示效果.分析精工車床加工的特點: 精工車床的毛坯通常為棒料,為回轉(zhuǎn)體零件,而且刀具做的只是X方向和Z方向上的二維運動. 因此在本系統(tǒng)的仿真算法中,首先將毛坯進(jìn)行細(xì)分為單位厚度的小圓柱單元,小圓柱單元的厚度根據(jù)仿真所需的精度和顯示效果來決定[ 4]小圓柱單元的具體的數(shù)據(jù)結(jié)構(gòu)為:讀入經(jīng)過程序處理模塊得到的仿真驅(qū)動信息,即刀具運動信息,得到車刀刀尖處的位置( X t ,Z t) ,根據(jù)Z t確定刀具經(jīng)過的小圓柱單元在工件數(shù)組中的位置,也就是確定哪個單元體被切削. 然后比較該單元體的直徑和刀尖點的X t坐標(biāo),確定該單元體是否被切削.具體的實現(xiàn)命令如:對工件數(shù)組進(jìn)行遍歷,根據(jù)工件數(shù)組中數(shù)據(jù)繪制相應(yīng)的單元體,也就顯示了加工后的工件.2. 5 動畫的實現(xiàn)三維動畫仿真中,本系統(tǒng)采用O p e n G L雙緩沖區(qū)實現(xiàn)動畫仿真. 使用雙緩沖實現(xiàn)動畫仿真可以避免程序在運行時產(chǎn)生閃爍,從而使動畫看上去更加連續(xù). 動畫時增加了光照,看上去更具真實感. 雙緩存動畫技術(shù)就是多頁面切換技術(shù),這種技術(shù)稱為“頁面共振”技術(shù). 對于某些圖形系統(tǒng),顯示模式允許有一個以上的顯示頁面,其中一頁被定義成主顯示頁面,其余頁面作為圖形顯示的緩存頁. 在主顯示頁顯示的同時,下一幅圖形可放置在工作頁面上,然后再把工作頁切換成主顯示頁,如此反復(fù)進(jìn)行,每次用新圖形代替舊圖形,從而形成動態(tài)變化過程.圖形顯示模塊主要負(fù)責(zé)刀具、夾具和主軸的繪制工作,而數(shù)據(jù)處理則是負(fù)責(zé)插補(bǔ)運算和刀具切削軸的計算,實現(xiàn)了數(shù)據(jù)和顯示分離,具有較好的模塊性. 仿真效果如圖 3所示.2. 6 切削仿真過程實現(xiàn)為了得到連續(xù)、動態(tài)的切削效果,屏幕畫面必須不斷刷新. 由于是可旋轉(zhuǎn)的三維圖像,每次刷新時僅將切削處重畫是不行的,必須將整根軸重畫.但如果將整根軸完全重畫,計算量大、耗時長、效率低,為此,利用了顯示表對切削過程的模擬進(jìn)行優(yōu)化. 在上面提到的軸節(jié)點中,有一G l u n i t 類型屬性量i n d e x ,即是該節(jié)點的顯示表. 這樣,該節(jié)軸在沒有變化之前,程序里實際上只畫了一次,即將繪圖命令執(zhí)行結(jié)果存儲在緩存中,以后每次顯示時只需執(zhí)行g l C a l l L i s t ( i n d e x ) 即可. 由于采用了面向?qū)ο蟮牧斜斫Y(jié)構(gòu),整根軸的顯示可以轉(zhuǎn)化為列表的遍歷,依次調(diào)用每個節(jié)點的顯示表,迅速完成圖形顯示. 而且,復(fù)雜的切削過程也轉(zhuǎn)化為對列表和各個節(jié)點的操作,如在某段柱體上切削圓弧只需在柱節(jié)點前插入一圓弧節(jié)點,同時將原柱體分為 2段, 1個節(jié)點分為 2個,前面的節(jié)點代表圓弧未曾涉及的部分,長度由 B3到E3( 如圖 4所示) .該節(jié)軸只需繪制一次,將繪制結(jié)果存入該節(jié)點的顯示列表即可,后面的節(jié)點涉及被圓弧覆蓋的部分,長度由B2到E2. 隨著切削的進(jìn)行,每次屏幕刷新前只需將被覆蓋柱與圓弧進(jìn)行重畫,生成該節(jié)點新的顯示表,軸的其他各節(jié)顯示表不變. 隨著圓弧不斷變長,即圓弧節(jié)點屬性E n d( E) 值變大,被覆蓋柱節(jié)點不斷變短,即其屬性 B e g i n( B2) 值變大,直至柱節(jié)點的 B e g i n( B2) 等于A i m E n d ,刪除該柱節(jié)點,圓弧即加工完畢.采用面向?qū)ο蟮姆椒?使抽象、復(fù)雜的切削過程具體化、簡單化、對象化,將切削動作轉(zhuǎn)化為對 2個或數(shù)個相關(guān)節(jié)點的操作,不僅提高了編程效率,增強(qiáng)了系統(tǒng)的可維護(hù)性,而且大大提高了系統(tǒng)的可靠性.3 結(jié)語O p e n G L技術(shù)以其強(qiáng)大的性能為三維仿真系統(tǒng)開發(fā)提供了有力的工具. 面向?qū)ο蟮脑O(shè)計方法更側(cè)重于用計算機(jī)語言對現(xiàn)實世界進(jìn)行抽象歸納、描述,而不是對過程、數(shù)據(jù)的處理,因而使得整個設(shè)計過程更加簡潔、可靠. 基于上述思想,我們開發(fā)出三維精工機(jī)床仿真系統(tǒng),該系統(tǒng)以某型精工車床為藍(lán)本,可三維、動態(tài)仿真其所有常用指令,且集顯示窗口、操作面板、信息提示和指令輸入于一體,具有良好的界面和極佳的仿真效果,該系統(tǒng)在Wi n d o w s 98環(huán)境下用V i s u a l C++6. 0實現(xiàn).經(jīng)驗證,該系統(tǒng)具有良好的界面和交互性; 較好地實現(xiàn)了精工程序進(jìn)行正確性檢查; 可以同步顯示加工代碼和工件切削狀態(tài),以驗證加工代碼編寫的正確性; 可以判斷諸如刀具與夾具干涉等錯誤;在顯示過程中還可以旋轉(zhuǎn)、放大、縮小對象,使操作者可以從任何角度清楚地觀察刀具切削的過程.本文由海天精工文章整理發(fā)表,文章來自網(wǎng)絡(luò)僅參考學(xué)習(xí),本站不承擔(dān)任何法律責(zé)任。http://m.himslangfull.com/