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