一、引言:PLC可編程序控制器,是一種工業(yè)上廣泛應(yīng)用的通用控制器,但是在應(yīng)用實(shí)踐中,不少情況是應(yīng)用的要求,略為超出了PLC的資源,通常是IO端口的不匹配,zui遺憾的是,有時(shí)只差1、2個(gè)端口,就要選購大一級點(diǎn)數(shù)規(guī)格的PLC,所以很多學(xué)者研究了不增加成本的情況下擴(kuò)展IO端口的方法。但AB兩相高速計(jì)數(shù)器不夠用而擴(kuò)展的,恐怕大多數(shù)人認(rèn)為,只能購買昂貴的高速計(jì)數(shù)器特殊模塊了。但如果滿足特定條件時(shí),也可以用PLC基本單元作少量增加,以下以三菱FX系列PLC基本單元為例擴(kuò)展1路AB相高速計(jì)數(shù)器。
二、問題背景:某機(jī)械設(shè)備設(shè)計(jì)制造公司要設(shè)計(jì)制造一種液壓機(jī)械,機(jī)器需要用到3把AB相光柵尺,其中1把連接到液壓缸驅(qū)動(dòng)的進(jìn)給機(jī)構(gòu),以作為定位之用,運(yùn)動(dòng)速度高;另外2把連接到一個(gè)平面上的X軸、Y軸兩個(gè)方向的調(diào)節(jié)機(jī)構(gòu),該2個(gè)調(diào)節(jié)機(jī)構(gòu)進(jìn)給速度相對前者稍慢。公司計(jì)劃采用三菱FX1N系列PLC基本單元作為控制器,由于三菱FX1N系列PLC基本單元zui多只能同時(shí)接入2個(gè)AB相高速計(jì)數(shù)器,于是將其分配接入2把AB相光柵尺,完成X軸、Y軸調(diào)節(jié)機(jī)構(gòu)的功能,另購置1個(gè)高速計(jì)數(shù)器特殊功能模塊,完成進(jìn)給機(jī)構(gòu)高速定位功能。但是,PLC特殊功能模塊的價(jià)格是比較昂貴的,如果機(jī)器的生產(chǎn)數(shù)量是比較多的話,就削弱了產(chǎn)品的競爭力。
三、FX1N系列PLC內(nèi)部高速計(jì)數(shù)器和外部中斷簡介:
內(nèi)部21點(diǎn)高速計(jì)數(shù)器C235—C255共用PLC特定的8個(gè)輸入端X0—X7,某一高速計(jì)數(shù)器輸入端都有其對應(yīng)的輸入端口,不同類型的高速計(jì)數(shù)器可以同時(shí)使用,但是它們的輸入端不能沖突。其中AB相高速計(jì)數(shù)器與端口的對應(yīng)關(guān)系如表—1:
端口 | AB相高速計(jì)數(shù)器 |
C251 | C252 | C253 | C254 | C255 |
X000 | A | A | A |
X001 | B | B | B |
X002 | R | R |
X003 | A | A |
X004 | B | B |
X005 | R | R |
X006 | S |
X007 | S |
因此,zui多只能同時(shí)使用2個(gè)AB相高速計(jì)數(shù)器。
FX1N系列PLC有6個(gè)外部中斷輸入端X0—X5,分別對應(yīng)中斷指針I(yè)□0□,同一輸入中斷源只能使用上升沿觸發(fā)或下降沿觸發(fā),不能同時(shí)是上升沿和下降沿觸發(fā)。用于中斷的輸入點(diǎn)不能與已經(jīng)用于高速計(jì)數(shù)器的輸入點(diǎn)沖突。
四、問題的解決:回到問題的背景,如何可以在不改變硬件和增加成本的情況下,使FX1N基本單元具有3路AB相高速計(jì)數(shù)器功能呢?答案是,用PLC本身的中斷機(jī)制。經(jīng)過核算,3個(gè)光柵尺產(chǎn)生的脈沖頻率,都在三菱FX1N系列PLC中斷所能處理的頻率之內(nèi)。
使用PLC內(nèi)部高速計(jì)數(shù)器C251,對應(yīng)端子X0、X1,分別連接到由液壓缸驅(qū)動(dòng)的進(jìn)給機(jī)構(gòu)上的光柵尺的AB相;X軸定位機(jī)構(gòu)上的光柵尺AB相分別連接到PLC端子X2、X3,Y軸定位機(jī)構(gòu)上的光柵尺AB相分別連接到PLC端子X4、X5。3把光柵尺讀數(shù)的復(fù)位或清除,由其他端子控制。
以下是AB相光柵尺的時(shí)序,如圖:
定義X2、X3端子為脈沖上升沿中斷觸發(fā)方式,則其數(shù)字濾波器時(shí)間自動(dòng)設(shè)置為0(不含RC濾波器時(shí)間常數(shù))。當(dāng)光柵尺正方向運(yùn)動(dòng)時(shí),在t1時(shí)刻,X2產(chǎn)生脈沖上升沿中斷,此時(shí)中斷程序刷新X3的輸入映像寄存器、如果檢測X3到是OFF,則中斷程序?qū)LC內(nèi)部繼電器M1置位,表示A相超前B相,光柵尺正向移動(dòng)。光柵尺繼續(xù)移動(dòng),到達(dá)時(shí)刻t2,X3產(chǎn)生脈沖上升沿中斷,該中斷服務(wù)程序檢測M1,如果M1=1,則對PLC內(nèi)部數(shù)據(jù)寄存器D1加1,然后復(fù)位M1。
當(dāng)光柵尺反方向運(yùn)動(dòng)時(shí),在t4時(shí)刻,X3產(chǎn)生脈沖上升沿中斷,此時(shí)中斷程序刷新X2的輸入映像寄存器、如果檢測到X2是OFF,則中斷程序?qū)LC內(nèi)部繼電器M2置位,表示B相超前A相,光柵尺反向移動(dòng)。光柵尺繼續(xù)移動(dòng),到達(dá)時(shí)刻t3,X2產(chǎn)生脈沖上升沿中斷,該中斷服務(wù)程序檢測M2,如果M2=1,則對數(shù)據(jù)寄存器D1減1,然后復(fù)位M2。
數(shù)據(jù)寄存器D1的值就是這個(gè)由中斷機(jī)制構(gòu)造出來的高速計(jì)數(shù)器的當(dāng)前值。
語句表:
EI //開中斷
………
I201 LD M8000
REF X0 K8 //刷新X0—X7輸入映像寄存器
LDI X3 // 讀X3實(shí)時(shí)值,如果是OFF
SET M1 //置位M1
LD M2
SUB D0 K1 D0
RST M2
IRET
I301 LD M8000
REF X0 K8
LDI X2
SET M2
LD M1
ADD D0 K1 D0
RST M1
IRET
END
為什么不只使用X2上升沿中斷,直接讀取X3輸入映像,根據(jù)X3輸入映像,判斷光柵尺運(yùn)動(dòng)方向,從而對D1進(jìn)行加減?如果這樣,當(dāng)光柵尺停在t1點(diǎn)所對應(yīng)位置附近時(shí),如果連接光柵尺的機(jī)構(gòu)沒有減震的措施,很容易受到機(jī)器運(yùn)行的震動(dòng)影響在該點(diǎn)來回抖動(dòng),這時(shí)將不斷產(chǎn)生X2上升沿中斷。
五、結(jié)語
外部端口中斷的使用是很靈活的,還可以實(shí)現(xiàn)很多功能,例如捕獲窄脈沖信號、計(jì)算脈沖寬度、實(shí)現(xiàn)高精度定時(shí)器,甚至可以實(shí)現(xiàn)簡單的串行通信功能。