羅新文,李貴榮,楊麗祥,呂朋翔(云南農業大學 機電工程學院,云南 昆明 650201)
基于ActionScript的虛擬數控車床開發
羅新文,李貴榮,楊麗祥,呂朋翔
(云南農業大學 機電工程學院,云南 昆明650201)
虛擬設備軟件技術在工業培訓中應用越來越廣泛。隨著數控機床應用的擴展,在數控機床應用培訓中,虛擬機床軟件的應用也得到了長足發展,出現了功能較完善的商業軟件。但在數控機床應用培訓實踐中,使用者希望對虛擬機床的實現方法有深入的了解,而如何實現機床的工作過程是這類商業軟件的核心技術。因此本文選擇ActionScript3.0腳本語言作為開發工具,對虛擬數控車床的基本功能虛擬實現進行探討,滿足數控車床高級應用培訓中,受訓者希望了解虛擬機床功能實現原理的需要。
虛擬設備;ActionScript;虛擬數控車床;開發
虛擬設備軟件技術就是利用軟件模擬實現工業設備的外部功能和內部功能,為設備的開發和使用提供幫助。不同行業有不同的虛擬設備內部功能的軟件,在此不再贅述。虛擬設備外部功能的軟件主要用于設備應用培訓,如數控機床應用培訓的虛擬軟件,但這類軟件屬于商業化軟件,其實現的功能外部和內部都有,實現的方法和手段均被視為商業機密,不對外公開。在數控機床培訓實踐中,受訓者往往不滿足于對虛擬機床操作的培訓,他們希望了解虛擬機床的實現方法和過程,充分了解數控機床的工作特點,以便在遇到故障和問題時,能打開解決問題的思路。有鑒于此,本文基于Action-Script3.0腳本語言作為開發工具,對虛擬數控車床進行原型開發。通過較詳細的介紹,使受訓者可以自行實踐。基于ActionScript3.0的零件、加工環境建模及數控加工刀路動態仿真[1]已有一些探索,但用ActionScript3.0實現刀具對工件加工模擬的技術仍不成熟,本文提出了一種可行的解決方案。
為了使受訓者能自己動手實現有關功能,虛擬數控車床開發中,制定的幾條選擇開發工具的原則是:
(1)該開發工具適合于實現系統的基本功能。數控車床的工作模擬可簡化為平面動畫問題,因此選擇Flash作為開發工具可以滿足其動作實現的要求。
(2)開發語言要容易入門。ActionScript(簡稱AS)是由Macromedia(現已被Adobe收購)為其Flash產品開發的,最初是一種簡單的腳本語言,現在最新版本ActionScript3.0是一種完全的面向對象的編程語言,功能強大,類庫豐富,語法類似JavaScript,多用于Flash互動性、實用性開發,網頁制作和RIA(因特網應用程序)開發。與使用C++ 和VB語言相比[2,3],該腳本語言入門較容易,而且適于開發模擬數控車床這種互動性強的虛擬系統。
(3)開發工具開發的系統可以獨立運行,對計算機硬件配置要求低。Flash產品的基本目標之一是開發網絡動畫和動態網頁 ,它們的基本要求就是實時傳輸,響應速度快,因此在開發工具設計時,就按體積小、質量高、成本低廉、操作簡便、應用效率高的特點設計[3]。
綜上所述,選擇Flash產品作為開發平臺,配以ActionScript3.0作為編程語言完全能滿足開發虛擬數控車床的需要。

圖1 虛擬數控車床功能組成Fig.1 Function of virtual NC lathe
在完成了開發平臺和編程語言的選擇后,需要分析虛擬數控車床要實現的功能。實現數控車床的全部功能不是本文的目標,因此需要選擇受訓者感興趣但實現起來又不過于復雜的功能。數控車加工工藝系統包括車床、刀具和工件。虛擬仿真中車床由卡盤來體現;刀具可以按平面圖形處理,更換刀具后,刀具形狀不變;工件的大小需要可以選擇,因此需要處理好工件于卡盤之間的關系。工件在切削過程中形狀要發生改變,它的改變隨刀具形狀和運動軌跡而改變,因此處理工件在切削過程中變化的功能就是本虛擬數控車床的關鍵功能。如上所述,可以將本虛擬數控車床的功能用圖1來表示。
根據圖1,卡盤要完成的功能有帶動工件旋轉、卡盤打開和閉合,在卡盤閉合時不能和工件產生碰撞,因此需要進行碰撞檢測。同時在改變工件參數時,也不能超過卡盤的開度,否則會產生碰撞。刀具在碰到卡盤時也需要發出報警;與刀具對應的基本功能是更換刀具、刀具運動軌跡顯示、刀具運動的插補功能、刀具運動速度等。與工件對應的功能是尺寸改變、切削模擬、碰撞檢測等。下面按照卡盤工件系統、工件刀具系統和刀具軌跡控制的順序敘述軟件實現方法。
卡盤旋轉在三維系統中實現較簡單,但在二維系統中,虛擬旋轉效果通常通過參照物來表示。由于該功能在虛擬系統中不是重點實現的功能。系統中通過符號改變來表示。分為正轉、反轉和停止三種符號。另外在虛擬系統中,用圖2中標注的1作為夾緊按鈕,2作為主軸啟動按鈕。卡盤夾持工件是卡盤的重要功能,卡盤夾持時不能碰到工件,但要和工件接觸,由于工件的大小不是固定的,因此卡爪的移動位置是不固定的。另外在卡爪打開的情況下,不能使卡盤和工件旋轉,如圖2(a)不能直接轉換到圖2(c),同樣在卡盤和工件旋轉的情況下,不能打開卡爪,如圖2(c)不同直接轉換到圖2(a)。

圖2 卡盤與工件系統Fig.2 Chuck and workpiece system
在該部分功能實現中,活動部分依靠定義影片剪輯來實現,通過影片剪輯的位置、大小屬性來實現其最終的位置和形狀。交互功能用按鈕來實現,通過按鈕代碼控制卡爪和卡盤的動作。定義變量zhua_enable來識別卡盤是否旋轉,定義zhuzhou_enable來識別卡盤是否夾緊,定義zhua_zht代表卡轉停止轉動,定義zhuzhou_zht表示主軸停止轉動。限于篇幅,本文列舉卡爪的夾緊和松開代碼如下。代碼中按鈕kzhi1_btn見圖2(a)中序號1所示。


刀具的移動一般分兩個階段,一個階段是空行程,刀具不和工件接觸,另一個階段是刀具切削工件的階段,此時要解決刀具與工件之間的關系問題。在本系統中,由于選用Flash作為開發平臺,不能進行兩個圖形元素間的布爾運算,因此必須采用該平臺具有的功能來實現刀具對工件的加工效果。對于兩個刀具移動階段的轉換問題,可以使用碰撞檢測函數hitTest實現。定義刀具影片剪輯為tools_mc,定義工件影片剪輯為part_mc,則刀具與工件碰撞的檢測代碼格式如下:

在Flash開發平臺上要實現刀具切削工件的效果,可以用重疊覆蓋的辦法來實現。具體方法是:首先分別創建影片剪輯 part_mc、tool_mc、toolc_mc分別代表工件、刀具和影子刀具。在當前位置影子刀具和刀具重疊,當刀具移動時,創建新的影子刀具與刀具一起移動,原影子刀具留在原位置覆蓋工件,隨著刀具的移動,不斷留下影子刀具,由于影子刀具與工件重疊,因此得到刀具切削工件的效果。用這種方式實現刀具切削工件,要用到duplicateMovieClip方法,該方法的格式為:

參數為:name:String-已重制的影片剪輯的唯一標識符。
depth:Number-所復制的影片剪輯的唯一深度級別。
initObject:Object[可選]-(Flash Player 6和更高版本支持。)包含用于填充復制影片剪輯的屬性的對象。
本系統中的使用格式為:

用此代碼實現對影子刀具的復制。在實踐中,新的影子刀具影片剪輯創建后會覆蓋刀具影片剪輯,造成看不見刀具的問題。為了解決這一問題,系統開發時采用了swapDepths方法,該方法可以使一個影片剪輯移到另一個影片剪輯的前面或后面,因此該方法可以有效解決看不見刀具的問題。此方法的格式為:public swapDepths(target:Object),其中參數為:target:Object,此參數可以采用兩種格式之一:①一個數字,指定要將影片剪輯放置到的深度級別;②一個字符串,指定一個影片剪輯實例。本系統中的代碼為:

第1行交換新影子刀具影片剪輯與刀具影片剪輯的前后順序,第2行交換新影子刀具與舊影子刀具的前后順序,保持刀具影片剪輯在前、后分別跟舊影子刀具影片剪輯和新影子刀具影片剪輯的順序,有效解決了覆蓋問題。需要注意影片剪輯的深度從-16383開始創建,因此新影子刀具創建數量受到一定限制,但對于本系統而言已經足夠了。刀具切削工件的實際效果見圖3。

圖3 虛擬切削效果圖Fig.3 Effect of virtual cutting
刀具要切出工件離不開刀具軌跡控制,因此刀軌控制的虛擬是實現虛擬數控車床的核心內容。但要完成完整的刀軌控制,需要從CNC程序開始,經過數控加工程序譯碼,插補運算等步驟,實現起來較困難。鑒于本系統的開發目標,本系統主要實現刀具的手動操作、直線和圓弧軌跡控制。
首先介紹刀具的手動控制。手動控制包括回機械零點、各軸正反兩個方向的控制,同時要考慮刀具移動的速度問題。刀具機械回零操作就是刀具從當前位置移動到機床參考點,需注意當刀具切削完工件后退到起刀點再回零,否則會出現刀具與工件的干涉,刀具回機械零點實現較容易,此處不再贅述。手動操作的另一方面是沿坐標軸移動。沿坐標軸移動又分正向移動和負向移動,正向移動只需控制移動的極限位置即可,負向移動則可能切到工件,因此移動時要檢測刀具是否和工件產生重疊,產生重疊就要啟動切削過程。判斷刀具和工件產生重疊可以使用碰撞檢測方法,前已詳細介紹。切削過程的實現前節已詳細說明,此不贅述。速度控制可通過改變刀具每次移動的步長來改變。刀軌控制可通過控制軌跡的可見性屬性實現。
刀具的軌跡控制可使用Line_mc影片剪輯實現。通過影片剪輯的LineTo方法,可以容易地實現刀具的直線軌跡和圓弧軌跡。此種情況相當于只有直線插補的系統,圓弧軌跡通過直線軌跡實現。實現的刀具移動的典型代碼如:

本系統采用定義函數的方法定義G代碼。現以G03逆時針圓弧插補為例加以說明。定義函數:function g03 (xo:Number,yo:Number,zhongx:Number,zhongy:Number)

所在的點,可根據插補步長計算始點和終點間的插補點,然后繪制刀具軌跡的繪制和控制刀具的移動及切削動作。分別定義了G01、G02和G03等幾個函數。在輸入幾行G代碼后,通過逐行匹配的方法選擇需要執行的函數,逐行執行,可得數控程序對應的加工軌跡。如輸入以下程序:
系統執行上述程序后,加工出的工件形狀可參看圖3所示。
為滿足數控機床受訓者希望了解虛擬數控機床的軟件實現方法的要求,本文選擇較容易入門的Flash作為開發平臺,使用ActionScript3.0為編程語言,對數控車床的一些基本功能的實現方法進行了較全面的闡述。其中結合Flash的編程特點,實現刀具對工件的加工模擬方法,可供有類似需要的項目參考。通過實踐,受訓者在三周左右就可按本文所述方法,開發一套虛擬數控車床原型軟件,而且對數控車床的工作特點了解更加深入,解決相關問題的能力有顯著提高。
[1]莊穎,徐曉慧.基于ActionScript的數控加工仿真[J].機電產品開發與創新,2012,2.
[2]熊家偉,黃明吉,賈志新.虛擬數控車床仿真系統的研究與開發[J].機械制造與自動化,2006,3.
[3]楊麗娟.基于VB的數控車削虛擬教學系統開發[J].徐州工程學院學報(自然科學版),2009,2.
[4]郭德偉,柯建宏.基于Flash ActionScript的機構運動簡圖測繪實驗設計與開發[J].計算機與數字工程,2012,2.
The Development of Virtual NC Lathe Based on ActionScript 3.0
LUO Xin-Wen,LI Gui-Rong,YANG Li-Xiang,LV Peng-Xiang
(Department of Mechanical and Electrical Engineering,Yunnan Agriculture University,Kunming Yunnan 650201,China)
Virtual appliance software technology in industrial training more widely.With the expansion of the application of CNC machine tools,CNC machine tool applications in training,virtual machine software application has also been considerable development,the emergence of function better business software.But in practice the training of CNC machine tool applications,a user wants to have a better understanding of the virtual machine implementations,and how to work the machine process is the core technology of this type of commercial software.Therefore,this paper choose ActionScript3.0 scripting language as a development tool for the basic functions of the virtual CNC lathe explore virtual realization,CNC lathes and advanced applications to meet the training,trainees want to know the virtual machine functions to achieve the principle of need.
virtual devices;ActionScript;virtual NC Lathe;software development
TP319
Adoi:10.3969/j.issn.1002-6673.2015.05.047
1002-6673(2015)05-127-04
2015-06-06
項目來源:云南省教改項目(云教高〔2012〕95號)
羅新文(1963-),男,云南新平人,實驗師。主要從事機械設計制造及其自動化研究;通信作者:李貴榮(1971-),男,云南嵩明人,講師。主要從事機械設計制造數字化和自動化工程研究。