顧 琪,周臨震
(1.鹽城紡織職業(yè)技術(shù)學(xué)院機(jī)電工程系,江蘇鹽城 224000;2.鹽城工學(xué)院優(yōu)集學(xué)院,江蘇鹽城 224000)
組合機(jī)床是一種根據(jù)被加工件的特征以通用部件為基礎(chǔ)、專用部件為補(bǔ)充的高效專用機(jī)床,其中通用部件達(dá)70% ~90%[1]。當(dāng)前,隨著CAD技術(shù)的普及組合機(jī)床的設(shè)計(jì)已經(jīng)普遍跟計(jì)算機(jī)技術(shù)相結(jié)合,許多組合機(jī)床CAD系統(tǒng)應(yīng)運(yùn)而生[2-4]。越來(lái)越多的企業(yè)在產(chǎn)品開發(fā)過程中引入?yún)?shù)化設(shè)計(jì)技術(shù)來(lái)提高產(chǎn)品開發(fā)效率,而要真正能夠?qū)崿F(xiàn)開發(fā)并行管理、產(chǎn)品參數(shù)全相關(guān)性就需要有建立在統(tǒng)一數(shù)據(jù)庫(kù)之上的標(biāo)準(zhǔn)模型。開發(fā)基于外部動(dòng)態(tài)鏈接及數(shù)據(jù)庫(kù)的機(jī)床通用部件可以為組合機(jī)床整體設(shè)計(jì)提供支持,也可以實(shí)現(xiàn)機(jī)床眾多通用零部件的快速設(shè)計(jì)與開發(fā),為縮短機(jī)床產(chǎn)品的開發(fā)周期,提高開發(fā)效率和質(zhì)量提供保障。
外部數(shù)據(jù)庫(kù)訪問技術(shù)通常主要有數(shù)據(jù)訪問對(duì)象(Data Access Object,DAO)、開放數(shù)據(jù)庫(kù)互連(Open Database Connectivity,ODBC)以及ActiveX數(shù)據(jù)對(duì)象(ActiveX Data Objects,ADO)。
(1)通過ODBC訪問外部數(shù)據(jù)庫(kù)
ODBC是由微軟公司提出的數(shù)據(jù)庫(kù)訪問接口標(biāo)準(zhǔn)。它提供了一組對(duì)數(shù)據(jù)庫(kù)訪問的標(biāo)準(zhǔn)API,這些API獨(dú)立于各種數(shù)據(jù)庫(kù)管理系統(tǒng)。ODBC可以由統(tǒng)一的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)對(duì)幾乎所有的數(shù)據(jù)庫(kù)的操作管理。
(2)通過DAO訪問外部數(shù)據(jù)庫(kù)
DAO使用Microsoft Jet數(shù)據(jù)庫(kù)引擎來(lái)訪問數(shù)據(jù)庫(kù),是第一個(gè)面向?qū)ο蟮慕涌凇Mㄟ^DAO訪問數(shù)據(jù)庫(kù)可以通過Visual C++提供的五個(gè)MFC DAO類訪問,其與ODBC類兩者除使用的數(shù)據(jù)引擎不同之外,它們還有很多相同的地方。DAO提供的多數(shù)成員函數(shù)和類都與ODBC提供的對(duì)應(yīng)的函數(shù)和類相似。
(3)通過ADO訪問外部數(shù)據(jù)[5]
ADO與ODBC相比,使用更加簡(jiǎn)便,免去了繁瑣的配置數(shù)據(jù)源工作。ADO庫(kù)包含3個(gè)基本接口,通過這三個(gè)基本接口可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問,它們的主要功能為:_ConnectionPtr接口負(fù)責(zé)打開或連接數(shù)據(jù)庫(kù)文件;_CommandPtr接口存取數(shù)據(jù)庫(kù)的內(nèi)容;_RecordsetPtr接口對(duì)數(shù)據(jù)庫(kù)下達(dá)行動(dòng)查詢指令,以及執(zhí)行SQL Server的存儲(chǔ)過程。
NX/OPEN訪問其他數(shù)據(jù),例如可以通過UF_XS_extract_spreadsheet和UF_XS_store_spreadsheet抽取和儲(chǔ)存 SpreadSheet、通過 uc4504、uc4514、uc4524 等 NX/OPEN API中有關(guān)文件的操作函數(shù)來(lái)訪問文本文件。
使用NX/Open進(jìn)行二次開發(fā)時(shí)主要使用其提供的菜單腳本文件、對(duì)話框設(shè)計(jì)以及應(yīng)用程序接口函數(shù)集三個(gè)二次開發(fā)包。NX/Open API是NX提供的與外部應(yīng)用程序?qū)崿F(xiàn)接口的函數(shù)集,運(yùn)用它幾乎可以實(shí)現(xiàn)所有能在NX界面上的操作。NX/OPEN API程序能在內(nèi)部程序和外部程序兩種環(huán)境下運(yùn)行[6]。內(nèi)部UF是以動(dòng)態(tài)鏈接庫(kù)(*.DLL)的形式創(chuàng)建并編譯的,外部UF程序是可執(zhí)行程序(*.EXE)。以動(dòng)態(tài)鏈接庫(kù)運(yùn)行必須啟動(dòng)NX Gateway,它執(zhí)行時(shí)每個(gè)步驟都可以從NX的客戶窗口中得到動(dòng)態(tài)反映;以可執(zhí)行程序運(yùn)行只要有NX License的支持不需要啟動(dòng)NX,因而不能和NX Gateway發(fā)生聯(lián)系。BlockStyler模塊提供了與NX界面風(fēng)格完全一致對(duì)話框可視化設(shè)計(jì)工具;MenuScript模塊用于創(chuàng)建或編輯NX的標(biāo)準(zhǔn)菜單和工具條腳本文件。
在NX平臺(tái)上,運(yùn)用NX/OPEN二次開發(fā)工具開發(fā)客戶定制軟件平臺(tái)關(guān)鍵在于實(shí)現(xiàn)NX軟件、基礎(chǔ)數(shù)據(jù)庫(kù)以及定制應(yīng)用程序之間的相互通信。圖1為運(yùn)用內(nèi)部動(dòng)態(tài)鏈接庫(kù)及ODBC方式實(shí)現(xiàn)組合機(jī)床通用零部件設(shè)計(jì)的原理方案。
圖1 通用部件庫(kù)設(shè)計(jì)原理方案
根據(jù)組合機(jī)床通用部件的實(shí)際設(shè)計(jì)需求,在分析具體二次開發(fā)技術(shù)的基礎(chǔ)上開發(fā)基于外部數(shù)據(jù)及動(dòng)態(tài)鏈接庫(kù)的通用部件設(shè)計(jì)實(shí)例,其中利用ODBC技術(shù)實(shí)現(xiàn)外部數(shù)據(jù)庫(kù)的訪問,利用DLL方式實(shí)現(xiàn)定制客戶運(yùn)用程序運(yùn)行,利用Microsoft Office Access建立本地組合機(jī)床通用部件數(shù)據(jù)庫(kù)。
(1)菜單、對(duì)話框定制
根據(jù)客戶定制要求可以使用NX/OPEN提供的MenuScript模塊創(chuàng)建或編輯系統(tǒng)菜單和工具條,使用BlockStyler模塊開發(fā)系統(tǒng)對(duì)話框。通過編輯菜單文件,定義菜單按鈕響應(yīng)對(duì)用DLL,通過對(duì)對(duì)話框添加回調(diào)函數(shù)來(lái)響應(yīng)客戶定制事件。對(duì)話框本身可以通過在菜單項(xiàng)中的調(diào)用,實(shí)現(xiàn)定制客戶程序與NX環(huán)境相互融合。圖2為組合機(jī)床通用部件滑臺(tái)設(shè)計(jì)對(duì)話框。
(2)環(huán)境變量設(shè)置
NX 規(guī)定的目錄有startup、application、udo和dfa,Startup目錄存放NX啟動(dòng)時(shí)加載的動(dòng)態(tài)鏈接庫(kù)文件(*.dll)、菜單文件(*.men)和工具欄文件(*.tbr);Application目錄存放具體的功能定制程序文件,如對(duì)話框文件;Udo目錄用于存放與用戶自定義對(duì)象相關(guān)的動(dòng)態(tài)鏈接庫(kù)文件;Dfa目錄存放KF程序文件及對(duì)應(yīng)的對(duì)話框文件。
圖2 組合機(jī)床通用部件滑臺(tái)設(shè)計(jì)對(duì)話框
NX環(huán)境配置文件 ugii_env.dat中存在“UG_VENDOR_DIR”、“UG_SITE_DIR”、“UG_USER_DIR”3個(gè)用于注冊(cè)工程路徑的環(huán)境變量。組合機(jī)床通用部件設(shè)計(jì)環(huán)境變量設(shè)置為“UGII_USER_DIR=開發(fā)路徑”。另外多數(shù)應(yīng)用程序開發(fā)還可以添加一個(gè)位圖文件,通過“UGII_BITMAR_PATH=開發(fā)路徑位圖文件”指定位圖文件。
通過Access建立本地組合機(jī)床通用部件數(shù)據(jù)庫(kù),包括機(jī)械滑臺(tái)、液壓滑臺(tái)、動(dòng)力頭、滑臺(tái)底座等通用部件數(shù)據(jù)庫(kù),如圖3所示。
圖3 通用部件數(shù)據(jù)庫(kù)
使用ODBC訪問數(shù)據(jù)庫(kù)時(shí)需要指定一個(gè)DSN(Data Source Name)以便于連接到一個(gè)指定的ODBC驅(qū)動(dòng)程序。DSN是用于指定ODBC與相關(guān)的驅(qū)動(dòng)程序相對(duì)應(yīng)的一個(gè)入口。對(duì)通用部件數(shù)據(jù)庫(kù)的操作,通常可以使用CDatabase類對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的聯(lián)接、使用CRecordSet類對(duì)象實(shí)現(xiàn)對(duì)記錄集的操作。
通過NX/Open AppWizard應(yīng)用程序開發(fā)向?qū)?,或者通過Win32應(yīng)用程序向?qū)АFC應(yīng)用程序向?qū)Ф伎梢詣?chuàng)建實(shí)現(xiàn)客戶調(diào)用的內(nèi)部DLL。
通過添加回調(diào)函數(shù)可以實(shí)現(xiàn)客戶定制應(yīng)用程序。如下為滑臺(tái)設(shè)計(jì)對(duì)話框【OK】按鈕的回調(diào)函數(shù)片段:
運(yùn)用NX/OPEN二次開發(fā)應(yīng)用程序設(shè)計(jì)組合機(jī)床一般通用零部件,只需設(shè)計(jì)師根據(jù)應(yīng)用程序?qū)Ш竭x擇所需通用部件的型號(hào)及部分主要性能參數(shù),應(yīng)用程序便可以根據(jù)設(shè)計(jì)師決策自動(dòng)匹配相關(guān)通用部件的標(biāo)準(zhǔn)模型,并根據(jù)數(shù)據(jù)庫(kù)寄存數(shù)據(jù)對(duì)模型進(jìn)行更新操作,實(shí)現(xiàn)通用部件的快速化設(shè)計(jì)。同時(shí)設(shè)計(jì)師還可以檢索部件詳細(xì)尺寸參數(shù)和性能參數(shù)來(lái)輔助決策。圖4通過應(yīng)用程序設(shè)計(jì)的滑臺(tái)三維模型。
圖4 1HYT50液壓滑臺(tái)3D模型
在外部數(shù)據(jù)庫(kù)支持下,運(yùn)用NX提供的外部應(yīng)用程序接口創(chuàng)建并編譯DLL形式的用戶定制函數(shù),實(shí)現(xiàn)對(duì)組合機(jī)床通用部件的設(shè)計(jì)。可以明顯縮短組合機(jī)床通用部件的開發(fā)周期,提高機(jī)床整體開發(fā)效率、降低成本,同時(shí)可以對(duì)機(jī)床通用部件設(shè)計(jì)參數(shù)和信息實(shí)現(xiàn)數(shù)據(jù)管理,對(duì)企業(yè)知識(shí)的繼承和重用也具有重要的意義。
[1]謝家瀛.組合機(jī)床設(shè)計(jì)簡(jiǎn)明手冊(cè)[M].北京:機(jī)械工業(yè)出版社,2002.
[2]高飛,孫俊蘭,李青祝,等.基于UGNX的組合機(jī)床多軸箱通用件庫(kù)的研究[J].煤礦機(jī)械,2011,32(8):227-229.
[3]周臨震,顧琪,倪紅軍,等.基于知識(shí)的組合機(jī)床總體設(shè)計(jì)CAD系統(tǒng)的研究與開發(fā)[J].機(jī)械設(shè)計(jì)與制造,2012(1):260-262.
[4]王旭華,廖文和,劉德仿.基于知識(shí)的組合機(jī)床總體方案CAD系統(tǒng)的研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2002(2):45-47.
[5]葉建平,賀海暉,石林祥,等.基于ADO的Pro/E數(shù)據(jù)庫(kù)接口研究開發(fā)[J].制造業(yè)自動(dòng)化,2009,31(4):98-100.
[6]侯永濤,丁向陽(yáng).UG/Open二次開發(fā)與實(shí)例精解[M].北京:化學(xué)工業(yè)出版社,2007.