朱海林,袁 敏,李躍武
隨著網(wǎng)絡(luò)及信息技術(shù)的迅猛發(fā)展,人們的生產(chǎn)行為、生活方式都發(fā)生了很大的變化,同樣,與信息技術(shù)密切相關(guān)的自動(dòng)控制技術(shù)也發(fā)生了很大的變化。特別是在工業(yè)自動(dòng)控制中的遠(yuǎn)程監(jiān)控方面已經(jīng)顯現(xiàn)出極大的發(fā)展前景和應(yīng)用場(chǎng)合。本文以螺桿式冷水機(jī)組為背景,提出了一種基于JAVA平臺(tái)的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)方法,該方法就是使用網(wǎng)絡(luò)頁(yè)面瀏覽器的技術(shù)實(shí)現(xiàn)螺桿式冷水機(jī)組的遠(yuǎn)程監(jiān)控,使得以往的許多操作可以在客戶端的瀏覽器中實(shí)現(xiàn),與傳統(tǒng)的監(jiān)控系統(tǒng)相比,具有結(jié)構(gòu)簡(jiǎn)單,操作方便,對(duì)遠(yuǎn)程客戶端計(jì)算機(jī)的軟硬件要求不高(只要有瀏覽器就行)等特點(diǎn),因而可以實(shí)現(xiàn)低成本的遠(yuǎn)程監(jiān)控。
本文以螺桿式冷水機(jī)組遠(yuǎn)程監(jiān)控為應(yīng)用背景,闡述基于JAVA平臺(tái)的遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
螺桿式冷水機(jī)組其關(guān)鍵部件-壓縮機(jī),采用螺桿式故名螺桿式冷水機(jī)。螺桿式冷水機(jī)組由四大部分組成:蒸發(fā)器,壓縮機(jī),冷凝器和膨脹閥。工作原理即:由膨脹閥節(jié)流降溫降壓,出來(lái)的汽液混合物直接送蒸發(fā)器,在蒸發(fā)器內(nèi)吸收熱量變成氣態(tài)冷媒,再送到壓縮機(jī),壓縮機(jī)將其壓縮成高溫高壓制冷劑,被壓縮的氣態(tài)冷媒到冷凝器中釋放熱量,重新變成高壓液態(tài)冷媒,再送回膨脹閥,重新變成汽液混合物,形成一個(gè)循環(huán)。在這整個(gè)循環(huán)中,蒸發(fā)器的進(jìn)出水溫度分別保持在12℃和7℃左右,而冷凝器的進(jìn)出水溫度分別保持在30℃和35℃左右,且在整個(gè)機(jī)組工作中,需要對(duì)主機(jī)的蒸發(fā)器和冷凝器的進(jìn)出水溫度、壓力和設(shè)備的工作狀況進(jìn)行監(jiān)控、調(diào)試,還需要進(jìn)行參數(shù)標(biāo)定,以及報(bào)警等。
根據(jù)上述要求,本監(jiān)控系統(tǒng)實(shí)現(xiàn)以下幾項(xiàng)主要功能:用戶登錄界面的設(shè)計(jì),繪制螺桿式冷水機(jī)組現(xiàn)場(chǎng)水系統(tǒng)圖,對(duì)螺桿式冷水機(jī)組主機(jī)進(jìn)行監(jiān)控,對(duì)各溫度、壓力等參數(shù)的設(shè)定,數(shù)據(jù)能夠讀取和寫入,實(shí)時(shí)顯示各參數(shù)曲線,打印參數(shù)報(bào)表[1]。
本文采用3層B/S架構(gòu)體系,客服了傳統(tǒng)的C/S模型的缺點(diǎn),客戶端無(wú)需安裝任何軟件,WEB服務(wù)器先設(shè)定好IP地址,任一客戶端通過(guò)電腦內(nèi)建瀏覽器鍵入系統(tǒng)IP地址,即可進(jìn)入監(jiān)控系統(tǒng)進(jìn)行遠(yuǎn)程控制,3層體系主要包括:
(1)顯示層(Broser)主要是接受用戶的請(qǐng)求以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問(wèn)。
(2)中間層(Web server)主要提供核心程序,作為連接顯示層和數(shù)據(jù)層的紐帶,將顯示層的查詢要求發(fā)送到數(shù)據(jù)層,然后再把數(shù)據(jù)層查詢的結(jié)果返回給顯示層。
(3)數(shù)據(jù)層(Datebase server)主要根據(jù)中間層的請(qǐng)求,訪問(wèn)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查,并將操作結(jié)果返回給中間層。
現(xiàn)場(chǎng)通過(guò)多功能數(shù)據(jù)采集器采集所需數(shù)據(jù),再將所采數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中以供查詢,用戶通過(guò)往瀏覽器中輸入訪問(wèn)路徑來(lái)發(fā)出http請(qǐng)求,服務(wù)器收到請(qǐng)求之后再對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作,返回結(jié)果,再以網(wǎng)頁(yè)的形式展現(xiàn)給用戶,聯(lián)系整個(gè)用戶和現(xiàn)場(chǎng)的是數(shù)據(jù)庫(kù)這個(gè)橋梁,整體方案的系統(tǒng)結(jié)構(gòu)[3],如圖1所示:
圖1 系統(tǒng)結(jié)構(gòu)圖
基于系統(tǒng)實(shí)現(xiàn)功能的要求,本系統(tǒng)主要采用Java語(yǔ)言,在基于Java開發(fā)環(huán)境MyEclipse下開發(fā),服務(wù)器端采用適合于Java開發(fā)的Tomcat服務(wù)器。Tomcat服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,是開發(fā)和調(diào)試JSP程序的首選。數(shù)據(jù)庫(kù)選用適合于小型系統(tǒng)的MySQL數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)是開放源代碼的,完全多線程,支持多處理器,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序采用JDBC驅(qū)動(dòng)程序?qū)ava程序與數(shù)據(jù)庫(kù)相連,執(zhí)行查詢、提取數(shù)據(jù)等操作。JDBC作為數(shù)據(jù)源,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫的類和接口組成。采用Modle1開發(fā)模式(JSP+JvaBean),把部分可重復(fù)利用的代碼封裝成JavaBean組件,當(dāng)用戶發(fā)送請(qǐng)求時(shí),通過(guò)JSP接收、處理,并調(diào)用相應(yīng)的JavaBean組件負(fù)責(zé)相關(guān)的數(shù)據(jù)存取、邏輯運(yùn)算等,最后將結(jié)果傳送到JSP頁(yè)面供用戶查看。
Java是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z(yǔ)言。具有如下特性:簡(jiǎn)單性、面向?qū)ο?、分布式、多線程、可靠、安全、平臺(tái)無(wú)關(guān)、可移植、高性能、動(dòng)態(tài)性等。所有面向?qū)ο缶幊陶Z(yǔ)言都支持3個(gè)概念:封裝、多態(tài)性和繼承,Java同樣具備。Java是平臺(tái)無(wú)關(guān)的語(yǔ)言,是指用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行,具有很強(qiáng)的可移植性。Java主要靠Java虛擬機(jī)(JVM)在目標(biāo)碼級(jí)實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性。支持WWW客戶機(jī)/服務(wù)器計(jì)算模式,支持?jǐn)?shù)據(jù)分布和操作分布。提供了一整套網(wǎng)絡(luò)類庫(kù),開發(fā)人員可以利用類庫(kù)進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì),輕松實(shí)現(xiàn)Java的分布式特性。Java最初設(shè)計(jì)目的是應(yīng)用于電子類消費(fèi)產(chǎn)品,要求其具有較高的可靠性。Java雖源于C++,但它消除了C++的許多不可靠因素,可防止許多編程錯(cuò)誤。由于其主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對(duì)安全性也有較高的要求。如果沒(méi)有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn)。
上述幾種語(yǔ)言特點(diǎn)結(jié)合起來(lái),使得Java成為安全的編程語(yǔ)言,也成為本系統(tǒng)的主要編程語(yǔ)言。
2.2.1.JDK的環(huán)境配置
JDK(Java Development Kit)是 Sun Microsystems針對(duì)Java開發(fā)的產(chǎn)品。 是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)類庫(kù)。故安裝和配置好JDK是首要任務(wù)。本文采用的是JDK1.7.0,直接運(yùn)行下載的程序即可安裝,然后進(jìn)行環(huán)境變量的配置。按計(jì)算機(jī)-->系統(tǒng)屬性-->高級(jí)系統(tǒng)設(shè)置-->環(huán)境變量,進(jìn)入環(huán)境變量表再修改和添加以下兩個(gè)變量
修改完之后在dos窗口中輸入java,驗(yàn)證安裝成功即可。
2.2.2.MyEclipse下Tomcat服務(wù)器的安裝配置
Tomcat服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,Apache開發(fā),Tomcat服務(wù)器屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和開發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)Java Web項(xiàng)目的首選。本文使用的是apache-tomcat-6.0,無(wú)需安裝,無(wú)需配置環(huán)境變量,直接運(yùn)行即可啟動(dòng)。Tomcat服務(wù)器的默認(rèn)端口是8080端口。啟動(dòng)Tomcat,往瀏覽器中輸入http://localhost:8080,若窗口中出現(xiàn)Tomcat主頁(yè)就表示Tomcat安裝并啟動(dòng)成功。
由于要開發(fā)JavaWeb項(xiàng)目,所以我們還需到MyEclipse中去配置Tomcat。打開MyEclipse,在windows菜單下的preferences對(duì)話框中選好Tomcat的版本和安裝地址,在Tomcat下添加自己安裝好的JDK,這樣整個(gè)Tomcat就配置好了,最后再把建立的Web工程添加到Tomcat服務(wù)器中[4]。
2.2.3 MYSQL數(shù)據(jù)庫(kù)的安裝配置
MySQL是一個(gè)開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng),體積小,速度快,擁有成本低,被廣泛應(yīng)用在Internet上的中小型網(wǎng)站中, 并且其提供JDBC,ODBC等多種數(shù)據(jù)庫(kù)連接途徑。本文采用的是MySQL server 5.5,安裝成功后,在MySQL Command Line Client中輸入數(shù)據(jù)庫(kù)密碼即可登錄到數(shù)據(jù)庫(kù),再通過(guò)SQL語(yǔ)言去操作數(shù)據(jù)庫(kù)。
SUN公司推出JSP技術(shù)后,同時(shí)也推薦了兩種web應(yīng)用程序的開發(fā)模式,一種是JSP Modle1(JSP+JavaBean)模式[5],另一種是JSP Modle2(Servlet+JSP+JavaBean)模式。JSP Modle1的使用方式是指在Web開發(fā)中不使用或者很少使用Servlet,主要是通過(guò)JSP和JavaBean的配合來(lái)完成大部分功能。Modle1模式即把部分可以重復(fù)利用的組件抽出來(lái)寫成JavaBean,當(dāng)用戶送來(lái)一個(gè)請(qǐng)求時(shí),通過(guò)JSP調(diào)用JavaBean負(fù)責(zé)相關(guān)的數(shù)據(jù)存取、邏輯運(yùn)算等處理。最后將結(jié)果傳送到JSP顯示結(jié)果,如圖2所示:
圖2 Modle1的JSP架構(gòu)
這種模式適合開發(fā)業(yè)務(wù)邏輯不太復(fù)雜的web應(yīng)用程序,開發(fā)周期短,編程相對(duì)較簡(jiǎn)單,該模式將業(yè)務(wù)邏輯與頁(yè)面表現(xiàn)進(jìn)行分離,在一定程度上增加了程序的可調(diào)試性和維護(hù)性。兩者分工如下:
(1)JSP實(shí)現(xiàn)頁(yè)面的顯示,并且響應(yīng)用戶請(qǐng)求,調(diào)用JavaBean處理數(shù)據(jù),并把數(shù)據(jù)處理的結(jié)果返回客戶端顯示。
(2)JavaBean實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),并且完成所有的數(shù)據(jù)處理工作。
下面以監(jiān)控系統(tǒng)中主機(jī)參數(shù)查詢的例子說(shuō)明JSP和JavaBean是如何分工合作的。將與數(shù)據(jù)庫(kù)的連接以及根據(jù)SQL語(yǔ)句返回取出結(jié)果的功能代碼封裝在JavaBean組件里,JSP再調(diào)用這幾個(gè)Bean組件。本文與數(shù)據(jù)庫(kù)連接的代碼封裝在Connect.java中,從數(shù)據(jù)庫(kù)調(diào)出壓力和溫度參數(shù)的代碼分別封裝在Pressure.java和Temperature.java中,調(diào)用數(shù)據(jù)的Bean組件部分代碼如下:
在這個(gè)JavaBean中的查詢方法是用select(String sql)實(shí)現(xiàn)的,在此方法中,沒(méi)有直接返回ResultSet結(jié)果集,而是把結(jié)果集中的內(nèi)容取出,放在一個(gè)ArrayList(二維表)中,其中每個(gè)元素對(duì)應(yīng)結(jié)果集中的一行數(shù)據(jù)。在這個(gè)方法中直接釋放數(shù)據(jù)庫(kù)資源,若直接返回結(jié)果集將不能斷開與數(shù)據(jù)庫(kù)的連接。
該jsp文件僅需要實(shí)現(xiàn)的是業(yè)務(wù)邏輯,數(shù)據(jù)的連接釋放完全由封裝起來(lái)的數(shù)據(jù)庫(kù)操作JavaBean來(lái)處理。<%@page import="bean.Connect"%>這行代碼是用來(lái)引入JSP頁(yè)面中要用到的類和包路徑,必須在使用前引入。result=db.select(sql);這行代碼主要是根據(jù)傳入的SQL語(yǔ)句,從數(shù)據(jù)庫(kù)取出相應(yīng)結(jié)果,并以ArrayList形式返回。ArrayList tempRow=(ArrayList)result.get(i);這行代碼實(shí)現(xiàn)的是取出結(jié)果集中的一行數(shù)據(jù)。最后兩行代碼實(shí)現(xiàn)的是循環(huán)取出一行數(shù)據(jù)各個(gè)字段的值。
在瀏覽器中輸入系統(tǒng)主頁(yè)的IP地址,出現(xiàn)系統(tǒng)登陸界面,輸入用戶名和密碼即可進(jìn)入主頁(yè),點(diǎn)擊主頁(yè)的參數(shù)列表->主機(jī),即可進(jìn)入主機(jī)參數(shù)列表,或直接在瀏覽器的地址欄輸入http://localhost:8080/message/Inpuiry.jsp,網(wǎng)頁(yè),如圖3所示:
圖3 實(shí)時(shí)參數(shù)查詢
我們可以觀測(cè)到主機(jī)的實(shí)時(shí)壓力和溫度參數(shù)。點(diǎn)擊刷新數(shù)據(jù)按鈕,將實(shí)時(shí)刷新現(xiàn)場(chǎng)返回的數(shù)據(jù),點(diǎn)擊返回系統(tǒng)主頁(yè)按鈕即可返回機(jī)組系統(tǒng)的主頁(yè)。
隨著數(shù)據(jù)庫(kù)產(chǎn)品和技術(shù)的發(fā)展,數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)也在不斷的更新,目前Java語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)很多,本文主要采用JDBC驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn)。JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫的類和接口組成。可應(yīng)用于多種平臺(tái),移植性好,是目前使用Java語(yǔ)言連接數(shù)據(jù)庫(kù)的首選[6]。Java的主要功能均是JDBC通過(guò)一系列的接口實(shí)現(xiàn)的,這些接口都在java.sql包中,具體如下表1所示:
表1 連接JDBC的各接口及其作用
JDBC具體功能包括以下3個(gè)方面:
(1)建立數(shù)據(jù)庫(kù)的連接;(2)向數(shù)據(jù)庫(kù)發(fā)送請(qǐng)求,通過(guò)SQL語(yǔ)言操作數(shù)據(jù)庫(kù)中的數(shù)據(jù),包括查找、添加、刪除等操作;(3)獲取并處理數(shù)據(jù)庫(kù)返回的結(jié)果。連接不同的數(shù)據(jù)庫(kù)有不同的JDBC驅(qū)動(dòng)程序,對(duì)于MySQL5.5,與之對(duì)應(yīng)的JDBC驅(qū)動(dòng)程序名是com.mysql.jdbc.Driver。下載對(duì)應(yīng)JDBC驅(qū)動(dòng)的jar包,本文選用的是mysql-connector-java-5.1.25,將其jar文件復(fù)制到應(yīng)用項(xiàng)目的WEB-INFlib目錄中,就能通過(guò)JDBC驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)。訪問(wèn)數(shù)據(jù)庫(kù)的方式有2種,直接訪問(wèn)和通過(guò)數(shù)據(jù)源連接池訪問(wèn)。第二種方式適合于大型網(wǎng)站開發(fā),可以同時(shí)應(yīng)對(duì)大量的用戶訪問(wèn),但開發(fā)周期長(zhǎng),相對(duì)復(fù)雜,而第一種直接訪問(wèn)方式雖然用戶數(shù)量較大時(shí)影響系統(tǒng)性能,但這種方式開發(fā)周期短,簡(jiǎn)單易實(shí)現(xiàn),故本文采用直接訪問(wèn)的方式。由于需要多次連接數(shù)據(jù)庫(kù),為實(shí)現(xiàn)方便,將其代碼封裝在Connect.java中,部分代碼如下:
隨著Internet的發(fā)展,監(jiān)控系統(tǒng)由傳統(tǒng)的DCS和windows風(fēng)格向web方向轉(zhuǎn)變成為一種趨勢(shì)和必然。本文提出的基于JAVA平臺(tái)的遠(yuǎn)程監(jiān)控系統(tǒng),初步應(yīng)用結(jié)果表明,該方案能滿足工業(yè)現(xiàn)場(chǎng)的需求,切實(shí)可行。采用B/S架構(gòu),避免了軟件升級(jí)和維護(hù)的麻煩,較傳統(tǒng)監(jiān)控系統(tǒng)而言減少了很多不必要的麻煩,使得遠(yuǎn)程監(jiān)控成為可能。用戶無(wú)需親自到現(xiàn)場(chǎng)查看,只需一臺(tái)能聯(lián)網(wǎng)的計(jì)算機(jī)即可隨時(shí)隨地的輕松實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)設(shè)備的監(jiān)控,大大提高了工作效率,避免了人力物力上的浪費(fèi)。隨著遠(yuǎn)程監(jiān)控技術(shù)的發(fā)展,也將會(huì)有更多功能更加強(qiáng)大,易于操作維護(hù)的方案為人們所用。
[1]郝曉弘,蘇淵.基于Web的變電站遠(yuǎn)程監(jiān)控系統(tǒng)[J]電網(wǎng)技術(shù),2003,27(7):32-35.
[2]唐建清,鄒國(guó)霞.Java Web開發(fā)的環(huán)境配置[J]桂林航天工業(yè)高等??茖W(xué)校學(xué)報(bào),2006,43(3):26-28.
[3]YOU Xiang-bai,LIU Yi-min,xu Wang-ming.The Design of A Remote Monitoring System Based on Java[J]IEEE,2010:149-152.
[4]孫衛(wèi)琴.Tomcat與Java Web開發(fā)技術(shù)詳解(第2版)[M]北京:電子工業(yè)出版社,2009.01.
[5]劉聰?shù)?零基礎(chǔ)寫Java Web開發(fā)[M]北京:機(jī)械工業(yè)出版社,2008.01.
[6]王林瑋 沙明峰.精通JSP開發(fā)應(yīng)用(Eclipse平臺(tái))[M]北京:清華大學(xué)出版社,2012.11.