摘 要:現(xiàn)有的開放式控制系統(tǒng)平臺沒有統(tǒng)一的開發(fā)規(guī)范,為此,本文研究了Java——一種先進的真正的開放體系結(jié)構(gòu),應(yīng)用于開放式控制系統(tǒng)平臺的優(yōu)越性,以及如何利用Java平臺的開放性建立統(tǒng)一開放式控制系統(tǒng)平臺。同時,針對Java平臺實時控制的缺陷,提出了把控制的實時任務(wù)轉(zhuǎn)化為非實時任務(wù)的解決方法。
關(guān)鍵詞:Java平臺;開放式控制系統(tǒng)平臺;實時控制
分類號:TP273 文獻標(biāo)識碼:A
文章編號:1001-2265(2000) 02-0036-03
1 引言
開放式控制系統(tǒng)的研究始于80年代。在美國NGC(Next Generation Controller)計劃之后,歐洲推出了OSACA,日本進行了名為OSEC計劃的研究,加拿大也擁有NRC計劃。開放式控制系統(tǒng)不僅收益于機床制造商和數(shù)控供應(yīng)商,也給最終用戶帶來了很大的靈活性。但是,各個計劃所采用的技術(shù)還不能真正實現(xiàn)“開放”。同時,以上各個計劃都相互獨立,他們之間無統(tǒng)一的標(biāo)準(zhǔn)和協(xié)議,因此,對用戶而言還不能算得上真正的開放。Java是針對網(wǎng)絡(luò)環(huán)境開發(fā)的平臺和一種語言,自1995年由Sun公司推出以來,以其跨平臺、安全性等諸多優(yōu)點在計算機界得到廣泛應(yīng)用。本文討論如何把Java平臺應(yīng)用于開放式控制系統(tǒng)中,達到統(tǒng)一平臺的目的。
2 開放式控制系統(tǒng)的要求
開放式控制系統(tǒng)包括一組邏輯上分離的組件,組件之間和組件與應(yīng)用平臺之間的界面有良好的定義,使來自不同供應(yīng)商的組件協(xié)同工作,運行于多個平臺之上完成控制工作,并對用戶和其它控制系統(tǒng)提供良好的界面。
開放式控制系統(tǒng)有以下特點:
(1)互操作性 提供一個統(tǒng)一標(biāo)準(zhǔn)的通訊系統(tǒng)來實現(xiàn)數(shù)據(jù)交換。
(2)可移植性 使用平臺提供的標(biāo)準(zhǔn)API,應(yīng)用程序可在不同的平臺上運行。
(3)伸縮性 可任意增刪各功能模塊。
(4)可互換性 可任意互換功能模塊。
3 Java平臺的特點
Java的許多特征符合開放式控制系統(tǒng)的要求。Java平臺如圖1所示。
圖1 Java平臺結(jié)構(gòu)
Java平臺由兩層結(jié)構(gòu)組成:
(1)Java類和Java應(yīng)用程序接口:為應(yīng)用程序提供標(biāo)準(zhǔn)的訪問接口和一些基本類庫供應(yīng)用程序訪問和擴展。
(2)Java虛擬機(JVM Java Virtual Machine):是Java平臺的核心,是實現(xiàn)Java跨平臺的關(guān)鍵。涵蓋了與平臺相關(guān)的所有服務(wù)功能,包括用戶界面、文件系統(tǒng)操作和網(wǎng)絡(luò)支持等。
Java作為一種全新的開放平臺,其變成語言和結(jié)構(gòu)有以下優(yōu)點:
(1)語言嚴(yán)格 所有程序嚴(yán)格按面向?qū)ο蟮姆椒ㄔO(shè)計,否則會出錯。
(2)語言簡單 繼承了C++,但去掉了頭文件、指針句法和運算、結(jié)構(gòu)聯(lián)合、操作符重載和虛基類。
(3)分布式的語言 支持多種傳輸協(xié)議,如TCP/IP、HTTP和FTP,另外,還支持分布式計算。
(4)動態(tài)分配內(nèi)存,保證應(yīng)用程序在各方面都安全可靠
通過兩種方式保證其安全性:
?、俳怪羔樅蛢?nèi)存訪問
②對Java代碼運行前進行合法性檢查,以防止非法訪問數(shù)據(jù)結(jié)構(gòu)、類和內(nèi)存。
(5)結(jié)構(gòu)中立 由于編譯器長生結(jié)構(gòu)中立的字節(jié)代碼可運行于任何平臺,只要支持Java系統(tǒng)的軟硬件平臺都可運行字節(jié)代碼。Java支持的平臺多達四十多種,包括OS/2、Sun Soloris、Linux、WinNT、Win95、Win98和VxWorks等等。
(6)可移植性 Java的基本數(shù)據(jù)類型大小是確定的,其整型和浮點型都是32位,保證應(yīng)用程序的可移植性。
(7)多線程 Java的多線程可在多處理器上運行,能提供更好的交互響應(yīng)和實時特征。與微軟的產(chǎn)品對比如下表。
表 Java和Windows產(chǎn)品的對比表
名稱 | 跨硬件平臺 | 跨軟件平臺 | 安全性 | 可移植性 |
Java | 任意 | 任意 | 好 | 好 |
WinNT4 | X86 PowerPC MIPS Alpha |
Dos Windows3x Win95 |
較好 | 一般 |
Win95 | X86 | Dos Windows3x | 一般 | 差 |
Win98 | X86 | Dos Windows3x Win95 |
一般 | 差 |
Win2000 | X86 Alpha | Dos Windows3x Win9x WinNT |
較好 | 一般 |
由表1可見,作為開放式控制系統(tǒng)的基本要求,Java的確勝出一籌。 在實時控制系統(tǒng)中,以數(shù)控機床為例,插補和位置控制是實時任務(wù),在高精度和高速度的數(shù)控系統(tǒng)中,中斷響應(yīng)速度可達微秒級,這種實時控制稱為硬實時,即在給定的時間周期內(nèi)必須把任務(wù)處理結(jié)束,否則將導(dǎo)致不可預(yù)料的結(jié)果。因此必須獲得每個實時任務(wù)的CPU處理時間和內(nèi)存分配情況,才能在系統(tǒng)負(fù)載中合理分配實時任務(wù)并正常執(zhí)行。 Java的特性與實時控制的要求存在差距,體現(xiàn)在以下兩個方面: (1)內(nèi)存的動態(tài)管理 與C++不一樣,Java為用戶自動清除內(nèi)存。它使用一種稱為垃圾收集器(GC)的技術(shù)自動清除內(nèi)存中已經(jīng)不使用的內(nèi)存空間,這樣帶來一個問題:用戶無法預(yù)先確定GC算法的執(zhí)行時間,所有的線程都要在GC算法執(zhí)行時掛起。這種不確定性與實時計算相矛盾,因為實時計算需要精確的確定每個任務(wù)的執(zhí)行時間。 (2)不能對底層硬件訪問 用戶開發(fā)的Java程序應(yīng)當(dāng)是和具體的硬件及操作系統(tǒng)無關(guān),用戶一旦直接訪問底層設(shè)備,勢必破壞Java的跨平臺特性。 4 在開放式控制系統(tǒng)平臺中的應(yīng)用 在數(shù)控系統(tǒng)中,應(yīng)用程序可分為人機界面管理、三維仿真與診斷等實時程序和插補運算、位置控制等實時控制程序。實時控制要求中斷響應(yīng)速度要快并且計算量大,一般需要單獨的CPU來處理,或者采用硬件插卡的方式實現(xiàn)。以O(shè)SACA的應(yīng)用系統(tǒng)為例,采用了如圖2所示的雙PC結(jié)構(gòu): |
圖2 雙PC結(jié)構(gòu)
圖2中,HMC(人機控制)是非實時任務(wù);AC-X、AC-Y、AC-Z(軸控制)和MC(運動控制)是實時任務(wù)。軸控制和運動控制包括插補運算和位置控制,所以放在單獨一臺PC上實現(xiàn)。兩臺PC之間即實時和非實時之間采有TCP/IP協(xié)議進行通訊。
實際上,插補運算包括插補準(zhǔn)備和插補計算兩部分。插補運算作為實時任務(wù)主要是受限于過去CPU的處理速度和內(nèi)存容量,隨著高速度、高性能CPU和大容量內(nèi)存的出現(xiàn),完全可以解決插補運算的速度要求和數(shù)據(jù)量的問題。可以預(yù)先計算出軌跡坐標(biāo)的XYZ值,并存儲在數(shù)據(jù)表中,再逐段送至位置控制。目前的數(shù)字伺服控制器已能將位置控制算法包含在內(nèi),可以不再開發(fā)位置控制的應(yīng)用程序模塊。因此,數(shù)控應(yīng)用軟件的開發(fā)可以都劃分為非實時任務(wù)。
另外,當(dāng)前存在的開放式控制系統(tǒng)平臺如OSACA、NGC和OSEC內(nèi)部之間是開放的。如支持OSACA體系結(jié)構(gòu)的平臺上開發(fā)的控制應(yīng)用程序?qū)τ贠SACA的平臺是開放的。但各個開放式控制系統(tǒng)平臺之間還不能實現(xiàn)開放,因為它們的體系結(jié)構(gòu)不相同,所支持的協(xié)議和采用的數(shù)據(jù)結(jié)構(gòu)相互之間都沒有公開。因此,它們之間的通訊需要設(shè)計網(wǎng)關(guān)來實現(xiàn)數(shù)據(jù)的轉(zhuǎn)化。見圖3。
圖3 開放式控制系統(tǒng)間的通訊
Java作為一種開放的體系結(jié)構(gòu),不僅僅因為其被世界所公認(rèn),更重要的是它具有先進的平臺設(shè)計手段,成為真正的開放平臺。目前開放式控制系統(tǒng)平臺所面臨的問題可以利用Java平臺來解決,如圖4所示。利用Java平臺提供的功能實現(xiàn)硬件和操作系統(tǒng)的無關(guān)性,實現(xiàn)真正的開放控制平臺。數(shù)控軟件的開發(fā)全部轉(zhuǎn)化為非實時控制,應(yīng)用程序通過訪問JavaAPI來獲取平臺的支持,利用Java語言的可移植性,按模塊化開發(fā)的應(yīng)用程序具有優(yōu)良的可移植性,可運行于支持Java的平臺之上。目前許多伺服控制器廠商已推出基于Java平臺的產(chǎn)品,具備Java的界面,這樣,建立于Java平臺上的應(yīng)用程序可直接訪問速度伺服的數(shù)據(jù),從而可以解決實時控制和如何統(tǒng)一平臺的問題。
圖4 Java平臺的應(yīng)用
5 結(jié)論和展望
本文提出了一種利用Java真正開放式平臺的方案。Java的開發(fā)者也正在把實時功能加入到Java平臺中去,以適應(yīng)工業(yè)控制的要求。隨著網(wǎng)絡(luò)化時代的到來,基于Java的平臺不但能稱為開放式控制平臺,而且還能利用其強大的網(wǎng)絡(luò)功能實現(xiàn)異地制造,將極大地促進敏捷制造的發(fā)展。
(轉(zhuǎn)載)