李道軍,李廷鋒,盧青波
(鄭州職業(yè)技術(shù)學(xué)院,河南鄭州 450121)
Mathcad 是一款功能強(qiáng)大的工程計算軟件,具有獨(dú)特的可視化格式和便箋式界面,能將標(biāo)準(zhǔn)的數(shù)學(xué)符號、文本和圖形集成到一個工作表中,用來執(zhí)行、記錄和共享工程計算及設(shè)計工作,得到了越來越多的工程技術(shù)人員的青睞[1-4]。Mathcad 還為開發(fā)人員提供了OLE(Object Linking and Embedding,對象鏈接與嵌入)自動化接口,使其能夠很容易地集成到通用設(shè)計平臺中[5]。
Visual C++集成的MFC 框架、Class Wizard 和App Wizard 都提供對OLE 自動化的擴(kuò)展支持。這些工具處理了創(chuàng)建自動化服務(wù)器和自動化控制器的大部分例行事務(wù),極大地方便了編程工作。因此,Visual C++已被廣泛應(yīng)用于各種軟件的二次開發(fā)及應(yīng)用[6-10]。
本文結(jié)合工程項目的實(shí)際開發(fā)經(jīng)驗,以Visual C++為開發(fā)工具,Mathcad 為后臺計算工具,開發(fā)了轉(zhuǎn)軸的可靠性設(shè)計系統(tǒng),為進(jìn)一步研究機(jī)械零件的可靠性優(yōu)化設(shè)計平臺提供思路和技術(shù)支持。
Mathcad 為用戶提供了很多接口,可以用于輸入、輸出數(shù)據(jù)及對軟件的二次開發(fā),例如使用C、C++或Fortran 開發(fā)Mathcad函數(shù),使用Visual Basic 從外部程序訪問Mathcad 自動化接口,使用COM(Component Object Model,部件對象模型)接口創(chuàng)建新的Mathcad 組件等。本文主要研究使用Visual C++從外部程序訪問Mathcad 的OLE 自動化接口。
OLE 是一種建立在COM 技術(shù)基礎(chǔ)上的交互進(jìn)程通信技術(shù)。OLE 定義和實(shí)現(xiàn)了一種允許應(yīng)用程序作為軟件/對象(數(shù)據(jù)集合和操作數(shù)據(jù)的函數(shù))彼此進(jìn)行/連接的機(jī)制。OLE 自動化使得用戶不僅能夠操作程序中的對象,還可以調(diào)用操作系統(tǒng)中其他程序的對象。
OLE 自動化有自動化服務(wù)器端和自動化客戶端兩種類型,Mathcad 屬于自動化服務(wù)器。Mathcad 自動化服務(wù)器中包含了多種OLE 自動化對象,有Application 對象、WorkSheets 對象、WorkSheet對象、Region 對象、NumericValue 對象等。要調(diào)用Mathcad 提供的OLE 自動化對象,可以通過Mathcad 提供的對象庫(Object Library)實(shí)現(xiàn)。在Visual C++平臺下,通過導(dǎo)入Mathcad 類型庫(Mathcad Automation API<1.0>),使之成為Visual C++中可用的類文件,在程序中即可調(diào)用Mathcad 中相應(yīng)的OLE 對象。在Visual Studio 2010環(huán)境下,導(dǎo)入Mathcad 對象庫的界面如圖1 所示。
依據(jù)實(shí)際項目需求,在Visual C++平臺下新建類文件,用于管理和實(shí)現(xiàn)界面與后臺Mathcad 自動化服務(wù)器的操作(圖2)。
(1)打開當(dāng)前工作表的關(guān)鍵代碼如下:
程序首先通過調(diào)用Open 函數(shù)打開工作表文件,通過設(shè)置變量的值將用戶信息輸入到工作表文件進(jìn)行重新計算,然后通過獲取相關(guān)變量的值,返回Mathcad 計算結(jié)果,供用戶查看。
利用Mathcad 軟件進(jìn)行可靠性設(shè)計的一般步驟為:①進(jìn)入Mathcad 環(huán)境的工作頁,確定設(shè)計變量,編寫設(shè)計過程;②利用Mathcad 的解方程函數(shù)polyroots 進(jìn)行問題求解;③設(shè)置精度值,調(diào)用roots 函數(shù)來提高所求根的準(zhǔn)確性。
例如,某圓錐齒輪簡支軸危險截面的彎矩M=10 445 N·m,扭矩T=7903 N·m,應(yīng)力集中源有鍵槽、圓角和過盈配合。要求轉(zhuǎn)軸運(yùn)轉(zhuǎn)后107 可靠度R≥0.999,試設(shè)計該軸[11]。
在Mathcad 中依據(jù)可靠度R 用正態(tài)累積分布反函數(shù)qnorm(1-R,0,1)確定聯(lián)結(jié)系數(shù)z;根據(jù)聯(lián)結(jié)系數(shù)z 用正態(tài)累積分布函數(shù)pnorm(z,0,1)確定失效概率F;用正態(tài)分布概率密度函數(shù)dnorm(z,0,1)確定失效頻度f;根據(jù)多項式多次項系數(shù)向量P 用求解多項式根的函數(shù)polyroots(P)計算轉(zhuǎn)軸直徑d;最后通過roots 函數(shù)來提高對所求解的準(zhǔn)確性。所編寫的Mathcad 設(shè)計過程見表1。
求解結(jié)果為R=0.999 時,轉(zhuǎn)軸危險截面的直徑為105.984 mm。聯(lián)結(jié)系數(shù)與可靠度的關(guān)系曲線如圖3 所示,軸徑與可靠度的關(guān)系曲線如圖4 所示。
圖3 聯(lián)結(jié)系數(shù)z 與可靠度R 的關(guān)系曲線
圖4 軸徑D 與可靠度R 的關(guān)系曲線
MFC 給軟件開發(fā)者提供了一種便捷快速建立標(biāo)準(zhǔn)的用戶界面的方法,基于MFC 對話框應(yīng)用程序及Mathcad 設(shè)計過程設(shè)計了轉(zhuǎn)軸的可靠性設(shè)計系統(tǒng)(圖5)。為使設(shè)計數(shù)據(jù)能夠長久保存,結(jié)合ADO(ActiveX Data Object)數(shù)據(jù)庫技術(shù)將設(shè)計數(shù)據(jù)保存到數(shù)據(jù)庫中,以方便用戶查看及調(diào)用。其中“保存”按鈕的功能是將當(dāng)前設(shè)計數(shù)據(jù)及計算結(jié)果保存到數(shù)據(jù)庫中,“查看”按鈕的功能是顯示當(dāng)前數(shù)據(jù)庫已保存的數(shù)據(jù)信息(圖6)。當(dāng)用戶選定一條信息后,點(diǎn)擊確定按鈕后,所選定的數(shù)據(jù)信息會返回到設(shè)計界面。
圖5 轉(zhuǎn)軸可靠性設(shè)計系統(tǒng)界面
圖6 當(dāng)前數(shù)據(jù)庫查看界面
隨著現(xiàn)代設(shè)計方法及理論的發(fā)展,Mathcad 以其與Pro/E 良好的接口必將在機(jī)械行業(yè)設(shè)計中得到廣泛應(yīng)用。研究和實(shí)現(xiàn)Mathcad 在設(shè)計領(lǐng)域的集成,將為基于Mathcad 的通用工程設(shè)計軟件開發(fā)提供技術(shù)支持。本文設(shè)計了基于Mathcad 自動化接口的通用類,并基于數(shù)據(jù)庫技術(shù),研究開發(fā)了轉(zhuǎn)軸的可靠性設(shè)計系統(tǒng),并給出了軟件中的關(guān)鍵代碼,對Mathcad 在工程設(shè)計中的應(yīng)用,有一定的實(shí)用價值和參考價值。