西門(mén)子PLC?S7-300/400的用戶(hù)程序結構與S7-200有明顯的不同,可以使用線(xiàn)性化結構以及功能調用式結構與結構化編程。
采用調用式結構與結構化編程時(shí),程序以組織塊(OB)、程序塊(FC)、功能塊(FB)、系統程序塊(SFC)、系統功能塊(SFB)、數據塊(DB)等形式出現,其中,組織塊(OB)、程序塊(FC)、功能塊(FB)統稱(chēng)為“邏輯塊(Logic Block)”;系統程序塊(SFC)、系統功能塊(SFB)統稱(chēng)為“系統塊”。
注:快捷菜單中的其它兩項:數據類(lèi)型和變量表。數據類(lèi)型(UDT)用于指定程序中數據元素的大小與格式;變量表(VAT)用來(lái)在程序調試和運行時(shí)修改和監視變量的內容(在地址欄中輸入地址后,符號欄中會(huì )自動(dòng)顯示在符號表中定義的符號)。
這幾種程序塊的功能簡(jiǎn)要說(shuō)明如下:
調用程序塊:OB,FB,FC(可以調用除OB塊外的其它程序塊);
被調用程序塊:FB,FC,SFB,SFC。
1、組織塊OB
OB由系統自動(dòng)調用,并執行用戶(hù)在OB塊中編寫(xiě)的程序,所以OB的基本作用是調用用戶(hù)程序。在OB塊中編寫(xiě)程序的最大容量,S7-300是16KB,S7-400是64KB。除主程序循環(huán)OB1外,其它OB均是由事件觸發(fā)的中斷。
2、函數FC
函數FC有兩個(gè)作用:
(1)作為子程序用;
(2)作為函數用,函數中通常帶形參。
函數中程序的最大容量,S7-300是16KB,S7-400是64KB。
FC的形參通常也稱(chēng)為接口區,參數類(lèi)型分為輸入參數,輸出參數,輸入/輸出參數和臨時(shí)數據區。
在編寫(xiě)函數FC的輸出參數時(shí),應避免沒(méi)有直接輸出(否則,可能輸出一個(gè)隨機值,影響程序的判斷)??梢栽诤瘮档拈_(kāi)始,將字輸出參數清0,位輸出參數復位。
3、函數塊FB
FB與FC相比,FB每次調用都必須分配一個(gè)背景數據塊,用來(lái)存儲接口數據區(TEMP類(lèi)型除外)和運算的中間數據。其它程序可以直接使用背景數據區中的數據。
FB中程序的最大容量,S7-300是16KB,S7-400是64KB。
FB的接口區比FC多了一個(gè)靜態(tài)數據區(STAT),用來(lái)存儲中間變量。
程序調用FB時(shí),形參不像FC那樣必須賦值,可以通過(guò)背景數據塊直接賦值。
由于FB帶有背景數據塊,輸出參數不會(huì )輸出隨機值,可以不在FB中編寫(xiě)初始化程序。
4、數據塊DB
DB用來(lái)存儲用戶(hù)數據及程序的中間變量,為全局變量。DB的最大容量,S7-300為32KB,S7-400為64KB。
DB可分為共享數據塊(Share DB)、背景數據塊(Instance DB)和用戶(hù)自定義數據(UDT)類(lèi)型的數據塊。
共享數據塊可作為所有程序使用的全局變量,在CPU允許的條件下,一個(gè)程序可創(chuàng )建任意多個(gè)DB,每個(gè)DB的最大容量為64KB。默認條件下,共享數據塊為掉電保持,在其屬性菜單中選中“Non Retain”可以更改為掉電數據丟失。如CPU中無(wú)足夠的內部存儲空間保存數據,可將指定的數據保存到共享數據塊。存儲在共享數據塊中的數據可被其它任意一個(gè)塊調用(全局變量)。這一點(diǎn)和背景數據塊不同,背景數據塊只能被指定的功能塊(FB)使用,保存在背景數據塊中的數據只能在這個(gè)功能塊中有效。
背景數據塊與FB和SFB關(guān)聯(lián),也是全局變量。背景數據塊和共享數據塊相比,只保存與FB或SFB接口數據區(Temp)相關(guān)的數據。背景數據塊中有一種比較特殊的數據塊,稱(chēng)為多重背景數據塊。有關(guān)多重背景數據塊的用法和使用注意事項請參看《怎樣使用多重背景數據塊》。
基于UDT的數據塊為全局變量,提供一個(gè)固定格式的數據結構,便于用戶(hù)使用。
5、系統函數(SFC)和系統函數塊(SFB)
SFC和SFB集成在CPU中,相當于系統提供的可供用戶(hù)程序調用的FC或FB,實(shí)現與CPU系統相關(guān)的一些功能,如讀寫(xiě)CPU時(shí)鐘等功能。調用SFB需要背景數據塊。