張文曉
摘要:該文旨在介紹一種如何利用編程的方法,實現空調箱離心風機段的自動排布,以及參數輸出。并且利用Excel調用AutoCAD,利用輸出數據自動畫布局圖,從而對輸出數據進行檢驗。
關鍵詞:空調箱;離心風機;Excel VBA;字典;CAD自動畫圖
中圖分類號:TP311? ? ? 文獻標識碼:A? ? ? ?文章編號:1009-3044(2019)01-0100-04
1 概述
隨著市場競爭越來越白熱化,如何全方位地滿足客戶需求受到越來越多賣方的關注。他們不僅比過去更關注客戶的真實需求,而且千方百計地去滿足這些需求,以期占領更多的市場。在空調制造行業,特別是商用機領域降低成本、縮短交貨周期是客戶非常關注需求。而在空調箱這塊市場,由于入門的門檻低,技術優勢不明顯,越來越多的中小企業加入這一產品的競爭中。在此市場形勢下,如何完善產品型譜,為客戶提供盡可能多的可選配置,成了空調箱產品的發展方向。但是,組合數的增加,對于設計來說往往意味著工作量的增加,那么,如何找到一種辦法進行批量設計,成為亟待解決的問題。
例如本文中所述設計實例,以空調箱尺寸、風機型號、電機型號為變量的組合數,有將近4萬種之多。由于數據量龐大,在傳統是設計中,往往是以尺寸把產品分為幾個段,然后成立幾個項目分別設計。但這種方法的弊端是——設計周期長,前后設計不能遵循一致的設計原則,產品不能標準化。在具體的實現手段上,傳統設計往往是在Excel中用公式進行尺寸計算,從而選擇風機電機的排布方案。但面對復雜邏輯時,公式會變得異常復雜難以閱讀,并且很容易出錯,也不利于后期擴展。
基于這種現狀,本文介紹一種如何在Excel中搭建數據結構,并且用VBA編程的方法,將整個設計的邏輯用程序語言寫出來,以便實現大量數據的批量計算,同時方便后續的擴展。并且在數據檢驗的時候,程序可以調用AutoCAD,實現自動創建布局圖,使得數據檢驗可視化。
2 解決方案
2.1 背景介紹
2.1.1 設計輸入與輸出
風機段是空調箱產品的重要功能段,離心式風機是末端機組常用到的風機類型。每一個size的空調箱,對應多種長寬尺寸(用模數表示),每個size可選的風機有多種,而每種風機可選的電機又有多種,電機本身又分IE2,IE3,變頻等類型,將每個變量的個數累乘即為可選的組合數。離心風機以及電機的選型,風機廠商都有專業的選型軟件,本文不再贅述。本文主要針對的情況是——風機、電機型號已經選定的前提下,如何利用程序生成配置表,并驗證每種配置是否存在,如果存在該如何合理地排布。
因此,設計輸入為:
a) Size與模數配對表;
b) Size與風機配對表;
c) 風機與電機配對表;
d) 風機尺寸表;
e) 電機尺寸表;
f) 其他輔助尺寸表。
設計輸出為:
A. 所以可能組合配置表;
B. 每種組合下的風機、電機排布方式(左右/前后);
C. 確定排布方式下的風口位置尺寸;
D. 風機段段長。
2.1.2 出風方式
組合空調機組的風機和電機是一起安裝在同一個風機架焊件上的,按風機的出口位置及其出風方式有下圖所示形式:
2.1.3 風機、電機排布
風機、電機的主要排布方式為:
1) 左右排布:
2) 前后排布:
由于前后排布會造成段長增加,從而增加成本。所以,在排布的時候優先選用左右排布,如果左右排布空間不足,再考慮前后排布。
2.1.4 風機出風口位置
箱體內風機位置的正確布置與否,關系到風機進風口和出風口的氣流是否順暢,如果受到一定的阻礙或限制,為了補償由此而產生的靜壓損失就需要相應提高風機的轉速,同時也會相應增加了風機的噪聲、軸功率。
在我們常用的機組中,風機有時由于安裝空間有限,箱體兩側的面板很靠近風機進口,這就會限制進風空氣的流動,會使風機性能和送風量有不同程度的降低,為了使風機進口和出口的氣流順暢,最大限度地減少進出口氣流的壓力損失,風機進風口與側面板的距離應該大于最小許用距離,即WL&WR(圖4)≥最小許用距離。
因此,WL&WR的取值,也是判斷風機、電機組合能否放置到箱體里的重要條件。并且,如果空間允許,應盡量讓風口居中放置,這樣有利于進風口空氣流動。
2.2 設計流程
2.2.1 數據結構與程序模塊
基礎數據表格格式:
1) 第一列為數據查詢ID(不能有重復,便于后面裝入字典對象);
2) 數據區域應該為連續區域,不應有空行或者空列;
3) ID列格式設為文本,數據區域設為數值;
4) 將與某個部件相關的尺寸放在一張表里,不要離散到其他表;
5) 刪除其他冗余數據,保持數據整潔,格式統一。
程序模塊與操作界面:
注意,從操作界面中可以看到,在Class Modules里,建了風機、電機、風機之間等類,這樣在調用數據的時候,可以利用VBA的字典對象,將多列數據裝入字典來模擬微型數據庫功能,加快數據檢索、查詢速度,從而加快程序運行速度。由于篇幅有限,如何實現,會在另外一篇文章中加以闡述。
除此之外,在編碼的時候,可以直接調用類里面的屬性,增加代碼的可讀性。例如,在Fan類里,可以定義FanW,FanH等屬性,代表風機的寬和高,這樣在編碼的時候,即可直接調用FanW,FanH屬性。如下圖9所示:
2.2.2 算法介紹
2.2.2.1 遍歷所有組合,生成配置表
在Excel VBA編輯器的Modules里插入Config模塊(如圖7所示),并編寫程序遍歷每一個Size、Module、風機、電機、電機類型組合。其本質是遍歷如圖10所示樹型數據結構,把所有可能分支展開。
2.2.2.2 驗證空間安裝,并求安裝方式
如何排布風機與電機,是此次程序設計算法的核心。如圖8所示,在Modules里插入Calculation模塊,并在此模塊下添加代碼。代碼主要功能是實現排布方式判斷、風口位置及段長計算,以及結果數據輸出。
驗證風機、電機空間空調箱截面里能否放下邏輯如下(詳見程序流程圖11):
1) 水平方向判斷(判斷電機尾部距離面板間隙)
風機電機左右放置,判斷能否放下;
由于左右放置的時候段長最短,所以如果左右放置空間夠,優先選擇左右放置。
如果左右放不下,判斷前后放置能否放下;
如果都放不下,此組合不存在。
2) 高度方向判斷(判斷風機支架頂部與頂部面板之間間隙)
如果高度方向能放下,則可以確定排布代碼;
如果高度方向放不下,則此組合不存在。
2.2.2.3 根據安裝方式求開口位置
如果排布方式計算結果為左右排,則WL(見圖4)為:
1) 求能放下此風機+電機的最小箱體寬度;
2) 算出當前機型寬度與最小寬度差值,左右均分給WL和WR。
如果排布方式計算結果為前后排,則WL為:
3) 如果風口居中,空間滿足,則令WL=WR=箱體寬-風口寬;
4) 如果風口居中,空間不足,則令WR=最小許用距離,即風機電機移動到最右,
如果滿足,則WR=最小許用距離,WL=箱體寬-風口寬-WR。
2.2.2.4 根據安裝方式,求段長
在計算段長時,要事先設計好每種風機、電機組合的風機底盤。并且根據2.2.2.2求得的排布代碼,檢索出風機底盤的長度,并在進風口、出風口預留一定空間,從而算出段長L1。當然,在設計風機底盤的時候,已經考慮了皮帶輪、皮帶的選型,以及風機電機中心距。理想化地,可以將風機、電機中心距計算、風機底盤長度的計算也一并用程序實現,但在本例中,由于風機底盤之前已經設計好,故程序只需要調用風機底盤的數據即可。段長(L1)的在不同出風方式下的計算示意圖如下:
2.2.3 結果數據輸出
將上述步驟中計算得到的排布代碼、WL&WR、段長L1、風口尺寸等參數,輸出到Output表單里。
注意,為了加快程序運行速度,因把結果數組數據,一次性賦值給區域,而不應逐個單元格賦值。
2.2.4 數據檢驗
2.2.4.1 Excel驅動CAD實現自動排圖
在結果數據輸出以后,經過數據檢驗程序,如果檢驗出問題數據如何驗證?直觀的辦法就是在CAD里作圖,看排布的情況到底如何。那么如果程序能夠根據結果數據,調用CAD自動畫排布圖,那么會使問題數據的檢驗、甄別非常高效。
如圖7所示,在VBA程序編輯器的modules里插入Draw模塊,用于編寫畫圖代碼。自動畫圖實現的手段為:
1) 先將風機、電機做成圖塊,存在一個固定模板里;
2) 利用程序調用此模板,并調用2.2.3輸出的結果數據,實現圖塊的自動組裝;
3) 與此同時,完成箱體邊框、風口的繪制,以及尺寸的標注等過程。
生成Layout圖形如圖13所示:
3 優勢分析
3.1 效率的提高
當數據量足夠大,計算邏輯十分復雜的時候,再用傳統手段在Excel中用公式計算,會使整個計算過程變得更加復雜。過程中產生很多中間參數,會使計算表單的數據量更加龐大,從而使操作變得異??D。并且用公式索引數據也會造成公式不具有可讀性(過長),為以后調試以及修改造成很大困難。
程序對于處理大數據計算無疑是最好的選擇,一旦程序設計好,運行時間是可以忽略的。尤其在設計要變更,邏輯變化的時候,只需要修改少量代碼即可實時地得到運算結果。
3.2 設計過程標準化
傳統設計手段在面臨如此大數據量的時候,只能通過分段,分項目逐次設計的辦法實現。但這樣很難保證兩次設計的一致性,從而使設計不能按照統一原則進行。為以后統型、修改帶來不便。
如果用程序設計,程序代碼本身就是對整個設計過程的很好記錄。程序運行可以保證結果數據是按照統一規則得到,可以大大降低錯誤發生率。
3.3 方便后續擴展
用傳統的設計手段,如果想新增模數、風機、電機型號,那意味著要重復整個設計過程。而用程序設計,只需要擴展基礎數據表,再運行一下程序,即可得到結果,大大方便了后續數據的擴展。
并且,本例中是研究離心風機的排布,如果是直連風機或者其他型號風機的項目,只需要把核心計算模塊部分的代碼加以修改,整個程序框架不需要改動,即可在短時間內完成新程序設計。
4 結束語
本文主要闡述了如何將一個離心風機排布的設計過程程序化,并且用程序的手段,將數據快速地變成AutoCAD中的圖形,以便實時進行數據可視化檢驗。
需要說明的是,本文旨在介紹一種設計思路,對計算過程中的細節沒有一一列舉。讀者可根據具體項目完成自己的算法設計。
當然,此設計思路仍然具有擴展空間。例如,在可以增加其他程序模塊,來計算風機底盤、槽板以及其他內部零件的尺寸,并且將這些尺寸以一定格式輸出到Excel表單。如果用Creo軟件進行建模、出圖,那么可以將數據格式設計成和Creo里的族表里參數格式一致。這樣,從Excel里輸出的數據,作為三維建模時的輸入,直接復制到族表里,即可驅動Creo實現批量模型生成。如此,即可完成從設計輸入(參數表),到設計輸出(模型、圖紙)的整個過程的參數化、自動化。
參考文獻:
[1] 張帆,鄭立楷,王華杰.AutoCAD VBA 開發精彩實例教程[M].北京:清華大學出版社,2004.
[2] Excel Home.Excel VBA 實戰技巧精粹[M]. 北京:人民郵電出版社,2013.
【通聯編輯:梁書】