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