??? 計算機控制系統(tǒng)與國際互聯(lián)網(wǎng)絡(luò)Internet的融合可以使人們能夠通過現(xiàn)有的數(shù)據(jù)網(wǎng)存取、監(jiān)測和控制多種設(shè)備。當(dāng)傳統(tǒng)的控制系統(tǒng)發(fā)展為現(xiàn)場總線控制網(wǎng)絡(luò)(Infranet)時,,構(gòu)建Infranet到Internet的網(wǎng)絡(luò)結(jié)構(gòu)就成為可能,,一旦Infranet和Internet相結(jié)合,,控制網(wǎng)絡(luò)就可利用Internet上豐富的資源,從而為控制領(lǐng)域日益發(fā)展的遠(yuǎn)程控制鋪平了道路。
1.Internet中網(wǎng)絡(luò)遠(yuǎn)程控制系統(tǒng)體系結(jié)構(gòu)?
??? 所謂遠(yuǎn)程控制是指本地計算機通過網(wǎng)絡(luò)系統(tǒng),主要是Internet,,實現(xiàn)對遠(yuǎn)端的生產(chǎn)過程的監(jiān)視和控制。能夠?qū)崿F(xiàn)遠(yuǎn)程控制的計算機軟硬件系統(tǒng)稱為遠(yuǎn)程控制系統(tǒng)?,F(xiàn)場總線系統(tǒng)接入Internet,,在一定條件下,便可通過Internet控制這些生產(chǎn)系統(tǒng)和現(xiàn)場設(shè)備的運行狀況及各種參數(shù),,即不必親臨現(xiàn)場,,通過網(wǎng)絡(luò)實現(xiàn)對遠(yuǎn)程被控對象的控制,以節(jié)省大量的交通,、人力,。還可以根據(jù)需要,建立起地區(qū)級的,、國家級的乃至世界級的控制中心,,便于大型企業(yè)集團對所屬工廠的整體管理,從而提高經(jīng)濟效益,。對于制造商來說,,可以對自己產(chǎn)品進(jìn)行及時維護(hù),對產(chǎn)品性能進(jìn)行及時跟蹤調(diào)查以便進(jìn)一步改進(jìn)設(shè)計,。
??? 遠(yuǎn)程控制的原理:遠(yuǎn)程控制實質(zhì)上是通過遠(yuǎn)程控制軟件使本地計算機與遠(yuǎn)程計算機之間進(jìn)行的點對點間的信息傳遞過程,。在進(jìn)行遠(yuǎn)程控制之前,首先要在本地計算機和遠(yuǎn)程計算機上安裝遠(yuǎn)程控制程序,。當(dāng)對遠(yuǎn)程計算機進(jìn)行遠(yuǎn)程控制時,,本地計算機首先向遠(yuǎn)程計算機發(fā)出控制請求,遠(yuǎn)程計算機收到控制請求后,,先驗證本地計算機是否有訪問的權(quán)限,,如果驗證通過,遠(yuǎn)程計算機向本地計算機發(fā)出接受信號,,這樣就可以通過本地計算機來控制遠(yuǎn)程計算機了,。
??? 要實現(xiàn)遠(yuǎn)程控制,第一要有一個能夠穩(wěn)定運行的現(xiàn)場總線的控制系統(tǒng),;第二要有一個能夠通過Internet進(jìn)行遠(yuǎn)程訪問的數(shù)據(jù)通信系統(tǒng),;第三要有遠(yuǎn)程控制系統(tǒng)的各個組成部分間建立的虛擬通信關(guān)系,通過Internet接通遠(yuǎn)程異地控制網(wǎng)絡(luò),,并利用公用數(shù)據(jù)網(wǎng)絡(luò)豐富的軟硬件資源,,以便通過Internet來控制生產(chǎn)現(xiàn)場。
??? 根據(jù)遠(yuǎn)程控制網(wǎng)絡(luò)的任務(wù)和要求,,可以考慮整個系統(tǒng)采用B/S(瀏覽器/服務(wù)器)結(jié)構(gòu),,因為B/S結(jié)構(gòu)便于信息的發(fā)布,它可以很方便地將現(xiàn)場數(shù)據(jù)發(fā)向Internet,,同時簡化了客戶端的信息處理,,只要在遠(yuǎn)程客戶端裝上Internet瀏覽軟件,即可查閱現(xiàn)場數(shù)據(jù),,而Internet瀏覽軟件操作簡單,,無需培訓(xùn)。系統(tǒng)的總體結(jié)構(gòu)如圖1所示,。
圖1? 基于Internet的遠(yuǎn)程控制系統(tǒng)總體結(jié)構(gòu)框圖
??? 遠(yuǎn)程控制所支持的網(wǎng)絡(luò)方式有:LAN,、WAN、撥號上網(wǎng)的方式,、Internet方式,。遠(yuǎn)程控制一般是通過一定的軟件或命令,使用NetBEUI,、NetBIOS,、IPX/SPX,、TCP/IP等協(xié)議來實現(xiàn)的。當(dāng)然,,這里所說的遠(yuǎn)程計算機,,只能是一定距離范圍內(nèi)的計算機。
2.Java技術(shù)在網(wǎng)絡(luò)遠(yuǎn)程控制中的應(yīng)用?
??? 本文所研究的基于Java的網(wǎng)絡(luò)控制系統(tǒng)的實現(xiàn)主要表現(xiàn)在下面幾個方面:基于J2ME技術(shù)的無線網(wǎng)絡(luò)控制,;JNI技術(shù)在計算機控制實時采集系統(tǒng)中的應(yīng)用,;Java串行通信技術(shù)及其對PLC、單片機,、變頻器等的控制,;在Intranet中基于Java的虛擬現(xiàn)實技術(shù)及其在計算機控制系統(tǒng)仿真研究中的應(yīng)用??驁D如圖2所示:
?
2.1? J2ME技術(shù)
??? 雖然從Java 1.0發(fā)表后,,Java就被廣泛的應(yīng)用在桌上型應(yīng)用程序以及Applet的開發(fā)上,但從Java 1.1開始,,Java又回到了它的設(shè)計初衷——嵌入式系統(tǒng)和消費類電子產(chǎn)品上了,。當(dāng)時,Sun Microsystems發(fā)表了針對嵌入式系統(tǒng)和消費類電子產(chǎn)品的Embedded Java與Personal Java(簡稱Pjava)兩項Java規(guī)范,。其中,,Embedded Java是為資源十分有限且沒有顯示設(shè)備的裝置設(shè)計的;Personal Java則是為能夠與Internet聯(lián)網(wǎng),,并擁有顯示系統(tǒng)(如彩色LCD)的消費類電子產(chǎn)品設(shè)計的,。
??? Sun公司為了使Java語言進(jìn)入嵌入式系統(tǒng)和消費類電子產(chǎn)品領(lǐng)域,在Java 2中推出了J2ME,。摩托羅拉是J2ME的主要支持者,,第一個在手機上移植了KVM,又領(lǐng)導(dǎo)全球手機廠家制定了MIDP規(guī)范,。在2000年的Java One大會上,,摩托羅拉總裁宣布:摩托羅拉的主要手機都將支持J2ME。
??? 與WAP相比,,在傳輸層,,J2ME提供了一組面向應(yīng)用程序的高層協(xié)議,包括HTTP和TCP(或UDP)等,,實際的傳輸可以基于其它方式(如CSD或GPRS等),。在應(yīng)用層,J2ME提供了全功能的Java開發(fā)環(huán)境,,可以用Client/Server方式訪問Internet上的所有數(shù)據(jù),。如果需要,軟件開發(fā)商甚至可以開發(fā)出HTML Browser,。
??? J2ME具有很多Java技術(shù)特性,,主要有:可以在各種支持Java的設(shè)備上運行,;代碼短小,;充分利用Java語言的優(yōu)勢,;安全性好;用J2ME實現(xiàn)的應(yīng)用可以方便的升級到J2SE和J2EE,。為了支持用戶和嵌入式市場提出的靈活性和可定制的要求,J2ME在設(shè)計中非常注重模塊伸縮性,。J2ME在設(shè)備原有的操作系統(tǒng)上建造了三層軟件,,即JVM層、配置層,、框架層,,實現(xiàn)模塊化和伸縮性。
2.2? JNI技術(shù)
??? 對于底層的硬件系統(tǒng)的狀態(tài),,純粹的Java語言當(dāng)然是無法得知,,要想得知底層的硬件系統(tǒng)的狀態(tài),必須借助于Java的JNI技術(shù):
??? 本機方法Java Native Interface(JNI)是Java平臺的強大特征之一,。使用本地方法的應(yīng)用程序可以與用其他編程語言(例如C和C++)編寫的本地代碼,,也可以與Java語言編寫的代碼取得一致。當(dāng)然,,JNI允許程序員充分利用Java平臺的功能,,因為JNI是Java平臺的一部分。
??? JNI增強了JDK的功能,,將Java語言與其它編程語言聯(lián)合使用,,主要運用于以下方面:
??? (1)Java編程者可能需要訪問特殊的操作系統(tǒng)設(shè)備或聲卡、調(diào)制解調(diào)器等外圍設(shè)備使可用功能盡量讓人滿意,而這些設(shè)備不能通過JDK來訪問,。
??? (2)Java程序可能需要具有與第三方中間件和通信系統(tǒng)(例如Lotus Notes等等)或?qū)S玫钠髽I(yè)軟件系統(tǒng)(例如SAP R/3,、Bean等)之間的接口,而這些企業(yè)的應(yīng)用軟件的解決方法帶有它們自己的專用接口API,,這些專用接口通常是使用C或C++來編寫的,,因此需要使用Java本地方法。
??? (3)可以無縫集成大量的已存在的程序而不需要考慮用戶接口,。
??? (4)實時Java系統(tǒng)中的某些時間高度緊張的操作可能需要利用匯編程序來進(jìn)行這樣使用JNI是唯一的選擇,。
2.3 串口通信技術(shù)?
??? 在科研和工業(yè)應(yīng)用中,串口是常用的計算機與外部串行設(shè)備之間的數(shù)據(jù)傳輸通道,。串行通信方便易行,,應(yīng)用十分廣泛。Java語言本身并不能直接對串行通信進(jìn)行編程控制,,但是我們可以先使用其它語言(例如C/C++)編寫好對硬件控制的方法,,然后借助于Java的本地方法調(diào)用來達(dá)到控制串行通信的目的,。由Sun公司推出的javax.comm類庫已經(jīng)做好了這部分工作,我們只需要調(diào)用javax.comm API,,就可以編寫出Java串行通信程序,,非常方便方便。
javax.comm類庫提供了6個類,,分為3個層次,,如表1所示。
??? 類庫提供的功能:
??? (1)搜索系統(tǒng)中的可用端口,。由CommPortIdentifier.getPortIdentifiers()靜態(tài)方法返回一個CommPortIdentifier對象,里面包含系統(tǒng)中所有可用的端口信息,。CommPortIdentifie對象是javax.comm類庫中最重要的對象,所有對端口的操作都是基于該對象進(jìn)行的。
??? (2)用上層類通過CommPortIdentifie對象打開端口,,并且聲明對端口的所有權(quán),。
??? (3)協(xié)調(diào)多個應(yīng)用程序之間對端口的所有權(quán)沖突。它通過事件消息來告知相關(guān)的應(yīng)用程序,,并使得當(dāng)前占用端口的應(yīng)用程序放棄所有權(quán),。如果打開端口失敗,程序?qū)伋鯬ortInUseException異常,。
??? (4)實現(xiàn)通訊端口的同步和異步I/O,。底層類(例如SerialPort)都提供有管理通訊端口I/O的方法。
2.4? 虛擬現(xiàn)實技術(shù)
??? 創(chuàng)建虛擬現(xiàn)實環(huán)境可以用以下兩種方法,,Java 3D和VRML與Java結(jié)合,。
2.4.1 Java 3D?
???? Java 3D API可以用來編寫?yīng)毩⒌娜S圖象應(yīng)用程序和基于Web的3D Applets,它提供了產(chǎn)生和操作3D幾何對象和用于描述幾何特性的高層構(gòu)件,,使得開發(fā)者可以用構(gòu)件來描述廣大的虛擬現(xiàn)實,。
??? Java 3D包含了一種相當(dāng)完整而且有機的立即模式,它的設(shè)計使所有用Java 3D API編寫的應(yīng)用程序?qū)崿F(xiàn)了跨平臺操作的能力,。Java 3D的立即模式提供了通用立即模式層特性的最佳折中,,同時還能得到滿意的性能。
??? Java 3D提供了復(fù)雜的基于視點模型的虛擬現(xiàn)實,,但從典型的應(yīng)用角度看,,Java 3D的視點模型是很簡單的。如果一項應(yīng)用想在現(xiàn)存的使用基于攝像機來建立鏡頭的參數(shù)即刻,。但是,,Java 3D視點模型不能置于現(xiàn)存的基于攝像機的視點模型之上。
??? Java 3D能夠支持六自由度的跟蹤模型,。AWT提供了最普通的桌面交互外設(shè):鼠標(biāo)和鍵盤,,Java 3D同樣使用它們,而不是另選一種不兼容的I/O模型。Java 3D提供了能力位,,保證了節(jié)點對象的大部分可修改狀態(tài),,它們的默認(rèn)值對于現(xiàn)場圖景是不授權(quán)路徑的。當(dāng)今的絕大部分3D環(huán)境是運行時環(huán)境,,而不是編輯環(huán)境,。如果應(yīng)用程序只識別那些會改變的對象,Java 3D就能對大部分的圖形進(jìn)行優(yōu)化操作,,于是Java 3D提供了能力位,,使得應(yīng)用程序可以定義這樣的重要信息。???
2.4.2 Java與VRML?
??? VRML的動畫效果其實就是依靠一個給定的時間傳感器和一系列各種各樣的內(nèi)插節(jié)點來控制場景中各種動畫效果,。其基本的方法就是時間傳感器給出一個控制動畫效果的時鐘,,這個時鐘包含了動畫效果的開始時間、停止時間,、時間間隔和是否循環(huán)等動畫控制參數(shù),然后通過這個時鐘的輸出在虛擬世界中驅(qū)動各種內(nèi)插節(jié)點產(chǎn)生各種相應(yīng)的動畫效果,,而在內(nèi)插節(jié)點中將給出各種動畫效果的關(guān)鍵點和關(guān)鍵值,,VRML瀏覽器將自動地根據(jù)這些關(guān)鍵點通過線性插值的方法來完成整個動畫過程。另外,,在VRML中虛擬世界和用戶之間的交互是通過一系列檢測器來實現(xiàn)的,,通過這些檢測器節(jié)點,使瀏覽器感知用戶的各種操作,,這樣用戶就可以和VRML虛擬世界中的三維對象進(jìn)行直接交互,。
??? 利用時間傳感器和內(nèi)插節(jié)點創(chuàng)造的動畫效果在虛擬空間中都是自發(fā)進(jìn)行的,也就是說和瀏覽者沒有任何的交互性可言,,各種動畫效果只是有給定的時間傳感器來控制,。所以我們使用Java技術(shù)來改變這一弱勢。
??? 外部創(chuàng)作接口(External Authoring Interface,,EAI)是由SGI公司的Chris Marrin設(shè)計并提出來的,,主要目的是增強VRML場景與外部環(huán)境通信聯(lián)系和融合能力的一個高層次的Java類包,它使得一個外部程序使用VRML的事件模型可以訪問和控制VRML場景中的節(jié)點,。這里的外部程序主要是指和VRML虛擬場景嵌在同一個網(wǎng)頁中的Java Applet程序,。在VRML的事件模型中,一個給定節(jié)點的出事件(EventOut)可以被路由(Route)到另一個節(jié)點的入事件(EventIn),。當(dāng)出事件對象產(chǎn)生了一個事件,,入事件對象就會得到通知并處理接收到的事件。如果一個腳本節(jié)點中有一個指向給定節(jié)點的域,,它就可以對該節(jié)點直接發(fā)送入事件,,并可以讀取該節(jié)點的任何一個出事件的最后發(fā)送值。
??? 通過使用EAI,用戶不再僅僅局限于作為一個觀眾,,而是可以參與,、介入到虛擬場景的構(gòu)建過程中去。用戶借助自己豐富的想象力,,可以去更改所看到的VRML場景,、修改場景的物體、改變這些物體的表現(xiàn)形式,、設(shè)計場景中的動畫,、定義場景中各個角色的行為方式。
3.結(jié)束語?
??? 本文從J2ME,、JNI,、javax.comm和Java3D及Java與VRML結(jié)合等幾方面,粗略地探討了Java技術(shù)在基于Web的遠(yuǎn)程控制中的應(yīng)用,。在后續(xù)的研究中,,將具體地研究各個部分的具體編程實現(xiàn)。在具體實現(xiàn)時,,將會設(shè)計Java安全性技術(shù),。另外,如何使用Java技術(shù)中的Jini技術(shù)構(gòu)建分布式網(wǎng)絡(luò)控制,,如何將Smart Card等嵌入式技術(shù)運用于嵌入式控制網(wǎng)絡(luò)等問題也將進(jìn)行深入研究,。