潘建峰,方映,吳勝旗,張素穎
(杭州職業(yè)技術(shù)學(xué)院,浙江杭州310018)
基于運動控制的開放式數(shù)控系統(tǒng)在3個層面體現(xiàn)了開放性。在硬件層面,系統(tǒng)硬件的接口采用統(tǒng)一標準,各模塊可以根據(jù)實際生產(chǎn)需求組配伺服驅(qū)動器、伺服電機、主軸單元;在操作系統(tǒng)層面,系統(tǒng)的構(gòu)建都基于標準的操作系統(tǒng)及其提供的API 標準接口函數(shù)。當硬件模塊改變后只需更新相應(yīng)驅(qū)動就可以在操作系統(tǒng)上運行;最后是數(shù)控功能軟件層面上,用戶可以在上位機上使用高級語言編制所需的人機交互、系統(tǒng)管理等非實時性功能模塊,在下位機利用其自帶語言編寫速度預(yù)處理、插補計算等強實時性模塊。在開放式數(shù)控雕刻機系統(tǒng)上,3個層面的內(nèi)容無論如何變化,其信息流都是從雕刻圖像到最后執(zhí)行伺服加工的。而信息流的預(yù)處理對于數(shù)控系統(tǒng)的運行速度、加工精度等關(guān)鍵指標有著決定性影響。文中以基于GE-400-SV 運動控制器的開放式雕刻機數(shù)控系統(tǒng)為對象,研究了數(shù)控加工代碼信息流預(yù)處理技術(shù)。
基于GE-400-SV 運動控制器的開放式數(shù)控雕刻機系統(tǒng),以工控機為上位機,以運動控制器為下位機,通過PCI總線完成數(shù)據(jù)通訊。數(shù)控系統(tǒng)的任務(wù)就是對數(shù)控加工程序進行處理,以便使其轉(zhuǎn)化為伺服執(zhí)行機構(gòu)可以識別的相應(yīng)控制指令。在該系統(tǒng)中,利用工控機海量計算能力來完成零件程序生成、代碼識別、功能碼譯碼、半徑補償?shù)确菑妼崟r性功能。利用運動控制器實時控制能力來完成速度預(yù)處理、插補計算、反饋控制等強實時性任務(wù)。零件加工程序信息在數(shù)控系統(tǒng)中處理過程見圖1。
圖1 數(shù)控程序信息流預(yù)處理模塊流程圖
數(shù)控雕刻機加工對象往往是具有物體特征的二維或三維數(shù)字圖像,上位機預(yù)處理模塊主要任務(wù)是將雕刻圖紙中的數(shù)控加工程序要素提取出來,形成程序?qū)嶓w段。將加工程序段按約定規(guī)則編譯成計算機能識別的數(shù)據(jù)形式,并按內(nèi)碼格式存放在譯碼結(jié)果緩沖器中。上位機從零件程序輸入緩沖器內(nèi)將加工信息以字符的形式逐個讀入,識別出其中的文字碼,編譯出文字碼所代表的功能,映射到相應(yīng)譯碼結(jié)果緩沖器中。然后識別數(shù)字碼,將其送到相應(yīng)文字碼的緩沖器單元中。因此,上位機預(yù)處理模塊處理過程可以分為雕刻圖形加工程序提取、代碼識別和功能代碼的譯碼三大部分。
數(shù)控雕刻圖像一般都比較復(fù)雜,基本都是通過AutoCAD或Pro/E 等雕刻造型軟件生成的。在該模塊中,原始NC程序提取分為二維和三維兩個部分。
(1)二維圖形往往以AutoCAD 格式存在。Auto-CAD 提供一種數(shù)據(jù)交換文件DXF,它包含了對應(yīng)的DWG文件所有信息,是一種ASCII 文本格式文件,可讀性強,易于被其他程序處理,其實體段記錄了圖形中所有幾何實體的幾何信息。在上位機上,用Visual C++語言面向AutoCAD 進行DXF文件中實體段的讀取,這些信息被提取出來后進行路徑設(shè)置就形成了加工原始代碼,其流程如圖2所示。
圖2 二維雕刻圖像原始NC程序提取流程圖
(2)三維零件的加工由于數(shù)據(jù)量大,加工路徑復(fù)雜,可以充分利用上位機強大的運算能力進行三維造型和路徑生成,在操作平臺上配裝三維軟件專用后處理模塊即可生成加工原始代碼。
代碼識別就是通過軟件將取出的字符與NC代碼字相比較,若相等則說明輸入了該字符,并設(shè)置相應(yīng)標志或轉(zhuǎn)相應(yīng)處理。所以首先要在上位機上建立一個NC代碼字庫。數(shù)控加工程序由多個程序段組成,程序段由一組程序字組成,而程序字則由地址符和數(shù)字符號組成。地址符和數(shù)字符號在計算機內(nèi)一般是以ISO代碼存儲,但是ISO代碼的排列規(guī)律不明顯,不利于后面的譯碼處理。所以在設(shè)計時,先將ISO代碼轉(zhuǎn)換成具有一定規(guī)律的數(shù)控內(nèi)部代碼,形成一個內(nèi)碼集。這樣識別代碼時,首先將代碼轉(zhuǎn)化為內(nèi)碼,然后再到內(nèi)碼集中比較識別。在設(shè)計內(nèi)碼集時,先根據(jù)平時的經(jīng)驗將字符出現(xiàn)頻率大致排個序,在比較時可按出現(xiàn)頻率高低的順序進行。同時將文字碼與數(shù)字碼分開處理,這樣可以利用數(shù)字碼內(nèi)碼在數(shù)值上等于該數(shù)字的BCD 碼值的這個特性來提高識別速度。另外,在雕刻機系統(tǒng)中,都是采用CAD/CAM 后處理技術(shù)來形成數(shù)控加工程序的,其基本插補指令都是通過直線插補G01 來完成。所以在保留G01指令和手工編程下的圓弧插補G02、G03 基礎(chǔ)上,可以省去大量的循環(huán)加工指令代碼。通過這種處理,識別速度得到很大提高。代碼識別部分的流程圖如圖3所示。
圖3 數(shù)控加工代碼識別流程圖
2.3.1 譯碼結(jié)果緩沖區(qū)設(shè)計
數(shù)控程序字符經(jīng)過代碼識別建立了各功能代碼的標志后,通過譯碼模塊對各功能碼進行編譯處理。譯碼程序采用串行譯碼法逐個編譯,而規(guī)定在數(shù)控系統(tǒng)運行前必須要預(yù)讀兩段加工程序才能正式加工,尤其在半徑補償方面,否則將導(dǎo)致加工零件直接報廢。所以首先要在上位機上建立一個與數(shù)控加工程序緩沖器相對應(yīng)的譯碼結(jié)果緩沖器。任何數(shù)控系統(tǒng)對各自的編程格式都有規(guī)定,并不是每個數(shù)控系統(tǒng)都具有ISO 標準給出的所有命令,一般情況下只具有其中的一個子集。該雕刻機數(shù)控系統(tǒng)中,由于數(shù)控雕刻本身加工特性,平面選擇指令、螺紋加工指令、固定循環(huán)指令等都沒必要設(shè)置緩沖區(qū)。同時,某些G代碼不可能同時出現(xiàn)在一個數(shù)控加工程序段中,沒有必要在譯碼結(jié)果緩沖器中同時為那些互相排斥的G代碼設(shè)置單獨的內(nèi)存單元,可將它們進行合并,然后依不同的特征字來以區(qū)分。通過這樣分組整理后,可以進一步縮小緩沖器的容量。在該系統(tǒng)中,將常用G代碼分組為GA、GB、GC 三組,常用M代碼分組為MX、MY 兩組,在譯碼結(jié)果緩區(qū)中只要為每一組定義一個內(nèi)存單元即可。這樣,在后續(xù)處理過程中,只需到相對應(yīng)的內(nèi)存單元中取出數(shù)控加工程序信息就可以執(zhí)行。
2.3.2 功能碼譯碼與診斷
在譯碼過程中,要對數(shù)控加工程序進行集中檢查診斷,只允許合法的程序段進入后續(xù)處理過程。診斷主要包括語法錯誤和邏輯錯誤兩方面。其中語法錯誤主要指某個功能代碼的錯誤,如N代碼后數(shù)值超過CNC系統(tǒng)所規(guī)定的范圍、F代碼設(shè)定的進給速度越界等。而邏輯錯誤主要指一個數(shù)控加工程序段或者整個數(shù)控加工程序內(nèi)功能代碼之間互相矛盾的錯誤,如在同一個數(shù)控加工程序段中先后編入了互相矛盾的零件尺寸代碼。在設(shè)計錯誤庫時,一般先將常規(guī)錯誤預(yù)先寫入,同時在實現(xiàn)過程中還會遇到許許多多的錯誤現(xiàn)象,這時要及時歸類存庫。在譯碼結(jié)果緩沖區(qū)和譯碼診斷庫的基礎(chǔ)上設(shè)計出診斷模塊。在診斷過程中,通過變址方式完成各個內(nèi)存單元的尋址。同時在ROM區(qū)中對應(yīng)設(shè)置了一個格式字表,表中規(guī)定了譯碼結(jié)果緩沖器中各個地址碼對應(yīng)的地址偏移量、字節(jié)數(shù)和數(shù)據(jù)位數(shù)等,以此來提高尋址速度。
由于刀具總有一定的半徑,在進行外輪廓加工時,要使刀具中心偏移零件的外輪廓表面一個刀具半徑值,這就要在上位機開發(fā)出半徑補償功能。通常來說半徑補償有B功能刀具補償法和C功能刀具補償法兩種。該系統(tǒng)采用補償機能較高的C功能刀具補償。
CNC系統(tǒng)所處理補償方向有左補償和右補償兩種,處理的基本輪廓線型是直線、順時針圓弧和逆時針圓弧,各自組合后有共有9類程編軌跡的連接方式。同時,根據(jù)輪廓線型轉(zhuǎn)接角α的不同,可以將C刀補的各種轉(zhuǎn)接過渡形式劃分為縮短型、伸長型和插入型。所以上位機半徑補償模塊總共有54種刀具中心軌跡轉(zhuǎn)接類型的判斷和計算。
在切削過程中,刀具半徑補償?shù)膱?zhí)行過程分為刀補建立、刀補進行、刀補撤消3個步驟。在刀補執(zhí)行過程中,需要提取上一段代碼和當前段代碼的加工狀態(tài),以判斷出目前所處的補償階段。同時需要預(yù)讀后兩段程序以便判斷加工平面內(nèi)的補償方向,從而對當前段的刀具中心軌跡作出及時的修正。所以在C功能刀補處理過程中,設(shè)置兩組刀補數(shù)據(jù)緩沖器,以便讓至少兩個數(shù)控加工程序段的信息同時在系統(tǒng)內(nèi)部被處理。因此,在刀補時需要掌握3段代碼的加工信息才可以進行刀補,半徑補償流程如圖4所示。
圖4 C功能刀具半徑補償流程圖
在傳統(tǒng)數(shù)控系統(tǒng)中,對每一段零件程序的加工都需要經(jīng)歷加速和減速兩個過程,若加工的路徑較短,其進給速度難以達到指令速度。在雕刻加工領(lǐng)域中,由于曲面形狀復(fù)雜,頻繁變化的進給速度必將導(dǎo)致機床各軸進給速度的不斷變化,當由此引起的各進給軸速度變化過大時,將產(chǎn)生較大的幾何軌跡誤差。同時,由于機械運動部件存在慣性,速度頻繁變化產(chǎn)生運動沖擊將嚴重影響加工精度,并縮短機床和刀具的壽命。為解決此矛盾,GE-400-SV 運動控制器提供基于前瞻預(yù)處理的速度規(guī)劃策略,在從上位機模塊得到零件輪廓信息、刀具軌跡及加工信息的基礎(chǔ)上,實時修正進給速度。圖5所示為使用前瞻預(yù)處理功能模塊規(guī)劃速度前后的速度對比,可以看出:在同樣加工精度的情況下,使用加減速前瞻性處理模塊后執(zhí)行速度有了較大的提高。
圖5 加減速前瞻處理技術(shù)對加工速度提升效果示意圖
通過設(shè)定機床的工藝特征參數(shù),主要包括進給速度、最大加速度、允許拐彎時間等,結(jié)合GE-400-SV運動控制器速度規(guī)劃預(yù)處理功能,可實現(xiàn)小線段連續(xù)軌跡加工。運動控制器前瞻預(yù)處理功能主要分以下3個子模塊:
(1)參數(shù)初始化模塊。調(diào)用GT_InitLookAhead函數(shù),設(shè)置前瞻預(yù)處理功能模塊的初始化參數(shù),在該模塊中,允許拐彎時間的設(shè)定是關(guān)鍵。時間常數(shù)越大,計算出來的終點速度越大,但會降低加工精度,在確保加工精度的情況下盡量減小允許拐彎時間。
(2)軌跡特征數(shù)據(jù)預(yù)處理模塊。在該模塊中,通過調(diào)用GT_AddLookData函數(shù)將軌跡特征數(shù)據(jù)載入預(yù)處理緩沖區(qū),主要包括快速進給指令、直線插補指令、圓弧插補指令的終點坐標位置信息和圓心坐標位置信息,以及當前段所允許的進給速度值。
(3)終點速度計算模塊。GE-400-SV 從預(yù)處理緩沖區(qū)提取軌跡特征數(shù)據(jù)后,依據(jù)參數(shù)設(shè)定要求,通過調(diào)用GT_Calvel 計算當前軌跡段的終點速度。該速度值經(jīng)插補模塊進一步處理后將輸出給伺服驅(qū)動模塊。
對于雕刻機數(shù)控系統(tǒng)而言,插補功能是其關(guān)鍵功能,控制系統(tǒng)其他任務(wù)大多都是圍繞著插補進行的。GE-400-SV 內(nèi)部已經(jīng)封裝了直線插補和圓弧插補算法,這些算法允許被外部高級語言調(diào)用。通過變量參數(shù)的傳遞使插補得到執(zhí)行,這使得所設(shè)計的系統(tǒng)在易用性和實時控制等級兩方面得到提高。
GE-400-SV 提供了多維直線插補指令、二維圓弧插補指令各6個,這些指令都封裝在基于Windows的動態(tài)鏈接庫ges.dll 內(nèi),該鏈接庫可用C 語言調(diào)用。在開發(fā)上位機程序時,將ges.dll 頭文件、ges.h 庫文件復(fù)制到工程文件夾中,并添加庫文件到工程中。同時在應(yīng)用程序中加入函數(shù)庫頭文件的聲明#include“ges.h”,便可將這些插補函數(shù)與數(shù)控系統(tǒng)標準插補指令G01、G02、G03功能一一對應(yīng)。在該雕刻機數(shù)控系統(tǒng)中,調(diào)用GT_LnXYG0 執(zhí)行二維直線插補,調(diào)用GT_LnXYZG0 執(zhí)行三維直線插補,調(diào)用GT_ArcXY執(zhí)行xy 平面內(nèi)以圓心位置和角度為輸入?yún)?shù)的圓弧插補,調(diào)用GT_ArcXYP 執(zhí)行xy 平面內(nèi)以終點位置和半徑為輸入?yún)?shù)的圓弧插補。
基于運動控制器的開放式數(shù)控雕刻機系統(tǒng)采用上、下位機分別實現(xiàn)原始NC程序提取、代碼的識別和譯碼、半徑補償、加減速前瞻性處理、插補計算等功能,將操作系統(tǒng)的智能化和伺服加工的實時性有效結(jié)合在一起。在文中研究的基礎(chǔ)上,可以根據(jù)雕刻需求的變化增加相應(yīng)的信息預(yù)處理模塊,如上位機可以再增加粗插補模塊、下位機增加S 加減速模塊等。
【1】鄭華林,馬建祿,潘盛湖,等.基于PC 運動控制卡的數(shù)控系統(tǒng)NC代碼編譯技術(shù)研究[J].機床與液壓,2011,39(10):94-96.
【2】陳嬋娟,劉海超.開放式數(shù)控系統(tǒng)軟件譯碼模塊的研究及實際開發(fā)[J].機床與液壓,2010,38(1):47-50.
【3】羅青.數(shù)控代碼光順預(yù)處理方法研究[D].廣州:廣東工業(yè)大學(xué),2007.
【4】鄒小剛.高速數(shù)控系統(tǒng)研究平臺構(gòu)建及其預(yù)處理技術(shù)研究[D].揚州:揚州大學(xué),2005.
【5】沙智華,張生芳,葛研軍.通用數(shù)控代碼編譯系統(tǒng)研究與實現(xiàn)[J].中國機械工程,2003(5):763-766.
【6】固高GE系列運動控制器用戶手冊[M],2010.