STEP7使用入門——多重背景數據塊的意義及應用簡介

在一個項目中,現場許多設備通常具有類似的啟停和控制方式。不同的僅僅是啟、停的條件、控制參數等。因此,同類的設備,控制模型大致是一樣的。我們通常會在一個FB中,編寫一段代碼來實現對同一類設備的控制。如圖1所示,為一段簡單的電機啟、停控制程序。

STEP7使用入門——多重背景數據塊的意義及應用簡介

圖1 電機的啟停控制模型

簡單分析一下這段程序:

· #motor_on是電機的運行使能,通過SR觸發器來決定其狀態。#switch_on、#switch_off分別為啟動和停止命令;#Failure為故障檢測信號,當電機故障時,#Failure端反饋為"1"。

· 啟停控制均很簡單,當#switch_on端輸入上升沿信號時,#motor_on=1,電機運行;當#switch_off端輸入上升沿信號或電機故障時,#motor_on=0,電機停止;

· 程序段2為速度監控,比較實際速度與給定速度的偏差。

FB1塊需要在OB1中調用,才能參與馬達的控制。如果現場中有多個馬達都適用FB1的控制模型時,需要為每個馬達都調用一次FB1,同時每調用一次FB1都要為其分配一個背景數據塊,每個數據塊對應一個實際的馬達的參數。如圖2為控制兩臺馬達的程序,每臺馬達都要分別一個背景數據塊,如圖3,DB1和DB2

STEP7使用入門——多重背景數據塊的意義及應用簡介

圖2 控制兩臺馬達

STEP7使用入門——多重背景數據塊的意義及應用簡介

圖3 背景數據塊

試想一下,一個工業現場,不可能只有幾臺馬達,而是幾十臺甚至上百臺也不止。如果通過調用FB1來控制每臺馬達,則需要為每臺馬達都分配一個獨立的背景數據塊。顯然,當現場要控制的馬達較多時,背景數據塊的增加是非常大的。通過使用多重背景,可以很好的解決這一問題。

所謂的多重背景即創建一個更高級別的功能塊(這裡為FB10),並在其中調用未做任何修改的FB1作為"局部背景"。對每一個調用,子程序FB1會將其數據存儲於與FB10關聯的背景數據塊(這裡為DB10)中。這樣一來,所有的相關數據都存儲在DB10中,不用為FB1的多次調用分配額外的數據塊。

FB10的具體編程方法如圖4所示。在FB10的接口中,定義並關聯若干個FB1類型的靜態變量,本例中關聯了4個,分別為M1、M2、M3和M4等4個馬達控制實例,如圖4藍框所示。然後,分別為每個馬達編寫啟停條件及運行參數。

FB10編寫完成後,在OB1中調用並關聯背景數據塊DB10,如圖5所示。這樣,每個馬達實例(M1~M4)的相關參數都集中存儲在DB10中,如圖6所示。對比圖3和圖6可以發現,DB2、DB3中的數據和DB10中的數據在結構上沒差別,但DB10一個DB塊就可囊括DB2和DB3中的數據。這必然節省了DB塊的定義、分配和管理,簡化了項目結構。

STEP7使用入門——多重背景數據塊的意義及應用簡介

圖4 多重背景FB10

STEP7使用入門——多重背景數據塊的意義及應用簡介

圖5 調用FB10,並關聯DB10

STEP7使用入門——多重背景數據塊的意義及應用簡介

圖6 DB10


分享到:


相關文章: