周 茂 軍, 曹 幼 紅, 趙 秀 君, 程 雄
(1.大連工業(yè)大學 機械工程與自動化學院,遼寧 大連 116034;2.桂林電子科技大學 機電工程學院,廣西 桂林 541004)
近年來,對矩形件優(yōu)化排樣問題的研究主要集中在近似算法的構造上[1],但這些算法只局限于對板材進行二維優(yōu)化排樣,并不考慮對第三維的有效利用,同時僅通過算法不能直觀地表現(xiàn)對立體板材的切割過程和利用。
企業(yè)為了降低生產(chǎn)成本,就要盡可能提高材料的利用率。相比普通鋼材,模具鋼材的價格較高,這就要求模具鋼材銷售企業(yè)在下料切割過程中需要合理選料同時盡量減少余料的數(shù)量和避免廢料的產(chǎn)生。傳統(tǒng)的模具鋼材銷售企業(yè)的下料環(huán)節(jié)完全依靠車間工人的經(jīng)驗進行原料的選擇和切割方案的設計,同時將余料的尺寸、編號等信息返回給辦公室有關部門進行手工存檔。該下料管理方式有很大的缺陷:在眾多的庫存中選料耗費大量的時間;容易出現(xiàn)選料不合理現(xiàn)象;沒有科學統(tǒng)一的下料依據(jù),容易產(chǎn)生不合理的余料和廢料。因此,有必要應用信息技術開發(fā)模具鋼材下料方案設計系統(tǒng),實現(xiàn)系統(tǒng)自動匹配選料,用三維圖顯示模擬切割,提供多種合理的切割方案,輔助工作人員科學快速的決策下料方案,避免因考慮或設計不周造成鋼材的浪費,提高對鋼材的有效利用率,降低成本,解決企業(yè)實質性的問題。
通過對模具鋼材銷售企業(yè)的實際調查,模具鋼材模擬切割系統(tǒng)應該具有以下功能:①生產(chǎn)計劃的管理,車間嚴格按照合同要求滿足客戶需求;②自動匹配篩選功能,通過對庫存的管理,按照合同要求對庫存按材質、長度、寬度、厚度三個方向及庫存狀態(tài)進行搜索匹配,列出可使用的母料;③可以進行模擬切割并打印具體設計方案圖,能顯示工件與余料尺寸及切割步驟;④一個母料可以同時切割多個不同尺寸,不同數(shù)量的工件,可以運用Ctrl鍵對待切工件多選;⑤由于車間實際下料結果和方案可能存在尺寸誤差,因此按實際尺寸為準必須可以修改工件及余料的尺寸;⑥自動生成余料編號,方便庫存管理。
本系統(tǒng)所涉及的數(shù)據(jù)量大,所以后臺數(shù)據(jù)庫采用Microsoft SQL Server2000,該數(shù)據(jù)庫系統(tǒng)在安全性、準確性、運行速度方面有絕對的優(yōu)勢,并且處理數(shù)據(jù)庫量大、效率高[2];前臺采用.NET開發(fā)平臺,Microsoft.NET 是創(chuàng)建可互操作的分布式應用程序的新平臺[3];系統(tǒng)運用C#開發(fā)語言;在實際開發(fā)編程過程中采用了ADO.NET 技術。服務器采用Windows Server 2003。
因為系統(tǒng)數(shù)值計算量大,而C/S模式處理大量信息的能力是B/S(瀏覽器/服務器)模式無法比擬的,該模式具有高性能和高可靠性等優(yōu)點,所以系統(tǒng)采用C/S模式。。
系統(tǒng)開發(fā)模式采用三層C/S 結構,即界面層、中間業(yè)務處理層、后端數(shù)據(jù)服務層;①客戶端人機界面的開發(fā),使得開發(fā)大大簡化,只注重人機界面的設計,不必關心業(yè)務邏輯和數(shù)據(jù)庫的訪問;②中間業(yè)務邏輯層處理界面層傳遞的任務以及為數(shù)據(jù)服務層提供SQL語句,客戶端程序調用中間層的業(yè)務邏輯規(guī)則,以完成其業(yè)務操作,業(yè)務邏輯改變時,客戶端界面可以不做變化;③數(shù)據(jù)庫服務層提供對數(shù)據(jù)庫進行各種操作的方法,即對數(shù)據(jù)庫進行直接的訪問,該層被中間業(yè)務邏輯層調用完成業(yè)務邏輯。三層C/S 結構的優(yōu)點是允許合理地劃分三層結構的功能,使之在邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結構更為清晰,能提高系統(tǒng)和軟件的可維護性和可擴展性。從圖1 中可以看出,層與層之間是有著嚴格的訪問級別約定的:Form 界面不可以越級直接訪問數(shù)據(jù)庫,只需要界面內部寫相應代碼,不需要改變業(yè)務邏輯;數(shù)據(jù)服務層改變數(shù)據(jù)庫或升級數(shù)據(jù)庫,只需要改變數(shù)據(jù)服務層對應代碼,不需要改變界面層和業(yè)務層。
圖1 三層結構Fig.1 Three-layer structure
系統(tǒng)總體功能結構如圖2所示。
圖2 系統(tǒng)結構Fig.2 System structure
如圖2所示,用戶登入系統(tǒng)并進行操作,系統(tǒng)列出所有下料信息庫的數(shù)據(jù)(即需要下料切割的訂單),當用戶選擇一條下料信息庫的數(shù)據(jù)時,鎖定匹配條件,結合材料信息庫數(shù)據(jù)進行自動匹配,列出符合條件(可提供切割的母料)的材料信息數(shù)據(jù),用戶選擇了下料信息和材料信息,進入人機模塊進行切割方案設計過程,通過模擬切割確定合理方案,當確定下料方案時,保存并打印模擬切割的過程、尺寸、步驟、圖形等信息,即進入到下料方案輸出階段,并將該切割方案提供給下料車間,同時記錄所使用的材料信息,用來查詢母料去向及計算損耗,并將切割所剩余料保存返回材料信息庫,供下次使用;若下料車間按方案圖切割的實際尺寸與系統(tǒng)設計的尺寸存在誤差,則將設計的余料尺寸等信息進行修改,即進入到編輯模塊。
主要針對用戶和數(shù)據(jù)庫的備份管理。本系統(tǒng)采用SQL Server事物日志方式進行數(shù)據(jù)的自動備份,把數(shù)據(jù)備份到服務器磁盤上,這種備份方式比數(shù)據(jù)庫的完整備份占用空間小,所用時間少,備份效率高,從而保證了數(shù)據(jù)庫的安全性[4];服務器磁盤采用RAID(Redundant Array of Independent Disk磁盤陣列),為存儲系統(tǒng)(或者服務器的內置存儲)帶來巨大利益,提高傳輸速率和提供容錯功能,同時也保證了數(shù)據(jù)的安全性。
系統(tǒng)程序中定義了多個類文件,由于數(shù)組的長度是動態(tài)的,所以在每個類文件中使用泛型List<T>,指定了T 的類型,其集合可以直接作為DataGridView 的數(shù)據(jù)源。使用泛型集合編譯器會在編譯期間檢查要放入集合對象的數(shù)據(jù)類型,如果發(fā)現(xiàn)不是某種特定的類型就會報錯,這樣就可以避免發(fā)生許多運行時錯誤,實現(xiàn)類型安全;由于明確了數(shù)據(jù)類型,所以在存取數(shù)據(jù)不會發(fā)生類型的轉換,特別是存取值類型是不會發(fā)生裝箱和拆箱操作,同時可以最大限度地重用代碼。在本系統(tǒng)的實現(xiàn)過程中,將所有對象類型例如母料對象、訂單對象、下料設計對象都用泛型表示,這樣可以獲得該對象的所有屬性集合。
由于程序中涉及了大量的數(shù)據(jù)庫操作,在數(shù)據(jù)庫中建立多個視圖,實現(xiàn)對多表進行關聯(lián),在數(shù)據(jù)服務層的實現(xiàn)過程中,采用了直接訪問視圖優(yōu)化數(shù)據(jù)庫操作,在數(shù)據(jù)服務層生成的數(shù)據(jù)直接填充在Dataset,由于Dataset是一種無連接的數(shù)據(jù)集,填充之后可以馬上釋放數(shù)據(jù)庫的連接,這也減輕了數(shù)據(jù)庫的負擔,而且Dataset緩存于內存中,再次訪問速度非???。
該部分使用了.NET 組件技術,.NET 組件提供了更為方便的編寫平臺和更為豐富的類庫資源[5]。開發(fā)人員可自定義用戶界面、功能、屬性、方法、事件等特征,該技術提高了系統(tǒng)的重用性,靈活性,修改局部不會對整體有影響,使系統(tǒng)具有更好的可維護性和可擴展性。本系統(tǒng)通過這一特性,編寫了繪圖的屬性,首先確定圖形相對于瀏覽器坐標的原點,每切割一次,通過切割的尺寸計算各個圖形塊的各方向的尺寸,然后依照該尺寸以及確定的原點,利用C#中的DrawLine()函數(shù),繪制圖形。當鼠標點擊圖形塊時,該圖形就變成所設定的顏色,因此編寫鼠標MouseClick事件來顯示所選定的圖形塊。
繪制三維圖形時必須確定8個頂點的坐標,因此必須根據(jù)切割尺寸及圖形旋轉角度獲得的三維坐標點轉換為平面坐標點。在實現(xiàn)繪圖時,實現(xiàn)關鍵步驟如下:
(1)計算各邊的投影比例。為了更好顯示圖像效果,設圖像繞X 軸旋轉angelx=30°,再繞Z軸旋轉angelz=30°。如圖3所示,分別計算出旋轉后Y 軸在X 軸和Z 軸方向的投影比例,及X和Z 軸的投影比例,代碼如下://設定角度默認
軸在水平方向的投影比例
軸在垂直方向的投影比例
(2)設定矩形塊的原點坐標。取計算機坐標原點為Q(0,0),在本系統(tǒng)中,設矩形塊的原點為O 點,要確定該點的屏幕坐標,必須先獲得該點距離屏幕坐標原點的長度,即OQ 的長度,通過該長度就可獲得O 點的屏幕坐標點。如圖3所示,OQ=OA+AQ,AQ 為圖形離屏幕坐標原點的最近距離,在系統(tǒng)中已設定AQ 為25,又由于OA 為切割寬度為已知,由步驟(1)已知Y 軸在垂直方向的投影比例syv,在水平方向的投影比例syh,即可確定OQ 在屏幕坐標X 軸和Y 軸的投影,即可確定O 點的坐標,代碼如下:
olocation=newPointF((msizew+25)*syh,(msizew+25)*syv);//msizew 為OA 的長度。
圖3 算法參考圖Fig.3 Algorithm reference diagram
(3)確定8個頂點的坐標。在該步驟中使用在二維平面中表示浮點坐標的x 和y 的有序對的PointF[]數(shù)組存放8個頂點坐標值,代碼為
確定了8個頂點的坐標就可以確定圖形的各條邊,通過C#語言自帶的DrawLine()函數(shù)繪出各條邊,即繪出了圖形。
3.5.1 方案設計圖示例
如圖4所示,選定了用來切割的母料和切割尺寸,在圖右側的設定需要切割的尺寸、切割刀數(shù)及鉅厚等參數(shù)后,點擊“切割”按鈕,就可實現(xiàn)圖4所示效果。該系統(tǒng)解決了傳統(tǒng)算法中只對板材的二維排樣的不足,實現(xiàn)了對板材三維的有效利用,用戶可更直觀的了解材料的利用情況。
圖4 方案設計圖Fig.4 Project design
3.5.2 自動匹配篩選
如圖5所示,在所列出的下料信息庫數(shù)據(jù)中,單擊將要切割的一條數(shù)據(jù)或按住Ctrl多選,通過對材質、厚度、寬度、長度等條件的匹配,列出所有滿足匹配條件的材料信息庫數(shù)據(jù),并按尺寸由小到大排序,方便選擇,避免人工選料造成的時間浪費和選料的不合理。
圖5 自動篩選匹配效果圖Fig.5 Automatic selection matching rendering
本文根據(jù)對模具鋼材銷售企業(yè)調研的實際情況,設計并實現(xiàn)了基于三層C/S結構的模具鋼材模擬切割系統(tǒng),實現(xiàn)了鋼材下料的模擬立體切割,形象模擬了車間的下料切割過程,方便企業(yè)決策出最優(yōu)的下料方案,完善生產(chǎn)流程,為企業(yè)減少余料和廢料的產(chǎn)生,提高經(jīng)濟效益;實現(xiàn)了完善的庫存管理,同時可以打印設計方案的切割步驟和最終效果圖,為下料車間提供參考。經(jīng)過系統(tǒng)測試和在大連某企業(yè)實際運行,系統(tǒng)運行狀態(tài)良好。由于本系統(tǒng)的特色,為企業(yè)提供強有力的工具,具有廣泛的市場價值。
[1]趙暉,席平.矩形件優(yōu)化排樣算法與系統(tǒng)的研究[J].鍛壓技術,2005,30(1):19-20.
[2]趙曉霞.進銷存管理系統(tǒng)的設計與實現(xiàn)[J].煤炭技術,2010,29(1):244-245.
[3]胡迎松,彭利文,池楚兵.基于.NET 的Web應用三層結構設計技術[J].計算機工程,2003,29(8):173-174.
[4]楊玉霞,汪永超,王亞森,等.B/S結構企業(yè)培訓管理信息化系統(tǒng)的研究[J].計算機工程與設計,2009,30(5):1130-1131.
[5]花振峰,楊偉民,張生..NET 組件和COM 組件的應用集合研究[J].計算機與自動化技術,2005,31(2):71-72.