|
|
西門子300模塊6ES7332-5HD01-0AB0
西門子300模塊6ES7332-5HD01-0AB0
在用戶程序中,我們可以把完成某個功能的代碼,保存成一個“塊”,稱為“功能塊(Function Block,FB)”或“功能(Function,FC)”。“功能塊(FB)”和“功能(FC)”都是能完成某種特定功能的代碼的集合,是一個子程序。它們的不同之處在于:“功能塊(FB)”需要有特定的數據塊(Data Block,DB)來保存靜態變量;而“功能(FC)”沒有靜態變量,因此不需要特定的數據塊。
“功能塊(FB)”所需要的特定的數據塊(DB),被稱為背景數據塊(Instance Data Block)。背景數據塊的屬性是私有的,它只能被它所屬的功能塊(FB)訪問。
與背景數據塊相對應的另一種數據塊,是全局數據塊(Global Data Block)。全局數據塊是公有的,可以被所有的“功能塊(FB)”或者“功能(FC)”訪問。
在西門子S7-300/400系列PLC中,程序的運行起始于組織塊OB1。OB1就相當于C語言的Main函數;在S7-200 smart中,更是直接把OB1稱為Main塊。
如果程序比較復雜,還可以把一些常用的功能設計成模塊,以便重復利用。這些小的模塊稱為子程序。
子程序存在于主程序中,操作系統通過調用主程序,就能讓子程序也得到運行。在S7-300/400中,子程序包括FB和FC。
除了主程序接口,PLC還提供中斷程序的接口。比如S7-300/400系列PLC的組織塊OB35(循環中斷)、OB40(硬件中斷)、OB82(診斷中斷)、OB122(IO訪問故障中斷)等等。中斷程序接口中的程序,稱為“中斷處理程序”,中斷處理程序由用戶自己編寫。
PLC在運行的過程中如果檢測到中斷請求,操作系統會暫停當前用戶程序的執行,轉而去尋找中斷程序的接口,以執行相應的中斷處理程序。以S7-300/400為例:當PLC檢測到外圍IO訪問出現故障時,會調用OB122來進行處理。如果此時程序中沒有添加OB122,CPU將會停機;如果添加了OB122但是沒有寫任何代碼(沒有中斷處理程序),CPU將會繼續運行,但是SF燈會亮起,以提示系統存在故障。
中斷的執行是有優先級的,優先級高的中斷會被優先響應;中斷也可以嵌套,這也意味著高優先級的中斷會打斷低優先級的中斷;
從上面描述的主程序接口及中斷程序接口,我們可以看出:操作系統是PLC的大管家,是它控制著用戶程序的執行及中斷的響應。