盡管plc是在繼電器控制系統(tǒng)基礎(chǔ)上產(chǎn)生的,其基本結(jié)構(gòu)又與微型計(jì)算機(jī)大致相同,但是其工作過(guò)程卻與二者有較大差異。plc的工作特點(diǎn)是采用循環(huán)掃描方式,理解和掌握plc的循環(huán)掃描工作方式對(duì)于學(xué)習(xí)plc是十分重要的。
plc一個(gè)循環(huán)掃描工作過(guò)程主要包括cpu自檢、通信處理、讀取輸入、執(zhí)行程序和刷新輸出5個(gè)階段,如圖所示。整個(gè)過(guò)程掃描一次所需的時(shí)間稱為掃描周期。
圖 plc的循環(huán)掃描工作過(guò)程
(1) cpu自檢階段
cpu自檢階段包括cpu自診斷測(cè)試和復(fù)位監(jiān)視定時(shí)器。
在自診斷測(cè)試階段,cpu檢測(cè)plc各模塊的狀態(tài),若出現(xiàn)異常立即進(jìn)行診斷和處理,同時(shí)給出故障信號(hào),點(diǎn)亮cpu面板上的led指示燈。當(dāng)出現(xiàn)致命錯(cuò)誤時(shí),cpu被強(qiáng)制為stop方式,停止執(zhí)行程序。cpu的自診斷測(cè)試將有助于及時(shí)發(fā)現(xiàn)或提前預(yù)報(bào)系統(tǒng)的故障,提高系統(tǒng)的可靠性。
監(jiān)視定時(shí)器又稱看門狗定時(shí)器wdt(watch dog timer),它是cpu內(nèi)部的一個(gè)硬件時(shí)鐘,是為了監(jiān)視plc的每次掃描時(shí)間而設(shè)置的。cpu運(yùn)行前設(shè)定好規(guī)定的掃描時(shí)間,每個(gè)掃描周期都要監(jiān)視掃描時(shí)間是否超過(guò)規(guī)定值。這樣可以避免由于plc在執(zhí)行程序的過(guò)程中進(jìn)入死循環(huán),或者由于plc執(zhí)行非預(yù)定的程序造成系統(tǒng)故障,從而導(dǎo)致系統(tǒng)癱瘓。如果程序運(yùn)行正常,則在每次掃描周期的內(nèi)部處理階段對(duì)wdt進(jìn)行復(fù)位(清零)。如果程序運(yùn)行失常進(jìn)入死循環(huán),則wdt得不到按時(shí)清零而觸發(fā)超時(shí)溢出,cpu將給出報(bào)警信號(hào)或停止工作。采用wdt技術(shù)也是提高系統(tǒng)可靠性的一個(gè)有效措施。
(2)通信處理階段
在通信處理階段,cpu檢查有無(wú)通信任務(wù),如果有則調(diào)用相應(yīng)進(jìn)程,完成與其他設(shè)備(例如,帶微處理器的智能模塊、遠(yuǎn)程i/o接口、編程器、hmi裝置等)的通信處理,并對(duì)通信數(shù)據(jù)做相應(yīng)處理。
(3)讀取輸入
在讀取輸入階段,plc掃描所有輸入端子,并將各輸入端的“通”/“斷”狀態(tài)存入相對(duì)應(yīng)的輸入映像寄存器中,刷新輸入映像寄存器的值。此后,輸入映像寄存器與外界隔離,無(wú)論外設(shè)輸人情況如何變化,輸入映像寄存器的內(nèi)容也不會(huì)改變。輸入端狀態(tài)的變化只能在下一個(gè)循環(huán)掃描周期的讀取輸入階段才被拾取。這樣可以保證在一個(gè)循環(huán)掃描周期內(nèi)使用相同的輸入信號(hào)狀態(tài)。因此,要注意輸入信號(hào)的寬度要大于一個(gè)掃描周期,否則很可能造成信號(hào)的丟失。
(4)執(zhí)行程序階段
可編程控制器的用戶程序由若干條指令組成,指令在存儲(chǔ)器中按順序排列。當(dāng)plc處于運(yùn)行模式執(zhí)行程序時(shí),cpu對(duì)用戶程序按順序進(jìn)行掃描。如果程序用梯形圖表示,則按先上后下、從左至右的順序逐條執(zhí)行程序指令。每掃描到一條指令,所需要的輸入信號(hào)的狀態(tài)均從輸入映像寄存器中讀取,而不是直接使用現(xiàn)場(chǎng)輸入端子的“通”/“斷”狀態(tài)。在執(zhí)行用戶程序過(guò)程中,根據(jù)指令做相應(yīng)的運(yùn)算或處理,每一次運(yùn)算的結(jié)果不是直接送到輸出端子立即驅(qū)動(dòng)外部負(fù)載,而是將結(jié)果先寫(xiě)入輸出映像寄存器中。輸出映像寄存器中的值可以被后面的讀指令所使用。
(5)刷新輸出階段
執(zhí)行完用戶程序后,進(jìn)入刷新輸出階段??删幊炭刂破鲗⑤敵鲇诚窦拇嫫髦械摹巴ā?“斷”狀態(tài)送到輸出鎖存器中,通過(guò)輸出端子驅(qū)動(dòng)用戶輸出設(shè)備或負(fù)載,實(shí)現(xiàn)控制功能。輸出鎖存器的值一直保持到下次刷新輸出。
在刷新輸出階段結(jié)束后,cpu進(jìn)入下一個(gè)循環(huán)掃描周期。