0 引言
產(chǎn)品的BOM表(Bill of Material)是定義產(chǎn)品結(jié)構的重要技術文件,是一種描述產(chǎn)品裝配關系的結(jié)構化零件表,其中包括設計過程中所有裝配體、零件、原材料等信息的清單。BOM反映了一個產(chǎn)品所有零件的數(shù)量關系和零部件的構成層次關系,在產(chǎn)品由設計過程向制造過程的轉(zhuǎn)化中,BOM起著非常重要的作用,它是連接產(chǎn)品設計過程和制造過程的信息紐帶。
BOM表在信息傳遞的過程中具有重要的作用,但是在汽車夾具設計行業(yè)還沒有得到統(tǒng)一,各制造企業(yè)提供的參考BOM表各不相同,這就為BOM表的自動化生成增加了難度,阻礙了企業(yè)間的信息交流與合作。在總結(jié)了大部分制造企業(yè)提供的BOM表樣式中不難發(fā)現(xiàn),BOM表需要填寫的內(nèi)容較多,是BOM表制作的主要內(nèi)容。汽車夾具零件的屬性項有:零件編號、零件名稱、材料、數(shù)量、重量、版本、術語、備注,而各企業(yè)的BOM表主要內(nèi)容項是這幾種屬性項的簡單組合,這就為設計通用BOM系統(tǒng)提供了可能。
模板式的通用BOM系統(tǒng)的構想:根據(jù)制造企業(yè)提供的參考BOM表制作BOM表輸出模板,用VB編程工具開發(fā)編寫應用程序,遍歷零件的屬性信息,將零件的各屬性項輸出到BOM模板的表行中,最終生成符合企業(yè)要求的BOM表。
1 CATIA的二次開發(fā)環(huán)境
訪問CATIA的對象有很多種不同的方式,對于其他程序或腳本,CATIA具有OLE自動化對象服務器的功能。一些程序或腳本能夠?qū)OM對象進行訪問,那么也能訪問CATIA的對象并對其進行操作。訪問CATIA對象有以下的方法:
1)進程內(nèi)的腳本
編程腳本和CATIA如果同時運行在同一進程環(huán)境下,稱作進程內(nèi)的腳本。腳本類型有:
VBScript腳本、CATScript腳本、VBA腳本。
2)進程外的腳本
編程腳本和CATIA如果沒有運行在同一進程環(huán)境下則稱進程外的腳本。編程腳本不再由CATIA環(huán)境來調(diào)用,CATIA還具有另外一個功能,即OLE自動化對象服務器,進程外的腳本通過CATIA軟件的COM接口訪問CATIA內(nèi)部的對象。腳本類型有:
VB或VBA訪問CATIA、Windows Scripting Host訪問CATIA、嵌入到網(wǎng)頁中。
進程內(nèi)編程訪問CATIA對象具有以下主要特點:占用內(nèi)存少,運行效率高,操作簡便。但是編寫的程序在實現(xiàn)的功能上受到了很大的限制,比如VBScript腳本不能交互操作,VBA腳本不能編譯等缺點,這就降低了編程的實用性。本研究采用進程外編程方式訪問CATIA對象,運用VB編程語言編制出裝配體BOM表自動生成程序,設計交互界面,便于人機操作,將產(chǎn)品的零部件屬性信息自動輸出至外部Excel清單文件中,實現(xiàn)BOM表的聚類輸出,便于制造件的加工制造和外購件的采購,方便裝配過程中零部件的統(tǒng)計和核對,進而提高了工作效率。
2 BOM系統(tǒng)的設計
2.1 系統(tǒng)的功能
模板式通用BOM系統(tǒng)設計的主要目的是能夠兼容不同制造企業(yè)的提供的BOM表之間的差異性,模板式通用BOM系統(tǒng)在傳統(tǒng)BOM系統(tǒng)的基礎上,設計的系統(tǒng)具有如圖1所示的功能。
圖1 BOM系統(tǒng)的功能圖
1)根據(jù)提供的參考BOM表用戶配置BOM表輸出模板,由輸出模板關鍵字驅(qū)動程序遍歷產(chǎn)品屬性樹;
2)初始化BOM模板,根據(jù)BOM模板的關鍵字,對BOM模板自動進行初始化操作,為輸出零件屬性做準備;
3)為使設計者了解要提取零件的哪些屬性項,BOM系統(tǒng)具有屬性提示功能;
4)判斷零件是否對稱,控制零件數(shù)量;
5)向BOM模板寫入屬性信息;
6)更新BOM模板中提取的屬性信息。
根據(jù)系統(tǒng)的設計的功能,通用BOM系統(tǒng)的功能界面如圖2所示。
圖2 通用BOM系統(tǒng)功能界面
2.2 系統(tǒng)的設計
從已經(jīng)檢索的來文獻看,傳統(tǒng)BOM系統(tǒng)提供的BOM表輸出功能單一,并不具有兼容性,不能滿足不同企業(yè)對BOM表的差異化需求。而有學者設計的通用BOM系統(tǒng),雖然能夠滿足BOM表的兼容性,但是由于設計規(guī)則的限制,用戶在使用過程中需要熟悉模板制定規(guī)則且要保證制作的模板的正確性,給用戶的使用帶來了不便。
模板式通用BOM系統(tǒng)可以很好的解決BOM表輸出功能單一,操作復雜的問題,前期設計者利用CATIA的宏程序批量的處理零件的屬性信息,為后期BOM表的輸出做準備,在BOM表輸出之前,只需對BOM輸出模板定義系統(tǒng)默認的屬性項關鍵字,就可以向BOM表中寫入零件屬性信息,具有適應性強,定義規(guī)則簡單,輸出快捷的特點。模板式通用BOM系統(tǒng)在操作流程上和傳統(tǒng)BOM系統(tǒng)具有明顯的不同,對比效果如圖3所示。
圖3 BOM系統(tǒng)流程圖
對比現(xiàn)行BOM系統(tǒng)和模板式通用BOM系統(tǒng)可發(fā)現(xiàn),雖然傳統(tǒng)BOM系統(tǒng)可以生成BOM表,但是生成的BOM表明顯的不能滿足不同客戶提出的的BOM格式要求,還需要后期手動修改,這就降低了BOM的生成效率,同時還容易出現(xiàn)錯誤等缺點。根據(jù)設計經(jīng)驗提出的通用BOM系統(tǒng)在總結(jié)現(xiàn)行BOM系統(tǒng)特點的基礎上,做了大量的思考和總結(jié),設計的模板式通用BOM系統(tǒng)較傳統(tǒng)BOM系統(tǒng)具有明顯的優(yōu)勢。
模板式通用BOM系統(tǒng)在設計上采用多個功能模塊,使模塊之間在信息共享和管理上得到提高,系統(tǒng)采用了三層系統(tǒng)結(jié)構:交互層、支撐層和核心層。
交互層用于處理窗體功能與CATIA系統(tǒng)的建立功能關聯(lián),VB程序通過COM接口來訪問CATIA內(nèi)部的對象,來完成零部件屬性的提取,BOM表的生成和更新等功能;支撐層主要是VB程序訪問CATIA零件的實體對象,通過遍歷算法來讀取零件的屬性信息,為數(shù)據(jù)的存取做準備;核心層用于將提取的零件的屬性信息存入在數(shù)組中。
圖4 BOM系統(tǒng)結(jié)構
3 BOM系統(tǒng)的關鍵技術
3.1 模板技術
模板技術是通用BOM系統(tǒng)的核心技術,在通用BOM系統(tǒng)中扮演著舉足輕重的作用,BOM模板表的規(guī)格直接關系到輸出BOM表的形式和屬性信息的合理配置。BOM模板表包括兩部分:表頭和表行。對每個設計項目來說,區(qū)別最大的部分是BOM表表頭。因企業(yè)不同而不同,對于單個項目來說表頭內(nèi)容又具有高度的相似性,在項目設計中只需制作好一個BOM表的表頭內(nèi)容便可在設計中借用該模板;表行內(nèi)容是BOM表統(tǒng)計的核心內(nèi)容,是統(tǒng)計的重點,BOM系統(tǒng)設計的關鍵是輸出零件的詳細屬性信息到BOM表中。
定義BOM表屬性項關鍵字是制作BOM模板的重中之重,關鍵字定義的正確與否直接關系到零件屬性提取的成功與否。通用BOM系統(tǒng)定義的屬性關鍵字如表1所示。
表1 屬性項關鍵字
模板技術的基本原理:根據(jù)該企業(yè)BOM表格式并按照該系統(tǒng)的模板規(guī)則建立輸出模板,系統(tǒng)的初始化功能模塊會首先尋址表頭內(nèi)容關鍵字,根據(jù)定義的關鍵字內(nèi)容,遍歷零件對應的屬性項,將零件的屬性信息由數(shù)組中寫入到輸出模板中,生成符合企業(yè)要求的BOM表,然后保存到制定的位置處,則BOM表制作完成。由于輸出模板的可定制性,因此通用BOM系統(tǒng)能生成不同格式的 BOM表。
3.2 遞歸遍歷算法
模板式通用BOM系統(tǒng)在算法上采用遞歸遍歷算法。先根遍歷,采用深度優(yōu)先遍歷的思路,即遍歷是對BOM各子樹逐層進行。其遍歷規(guī)則如下:
1)首先訪問產(chǎn)品結(jié)構樹的根結(jié)點;
2)如果該結(jié)點有子項,訪問其子項,并跳到第2)步;
3)如果有該結(jié)點有兄弟項,訪問下一個兄弟項,并跳到第2)步;
4)如果其父項有下一個兄弟項,訪問其父項的下一個兄弟項,并跳到第2)步;
5)自動判斷當前結(jié)點是否根結(jié)點,是則退出;6)當前結(jié)點由父項結(jié)點來代替,并跳轉(zhuǎn)至第4)步。
圖5 產(chǎn)品結(jié)構模型樹
以圖5產(chǎn)品結(jié)構為例,其遍歷次序為:A、B(1)、f(2)、E(3)、f(1)、d(2)、d(3)、C(1)、g(2)、h(2)、f(2)。
由于車身夾具產(chǎn)品結(jié)構模型樹的層數(shù)比較少,采用遞歸遍歷算法代碼簡潔,能夠展示零部件之間的父子關系和BOM樹的層次結(jié)構。
3.3 零件屬性數(shù)組
模板式通用BOM系統(tǒng)在系統(tǒng)初始化時預先開辟兩個或三個數(shù)組,這個數(shù)組的元素個數(shù)根據(jù)產(chǎn)品結(jié)構樹的復雜情況而定,數(shù)組元素不必很多,本系統(tǒng)開辟100個數(shù)組元素,目的是儲存數(shù)據(jù)。將上位機讀來的數(shù)據(jù)存入預先開辟好的其中一個數(shù)組中,當前數(shù)組存滿后,再換另外一個數(shù)組,這樣做的優(yōu)點是便于數(shù)據(jù)的管理和提取數(shù)據(jù)的正確性,最后使用代碼將將數(shù)組數(shù)據(jù)寫入Excel表格。
3.4 BOM視圖映射中的一致性維護
BOM由物料項和物料項關系組成,但是由于BOM的生成過程不同,所包含的數(shù)據(jù)也不完全相同,因此為了保證數(shù)據(jù)的一致性,仍需要對產(chǎn)品不同BOM視圖進行對比。BOM的常見操作如增加部件,刪除部件等也會造成BOM數(shù)據(jù)的不一致性。BOM視圖映射中的一致性維護就是物料項和物料項關系的一致性維護。
針對BOM一致性維護問題,設計BOM的父子循環(huán)一致性檢查算法,其基本思想為:設原BOM元素集合為S,新BOM元素集合為P。對集合P,遍歷產(chǎn)品的父項和子項,判斷零部件是否是多實例零部件,即是否已經(jīng)統(tǒng)計過,如果已經(jīng)統(tǒng)計過,則不再讀取信息,數(shù)量增加,如果是新增加或減少的零部件,則對其進行入棧或出棧操作。當遍歷到空字符串時,則遍歷完成退出循環(huán)。
4 模板式通用BOM系統(tǒng)的應用實例
本實例以CATIA V5為實驗支撐平臺,基于VB編程語言開發(fā)的模板式通用BOM系統(tǒng)能夠生成不同格式的BOM表。以下以某車身夾具單元為例生成兩種不同格式的BOM表來驗證系統(tǒng)的通用性。某車身的一副完整的車身夾具如圖6所示。
圖6 夾具單元
上表為不同企業(yè)風格的A格式輸出模板和B格式輸出模板,根據(jù)系統(tǒng)的要求規(guī)則對A和B兩種格式的BOM模板定義屬性關鍵字,A格式模板的屬性項關鍵字為:PART NO、PART NAME、MATERIAL、Q’TY、REMARK;B格式模板的屬性項關鍵字為:PART NO、PART NAME、Q’TY、REMARK。按照BOM表的操作流程生成的A、B兩種格式的BOM表如圖7、圖8所示。
圖7 BOM輸出模板
圖8 BOM表導出圖
由生成的A、B兩種格式的BOM表結(jié)果可以得知生成的BOM表與企業(yè)給定的參考BOM表完全一樣,模板式通用BOM系統(tǒng)具有很好的適用性和兼容性。
5 結(jié)束語
針對汽車夾具制造中的BOM設計中存在的問題,在總結(jié)現(xiàn)有BOM設計的特點,提出了模板式通用BOM系統(tǒng),該系統(tǒng)完全兼容了不同企業(yè)格式的BOM表,支持快速啟動CATIA,BOM表模板初始化,顯示屬性項,指定對稱零件,寫入BOM表和更新BOM表的功能,還具有BOM視圖映射一致性維護的功能。模板式通用BOM系統(tǒng)在設計中具有很強的適用性,大大的提高了車身夾具設計BOM向制造BOM轉(zhuǎn)化的效率,降低了出錯率,對縮短車身夾具設計周期具有重要的意義。
核心關注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/