如何理解STEP7的多重背景數據塊?
我們知道,調用STEP7的功能塊(FB)時,需要為其指定一個背景數據塊(Instance DB),用來存放功能塊的輸入、輸出參數變數及靜態變數。在一個大型的程序中,往往會有很多的功能塊。如果為每一個功能塊(FB)都創建一個背景數據塊(Instance DB),不僅費時費力,而且會使程序結構變得混亂,不易理解。為了簡化編程,提高程序的可讀性,西門子STEP7支持使用多重背景數據塊(Multi-instance DB)。
多重背景數據(Multi-instance DB)塊本質上也屬於背景數據塊(Instance DB),不同之處在於它可以作為多個功能塊(FB)的背景數據塊。比如,在組織塊OB1中調用功能塊FB1,並且為FB1分配背景數據塊DB1;在FB1中調用功能塊FB10,通常情況下,我們需要為FB10重新創建一個背景數據塊;如果我們不創建新的背景數據塊,而是把FB10的父級功能塊(FB1)的背景數據塊(DB1)分配給FB10使用,那麼,DB1就是一個多重背景的數據塊。如下圖:
西門子的開發環境STEP7 V5.5和博途(TIA Portal)均支持多重背景數據塊,下面我們在博途(STEP 7 V13)開發環境下看看如何使用背景數據塊:
仍然使用上面的例子,假設FB10有三個輸入參數:E_P1、E_P2和E_P3,有一個輸出參數,A_R1(輸入輸出均為布爾變數);
我們要實現如下的簡單邏輯:
1)當E_P1和E_P2全為1,並且E_P3為0時,輸出A_R1為1;
2)當E_P3為1時,輸出A_R1為0;
編寫FB10功能塊的程序如下圖:
然後我們在FB1中調用FB10,如下圖:
當我們輸入指令"CALL FB10",不為其分配背景DB塊,直接回車後,系統會自動彈出如下一個對話框:
該對話框要求為FB10分配一個背景數據塊,默認選中的是「Single instance DB",在名字欄目中會有一個默認的DB塊名稱"FB10_DB"。如果此時點擊OK,則系統會自動創建一個新的背景數據塊(FB10_DB);
但我們希望使用多重背景數據塊,所以點擊"Multi-instance DB"按鈕,系統對話框會變成如下界面:
對話框中有一個默認的介面名稱:FB10_Instance_DB,並附有一段解釋,表達了這樣一個意思:被調用的功能塊(本常式中的FB10)會把其數據保存到調用它的功能塊(FB1)的背景數據塊(DB1)中。該操作可以把相關的數據保存到一個背景數據塊中以減少程序中使用的數據塊(DB)的數量。
點擊確定後,進入FB1的編程,給FB1輸入相應的參數,然後保存。如下圖:
最後,需要對整個程序塊進行編譯,完成後會在DB1中看到FB10的輸入、輸出參數及靜態變數,如下圖:
上述就是如何在博途環境下使用多重背景數據塊,在STEP7 V5.5的環境下大致類似,略有不同,你可以自己試一下。
點擊展開全文


※Modbus協議的ASCII模式和RTU模式有什麼不同?
※什麼是故障安全模塊的鈍化和重新集成?
TAG:方正智芯 |