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