■ 南京高速齒輪制造有限公司 (江蘇 211100) 趙紅淑
我們?cè)跀?shù)控系統(tǒng)(西門子)中大量使用M指令,比如M3是主軸正轉(zhuǎn)、M5主軸停轉(zhuǎn)等常規(guī)通用指令,也有制造商自己開(kāi)發(fā)的某些特定功能或動(dòng)作的M指令。特別是加工中心換刀程序中寫有多個(gè)M指令,每一步的動(dòng)作都有特定的M代碼完成,并且有先后順序,出故障時(shí)還能停止,往往還伴有報(bào)警。那么這些M指令是怎么編寫的,在使用時(shí)又是如何做到條件檢測(cè)的,本文將就這一問(wèn)題進(jìn)行討論。
在NC程序中M功能執(zhí)行時(shí)(以840D系統(tǒng)為例),會(huì)觸發(fā)一個(gè)信號(hào),該信號(hào)會(huì)傳送到PLC接口,通過(guò)840D的調(diào)試手冊(cè)可以查出該信號(hào)(DB2x.DBX294.0-DB2x.DBX206.3),而這些信號(hào),在PLC中只存在一個(gè)掃描周期,所以一般會(huì)使用S指令,置位某個(gè)地址然后去驅(qū)動(dòng)某個(gè)動(dòng)作。
程序段如下(以通道1為例):
N010 G0 X0 M10 //啟動(dòng)冷卻指令M10
...
N080 M11 //當(dāng)NC程序運(yùn)行到此步時(shí),M11關(guān)閉冷卻
在PLC程序中我們編寫如下程序:
A DB21.DBX195.2 //M10執(zhí)行時(shí)在nck程序的通道1中編輯,激活一個(gè)PLC掃描周期
S Q0.0 //冷卻泵啟動(dòng)(Q0.0為控制泵接觸器的輸出信號(hào))
A DB21.DBX195.3 //M11執(zhí)行時(shí)在nck程序的通道1中編輯,激活一個(gè)PLC掃描周期
R Q0.0 //冷卻泵停止
實(shí)際上我們很多M指令是“閉環(huán)”的,就是指令執(zhí)行后還要檢測(cè)執(zhí)行有沒(méi)到位信號(hào)或者壓力信號(hào)等,若不到位就無(wú)法執(zhí)行下一步,一直停在該M指令處。這就需要PLC或者NC對(duì)指令進(jìn)行處理了。
PLC的處理方法是在執(zhí)行動(dòng)作的同時(shí)將“讀入使能禁止”(DB21.DBX6.1)激活,同時(shí)檢測(cè)反饋信號(hào),當(dāng)反饋信號(hào)正常時(shí)再?gòu)?fù)位該“讀入使能禁止”,此時(shí)該M指令就完成“閉環(huán)”反饋,執(zhí)行下一步了。如在某程序中有個(gè)松刀動(dòng)作M20,要求松刀不到位時(shí)不能執(zhí)行下一步,程序如下:
A DB21.DBX196.4 //M20執(zhí)行時(shí)在nck程序的通道1中編輯,激活一個(gè)PLC掃描周期
S Q0.1 //驅(qū)動(dòng)松刀電磁閥
S DB21.DBX6.1 //同時(shí)激活“讀入使能禁止”
A Q0.1
A I0.1 //檢測(cè)松刀到位信號(hào)
R DB21.DBX6.1 //到位后,復(fù)位該信號(hào),NC程序繼續(xù)執(zhí)行
除了用這種PLC程序做檢測(cè)外還可以結(jié)合NC的IF語(yǔ)句做判斷,這在加工中心的換刀程序中大量使用。如某龍門加工中心換刀程序中有段程序:
M93 //刀庫(kù)門開(kāi)
_TT: _MM[0]=$A_DBB[80] //Y、Z軸運(yùn)動(dòng)條件:開(kāi)門到位
IF _MM[0]==0 GOTOB _TT
G153 G01 G90 Y=$MA_FIX_POINT_POS[1,AX2] F=HIGHSPEED
G153 G01 G90 Z=$MA_FIX_POINT_POS[1,AX3] F=HIGHSPEED
程序中IF語(yǔ)句就是用來(lái)檢測(cè)開(kāi)門信號(hào)的,如果不到位,Y、Z軸是不能運(yùn)動(dòng)的,否則有撞門風(fēng)險(xiǎn),$A_DBB[80]主要是通過(guò)如圖1所示的PLC實(shí)現(xiàn)的。我們能夠清晰的看到以下的邏輯,執(zhí)行M93后激活DB21.DBX205.5,從而通過(guò)M110.7激活開(kāi)門的氣閥Q41.0(Network66),同時(shí)Network67在檢測(cè)信號(hào),當(dāng)開(kāi)門信號(hào)到位,關(guān)門信號(hào)脫開(kāi)時(shí),把1傳送給DB91.DBB80。
再通過(guò)如圖2所示的PLC,用OB1調(diào)用FC21把DB91.DBB0開(kāi)始的200個(gè)字節(jié),都寫入$A_DBB[0]開(kāi)始的200個(gè)字節(jié)里。這樣就實(shí)現(xiàn)了$A_DBB[80]能夠檢測(cè)開(kāi)門信號(hào)有沒(méi)到位的功能了。
該M指令的接口信號(hào)地址類型和塊編號(hào)功能由OEM廠家自行定義,它和PLC地址沒(méi)有標(biāo)準(zhǔn)對(duì)應(yīng)關(guān)系,如M99=125實(shí)現(xiàn)開(kāi)門動(dòng)作,PLC編寫如下:
A(
L 99L
DB21.DBW68 ==D)
//比較讀入的M靜態(tài)指令是不
M99
A(L 125 L DB21.DBD70==D)
//比較讀入的是不是125
A DB21.DBX58.0
S DBxx.DBXxx.x //確定了執(zhí)行的M99=125后驅(qū)動(dòng)某個(gè)地址
圖1
圖2
在NC通道執(zhí)行時(shí)99被存入DB21.DBW68的地址中,該變量定義為整形變量。在執(zhí)行時(shí)將125存入DB21.DBD70的地址中,該變量定義為實(shí)數(shù)變量。還有關(guān)鍵信號(hào)DB21.DBX58.0,該變量在M功能代碼改變時(shí)跳變,信號(hào)保持一個(gè)PLC周期,可以用它鎖存M功能代碼讀取瞬間的代碼數(shù)值,以保證存入數(shù)據(jù)不出錯(cuò)。當(dāng)NC讀入的程序段執(zhí)行M99=125時(shí)激活最后的DBxx.DBXxx.x地址,然后通過(guò)這個(gè)地址可以做后續(xù)的邏輯編寫,比如驅(qū)動(dòng)開(kāi)門,再做開(kāi)門信號(hào)的檢測(cè)等等。
以上為方便理解,只是簡(jiǎn)單寫出了主要的原理和思路,真正運(yùn)用時(shí)還需要考慮轉(zhuǎn)換數(shù)據(jù)類型等,部分比較值肯定用索引地址和間接指針尋址代入減少代碼使用,邏輯保護(hù)也要加強(qiáng)很多。
[1] 熊熙. 數(shù)控加工實(shí)訓(xùn)教程 [M]. 北京:化學(xué)工業(yè)出版社,2003.
[2] 王愛(ài)玲,武文革,辛志杰,等.現(xiàn)代數(shù)控機(jī)床 [M]. 北京:國(guó)防工業(yè)出版社,2009.
[3] 邱言龍,李文菱. 數(shù)控機(jī)床維修技術(shù) [M]. 北京:中國(guó)電力出版社,2014.