- 相關推薦
支持產(chǎn)品設計的滑動軸承網(wǎng)絡計算程序的研究
摘要:分析了如何將原有大量由Fortran編寫的科學計算程序轉換為能夠在網(wǎng)絡上提供計算服務的網(wǎng)絡應用程序的問題。提出了將Fortran程序改編為動態(tài)鏈接庫,并進一步包裝為標準的COM組件的方法,在網(wǎng)頁中調用組件進行計算,從而能夠較好地實現(xiàn)在瀏覽ll/Jl~.務器結構下通過計算程序資源的遠程調用來支持產(chǎn)品的設計過程。
關鍵詞:產(chǎn)品設計;瀏覽服務器;動態(tài)鏈接庫;滑動軸承
l、引 言
產(chǎn)品設計是制造業(yè)的靈魂。雖然產(chǎn)品設計階段的投入只占產(chǎn)品總成本的約5%,而設計過程所做的決策幾乎決定了產(chǎn)品全部成本的約70%。產(chǎn)品的結構、性能、質量(全面滿足用戶要求)、成本(全成本)、交貨時間(含新產(chǎn)品開發(fā)時間)以及可制造性、可維修性(含產(chǎn)品升級)以及人、機、環(huán)境關系等,原則上都是在產(chǎn)品的設計階段確定的“。 。
隨著通信Web技術的發(fā)展,由于HTTP (HyperTextTransfer Protocol,超文本傳輸協(xié)議)協(xié)議為所有的應用提供了統(tǒng)一的基礎,解決層的問題,出現(xiàn)了所謂瀏覽器/服務器(Browser/Server)結構。將計算程序資源發(fā)布在網(wǎng)絡上,使其他用戶在產(chǎn)品設計階段就可以通過網(wǎng)絡來使用計算程序,從而支持產(chǎn)品設計,這已經(jīng)成為一種趨勢。
但是目前在基于網(wǎng)絡的瀏覽器/服務器架構的遠程程序調用實踐中仍然有一些問題。某些原有的科學計算程序資源是由Fortran 語言編寫而成,無法直接從網(wǎng)絡遠程調用使用,限制了其使用方式。目前很多單位為了能夠在網(wǎng)絡上提供遠程程序調用服務,花費大量精力用目前流行的編程語言重新編寫程序算法和內核,這樣增加了原有科學計算程序向Web應用轉化的復雜度,同時可能在重新編寫的過程中帶來新的問題。本文提出了如何應用瀏覽器/服務器架構來實現(xiàn)將原有的Fortran程序改造為可以網(wǎng)絡遠程調用的WEB應用程序的一種新的方法。
2、瀏覽器/,服務器(Browser/Server)結構在基于Web的客戶/服務器框架下,第l層為表示層,一般為基于HTML(HyperText Markup Language,超文本標記語言)的瀏覽器,同時可以使用一些客戶端控件或腳本技術來豐富用戶界面。它將用戶的輸入信息以HTrP請求的方式發(fā)送到Web服務器上,并接收Web服務器返回的數(shù)據(jù),將數(shù)據(jù)顯示在Web瀏覽器上。
第2層為功能層,功能層接收來自網(wǎng)絡客戶的請求,根據(jù)請求中包含的用戶參數(shù),執(zhí)行以組件形式存在的應用邏輯(包括數(shù)據(jù)庫操作和遠程程序調用等服務),與數(shù)據(jù)庫服務器通信,執(zhí)行數(shù)據(jù)庫訪問操作或執(zhí)行計算程序,并將處理結果傳送回客戶端。由于這些規(guī)則要通過網(wǎng)絡傳輸,會帶來安全性的問題,采用SSL(Secure Sockets Layers,安全套接層)可以減少安全風險。在某些情況下,為增加安全性或當瀏覽器不具有處理這些規(guī)則的能力,功能層則可以位于服務器端。
第3層為數(shù)據(jù)層,負責管理對數(shù)據(jù)庫數(shù)據(jù)的操作,維護數(shù)據(jù)庫的各種約束條件,位于數(shù)據(jù)庫服務器端。該層接收wleb服務器對數(shù)據(jù)庫訪問的請求,實現(xiàn)對數(shù)據(jù)庫查詢、修改、更新等功能,把執(zhí)行結果返回給Web服務器。
因此,在B/S結構下,第l層位于瀏覽器端,第3層位于服務器端,第2層即功能層可以位于瀏覽器端,也可以位于服務器端,一般來說功能層位于服務器端比較合適。
基于Web的瀏覽器/服務器(B/S)結構是由客戶/服務器(c/s)結構轉化而來的,也可以認為B/S模式是傳統(tǒng)C/S模式的一個子集。
瀏覽器/服務器模式的優(yōu)點在于,由于Web支持底層的TCP/IP協(xié)議,使Web與目前使用的幾乎所有局域網(wǎng)都可以做到無縫連接,從而徹底解決了異構系統(tǒng)間的連接問題;由于Web采用了”瘦客戶端“,使系統(tǒng)的開放性得到很大的改善,系統(tǒng)對將要訪問系統(tǒng)的用戶數(shù)的限制有所放松;系統(tǒng)的相對集中性使得系統(tǒng)的維護和擴展變得更加容易。比如,數(shù)據(jù)庫存儲空間不夠,可再加一個數(shù)據(jù)庫服務器;系統(tǒng)要增加功能,可以新增一個應用服務器來運行新功能;界面統(tǒng)一(全部為瀏覽器方式),操作相對簡單;業(yè)務規(guī)則和數(shù)據(jù)捕獲的程序容易分發(fā)等。
3、具體實現(xiàn)
3.1 將Fortran計算程序編制為動態(tài)鏈接庫從技術上講,動態(tài)鏈接庫是一個可執(zhí)行文件,就其功能而言,它可作為應用程序的庫,多個應用程序可訪問內存中單個動態(tài)鏈接庫拷貝中的內容。使用動態(tài)鏈接庫的好處在于可減少系統(tǒng)對內存的消耗;如使用共用動態(tài)鏈接庫中的函數(shù),應用程序的可執(zhí)行文件將會很小;在不改變函數(shù)接口的情況下,可改變動態(tài)鏈接庫中的函數(shù)而不必對應用程序重新進行編譯和連接。這樣可很方便地對應用程序進行升級;另外使用動態(tài)鏈接庫可方便地進行混合語言編程 。
將Fortran計算程序編制為動態(tài)鏈接庫的過程為如下:
(1)在Fortran PowerStation中新建工程,工程類型為”Windows動態(tài)鏈接庫“(Dynamic.1ink Library)。
(2)分析原有滑動軸承的Fortran計算程序,這些程序包括圓瓦、橢圓瓦、錯位瓦、多油葉和可傾瓦徑向滑動軸承計算程序,以及面推力瓦、可傾瓦推力滑動軸承計算程序。分析這些計算程序的輸入/輸出參數(shù),由此確定動態(tài)鏈接庫導出函數(shù)的輸入/輸出參數(shù)。原計算程序的輸入?yún)?shù)將作為導出函數(shù)的輸入?yún)?shù),原計算程序的輸出參數(shù)將全部放在數(shù)組中輸出。
(3)使用微軟擴展屬性DLLEXPORT定義動態(tài)鏈接庫與外部程序的接口。動態(tài)鏈接庫中可以有多個子程序和變量,但只有具有DLLEXPORT屬性的子程序和變量可以向動態(tài)鏈接庫外輸出供其它應用程序訪問。使用DLLEXPORT屬性生命輸出子程序和變量可以避免使用模塊定義(。def)文件并且會產(chǎn)生高效的可執(zhí)行代碼。舉例如下:
如果需要導出函數(shù)名為PBMCAL的函數(shù),則必須在函數(shù)頭中使用!ms$attributes dllexport::PBMCAL,申明該函數(shù)為導出函數(shù)。
由于Fortran PowerStation中編譯而得的DLL不是標準的COM組件,不能直接從網(wǎng)絡調用,所以作者提出用VB的ActiveX DLL工程將該DLL的功能包含,輸入/輸出參數(shù)與其一致,所得的標準COM組件可以用于網(wǎng)絡調用。
3.2 利用Visual Basic將DLL封裝成標準的COM組件ActiveX控件是實現(xiàn)VB面向對象特性最有利的工具。
ActiveX控件不同于其它對象?丶粌H僅是代碼,它還具有類似窗體的可視部分,但是又與窗體不同,它不能脫離容器而單獨存在” 。另外,控件同時被開發(fā)者和最終用戶使用,盡管意義不同。
在VB開發(fā)環(huán)境中建立新工程,其類型為ActiveX DLL工程類型,然后在工程中調用Power Fortran編制的DLL文件,以徑向圓瓦滑動軸承為例,調用格式如下:
Public Declare Sub PBM CAL Lib “PBM 2.(u1” Alias“一PBMCAL@52”(eta As Single,omeg As Single,radiu As Single,boverd As Single,weight As Single,psai As Single,kind As Integer,ByRef dt As Single, ByRef xtt As Single, psaiw2 AsSingle,Index As Integer, aett2 As Single,ByRef OResult AsSingle)其中eta為潤滑油的動力粘度,omeg為轉速,radiu為軸承半徑,boverd為寬徑比,weight為工作載荷,psai為間隙比,kind為軸承類型,psaiw2為載荷與鉛垂線的夾角。(度)(順轉向為正),aett2為平均溫度,OResult是數(shù)組格式,其將所有的計算結果置于數(shù)組中而導出。
在混合語言編程中需要注意的一個主要問題是Fortran缺省約定的缺省參數(shù)傳遞方式是引用方式(Reference)。在這種引用方式下,所傳遞的都是參數(shù)的地址,如果在子過程中對參數(shù)進行了修改,這一修改將帶回到調用過程。而在傳值方式下,所傳遞的是參數(shù)的當前值,子過程對于參數(shù)的修改不會對調用過程的參數(shù)值產(chǎn)生影響。在VB中,用Declare聲明外部過程,在聲明中將BYVAL關鍵字放在傳值傳遞的參數(shù)前,不加說明的或者用BYREF關鍵字聲明的就是引用傳遞。
將該ActiveX DLL工程編譯后即可得到DLL文件,該DLL文件是標準的COM組件,可以用于Web網(wǎng)頁的調用。
3.3 采用ASP程序在Web網(wǎng)頁調用ActiveX控件ASP除了可以調用內嵌的ActiveX控件外,還可以調用由用戶編寫的標準的ActiveX控件。在使用控件前先要進行定義。以徑向圓瓦滑動軸承為例,在ASP程序中主要調用部分如下:Set objCalc=Server.Createobject(‘'prjFor.clsFor'’)‘創(chuàng)建圓瓦徑向滑動軸承性能計算組件對象實例objCalc.snglnput=Array(eta,omeg,radiu,boverd,weight,psai,kind.,d 1),xtt(1),.psaiw2,index2,aett2,OResult(1))’給輸入?yún)?shù)數(shù)組賦值objCalc.PbmCacl‘調用計算程序接口函數(shù)進行計算該ASP程序調用界面如圖2所示。計算完畢,輸出參數(shù)可以從0 Calc.Oresult得到,顯示在Web網(wǎng)頁上,供用戶進一步處理。
4、系統(tǒng)運行模型采用UML(UnifiedModeling Language,統(tǒng)一建模語言)對滑動軸承網(wǎng)絡計算程序的運行過程進行建模。
計算滑動軸承靜動參數(shù)是計算程序的主要任務,在系統(tǒng)運行模型中加入數(shù)據(jù)庫服務的支持,主要目的是保存每組輸入?yún)?shù)所對應的滑動軸承靜動特性,這樣在有同樣的輸入?yún)?shù)輸入時,在功能層可做出判斷,數(shù)據(jù)庫中已有相應的靜動特性參數(shù),則直接從數(shù)據(jù)庫中讀取返回給用戶,這樣既節(jié)約了服務器的計算資源,也提高了對用戶請求的響應速度。
5、結束語
這種將原有的Fortran程序改造為可以網(wǎng)絡遠程調用的Web應用程序的新方法克服了作者所在研究所原有科學計算程序資源不能在網(wǎng)上運行的缺點,將原來只能在單機上運行的程序,改造成為可以用來在Web上提供服務的標準COM組件,利用ASP程序調用標準的COM組件。這樣簡化了原有科學計算程序向Web應用轉化的復雜度,只要對源程序稍加改造,添加接口服務程序,對原有科學計算程序核心代碼的修改很少,可以充分保持原有科學計算程序的正確性和健壯性,避免了重新編碼可能帶來的新的錯誤,提高了工作效率。
參考文獻:
[1] 謝友柏,F(xiàn)代設計與知識獲取[J】。中國機械工程,1996,7(6):364 1.
[2] JIN Lu Stephen.Toward a better understanding of enginee.-ring design models[M].Shaker Verlag GmbH,。Aachen,。1998.71—86.
[3】 桂良進。Fortran power station~0使用與編程[M].北京航空航天大學出版社,1999.258293.
[4] 王清賢,王紅霞,王磊。Visual basic activeX編程實例詳解[M】。北京:人民郵電出版社,2000.9—16.
【支持產(chǎn)品設計的滑動軸承網(wǎng)絡計算程序的研究】相關文章:
論研究刑事上訴審程序的意義06-12
刑事二審程序的若干問題研究05-11
談智能決策支持系統(tǒng)及其在林業(yè)中的應用研究08-21
淺談計算機網(wǎng)絡防御策略求精關鍵技術研究論文04-19
計算機網(wǎng)絡論文11-17
淺談幾種常見的網(wǎng)絡存儲技術的比較及研究論文05-03
計算機網(wǎng)絡教學論文11-03
計算機網(wǎng)絡應用論文07-20
從程序本位到程序自治06-04
淺談計算機網(wǎng)絡的防御技術04-29