高 帥, 陳嬋娟, 張 強
GAO Shuai, CHEN Chan-juan, ZHANG Qiang
(陜西科技大學 機電工程學院,西安 710021)
陶瓷快速成型機數(shù)控系統(tǒng)軟PLC模塊的實現(xiàn)
Implementation of soft plc module for ceramic rapid prototyping cnc
高 帥, 陳嬋娟, 張 強
GAO Shuai, CHEN Chan-juan, ZHANG Qiang
(陜西科技大學 機電工程學院,西安 710021)
基于開放式數(shù)控系統(tǒng)平臺,結(jié)合GT400運控卡豐富的I/O資源,利用C++語言成功開發(fā)出了符合IEC61131-3標準的軟PLC功能模塊。主要包括程序編輯器、虛擬存儲區(qū)及其尋址方式的設(shè)計,通過回調(diào)函數(shù)加循環(huán)的方法,實現(xiàn)對PLC功能的軟件“封裝”。能夠較好地完成陶瓷快速成型機的控制要求,擴展性強,便于移植到其他數(shù)控系統(tǒng)中。
快速成型;軟PLC;虛擬存儲區(qū);指令函數(shù)
快速成型技術(shù)(RP)是一種全新的敏捷制造技術(shù),在陶瓷零件的制造中具有較好的使用前景。為了進一步改善陶瓷零件的制造工藝,采取將激光薄片疊層制造(LOM)與熔融沉積成型(FDM)相結(jié)合的技術(shù),將去除材料的雕刻機改造成為添加材料的快速成型機[1]。針對新工藝的控制要求,在構(gòu)建開放式陶瓷快速成型機數(shù)控系統(tǒng)的過程中,開發(fā)性能優(yōu)越的軟PLC功能模塊顯得尤為必要。筆者分析了新型陶瓷快速成型機的工作原理和控制要求,在Windows操作系統(tǒng)下利用C++語言成功開發(fā)出了陶瓷快速成型機數(shù)控系統(tǒng)的軟PLC功能模塊。
陶瓷快速成型機的工藝流程為:首先在工作臺上鋪設(shè)一定厚度的石蠟層,待其冷卻之后,再銑削雕刻每一層的形狀,以利于后繼陶瓷漿料的填充。敷料運動主要分為水平運動和豎直運動。加熱和攪拌在整個過程中一直進行,并且石蠟料斗和陶瓷料斗不能同時開合。在刻刀回位后,水平電機再重新工作,并且要勻速帶動料斗平穩(wěn)運行,保證鋪料均勻。當以自動方式結(jié)束一個循環(huán)時,系統(tǒng)又處于初始狀態(tài)[2]。因此,陶瓷快速成型機的工作過程需要豐富的I/O控制功能。
軟PLC技術(shù)是一種基于IPC或EPC的將PLC的控制功能“封裝”在軟件內(nèi)的控制技術(shù)。它不但具有傳統(tǒng)PLC的控制功能,而且具有系統(tǒng)開放、開發(fā)靈活、易于與網(wǎng)絡鏈接的特點[3]。根據(jù)軟PLC的特點,將其分為開發(fā)系統(tǒng)和運行系統(tǒng),兩者運行于同一個IPC平臺。由于GT-400運動控制器具有豐富的I/O接口資源,軟PLC系統(tǒng)采用基于IPC的控制方案,如圖1所示。
圖1 軟PLC系統(tǒng)的控制方案
軟PLC系統(tǒng)的各功能模塊如圖2所示。
開發(fā)系統(tǒng)的編輯模塊用來實現(xiàn)PLC程序的錄入,編譯模塊將PLC程序準確翻譯成運行系統(tǒng)可以識別的C語言代碼,通信接口負責與運行系統(tǒng)進行通訊。
2.1.1 編輯模塊的開發(fā):
本系統(tǒng)以梯形圖和指令表作為編程語言[4]。由于系統(tǒng)的開放性,可以方便地將IEC61131-3標準中的其他三種編程語言加載到系統(tǒng)中來。
圖2 軟PLC系統(tǒng)各功能模塊
對于梯形圖編輯器,首先設(shè)置梯形圖的數(shù)據(jù)結(jié)構(gòu)并存儲在雙向鏈表的節(jié)點中,通過對鏈表地具體操作來實現(xiàn)。指令表是一種字符型的文件,通過在對話框中加入CEdit類控件即可實現(xiàn)指令表的編輯。在梯形圖向指令表的轉(zhuǎn)化中,采用基于二叉樹數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換算法,利用二叉樹與梯形圖的結(jié)構(gòu)相似性,建立梯形圖和語句表之間的聯(lián)系,以實現(xiàn)其轉(zhuǎn)換。編輯界面如圖3所示。
圖3 梯形圖編輯界面
2.1.2 編譯模塊的開發(fā):
為了使PLC程序通過運行系統(tǒng)實現(xiàn)控制功能,需要將指令表編譯為運行系統(tǒng)能夠識別的代碼。
編譯程序是一個高度復雜的程序,尤其是詞法分析和語法分析部分任務繁雜,這里采用可以在Windows操作系統(tǒng)下運行的Bison和Flex軟件的結(jié)合來自動準確地生成C語言的分析程序[5]。
運行系統(tǒng)是PLC程序的運行載體,主要功能是與開發(fā)系統(tǒng)的通信、目標代碼的執(zhí)行和各種I/O硬件的驅(qū)動。
2.2.1 軟PLC虛擬存儲區(qū)的設(shè)計
由于基于堆棧的數(shù)據(jù)處理方式方便快捷,本設(shè)計采取基于堆棧的數(shù)據(jù)處理方案來進行函數(shù)調(diào)用。首先,將PLC的存儲區(qū)定義為一個結(jié)構(gòu)體變量,成員分別為PLC的各存儲區(qū),類型定義為字節(jié)型變量(char)。
該結(jié)構(gòu)體定義的部分代碼如下:
在設(shè)計中,虛擬存儲區(qū)的輸入映像區(qū)和輸出映像區(qū)是用來與外圍硬件設(shè)備進行數(shù)據(jù)交流的通道,利用GT400自帶的兩個輸入輸出函數(shù)來實現(xiàn),函數(shù)定義如下[6]:
2.2.2 數(shù)據(jù)尋址方式
由于操作數(shù)的類型組要有位變量、字節(jié)型變量、字型變量、雙字型變量等類型,因此需要不同的尋址方式[7]。本設(shè)計采用通用的處理方式,即首先獲取結(jié)構(gòu)體的首指針,計算出結(jié)構(gòu)體成員的偏移地址,再計算出結(jié)構(gòu)體成員的絕對地址,之后由程序獲取段內(nèi)的偏移地址,計算操作數(shù)的絕對地址。為了便于操作不同類型的數(shù)據(jù),需要將獲得的結(jié)構(gòu)體指針強制轉(zhuǎn)換成指令函數(shù)操作數(shù)類型的指針,從而讀取對應的存儲數(shù)據(jù)。所用的計算公式,采用宏定義來表示:#define STRUCT_OFFSET(stru_name,element) (int)&((struct stru_name*)0)->element
2.2.3 指令運行原理與指令函數(shù)的編寫
本系統(tǒng)在運行時采用回調(diào)函數(shù)加循環(huán)的方法來實現(xiàn)指令的執(zhí)行過程,即將每個指令設(shè)計成函數(shù)的形式,并把函數(shù)的指針存到一個函數(shù)數(shù)組中,由于這些函數(shù)的形參都是PLC變量區(qū)結(jié)構(gòu)體指針、操作數(shù)結(jié)構(gòu)體變量指針、系統(tǒng)控制區(qū)結(jié)構(gòu)體指針等,具有相同的變量參數(shù),這樣就可以定義一個指針函數(shù),這個函數(shù)的變量類型和指令函數(shù)的類型相同。這種方法對任何指令都是有效的,具有很好的通用性和可擴展性,要添加其他指令,只要增加指令函數(shù)和函數(shù)指針數(shù)組,然后實現(xiàn)其中的運行函數(shù)即可。
圖4 LD 11.2解釋流程圖
以基本邏輯指令為例,其操作數(shù)是以位來讀取的,因此專門設(shè)計了一個結(jié)構(gòu)體模擬堆棧,對PLC 指令的操作采用堆棧處理,棧深為8層,用這個堆棧來存儲邏輯運算的結(jié)果。該結(jié)構(gòu)體的定義如下:
2.2.4 系統(tǒng)實時性問題的解決方案
傳統(tǒng)PLC具有硬實時性,可以提供快速、確定而且可重復的響應,但Windows是一種消息驅(qū)動系統(tǒng),無法保證控制的實時性要求。
由于微軟公司提供了精確定時器的底層API函數(shù)庫,這里利用Windows的多媒體定時器技術(shù)來解決這個問題。它擁有獨立的執(zhí)行線程,而且優(yōu)先級很高,能在非常精確的時間間隔內(nèi)完成一個事件、函數(shù)或過程的調(diào)用,可以實現(xiàn)毫秒級的高精度定時, 能夠滿足大多數(shù)的精度控制要求。該函數(shù)原型如下:
本文創(chuàng)新點:程序編輯器結(jié)構(gòu)簡單,編輯界面可直接設(shè)置參數(shù),開放性好;運行系統(tǒng)的虛擬存儲區(qū)采取基于堆棧的數(shù)據(jù)處理方法,執(zhí)行效率高;指令運行采用回調(diào)函數(shù)加循環(huán)的方法,適用于任何PLC指令,具有很好的通用性與擴展性。
試驗表明,在開放式陶瓷快速成型機數(shù)控系統(tǒng)中,該軟PLC功能模塊可以較好地實現(xiàn)進給軸的使能控制,限位保護及復位控制,輔助信號控制等功能,同時還可以實現(xiàn)I/O接口的開關(guān)量控制功能。
[1] 陳嬋娟,袁斌.新型陶瓷快速成型裝置數(shù)控系統(tǒng)的研究[J].工程設(shè)計學報,2009,(10):335-339.
[2] 王秀峰,羅宏杰.快速成型制造技術(shù)[M].北京:中國輕工業(yè)出版社,2001:79-92.
[3] 陳鳳蘭,孫竹梅.軟PLC技術(shù)的發(fā)展趨勢與應用前景[J].電力學報,2006,(2):88-90.
[4] Open-PLC programming using IECll31-3,http://www.engineeringtalk.com.
[5] 田文琦,于東,高偉,紀元.Flex和Bison在軟PLC編譯器中的應用[J].微計算機信息,2009,(19):235-237.
[6] 深圳固高科技.GT系列運動控制器編程手冊[M].深圳:固高科技,2003.
[7] 羅燕華.嵌入式軟 PLC 技術(shù)的研究與實現(xiàn)[M].武漢:華中科技大學,2006.
TH166
A
1009-0134(2010)11(下)-0098-03
10.3969/j.issn.1009-0134.2010.11(下).35
2010-07-13
陜西省教育廳2010年專項科研計劃項目( 2010JK438);陜西科技大學研究生創(chuàng)新基金資助
高帥(1985 - ),男,河南洛陽人,碩士研究生,研究方向為數(shù)控技術(shù)、控制工程。