标题 | 基于ExcelVBA实现空调箱离心风机段自动排布的程序设计 |
范文 | 张文晓 摘要:该文旨在介绍一种如何利用编程的方法,实现空调箱离心风机段的自动排布,以及参数输出。并且利用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中用公式计算,会使整个计算过程变得更加复杂。过程中产生很多中间参数,会使计算表单的数据量更加庞大,从而使操作变得异常卡顿。并且用公式索引数据也会造成公式不具有可读性(过长),为以后调试以及修改造成很大困难。 程序对于处理大数据计算无疑是最好的选择,一旦程序设计好,运行时间是可以忽略的。尤其在设计要变更,逻辑变化的时候,只需要修改少量代码即可实时地得到运算结果。 3.2 设计过程标准化 传统设计手段在面临如此大数据量的时候,只能通过分段,分项目逐次设计的办法实现。但这样很难保证两次设计的一致性,从而使设计不能按照统一原则进行。为以后统型、修改带来不便。 如果用程序设计,程序代码本身就是对整个设计过程的很好记录。程序运行可以保证结果数据是按照统一规则得到,可以大大降低错误发生率。 3.3 方便后续扩展 用传统的设计手段,如果想新增模数、风机、电机型号,那意味着要重复整个设计过程。而用程序设计,只需要扩展基础数据表,再运行一下程序,即可得到结果,大大方便了后续数据的扩展。 并且,本例中是研究离心风机的排布,如果是直连风机或者其他型号风机的项目,只需要把核心计算模块部分的代码加以修改,整个程序框架不需要改动,即可在短时间内完成新程序设计。 4 结束语 本文主要阐述了如何将一个离心风机排布的设计过程程序化,并且用程序的手段,将数据快速地变成AutoCAD中的图形,以便实时进行数据可视化检验。 需要说明的是,本文旨在介绍一种设计思路,对计算过程中的细节没有一一列举。读者可根据具体项目完成自己的算法设计。 当然,此设计思路仍然具有扩展空间。例如,在可以增加其他程序模块,来计算风机底盘、槽板以及其他内部零件的尺寸,并且将这些尺寸以一定格式输出到Excel表单。如果用Creo软件进行建模、出图,那么可以将数据格式设计成和Creo里的族表里参数格式一致。这样,从Excel里输出的数据,作为三维建模时的输入,直接复制到族表里,即可驱动Creo实现批量模型生成。如此,即可完成从设计输入(参数表),到设计输出(模型、图纸)的整个过程的参数化、自动化。 参考文献: [1] 张帆,郑立楷,王华杰.AutoCAD VBA 开发精彩实例教程[M].北京:清华大学出版社,2004. [2] Excel Home.Excel VBA 实战技巧精粹[M]. 北京:人民邮电出版社,2013. 【通联编辑:梁书】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。