李 盛,賈鴻盛
(1.重慶賽迪冶煉裝備系統集成工程技術研究中心有限公司 CAE技術中心,重慶 401122;2.中冶賽迪重慶信息技術有限公司 CAD系統部,重慶 401122)
設備的物料清單(簡稱:BOM)是以數據格式來描述產品結構的技術文件,是識別物料、編制計劃、制造過程、成本計算等的依據。BOM按照用途分為設計BOM,計劃BOM,制造BOM,成本BOM,維修BOM,其中設計BOM(即設計裝配樹BOM)是其他類型的BOM的源頭。常規BOM統計,主要包括單級展開、多級展開、縮行展開、匯總展開、單層跟蹤、匯總跟蹤、縮行跟蹤等算法。
由于統計類型的多樣性,統計內容的復雜性,統計階段的關聯性,國內有很多學者針對BOM統計的抽象模型、統計效率和精度方面作了很多研究。饒上榮等[1]提出了一種以面向對象的方式組織數據和進行模板設計的強有力方法,根據對象模型來設計規則,可以充分利用面向對象的繼承和多態的特性,簡化規則設計并增強設計功能。張亞勤等[2]設計了一種基于實體裝配模型的裝配BOM的自動生成的算法,能夠對裝配關系進行遍歷、組織和顯示,并實現裝配建模CAD與裝配工藝設計CAPP的有效集成。葉紅朝等[3]提出了一種基于雙階分離式BOM的物料需求計劃的算法,即將單一BOM分解成產品BOM和部件BOM,直接讀取部件BOM 并進行統計,能提高物料需求計劃運算的速度和精度,使計劃的經常性變更成為可能。黃崢等[4]運用面向對象的層次模板技術設計CAD材料統計表,增強了表格靈活性并避免了重復工作。邱勝海[5]等設計了一種基于增強型合成模式的統一BOM管理組件模型架構和統計算法,來實現現PDM與ERP的集成。另外,針對某些具體的產品的BOM也作了一些研究,比如洪鑫華等[6]針對具體的鐵塔產品,采用基于存儲過程的BOM遍歷算法中的分層遍歷算法進行鐵塔的遍歷,實現了鐵塔零件BOM表的生成。朱安慶等[7]通過對TRIBON 中自動生成的數據進行分析來實現造船生產設計中的BOM表自動生成。程好秋[8]等根據現有產品與客戶動態的需求構建相關度矩陣,利用效用函數求解新的BOM模型。王魁生[9]等通過兩種常用BOM結構及通用算法提出了一種石油鉆井的BOM結構樹生成方法。以上研究均基于裝配樹下的每個節點都具有確切的統計物理意義的假設來進行的,比如某個樹節點代表著某個獨立加工完成的零件,或者代表著某個制造單元、采購單元或者具有獨立功能模塊的部件,然而實際設計實踐并非如此。
三維設計中有時需要將沒有確切統計物理意義的零部件作為裝配樹中的某個節點。如由于三維軟件在大裝配中需要節約計算儲存資源,人為將某些裝配重復的零件組合成無意義的部件,如圖1左側所示;如生產線設備設計時,需要參考其輸入或輸出端相鄰設備的外形和基準,因此必須將該設備作為部件加入到本設備中去;再比如設計主機的操作平臺和機上配管需要將主機作為部件以供參考,如圖1右側所示。
這些零部件將導致目前的BOM統計產生問題,即將無需統計的零部件納入統計。基于此類問題,提出了一種既兼顧特定模式的BOM統計,又同時滿足極端個性BOM統計的柔性模式的統計算法。該算法在歷經一年多的設計過程中被證明能夠滿足三維設計方面的所有需求,具備較好的推廣價值。
設備(裝配體)由各個部件和零件構成,部件又包含子部件和零件,最后直至分解到各個最小單元(即零件),如圖1所示。因此從微觀上看,設備可認為由零件按一定順序裝配而成,而部件僅為某些零部件的組合。為表達方便,依據是否具有確切統計意義和是否屬于本設備的一部分的兩個標準引入常規部件、形式部件、參考部件和耦合引用的概念。
定義1(常規部件)指由于模塊化設計、獨立功能以及加工裝配采購的需要而設置的零件組合。
常規部件即通常統計意義上的部件,作為設備的一部分,其本身也是組織生產、進行裝配或采購的工作單元。如液壓缸、電機或減速器即可認為是常規部件。
定義2(形式部件)不滿足模塊化設計、獨立功能或加工裝配采購需要的零部件組合。
設計師在三維設計中,由于主流的三維設計軟件在解析裝配體的時候,一般只計算到頂下一層(即第二層)的配合約束關系,因為如果遍歷計算到設備的每個零件配合約束,將產生巨大的計算和儲存資源消耗,使得三維設計過程非常緩慢并變得很不穩定,影響設備三維設計的普及和效率。因此三維裝配體設計一般采用“多設部件,分而治之”的策略,盡可能降低頂下一層(即第二層)的配合約束數量;因此必須將那些裝配重復數量大的,但又沒有常規意義的零件組合起來構成形式部件。形式部件與常規部件在表達方式上是一樣的,只是無法表達某一具體意義。比如幾顆螺栓、鏈輪的組合。但是形式部件的確是設備的一部分。
在圖2中,假如部件A3為形式部件,則意味著設備本來一級層級中應該包含部件A4和零件P4,但由于其又均被部件A2引用,所以為便于管理,設置其組合為部件A3,實際毫無具體意義。
定義3(參考部件)它是相對某個具體設備而言的,在針對該設備進行外部關聯設計時,事實上不屬于該設備但又被引入到該設備模型空間的部件。
參考部件與該設備具有比較強的空間幾何、運動姿態或者功能銜接的關聯性。它不能計入該設備的BOM統計,否則將造成重復統計。如圖2中虛框中的部件A1,引入進來僅起參考作用,方便其他零部件的幾何引用。這種在生產線設備設計(比如冶金軋制和運輸設備)上十分常見。
定義4(耦合引用)指零部件之間相互引用、打破層級間界限的情況。
其中,零件可同時被總裝件、部件和子部件引用;子部件也可同時被總裝件和部件引用。如圖2中的零件P1,同時被第一層的總裝件A、第二層的部件A1和第三層的部件A4引用;而部件A3則被第一層的總裝件A和第二層的部件A2引用。再比如相同規格的螺栓,可能同時被總裝和部件引用。耦合引用使得在展開某個形式部件的時候,對內部的零部件的數量統計必須執行卷積計算。
裝配樹層級越多,零件越多,零部件耦合引用越多,則裝配樹的復雜程度越大,進而BOM統計也越復雜。同時形式部件和參考部件的引用將進一步加劇BOM統計的復雜性。BOM統計是裝配樹結構的另一種產品結構表達,但是又與裝配樹結構不完全相同,是為一定目的服務的,比如管理、設計、制造、成本、采購等等。因此,與常規部件相比,形式部件和參考部件盡管采用了相同的建模方式,但在BOM統計中必須另作處理。
常規統計方法比較剛性,對部件和零件的處理方式各有一套固定的處理方式。由于形式部件和參考部件與常規部件的三維建模方式均為裝配體,常規的自動BOM統計算法則均將形式部件和參考部件按常規部件進行BOM統計,無法區別對待。當一個裝配樹中同時存在著常規部件、形式部件和參考部件,形式部件必須分解為下層零部件,參考部件必須剔除,而常規部件無需分解。若按自動單級展開的統計方法,形式部件和參考部件被統計為BOM節點;若按自動多級展開的統計方法,則常規部件被分解成下層零部件,而本身沒有被統計;若按縮行展開的統計方法,常規部件、形式部件和參考部件均被展開并計入統計。以上處理均不符合BOM統計的需要。為滿足實際上的統計需要,有必要引入柔性層級的模式。
定義5(柔性層級)即模糊裝配樹上下級層級界限的層級模式,此時上層部件可自由降解為下層零部件,從而造成下層零部件自動升級。
在BOM統計中,形式部件不能被統計為BOM節點,而其引用的零部件卻應當被認為是BOM節點;而參考部件由于不屬于該設備,則參考部件及其下層所有零部件均不能被統計到BOM中。下表為常規部件、形式部件和參考部件的異同表,如表1所示。

表1 不同類型部件異同表
柔性層級認為裝配樹結構下所有固化的層級節點皆可分解和刪除,形成一個新的動態變化的樹型結構。
常規處理原則為:第一、若統計部件,則其統計下層零部件;第二、若統計某部件的下層零部件,則該部件不能統計。該原則無法處理形式部件和參考部件。
柔性層級模式可以根據部件的不同類型確定其是否列入設備的BOM中,即柔性決定裝配樹上某個特定層級的零部件被記入明細表進行統計。它將原本不能被計算機區分的常規部件、形式部件和參考部件,根據各自特點進行了相應的處理,比如對照表1,若其需要被BOM統計則為常規部件,若其不被BOM統計則應為形式部件或參考部件。
柔性層級也同時滿足剛性的單級展開、多級展開的設置要求。若其為單級展開,則在柔性層級中,所有的層級節點均被設置為常規部件即可;若其為多級展開,則所有的層級節點均被設置為形式部件即可。
下面為某設備層級的柔性設置的結果。設備“立方稱量漏斗及閘門”中的“上料斗裝配”為常規設備,故被直接設置為待統計的BOM節點;“漏斗閘門裝配”為形式部件,故其自身不能設置為節點,而其下層常規部件“翻版門裝配”則由于為設備的一部分,故加入BOM節點序列中;“毛氈”為參考部件,故其自身以及下層零部件均不計入統計。顯然柔性設置層級節點能滿足設備BOM統計的需要。如圖3所示。
以上為層級判斷的柔性設置過程。在實際工作中,可針對每一個零部件事先設置一個的“BOM類型”屬性,根據實際情況設置分別設置為常規部件、形式部件或參考部件。程序在BOM統計過程中,自動重構原有的裝配樹,形成支持BOM統計的樹結構,自動完成柔性層級模式設定。如圖2的裝配樹,假定部件A1為“參考部件”,部件A2和A3為形式部件,則新的樹結構如圖4所示。

圖3 柔性設置層級圖例

圖4 BOM統計的樹結構
BOM統計的原則就是“不漏項,不重復”。而對任何節點,包括設計師、材料、質量、標準號等多維度的信息項均被包含在節點內部,容易取得;因而最重要的需要統計的信息就是節點在整個模型中的數量信息。
在柔性模式中,形式部件的釋放,會讓其下的零部件與別的層級的零部件做合并統計處理。比如圖2中部件A1是形式部件,則在統計它的時候,只能統計部件A4和零件P1,而與部件A1同級的也存在部件P1,則部件P1要做合并計數處理。由于形式部件的存在和零部件相互耦合引用的緣故,需要一種BOM統計卷積算法,統計模型被引用的次數以及解決相同零部件被耦合引用的合并統計問題。
設某設備共分k個層級,由部件Ai和零件Pi(i=1,2,…,n) 組成,記第i層級上存在數量為ni的部件Ai和數量為mi的零件Pi。若部件Ai(i=1,...,k-1)均為形式部件,從而將部件Ak和零件Pk將作為BOM節點計入統計。則對于該設備來說,部件MNAk的數量Ak的公式:

零件Pk數量MNPk的公式:

通過每個層級節點的統計卷積公式(1)、公式(2),最終統計得到該節點的分項數量,當設備其他形式部件還存在該節點的時候,則各個分項數量的和即為該節點在設備中的數量。
算法的數據儲存包括裝配樹和BOM節點的數據結構。
裝配樹節點數據結構:首先將裝配樹儲存為一個單向鏈表,每個鏈表節點代表著屬于該裝配體的某個零部件,同時將總裝件作為根節點定義為第一個鏈表節點。對于節點的數據結構定義如下:

其中,ModelNode表示模型節點結構(簡稱MN),包含6大信息;PathName表示模型路徑名稱(簡稱PN),CfgName表示模型配置名稱(簡稱CN);兩者組合確定唯一模型節點;HierarchyNumber表示模型被上級部件引用的數量(簡稱HN);pParentMN表示其頂上一層模型(簡稱pPMN),據此可逆單向遍歷到根節點(根節點此值為null);StataFlag標記該模型是否被統計(簡稱SF),實際存儲著柔性層級的設置結果;PartFlag標記該模型是否為零件(簡稱PF),即是否為末端節點。
BOM表定義作為一個節點數組,其節點的數據結構定義如下:

BOMNode表示BOM節點結構(簡稱BN),包含3大信息:PathName表示節點路徑名稱(簡稱PN),即ModelNode模型的PathName;CfgName表示節點配置名稱(簡稱CN),即ModelNode模型的CfgName;TotalNumber表示BOM節點在整個設備中被引用的數量(簡稱TN)。
統計卷積算法流程包括逆向遍歷裝配樹和儲存合并BOM節點數組兩個并發過程。
逆向遍歷裝配樹過程:從底層節點逆向遍歷,若其柔性設置為真,則可將其設置為BOM節點,此時獲取其本身和上級各層層級節點的數量,直至卷積到頂層節點。
合并BOM節點數組過程:若BOM節點數組存在該被遍歷的新節點,則求和合并;若不存在,則擴維BOM節點數組,將新節點附于上。
BOM統計所需其他信息,如標準號、模型名稱、零部件類型、質量、材料等信息儲存在模型屬性表單里,可根據具體的PathName和CfgName確定的特定模型配置獲取得到,加上已獲得模型被引用的數量,可完全構建一個完整的BOM報表。
總體流程如圖5所示。

圖5 BOM卷積算法流程圖
本算法歷經多次非標設備的設計的工程應用考驗,體現了其工程價值。現為了使結果表達清晰,現僅以圖2中的裝配樹層級結構來完成算法測試。
如圖2的設備裝配樹結構,當所有層級節點被上級節點引用的數量均為1,同時部件A1為“參考部件”,部件A2和A3為形式部件,則BOM被統計的結果如圖6所示,圖中部件A1沒有被統計,零件P3由于其上級形式部件緣故,計入統計;同時部件A4和零件P4分別在兩處上級形式部件均被引用,則累加為2個。最后增加代號、材料、質量等信息項。

圖6 BOM表統計結果
某主機設備零部件總數在5000個左右,由于設計的復雜性需要采用了比較多的形式部件和參考部件,采用本算法提取了能夠安排制造采購的,具有確切物理意義的BOM報表,如圖7所示。在設備模型中,由于較多裝配了“傳動側短軸系”、“萬向聯軸節裝配”和“離合裝配”,因此將三個部件合成為一個形式部件參與總裝配節約了儲存計算資源和裝配設計時間。但在BOM統計的時候,將該形式部件炸開,而將原有的三個部件分開統計。完美解決了同時滿足大裝配、設計效率和BOM統計的問題。

圖7 某主機設備BOM表統計
1)基于柔性層級提出了BOM卷積統計算法解決了針對三維設計實踐中的形式部件和參考部件導致的BOM統計的邏輯混亂問題。2)該算法實際上也適用于設備裝配樹結構變型的多樣性統計需求。無論何種類似需求,均能通過柔性模式自動展開或刪除某些部件,將該部件里面的零部件暴露出來,并通過統計卷積算法將耦合引用的不同層級零部件合并加入到設備的BOM統計,從而形成特定需求的BOM報表,以供ERP管理或其他需要。
[1]饒上榮,白似雪,李士才.面向對象數據模型的表格模板規則設計[J].計算機輔助設計與圖形學學報,2004,16(11):1590-1593.
[2]張亞勤,廖文和,劉長毅.基于實體裝配模型的裝配BOM的自動生成[J].機械制造與自動化,2006,35(2):132-135.
[3]葉紅朝,孫毅.基于雙階分離式BOM的物料需求計劃算法的研究與實現[J].成組技術與生產現代化,2006,23(4):53-56.
[4]黃崢.CAD材料統計表運用層次模板技術的設計和實踐[J].硫磷設計與粉體工程,2003,(4):39-41.
[5]邱勝海,袁新芳,馬銀忠,賈曉林.產品全生命周期內統一BOM管理組件設計實現[J].機械設計與制造,2008,6(6):219-221.
[6]洪鑫華,王杰,王玫.基于Pro/E的鐵塔虛擬裝配系統中螺栓的統計及其BOM表的生成[J].機械制造與自動化,2009,38(1):106-107,115.
[7]朱安慶,周衛鵬,馬曉平,龍偉.基于TRIBON 的船體生產設計BOM表自動生成程序開發[J].江蘇船舶,2004,21(6):3-4.
[8]程好秋,費少梅,張樹有.面向動態訂單的產品BOM模型構建與求解方法研究[J].中國機械工程,2010,21(13):1556-1561.
[9]王魁生,劉夏.石油鉆井BOM結構樹生成算法的研究[J].制造業自動化,2013,35(10):76-78,119.