西門子300模塊6ES7332-5HD01-0AB0
西門子300模塊6ES7332-5HD01-0AB0
在用戶程序中,我們可以把完成某個(gè)功能的代碼,保存成一個(gè)“塊”,稱為“功能塊(Function Block,F(xiàn)B)”或“功能(Function,F(xiàn)C)”。“功能塊(FB)”和“功能(FC)”都是能完成某種特定功能的代碼的集合,是一個(gè)子程序。它們的不同之處在于:“功能塊(FB)”需要有特定的數(shù)據(jù)塊(Data Block,DB)來保存靜態(tài)變量;而“功能(FC)”沒有靜態(tài)變量,因此不需要特定的數(shù)據(jù)塊。
“功能塊(FB)”所需要的特定的數(shù)據(jù)塊(DB),被稱為背景數(shù)據(jù)塊(Instance Data Block)。背景數(shù)據(jù)塊的屬性是私有的,它只能被它所屬的功能塊(FB)訪問。
與背景數(shù)據(jù)塊相對(duì)應(yīng)的另一種數(shù)據(jù)塊,是全局?jǐn)?shù)據(jù)塊(Global Data Block)。全局?jǐn)?shù)據(jù)塊是公有的,可以被所有的“功能塊(FB)”或者“功能(FC)”訪問。
在西門子S7-300/400系列PLC中,程序的運(yùn)行起始于組織塊OB1。OB1就相當(dāng)于C語言的Main函數(shù);在S7-200 smart中,更是直接把OB1稱為Main塊。
如果程序比較復(fù)雜,還可以把一些常用的功能設(shè)計(jì)成模塊,以便重復(fù)利用。這些小的模塊稱為子程序。
子程序存在于主程序中,操作系統(tǒng)通過調(diào)用主程序,就能讓子程序也得到運(yùn)行。在S7-300/400中,子程序包括FB和FC。
除了主程序接口,PLC還提供中斷程序的接口。比如S7-300/400系列PLC的組織塊OB35(循環(huán)中斷)、OB40(硬件中斷)、OB82(診斷中斷)、OB122(IO訪問故障中斷)等等。中斷程序接口中的程序,稱為“中斷處理程序”,中斷處理程序由用戶自己編寫。
PLC在運(yùn)行的過程中如果檢測(cè)到中斷請(qǐng)求,操作系統(tǒng)會(huì)暫停當(dāng)前用戶程序的執(zhí)行,轉(zhuǎn)而去尋找中斷程序的接口,以執(zhí)行相應(yīng)的中斷處理程序。以S7-300/400為例:當(dāng)PLC檢測(cè)到外圍IO訪問出現(xiàn)故障時(shí),會(huì)調(diào)用OB122來進(jìn)行處理。如果此時(shí)程序中沒有添加OB122,CPU將會(huì)停機(jī);如果添加了OB122但是沒有寫任何代碼(沒有中斷處理程序),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的大管家,是它控制著用戶程序的執(zhí)行及中斷的響應(yīng)。