李中凱,殷文衛(wèi)
(中國礦業(yè)大學機電工程學院,江蘇 徐州 221116)
近年來,設計結構矩陣DSM(Design Structure Matrix)已被設計人員用作復雜系統(tǒng)建模和分析的工具,并已成功應用于許多研究和實踐領域[1]。DSM具有簡單、緊湊和形象化等優(yōu)勢,并且通過適當?shù)姆治鍪侄?,能夠支持開發(fā)方案的集成和分解問題[2],已廣泛應用于產(chǎn)品開發(fā)、項目規(guī)劃管理和成本預算、時間優(yōu)化管理等[3]。在提升產(chǎn)品的研發(fā)能力,降低整個項目的過程研發(fā)周期和成本,增加產(chǎn)品的競爭力方面發(fā)揮了重要的作用。
產(chǎn)品結構的DSM包含大量知識,且產(chǎn)品分解和結構關系可以從不同方面進行解釋,因而難以構建DSM。不同設計人員會選擇不同方式或角度來構建模型的DSM,因此缺乏一種程式化的生成方案。而且在很多模塊化設計方法中,DSM都是設計人員手工建立的。手工建立過程復雜繁瑣,構造過程也會出現(xiàn)人為因素的錯誤。同時,DSM內(nèi)部元素的取值也有不同方法,造成DSM的構建結果的主觀性較強。因此,Tilstra等人[4]提出了一種標準化的方法用于構建產(chǎn)品DSM,以提高建模人員之間的一致性。在模型構建中保持一致性和減少工作量的需求推動了從現(xiàn)有數(shù)據(jù)庫中自動提取DSM的方法的發(fā)展。Wilschut等人[5]介紹了一種構建多域矩陣的方法,該矩陣是根據(jù)文本的功能規(guī)范生成的。根據(jù)Wilschut的說法,功能規(guī)范的固定語法允許自動推導組件之間、組件功能之間以及系統(tǒng)參數(shù)之間的依賴關系,根據(jù)這些依賴關系從而構建出多域矩陣,構建多域矩陣方法還可以支持現(xiàn)有工程產(chǎn)品的DSM的建模。上述DSM生成技術復雜,難以重現(xiàn),且自動化程度不高,應用領域較窄。隨著技術的進步,設計人員還可以從計算機輔助設計CAD(Computer Aided Design)模型或其他標準化框架中自動提取DSM[6]。例如,Li等人[7]提出了一種從CAD模型提取DSM信息的技術,以解決CAD模型的分層模塊化問題。但是,該技術缺乏裝配過程中冗余信息的處理,影響了DSM生成的準確性。針對上述問題,本文研究了從CAD模型中提取DSM的方法,并利用SolidWorks API(Application Programming Interface)成功設計了從CAD模型文件中自動提取DSM的系統(tǒng)。
SolidWorks二次開發(fā)能夠提高產(chǎn)品設計效率,縮短開發(fā)周期,將設計人員從繁多的計算中解放出來,使其更多地從事創(chuàng)新活動。二次開發(fā)的關鍵在于對SolidWorks API的應用。API是一種軟件開發(fā)工具,通過在另一個應用程序中提供一種編程語言的代碼來實現(xiàn)不同應用程序之間的集成。Reddy等人[8]將傳統(tǒng)的軸承設計在SolidWorks中進行二次開發(fā),實現(xiàn)了軸承的快速參數(shù)化建模,并且基于Visual Basic開發(fā)出良好的用戶界面。Wang等人[9]介紹了一種使用專業(yè)自動化設計軟件進行核心鉆機夾頭自動設計的新方法。利用這個方法開發(fā)的SolidWorks二次開發(fā)軟件只需輸入工作要求的幾個參數(shù),就可以快速完成卡盤零件和裝配的設計。汪林等人[10]利用SolidWorks提供的API接口,采用異步模式對機械產(chǎn)品進行二次開發(fā),并在VC++開發(fā)環(huán)境下實現(xiàn)整個裝配體的參數(shù)化建模。
SolidWorks使用特征建模方法生成產(chǎn)品的形狀和歷史,因此API可以提取模型的特征。 Hasan等人[11]提出了一種利用SW-API識別產(chǎn)品特征的新方法,該方法可以自動識別SW-CAD文件中裝配設計中的裝配知識、幾何知識和非幾何知識。Wang等人[12]使用SolidWorks API設計了一種命名和識別拓撲實體全名的算法,該算法為每個組件賦予特定的ID,直接提取拓撲實體的信息,而無需遍歷特征量。從裝配體提取這些非幾何知識,中外學者進行了一些研究,如馬飛等人[13]利用SolidWorks提供的API,采用Visual Basic進行二次開發(fā),較好地解決了CADCAPP集成系統(tǒng)中非幾何特征信息自動提取問題。何桂華等人[14]分析SolidWorks中模型搭建過程中裝配約束信息建模與儲存的方法,成功提出了一種裝配約束識別與提取新技術。
本文的主要目的是研究DSM的自動生成技術。通過CAD模型分析確定了組件之間連接所需的信息;利用SolidWorks API提取和遍歷CAD模型的特征信息;提取的信息被分類并存儲在數(shù)據(jù)庫中。然后,分析組裝的部件之間的幾何關系,以確定各種類型的配合對部件之間的連接關系的影響程度;建立了相應的分析和比較規(guī)則。 最后,利用Visual Basic成功設計了DSM自動生成系統(tǒng),并以一些不同結構的CAD模型為例驗證了所開發(fā)系統(tǒng)的有效性。
本文研究的是基于零件的DSM,這種DSM是組成子系統(tǒng)、零件,以及之間關系的系統(tǒng)結構模型,用于描述各組成部分之間的依賴關系。從模型中所提取的DSM,描述的依賴關系是模型中各零件之間連接或物理接觸關系。這種DSM可以讓設計者快速了解剛入手的產(chǎn)品所有零件組成和它們之間的連接關系,并可以用于模塊化設計和產(chǎn)品復雜度分析。
該系統(tǒng)的開發(fā)思路是從SolidWorks中提取和分析3D模型裝配過程的關鍵知識,從而設計基于Visual Basic的DSM自動生成系統(tǒng)。 具體的開發(fā)過程如圖1所示。
Figure 1 Development process of the system圖1 系統(tǒng)開發(fā)流程
Figure 3 Mate function圖3 配合功能
在開發(fā)過程的初始階段分析CAD模型,獲取裝配過程的關鍵特征信息。利用遍歷算法和API提取模型在設計特征樹中的裝配信息。然后,根據(jù)一定的規(guī)則分析各部件之間的配合關系,從而得出部件之間是否存在接觸關系。在系統(tǒng)設計階段,使用Visual Basic實現(xiàn)初始階段的分析與過程。第1步是建立系統(tǒng)的人機界面和交互式軟件的界面,編寫各種功能和分析規(guī)則的程序代碼,設計DSM自動生成系統(tǒng)。在測試階段,使用多個CAD模型作為測試對象來啟動DSM自動生成系統(tǒng)以獲得DSM,然后將DSM與手動創(chuàng)建的DSM(根據(jù)部件的實際接觸關系)進行比較。根據(jù)比較結果,對設計階段的分析規(guī)則進行修正。最后通過多次測試和修改提高系統(tǒng)的適用性和準確性。
系統(tǒng)以能夠?qū)崿F(xiàn)模型的DSM自動生成為主要目標,因此系統(tǒng)應該具備的主要功能是DSM自動構建功能。完整的系統(tǒng)除了要有主要功能還需具備多個子功能,用來支持或者輔助主要功能。圖2所示為DSM自動生成系統(tǒng)框架。
Figure 2 Framework of system function圖2 系統(tǒng)功能框圖
通過系統(tǒng)功能分析可知,這些功能的實現(xiàn)需要不同的開發(fā)工具。SolidWorks 三維設計軟件為用戶提供豐富的API函數(shù)接口和模型展示窗口,同時用戶可以使用任意支持COM或OLE語言的開發(fā)工具進行二次開發(fā)[15]。本文采用Visual Basic編程工具對系統(tǒng)進行開發(fā),Access數(shù)據(jù)庫作為信息的臨時存取庫,系統(tǒng)整理后的數(shù)據(jù)和DSM保存在Excel文件中,供用戶查看調(diào)用。
CAD模型是由各個部件或零件組裝而成的。如圖3所示,在SolidWorks中設計人員通過配合功能將各個部件進行組裝,從而得到一個完整的裝配體,因此CAD裝配模型包含關于相關零件、零件之間的連接關系,以及零件間使用的配合類型等信息。各個部件之間使用的配合類型與部件之間接觸關系會存在某種映射規(guī)律,本文研究的就是如何從裝配體中各種配合關系推理出零件之間接觸關系,從而得到模型結構的DSM。
我們對SolidWorks中裝配體的研究發(fā)現(xiàn),SolidWorks中CAD模型的特征信息都會存放在FeatureManager設計樹中,而有關零件之間的配合關系等信息會存放在設計樹下的Mates中,如圖4所示。我們通過SolidWorks的API訪問FeatureManager設計樹,對其進行遍歷獲取特征對象Mates節(jié)點,然后再對Mates進行遍歷獲取該特征下所有信息。
Figure 4 FeatureManager design tree圖4 FeatureManager 設計樹
Figure 5 VBA program flow chart and mate informaiton圖5 遍歷程序流程圖及配合信息
SolidWorks API幫助中有詳細的關鍵字使用說明和程序代碼實例,使用關鍵字能夠?qū)olidWorks進行二次開發(fā)實現(xiàn)某種功能。圖5所示是API幫助中遍歷Mates特征內(nèi)信息的程序流程圖。 通過對該程序進行修改可以得到構建DSM所需的信息,避免冗余信息的干擾。首先,通過API中關鍵字訪問模型設計結構樹文件。該文件的第1個特征是通過關鍵字Firstfeature獲得的,特征名稱由關鍵字GetTypeName 獲取。然后通過利用關鍵字GetNextFeature和循環(huán)結構遍歷所有設計結構樹的模型特征。當獲得Mates特征節(jié)點之后,程序?qū)⒗藐P鍵字GetNextSubFeature和循環(huán)結構遍歷提取該節(jié)點的所有特征。程序可以在SolidWorks的VBA中運行,獲得的裝配等信息呈現(xiàn)在立即窗口中。立即窗口展示的信息包括零件名稱和零件之間所使用的配合類型。
一個完整的裝配體中各個組成零件聯(lián)系是靠各種配合關系實現(xiàn)的,配合使裝配體零件之間生成幾何關系。在SolidWorks中主要配合類型分為3種:標準配合、高級配合和機械配合。
本文研究的配合關系主要為標準配合,標準配合包括角度、重合、同心、距離、鎖定、平行、垂直和相切配合。如重合配合迫使2個平面變成共平面,面可沿彼此移動,但不能分離開;同軸心配合迫使2個圓柱面變成同心,面可沿共同軸移動,但不能遠離此軸。因此,單個或多個配合使2個零件間產(chǎn)生一定的幾何關系。研究零件所具有的配合就可以推導出零件間有無連接關系。
Figure 6 Hydraulic assembly 圖6 液壓裝配體
圖6是一個簡單的液壓支架模型。從該模型中可以很容易地發(fā)現(xiàn),在組裝過程中通常使用重合配合和同心配合。底座和底座連桿通過重合配合連接,使底座連桿可沿底座上的導槽滑動。基底連桿和頂部連桿之間的鉸鏈連接通過使用重合配合和同心配合來實現(xiàn)。并且液壓缸和基礎連桿以及頂部連桿之間的連接通過重合配合和同心配合實現(xiàn)。除了同心配合和重合配合外,還有一個距離配合,它定義了頂梁上連接器的位置。當然,距離配合屬于高級配合,用于限制運動部件的活動范圍,例如,限制底梁在底座中的滑動范圍,或指定液壓缸活塞桿的泵在缸中抽送距離。根據(jù)零件之間的配合類型,可以看出每個配合后面都會有不同數(shù)字,如重合1、重合2等,這種配合出現(xiàn)的方式大大提高了零件之間分析的可靠性,如2個零件會出現(xiàn)多個配合,但是每個配合后的數(shù)字都不一樣,分析時不會相互干擾。
表1所示是簡易液壓支架中各個零件之間的連接關系和零件之間出現(xiàn)的配合類型。從表1中可以看出,零件之間沒有配合使用則沒有連接關系,有連接關系的都存在2種以上的配合。因此,我們可以設定2種初步的分析規(guī)則。
規(guī)則A:只要零件之間使用了某種配合,就可以確定存在連接關系。
規(guī)則B:零件之間必須使用2種以上的配合才能確定存在連接關系。
Table 1 Connection relationships and mate types表1 連接關系與配合類型表
然而,在實際工程設計中,由于設計人員的設計經(jīng)驗和裝配習慣,上面提出的2種分析規(guī)則很難反映大型復雜模型的實際DSM。因此,考慮到設計經(jīng)驗和對各種配合類型的分析,不同類型的配合根據(jù)權重分為不同的級別,以確定不同類型的配合對連接關系的影響。對配合類型的分析可以知道,同心配合通常應用于運動部件,例如活塞之間的配合,旋轉支架和支撐件的連接,以確保運動部件之間的連接。相切配合的功能類似于同心配合的功能,這表明2個零件的表面總是相切的。這2種類型的配合對連接關系有很大影響。雖然更常用的是重合配合,但這種配合的功能并不能保證2個部件之間具有物理接觸。因為當零件表面與另一零件的延伸表面重合時,2個零件之間基本沒有接觸。因此,設計師通常使用多個重合配合或其他配合來限制零件之間的自由度,以使它們具有實質(zhì)的接觸關系。距離、平行和垂直配合用于限制零件之間的位置關系,這些配合對零件之間的接觸關系影響較小。基于上述分析和實際工程經(jīng)驗,通過多個模型的各零件之間使用的配合類型與零件連接關系的分析,確定配合類型對連接關系的影響的權重。權重表如表2所示,其中包括每種影響程度下配合類型的權重。根據(jù)表2可以設置規(guī)則以根據(jù)權重值確定連接關系。
Table 2 Weight list of mate type表2 配合類型權重表
根據(jù)權重表設置規(guī)則C:將零件之間使用的配合類型的權重進行累加,如果總權重不小于1,則2零件之間彼此連接。 如果總權重小于1,則沒有連接。
DSM自動生成系統(tǒng)的實現(xiàn)前提是模型中信息數(shù)據(jù)的提取和存放,方便后續(xù)數(shù)據(jù)處理和分析。通過圖5中立即窗口顯示的配合信息可以發(fā)現(xiàn),對Mates中某個特征進行遍歷時,這個特征會被提取2次。因為1個配合被作用在2個不同的零件上,2次循環(huán)分別將不同的零件名稱和其它信息提取出來。因此,原始程序的數(shù)據(jù)格式影響系統(tǒng)的分析效率,需要修改原始程序,使數(shù)據(jù)格式符合系統(tǒng)的分析原則。
Figure 7 Flow chart of data extraction 圖7 數(shù)據(jù)提取流程圖
Figure 8 Data format圖8 數(shù)據(jù)格式
為了方便分析,首先在Access中建立個數(shù)據(jù)庫。數(shù)據(jù)庫以零件名稱作為儲存對象,每條數(shù)據(jù)都保存著該零件出現(xiàn)的配合類型。 在后續(xù)分析中每個零件都會進行相互對比。因為當2個零件使用同一種配合類型時,其配合類型后的數(shù)字是相同的, 采用這種分析方法提高了分析效率。修改后的數(shù)據(jù)提取流程圖如圖7所示。當Mates節(jié)點不為空時,將訪問Mates的第1個子特征。每個子特征有2組數(shù)據(jù),即2組零件名稱及其配合類型。第1次調(diào)用Subroutine1時,由于數(shù)據(jù)庫中沒有數(shù)據(jù),數(shù)據(jù)存儲格式由Subroutine1創(chuàng)建,2組數(shù)據(jù)按照存儲格式存儲在數(shù)據(jù)庫中。然后在遍歷Mates的后續(xù)特征時調(diào)用Subroutine2。Subroutine2將2組數(shù)據(jù)中的零件名稱與數(shù)據(jù)庫數(shù)據(jù)中的零件名稱進行比較。如果數(shù)據(jù)庫中具有相同的零件,則配合類型將存儲在此零件數(shù)據(jù)中。如果沒有相同的零件,則創(chuàng)建新數(shù)據(jù),并將零件名稱和配合類型存儲在數(shù)據(jù)中。
數(shù)據(jù)存儲在數(shù)據(jù)庫中后,系統(tǒng)的分析程序?qū)ζ溥M行處理和分析。如圖8所示,以液壓組件為例,根據(jù)上述數(shù)據(jù)存儲規(guī)則,獲得模型零件配合類型數(shù)據(jù)。數(shù)據(jù)按表中序號的順序進行比較。以D1與D2的比較和分析為例,將D1與D2中的所有配合類型一一進行比較。 當2個零件存在相同的配合類型時,系統(tǒng)根據(jù)分析規(guī)則的不同將2個零件間相同的配合類型按照對應的權重進行累加。2條數(shù)據(jù)比較完成后,對得到的權重和進行分析,從而實現(xiàn)連接關系的預測。D1與整個列表完成比較之后,將D2與數(shù)據(jù)庫中的其他數(shù)據(jù)進行比較。依次類推,從而完成對所有數(shù)據(jù)的比較和分析。 將3種分析規(guī)則嵌入系統(tǒng)的分析程序中,通過程序?qū)?shù)據(jù)的比較和分析,得到所有零件間的連接關系預測,系統(tǒng)將這些預測結果轉化為DSM存入表格中, 供設計人員查看和修改。DSM中數(shù)值0表示零件之間無連接關系,數(shù)值1表示有連接關系。3個分析規(guī)則中每種配合類型的權重值是不同的。規(guī)則A將每種匹配類型的權重值設置為1;規(guī)則B將匹配類型的權重值設置為0.5;規(guī)則C根據(jù)表2的權重進行設置。當2個零件具有相同的配對類型時,累加2個零件的配合類型的權重以獲得總權重。當2個零件的總權重不小于1時,表示零件之間存在連接關系。然后將連接關系轉換為DSM儲存在Excel文件中。
無論模型的復雜程度如何,DSM自動生成系統(tǒng)都應該能夠構建準確的DSM。本節(jié)根據(jù)規(guī)則A、B和C對礦用救生艙和液壓支架2種不同3D模型進行DSM自動生成測試。并將系統(tǒng)自動生成的DSM與實際模型的DSM進行比較和分析,根據(jù)分析結果完成系統(tǒng)的調(diào)試和分析規(guī)則的修改。
Figure 9 DSMs of rescue capsule comparison using three rules圖9 救生艙模型根據(jù)3種規(guī)則生成的 DSM與手工建立的DSM對比
圖9所示是救生艙CAD模型分別根據(jù)3個規(guī)則生成的DSM與實際DSM之間的比較。DSM中對角線元素與測試無關。 DSM中的值0表示部件之間沒有連接,值1表示存在連接。將自動生成的DSM與手動建立的DSM(完全正確的DSM)進行比較,并將與手動建立的DSM不同的元素標記出來。通過比較發(fā)現(xiàn),分別根據(jù)3個規(guī)則自動生成的礦用救生艙模型的DSM與手動建立的DSM存在較大差異。根據(jù)規(guī)則A、B生成的DSM出現(xiàn)了不同程度的錯誤,但是根據(jù)規(guī)則C生成的DSM與手動建立的DSM一致。檢查救生艙的CAD模型,發(fā)現(xiàn)一些配合類型只是用來限制2個零件之間的位置關系。由于設計師的習慣,使用了一些多余的配合。通過分析和推理總結出2個結論:(1)規(guī)則A和規(guī)則B容易受到裝配習慣的影響,因此根據(jù)這2個規(guī)則生成的DSM有明顯的誤差;(2)規(guī)則C優(yōu)于規(guī)則A和規(guī)則B,可以減少設計習慣帶來的誤差。
為了進一步對DSM自動生成系統(tǒng)進行測試,將液壓支架作為測試對象,因為液壓支架模型更復雜并且具有更多的部件。圖10是根據(jù)規(guī)則A和規(guī)則B生成的液壓支架的DSM。從圖10中可以看出,自動生成的DSM出現(xiàn)了不同的錯誤,根據(jù)規(guī)則B生成的DSM的精度低于根據(jù)規(guī)則A生成的DSM的精度。通過對模型檢查發(fā)現(xiàn),7個液壓缸的各個零件在模型裝配過程中獨立組裝在模型上,結果出現(xiàn)了太多的裝配零件。此外,模型僅使用單個配合來組裝液壓缸零件。例如,在液壓缸套和液壓桿之間僅使用同心配合,并且沒有其他配合用于輔助限定位置。結合圖9和圖10可以發(fā)現(xiàn),根據(jù)規(guī)則B生成的救生艙模型DSM的精度較高,而根據(jù)規(guī)則A生成的液壓支架DSM的精度較高,因此不能說明規(guī)則A和規(guī)則B中哪個生成的DSM具有更高的精度。這是因為設計人員組裝液壓支架模型時,某些部件主要使用單一配合類型,很少使用其他配合。因此,根據(jù)規(guī)則B生成的DSM會出現(xiàn)較大的誤差。但是,在實際裝配過程中,模型越復雜,使用的配合就越多。因此,根據(jù)規(guī)則A和規(guī)則B生成的DSM易受到設計習慣的影響。同時,可以證明結論1是正確的。
Figure 10 DSMs of hydraulic support comparison using rule A and rule B圖10 根據(jù)不同規(guī)則生成的液壓支架 DSM與手工建立的DSM對比
系統(tǒng)生成的DSM精度受到設計人員裝配習慣的影響,而結論2中的規(guī)則C可以減少設計習慣帶來的生成精度的影響。 以下使用規(guī)則C來測試和分析液壓支架,生成的DSM如圖11所示。與手動建立的DSM相比,根據(jù)規(guī)則C生成的DSM沒有錯誤。這是因為不同配合類型的權重值在規(guī)則C中是不同的,因此部件之間存在配合類型數(shù)量變化,對系統(tǒng)生成的DSM影響將減小, 但規(guī)則A和規(guī)則B則對配合類型和配合類型使用數(shù)量的影響更大。因此,規(guī)則C可以有效地減小設計習慣對DSM的影響,提高生成的DSM的準確性。 這證明結論2是正確的,且更適用于DSM自動生成系統(tǒng)。
DSM生成系統(tǒng)具有簡潔、易操作的人機界面,用戶首先打開SolidWorks選擇需要分析的模型,然后啟動DSM自動生成系統(tǒng),按照界面的按鈕和提示即可生成模型的DSM。以某種型號的礦用救生艙為例,點擊遍歷按鈕后模型信息會呈現(xiàn)在一覽表中,可以對表中數(shù)據(jù)進行操作,也可以將表中數(shù)據(jù)從數(shù)據(jù)庫導出至Excel中。之后點擊按鈕“Generate DSM”,模型的DSM就會呈現(xiàn)在DSM展示窗口,同時也可將DSM導入Excel,圖12是系統(tǒng)運行的人機界面。
本文介紹了基于Visual Basic的3D模型DSM自動生成系統(tǒng)的設計,并使用不同復雜度的模型進行測試,比較和分析了根據(jù)3個規(guī)則生成的DSM。測試表明根據(jù)不同類型的配合設置不同權重值的規(guī)則C適用于該系統(tǒng)。無論模型的大小和復雜程度,利用本文設計的系統(tǒng)都可以快速生成DSM,大大降低了設計人員的勞動強度,縮短了產(chǎn)品的設計周期,提高了設計效率。
本文對標準配合進行了詳細研究,而高級配合和機械配合涉及較少,因此難以保證DSM對更復雜模型的準確性。在未來的工作中,將為所有類型的配合設置更精確的權重值,從而確保生成DSM的準確性。
Figure 11 Hydraulic support (Rule C)圖11 根據(jù)規(guī)則C生成的液壓支架DSM
Figure 12 System interface圖12 系統(tǒng)界面