方國(guó)平
[摘 要] 基于Aspen公司InfoPlus.21實(shí)時(shí)數(shù)據(jù)庫(kù)多年的運(yùn)維經(jīng)驗(yàn),針對(duì)運(yùn)維中常見問(wèn)題和用戶需求,利用微軟.NET2.0架構(gòu)通過(guò)ODBC訪問(wèn)實(shí)時(shí)數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)采集、處理、存儲(chǔ)、綜合分析和報(bào)警的監(jiān)控系統(tǒng),詳述了設(shè)計(jì)方法,分析了關(guān)鍵技術(shù)。該系統(tǒng)充分運(yùn)用了.NET 2.0的成熟開發(fā)技術(shù),IDE開發(fā)環(huán)境和C#編程語(yǔ)言。運(yùn)行結(jié)果表明,該系統(tǒng)具有較高的實(shí)用性和可擴(kuò)展性。
[關(guān)鍵詞] .NET;實(shí)時(shí)數(shù)據(jù)庫(kù);ODBC;報(bào)警
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2014 . 17. 021
[中圖分類號(hào)] TP315 [文獻(xiàn)標(biāo)識(shí)碼] A [文章編號(hào)] 1673 - 0194(2014)17- 0033- 03
1 引 言
InfoPlus.21是Aspen公司的實(shí)時(shí)數(shù)據(jù)庫(kù)軟件,是用于集成生產(chǎn)過(guò)程信息(如各種工藝參數(shù))與上層應(yīng)用程序(如先進(jìn)控制、優(yōu)化、過(guò)程管理)的基礎(chǔ)數(shù)據(jù)平臺(tái),InfoPlus.21遵循開放原則,性能穩(wěn)定、可靠。InfoPlus.21可通過(guò)多種方式的過(guò)程數(shù)據(jù)接口將DCS、PLC、SCADA及其他實(shí)時(shí)數(shù)據(jù)采集到實(shí)時(shí)數(shù)據(jù)庫(kù)中。它有功能強(qiáng)大的數(shù)據(jù)定義、歷史數(shù)據(jù)管理和分析功能,通過(guò)使用Aspen提供的PE繪制圖形化的工藝流程實(shí)時(shí)數(shù)據(jù)顯示界面,用戶不僅可以通過(guò)IE以Web方式瀏覽工藝流程實(shí)時(shí)數(shù)據(jù),而且可通過(guò)IE任意組合查詢多個(gè)位號(hào)的歷史趨勢(shì),為用戶提供了一條遠(yuǎn)程集成訪問(wèn)和分析裝置工藝生產(chǎn)情況的快捷通道。
InfoPlus.21作為實(shí)時(shí)信息管理系統(tǒng),它支持多線程、C/S結(jié)構(gòu)和B/S結(jié)構(gòu),特別是它靈活的數(shù)據(jù)結(jié)構(gòu)可以根據(jù)應(yīng)用的需要重新定義以適應(yīng)各類應(yīng)用的需求,同時(shí)可利用ODBC與關(guān)系數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交換。由于豐富的經(jīng)驗(yàn)以及在實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)方面的領(lǐng)先地位,使得實(shí)時(shí)數(shù)據(jù)庫(kù)可以與世界上大多數(shù)的DCS及PLC集成在一起。該軟件廣泛應(yīng)用于煉油、金屬冶煉、造紙、石化、制藥等行業(yè)。
2003年某企業(yè)實(shí)施了Aspen InfoPlus.21實(shí)時(shí)數(shù)據(jù)庫(kù),涉及企業(yè)9個(gè)生產(chǎn)單位的50多套裝置,實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)采集和監(jiān)控,工藝點(diǎn)數(shù)已達(dá)到23 000點(diǎn);但隨著系統(tǒng)規(guī)模的擴(kuò)大,維護(hù)的工作量也越來(lái)越大。實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)如何長(zhǎng)周期、可靠運(yùn)行成為突出問(wèn)題。在日常運(yùn)維過(guò)程中,主要遇到3類問(wèn)題:一是系統(tǒng)硬件或軟件出現(xiàn)問(wèn)題,具有偶發(fā)性,不能提前預(yù)知;二是從50多套裝置、2 000多幅流程圖中找出故障點(diǎn),既費(fèi)時(shí)又費(fèi)力;三是出現(xiàn)故障往往先是由用戶反映出來(lái),IT人員不能主動(dòng)察覺。針對(duì)上述問(wèn)題,企業(yè)提出開發(fā)一套基于.NET 2.0架構(gòu)的實(shí)時(shí)數(shù)據(jù)庫(kù)狀態(tài)監(jiān)控軟件,以實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)狀態(tài)的7×24小時(shí)不間斷監(jiān)測(cè),并即時(shí)發(fā)出報(bào)警,為實(shí)時(shí)數(shù)據(jù)庫(kù)的維護(hù)發(fā)揮作用。
2 系統(tǒng)設(shè)計(jì)
InfoPlus.21由數(shù)據(jù)庫(kù)內(nèi)核、接口、各類工具包組成,InfoPlus.21系統(tǒng)結(jié)構(gòu)如圖1所示。
.NET技術(shù)是微軟用來(lái)實(shí)現(xiàn)XML,Web Services,SOA和敏捷性的技術(shù),監(jiān)控服務(wù)器安裝微軟的.NET 2.0開發(fā)程序,.NET是微軟的新一代技術(shù)平臺(tái),為敏捷商務(wù)構(gòu)建互聯(lián)互通的應(yīng)用系統(tǒng),這些系統(tǒng)是基于標(biāo)準(zhǔn)的、聯(lián)通的、適應(yīng)變化的、穩(wěn)定的和高性能的。從技術(shù)的角度,一個(gè).NET應(yīng)用是一個(gè)運(yùn)行于.NET Framework之上的應(yīng)用程序。更精確地說(shuō),一個(gè).NET應(yīng)用是一個(gè)使用.NET Framework類庫(kù)來(lái)編寫,并運(yùn)行于公共語(yǔ)言運(yùn)行時(shí)(Common Language Runtime)之上的應(yīng)用程序。
為了實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)庫(kù)的即時(shí)監(jiān)控和報(bào)警,狀態(tài)監(jiān)控系統(tǒng)采用成熟的三層架構(gòu)即:表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層構(gòu)建。數(shù)據(jù)訪問(wèn)層包括通信和數(shù)據(jù)轉(zhuǎn)存,采用了ODBC與實(shí)時(shí)數(shù)據(jù)庫(kù)進(jìn)行通信,通過(guò)SQL Server 2005進(jìn)行數(shù)據(jù)儲(chǔ)存。業(yè)務(wù)邏輯層采用Visual C# 2008實(shí)現(xiàn),通過(guò)后臺(tái)多任務(wù)方式連續(xù)采集各裝置的關(guān)鍵點(diǎn)數(shù)據(jù),并進(jìn)行加工處理,調(diào)度周期是5分鐘采集并處理一次。表現(xiàn)層如查詢、報(bào)警、趨勢(shì)圖顯示在Web界面實(shí)現(xiàn)。監(jiān)控系統(tǒng)物理結(jié)構(gòu)如圖2所示。
系統(tǒng)基于在用的InfoPlus.21實(shí)時(shí)數(shù)據(jù)庫(kù),由監(jiān)控服務(wù)器和客戶端組成。實(shí)時(shí)數(shù)據(jù)庫(kù)是系統(tǒng)的數(shù)據(jù)源,與監(jiān)控服務(wù)器同屬局域網(wǎng)內(nèi)的一個(gè)域中。為了節(jié)省資源,監(jiān)控服務(wù)器采用VMware虛擬機(jī)實(shí)現(xiàn)。VMware在虛擬化和云計(jì)算基礎(chǔ)架構(gòu)領(lǐng)域處于全球領(lǐng)先地位,所提供的經(jīng)客戶驗(yàn)證的解決方案可通過(guò)降低復(fù)雜性以及更靈活、敏捷地交付服務(wù)來(lái)提高IT效率。VMware使企業(yè)可以采用能夠解決其獨(dú)有業(yè)務(wù)難題的云計(jì)算模式。VMware提供的方法可在保留現(xiàn)有投資并提高安全性和控制力的同時(shí),加快向云計(jì)算的過(guò)渡。通過(guò)VMware虛擬出的服務(wù)器分配4核CPU,4G內(nèi)存,500G硬盤,硬件資源可根據(jù)將來(lái)應(yīng)用要求自由擴(kuò)展。既便于維護(hù),又節(jié)省了費(fèi)用。
為了向用戶提供便捷的查詢服務(wù),通常使用Web Server。為此,監(jiān)控服務(wù)器安裝有微軟的Windows 2003 Server操作系統(tǒng)和IIS 6.0服務(wù),該虛擬機(jī)既是數(shù)據(jù)庫(kù)服務(wù)器又是Web服務(wù)器,并負(fù)責(zé)向外提供查詢服務(wù)。服務(wù)功能包括數(shù)據(jù)查詢、報(bào)警、趨勢(shì)圖顯示等,客戶端只要安裝IE 6.0及以上版本瀏覽器就可以了。
3 關(guān)鍵技術(shù)
3.1 InfoPlus.21實(shí)時(shí)數(shù)據(jù)庫(kù)的訪問(wèn)方式
通常InfoPlus.21實(shí)時(shí)數(shù)據(jù)庫(kù)的訪問(wèn)方式主要有以下3種:①使用實(shí)時(shí)數(shù)據(jù)庫(kù)提供的API。這種方式效率最高,開發(fā)簡(jiǎn)單,但需要安裝Aspen提供的庫(kù)文件。②使用ODBC。大部分實(shí)時(shí)數(shù)據(jù)庫(kù)提供了標(biāo)準(zhǔn)的ODBC接口,也提供了SQL查詢語(yǔ)言,通過(guò)這些方法,用戶可以將實(shí)時(shí)數(shù)據(jù)庫(kù)當(dāng)作一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)來(lái)使用。但這種方法速度較慢,適合于對(duì)關(guān)系數(shù)據(jù)庫(kù)比較熟練的用戶。③使用OPC方式(OLE for Process Control)。因?yàn)樘嗟臄?shù)據(jù)庫(kù)和DCS使用自己的API方式存取數(shù)據(jù),無(wú)法做到算法的通用,為此工業(yè)監(jiān)控領(lǐng)域提出了一個(gè)標(biāo)準(zhǔn)的存取接口,這就是OPC,如今有超過(guò)200家廠商加入到OPC組織中。OPC方式需單獨(dú)開發(fā)一個(gè)客戶端程序,利用軟件包或標(biāo)準(zhǔn)OPC開發(fā)規(guī)范均可,但對(duì)開發(fā)人員的技術(shù)要求較高,目前僅適合微軟的Windows平臺(tái)。
考慮到接口的開發(fā)效率和易用性,采用ODBC存取,OLEDB是微軟基于COM的一個(gè)數(shù)據(jù)庫(kù)訪問(wèn)接口標(biāo)準(zhǔn)。使用InfoPlus.21 ODBC,用戶能夠像訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)一樣訪問(wèn)InfoPlus.21系統(tǒng)?;贠DBC的數(shù)據(jù)接口程序和客戶端應(yīng)用程序,可利用標(biāo)準(zhǔn)的SQL語(yǔ)句訪問(wèn)InfoPlus.21數(shù)據(jù)庫(kù),包括IP Archive、IP Point Database或其他配置數(shù)據(jù)。InfoPlus.21的ODBC是基于SQLplus的,SQLplus有如下特點(diǎn):①可查詢實(shí)時(shí)數(shù)據(jù)庫(kù),歷史信息以及組態(tài)信息;②可對(duì)關(guān)系數(shù)據(jù)庫(kù)和文本文件集成訪問(wèn);③可對(duì)數(shù)據(jù)進(jìn)行排序和更改,并將來(lái)自實(shí)時(shí)數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行合并和連接;④過(guò)程式SQL語(yǔ)言可進(jìn)行更加復(fù)雜的查詢或應(yīng)用開發(fā)、生成報(bào)告、進(jìn)行數(shù)據(jù)庫(kù)維護(hù)及編寫應(yīng)用腳本;⑤客戶/服務(wù)器體系可以實(shí)現(xiàn)辦公室和住所PC機(jī)的遠(yuǎn)程查詢;⑥支持大量的ODBC客戶應(yīng)用,可方便地建立報(bào)告和查詢。
3.2 開發(fā)配置
系統(tǒng)在開發(fā)前首先必須安裝實(shí)時(shí)數(shù)據(jù)庫(kù)訪問(wèn)組件和開發(fā)包,并進(jìn)行必要的配置。
(1)安裝組件,在監(jiān)控服務(wù)器虛擬機(jī)上安裝ODBC組件,該組件名為IP21ODBC.DLL。先將該組件拷入“c:\windows\system32\”文件夾中,再利用“resver32 c:\windows\system32\ip21odbc.dll”進(jìn)行注冊(cè),然后打開系統(tǒng)控制面板,在其中找到“數(shù)據(jù)源(ODBC)”,打開窗口,就可找到Aspen的驅(qū)動(dòng)了,再進(jìn)行配置,其配置界面如圖3所示。
(2)在監(jiān)控服務(wù)器虛擬機(jī)上安裝SQL Server 2005,安裝完畢,在系統(tǒng)中通過(guò)手工或SQL語(yǔ)句建立數(shù)據(jù)庫(kù)monitor,在數(shù)據(jù)庫(kù)上分別建立Alarm、Checkdb、Display、Hisdata等數(shù)據(jù)庫(kù)表。Checkdb是主表,里面存放有各裝置工藝位號(hào)與實(shí)時(shí)數(shù)據(jù)庫(kù)點(diǎn)位號(hào)的映射關(guān)系和對(duì)應(yīng)裝置描述,目前各裝置取3個(gè)點(diǎn),邏輯上以三取二標(biāo)準(zhǔn),3個(gè)關(guān)鍵點(diǎn)需兩個(gè)以上出現(xiàn)故障才報(bào)警。
(3)在監(jiān)控服務(wù)器虛擬機(jī)上啟用IIS 6.0程序,在默認(rèn)網(wǎng)站下建立虛擬目錄和應(yīng)用程序名,由于Web服務(wù)是采用微軟的.NET2.0架構(gòu),需對(duì)Monitor虛擬目錄屬性添加應(yīng)用程序,確保asp.NET版本為2.0.50727,否則.NET 2.0無(wú)法工作。
(4)最后在Visual Studio.Net 2008集成環(huán)境下進(jìn)行C#開發(fā),開發(fā)的模塊分為實(shí)時(shí)數(shù)據(jù)庫(kù)監(jiān)控處理模塊和Web展示模塊,這兩個(gè)模塊分別設(shè)計(jì)。前者用Windows窗體客戶端程序?qū)崿F(xiàn),后者用Web應(yīng)用程序?qū)崿F(xiàn)。監(jiān)控具體過(guò)程為:實(shí)時(shí)數(shù)據(jù)數(shù)據(jù)庫(kù)監(jiān)控處理模塊每5分鐘進(jìn)行一次任務(wù)調(diào)度,從Checkdb表中取出裝置的對(duì)應(yīng)記錄,調(diào)用ODBC從實(shí)時(shí)數(shù)據(jù)庫(kù)中取出當(dāng)前數(shù)據(jù),然后利用該位號(hào)從歷史庫(kù)中取出一定時(shí)間段內(nèi)數(shù)據(jù)序列。對(duì)數(shù)據(jù)序列進(jìn)行求和、求平均,如果平均值一直等于先前的實(shí)時(shí)值,則表明該裝置的點(diǎn)數(shù)據(jù)沒有變化,可能有問(wèn)題,通知程序待查,否則正常。如果該裝置的3個(gè)關(guān)鍵點(diǎn)有兩個(gè)以上都沒有變化則提示報(bào)警,同時(shí)將報(bào)警狀態(tài)和時(shí)間寫入SQL Server 2005數(shù)據(jù)庫(kù)中,供Web程序調(diào)用。各裝置的關(guān)鍵點(diǎn)非常重要,最好能取溫度、壓力等易變化的位號(hào)。
(5)在設(shè)計(jì)過(guò)程中,通過(guò)ODBC取實(shí)時(shí)數(shù)據(jù)庫(kù)的數(shù)據(jù)時(shí)要注意3點(diǎn):一是實(shí)時(shí)數(shù)據(jù)庫(kù)針對(duì)現(xiàn)場(chǎng)工藝情況一般分為pv點(diǎn)和pid點(diǎn),其歷史庫(kù)的字段名不一樣。pv點(diǎn)的字段名是ip_trend_value,而pid點(diǎn)是pv_trend_value;二是在歷史庫(kù)中,對(duì)應(yīng)pv和pid點(diǎn),其數(shù)據(jù)庫(kù)的日期字段分別是pv_value_time和ip_value_time; 三是InfoPlus.21對(duì)日期格式的表示是“日-月-年”,且月份用英語(yǔ)的縮寫表示,如2014年4月1日則表示為“01-APR-14”。
(6)Web程序設(shè)計(jì)模塊直接利用Gridview控件進(jìn)行歷史數(shù)據(jù)展示,為了同步顯示該關(guān)鍵點(diǎn)的曲線,利用微軟的GDI程序,先在內(nèi)存中建立窗口畫板,將曲線在緩存中畫出,然后利用Web技術(shù)的response對(duì)象將GDI中的圖形流直接輸出到客戶端,這樣瀏覽器直接將曲線顯示出來(lái),由于沒有采用原有的先將圖形生成存入服務(wù)器,然后再用HTML的展示圖形的方法,而是采用了GDI,提高了曲線的顯示速度。
(7)實(shí)時(shí)數(shù)據(jù)庫(kù)的上位機(jī)是CIMIO數(shù)據(jù)采集機(jī),該機(jī)器是為了將底層的DCS及儀表的數(shù)據(jù)通過(guò)OPC方式采集到實(shí)時(shí)數(shù)據(jù)庫(kù)的中轉(zhuǎn)基站,它的運(yùn)行好壞直接影響實(shí)時(shí)數(shù)據(jù)庫(kù)的使用效果。經(jīng)過(guò)研究發(fā)現(xiàn):實(shí)時(shí)數(shù)據(jù)庫(kù)中的IOGET任務(wù)與CIMIO機(jī)器是通過(guò)多個(gè)進(jìn)程進(jìn)行通信,其運(yùn)行和通信狀態(tài)是可以通過(guò)SQL方式查詢的,在SQLplus中通過(guò)以下語(yǔ)句就可以查詢并監(jiān)控:select name,io_last_status from iogetdef where io_last_status='CIM I/O Error'。
4 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)運(yùn)行一年多以來(lái),處理技術(shù)不斷提高和完善,滿足了實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)故障報(bào)警的即時(shí)性要求,為處理系統(tǒng)故障預(yù)留了保貴的時(shí)間。一是該監(jiān)控系統(tǒng)在開發(fā)過(guò)程中通過(guò)優(yōu)化技術(shù),保證了其性能和功能,如每套待監(jiān)控的裝置,通過(guò)與工藝人員反復(fù)溝通、測(cè)試,取溫度、壓力、流量3類關(guān)鍵點(diǎn);二是對(duì)裝置位號(hào)漸變的判定算法最終修改為:通過(guò)取一定時(shí)間內(nèi)的最大值與最小值比較,若差值在某個(gè)很小的范圍內(nèi)則認(rèn)為沒有變化,反之,其差值大于給定的范圍,則認(rèn)為有變化。三是監(jiān)控核心程序采用.NET的多線程Thread技術(shù),并考慮到異步與線程間的通信。四是預(yù)設(shè)了短信功能接口,若今后需要短信通知功能,則僅配置接口即可。
實(shí)時(shí)數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng)為一個(gè)集C/S與B/S架構(gòu)的用于運(yùn)行維護(hù)管理的在線系統(tǒng),目前主要實(shí)現(xiàn)的功能有:InfoPlus.21實(shí)時(shí)數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)監(jiān)測(cè),各主要裝置OPC通信連接狀態(tài)監(jiān)測(cè),裝置位號(hào)的添加、刪除、修改維護(hù),監(jiān)測(cè)點(diǎn)的歷史數(shù)據(jù)及趨勢(shì)圖查詢,Web頁(yè)面文字報(bào)警,發(fā)送郵件到指定用戶的報(bào)警,短信通知報(bào)警接口,監(jiān)測(cè)數(shù)據(jù)的歷史追溯等。
5 結(jié) 語(yǔ)
實(shí)時(shí)數(shù)據(jù)庫(kù)狀態(tài)監(jiān)控系統(tǒng)的實(shí)現(xiàn)給實(shí)時(shí)數(shù)據(jù)庫(kù)的深層次應(yīng)用帶來(lái)了質(zhì)的飛躍,解決了通過(guò)人工方式進(jìn)行監(jiān)控所帶來(lái)的耗時(shí)、費(fèi)力、響應(yīng)慢等問(wèn)題,改進(jìn)了系統(tǒng)的維護(hù)方式,提高了系統(tǒng)故障的響應(yīng)及時(shí)性,改變了用戶提醒維護(hù)的被動(dòng)局面,變事后反饋為主動(dòng)預(yù)警。尤其今后短信功能的增加將大大提高該系統(tǒng)的實(shí)用性,方便了用戶,也為各類系統(tǒng)的監(jiān)控開發(fā)應(yīng)用進(jìn)行了有益探索。
主要參考文獻(xiàn)
[1]張志檁.實(shí)時(shí)數(shù)據(jù)庫(kù)原理及應(yīng)用[M].北京.中國(guó)石化出版社,2001.
[2]陸會(huì)明,朱耀春.控制裝置標(biāo)準(zhǔn)化通信——OPC服務(wù)器開發(fā)設(shè)計(jì)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2010.
[3]馬偉.ASP.NET 4.0權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2011.