3. Buffer 库存元素

3.1 元素定义

Buffer元素是用来描述现实生产运作系统中各种类型的存储装置、空间区域、路径等对象。它在流程中的功能就是对输入进来的物料进行存储。它自己不能主动从流程中其它的单元环节中取得物料,只能被动等待其它环节将物料输送进来。在正常的工作形态下,存储装置中的物料也必须由流程中其它环节的设备取用,才能离开存储装置。按照物料在存储装置的滞留形态(即物料如何离开存储装置)的不同,我们又把Buffer元素区分为以下三种类型:

  • 缺省类型(Default)类型Buffer

存储装置中的物料也必须由流程中其它环节的设备取用,才能离开存储装置。

  • 最小(Min)类型Buffer

存储装置中的物料到达存储装置后,必须在装置中至少滞留一定的时长,才可以被流程中其他环节设备取用而离开存储装置。

  • 最大(Max)类型Buffer

存储装置中的物料到达存储装置后,在装置中至多只能滞留一定的时长,如果超过了这一时长物料还未被其他环节取用而离开,那该物料就必须自行离开该存储装置。

如上所述,使用Buffer元素,我们可以描述离散制造业中的料箱、料架,转运托盘、各种形式的物料传送带、车间的库房等堆放物料的区域、机场的候机大厅、医院的候诊区等等。

3.2 元素属性

在模型结构树上,鼠标双击Buffer元素节点,系统弹出Buffer元素属性对话框如下图所示:

如图至上而下Buffer元素的属性参数有:库存最大容量、零件滞留模式、滞留时间阀值、Exit_to 流程逻辑代码定义按钮和两个Action行为逻辑代码定义按钮。其中“滞留时间阀值”输入框、“Exit_to” 流程逻辑代码定义按钮只有在Buffer元素是“Min”类型和“Max”类型时才激活。滞留时间阀值”定义了零件滞留在Buffer元素实例中的时长,“Exit_to” 按钮下的流程逻辑代码,描述了零件滞留时长到达“滞留阀值”时,去往下一个的目的地的逻辑定义。

3.3 流程逻辑

 “Exit_to”按钮下的流程逻辑代码,描述了零件滞留时长到达“滞留阀值”时,去往下一个的目的地的逻辑定义。如前所述,“流程逻辑”定义的具体内容,就是由用户使用计算机程序代码(VBS语言)调用系统的“流程规则语句”代码构成。“Exit_to”流程逻辑代码可使用的“流程规则语句”语法如下:

push_to = array(location1, location2, location3…)

这条规则语句的涵义就是把当前的Part元素实例送往目的地locationi。这里的location就是流程模型中“Machine元素”、“Buffer元素”、“ship”元素、“Track元素”、“Conveyor元素”节点的名称。如果该模型节点是一个成组设备节点,可用设备节点名加上设备序号即location(ii)的形式,来标记要前往的目的地,是成组设备中的哪一台。

【提示1】

当去往下一个目的地的条件满足后,系统在往下一个目的地输送Part元素的实例时,是逐个进行处理的。

【提示2】

系统在往下一个目的地输送Part元素的实例时,如果该目的地已满不能接受该Part元素实例,则这个实例离开模型系统,被“Reject”掉。

3.4 行为逻辑

Buffer元素属性对话框,有两个“行为逻辑”定义按钮:“Action On Input”、“Action On Output”。“行为逻辑”代码定义了Buffer元素实例,在仿真进行时的动作行为。“行为逻辑”代码的编写,是由用户使用VBS语言调用系统的内部函数、自定义函数、模型变量等代码等构成。 这两个按钮下的“行为逻辑”代码的执行条件与含义如下:

“Action On Input”:一旦有Part元素进入该Buffer元素实例时,该按钮下的程序代码段,被激活执行;

“Action On Output”:一旦有Part元素离开该Buffer元素实例时,该按钮下的程序代码段,被激活执行;

3.5 内部函数

点击系统模型结构树“System”节点,然后再点击其下的“Buffer”子节点,系统展开Buffer元素有关的内部函数节点。在流程代码编辑阶段,用户可通过鼠标双击这些函数节点来引用它们。Buffer元素有关的内部函数定义如下:

  1. 函数名称:  Nparts(macNme)
    函数功能: 返回存储装置上零件的数量。
    输入参数 1:  macName,设备名,对成组设备可使用macNme(ii)
                 的形式指代获取第几台设备上的零件数量。
    函数返回值:
              -1 函数未成功执行。
             > 0 机器设备上零件的数量。
  1. 函数名称:  Get_attr(macNme, index , attName)
    函数功能:  返回存贮装置上第 index 个零件上的属性名为
                attName 的属性值。
    输入参数 1:  macName: (必需),字符串,设备名。
    输入参数 2:  index: (必需),整数,设备上零件的索引序号。
    输入参数 3:  attName:(必需),串表达式,该序号零件属性名。
    函数返回值:
              -1 函数未成功执行。
             > 0 机器设备上第 index 个零件上的属性名为
                attName 的属性值。
  1. 函数名称:  Set_attr(macNme, index, attNameValue)
    函数功能:  给存储装置上第 index 个零件上的属性名为
                attName的属性赋值Value。
    输入参数 1:  macName: (必需),字符串,设备名。
    输入参数 2:  index: (必需),整数,设备上零件的索引序号。
    输入参数 3:  attName:(必需),串表达式,该序号零件属性名。
    输入参数 4:  Value:(必需),值表达式,属性值。
    函数返回值:
              -1 函数未成功执行。
               1  函数成功执行。
  1. 函数名称:  TYPE(macNme)
    函数功能:  返回存储设备当前要exit输出零件的名称。
    输入参数 1:  macNme, 存储装置名称。
    函数返回值:输出零件的名称。
3.6 元素报表

当模型仿真运行完成后,鼠标右键单击在模型结构树Buffer元素节点,系统弹出“模型编辑”菜单,然后鼠标点击选择上面的“统计元素”菜单,系统在屏幕右侧的模型布局区域里,以表格的形式展示出Buffer元素的运行状态统计信息。表头名称及取值含义如下:

库存名称Total inTotal outMax_LengthPart Type Now InPart TypePart Qty

Total In :到仿真终止时刻,共计进入的该Buffer元素实例中零件个数。

Total Out :到仿真终止时刻,共计离开该Buffer元素实例中零件个数。

Max_Length:到仿真终止时刻为止,驻留在该Buffer元素实例中零件最大数量。

Part Type Now In:到仿真终止时刻为止,驻留在该Buffer元素实例中零件种类的数量。

Part Type:到仿真终止时刻为止,驻留在该Buffer元素实例中零件名称。

Part Qty:到仿真终止时刻为止,驻留在该Buffer元素实例中名称为“Part Type”的零件的数量。