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