MCGS嵌入版系統對實時數據的處理主要在用戶腳本程序和運行策略中完成。
MCGS嵌入版組態軟件中的腳本程序是一種類似普通Basic語言的編程腳本語言(Script語言),但與Basic相比,操作更為簡單,可以用來編制某些復雜的多分支流程控制程序。利用腳本程序中的三個最基本的程序控制語句(賦值語句、條件語句和循環語句),以及系統提供的各種系統函數和系統變量,可以完全滿足用戶的實際需要,設計出理想的控制系統。
用戶腳本程序可以嵌入到MCGS嵌入版組態軟件的許多部件中,包括:
l 運行策略窗口,腳本程序策略塊中;
l 用戶窗口,按鈕控件的腳本程序中;
l 用戶窗口,窗口屬性中的啟動腳本、循環腳本以及退出腳本中;
l 用戶窗口,窗口及各個控件的事件組態中。
MCGS嵌入版腳本程序中不能自定義變量,但可以把實時數據庫中的數據對象當作全局變量。象使用普通的變量一樣,用數據對象的名字直接讀寫數據對象的值。如:
IF ADdat0 > 100 THEN
DODat1 = 0
ELSE
DODat1 = 1
ENDIF
假定ADdat0是實時數據庫中的一個數值型數據對象,它與模擬量輸入(AD)接口板的0號通道建立了連接;DODat1是實時數據庫中的一個開關型數據對象,其與數字量輸出板(DO)接口板的1號通道建立了連接。那么,上段程序的含義是:當AD板0號通道采集進來的數據(經工程轉換后)大于100時,DO板的1號通道關閉(輸出低電平);反之,DO板的1號通道打開(輸出高電平)。
下面給出一個采用腳本程序構件實現“比例-微分-積分”(PID)控制算法的實例。
首先在循環策略塊中創建一個策略行,如下圖所示。在策略行的條件部分可以控制該算法是否啟動,設置循環策略的定時時間為1秒,在策略行的功能部分放置腳本程序構件。
在實時數據庫中定義如下數據對象:
對象名稱 | 類型 | 初始值 | 注 釋 |
ADdat0 | 數值型 | 0 | 和模擬量輸入通道建立連接 |
DAdat0 | 數值型 | 0 | 和模擬量輸出通道建立連接 |
SetV | 數值型 | 100 | 控制設定值 |
Tempdx | 數值型 | 0 | 用作存儲臨時數據 |
Tempdx1 | 數值型 | 0 | 用作存儲臨時數據 |
Tempdx2 | 數值型 | 0 | 用作存儲臨時數據 |
Pdat | 數值型 | 100 | PID算法中的參數P |
Idat | 數值型 | 20 | PID算法中的參數I |
Ddat | 數值型 | 20 | PID算法中的參數D |
在設備窗口中加入相應的設備構件,指定ADdat0數據對象和設備的模擬量輸入通道0建立連接,指定DAdat0數據對象和設備的模擬量輸出通道建立連接。
在策略行的腳本程序構件中編制如下所示的腳本程序:
Tempdx = SetV - ADdat0
Tempdx2 = Tempdx2 + Tempdx
IF Idat <> 0 THEN
DAdat0 = Pdat * (Tempdx + Tempdx2 / Idat + Ddat * (Tempdx - Tempdx1))
ELSE
DAdat0 = Pdat * (Tempdx + Ddat * (Tempdx - Tempdx1))
END IF
Tempdx1 = Tempdx
應用系統運行時,每隔一秒鐘,執行一次上面的腳本程序,從而進行一次PID調節。在腳本程序中,由設定值和采集進來的實際值計算輸出值,而采集和輸出的操作,由系統指揮設備構件來完成。
程序設定值和PID參數值可以通過動畫構件進行設置,如:在用戶窗口中配置四個滑動輸入器構件,分別對應于設定值、P參數、I參數和D參數,運行時,用鼠標操作滑塊就可隨意改變這些參數的值。