朱彬,江愛(ài)朋,姜周曙,黃國(guó)輝
摘 ?要: 針對(duì)太陽(yáng)能熱水工程地域分布范圍廣、監(jiān)控難度大等問(wèn)題,研制開(kāi)發(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)警等功能。通過(guò)實(shí)際應(yīng)用表明,系統(tǒng)運(yùn)行可靠、穩(wěn)定,可以滿(mǎn)足遠(yuǎn)程監(jiān)控的要求,并可以在一些相關(guān)領(lǐng)域中加以推廣。
關(guān)鍵詞: OPC; 遠(yuǎn)程監(jiān)測(cè); 太陽(yáng)能熱水系統(tǒng); 數(shù)據(jù)中心
中圖分類(lèi)號(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)量的不斷增長(zhǎng)和人們對(duì)環(huán)境質(zhì)量要求的不斷提高,各種新能源己越來(lái)越受到人們的重視,太陽(yáng)能熱水系統(tǒng)作為綠色環(huán)保的新能源系統(tǒng),近幾年在住宅建筑的應(yīng)用得到了飛速發(fā)展,但太陽(yáng)能熱水器與建筑系統(tǒng)的集成還存在許多問(wèn)題[1]。目前國(guó)內(nèi)外很少有研究單位或部門(mén)對(duì)建筑的太陽(yáng)能熱水系統(tǒng)進(jìn)行連續(xù)一年以上的運(yùn)行狀況監(jiān)測(cè),而這些監(jiān)測(cè)數(shù)據(jù)對(duì)可再生能源示范建筑的示范性是非常重要的[2]。因此研究太陽(yáng)能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),并根據(jù)監(jiān)測(cè)數(shù)據(jù)進(jìn)行系統(tǒng)的綜合指標(biāo)評(píng)價(jià)對(duì)研究在不同氣候條件下太陽(yáng)能熱水系統(tǒng)的太陽(yáng)能利用情況具有非常重要的意義。
為了更好地實(shí)現(xiàn)與建筑能耗監(jiān)測(cè)平臺(tái)的集成,本文提出了一種基于OPC技術(shù)的太陽(yáng)能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)方案,使得運(yùn)行于上位機(jī)上的系統(tǒng)能夠通過(guò)以太網(wǎng)實(shí)現(xiàn)對(duì)多個(gè)太陽(yáng)能熱水子系統(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ǔ),采用客戶(hù)/服務(wù)器模型制定的一種工業(yè)控制領(lǐng)域的開(kāi)放式標(biāo)準(zhǔn)。OPC 在工業(yè)控制設(shè)備與應(yīng)用軟件之間建立了統(tǒng)一的軟件接口標(biāo)準(zhǔn),主要解決監(jiān)控程序與其數(shù)據(jù)源的交互問(wèn)題。利用OPC 技術(shù),可以對(duì)現(xiàn)場(chǎng)設(shè)備及其驅(qū)動(dòng)程序進(jìn)行封裝, 形成OPC服務(wù)器。
OPC 服務(wù)器向下對(duì)設(shè)備數(shù)據(jù)進(jìn)行采集,向上與OPC 客戶(hù)應(yīng)用程序通信完成數(shù)據(jù)交換。OPC服務(wù)器屏蔽了現(xiàn)場(chǎng)物理設(shè)備的驅(qū)動(dòng)程序,只要客戶(hù)應(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等基于腳本編程語(yǔ)言而定義的標(biāo)準(zhǔn)接口,而自定義接口是專(zhuān)門(mén)為C++等高級(jí)編程語(yǔ)言而制定的標(biāo)準(zhǔn)接口。應(yīng)用程序作為OPC接口的客戶(hù)方,硬件驅(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ù)器、客戶(hù)應(yīng)用程序與硬件設(shè)備之間的關(guān)系如圖1所示。
<;E:\2014年23期\2014年23期\Image\21t1.tif>;
圖1 OPC服務(wù)器、客戶(hù)應(yīng)用程序與硬件設(shè)備間的關(guān)系
2 ?太陽(yáng)能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng)總體架構(gòu)
太陽(yáng)能熱水遠(yuǎn)程檢測(cè)系統(tǒng)由分布在各個(gè)地區(qū)、不同氣候條件的現(xiàn)場(chǎng)監(jiān)測(cè)系統(tǒng)與數(shù)據(jù)中心平臺(tái)構(gòu)成。現(xiàn)場(chǎng)監(jiān)測(cè)系統(tǒng)經(jīng)過(guò)以太網(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能通過(guò)以太網(wǎng)傳輸數(shù)據(jù)。由于光纖傳輸信號(hào)帶寬寬、穩(wěn)定性好,因此遠(yuǎn)距離傳輸信號(hào)時(shí)都采用光纖傳輸。首先在工業(yè)控制現(xiàn)場(chǎng)將PLC工業(yè)以太網(wǎng)模塊與光電轉(zhuǎn)換器連接,通過(guò)光電轉(zhuǎn)換器將工業(yè)以太網(wǎng)的電信號(hào)轉(zhuǎn)換成光信號(hào),然后通過(guò)光纖傳輸,到達(dá)遠(yuǎn)處的控制室時(shí),再通過(guò)光電轉(zhuǎn)換器將光信號(hào)轉(zhuǎn)換成電信號(hào),接入交換機(jī)。對(duì)于處在不同工業(yè)控制現(xiàn)場(chǎng)的多臺(tái)PLC,可以分別通過(guò)光纖進(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)用程序可以通過(guò)OPC服務(wù)器來(lái)獲取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、多線(xiàn)程等編程技術(shù),以Microsoft SQL 2005為數(shù)據(jù)庫(kù),并且引入了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#語(yǔ)言實(shí)現(xiàn)OPC的數(shù)據(jù)通信[8],對(duì)應(yīng)系統(tǒng)的軟硬件平臺(tái),安裝完SIMATIC NET后,采用OPC.SimaticNET作為OPC Server,在VS中引用由西門(mén)OPC服務(wù)器提供的Siemens OPC DA Automation 2.0,利用自動(dòng)化接口形式訪(fǎng)問(wèn)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客戶(hù)端的交互存在三種方式:同步、異步和訂閱。通過(guò)3種方式的比較,本通信機(jī)制采用異步方式。
3.1.1 ?數(shù)據(jù)交互方式
在同步訪(fǎng)問(wèn)方式中,OPC服務(wù)器把按照OPC應(yīng)用程序要求得到的數(shù)據(jù)訪(fǎng)問(wèn)結(jié)果作為方法的參數(shù)返回給OPC應(yīng)用程序,OPC應(yīng)用程序在結(jié)果被返回之前必須處于等待狀態(tài)。本訪(fǎng)問(wèn)方式適合于傳輸數(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),如采用此種訪(fǎng)問(wèn)方式,應(yīng)用程序的等待時(shí)間浪費(fèi)比較長(zhǎng),降低了程序的效率。
訂閱方式數(shù)據(jù)采集只需要OPC應(yīng)用程序向OPC服務(wù)器發(fā)送一次請(qǐng)求,就可以自動(dòng)接到從OPC服務(wù)器送來(lái)的變化通知的訂閱方式數(shù)據(jù)采集。服務(wù)器按一定的周期更新OPC服務(wù)器的數(shù)據(jù)緩沖器的數(shù)值,如果發(fā)現(xiàn)數(shù)值有變化,就會(huì)以數(shù)據(jù)變化事件通知OPC應(yīng)用程序。系統(tǒng)采取該訂閱方式可以通過(guò)不敏感帶來(lái)設(shè)置當(dāng)前值與前次之差的絕對(duì)值超過(guò)一定限度時(shí),才更新緩沖區(qū)數(shù)據(jù)并通知OPC應(yīng)用程序,從而進(jìn)一步減輕OPC服務(wù)器和應(yīng)用程序的負(fù)荷,但由于本監(jiān)測(cè)系統(tǒng)對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高,所以不宜采用此種方式。
在異步訪(fǎng)問(wèn)方式中,OPC服務(wù)器接到OPC應(yīng)用程序的要求后,幾乎立即將方法返回。OPC應(yīng)用程序隨后可以進(jìn)行其他處理。當(dāng)OPC服務(wù)器完成數(shù)據(jù)訪(fǎng)問(wèn)時(shí),觸發(fā)OPC應(yīng)用程序的異步訪(fǎng)問(wèn)事件,將數(shù)據(jù)訪(fǎng)問(wèn)結(jié)果傳送給OPC應(yīng)用程序。OPC應(yīng)用程序在C#的事件處理程序中接受從OPC服務(wù)器傳送來(lái)的數(shù)據(jù)。因此,本訪(fǎng)問(wèn)方式針對(duì)本監(jiān)測(cè)系統(tǒng)的海量數(shù)據(jù)的傳輸和客戶(hù)端對(duì)OPC服務(wù)器的頻繁要求,效率比較高。
3.1.2 ?數(shù)據(jù)存取方式
在OPC服務(wù)器中,Cache是重要的組成部分,存儲(chǔ)結(jié)構(gòu)將直接影響數(shù)據(jù)訪(fǎng)問(wèn)的速度,它負(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ú)立的哈希表類(lèi)(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ù)訪(fǎng)問(wèn)模塊
數(shù)據(jù)訪(fǎng)問(wèn)模塊是按照軟件開(kāi)發(fā)領(lǐng)域中典型的三層架構(gòu)來(lái)實(shí)現(xiàn)的。三層架構(gòu)將軟件規(guī)劃成表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層[4],如圖4所示。
<;E:\2014年23期\2014年23期\Image\21t4.tif>;
圖4 三層架構(gòu)示意圖
對(duì)于數(shù)據(jù)庫(kù),系統(tǒng)將存儲(chǔ)過(guò)程子程序放在數(shù)據(jù)庫(kù)中,當(dāng).NET調(diào)用時(shí),可以像調(diào)用函數(shù)一樣對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。執(zhí)行運(yùn)行在數(shù)據(jù)庫(kù)中,在被調(diào)用一次后會(huì)放在Cache中,為下次執(zhí)行提供了方便。后期對(duì)數(shù)據(jù)庫(kù)操作維護(hù)時(shí),不需要修改應(yīng)用程序軟件,直接修改數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程子程序。
3.3 ?UI顯示模塊
對(duì)于本地監(jiān)控系統(tǒng),數(shù)據(jù)采集部分通過(guò)OPC通信方式,使用定時(shí)器控制數(shù)據(jù)讀取命令,將一些必要的數(shù)據(jù),如液位、溫度等,通過(guò)Flash、曲線(xiàn)與儀表顯示,增強(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)用戶(hù)點(diǎn)擊報(bào)警燈后可以查看具體的故障類(lèi)型和發(fā)生時(shí)間。數(shù)據(jù)中心操作員可以根據(jù)故障的類(lèi)型及時(shí)通知現(xiàn)場(chǎng)管理員對(duì)故障進(jìn)行及時(shí)處理,避免發(fā)生嚴(yán)重的事故。
3.5 ?天氣預(yù)報(bào)
太陽(yáng)能集熱工程與天氣狀況密切相關(guān),所以在系統(tǒng)中集成了天氣預(yù)報(bào)的功能,提供大中型城市3 天內(nèi)的詳細(xì)氣象信息。該功能通過(guò)調(diào)用中國(guó)氣象局?jǐn)?shù)據(jù)服務(wù)接口實(shí)現(xiàn),準(zhǔn)確可靠。該數(shù)據(jù)接口的服務(wù)地址為:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。
4 ?結(jié) ?語(yǔ)
針對(duì)現(xiàn)有太陽(yáng)能熱水監(jiān)測(cè)系統(tǒng)功能不完善、工程應(yīng)用較少的現(xiàn)狀,開(kāi)發(fā)一套太陽(yáng)能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),重點(diǎn)研究了軟件功能設(shè)計(jì)與實(shí)現(xiàn)。監(jiān)測(cè)系統(tǒng)基于.NET平臺(tái)開(kāi)發(fā),引入了OPC技術(shù)有效地解決了數(shù)據(jù)遠(yuǎn)傳問(wèn)題。系統(tǒng)應(yīng)用結(jié)果表明,基于OPC的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)可以穩(wěn)定、可靠地實(shí)現(xiàn)對(duì)多太陽(yáng)能熱水子系統(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ì).國(guó)內(nèi)外太陽(yáng)能熱水系統(tǒng)應(yīng)用比較[J].給水排水,2008(1):67?72.
[2] 龔攀峰.基于OPC技術(shù)的城市能源監(jiān)測(cè)系統(tǒng)的研究[D].廣州:華南理工大學(xué),2012.
[3] 花新峰,贠衛(wèi)國(guó).OPC數(shù)據(jù)訪(fǎng)問(wèn)客戶(hù)端開(kāi)發(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客戶(hù)端實(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ù)訪(fǎng)問(wèn)模塊
數(shù)據(jù)訪(fǎng)問(wèn)模塊是按照軟件開(kāi)發(fā)領(lǐng)域中典型的三層架構(gòu)來(lái)實(shí)現(xiàn)的。三層架構(gòu)將軟件規(guī)劃成表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層[4],如圖4所示。
<;E:\2014年23期\2014年23期\Image\21t4.tif>;
圖4 三層架構(gòu)示意圖
對(duì)于數(shù)據(jù)庫(kù),系統(tǒng)將存儲(chǔ)過(guò)程子程序放在數(shù)據(jù)庫(kù)中,當(dāng).NET調(diào)用時(shí),可以像調(diào)用函數(shù)一樣對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。執(zhí)行運(yùn)行在數(shù)據(jù)庫(kù)中,在被調(diào)用一次后會(huì)放在Cache中,為下次執(zhí)行提供了方便。后期對(duì)數(shù)據(jù)庫(kù)操作維護(hù)時(shí),不需要修改應(yīng)用程序軟件,直接修改數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程子程序。
3.3 ?UI顯示模塊
對(duì)于本地監(jiān)控系統(tǒng),數(shù)據(jù)采集部分通過(guò)OPC通信方式,使用定時(shí)器控制數(shù)據(jù)讀取命令,將一些必要的數(shù)據(jù),如液位、溫度等,通過(guò)Flash、曲線(xiàn)與儀表顯示,增強(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)用戶(hù)點(diǎn)擊報(bào)警燈后可以查看具體的故障類(lèi)型和發(fā)生時(shí)間。數(shù)據(jù)中心操作員可以根據(jù)故障的類(lèi)型及時(shí)通知現(xiàn)場(chǎng)管理員對(duì)故障進(jìn)行及時(shí)處理,避免發(fā)生嚴(yán)重的事故。
3.5 ?天氣預(yù)報(bào)
太陽(yáng)能集熱工程與天氣狀況密切相關(guān),所以在系統(tǒng)中集成了天氣預(yù)報(bào)的功能,提供大中型城市3 天內(nèi)的詳細(xì)氣象信息。該功能通過(guò)調(diào)用中國(guó)氣象局?jǐn)?shù)據(jù)服務(wù)接口實(shí)現(xiàn),準(zhǔn)確可靠。該數(shù)據(jù)接口的服務(wù)地址為:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。
4 ?結(jié) ?語(yǔ)
針對(duì)現(xiàn)有太陽(yáng)能熱水監(jiān)測(cè)系統(tǒng)功能不完善、工程應(yīng)用較少的現(xiàn)狀,開(kāi)發(fā)一套太陽(yáng)能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),重點(diǎn)研究了軟件功能設(shè)計(jì)與實(shí)現(xiàn)。監(jiān)測(cè)系統(tǒng)基于.NET平臺(tái)開(kāi)發(fā),引入了OPC技術(shù)有效地解決了數(shù)據(jù)遠(yuǎn)傳問(wèn)題。系統(tǒng)應(yīng)用結(jié)果表明,基于OPC的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)可以穩(wěn)定、可靠地實(shí)現(xiàn)對(duì)多太陽(yáng)能熱水子系統(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ì).國(guó)內(nèi)外太陽(yáng)能熱水系統(tǒng)應(yīng)用比較[J].給水排水,2008(1):67?72.
[2] 龔攀峰.基于OPC技術(shù)的城市能源監(jiān)測(cè)系統(tǒng)的研究[D].廣州:華南理工大學(xué),2012.
[3] 花新峰,贠衛(wèi)國(guó).OPC數(shù)據(jù)訪(fǎng)問(wèn)客戶(hù)端開(kāi)發(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客戶(hù)端實(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ù)訪(fǎng)問(wèn)模塊
數(shù)據(jù)訪(fǎng)問(wèn)模塊是按照軟件開(kāi)發(fā)領(lǐng)域中典型的三層架構(gòu)來(lái)實(shí)現(xiàn)的。三層架構(gòu)將軟件規(guī)劃成表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層[4],如圖4所示。
<;E:\2014年23期\2014年23期\Image\21t4.tif>;
圖4 三層架構(gòu)示意圖
對(duì)于數(shù)據(jù)庫(kù),系統(tǒng)將存儲(chǔ)過(guò)程子程序放在數(shù)據(jù)庫(kù)中,當(dāng).NET調(diào)用時(shí),可以像調(diào)用函數(shù)一樣對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。執(zhí)行運(yùn)行在數(shù)據(jù)庫(kù)中,在被調(diào)用一次后會(huì)放在Cache中,為下次執(zhí)行提供了方便。后期對(duì)數(shù)據(jù)庫(kù)操作維護(hù)時(shí),不需要修改應(yīng)用程序軟件,直接修改數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程子程序。
3.3 ?UI顯示模塊
對(duì)于本地監(jiān)控系統(tǒng),數(shù)據(jù)采集部分通過(guò)OPC通信方式,使用定時(shí)器控制數(shù)據(jù)讀取命令,將一些必要的數(shù)據(jù),如液位、溫度等,通過(guò)Flash、曲線(xiàn)與儀表顯示,增強(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)用戶(hù)點(diǎn)擊報(bào)警燈后可以查看具體的故障類(lèi)型和發(fā)生時(shí)間。數(shù)據(jù)中心操作員可以根據(jù)故障的類(lèi)型及時(shí)通知現(xiàn)場(chǎng)管理員對(duì)故障進(jìn)行及時(shí)處理,避免發(fā)生嚴(yán)重的事故。
3.5 ?天氣預(yù)報(bào)
太陽(yáng)能集熱工程與天氣狀況密切相關(guān),所以在系統(tǒng)中集成了天氣預(yù)報(bào)的功能,提供大中型城市3 天內(nèi)的詳細(xì)氣象信息。該功能通過(guò)調(diào)用中國(guó)氣象局?jǐn)?shù)據(jù)服務(wù)接口實(shí)現(xiàn),準(zhǔn)確可靠。該數(shù)據(jù)接口的服務(wù)地址為:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。
4 ?結(jié) ?語(yǔ)
針對(duì)現(xiàn)有太陽(yáng)能熱水監(jiān)測(cè)系統(tǒng)功能不完善、工程應(yīng)用較少的現(xiàn)狀,開(kāi)發(fā)一套太陽(yáng)能熱水遠(yuǎn)程監(jiān)測(cè)系統(tǒng),重點(diǎn)研究了軟件功能設(shè)計(jì)與實(shí)現(xiàn)。監(jiān)測(cè)系統(tǒng)基于.NET平臺(tái)開(kāi)發(fā),引入了OPC技術(shù)有效地解決了數(shù)據(jù)遠(yuǎn)傳問(wèn)題。系統(tǒng)應(yīng)用結(jié)果表明,基于OPC的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)可以穩(wěn)定、可靠地實(shí)現(xiàn)對(duì)多太陽(yáng)能熱水子系統(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ì).國(guó)內(nèi)外太陽(yáng)能熱水系統(tǒng)應(yīng)用比較[J].給水排水,2008(1):67?72.
[2] 龔攀峰.基于OPC技術(shù)的城市能源監(jiān)測(cè)系統(tǒng)的研究[D].廣州:華南理工大學(xué),2012.
[3] 花新峰,贠衛(wèi)國(guó).OPC數(shù)據(jù)訪(fǎng)問(wèn)客戶(hù)端開(kāi)發(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客戶(hù)端實(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