張愛紅
(無錫職業技術學院,江蘇無錫2l4l2l)
作者:張愛紅,男,l97l年生,副教授,研究方向:數控、機器人等機電一體化技術。
加工中心為柔性制造系統(FMS)重要的底層設備之一,能夠對工件各加工面自動地進行鉆孔、銑削等多工序加工。為能實現上位計算機對加工中心的遠程控制,有三種方案可供選擇:(l)基于數控系統廠家動態鏈接庫的二次開發[l];(2)增加外置控制器并修改機床PLC程序;(3)配置通信適配器、實現系統功能擴展。在無錫職院FMS中用了前兩種方案,分別用于配置FANUC 0i-TC系統的數控車床(CL-20A)和配置SINUMERIK 8l0D系統的加工中心(DMC 63V)。其中第二種方案的實現基于開發人員對機床接口信號的靈活應用,也是遠程控制中較為便捷、實用的一種方法。
加工中心遠程控制系統如圖l所示。上位機控制程序與外置PLC以串口通信方式,讀/寫PLC內部數據,完成I/O信號的輸入/輸出控制。目前除可以控制機床門、氣動夾具、與工業機器人的聯動控制,外置PLC的輸出信號還作為加工中心PLC的輸入信號,并在數控系統內部傳遞信息(PLC→NCK),實現機床遠程起動與復位、數控程序選擇(主程序根據輸入信號位的變化,調用不同的子程序)等功能;與此同時,上位計算機也可實時獲取機床的運行狀態(NCK→PLC)。

為了實現加工中心遠程控制并調用不同程序加工,除了增加外置PLC、輸入/輸出接線以及機床PLC的信號(SM)模塊組態外,關鍵要完成4部分程序的編制,即:機床PLC程序、外置松下PLC程序、數控加工程序以及上位機控制程序。它們的編程軟件各不相同,其中機床PLC為S73l5,其編程指令與西門子S7300 PLC兼容,采用SIMATIC STEP 7軟件;外置PLC為松下FP0-C32T,編程軟件為FPWIN GR2;機床配置了SINUMERIK 8l0D數控系統,數控程序有自己的語法規范;上位機采用Visual C++6.0編程、串口通信方式。雖然編程軟件不同,但各部分之間的接口明確,因而實現起來并不困難。下文以機床PLC程序、數控加工程序與上位計算機控制程序的開發為例說明系統軟件的開發流程。
機床出廠時已經有完善的PLC控制程序,但是不能滿足遠程控制功能,因此需要修改源程序。如圖2所示,先要能建立與機床PLC的通信連接,其中K2電纜須由機床提供DC24 V電源;接著要設置通信端口參數,再將機床PLC程序上傳至計算機分析。經過機床操作、診斷(Diagnosis)后,發現控制面板(MCP)循環起動信號地址為Il.7,查閱SINUMERIK 8l0D/840D系統調試說明書[2]后,得到PLC→NCK的內部起動信號為 DB2l.DBX7.l。結合上傳的 PLC程序,信號Il.7、DB2l.DBX7.l 在功能塊 FCl l4、FC43 中調用,部分程序如下:

在FCl l4內:

在FC43內:

而經過SIMATIC STEP7軟件下的“交叉參考”標簽找出機床未使用的信號有 I37.5、I37.4、I37.l 等,在本系統中將它們分別定義為:機床遠程起動、復位與程序選擇信號。為了實現遠程起動功能,如果直接在OBl主程序中增加置位語句(使 DB2l.DBX 7.l為l),將發現機床不能正常運行。經過多次試驗、比較后發現可參照操作機床控制面板(MCP)循環起動信號Il.7的編程方法,將信號I37.5與之并聯,故上面的程序修改如下:
在FCl l4內:

在FC43內:

修改后的程序在信號I37.5在“0→l→0”變化過程中,機床將執行系統已裝載的程序,至此系統的遠程起動功能已經實現。其他功能包括復位功能(DB2l.DBX7.7,信號方向:PLC→NCK),機床運行狀態檢測功能(DB2l.DBX 35.0,信號方向:NCK→PLC)。其處理過程與之類似,限于篇幅,不再贅述。
雖然上述設計都很成功,但考慮到柔性制造系統應能實現小批量、多品種的零件加工,系統需有調用不同程序加工的能力,因此需進一步完善系統功能。經研究發現:與FANUC 0i系統相比,SINUMERIK 8l0D/840D系統的接口功能更加強大,系統提供了一個獨立的內部數據區用于NCK與PLC高速數據交換。這個內部數據預置了l 024字節,PLC可通過FC2l與NCK交換數據,數控程序可通過讀/寫NC變量$A_DB*來讀取PLC數據。機床PLC端實現的具體要求是在OBl塊中調用FC2l功能。程序如下:
CALL FC 2l
IN0 :=I37.5 (I37.5,上位計算機遠程起動信號)
INl:=B#l6#4
IN2 :=P#I 37.0 BYTE l
IN3:=0 (將IB37字節的內容寫入到變量$A_DBB[0])
IN4:=-l
OUT5:=Q49.l
OUT6:=MWl2
第l個參數I37.5是使能信號,為l時將激活FC2l功能,否則FC2l功能不執行。第2個參數是塊功能,字節類型,取值為3時,讀NCK變量;取值為4時,寫NCK變量。第3個參數是PLC的數據地址,起始地址為指針,后面表示數據的長度,以P#I 37.0 BYTE l為例,I37.0為起始地址,BYTE l代表一個字節長度。第4個參數為整型參數,在第2個參數取值3或4時,該參數指位置偏置,即相對起始地址的偏置值,通常設為0;第5個參數為整型參數,在第2個參數為3或4時,取值為-l。最后兩個參數為輸出參數,分別為錯誤指示信號(Q49.l),錯誤代碼(MWl2),正常輸出時,為 0;出錯時,Q49.l 置位,并有相應錯誤代碼輸出到MWl2。對于上面這段程序,FC2l正常調用的結果將IB37字節的內容寫入到NC變量 $A_DBB[0]中。
SINUMERIK 8l0D/840D的NCK系統中有4種用于讀/寫PLC變量,分別是$A_DBB、$A_DBW、$A_DBD、$A_DBR,可用于操作8位字節、l6位字、32位雙字和32位實數。本應用中只需使用8位字節變量,根據FC2l調用的結果將IB37的狀態寫入到NC變量$A_DBB[0]中,而第l位信號I37.l用于程序的選擇,因此需進行按位操作的方式,根據位的變化決定程序的調用或轉移。SINUMERIK 8l0D/840D系統數控編程時,可進行與、或、非等位操作運算[3]。基于此,編寫的數控程序如下:
…
IF$A_DBB[0]B_AND‘B000000l0’GOTOF PROGl
…
PROGl:…
將變量$A_DBB[0]與000000l0按位與,如果結果不為0,程序將跳轉到標號PROGl處繼續執行。因此利用PLC外部輸入信號的變化來執行不同的加工程序段或調用子程序,以實現多品種零件的加工。
Visual C++6.0作為Windows系統開發的主要語言之一,以其具有良好的圖形用戶界面并支持面向對象的程序設計,使得編程效率提高,應用功能增強。因此本系統采用Visual C++為上位機開發軟件,實現對機床的遠程控制。建立的人機交互界面如圖3所示。

程序界面分成3個區域:
(l)左邊的是樹型結構,手動模式下,節點雙擊后可發出相應的指令。這些指令有:配置、打開或關閉端口,開/關機床門、松/緊夾具、起動/復位機床等。
(2)右邊上面區域是響應命令的事件狀態及接收時間。
(3)右邊下面是log信息。
樹型結構展開,主節點有“PLC協議”和“機床手動控制”等,下面分別有3個和6個命令節點。鼠標左鍵雙擊命令節點,執行相應的操作,這些節點都是為手動操作而設置的。在自動模式下,除“PLC協議”節點下“配置端口”、“打開端口”操作需手動完成外,其他操作都是程序自動完成的。
機床起動/復位、實時狀態檢測、自動門開/關、程序選擇等操作可由計算機向PLC發送讀/寫指令來控制。以“起動機床”為例,程序代碼如下:
void CPLCProtoc::startMachine()
{ …
m_ControlCharacter=START;
SendReceivePort(LPCTSTR(m_ControlCharacter));
…
if(m_backData.Mid(6,2)==_T("0l"))//機床運行
…}
CPLCProtoc為PLC協議類,封裝了與PLC串行通信的底層操作,基于此調用成員函數startMachine()發送控制指令。分析了松下電工FP系列PLC通信協議的定義后,將 START定義為字符串“%0l#WDD0000l0000l0200** ”,向l號站的數據寄存器DTl發送0002H,PLC應答數據存放到字符串m_backdata中。機床運行時前8個字符的返回值為:“%0l$RD0l”,復位時返回值為“%0l$RD02”,可通過CString類成員函數Mid(6,2)分離出 DTl數值,并作相應判斷,如為“0l”說明機床運行,為“02”說明機床復位等。而字符串的發送與返回碼的接收由函數SendReceivePort完成。
數控機床的遠程控制功能是柔性制造系統底層設備控制的重要組成部分,本文利用Visual C++開發遠程控制軟件,應用松下PLC與加工中心交換信息,實現了一種操作界面友好,適用于工業現場的數控機床遠程控制系統。該系統方便柔性制造系統調度模塊的調用,便于功能擴展,現已成功應用于我院產教結合型柔性制造系統,并已申獲計算機軟件著作權(軟件名稱:加工中心DNC控制軟件,登記號:2008SR26399)。
l 張愛紅.基于CORBA的數控機床DNC模塊開發.深圳職業技術學院學報,2006(4)
2 SIEMENS.SINUMERIK 840D/8l0D簡明調試指南.SIEMENS,2002.
3 SIEMENS.SINUMERIK 840D/8l0Di/8l0D/FM_NC編程指南高級篇.SIEMENS,200l.