plc可以分為輸入部分、邏輯部分和輸出部分組成
輸入部分:它收集并保存被控對(duì)象實(shí)際運(yùn)行的數(shù)據(jù)和信息。例如,它收集來(lái)自被控制對(duì)象上的各種開關(guān)信息或操作臺(tái)上的操作命令等。
邏輯部分:處理輸入部分所取得的信息,并按照被控對(duì)象實(shí)際的動(dòng)作要求作出反映。
輸出部分:提供正在被控制的許多裝置中,哪幾個(gè)設(shè)備需要實(shí)時(shí)操作處理。
1.plc工作過(guò)程
plc采用循環(huán)掃描工作方式,這種工作方式與其他微機(jī)工作方式有很大區(qū)別。微機(jī)控制采用等待命令的工作方式,如常見的鍵盤掃描方式或i/o掃描方式,有鍵按下或i/o動(dòng)作則轉(zhuǎn)入相應(yīng)的子程序,無(wú)輸入則繼續(xù)掃描。
1.1plc的掃描周期
可編程控制器的工作過(guò)程包括兩部分:自診斷及通信響應(yīng)的固定過(guò)程和用戶程序執(zhí)行過(guò)程,如圖5-1所示。plc在每次執(zhí)行用戶程序之前,都先執(zhí)行故障自診斷程序、復(fù)位、監(jiān)視、定時(shí)等內(nèi)部固定程序,若自診斷正常,繼續(xù)向下掃描,然后plc檢查是否有與編程器、計(jì)算機(jī)等的通信請(qǐng)求。如果有與計(jì)算機(jī)等的通信請(qǐng)求,則進(jìn)行相應(yīng)處理。當(dāng)plc處于停止(stop)狀態(tài)時(shí),只循環(huán)進(jìn)行前兩個(gè)過(guò)程。而在plc處于運(yùn)行(run)狀態(tài)時(shí),plc從內(nèi)部處理、通信操作、輸入掃描、執(zhí)行用戶程序、輸出刷新五個(gè)工作階段循環(huán)工作。每完成一次以上五個(gè)階段所需要的時(shí)間稱為一個(gè)掃描周期。
掃描周期是plc的一個(gè)重要指標(biāo),小型plc的掃描周期一般為十幾毫秒到幾十毫秒。plc的掃描周期長(zhǎng)短取決于掃描速度和用戶程序的長(zhǎng)短。毫秒級(jí)的掃描時(shí)間對(duì)于一般工業(yè)設(shè)備通常是允許的,plc對(duì)輸入的短暫滯后也是允許的。但對(duì)某些i/o快速響應(yīng)的設(shè)備,則應(yīng)采取相應(yīng)的處理措施。如選擇高速cpu,提高掃描速度;選擇快速響應(yīng)模塊、高速計(jì)數(shù)模塊以及不同的中斷處理等措施減少滯后時(shí)間。對(duì)于用戶來(lái)說(shuō),要提高編程能力,盡可能優(yōu)化程序;而在編寫大型設(shè)備的控制程序時(shí),盡量減少程序長(zhǎng)度,選擇分支或跳步程序等,都可以減少用戶程序執(zhí)行時(shí)間。
1.2plc的用戶程序執(zhí)行過(guò)程
對(duì)于用戶來(lái)說(shuō),在編寫用戶程序或選擇設(shè)備時(shí),必須清楚下面介紹的三個(gè)階段,即用戶程序執(zhí)行過(guò)程的原理。
plc采用集中處理的方法,即對(duì)輸入掃描信號(hào)、執(zhí)行用戶程序和輸出刷新都采用集中分批處理的工作方式。
(1)輸入掃描 在這一階段中,plc以掃描方式讀入所有輸入端子上的輸入信號(hào),并將輸入信號(hào)存入輸入映像區(qū),輸入映像存儲(chǔ)器被刷新。在程序執(zhí)行階段和輸出刷新階段中,輸入映像存儲(chǔ)器與外界隔離,其內(nèi)容保持不變,直至下一個(gè)掃描周期的輸入掃描階段,才被重新讀入的輸入信號(hào)刷新??梢?,plc在執(zhí)行程序和處理數(shù)據(jù)時(shí),不直接使用現(xiàn)場(chǎng)當(dāng)時(shí)的輸入信號(hào),而使用本次采樣時(shí)輸入到映像區(qū)中的數(shù)據(jù)。如果輸入設(shè)備能使plc輸入端形成閉合回路,對(duì)應(yīng)輸入端編號(hào)的內(nèi)部輸入繼電器內(nèi)保存為”1”,即相當(dāng)于繼電器線圈導(dǎo)通。在程序執(zhí)行過(guò)程中,該編號(hào)對(duì)應(yīng)的觸點(diǎn)動(dòng)作;如果輸入設(shè)備能使輸入開路,則對(duì)應(yīng)輸入端編號(hào)的內(nèi)部輸入繼電器內(nèi)保存為”0”,即相當(dāng)于繼電器線圈沒(méi)導(dǎo)通,在程序執(zhí)行過(guò)程中,該編號(hào)對(duì)應(yīng)的觸點(diǎn)不動(dòng)作。如果在plc處于非輸入掃描的階段,plc外的輸入設(shè)備狀態(tài)發(fā)生了變化,內(nèi)部輸入繼電器也不會(huì)發(fā)生變化,要等到下一個(gè)輸入掃描階段才能根據(jù)此時(shí)的輸入狀態(tài)來(lái)刷新。所以,對(duì)于少于十幾毫秒的輸入信號(hào),經(jīng)常采集不到。
(2)執(zhí)行程序 在執(zhí)行用戶程序過(guò)程中,plc按梯形圖程序順序自上而下、從左至右逐個(gè)掃描執(zhí)行,即按助記符指令表的先后順序執(zhí)行。但遇到程序跳轉(zhuǎn)指令,則根據(jù)跳轉(zhuǎn)條件是否滿足來(lái)決定程序跳轉(zhuǎn)地址。程序執(zhí)行過(guò)程中,plc從輸入映像區(qū)中取出輸入變量的當(dāng)前狀態(tài),然后進(jìn)行由程序確定的邏輯運(yùn)算或其他運(yùn)算,根據(jù)程序指令將運(yùn)算結(jié)果存入相應(yīng)的內(nèi)部繼電器中,包括輸出繼電器、內(nèi)部輔助繼電器、定時(shí)器、計(jì)數(shù)器等。輸出繼電器的信號(hào)存放在輸出映像區(qū),即輸出繼電器與plc外部的同編號(hào)的輸出點(diǎn)對(duì)應(yīng)。
在程序執(zhí)行過(guò)程中,同一周期內(nèi),前面的邏輯結(jié)果影響后面的觸點(diǎn),即后執(zhí)行的程序可能用到前面的最新中間運(yùn)算結(jié)果;但同一周期內(nèi),后面的運(yùn)算結(jié)果不影響前面的邏輯關(guān)系。該掃描周期內(nèi)除輸入繼電器以外的所有內(nèi)部繼電器的最終狀態(tài)(導(dǎo)通與否),將影響下一個(gè)掃描周期各觸點(diǎn)的開與閉。
(3)輸出刷新 程序執(zhí)行階段的運(yùn)算結(jié)果被存入輸出映像區(qū),而不送到輸出端口上。在輸出刷新階段,plc將輸出映像區(qū)中的輸出變量送入輸出鎖存器,然后由鎖存器通過(guò)輸出模塊產(chǎn)生本周期的控制輸出。如果內(nèi)部輸出繼電器的狀態(tài)為”1”,則輸出繼電器觸點(diǎn)閉合。全部輸出設(shè)備的狀態(tài)要保持一個(gè)掃描周期。
2.plc工作過(guò)程舉例
下面以具體實(shí)例分析plc控制過(guò)程。
【例1】指示燈控制
圖5-2為plc接線圖,圖5-3為控制梯形圖。圖5-4描述了每個(gè)掃描周期程序的執(zhí)行過(guò)程。按鈕sb2雖然在程序中沒(méi)有使用,但其狀態(tài)仍影響其對(duì)應(yīng)編號(hào)的內(nèi)部輸入繼電器的狀態(tài)。圖(a)中,①輸入掃描過(guò)程,將兩個(gè)按鈕的狀態(tài)掃描后,存入其映像區(qū),由于sb2是停止按鈕,所以,即使沒(méi)有按下,其輸入回路也是閉合的,因此,x1存“1”(on狀態(tài)),而其它位存“0”(off狀態(tài))。②執(zhí)行程序過(guò)程,程序根據(jù)所用到觸點(diǎn)的編號(hào)對(duì)應(yīng)的內(nèi)部繼電器狀態(tài)來(lái)運(yùn)算。由于x0處于off狀態(tài),因此,對(duì)應(yīng)的動(dòng)合觸點(diǎn)處于斷開狀態(tài),運(yùn)算結(jié)果是y0、y1處于off狀態(tài),其結(jié)果存入輸出映像區(qū),即y0、y1存“0”。③輸出刷新過(guò)程,根據(jù)映像區(qū)各位的狀態(tài)驅(qū)動(dòng)輸出設(shè)備,由于輸出映像區(qū)均為off狀態(tài),所以,輸出指示燈不能形成閉合回路,燈不亮。如果輸入不發(fā)生變化,內(nèi)部繼電器的狀態(tài)均不發(fā)生變化。圖(b)中,按下sb1按鈕后,x0輸入回路閉合。①輸入掃描將輸入狀態(tài)存入其映像區(qū),x0、x1均存“1”。②執(zhí)行程序過(guò)程,按照從左到右,從上到下的原則,逐條執(zhí)行。第一行,x0觸點(diǎn)閉合,但此時(shí),y1的狀態(tài)為“0”,因此,y1觸點(diǎn)為斷開狀態(tài),y0沒(méi)能導(dǎo)通,其狀態(tài)為“0”。第二行,x0觸點(diǎn)閉合,所以,y1的狀態(tài)為“1”。③輸出刷新過(guò)程,由于y1呈導(dǎo)通狀態(tài),燈2亮。
圖(c)為按下sb1按鈕后的第二個(gè)掃描周期。①輸入掃描,由于輸入狀態(tài)不變,輸入映像區(qū)不變。②執(zhí)行程序過(guò)程,第一行,x0觸點(diǎn)閉合,由于上一個(gè)周期中,y1為on狀態(tài),因此,y1觸點(diǎn)也閉合,y0也呈導(dǎo)通狀態(tài);第二行,y1還呈導(dǎo)通狀態(tài)。y0、y1的狀態(tài)均為”1”。③輸出刷新過(guò)程,兩個(gè)燈都亮。注意:由于plc的掃描周期很短,我們用肉眼見到的現(xiàn)象可能是兩燈同時(shí)亮。如果按鈕沒(méi)有變化,內(nèi)部繼電器、輸出設(shè)備狀態(tài)均無(wú)變化。
圖(d)為松開sb1按鈕后的第一個(gè)掃描周期。①輸入掃描使輸入映像區(qū)的x0存”0”、 x1存”1”。②執(zhí)行程序過(guò)程,x0觸點(diǎn)斷開, y1由于上個(gè)周期被置”1”,因此,y1觸點(diǎn)為閉合狀態(tài)。③輸出刷新過(guò)程,由于x0觸點(diǎn)的斷開,y0 、y1都呈斷開狀態(tài)。
【例2】定時(shí)計(jì)數(shù)
本例無(wú)實(shí)際意義,但非常有利于分析程序執(zhí)行過(guò)程。系統(tǒng)輸入端只需接一個(gè)按鈕,無(wú)輸出,參考圖5-2,只接x0。分析圖5-5中,(a)、(b)、(c)三種情況下,觀察計(jì)數(shù)器的當(dāng)前值,分析程序執(zhí)行過(guò)程。
程序中m8011為特殊輔助繼電器,只要plc處于運(yùn)行狀態(tài),將不停發(fā)出10ms的脈沖信號(hào)(5ms通、5ms斷)。程序中t0為1s定時(shí),x0閉合后1s,t0導(dǎo)通。c0為增計(jì)數(shù)器,在x0閉合、t0沒(méi)有閉合的前提下,記錄m8011發(fā)出的脈沖個(gè)數(shù)。理論上,在t0導(dǎo)通,c0計(jì)數(shù)器停止計(jì)數(shù)時(shí),計(jì)數(shù)器的當(dāng)前值應(yīng)為100個(gè)(1s/10ms=100個(gè)脈沖)。三段程序中,只是改變了執(zhí)行的前后位置,但結(jié)果卻不同。結(jié)合對(duì)應(yīng)的時(shí)序圖分析其原因。