“四選一”程序是《自學(xué)自會(huì)指令——三菱fx2n編程技術(shù)及應(yīng)用》(莫操君 編著)的一個(gè)試驗(yàn)?zāi)P?,它是?shí)際問題的提煉,描述的是:
給定四個(gè)輸入x0、x1、x2、x3,四個(gè)輸出y0、y1、y2、y3;每個(gè)輸入對(duì)應(yīng)一個(gè)輸出,但每次最多僅允許一個(gè)輸出接通;四個(gè)輸入中,每次僅有一個(gè)接通,才允許有對(duì)應(yīng)輸出。
并且,假定當(dāng)輸入x0~x3全部斷開時(shí),輸出y0~y3保持前一狀態(tài)不變;參見表1。
表1 輸入輸出的一一對(duì)應(yīng)關(guān)系
| 序號(hào) | 輸 入 | 輸 出 | 說 明 | 備 注 |
| 1 | x0 | y0 | x0單個(gè)接通、y0接通 | 輸出y0~y3中,不允許有兩個(gè)或兩個(gè)以上同時(shí)接通 |
| 2 | x1 | y1 | x1單個(gè)接通、y1接通 | |
| 3 | x2 | y2 | x2單個(gè)接通、y2接通 | |
| 4 | x3 | y3 | x3單個(gè)接通、y3接通 |
當(dāng)輸出是、信號(hào)時(shí),雖然在外電路中,可以通過互鎖等連結(jié)方式,來保證輸入信號(hào)的唯一性,但作為plc程序,仍必須考慮信號(hào)的正確與否,以保證在接線錯(cuò)誤、程序調(diào)試時(shí)強(qiáng)制接通元件等情況下,系統(tǒng)能夠正常工作。
所以,對(duì)于該問題的編程思路,可以是:
(1)判斷信號(hào)是否正確;
(2)根據(jù)輸入信號(hào)狀態(tài)決定輸出。
而且假定,當(dāng)先有一個(gè)輸入接通(例如x0)、對(duì)應(yīng)輸出y0接通時(shí),x0不斷開、再接通x1時(shí),輸出狀態(tài)保持不變,即:y0接通、y1~y3斷開。
而為了簡化問題,當(dāng)再次只有一個(gè)輸入接通時(shí),其動(dòng)作情況暫不作要求,可以是立即轉(zhuǎn)換到對(duì)應(yīng)輸出;實(shí)際編程時(shí),可根據(jù)系統(tǒng)情況作出規(guī)定。
1.判別是否只有一個(gè)輸入接通
對(duì)于輸入信號(hào)數(shù)量的判別,《自學(xué)自會(huì)plc指令——三菱fx2n編程技術(shù)及應(yīng)用》(下稱文獻(xiàn)[1])分別用sum、add、for、ld=、inc等指令進(jìn)行了介紹。
按照文獻(xiàn)[1]的思想,試驗(yàn)時(shí)可以尋求一個(gè)問題的不同解法,以熟悉指令和積累編程經(jīng)驗(yàn),故本文試用移位指令來進(jìn)行編程,參見圖1。
圖1程序,當(dāng)x0~x3中,只有一個(gè)接通時(shí),m100接通;而當(dāng)有兩個(gè)或兩個(gè)以上接通時(shí),m20接通,m100斷開。由于本問題,僅需要判斷是否只有一個(gè)輸入接通,而不需要具體數(shù)量,故圖1程序能夠滿足使用要求。
但是對(duì)于圖1的程序,隨著輸入接通個(gè)數(shù)的增加,m11、m12、m13均可以接通。
為了方便使用,如果設(shè)想,當(dāng)只有一個(gè)輸入接通時(shí)、則僅m10接通,而兩個(gè)輸入接通時(shí)、僅m11接通,三個(gè)輸入接通時(shí)、僅m12接通,四個(gè)輸入接通時(shí)、僅m13接通,能否做到呢?為此,試編制一個(gè)程序如圖2所示。
圖2中,為便于試驗(yàn)觀察,特設(shè)定y4~y7作為m10~m13的動(dòng)作指示。手頭沒有plc時(shí),也可以用軟件仿真來驗(yàn)證結(jié)果。
這樣,當(dāng)圖1中的m100接通、或者圖2中的m10接通,就表示輸入信號(hào)正確,允許有對(duì)應(yīng)輸出繼電器接通。
于是,可以進(jìn)行第2步的程序編制了。












