張文曉
摘要:本文旨在介紹一種算法,實現空調箱過濾段中靜電過濾器的自動排布,以及參數輸出。
關鍵詞:空調箱;靜電過濾器;自動排布;CAD自動畫圖
中圖分類號:TP391 文獻標識碼:A
文章編號:1009-3044(2019)09-0263-03
Abstract: This paper aims to introduce an algorithm to realize the automatic arrangement of electrostatic filters in the filter section of AHU and the output of parameters.
Key words: AHU; Electrostatic Filters; automatic arrangement; CAD automatic drawing
在發展中國家,隨著城市經濟的迅猛發展,機場、地鐵、火車站、酒店等大型公共建筑與人們的生活、工作日益密切。人們在享受著中央空調帶來前所未有的舒適的同時,卻正在失去或已經失去了可貴的健康!人類在經歷了“煤煙污染”“光化學煙霧污染”危害之后,正在進入以“空氣污染為主的第三代污染時期。如何治理改善密閉建筑的室內空氣質量,創造安全舒適的生活環境,已經成為近年來全球暖通空調專業人士關注的重點課題之一。
隨著對空氣過濾等級的要求越來越高,靜電過濾器以其高效凈化、高效節能、綠色環保等優點,受到客戶青睞。然而,為了滿足客戶需要,目前空調箱產品的最大特點是——配置多。配置的增加對于設計來說往往意味著工作量的增加,那么,如何找到一種辦法進行批量設計,成為亟待解決的問題。
基于這種現狀,本文介紹一種算法,使設計者可以在Excel(或其他軟件)中通過編程的方法,實現靜電過濾器的自動排布。以及,對排布之后的結果輸出,作為下游設計(如鈑金設計)輸入。
1解決方案
1.1背景介紹
1.1.1設計輸入與輸出
不同規格的空調箱,對應多種長寬尺寸,在本文所述自動排布的數學模型里,相當于有多個矩形框。靜電過濾器也有多種尺寸(本文實例中有2種型號),每個尺寸的靜電過濾器,相當于一個小的矩形框。于是,在空調箱的箱體空間里排布靜電過濾器,抽象成數學模型,就是如何選擇合適尺寸的小矩形框,來填充大矩形框的問題。至此,熟悉生產制造工藝的讀者可能會覺得,這個問題有點類似于板材切割下料時的排料問題。的確,二者有相似之處,筆者也曾嘗試用排料軟件來實現自動排布。但結論是,二者算法上還是存在差異,無法套用現成的軟件來實現。區別如下:
因此,無法用現成軟件來達到目的。
綜上,設計輸入為:
機組的長寬系列尺寸
可選靜電過濾器型號及尺寸
設計輸出為:
每個機組的靜電過濾器布局
確定布局后,輸出所用靜電過濾器的數量、前后左右的剩余間隙(為鈑金件設計提供數據)、對應風量(為系統計算阻力提供參數);
1.1.2靜電過濾器型號及特點
本例可選靜電過濾器有兩種,代號分別為DV、SV,結構見下圖。二者結構特點為:
1.DV只能豎放;SV可以橫放也可以豎放;
2.一臺DV的通風量是SV的2倍;
3.一臺DV的成本低于兩臺SV的成本;
1.1.3靜電過濾器的排布規則
首先,請讀者想象,我們要像搭積木一樣,用可選的兩種靜電過濾器的“搭”出一個矩形框。考慮1.2.1中所述的靜電過濾器的特點,制定排布規則如下:
1.DV可以在單位成本下實現更大的通風量,因此從成本上考慮,應盡可能多用DV;
2.水平方向,對用DV排布之后,剩余的空間,嘗試用SV(豎放)填充;豎直方向,對DV排布之后,剩余的空間,嘗用SV(橫放)填充;
3.對某些空間尺寸,可能全部用SV(橫放)填充;
然后,我們要做的是,把靜電過濾器排出的矩形框,往空調箱的箱體空間里放,這個過程相當于把一個小矩形框放到令外一個大矩形框里。此過程規則如下:
1.考慮向一側靠邊的時候,可以節省一塊擋風板,但如果導致另一側間隙過大,則考慮居中;
2.底部需要有鈑金支撐,需要預留空間因此不能向下靠邊;
3.不能有兩側同時靠邊的情況,因為此時結構無法固定(兩邊懸空);
1.2算法介紹
1.2.1總則
請讀者思考,當我們在CAD里人工排布的時候,會怎么做?我們一般會按照這樣的思路:
v首先,我們會沿著X方向先排第一行,當單純考慮一個方向,我們可能有兩種排法,即豎排和橫排,代碼為V和H;
v然后,我們會把第一行陣列,去排Y方向。這時,我們的排布結果可能是V,VH,H;
v最后我們會綜合X方向、Y方向的排布,做出對比,決定最后的排布方式。
程序設計邏輯亦是如此,下面分步介紹。
1.2.2計算由橫向尺寸決定的排布代碼
邏輯如下:
1.如果SV17_H < sec_w < DV34_W,說明機組寬度只能放下一個SV,則此時arg_cod_row = "V"
2.如果sec_w > DV34_W
a.判斷用n個DV排布之后,剩余空間能否放下一個SV
i.如果不能,則按照Hgap_V =sec_w - Int(1) ((sec_w - OverLap) / (DV34_W - OverLap)) * DV34_W,計算水平間隙;
ii.如果能,則按照Hgap_V = sec_w - Int((sec_w - OverLap) / (DV34_W - OverLap)) * DV34_W - (SV17H_H - OverLap),計算水平間隙;
b.計算如果排列方式為H時的水平間隙,Hgap_H = sec_w Mod(2) SV17_H
c.對比兩種方案,如果Hgap_H < Hgap_V,則arg_cod_row = "H",否則arg_cod_row = "V";
(1)Int為取整函數;(2)Mod為取余函數
1.2.3計算由縱向尺寸決定的排布代碼
邏輯如下:
1.判斷用n個DV豎直擺放后Y方向的剩余間隙,能否放下一個SV(橫放)
a.如果不能,則Vgap_V = sec_h Mod DV34_H,arg_cod_col = "V"
b.如果能,則 Vgap_V = sec_h Mod DV34_H - SV17_W,arg_cod_col = "VH"
2.求當全部由SV橫放時,Y方向的剩余間隙Vgap_H = sec_h Mod SV17_W
3.對比步驟1所得間隙和步驟2所得間隙,如果Vgap_H < Vgap_V,則arg_cod_col = "H"
1.2.4綜合橫向排布代碼和縱向排布代碼,做出最終決策
針對可能的組合,分別判斷,邏輯如下:
Case1:毫無疑問,最終排布代碼arg_cod=V;
Case2: 組合最終排布方式可能是V和H,這時要用一個風量計算函數(3)比較兩種方式的出風量,如果V排布下風量大,則arg_cod=V,否則arg_cod=H;
Case3: 組合排布方式可能是V、H、或VH。這種情況比較容易造成誤判,而遺漏VH,需要特別注意。
問題在于,我們最后要拿由單個方向的最優排布策略決定的最終排布,去做對比。如果單純考慮垂直方向的最優策略為H,那么最終決策是H。如果單純考慮水平方向最優策略為V時,最終策略可能為V,也有可能是VH。那么我們得到三種可能的最終排布方式,即H、V、VH。
因此,我們需要比較排布為V、VH、H三種情況下的風量,風量大者為最終排布代碼;
Case4: 毫無疑問,最終排布代碼arg_cod=H;
Case5: 毫無疑問,最終排布代碼arg_cod=VH;
Case6: 組合最終排布方式可能是VH和H,比較兩種方式的出風量,如果VH排布下風量大,則arg_cod=VH,否則arg_cod=H;
(3)風量計算函數包含在結果輸出函數里,結果輸出函數的輸入是最終的排布代碼arg_cod,sec_w,sec_h,輸出為SV以及DV的行列數,以及在此種代碼排布下的風量;
1.3結果數據輸出
將上述步驟中計算得到的排布代碼、位置代碼、DV/SV的行列數、組合寬度、組合高度、底部間隙、左側間隙、風量等參數,輸出到相應的表單里。
其中,底部間隙、左側間隙即為設計鈑金件的輸入參數。
1.4數據檢驗
1.4.1Excel驅動CAD實現自動排圖
在結果數據輸出以后,如何驗證?直觀的辦法就是在CAD里作圖,看排布的情況到底如何。那么如果程序能夠根據結果數據,調用CAD自動畫排布圖,那么會使問題數據的檢驗、甄別非常高效。
自動畫圖實現的手段為:
先將DV、SV做成圖塊,存在一個固定模板里;
利用程序調用此模板,并調用1.3輸出的結果數據,實現圖塊的自動組裝;
與此同時,完成箱體邊框、風口的繪制,以及尺寸的標注等過程。
2優勢與不足
2.1優勢
2.1.1效率的提高
當組合數很多,再用傳統的手段在CAD中逐個排圖,效率很低。
程序對于批量的重復性勞動無疑是最好的選擇,一旦程序設計好,運行時間是可以忽略的。尤其在設計要變更,邏輯變化的時候,只需要修改少量代碼即可實時地得到運算結果。
2.1.2設計過程標準化
傳統設計手段在面臨如此大數據量的時候,只能通過分段,分項目逐次設計的辦法實現。但這樣很難保證兩次設計的一致性,從而使設計不能按照統一原則進行。為以后統型、修改帶來不便。
如果用程序設計,程序代碼本身就是對整個設計過程的很好記錄。程序運行可以保證結果數據是按照統一規則得到,可以大大降低錯誤發生率。
2.1.3方便后續擴展
用傳統的設計手段,如果想新增靜電過濾器型號,那意味著要重復整個設計過程。而用程序設計,只需要擴展基礎數據表,再運行一下程序,即可得到結果,大大方便了后續數據的擴展。
2.2不足
本文中所述算法,是以實現最大通風量作為選擇排布方式的主要依據的,但有的空調箱,不一定非要把過濾器排到最“滿”,就可以滿足系統風量的要求。這時,需要對結果數據中的風量,與系統要求風量對比。
另外,如果結構上不能按照一個統一的規則設計,那么輸出結果仍然需要再進一步處理,才能滿足工程需要。例如,當SV橫排時,即排布代碼為H時,如果小于2行,排布方式是兩個過濾器直接搭接。如果大于2行,那么每2行之間需要加隔板加強。這樣就意味著設計就不能按統一規律進行,這樣輸出的結果就要再考慮這些特殊因素進行修正后才能使用。
當然,即便如此,輸出結果對設計仍然具有很強的指導意義。
3結束語
本文主要闡述了一種實現靜電過濾器在空調箱里自動排布的算法,并且用程序的手段,將數據快速地變成AutoCAD中的圖形,以便實時進行數據可視化檢驗。
此外,就算法本身,也仍然可以拓展,例如,如果我們可以引入成本參數,把滿足設計需求的前提下成本最小化當作衡量指標,追求成本最低。這樣輸出結果,就可以作為降低成本項目方案選擇的指導。本文中靜電過濾器待選型號為2種,如果是多種,則排布方式將有所不同,需要對算法進行調整。
當然,如果用Creo軟件進行建模、出圖,那么可以將數據格式設計成和Creo里的族表里參數格式一致。這樣,從Excel里輸出的數據,作為三維建模時的輸入,直接復制到族表里,即可驅動Creo實現批量模型生成。如此,即可完成從設計輸入(參數表),到設計輸出(模型、圖紙)的整個過程的參數化、自動化。
參考文獻:
[1] 張帆,鄭立楷,王華杰 AutoCAD VBA 開發精彩實例教程[M].北京:清華大學出版社,2004.
[2] Excel Home,Excel VBA 實戰技巧精粹[M]. 北京:人民郵電出版社,2013.
[3] 靜電過濾器廠家樣本.
【通聯編輯:梁書】