朱彬,江愛朋,姜周曙,黃國輝
摘 ?要: 針對(duì)太陽能熱水工程地域分布范圍廣、監(jiān)控難度大等問題,研制開發(fā)一套基于OPC技術(shù)的遠(yuǎn)程監(jiān)測(cè)系統(tǒng)。詳細(xì)闡述了系統(tǒng)的總體方案和組成,介紹了OPC技術(shù)及其數(shù)據(jù)采集的基本原理,并采用OPC技術(shù)在C#.NET平臺(tái)下用Windows Form窗體完成了遠(yuǎn)程監(jiān)測(cè)系統(tǒng)數(shù)據(jù)中心的設(shè)計(jì),實(shí)現(xiàn)數(shù)據(jù)中心服務(wù)器集中管理各現(xiàn)場(chǎng)監(jiān)測(cè)終端,具有實(shí)時(shí)數(shù)據(jù)的采集、顯示、存儲(chǔ)以及故障報(bào)警等功能。通過實(shí)際應(yīng)用表明,系統(tǒng)運(yùn)行可靠、穩(wěn)定,可以滿足遠(yuǎn)程監(jiān)控的要求,并可以在一些相關(guān)領(lǐng)域中加以推廣。
關(guān)鍵詞: OPC; 遠(yuǎn)程監(jiān)測(cè); 太陽能熱水系統(tǒng); 數(shù)據(jù)中心
中圖分類號(hào): TN931+.3?34; TP277 ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ?文章編號(hào): 1004?373X(2014)23?0159?03
Design of OPC?based data centre for solar energy water heating monitoring system
ZHU Bin, JIANG Ai?peng, JIANG Zhou?shu, HUANG Guo?hui
(Institute of Energy Utilization System and Automation, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: The OPC?based remote monitoring system was designed to solve the problems of wide geographical distribution and difficult monitoring existing in the solar energy water heating systems. The system overall scheme and composition are elaborated in detail. The basic principles of OPC technology and its data acquisition are introduced. The OPC technology is adopted to achieve design scheme of data centre in the remote monitoring system by means of Windows Form in the C#.NET platform, and realize the centralized management of each field monitoring terminal through a server in the data center, which possesses the functions of data acquisition, display, storage and failure warning. The practical application shows that the system works well, and has an excellent portability, so that it can be widely applied to the other industrial automation.
Keywords: OPC; remote monitoring; solar energy water heating systems; data center
0 ?引 ?言
隨著能源消費(fèi)量的不斷增長和人們對(duì)環(huán)境質(zhì)量要求的不斷提高,各種新能源己越來越受到人們的重視,太陽能熱水系統(tǒng)作為綠色環(huán)保的新能源系統(tǒng),近幾年在住宅建筑的應(yīng)用得到了飛速發(fā)展,但太陽能熱水器與建筑系統(tǒng)的集成還存在許多問題[1]。目前國內(nèi)外很少有研究單位或部門對(duì)建筑的太陽能熱水系統(tǒng)進(jìn)行連續(xù)一年以上的運(yùn)行狀況監(jiān)測(cè),而這些監(jiān)測(cè)數(shù)據(jù)對(duì)可再生能源示范建筑的示范性是非常重要的[2]。因此研究太陽能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),并根據(jù)監(jiān)測(cè)數(shù)據(jù)進(jìn)行系統(tǒng)的綜合指標(biāo)評(píng)價(jià)對(duì)研究在不同氣候條件下太陽能熱水系統(tǒng)的太陽能利用情況具有非常重要的意義。
為了更好地實(shí)現(xiàn)與建筑能耗監(jiān)測(cè)平臺(tái)的集成,本文提出了一種基于OPC技術(shù)的太陽能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)方案,使得運(yùn)行于上位機(jī)上的系統(tǒng)能夠通過以太網(wǎng)實(shí)現(xiàn)對(duì)多個(gè)太陽能熱水子系統(tǒng)的遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)和運(yùn)行狀態(tài)數(shù)據(jù)實(shí)時(shí)采集以及處理。
1 ?OPC技術(shù)
OPC是以Microsoft公司的OLE/COM 技術(shù)為基礎(chǔ),采用客戶/服務(wù)器模型制定的一種工業(yè)控制領(lǐng)域的開放式標(biāo)準(zhǔn)。OPC 在工業(yè)控制設(shè)備與應(yīng)用軟件之間建立了統(tǒng)一的軟件接口標(biāo)準(zhǔn),主要解決監(jiān)控程序與其數(shù)據(jù)源的交互問題。利用OPC 技術(shù),可以對(duì)現(xiàn)場(chǎng)設(shè)備及其驅(qū)動(dòng)程序進(jìn)行封裝, 形成OPC服務(wù)器。
OPC 服務(wù)器向下對(duì)設(shè)備數(shù)據(jù)進(jìn)行采集,向上與OPC 客戶應(yīng)用程序通信完成數(shù)據(jù)交換。OPC服務(wù)器屏蔽了現(xiàn)場(chǎng)物理設(shè)備的驅(qū)動(dòng)程序,只要客戶應(yīng)用程序符合OPC接口規(guī)范,就可以與OPC 服務(wù)器進(jìn)行數(shù)據(jù)交換,不必再去關(guān)心現(xiàn)場(chǎng)設(shè)備的驅(qū)動(dòng)程序。
OPC技術(shù)規(guī)范是OPC基金組織倡導(dǎo)的工業(yè)控制和生產(chǎn)自動(dòng)化領(lǐng)域中使用的硬件和軟件的接口標(biāo)準(zhǔn)[3]。OPC規(guī)范提供了兩套標(biāo)準(zhǔn)接口:自定義接口(Custom Interface)和自動(dòng)化接口(Automation Interface)。自動(dòng)化接口通常是為Visual Basic等基于腳本編程語言而定義的標(biāo)準(zhǔn)接口,而自定義接口是專門為C++等高級(jí)編程語言而制定的標(biāo)準(zhǔn)接口。應(yīng)用程序作為OPC接口的客戶方,硬件驅(qū)動(dòng)程序作為OPC接口中的服務(wù)器方。一個(gè)OPC應(yīng)用程序可以同時(shí)與多個(gè)OPC服務(wù)器連接,一個(gè)OPC服務(wù)器也可以同時(shí)為多個(gè)應(yīng)用程序提供數(shù)據(jù)。endprint
OPC服務(wù)器、客戶應(yīng)用程序與硬件設(shè)備之間的關(guān)系如圖1所示。
<;E:\2014年23期\2014年23期\Image\21t1.tif>;
圖1 OPC服務(wù)器、客戶應(yīng)用程序與硬件設(shè)備間的關(guān)系
2 ?太陽能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng)總體架構(gòu)
太陽能熱水遠(yuǎn)程檢測(cè)系統(tǒng)由分布在各個(gè)地區(qū)、不同氣候條件的現(xiàn)場(chǎng)監(jiān)測(cè)系統(tǒng)與數(shù)據(jù)中心平臺(tái)構(gòu)成?,F(xiàn)場(chǎng)監(jiān)測(cè)系統(tǒng)經(jīng)過以太網(wǎng)與數(shù)據(jù)中心平臺(tái)進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)的監(jiān)測(cè)。
根據(jù)工業(yè)現(xiàn)場(chǎng)的應(yīng)用需求,在工業(yè)控制現(xiàn)場(chǎng)為每一臺(tái)PLC配置一個(gè)PLC工業(yè)以太網(wǎng)模塊,以便PLC能通過以太網(wǎng)傳輸數(shù)據(jù)。由于光纖傳輸信號(hào)帶寬寬、穩(wěn)定性好,因此遠(yuǎn)距離傳輸信號(hào)時(shí)都采用光纖傳輸。首先在工業(yè)控制現(xiàn)場(chǎng)將PLC工業(yè)以太網(wǎng)模塊與光電轉(zhuǎn)換器連接,通過光電轉(zhuǎn)換器將工業(yè)以太網(wǎng)的電信號(hào)轉(zhuǎn)換成光信號(hào),然后通過光纖傳輸,到達(dá)遠(yuǎn)處的控制室時(shí),再通過光電轉(zhuǎn)換器將光信號(hào)轉(zhuǎn)換成電信號(hào),接入交換機(jī)。對(duì)于處在不同工業(yè)控制現(xiàn)場(chǎng)的多臺(tái)PLC,可以分別通過光纖進(jìn)行數(shù)據(jù)傳輸,最終接入到控制室的交換機(jī)上。OPC服務(wù)器和應(yīng)用程序所在的服務(wù)器也接入到交換機(jī)上。這樣就形成了一個(gè)面向遠(yuǎn)程多PLC的監(jiān)測(cè)系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu),應(yīng)用程序可以通過OPC服務(wù)器來獲取PLC的數(shù)據(jù)。
系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖2所示。
3 ?數(shù)據(jù)中心功能設(shè)計(jì)與實(shí)現(xiàn)
軟件的設(shè)計(jì)遵從了模塊化、松耦合等軟件工程規(guī)范[4?6],在Windows操作系統(tǒng)下設(shè)計(jì)出了一套基于面向?qū)ο笏枷?,融入了UML、多線程等編程技術(shù),以Microsoft SQL 2005為數(shù)據(jù)庫,并且引入了NI,MSChart,F(xiàn)lash等繪圖控件的監(jiān)測(cè)軟件[7]。其功能模塊圖如圖3所示。
<;E:\2014年23期\2014年23期\Image\21t2.tif>;
圖2 系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
<;E:\2014年23期\2014年23期\Image\21t3.tif>;
圖3 軟件系統(tǒng)功能結(jié)構(gòu)圖
3.1 ?OPC通信模塊
在微軟的.NET平臺(tái)上用C#語言實(shí)現(xiàn)OPC的數(shù)據(jù)通信[8],對(duì)應(yīng)系統(tǒng)的軟硬件平臺(tái),安裝完SIMATIC NET后,采用OPC.SimaticNET作為OPC Server,在VS中引用由西門OPC服務(wù)器提供的Siemens OPC DA Automation 2.0,利用自動(dòng)化接口形式訪問OPC服務(wù)器[9?10]。在接口函數(shù)中OPC的邏輯對(duì)象中有OPCServer,OPCGroup,OPCItem。其中OPCServer維護(hù)服務(wù)器的信息并作為OPCGroup對(duì)象的容器,OPCGroup維護(hù)自己的信息并提供包含OPCItems和以有效的邏輯組織OPCItems的機(jī)制、OPCItem代表與數(shù)據(jù)源的連接。OPC服務(wù)器與OPC客戶端的交互存在三種方式:同步、異步和訂閱。通過3種方式的比較,本通信機(jī)制采用異步方式。
3.1.1 ?數(shù)據(jù)交互方式
在同步訪問方式中,OPC服務(wù)器把按照OPC應(yīng)用程序要求得到的數(shù)據(jù)訪問結(jié)果作為方法的參數(shù)返回給OPC應(yīng)用程序,OPC應(yīng)用程序在結(jié)果被返回之前必須處于等待狀態(tài)。本訪問方式適合于傳輸數(shù)據(jù)量較少的通信。本監(jiān)測(cè)系統(tǒng)共包含8個(gè)監(jiān)測(cè)子系統(tǒng),每個(gè)子系統(tǒng)的數(shù)據(jù)監(jiān)測(cè)點(diǎn)有30個(gè),共240個(gè)監(jiān)測(cè)點(diǎn),如采用此種訪問方式,應(yīng)用程序的等待時(shí)間浪費(fèi)比較長,降低了程序的效率。
訂閱方式數(shù)據(jù)采集只需要OPC應(yīng)用程序向OPC服務(wù)器發(fā)送一次請(qǐng)求,就可以自動(dòng)接到從OPC服務(wù)器送來的變化通知的訂閱方式數(shù)據(jù)采集。服務(wù)器按一定的周期更新OPC服務(wù)器的數(shù)據(jù)緩沖器的數(shù)值,如果發(fā)現(xiàn)數(shù)值有變化,就會(huì)以數(shù)據(jù)變化事件通知OPC應(yīng)用程序。系統(tǒng)采取該訂閱方式可以通過不敏感帶來設(shè)置當(dāng)前值與前次之差的絕對(duì)值超過一定限度時(shí),才更新緩沖區(qū)數(shù)據(jù)并通知OPC應(yīng)用程序,從而進(jìn)一步減輕OPC服務(wù)器和應(yīng)用程序的負(fù)荷,但由于本監(jiān)測(cè)系統(tǒng)對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高,所以不宜采用此種方式。
在異步訪問方式中,OPC服務(wù)器接到OPC應(yīng)用程序的要求后,幾乎立即將方法返回。OPC應(yīng)用程序隨后可以進(jìn)行其他處理。當(dāng)OPC服務(wù)器完成數(shù)據(jù)訪問時(shí),觸發(fā)OPC應(yīng)用程序的異步訪問事件,將數(shù)據(jù)訪問結(jié)果傳送給OPC應(yīng)用程序。OPC應(yīng)用程序在C#的事件處理程序中接受從OPC服務(wù)器傳送來的數(shù)據(jù)。因此,本訪問方式針對(duì)本監(jiān)測(cè)系統(tǒng)的海量數(shù)據(jù)的傳輸和客戶端對(duì)OPC服務(wù)器的頻繁要求,效率比較高。
3.1.2 ?數(shù)據(jù)存取方式
在OPC服務(wù)器中,Cache是重要的組成部分,存儲(chǔ)結(jié)構(gòu)將直接影響數(shù)據(jù)訪問的速度,它負(fù)責(zé)將從設(shè)備中讀取的數(shù)據(jù)先存放在數(shù)據(jù)緩沖區(qū),供同步或異步讀取[11]。設(shè)計(jì)良好的Cache對(duì)服務(wù)器的數(shù)據(jù)更新速度至關(guān)重要??紤]到本監(jiān)測(cè)系統(tǒng)存取的速度、方便管理以及存取較多的數(shù)據(jù)量項(xiàng),采用Cache構(gòu)造方式中的哈希存儲(chǔ)方式。同時(shí),由于.NET平臺(tái)有獨(dú)立的哈希表類(Hashtable Class)可以直接使用,大大降低數(shù)據(jù)的存儲(chǔ)和查找消耗的時(shí)間。因此,系統(tǒng)使用Hashtable的基本操作可以建立一個(gè)穩(wěn)定而快速的Cache,從而保證了數(shù)據(jù)的快速響應(yīng)。OPC數(shù)據(jù)通信的具體實(shí)現(xiàn)代碼如下:
/***聲明使用的對(duì)象與變量***/
Public ?OPCServer ?MyOpcServer = new OPCServer();
Public OPCGroup[] MyGroup = new OPCGroup[1];
Public ?OPCItem[] ?MyItem1 = new OPCItem[1];
Public Int32[] ItemServerHandle1 = new Int32[1];endprint
int cancelId;
Array[] errors = new Array[1];
Array[] MySrverHandle = new Array[1];
/*****連OPC服務(wù)器、建立OPC組和添加OPC項(xiàng)****/
MyOpcServer = new OPCServer();
MyOpcServer.Connect("OPC.SimaticNET",localhost");
MyGroup[0]=MyOpcServer.OPCGroups.Add("group");
MyGroup[0].IsActive = true;
/****對(duì)應(yīng)變量的具體地址及服務(wù)句柄****/
MyItem1[0]=MyGroup[0].OPCItems.AddItem("S7:[S7 connection_1]db1,d208,1", 1);
ItemServerHandle1[1] = MyItem1[1].ServerHandle;
/***注冊(cè)異步讀取事件***/
MyGroup[0].AsyncReadComplete+=newDIOPCGroupEvent_ ? ? AsyncReadCompleteEventHandler(MyGroup01_ReadComplete);
/***異步讀、異步讀完成的回調(diào)函數(shù)***/
MyGroup[0].AsyncRead(20, ref MySrverHandle[0], out errors[0], 1, out cancelId);
void MyGroup01_ReadComplete(int TransactionID, int NumItems, ref System.Array ClientHandles, ref System.Array ItemValues, ref System.Array Qualities, ref System.Array TimeStamps, ref System.Array Errors);
3.2 ?數(shù)據(jù)訪問模塊
數(shù)據(jù)訪問模塊是按照軟件開發(fā)領(lǐng)域中典型的三層架構(gòu)來實(shí)現(xiàn)的。三層架構(gòu)將軟件規(guī)劃成表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層[4],如圖4所示。
<;E:\2014年23期\2014年23期\Image\21t4.tif>;
圖4 三層架構(gòu)示意圖
對(duì)于數(shù)據(jù)庫,系統(tǒng)將存儲(chǔ)過程子程序放在數(shù)據(jù)庫中,當(dāng).NET調(diào)用時(shí),可以像調(diào)用函數(shù)一樣對(duì)數(shù)據(jù)庫進(jìn)行操作。執(zhí)行運(yùn)行在數(shù)據(jù)庫中,在被調(diào)用一次后會(huì)放在Cache中,為下次執(zhí)行提供了方便。后期對(duì)數(shù)據(jù)庫操作維護(hù)時(shí),不需要修改應(yīng)用程序軟件,直接修改數(shù)據(jù)庫存儲(chǔ)過程子程序。
3.3 ?UI顯示模塊
對(duì)于本地監(jiān)控系統(tǒng),數(shù)據(jù)采集部分通過OPC通信方式,使用定時(shí)器控制數(shù)據(jù)讀取命令,將一些必要的數(shù)據(jù),如液位、溫度等,通過Flash、曲線與儀表顯示,增強(qiáng)了人機(jī)交互性,方便人員觀察數(shù)據(jù)的變化。顯示界面如圖5所示。
<;E:\2014年23期\2014年23期\Image\21t5.tif>;
圖5 系統(tǒng)顯示界面
3.4 ?故障報(bào)警模塊
實(shí)現(xiàn)對(duì)工程項(xiàng)目現(xiàn)場(chǎng)設(shè)備非正常狀態(tài)信息的多方式通報(bào)提醒。當(dāng)數(shù)據(jù)服務(wù)器分析出系統(tǒng)存在故障后,運(yùn)行界面上會(huì)出現(xiàn)報(bào)警燈的閃爍。當(dāng)用戶點(diǎn)擊報(bào)警燈后可以查看具體的故障類型和發(fā)生時(shí)間。數(shù)據(jù)中心操作員可以根據(jù)故障的類型及時(shí)通知現(xiàn)場(chǎng)管理員對(duì)故障進(jìn)行及時(shí)處理,避免發(fā)生嚴(yán)重的事故。
3.5 ?天氣預(yù)報(bào)
太陽能集熱工程與天氣狀況密切相關(guān),所以在系統(tǒng)中集成了天氣預(yù)報(bào)的功能,提供大中型城市3 天內(nèi)的詳細(xì)氣象信息。該功能通過調(diào)用中國氣象局?jǐn)?shù)據(jù)服務(wù)接口實(shí)現(xiàn),準(zhǔn)確可靠。該數(shù)據(jù)接口的服務(wù)地址為:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。
4 ?結(jié) ?語
針對(duì)現(xiàn)有太陽能熱水監(jiān)測(cè)系統(tǒng)功能不完善、工程應(yīng)用較少的現(xiàn)狀,開發(fā)一套太陽能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),重點(diǎn)研究了軟件功能設(shè)計(jì)與實(shí)現(xiàn)。監(jiān)測(cè)系統(tǒng)基于.NET平臺(tái)開發(fā),引入了OPC技術(shù)有效地解決了數(shù)據(jù)遠(yuǎn)傳問題。系統(tǒng)應(yīng)用結(jié)果表明,基于OPC的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)可以穩(wěn)定、可靠地實(shí)現(xiàn)對(duì)多太陽能熱水子系統(tǒng)的遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)。在現(xiàn)場(chǎng)PLC的支持下,還可以實(shí)現(xiàn)對(duì)PLC的遠(yuǎn)程控制。下一步還可以對(duì)系統(tǒng)進(jìn)行擴(kuò)展,設(shè)計(jì)基于B/S模式的Web子系統(tǒng),用于監(jiān)測(cè)數(shù)據(jù)的網(wǎng)絡(luò)發(fā)布,以使系統(tǒng)的功能更加完整。
參考文獻(xiàn)
[1] 世博中心項(xiàng)目給水排水設(shè)計(jì)團(tuán)隊(duì).國內(nèi)外太陽能熱水系統(tǒng)應(yīng)用比較[J].給水排水,2008(1):67?72.
[2] 龔攀峰.基于OPC技術(shù)的城市能源監(jiān)測(cè)系統(tǒng)的研究[D].廣州:華南理工大學(xué),2012.
[3] 花新峰,贠衛(wèi)國.OPC數(shù)據(jù)訪問客戶端開發(fā)方法討論[J].現(xiàn)代電子技術(shù),2005,28(19):129?132.
[4] 溫昱.軟件架構(gòu)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[5] 鄭效田,鄭豐隆,鄧鐵六,等.KJ56型煤礦監(jiān)控系統(tǒng)軟件設(shè)計(jì)[J].煤炭科學(xué)技術(shù),1999,27(8):47?50.
[6] 羅冰洋,莫易敏.面向?qū)ο蟮拿旱V監(jiān)控系統(tǒng)軟件設(shè)計(jì)方法研究[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2005,27(3):31?33.
[7] ELLIOTT C,VIJAYAKUMAR V,ZINK W,et al. National instruments LabVIEW:a programming environment for laboratory automation and measurement [J]. Journal of the Association for Laboratory Automation, 2007, 12(1): 17?24.
[8] 王杰,高昆侖,朱曉東.OPC通信技術(shù)在可視化界面監(jiān)控系統(tǒng)中的應(yīng)用研究[J].計(jì)算機(jī)測(cè)量與控制,2012(1):74?77.
[9] 朱立軍,安娜,陳未如.基于Visual C#的OPC客戶端實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(2):171?173.
[10] ?劉旭昌,石林鎖.基于OPC技術(shù)的系統(tǒng)集成設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(8):46?48.
[11] 馬亮,張志鴻.OPC DA服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(25):228?230.endprint
int cancelId;
Array[] errors = new Array[1];
Array[] MySrverHandle = new Array[1];
/*****連OPC服務(wù)器、建立OPC組和添加OPC項(xiàng)****/
MyOpcServer = new OPCServer();
MyOpcServer.Connect("OPC.SimaticNET",localhost");
MyGroup[0]=MyOpcServer.OPCGroups.Add("group");
MyGroup[0].IsActive = true;
/****對(duì)應(yīng)變量的具體地址及服務(wù)句柄****/
MyItem1[0]=MyGroup[0].OPCItems.AddItem("S7:[S7 connection_1]db1,d208,1", 1);
ItemServerHandle1[1] = MyItem1[1].ServerHandle;
/***注冊(cè)異步讀取事件***/
MyGroup[0].AsyncReadComplete+=newDIOPCGroupEvent_ ? ? AsyncReadCompleteEventHandler(MyGroup01_ReadComplete);
/***異步讀、異步讀完成的回調(diào)函數(shù)***/
MyGroup[0].AsyncRead(20, ref MySrverHandle[0], out errors[0], 1, out cancelId);
void MyGroup01_ReadComplete(int TransactionID, int NumItems, ref System.Array ClientHandles, ref System.Array ItemValues, ref System.Array Qualities, ref System.Array TimeStamps, ref System.Array Errors);
3.2 ?數(shù)據(jù)訪問模塊
數(shù)據(jù)訪問模塊是按照軟件開發(fā)領(lǐng)域中典型的三層架構(gòu)來實(shí)現(xiàn)的。三層架構(gòu)將軟件規(guī)劃成表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層[4],如圖4所示。
<;E:\2014年23期\2014年23期\Image\21t4.tif>;
圖4 三層架構(gòu)示意圖
對(duì)于數(shù)據(jù)庫,系統(tǒng)將存儲(chǔ)過程子程序放在數(shù)據(jù)庫中,當(dāng).NET調(diào)用時(shí),可以像調(diào)用函數(shù)一樣對(duì)數(shù)據(jù)庫進(jìn)行操作。執(zhí)行運(yùn)行在數(shù)據(jù)庫中,在被調(diào)用一次后會(huì)放在Cache中,為下次執(zhí)行提供了方便。后期對(duì)數(shù)據(jù)庫操作維護(hù)時(shí),不需要修改應(yīng)用程序軟件,直接修改數(shù)據(jù)庫存儲(chǔ)過程子程序。
3.3 ?UI顯示模塊
對(duì)于本地監(jiān)控系統(tǒng),數(shù)據(jù)采集部分通過OPC通信方式,使用定時(shí)器控制數(shù)據(jù)讀取命令,將一些必要的數(shù)據(jù),如液位、溫度等,通過Flash、曲線與儀表顯示,增強(qiáng)了人機(jī)交互性,方便人員觀察數(shù)據(jù)的變化。顯示界面如圖5所示。
<;E:\2014年23期\2014年23期\Image\21t5.tif>;
圖5 系統(tǒng)顯示界面
3.4 ?故障報(bào)警模塊
實(shí)現(xiàn)對(duì)工程項(xiàng)目現(xiàn)場(chǎng)設(shè)備非正常狀態(tài)信息的多方式通報(bào)提醒。當(dāng)數(shù)據(jù)服務(wù)器分析出系統(tǒng)存在故障后,運(yùn)行界面上會(huì)出現(xiàn)報(bào)警燈的閃爍。當(dāng)用戶點(diǎn)擊報(bào)警燈后可以查看具體的故障類型和發(fā)生時(shí)間。數(shù)據(jù)中心操作員可以根據(jù)故障的類型及時(shí)通知現(xiàn)場(chǎng)管理員對(duì)故障進(jìn)行及時(shí)處理,避免發(fā)生嚴(yán)重的事故。
3.5 ?天氣預(yù)報(bào)
太陽能集熱工程與天氣狀況密切相關(guān),所以在系統(tǒng)中集成了天氣預(yù)報(bào)的功能,提供大中型城市3 天內(nèi)的詳細(xì)氣象信息。該功能通過調(diào)用中國氣象局?jǐn)?shù)據(jù)服務(wù)接口實(shí)現(xiàn),準(zhǔn)確可靠。該數(shù)據(jù)接口的服務(wù)地址為:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。
4 ?結(jié) ?語
針對(duì)現(xiàn)有太陽能熱水監(jiān)測(cè)系統(tǒng)功能不完善、工程應(yīng)用較少的現(xiàn)狀,開發(fā)一套太陽能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),重點(diǎn)研究了軟件功能設(shè)計(jì)與實(shí)現(xiàn)。監(jiān)測(cè)系統(tǒng)基于.NET平臺(tái)開發(fā),引入了OPC技術(shù)有效地解決了數(shù)據(jù)遠(yuǎn)傳問題。系統(tǒng)應(yīng)用結(jié)果表明,基于OPC的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)可以穩(wěn)定、可靠地實(shí)現(xiàn)對(duì)多太陽能熱水子系統(tǒng)的遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)。在現(xiàn)場(chǎng)PLC的支持下,還可以實(shí)現(xiàn)對(duì)PLC的遠(yuǎn)程控制。下一步還可以對(duì)系統(tǒng)進(jìn)行擴(kuò)展,設(shè)計(jì)基于B/S模式的Web子系統(tǒng),用于監(jiān)測(cè)數(shù)據(jù)的網(wǎng)絡(luò)發(fā)布,以使系統(tǒng)的功能更加完整。
參考文獻(xiàn)
[1] 世博中心項(xiàng)目給水排水設(shè)計(jì)團(tuán)隊(duì).國內(nèi)外太陽能熱水系統(tǒng)應(yīng)用比較[J].給水排水,2008(1):67?72.
[2] 龔攀峰.基于OPC技術(shù)的城市能源監(jiān)測(cè)系統(tǒng)的研究[D].廣州:華南理工大學(xué),2012.
[3] 花新峰,贠衛(wèi)國.OPC數(shù)據(jù)訪問客戶端開發(fā)方法討論[J].現(xiàn)代電子技術(shù),2005,28(19):129?132.
[4] 溫昱.軟件架構(gòu)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[5] 鄭效田,鄭豐隆,鄧鐵六,等.KJ56型煤礦監(jiān)控系統(tǒng)軟件設(shè)計(jì)[J].煤炭科學(xué)技術(shù),1999,27(8):47?50.
[6] 羅冰洋,莫易敏.面向?qū)ο蟮拿旱V監(jiān)控系統(tǒng)軟件設(shè)計(jì)方法研究[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2005,27(3):31?33.
[7] ELLIOTT C,VIJAYAKUMAR V,ZINK W,et al. National instruments LabVIEW:a programming environment for laboratory automation and measurement [J]. Journal of the Association for Laboratory Automation, 2007, 12(1): 17?24.
[8] 王杰,高昆侖,朱曉東.OPC通信技術(shù)在可視化界面監(jiān)控系統(tǒng)中的應(yīng)用研究[J].計(jì)算機(jī)測(cè)量與控制,2012(1):74?77.
[9] 朱立軍,安娜,陳未如.基于Visual C#的OPC客戶端實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(2):171?173.
[10] ?劉旭昌,石林鎖.基于OPC技術(shù)的系統(tǒng)集成設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(8):46?48.
[11] 馬亮,張志鴻.OPC DA服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(25):228?230.endprint
int cancelId;
Array[] errors = new Array[1];
Array[] MySrverHandle = new Array[1];
/*****連OPC服務(wù)器、建立OPC組和添加OPC項(xiàng)****/
MyOpcServer = new OPCServer();
MyOpcServer.Connect("OPC.SimaticNET",localhost");
MyGroup[0]=MyOpcServer.OPCGroups.Add("group");
MyGroup[0].IsActive = true;
/****對(duì)應(yīng)變量的具體地址及服務(wù)句柄****/
MyItem1[0]=MyGroup[0].OPCItems.AddItem("S7:[S7 connection_1]db1,d208,1", 1);
ItemServerHandle1[1] = MyItem1[1].ServerHandle;
/***注冊(cè)異步讀取事件***/
MyGroup[0].AsyncReadComplete+=newDIOPCGroupEvent_ ? ? AsyncReadCompleteEventHandler(MyGroup01_ReadComplete);
/***異步讀、異步讀完成的回調(diào)函數(shù)***/
MyGroup[0].AsyncRead(20, ref MySrverHandle[0], out errors[0], 1, out cancelId);
void MyGroup01_ReadComplete(int TransactionID, int NumItems, ref System.Array ClientHandles, ref System.Array ItemValues, ref System.Array Qualities, ref System.Array TimeStamps, ref System.Array Errors);
3.2 ?數(shù)據(jù)訪問模塊
數(shù)據(jù)訪問模塊是按照軟件開發(fā)領(lǐng)域中典型的三層架構(gòu)來實(shí)現(xiàn)的。三層架構(gòu)將軟件規(guī)劃成表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層[4],如圖4所示。
<;E:\2014年23期\2014年23期\Image\21t4.tif>;
圖4 三層架構(gòu)示意圖
對(duì)于數(shù)據(jù)庫,系統(tǒng)將存儲(chǔ)過程子程序放在數(shù)據(jù)庫中,當(dāng).NET調(diào)用時(shí),可以像調(diào)用函數(shù)一樣對(duì)數(shù)據(jù)庫進(jìn)行操作。執(zhí)行運(yùn)行在數(shù)據(jù)庫中,在被調(diào)用一次后會(huì)放在Cache中,為下次執(zhí)行提供了方便。后期對(duì)數(shù)據(jù)庫操作維護(hù)時(shí),不需要修改應(yīng)用程序軟件,直接修改數(shù)據(jù)庫存儲(chǔ)過程子程序。
3.3 ?UI顯示模塊
對(duì)于本地監(jiān)控系統(tǒng),數(shù)據(jù)采集部分通過OPC通信方式,使用定時(shí)器控制數(shù)據(jù)讀取命令,將一些必要的數(shù)據(jù),如液位、溫度等,通過Flash、曲線與儀表顯示,增強(qiáng)了人機(jī)交互性,方便人員觀察數(shù)據(jù)的變化。顯示界面如圖5所示。
<;E:\2014年23期\2014年23期\Image\21t5.tif>;
圖5 系統(tǒng)顯示界面
3.4 ?故障報(bào)警模塊
實(shí)現(xiàn)對(duì)工程項(xiàng)目現(xiàn)場(chǎng)設(shè)備非正常狀態(tài)信息的多方式通報(bào)提醒。當(dāng)數(shù)據(jù)服務(wù)器分析出系統(tǒng)存在故障后,運(yùn)行界面上會(huì)出現(xiàn)報(bào)警燈的閃爍。當(dāng)用戶點(diǎn)擊報(bào)警燈后可以查看具體的故障類型和發(fā)生時(shí)間。數(shù)據(jù)中心操作員可以根據(jù)故障的類型及時(shí)通知現(xiàn)場(chǎng)管理員對(duì)故障進(jìn)行及時(shí)處理,避免發(fā)生嚴(yán)重的事故。
3.5 ?天氣預(yù)報(bào)
太陽能集熱工程與天氣狀況密切相關(guān),所以在系統(tǒng)中集成了天氣預(yù)報(bào)的功能,提供大中型城市3 天內(nèi)的詳細(xì)氣象信息。該功能通過調(diào)用中國氣象局?jǐn)?shù)據(jù)服務(wù)接口實(shí)現(xiàn),準(zhǔn)確可靠。該數(shù)據(jù)接口的服務(wù)地址為:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。
4 ?結(jié) ?語
針對(duì)現(xiàn)有太陽能熱水監(jiān)測(cè)系統(tǒng)功能不完善、工程應(yīng)用較少的現(xiàn)狀,開發(fā)一套太陽能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),重點(diǎn)研究了軟件功能設(shè)計(jì)與實(shí)現(xiàn)。監(jiān)測(cè)系統(tǒng)基于.NET平臺(tái)開發(fā),引入了OPC技術(shù)有效地解決了數(shù)據(jù)遠(yuǎn)傳問題。系統(tǒng)應(yīng)用結(jié)果表明,基于OPC的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)可以穩(wěn)定、可靠地實(shí)現(xiàn)對(duì)多太陽能熱水子系統(tǒng)的遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)。在現(xiàn)場(chǎng)PLC的支持下,還可以實(shí)現(xiàn)對(duì)PLC的遠(yuǎn)程控制。下一步還可以對(duì)系統(tǒng)進(jìn)行擴(kuò)展,設(shè)計(jì)基于B/S模式的Web子系統(tǒng),用于監(jiān)測(cè)數(shù)據(jù)的網(wǎng)絡(luò)發(fā)布,以使系統(tǒng)的功能更加完整。
參考文獻(xiàn)
[1] 世博中心項(xiàng)目給水排水設(shè)計(jì)團(tuán)隊(duì).國內(nèi)外太陽能熱水系統(tǒng)應(yīng)用比較[J].給水排水,2008(1):67?72.
[2] 龔攀峰.基于OPC技術(shù)的城市能源監(jiān)測(cè)系統(tǒng)的研究[D].廣州:華南理工大學(xué),2012.
[3] 花新峰,贠衛(wèi)國.OPC數(shù)據(jù)訪問客戶端開發(fā)方法討論[J].現(xiàn)代電子技術(shù),2005,28(19):129?132.
[4] 溫昱.軟件架構(gòu)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[5] 鄭效田,鄭豐隆,鄧鐵六,等.KJ56型煤礦監(jiān)控系統(tǒng)軟件設(shè)計(jì)[J].煤炭科學(xué)技術(shù),1999,27(8):47?50.
[6] 羅冰洋,莫易敏.面向?qū)ο蟮拿旱V監(jiān)控系統(tǒng)軟件設(shè)計(jì)方法研究[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2005,27(3):31?33.
[7] ELLIOTT C,VIJAYAKUMAR V,ZINK W,et al. National instruments LabVIEW:a programming environment for laboratory automation and measurement [J]. Journal of the Association for Laboratory Automation, 2007, 12(1): 17?24.
[8] 王杰,高昆侖,朱曉東.OPC通信技術(shù)在可視化界面監(jiān)控系統(tǒng)中的應(yīng)用研究[J].計(jì)算機(jī)測(cè)量與控制,2012(1):74?77.
[9] 朱立軍,安娜,陳未如.基于Visual C#的OPC客戶端實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(2):171?173.
[10] ?劉旭昌,石林鎖.基于OPC技術(shù)的系統(tǒng)集成設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(8):46?48.
[11] 馬亮,張志鴻.OPC DA服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(25):228?230.endprint