西門子 S7-300/400PLC編程之程序塊的類型及區別

在SIEMENS S7-300/400系列PLC中有多種程序塊,主要有:組織塊(OB),功能塊(FB),功能(FC),數據塊(DB)及系統功能(SFC)和系統功能塊(SFB)等。

西門子 S7-300/400PLC編程之程序塊的類型及區別

注:快捷菜單中的其它兩項:數據類型和變量表。數據類型(UDT)用於指定程序中數據元素的大小與格式;變量表(VAT)用來在程序調試和運行時修改和監視變量的內容(在地址欄中輸入地址後,符號欄中會自動顯示在符號表中定義的符號)。

這幾種程序塊的功能簡要說明如下:

說明:

調用程序塊:OB,FB,FC(可以調用除OB塊外的其它程序塊);

被調用程序塊:FB,FC,SFB,SFC。

1組織塊OB

OB由系統自動調用,並執行用戶在OB塊中編寫的程序,所以OB的基本作用是調用用戶程序。在OB塊中編寫程序的最大容量,S7-300是16KB,S7-400是64KB。除主程序循環OB1外,其它OB均是由事件觸發的中斷。

西門子 S7-300/400PLC編程之程序塊的類型及區別

2函數FC

函數FC有兩個作用:

(1)作為子程序用;

(2)作為函數用,函數中通常帶形參。

函數中程序的最大容量,S7-300是16KB,S7-400是64KB。

FC的形參通常也稱為接口區,參數類型分為輸入參數,輸出參數,輸入/輸出參數和臨時數據區。

在編寫函數FC的輸出參數時,應避免沒有直接輸出(否則,可能輸出一個隨機值,影響程序的判斷)。可以在函數的開始,將字輸出參數清0,位輸出參數復位。

3函數塊FB

FB與FC相比,FB每次調用都必須分配一個背景數據塊,用來存儲接口數據區(TEMP類型除外)和運算的中間數據。其它程序可以直接使用背景數據區中的數據。

FB中程序的最大容量,S7-300是16KB,S7-400是64KB。

FB的接口區比FC多了一個靜態數據區(STAT),用來存儲中間變量。

程序調用FB時,形參不像FC那樣必須賦值,可以通過背景數據塊直接賦值。

由於FB帶有背景數據塊,輸出參數不會輸出隨機值,可以不在FB中編寫初始化程序。

4數據塊DB

DB用來存儲用戶數據及程序的中間變量,為全局變量。DB的最大容量,S7-300為32KB,S7-400為64KB。

DB可分為共享數據塊(Share DB)、背景數據塊(Instance DB)和用戶自定義數據(UDT)類型的數據塊。

★ 共享數據塊可作為所有程序使用的全局變量,在CPU允許的條件下,一個程序可創建任意多個DB,每個DB的最大容量為64KB。默認條件下,共享數據塊為掉電保持,在其屬性菜單中選中“Non Retain”可以更改為掉電數據丟失。如CPU中無足夠的內部存儲空間保存數據,可將指定的數據保存到共享數據塊。存儲在共享數據塊中的數據可被其它任意一個塊調用(全局變量)。這一點和背景數據塊不同,背景數據塊只能被指定的功能塊(FB)使用,保存在背景數據塊中的數據只能在這個功能塊中有效。

西門子 S7-300/400PLC編程之程序塊的類型及區別

★ 背景數據塊與FB和SFB關聯,也是全局變量。背景數據塊和共享數據塊相比,只保存與FB或SFB接口數據區(Temp)相關的數據。背景數據塊中有一種比較特殊的數據塊,稱為多重背景數據塊。有關多重背景數據塊的用法和使用注意事項請參看《怎樣使用多重背景數據塊》。

★ 基於UDT的數據塊為全局變量,提供一個固定格式的數據結構,便於用戶使用。

5系統函數(SFC)和系統函數塊(SFB)

SFC和SFB集成在CPU中,相當於系統提供的可供用戶程序調用的FC或FB,實現與CPU系統相關的一些功能,如讀寫CPU時鐘等功能。調用SFB需要背景數據塊。


分享到:


相關文章: