唐 銳 胥布工 陳志忠
1 引言
組態軟件是近年來在工業自動化領域興起的新型軟件開發技術,隨著智能樓宇行業的迅速發展,組態軟件在這個新的領域也得到了廣泛的應用。
在市場上諸多品牌軟件的激烈競爭中,組態王以其純中文界面、編程風格簡單、實時性能好, 且與其他應用程序交換方便、 易調試, 支持數百種國內外流行的外部設備的特點,兼具極富競爭力的價格優勢, 在諸多競爭對手中脫穎而出。
筆者一直采用組態王軟件開發樓宇自動化管理軟件。在實際的工程應用中,筆者發現智能樓宇控制工程中存在大量相同的監控對象,例如整棟大廈的房間照明系統、新風機及空調機等。由于在組態王軟件中暫不支持指針變量,因此通常的做法是針對每個監控對象開發一幅畫面。當監控對象的數目達到一定程度時,這種方法帶來的不便就非常明顯:用戶需要建立許多幅完全相同的畫面,在每幅畫面中又要建立完全相同的動畫鏈接,而當需要對這些畫面或畫面中的動畫鏈接進行極細微的改動時,則需要將所有畫面都改動一遍,其工作量可想而知非常巨大,也使樓宇自動化管理軟件開發周期大大延長。
通過對組態王軟件的深入學習和研究,筆者發現可以在組態王中以某些命令語言函數讀寫的方式來模擬指針變量的功能,實現監控多個相同對象共用一個畫面,下面以一個實際的樓宇控制工程為例說明此方法。
2 組態王命令語言函數
組態王的命令語言是一段類似C語言的程序,工程人員可以利用這段程序來增強應用程序的靈活性。命令語言的句法和C語言非常類似,是C的一個子集,具有完備的詞法語法查錯功能。
組態王支持使用內建的復雜命令語言函數,主要有:字符串函數、數學函數、系統函數、控件函數、配方函數、報表函數、歷史趨勢曲線函數、畫面管理函數、登錄管理函數等。通過各種函數的巧妙調用,組態王可以實現許多復雜、強大的功能。
下面簡要介紹在本解決方案中將要使用的2種函數:
(1) FileWriteFields函數
此函數往指定文件中寫入CSV(逗號分隔變量)記錄,其調用格式為:
FileWriteFields(Filename, FileOffset, StartTag, NumberOfFields)
其中:Filename為指定要寫的文件;FileOffset為指定寫此文件的起始位置,若 FileOffset 為 0,此函數將寫到文件末尾。若為1,則寫到開頭;StartTag為指定第一個數據項的變量名稱,此變量名必須以一個數字結尾(如MyTag1);NumberOfFields為指定要寫的字段數目(此文件的每條記錄中以逗號隔開的字段的字段數目)。
(2) FileReadFields函數
此函數與(1)對應,表示從指定文件中讀入CSV(逗號分隔變量)記錄,其調用格式為:
FileReadFields(Filename, FileOffset, StartTag, NumberOfFields)
其中:Filename為指定要讀的文件;FileOffset為指定讀此文件的起始位置,若 FileOffset 為 0,此函數將讀此文件末尾。若為1,則表明從頭開始; StartTag 為指定第一個數據項的變量名稱,此變量名必須以一個數字結尾(如MyTag1);NumberOfFields為指定要寫的字段數目(此文件的每條記錄中以逗號隔開的字段的字段數目)。
3 BA工程實例介紹
某學院學生宿舍BA系統分為8棟宿舍樓,共有872間宿舍,36間活動室,宿舍控制分為照明回路和插座回路,每間宿舍有1個照明回路和1個插座回路;每間活動室有1個照明回路和1個插座回路,此外學生宿舍區還有室內公共照明回路74路,室外公共照明4路。BAS系統控制每個回路并檢測其相應的運行狀態。
本BA系統的最大特點是所有宿舍、活動室及公共回路照明的控制規律相同,可以抽象成完全相同的控制對象,只是在具體控制參數上有所變化,因此所有控制對象在組態王數據詞典里建立變量的類型、數目完全相同,其各個房間的控制畫面,除房間號碼不同,其余也完全相同。
按照通常的開發方式,為了實現進入房間內部對于單個房間的監視和控制,除建立八棟宿舍樓的房間分布畫面外,還必須對于每個房間建立一個房間內部畫面,即必須建立986幅相同的畫面,然后將每個房間的變量分別鏈接到這些畫面上。
4 調用讀寫函數實現多個相同監控對象共用一個畫面的解決方案
首先,為了優化工程的數據詞典,按照單個房間需要建立的變量構建一個結構變量,并命名為“房間”,結構變量內容為:
房間- -照明狀態1 離散型
- - 照明控制指令1 離散型
- -照明定時選擇1 離散型
- -照明時間表1 整數型
- -照明報警1 整數型
……
在數據詞典里對于每個房間建立一個變量類型為“房間”的變量,所有房間的變量均以房間號命名,如:房間1101、房間1102、房間1103……,同時建立一個命名為“房間內部”的中間變量。
4.1 方案流程圖(如圖1所示)
圖1 方案流程圖
4.2 畫面與程序實現
在工程中按照宿舍的布局分別建立8棟宿舍的畫面,同時建立所有房間共用的內部公共畫面