西門子PLC S7-300/400的用戶程序結構與(yu) S7-200有明顯的不同,可以使用線性化結構以及功能調用式結構與(yu) 結構化編程。
采用調用式結構與(yu) 結構化編程時,程序以組織塊(OB)、程序塊(FC)、功能塊(FB)、係統程序塊(SFC)、係統功能塊(SFB)、數據塊(DB)等形式出現,其中,組織塊(OB)、程序塊(FC)、功能塊(FB)統稱為(wei) “邏輯塊(Logic Block)”;係統程序塊(SFC)、係統功能塊(SFB)統稱為(wei) “係統塊”。
注:快捷菜單中的其它兩(liang) 項:數據類型和變量表。數據類型(UDT)用於(yu) 指定程序中數據元素的大小與(yu) 格式;變量表(VAT)用來在程序調試和運行時修改和監視變量的內(nei) 容(在地址欄中輸入地址後,符號欄中會(hui) 自動顯示在符號表中定義(yi) 的符號)。
這幾種程序塊的功能簡要說明如下:
調用程序塊:OB,FB,FC(可以調用除OB塊外的其它程序塊);
被調用程序塊:FB,FC,SFB,SFC。
1、組織塊OB
OB由係統自動調用,並執行用戶在OB塊中編寫(xie) 的程序,所以OB的基本作用是調用用戶程序。在OB塊中編寫(xie) 程序的最大容量,S7-300是16KB,S7-400是64KB。除主程序循環OB1外,其它OB均是由事件觸發的中斷。
2、函數FC
函數FC有兩(liang) 個(ge) 作用:
(1)作為(wei) 子程序用;
(2)作為(wei) 函數用,函數中通常帶形參。
函數中程序的最大容量,S7-300是16KB,S7-400是64KB。
FC的形參通常也稱為(wei) 接口區,參數類型分為(wei) 輸入參數,輸出參數,輸入/輸出參數和臨(lin) 時數據區。
在編寫(xie) 函數FC的輸出參數時,應避免沒有直接輸出(否則,可能輸出一個(ge) 隨機值,影響程序的判斷)。可以在函數的開始,將字輸出參數清0,位輸出參數複位。
3、函數塊FB
FB與(yu) FC相比,FB每次調用都必須分配一個(ge) 背景數據塊,用來存儲(chu) 接口數據區(TEMP類型除外)和運算的中間數據。其它程序可以直接使用背景數據區中的數據。
FB中程序的最大容量,S7-300是16KB,S7-400是64KB。
FB的接口區比FC多了一個(ge) 靜態數據區(STAT),用來存儲(chu) 中間變量。
程序調用FB時,形參不像FC那樣必須賦值,可以通過背景數據塊直接賦值。
由於(yu) FB帶有背景數據塊,輸出參數不會(hui) 輸出隨機值,可以不在FB中編寫(xie) 初始化程序。
4、數據塊DB
DB用來存儲(chu) 用戶數據及程序的中間變量,為(wei) 全局變量。DB的最大容量,S7-300為(wei) 32KB,S7-400為(wei) 64KB。
DB可分為(wei) 共享數據塊(Share DB)、背景數據塊(Instance DB)和用戶自定義(yi) 數據(UDT)類型的數據塊。
共享數據塊可作為(wei) 所有程序使用的全局變量,在CPU允許的條件下,一個(ge) 程序可創建任意多個(ge) DB,每個(ge) DB的最大容量為(wei) 64KB。默認條件下,共享數據塊為(wei) 掉電保持,在其屬性菜單中選中“Non Retain”可以更改為(wei) 掉電數據丟(diu) 失。如CPU中無足夠的內(nei) 部存儲(chu) 空間保存數據,可將指定的數據保存到共享數據塊。存儲(chu) 在共享數據塊中的數據可被其它任意一個(ge) 塊調用(全局變量)。這一點和背景數據塊不同,背景數據塊隻能被指定的功能塊(FB)使用,保存在背景數據塊中的數據隻能在這個(ge) 功能塊中有效。
背景數據塊與(yu) FB和SFB關(guan) 聯,也是全局變量。背景數據塊和共享數據塊相比,隻保存與(yu) FB或SFB接口數據區(Temp)相關(guan) 的數據。背景數據塊中有一種比較特殊的數據塊,稱為(wei) 多重背景數據塊。有關(guan) 多重背景數據塊的用法和使用注意事項請參看《怎樣使用多重背景數據塊》。
基於(yu) UDT的數據塊為(wei) 全局變量,提供一個(ge) 固定格式的數據結構,便於(yu) 用戶使用。
5、係統函數(SFC)和係統函數塊(SFB)
SFC和SFB集成在CPU中,相當於(yu) 係統提供的可供用戶程序調用的FC或FB,實現與(yu) CPU係統相關(guan) 的一些功能,如讀寫(xie) CPU時鍾等功能。調用SFB需要背景數據塊。