江蘇* 劉會霞 梁佳洪 王霄 |
關(guān)鍵詞:鈑金展開;CAD/CAM;ASP;B/S模式
1 引言
近年來,出現(xiàn)一種新的軟件部署模式,即所謂的應(yīng)用服務(wù)供應(yīng)商ASP。根據(jù)美國信息技術(shù)協(xié)會的定義,ASP是指那些通過因特網(wǎng)或者私人局域網(wǎng)向定購者/客戶遠程提供并管理應(yīng)用與計算機服務(wù)的企業(yè)。通俗地說,ASP是一種業(yè)務(wù)租賃模式,是一種將應(yīng)用系統(tǒng)通過互聯(lián)網(wǎng)發(fā)布、管理和使用的商業(yè)模式,一種企業(yè)外包IT業(yè)務(wù)的租賃模式。企業(yè)用戶可以直接租用ASP的計算機及軟件系統(tǒng)進行自己的業(yè)務(wù)管理,任何用戶只要有網(wǎng)絡(luò)瀏覽器,就可以向ASP租用所需軟件,而不必在本地的機器上安裝該軟件??蛻粼僖膊槐刭徺I軟件或者為取得授權(quán)而支付昂貴的費用;相反,他們只須在需要的時候使用某些服務(wù),并且相應(yīng)地付少量的費用,從而節(jié)省一大筆用于IT產(chǎn)品技術(shù)的資金。因此,ASP被認為是繼ISP、ICP后,IT領(lǐng)域的又一場革命。
本文根據(jù)Internet/Web分布式網(wǎng)絡(luò)計算與網(wǎng)絡(luò)安全支持技術(shù),開發(fā)了”基于ASP理念的鈑金展開CAD/CAM系統(tǒng)”。這不僅僅是一個基于ASP理念的、基于B/S分布計算模式的、支持多用戶的鈑金展開CAD/CAM的原型系統(tǒng),而且是一種服務(wù),一種客戶無需購買專門的軟件,只需為他所需要的功能付費的服務(wù)。通過這種系統(tǒng),客戶花很少的錢就可以得到專業(yè)的服務(wù),不必再為不需要的功能承當額外的費用,體現(xiàn)了ASP理念的核心和本質(zhì)。
基于ASP理念的鈑金展開CAD/CAM系統(tǒng)結(jié)構(gòu)如圖1所示:
圖1 鈑金展開CAD/CAM系統(tǒng)結(jié)構(gòu)圖
2 計算模型和編程原理
在網(wǎng)絡(luò)平臺上要實現(xiàn)應(yīng)用系統(tǒng)的開發(fā),計算模式的選擇是一件至關(guān)重要的事。傳統(tǒng)的客戶機/服務(wù)器計算模式一般都是“胖客戶端”模式,客戶機上除負責圖形顯示和事件輸入外,應(yīng)用邏輯和業(yè)務(wù)處理規(guī)則可能一并(或部分)置于客戶機上,造成客戶機越來越“胖”,也使得開發(fā)的著力點主要落在客戶機端。由于客戶機端配置了大量的應(yīng)用邏輯和業(yè)務(wù)處理規(guī)則、軟件以及開發(fā)工具軟件,使得軟件的變動與版本升級以及硬件平臺的適應(yīng)能力,牽動著系統(tǒng)中所有的客戶機,勢必造成資金開銷的增加與管理維護的難度。90年代中期,逐漸形成一種新的基于瀏覽器、WWW服務(wù)器和應(yīng)用服務(wù)器的計算模式—B/S計算模式。這種新型的計算模式繼承和共融了原來傳統(tǒng)的C/S(客戶機/服務(wù)器)計算模式的網(wǎng)絡(luò)軟、硬件平臺和應(yīng)用,但它具有傳統(tǒng)的C/S模式所不具有的很多特點:更加開放,與軟、硬件無關(guān),開發(fā)速度快、生命周期長,應(yīng)用擴充和系統(tǒng)維護升級方便等。B/S模式的主流語言是Java、HTML等。由于瀏覽器、Java、HTML以及數(shù)據(jù)庫資源都可以做到與軟、硬件平臺無關(guān),因此,B/S模式真正實現(xiàn)與平臺無關(guān)性。兩種計算模式的比較如表1所示。
表1 C/S模式和B/S模式的比較
本系統(tǒng)就是采用B/S模式,結(jié)構(gòu)如圖2所示:
圖2 B/S計算模式結(jié)構(gòu)圖
Java語言提供一種新的機制擴充HTML的功能,即通過Applet標記把編譯獲得的Java代碼以文件的形式插入HTML文件中,這些編譯獲得的Java代碼中包括一些只需在客戶端完成的功能,如數(shù)據(jù)檢查。當用戶瀏覽Applet所在的Web頁面時,Ap plet被下載到用戶客戶端,并啟動執(zhí)行,用戶像使用本地應(yīng)用程序一樣進行操作,既減輕了服務(wù)器端負荷,又省去了網(wǎng)絡(luò)傳輸?shù)臅r間,提高了網(wǎng)絡(luò)的交互性和實時性。
鈑金展開CAD/CAM系統(tǒng)的客戶端是純JavaApplet和一個Java虛擬機,服務(wù)器端則是JSP+JavaBean+DBS(數(shù)據(jù)庫服務(wù)器)。客戶只要能夠連入Internet,使用瀏覽器就可以使用此服務(wù),軟件的安裝是自動進行的,軟件的升級是由服務(wù)提供者完成的,客戶完全不需擔心。
3 關(guān)鍵技術(shù)
3.1 用戶身份認證機制
客戶的注冊、登錄對于整個系統(tǒng)的維護是十分重要的。由于此系統(tǒng)是付費系統(tǒng),它只支持受限的匿名登錄,即匿名登錄者可以瀏覽網(wǎng)頁,但無權(quán)使用服務(wù)。系統(tǒng)在客戶初次進入系統(tǒng)時,自動為每位客戶建立帳號,并且把客戶的信息載入信息數(shù)據(jù)庫??蛻粢院笾恍钁{帳號和密碼就可以進入系統(tǒng),這樣方便了客戶進入系統(tǒng),又方便了對客戶的管理。為防止產(chǎn)生了帳號被盜用的問題,在設(shè)計用戶身份認證時,首先要重點考慮的是安全性。
因為安全性關(guān)系到整套軟件的信譽,所以在開發(fā)本系統(tǒng)時,在安全性方面作了很大的努力。本系統(tǒng)的安全性主要表現(xiàn)在:
(1)選用具有很高安全性的開發(fā)語言JAVA,使得系統(tǒng)增強了安全性。
(2)用戶必須輸入正確的帳號及密碼,才能進入鈑金設(shè)計頁面。
(3)在用戶登錄期間,任何人都不能再使用這個帳號。
(4)當黑客試圖要破解用戶帳號的密碼時,在四次輸入錯誤密碼后,會自動掛起帳號,防止用戶帳號被竊。用戶可通過聯(lián)系系統(tǒng)管理員恢復(fù)帳號。
(5)用戶想繞開登錄而直接打開鈑金設(shè)計頁面是不行的(即使用戶知道頁面的URL地并通過地址欄直接輸入地址也不行),只有登錄后才能訪問。具體實現(xiàn)是在JSP頁面中加上
圖4 管件類型選擇與參數(shù)輸入界面 待用戶選擇了相應(yīng)的展開類型及輸入相應(yīng)的參數(shù)后,并點擊提交后,Applet檢查用戶輸入的參數(shù)是否為合法數(shù)據(jù):若非法,則提示用戶輸入的參數(shù)不合法;否則,Applet給web服務(wù)器發(fā)消息請求web服務(wù)器計費。web服務(wù)器向數(shù)據(jù)庫服務(wù)器請求查詢該用戶的帳戶余額是否足:如果余額不足,給Applet發(fā)送消息,提示用戶的帳戶余額不足,請交費后再使用;如果余額足,在用戶的帳戶上扣除相應(yīng)的費用,并計算出必要的數(shù)據(jù)返回給Applet。Applet接收到Web服務(wù)器的數(shù)據(jù)后,該系統(tǒng)即可按照用戶的要求,繼續(xù)生成相應(yīng)的展開圖形和進行加工模擬,并以文本方式返回圖形數(shù)據(jù)文件及數(shù)控代碼。
3.3 展開圖形
此功能的實現(xiàn)主要是借助Java語言的類庫中提供的豐富的繪圖方法,其中,絕大部分對圖形、文本、圖像的操作方法都定義在Graphics類中,Graphics類繼承了Object類。關(guān)于Graphics類JBuilder的隨機文檔中有詳細的說明;若想進一步了解API和開發(fā)文檔,可以訪問SUN公司網(wǎng)頁http://java.sun.com./prod ucts/jdk/1.4/devdocs-v2-specs-html。在使用Graphics類時,要在程序的開頭加上下面的語句:importjava.awt.Graphics
為了將某一圖形在屏幕上繪制出來,還需要知道圖形坐標系統(tǒng)。與大多數(shù)其他計算機圖形坐標系統(tǒng)所采用的二維坐標系統(tǒng)一樣,Java的坐標原點(0,0)在屏幕的左上角,水平向右為X軸的正方向,豎直向下為Y軸的正方向;每個坐標點的值表示屏幕上的一個象素點的位置。因此,所有坐標點的值都取整數(shù)。將展開圖形在屏幕上繪制出來,主要是調(diào)用Graphics類的draw Line(intx1,inty1,intx2,inty2)方法:
publicvoidpaint(Graphicsg,CanvasmyCanvas){
doublestartPointX,startPointY; //定義繪圖起始點
g=myCanvas.getGraphics(); //取得畫布對象
· //這里畫出管的展開圖
·
}
生成展開圖和進行加工模擬的界面如圖5所示:
圖5 系統(tǒng)生成展開圖形和數(shù)據(jù)文件的界面圖
加工模擬功能主要是為了讓用戶感性地認識生成的數(shù)控指令在實際加工時的走刀路徑,實質(zhì)是一個動畫,其原理是利用人的“視覺暫留”,快速地切換畫面。Java實現(xiàn)動畫有兩種方法:一種是在“繪制”和“清除”間相互切換,另一種是在原有的畫面上逐漸添加?xùn)|西。此系統(tǒng)實現(xiàn)的加工模擬的圖形是逐漸生成的,因此采用第二種方法。在繪制圖形時,是一點一點繪出來的,并在每兩次繪圖之間讓線程休眠一段時間,這樣就實現(xiàn)加工模擬的動畫。線程休眠的方法如下:
try{
Thread.sleep(5);//此處指定線程休眠的時間,單位是毫秒
}
catch(InterruptedExceptione){}
3.5 生成數(shù)據(jù)文件
為了方便放樣的用戶,本系統(tǒng)提供了展開圖形的數(shù)據(jù)文件,在輸出圖形數(shù)據(jù)文件的界面里,左邊是對應(yīng)的展開圖,右邊是圖形數(shù)據(jù)文件,如圖5所示:
用戶手工地把這些數(shù)據(jù)復(fù)制粘貼下來,保存為文本文件,然后就可以非常方便地根據(jù)這些數(shù)據(jù)進行放樣。
3.6 生成數(shù)控指令
數(shù)控指令的生成是本系統(tǒng)的一個很重要的模塊,由于鈑金展開比較麻煩,為方便用戶,系統(tǒng)提供自動生成數(shù)控指令功能,具體生成激光切割方式下的數(shù)控指令的主要過程如下:
publicvoidNCInstrumnetOut(TextAreaNCInstrument){//生成相應(yīng)類型的鈑金件的數(shù)控//指令,并且將生成的數(shù)控指令寫在TextAreaNCInstrument中
NCInstrument.append("%NDJZJP1MPF"+‘ ‘);//輸出文件名
NCInstrument.append("F3000"+‘ ‘);//確定速度
NCInstrument.append("G91"+‘ ‘);//相對坐標編程
NCInstrument.append("G64"+‘ ‘);//平滑過度
NCInstrument.append("G00X"+String.valueOf((double)ex).toString()+"Y"+String.valueOf((double)ey).toString()+‘ ‘);//快速定位到加工曲線部分的起點
NCInstrument.append("MM10"+‘ ‘);//隨動啟動
NCInstrument.append("SUB1"+‘ ‘);//打開機械閥打孔{//輸出加工內(nèi)輪廓曲線部分的數(shù)控指令
·
·
· }
NCInstrument.append("M21"+‘ ‘);//關(guān)閉電子閥
NCInstrument.append("GOOXOYO"+‘ ‘);
NCInstrument.append("SUB2"+‘ ‘);//打開電子閥
{//輸出加工外輪廓的數(shù)控指令
·
·
· }
NCInstrument.append("M13"+‘ ‘);//關(guān)閉機械光閥
NCInstrument.append("M11"+‘ ‘);//隨動關(guān)
NCInstrument.append("M30"+‘ ‘);//程序結(jié)束
}
3.7 系統(tǒng)管理機制
本系統(tǒng)采用SQlServer作為后臺數(shù)據(jù)庫管理系統(tǒng),用來管理所有的客戶的信息和提供客戶個人信息管理。管理員憑管理員帳戶登陸后,實現(xiàn)對所有帳戶的管理:丟失或遺忘密碼時,密碼的返還;查看用戶意見,以便更好地為客戶服務(wù),以及其它的一切日常維護等。用戶登陸后,進入個人信息頁面,可以修改個人信息,然后重新提交服務(wù)器,服務(wù)器將自動對存儲在數(shù)據(jù)庫管理系統(tǒng)中的客戶個人信息進行更新,方便而且安全。
4 結(jié)束語
基于B/S模式的鈑金展開CAD/CAM系統(tǒng)是采用純Java語言開發(fā)出來的軟件,只需編譯一次,無需做任何修改,就可以在所有的支持JVM(Java虛擬機)的操作系統(tǒng)上運行??蛻舳瞬捎肑avaApplet,客戶連入Internet,使用瀏覽器注冊、登陸系統(tǒng),軟件即自動安裝,客戶就可以使用系統(tǒng)服務(wù),軟件的升級是由服務(wù)提供者完成的。系統(tǒng)通過程序?qū)崿F(xiàn)將展開圖形自動畫在屏幕上;利用程序計算生成的數(shù)據(jù),自動生成數(shù)控指令,既快速正確,同時又有很高的精度,大大降低了對操作者的要求。該系統(tǒng)在信息的發(fā)布和提供、軟件版本的升級和維護等方面具有很大的優(yōu)越性,具有廣泛的應(yīng)用前景。