网站首页  词典首页

请输入您要查询的论文:

 

标题 利用变形栈及VBA快速进行大型电子设备成本分析
范文

    关堂新

    摘要:文章讨论了了产品结构树及VBA在产品数据统计中的应用。文章基于结构树的层次结构,提出了变形栈算法。首先,对结构树报表进行层次标识;其次,在标识的基础上构造出一个变形栈,用于保留历史层级的数据,在计算时仅回溯栈,大大简化了计算。文中利用某大型雷达的结构对算法进行了验证。最后,给出了该算法的应用分析。

    关键词:结构树;VBA;变形栈统计

    中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)27-0207-02

    大型电子设备的研制生产是一个大型团队的协同过程。大型电子设备是按系统[1]与分系统组织的,每个分系统由一个分团队完成,每个分系统中又由部件组成,每个部件又由元器件组成。由于项目设计的继承性要求,每个部件又有可能包含若干子部件甚至是分系统。这种嵌套性往往很深。

    大型电子设备的物理形态是结构树。结构树在产品生产的物料准备、工艺准备、人员分配中起着基础的作用。

    1 大型电子设备结构树特点

    结构树,又称产品结构树(Product Structure Tree, PST)[2],是描述某一产品的物料组成及各部分文件组成的层次结构树状图,是PDM(Product Data Management)、BOM(Bill of Material)及ERP(Enterprise Resource Plan)的基础[3]。大型电子设备的结构树相当复杂。

    首先,大型电子设备的元器件往往多达几万个甚至是十几万个。另外,大型电子设备的元器件种类也很多。

    其次,大型电子设备的结构树层次多样。结构树是一种树状的层次结构。

    最后,结构树与电子设备的物理结构是紧密联系的。结构树上的各个树叶、节点是的顺序关系、包含关系、数量、具体功能等均不可改變。

    2 PDM系统中特殊性需求分析

    大型的企业级的产品管理一般是PDM,CAPP及ERP等相互协调共同配合完成的。主要功能是由专用程序实现的。实际上,客户对PDM及结构树的使用需求是多种多样的,很难用一个固定的软件全部实现。

    产品的管理需求是多种多样的,时时变化的;有些需求是极为特殊的。因此,电子产品的设计者、维护者应基于PDM、ERP基础,特别是结构树进行二次开发,解决产品生产、销售过程中的各种个案问题。

    3 利用VBA和结构树实现特殊需求

    在现有PDM系统中均支持统计报表的输出。因此,二次开发者可以基于统计报表进行分析。如现有的PDM都支持Excel报表输出的方式。这就为我们提供了一个可以进行二次开发实现特定功能的接口。

    VBA(Visual Basic for Applications)是微软开发出来的在其桌面应用程序中执行通用的自动化(OLE)编程语言。VBA主要作用是扩展Windows应用程序的功能,可以快速实现复杂的逻辑,大大提升了Excel等的数据处理能力,满足工作中的特殊要求。

    VBA是VB的子集,是面向对象的编程方法在Office上的实现。Office中所有的组件都进行了面向对象的封装。其中所有的组件及其功能都可以用VBA对象实现。

    大型电子设备的每个子设备处于结构树的节点或叶子上。在组织生产上,需要做的工作是审核每个子设备的物料是否齐备,需要统计出各个设备的加工时间及整机的齐套时间;在成本分析上,需要统计出每个子设备的成本,需要统计出整个系统的成本;在对外报价上需要给出每个器件的价格组成、利润率等。因而,根据需要,对结构树进行相应的分析是极为重要的。

    我们可以将特定产品或设备的结构树生成报表,并可下载到本地。利用VBA处理报表,可对结构树进行针对性、轻型化的、及时分析。

    4 利用VBA和结构树统计某型雷达元器件数量及费用

    产品结构树的分析基础性工作是各组成器件的数量统计。图1为某型雷达的结构树报表(局部)。报表的第一列为器材的标识,第二列为器材的技术状态,第三列为型号或规格(外购件),第四列则为该型器材的数量。

    在组织生产时,如果要制造一套散热器模块,需要备料的数量是[1×25×4×5=500]只,散热模块器的仅有4层嵌套。

    结构树为树型逻辑,数据结构中对树的遍历算法。在此,还需要对其进行改造方可以使用,改造的原则是模拟人工统计的流程。

    基于人工的统计算法如下:

    1) 顺序访问第一条记录,记下装入的数量;

    2) 分析出该条记录所处的层级;

    3) 向上回溯,直到需要统计的层级(如当前为四级,则需要向上向三、二、一级回溯),记下各层级的装入数量;

    4) 将回溯的装入数量与本级别数量的依次乘起来,作为本级元器件的备料数;

    5) 移向下一条记录,重复1)~4)步,直到全部结束。

    有的产品有多达十几层嵌套。本产品中有30000多个器件(记录),按每个记录平均4层嵌套计算,则整机统计要做120000次乘法。不仅是乘法,统计过程还须进行递归处理,这将是一个极大的工作负担。因此,需要进行自动化处理。

    为了方便报表的VBA自动化处理,可先对报表做适当改动。如图-1中的报表没有标明层次,如在处理中每次都计算层级,会增加计算负荷。因此,需要对表单初始化,利用标识列中的空格数量可判定某条记录的层级,如图2所示。

    自动化处理的另一个工作是变形栈的设计。栈是一种后进先出的数据结构,利用栈可以保存2)、3)两步的记录数量。显然,这个栈也不是标准的栈。栈顶和栈底不是固定不变的,如统计整机的装入数量,则栈底保存的数一定是1;否则栈底是需要统计的部件的层级,其数量应设为1。这是一个“变形栈”,除了访问顺序是后进先出外,其他的均是不定的。这种做的好处是,在整个处理过程中只需要一个栈,大大节省处理资源,提高计算速度。

    考虑到数组对随机访问的支持,“变形栈”载体采用数组,栈顶及栈底访问均采用索引方式,如图-3所示。采用数组访问的一个缺点是数组的大小固定,数组的大小可以利用层级来确定,如层级为7,则数组的大小只要大于7即可,数组应初始化为全1。

    如果投产1台发射机,统计其下的块的数量,则将栈顶设为5即可,需要的数量为3?1?5?4=60。在统计到某个元器件时,将该元器件的数量填入到其层级对应的数组中去替换原有值即可,此后该值在栈中保持不变直到遇到下一个层级为1的元器件。这样,在计算元器件数量时,仅回溯栈即可。

    结合上述,自动化处理流程综合如下:

    1) 初始化。给结构树报表增加一列,该列保存对应元器件的层级;

    2) 根据初始化结果,取最大层级号,并以此号定义數组容量,其中元素初始化为1;

    3) 将拟统计的元器件号的层级号作为栈底标识,并以此为起点向下遍历;

    4) 将当前处理的元器件层级号作栈顶,将元器件的数量写入栈顶替代原来数值;

    5) 自当前栈顶向当前栈底回溯,并将所有元素相乘,得到的结果为当前元器件的数量;

    6) 重复3)~5)步,直到遇到层级号大于等于栈底层级号的元器件。

    说明,如果作整机统计,则栈底的层级是永远0;栈顶将根据元器件的层级随机改变,循环到整个结构树结束。

    图4为对某雷达进行的外购器件数量及费用统计(节选)结果。该雷达总层级为,元器件设计记录30000余行,整个计算过程小于5分钟。

    5 结束语

    本文算法已在某产品上得到验证,可以统计出外购件、外协件、标准件的数量及费用。该方法对于大型电子设备的生产、销售及定价办法起着直接的指导作用。本文针对产品生产过程中的需求的多样性,在利用VBA和结构树报表解决工作过程中的特殊需求方面做了初步探索。

    参考文献:

    [1] 中华人民共和国国防科学技术委员会.GjB74A-1998军用地面雷达通用规范[Z],1998.

    [2] GB/Z 18727-2002 企业应用产品数据管理(PDM)实施规范北京[Z].中国标准出版社, 2002.

    [3] 罗鸿.ERP原理设计实施[M].4版.北京:电子工业出版社,2016,3.

    [4] John Green, Stephen Bullen, Rob Bvey, Excel 2007 VBA参考大全[M].ExcelHome,译.北京:人民邮电出版社,2016.3.

    [通联编辑:闻翔军]

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/11 7:05:31