跳到主要内容

存储组件说明文档

功能说明

存储标志如下:

存储可以存放用户定义的任意数量的物料,它们会一直保留在存储中,直到用户使用方法来获取它们出来。在属性中输入存储位置的数量来定义存储大小,即在属性中输入X维度、Y维度和Z维度的大小。

只要存储区域有可用的存储位置,存储就会收到物料。当物料进入存储时,会确定该物料放置到的存储位置。默认将物料放置在坐标轴中第一个未占用的存储位置。

属性编辑器

名称及备注

名称及备注

属性

存储属性如下:

X容量

指设置x轴上存储位置数,为正整数。

Y容量

指设置y轴上存储位置数,为正整数。

Z容量

指设置z轴上存储位置数,为正整数。

说明

存储的实际容量为X容量 × Y容量 × Z容量。

物料提取方法

getProcessing方法

用户可以使用getProcessing方法从存储中按照先进先出的规则获取已存储的物料,该方法不需要参数。

pick方法

用户可以使用pick方法从存储中取出指定位置的物料,该方法需要三个参数,分别代表x,y,z。物料提取方法可以放在存储本身,也可以放在接收物料的组件中,函数自定义位置可以参考自定义,但不可放在虚拟的流量控制,周期等组件中。以下取了同一画布上的两个例子来进行解释,画布如下:


示例一: 方法放在存储本身
这里实现的是当存储中物料大于2时即提取并发送给目标组件的函数,函数注入放在beforeProcessing中。

def putTargetData(data, node, vars):
def _putData():
if vars.components['工位(1)'].isAvailable:
yield from vars.components['工位(1)'].unblockProcessing() # 判断目标组件能否放置物料
item = yield from node.getProcessing() # 获得物料
vars.components['工位(1)'].put(item) # 放入目标组件
if len(node.processingQueue.position_queue) > 2: # 判断是否物料大于2
node.env.process(_putData()) # 若不放入envprocess中,直接调用函数会在存储组件内耗时

示例二: 方法放在目标组件本身
这里实现的是当存储中有物料时,接收物料组件会获取物料的函数。因为接收物料组件没有上游节点,函数注入放在afterInit中。

def getStore(node, vars):
def _getTargetStore():
while True: # 函数放在afterInit处需要重复执行
yield vars.components['存储'].processingQueue.peek() # 当存储中有物料时
if not node.isAvailable():
yield from node.unblockProcessing() # 检查当前节点是否可以放置物料
data = yield from vars.components['存储'].getProcessing() # 获取存储中物料
node.put(data) # 放入当前节点
node.env.process(_getTargetStore())  
 

### 故障
  [故障](/suanpan/docs/提升与进阶/组件帮助手册/工厂系统仿真/生产系统仿真组件/模型库说明文档/通用属性说明/故障)
 

### 样式
  [样式](/suanpan/docs/提升与进阶/组件帮助手册/工厂系统仿真/生产系统仿真组件/模型库说明文档/通用属性说明/样式)
 

### 自定义
  [自定义](/suanpan/docs/提升与进阶/组件帮助手册/工厂系统仿真/生产系统仿真组件/模型库说明文档/通用属性说明/用户自定义)