西門(mén)子300模塊6ES7332-5HF00-0AB0
西門(mén)子300模塊6ES7332-5HF00-0AB0
程序比較復(fù)雜,還可以把一些常用的功能設(shè)計(jì)成模塊,以便重復(fù)利用。這些小的模塊稱(chēng)為子程序。
子程序存在于主程序中,操作系統(tǒng)通過(guò)調(diào)用主程序,就能讓子程序也得到運(yùn)行。在S7-300/400中,子程序包括FB和FC。
除了主程序接口,PLC還提供中斷程序的接口。比如S7-300/400系列PLC的組織塊OB35(循環(huán)中斷)、OB40(硬件中斷)、OB82(診斷中斷)、OB122(IO訪(fǎng)問(wèn)故障中斷)等等。中斷程序接口中的程序,稱(chēng)為“中斷處理程序”,中斷處理程序由用戶(hù)自己編寫(xiě)。
PLC在運(yùn)行的過(guò)程中如果檢測(cè)到中斷請(qǐng)求,操作系統(tǒng)會(huì)暫停當(dāng)前用戶(hù)程序的執(zhí)行,轉(zhuǎn)而去尋找中斷程序的接口,以執(zhí)行相應(yīng)的中斷處理程序。以S7-300/400為例:當(dāng)PLC檢測(cè)到外圍IO訪(fǎng)問(wèn)出現(xiàn)故障時(shí),會(huì)調(diào)用OB122來(lái)進(jìn)行處理。如果此時(shí)程序中沒(méi)有添加OB122,CPU將會(huì)停機(jī);如果添加了OB122但是沒(méi)有寫(xiě)任何代碼(沒(méi)有中斷處理程序),CPU將會(huì)繼續(xù)運(yùn)行,但是SF燈會(huì)亮起,以提示系統(tǒng)存在故障。
中斷的執(zhí)行是有優(yōu)先級(jí)的,優(yōu)先級(jí)高的中斷會(huì)被優(yōu)先響應(yīng);中斷也可以嵌套,這也意味著高優(yōu)先級(jí)的中斷會(huì)打斷低優(yōu)先級(jí)的中斷;
從上面描述的主程序接口及中斷程序接口,我們可以看出:操作系統(tǒng)是PLC的大管家,是它控制著用戶(hù)程序的執(zhí)行及中斷的響應(yīng)。
PLC在冷啟動(dòng)或熱啟動(dòng)后,會(huì)執(zhí)行啟動(dòng)掃描。在這個(gè)步驟中,可以對(duì)一些變量進(jìn)行初始化。啟動(dòng)掃描僅在每次啟動(dòng)后執(zhí)行一次,在S7-300/400系列PLC中,OB100(暖啟動(dòng))、OB101(熱啟動(dòng))和OB102(冷啟動(dòng))是用于啟動(dòng)掃描的組織塊。
啟動(dòng)掃描完成后,PLC進(jìn)入循環(huán)掃描的階段。首先進(jìn)行內(nèi)部檢查,然后將外部的數(shù)字量輸入讀到CPU的輸入緩存區(qū)(b image)。這里要注意,僅讀取數(shù)字量輸入信號(hào),不包括模擬量輸入信號(hào)。當(dāng)數(shù)字量輸入信號(hào)的狀態(tài)讀取到輸入緩存區(qū)后,便開(kāi)始執(zhí)行用戶(hù)程序。
在用戶(hù)程序執(zhí)行的過(guò)程中,如果需要數(shù)字量輸入信號(hào),CPU將會(huì)從輸入緩存區(qū)中讀取,而不是到外部設(shè)備去獲取信號(hào)。但是,如果需要模擬量輸入信號(hào),將會(huì)直接到外部模擬量傳感器進(jìn)行讀取。