1.概述
隊(duì)列是來自數(shù)據(jù)結(jié)構(gòu)的一個(gè)概念,即數(shù)據(jù)的處理是按照先進(jìn)先出(fifo)原則執(zhí)行,在plc的控制程序中有時(shí)也會(huì)用這種方法。
在一條生產(chǎn)線上的顆粒狀物料輸送設(shè)備中,有四路物料輸送管線,但抽取物料的羅茨泵只有一臺(tái),因此在任意時(shí)刻只能有一條物料輸送管線工作,如果在這條管線工作時(shí),其它物料管線有工作請(qǐng)求,只能排隊(duì)等待,在有等待狀況發(fā)生時(shí)的plc程序的控制,是一個(gè)典型的隊(duì)列應(yīng)用。
2 在施耐德twido系列plc中的實(shí)現(xiàn)方法
在twido plc中有現(xiàn)成的寄存器功能塊可以配置成隊(duì)列(fifo)工作方式,最初也正是用這種方式編寫的plc的控制程序,程序的幾處關(guān)鍵請(qǐng)看下面幾個(gè)程序段圖。
在程序調(diào)試階段,設(shè)備工作一切正常。但設(shè)備在實(shí)際運(yùn)行中,總是會(huì)在1~3天內(nèi)發(fā)生1到2個(gè)物料輸送管線的請(qǐng)求不被執(zhí)行而始終處于等待狀態(tài),只有斷電后重新啟動(dòng)設(shè)備才能恢復(fù)正常工作。隨后又仔細(xì)分析了twido plc的寄存器(隊(duì)列模式)功能塊,發(fā)現(xiàn)使用它時(shí)必須保證四路物料輸送管線的請(qǐng)求在任意時(shí)刻不能同時(shí)有兩個(gè)請(qǐng)求發(fā)生,否則就會(huì)出現(xiàn)上面的問題,而實(shí)際工作中,兩個(gè)或兩個(gè)以上的請(qǐng)求同時(shí)(plc的一個(gè)掃描周期,大約在10ms之內(nèi))發(fā)生的機(jī)率確實(shí)存在,正是這種不定期發(fā)生的同時(shí)出現(xiàn)的請(qǐng)求,使設(shè)備不定期地出現(xiàn)物料輸送管線的不正常工作。
找到原因后,在改寫plc程序時(shí)發(fā)現(xiàn),如果加上處理同時(shí)發(fā)生的幾個(gè)請(qǐng)求的程序,使得使用twido所提供的寄存器(隊(duì)列模式)功能塊的程序可能會(huì)更加復(fù)雜,于是決定不使用這個(gè)功能,用常規(guī)編程來完成控制要求。
在程序需要重點(diǎn)考慮的就是這種多路物料輸送管線同時(shí)發(fā)生請(qǐng)求的情況。在程序中將每一個(gè)請(qǐng)求用自鎖回路保持住,然后將鎖定的信號(hào)驅(qū)動(dòng)一個(gè)定時(shí)器,對(duì)請(qǐng)求的執(zhí)行是通過比較幾個(gè)定時(shí)器的當(dāng)前值大小來決定那一路物料輸送管線動(dòng)作。
在程序中編寫下面四個(gè)類似的程序段:
實(shí)現(xiàn)請(qǐng)求的判斷:
請(qǐng)求處理:
在請(qǐng)求處理程序段中已經(jīng)包含如果有同時(shí)發(fā)生的請(qǐng)求時(shí),按照1->2->3->4的默認(rèn)動(dòng)作順序來決定優(yōu)先順序。
在使用改進(jìn)后隊(duì)列處理程序后,該設(shè)備運(yùn)行約兩年,一直工作正常,再?zèng)]出現(xiàn)過某路物料輸送管線的請(qǐng)求不被執(zhí)行的情況。
在這個(gè)案例中,說明有些情況下,使用plc所提供的功能并不一定是最佳的解決方式,此時(shí),不妨考慮一下?lián)Q一個(gè)實(shí)現(xiàn)思路的可能性。