下面以發(fā)動機組控制系統(tǒng)為例,介紹如何編輯和使用多重背景數(shù)據塊。
例 發(fā)動機組控制系統(tǒng)設計——使用多重背景
設某發(fā)動機組由1臺汽油發(fā)動機和1臺柴油發(fā)動機組成,現(xiàn)要求用plc控制發(fā)動機組,使各臺發(fā)動機的轉速穩(wěn)定在設定的速度上,并控制散熱風扇的啟動和延時關閉。每臺發(fā)動機均設置一個啟動按鈕和一個停止按鈕。
項目的編程步驟如下:
(1)創(chuàng)建S7項目。使用菜單“文件”à“新建工程”向導創(chuàng)建發(fā)動機組 控制系統(tǒng)的S7項目,并命名為“多重背景”。CPU選擇CPU 315- 2DP,項目包含組織塊OB1。
(2)硬件配置。在“多重背景”項目內打開“SIMATIC 300(1)”文件夾,打開硬件配置窗口,并按圖1完成硬件配置。
圖1 硬件配置
(3)編輯如圖2所示的符號表。
(4) 規(guī)劃程序結構。程序結構規(guī)劃如圖3所示。FB10為上層功能塊,它 把FB1作為其“局部實例”,通過二次調用本地實例,分別實現(xiàn)對汽 油機和柴油機的控制。這種調用不占用數(shù)據塊DB1和DB2,它將每次調用(對于每個調用實例)的數(shù)據存儲到體系的上層功能塊FB10的背景數(shù)據塊DB10中。
(5)編輯功能(FC)。FC1用來實現(xiàn)發(fā)動機(汽油機或柴油機)的風扇控制,按照控制要求,當發(fā)動機啟動時,風扇應立即啟動;當發(fā)動機停止后,風扇應延時關閉。因此FC1需要一個發(fā)動機啟動信號、一個風扇控制信號和一個延時定時器。
1) 定義局部變量聲明表。局部變量聲明表如表1所示,表中包含3個變量,兩個IN變量,1個OUT變量。
表1 變量聲明表
2) 編輯FC1的控制程序。FC1所實現(xiàn)的控制要求:發(fā)動機啟動時風扇啟動,當發(fā)動機再次關閉后,風扇繼續(xù)運行4s,然后停止。定時器采用斷電延時定時器,控制程序如圖4所示。
圖4 FC1控制程序
(6)編輯共享數(shù)據塊。共享數(shù)據塊DB3可為FB10保存發(fā)動機(汽油機和柴油機)的實際轉速,當發(fā)動機轉速都達到預設速度時,還可以保存該狀態(tài)的標志數(shù)據。DB3的數(shù)據如圖5所示。
(7) 編輯功能塊(FB)。在該系統(tǒng)的程序結構內,有2個功能塊:FB1和FB10。FB1為底層功能塊,所以應首先創(chuàng)建并編輯;FB10為上層功能塊,可以調用FB1。
1) 編輯底層功能塊FB1。在項目內創(chuàng)建FB1,符號名“Engine”。定義功能塊FB1的變量聲明表如表2所示。
FB1主要實現(xiàn)發(fā)動機的啟停控制及速度監(jiān)視功能,其控制程序如圖6所示。
圖6 FB1程序
2) 編輯上層功能塊FB10。在項目內創(chuàng)建FB10,符號名“Engines”。在FB10的屬性對話框內激活“多情景標題”選項,如圖7所示。
圖7 將FB10設置成使用多重背景的功能塊
要將FB1作為FB10的一個“局部背景”調用,需要在FB10的變量聲明表中為FB1的調用聲明不同名稱的靜態(tài)變量,數(shù)據類型為FB1(或使用符號名“Engine”),如表3所示。
表3 FB10的變量聲明表
在變量聲明表內完成FB1類型的局部實例:“Petrol_Engine”和“Diesel_Engine”的聲明以后,在程序元素目錄的“多重實例”目錄中就會出現(xiàn)所聲明的多重實例,如圖8所示。接下來可在FB10的代碼區(qū),調用FB1的“局部實例”。
編寫功能塊FB10的控制程序如圖9所示。調用FB1局部實例時,不再使用獨立的背景數(shù)據塊,F(xiàn)B1的實例數(shù)據位于FB10的實例數(shù)據塊DB10中。發(fā)動機的實際轉速可直接從共享數(shù)據塊中得到,如DB3.DW0(符號地址為“S_Data”.PE_Actual_Speed)。
圖9 FB10的控制程序
(8) 生成多重背景數(shù)據塊DB10。在項目內創(chuàng)建一個與FB10相關聯(lián)的多重背景數(shù)據塊DB10,符號名“Engine_Data”。如圖10所示。
圖10 DB10的數(shù)據結構
(9) 在OB1中調用功能(FC)及上層功能塊(FB)。OB1控制程序如圖11所示,“程序段4”中調用了FB10。
圖11 OB1控制程序
使用多重背景時應注意以下問題:
(1) 首先應生成需要我次調用的功能塊(如例中的FB1)。
(2) 管理多重背景的功能塊(如例中的FB10)必須設置為有多重背景功能。
(3) 在管理多重背景的功能塊的變量聲明表中,為被調用的功能塊的每一次調用定義一個靜態(tài)(STAT)變量,以被調用的功能塊的名稱(如FB1)作為靜態(tài)變量的數(shù)據類型。
(4) 必須有一個背景數(shù)據塊(如DB10)分配給管理多重背景的功能塊。背景數(shù)據塊中的數(shù)據是自動生成的。
(5) 多重背景只能聲明為靜態(tài)變量(聲明類型為“STAT”)。