硬件和軟件結(jié)合I/O點(diǎn)擴(kuò)展方法 4.1 硬件編碼和軟件譯碼,擴(kuò)展輸入點(diǎn)
在控制系統(tǒng)輸入信號(hào)較多的情況下,可以利用編碼器對輸入信號(hào)編碼,然后引到PLC的輸入端,再通過PLC內(nèi)部程序配合進(jìn)行譯碼,對各個(gè)輸入信號(hào)加以識(shí)別,可以大大減少對輸入點(diǎn)的占用。PLC的外部接線如圖5所示。由于普通編碼器在有多個(gè)信號(hào)同時(shí)輸入時(shí)會(huì)出現(xiàn)亂碼,故可采用8線-3線優(yōu)先編碼器74LS148,設(shè)定好信號(hào)的優(yōu)先權(quán),有時(shí)還要將編碼器的選通輸出端和擴(kuò)展端也接入PLC中,配合程序減少誤判斷。另外,還要注意的是電平的匹配問題(信號(hào)電路的+5V和PLC的+24V之間)以及PLC的輸入口對信號(hào)識(shí)別所要求的技術(shù)規(guī)范(驅(qū)動(dòng)電流和電壓能識(shí)別的范圍),有時(shí)還需增加適當(dāng)?shù)男盘?hào)放大和隔離電路。
圖5 硬件編碼接線圖
下面以按鈕SB2按下為例,說明PLC內(nèi)部軟件譯碼的程序識(shí)別方法。由74LS148的功能表可知,該芯片低電平有效,因此圖5中用3個(gè)非門將輸出電平轉(zhuǎn)換成正邏輯。若SB2按下,無論SB0和SB1是否按下,但SB3~SB7均未按下;此時(shí),ABC的輸出為101,經(jīng)過非門后I0.0,I0.1,I0.2的狀態(tài)分別為0,1,0;對應(yīng)的STL譯碼程序如下。
LDN I0.0
A I0.1
AN I0.2
= M0.2
這樣,筆者在程序里用M0.2的常開觸點(diǎn)代替了按鈕SB2。即當(dāng)按鈕SB2按下,M0.2為1;SB2彈起,M0.2又為0,從而實(shí)現(xiàn)了軟件譯碼的功能。另外需要指出,該方法在PLC的每一個(gè)掃描周期只能讀入8個(gè)輸入中的一個(gè)輸入狀態(tài),若有2個(gè)以上開關(guān)閉合,PLC只能檢測出優(yōu)先權(quán)高的那個(gè)信號(hào)。
4.2 軟件編碼和硬件譯碼,擴(kuò)展輸出點(diǎn)
在控制系統(tǒng)輸出信號(hào)較多的情況下,可以通過PLC的內(nèi)部程序?qū)敵鲂盘?hào)進(jìn)行編碼,然后通過硬件譯碼器進(jìn)行譯碼,驅(qū)動(dòng)負(fù)載工作,這可以大大的減少對輸出點(diǎn)的占用。PLC的外部接線如圖6所示,采用3線-8線譯碼器74LS138。此時(shí),同樣存在電平匹配的問題,即PLC的直流模塊典型輸出為+24V,而信號(hào)電路的工作電壓一般為+5V,因此,有時(shí)同樣需要增加信號(hào)電路以及功率放大電路以驅(qū)動(dòng)負(fù)載工作。