楊冬香,張愛華
(1.五邑大學(xué)智能制造學(xué)部,廣東江門 529020;2.五邑大學(xué)數(shù)學(xué)與計算科學(xué)學(xué)院,廣東江門 529020)
數(shù)控系統(tǒng)對于制造裝備來說相當(dāng)于大腦,它反映著裝備的智能化自動化水平[1]。成熟的數(shù)控系統(tǒng)功能齊全,但是價格昂貴,同時也不能滿足目前制造市場上對數(shù)控系統(tǒng)多樣化、個性化的功能需求[2]。因此,開發(fā)符合自身功能要求的低成本開放式數(shù)控系統(tǒng)符合目前市場上生產(chǎn)企業(yè)的需求。
雖然制造市場對數(shù)控系統(tǒng)功能需求不盡相同,但是數(shù)控系統(tǒng)的基本譯碼、刀具補償、插補等功能不可或缺。因此,從降低開發(fā)成本出發(fā),將數(shù)控系統(tǒng)的基本代碼、刀具補償、插補等進行模塊化封裝,作為一種通用的程序模塊,可供相同平臺用戶調(diào)用組合,是一種行之有效的新的開放式數(shù)控系統(tǒng)開發(fā)思路。
CPAC是計算機可編程自動化控制器的簡稱,它是固高科技有限公司推出的應(yīng)用于工業(yè)裝備控制的軟硬件開發(fā)平臺,廣泛應(yīng)用于自動化裝備數(shù)字控制系統(tǒng)的開發(fā)領(lǐng)域[3]。在CPAC軟件平臺對數(shù)控系統(tǒng)的常用代碼模塊進行模塊化封裝,作為有固定輸入輸出的程序塊。封裝好的程序塊可以類似于軟件底層函數(shù),用于其他基于CPAC的嵌入式數(shù)控系統(tǒng)開發(fā)程序之中,這樣可以大大地減少數(shù)控系統(tǒng)的開發(fā)時間。
CPAC硬件平臺由運動控制器、人機界面和遠(yuǎn)程I/O模塊3部分組成[4]。其核心控制器由FPGA和DSP 組成,支持多種運動模式,如點位模式、JOG 模式、電子齒輪模式、FOLLOW模式、插補模式、PT模式和PVT模式等,支持位置控制方式和速度控制方式,帶有16路通用數(shù)字輸入、16路通用數(shù)字輸出點。
CPAC軟件平臺(Otostudio)是一種基于IEC61131-3工業(yè)控制語言標(biāo)準(zhǔn)的開發(fā)工具,支持文本化和圖形化混合編程,用戶可以用結(jié)構(gòu)文本做復(fù)雜的數(shù)學(xué)運算和運動控制,同時用梯形圖實現(xiàn)邏輯控制和過程控制。
Otostudio 程序類型多樣,有主程序、子程序、功能塊、功能。對于其中的關(guān)系在開發(fā)之前要清楚。每個程序必然包含一個主程序,這是程序運行的前提。子程序和主程序的變量是可見的,主程序可以調(diào)用子程序、功能塊及功能。功能塊對應(yīng)輸入變量和輸出變量,有返回值。功能沒有返回值。
功能塊是Otostudio 平臺本身具備的一種程序形式,其平臺本身具備有運動模式等封裝好的功能塊,可以供平臺使用者按需調(diào)用。本文利用平臺功能塊這一程序形式,對常用數(shù)控代碼解釋和編譯等功能進行封裝,形成可供用戶選擇調(diào)用的程序功能塊。
程序功能塊FUNCTION_BLOCK不同于完整數(shù)控系統(tǒng)的開發(fā),其獨立于數(shù)控系統(tǒng),封裝后可供平臺所有用戶調(diào)用,用戶只需給定滿足程序功能塊要求的輸入?yún)?shù)即可。
本文依據(jù)常用數(shù)控代碼來劃分程序塊,如G00/G01/G02/G03、G41/G42/G40、G90/G91 等,然后利用 Otostuidio 的功能塊完成其程序塊封裝。具體開發(fā)思路如下:
(1)命名創(chuàng)建功能塊;
(2)確定功能塊輸入和輸出參數(shù)并進行定義;
(3)調(diào)用Otostudio 底層函數(shù),按照其編程規(guī)則,根據(jù)程序代碼功能,編寫其譯碼程序;
(4)結(jié)束功能塊。
以下以G01 指令程序塊、譯碼功能塊為例,闡述其封裝流程。
平臺仿真運行實驗刀具按照系統(tǒng)設(shè)定好的進給速度從刀具當(dāng)前的位置快速移動到程序段給定的位置。各坐標(biāo)軸無需聯(lián)動,沒有運動軌跡要求。G00程序塊封裝流程如圖1所示。
圖1 G00程序塊封裝流程
圖2 G01程序塊封裝流程
首先通過GT_PrfTrap(Axis),輸入軸號變量Axis,設(shè)定指定軸的點位運動模式。定義結(jié)構(gòu)體STRUCT TTrapPrm,存儲點位運動參數(shù),并采用GT_SetTrapPrm (Axis,ADR(Trap-Prm))設(shè)置給定軸的運動參數(shù)。通過GT_SetVel(Axis,Vel)設(shè)置給定軸的速度,GT_SetPos(Axis,Pos)設(shè)置給定軸的目標(biāo)位置。所有參數(shù)定義完畢,采用GT_Update(Axis)啟動給定軸的點位運動,完成程序塊的定義。
該指令可使機床沿X、Y、Z 方向?qū)崿F(xiàn)單軸的運動,或在各坐標(biāo)平面內(nèi)實現(xiàn)兩軸聯(lián)動走出平面直線軌跡,也可使機床三軸聯(lián)動走出空間直線軌跡。
緩存區(qū)中的數(shù)據(jù)是會實時更新的,當(dāng)數(shù)據(jù)進行插補運動之后,會被釋放出來,給后續(xù)新的數(shù)據(jù)提供存儲空間,用戶設(shè)定的插補數(shù)據(jù)會儲存在緩存區(qū)中等待執(zhí)行,接著啟動插補運動,運動控制器則會依次執(zhí)行用戶所傳遞的插補數(shù)據(jù),直到所有的插補數(shù)據(jù)全部運動完成。
因為要實現(xiàn)的是能三軸聯(lián)動的直線插補運動,所以這里選用的是三維直線插補指令GT_LnXYZ 以及啟動插補運動指令GT_CrdStart。雖然每個緩存區(qū)FIFO 都含有4 096 段插補數(shù)據(jù)的空間,由于不確定用戶所給的G 代碼程序會不會超出緩存區(qū)空間,所以每次在傳遞插補數(shù)據(jù)之前調(diào)用指令GT_Crd-Clear 來清理儲存區(qū)里面的數(shù)據(jù)內(nèi)存,確保用戶有足夠的存儲空間可以使用。G01程序塊封裝流程如圖2所示。
目前,國際上通用的數(shù)控機床的加工程序主要基于標(biāo)準(zhǔn)ISO6983的G、M代碼語言編寫而成的。最常用的程序段字地址格式如下所示[2]:
Nxxx Gxx Xxx Yxx Zxx Fxx Sxx Txx Mxx
在Otostudio 中,NC 代碼文件的打開是通過指令SysFileOpen來實現(xiàn)的:
DwWritten: =SysFileRead (Hfile,ADR (buffer[origin]),SIZEOF(buffer)-(origin-1));
WHILE index<cycle_size+1 AND Buffer[index]<>0 DO
sBuffer[index]:=ASCII_TO_STRING(Buffer[index]);
index:=index+1;
END_WHILE;
由于數(shù)組buffer[]存放字符所對應(yīng)的ASCII 值,必須將ASCII值轉(zhuǎn)化為字符(ASCII_TO_STRING),為下面NC代碼的編譯做準(zhǔn)備。
轉(zhuǎn)換之后,NC代碼的內(nèi)容會以一個一個字符的形式被存放在數(shù)組sBuffer[index]中。讀取和識別準(zhǔn)備功能G指令的類型和輔助功能M指令的類型并把G、M指令后面的坐標(biāo)值、進給速度、半徑、轉(zhuǎn)速、時間等作為輸入?yún)?shù)賦值給所封裝好的相應(yīng)程序代碼功能塊,完成譯碼和驅(qū)動執(zhí)行。
為驗證功程序功能塊的有效性,本文利用CPAC和Otostudio搭建了簡單的數(shù)控系統(tǒng)軟硬件框架結(jié)構(gòu),并調(diào)用前期開發(fā)的程序功能塊,快速實現(xiàn)了二維輪廓銑削、二維刀具補償和孔類加工循環(huán)等功能,如圖3所示。
圖3 基于CPAC的數(shù)控系統(tǒng)界面與調(diào)用程序功能
在進行簡單個性化界面編制的基礎(chǔ)上,本數(shù)控系統(tǒng)對NC代碼的讀入、解釋和驅(qū)動執(zhí)行,都通過調(diào)用功能塊完成。
輸入如下代碼:
G00 X400 Y200;
G01 X0 Y0 F100;
數(shù)控系統(tǒng)調(diào)用譯碼功能塊和程序代碼功能塊,驅(qū)動顯示模塊走出圖4所示線框,同時驅(qū)動CPAC輸出軸做相應(yīng)轉(zhuǎn)動。
圖4 數(shù)控系統(tǒng)刀具軌跡線框圖
本文從縮短數(shù)控系統(tǒng)開發(fā)周期、降低開發(fā)成本出發(fā),提出以程序功能塊的方式,封裝通用代碼或功能模塊,以供相同平臺用戶開發(fā)使用。同時,根據(jù)這一思想,基于CPAC軟硬件平臺,實現(xiàn)了通用程序功能塊的開發(fā),并在基于此平臺的數(shù)控系統(tǒng)開發(fā)中得到應(yīng)用,驗證了程序功能塊的通用性和有效性。