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