流量控制组件说明文档
功能说明
流量控制用于对汇合和分支的物料流向策略进行建模。注意,流程控制不处理物料,在工厂实际产线中没有对应实体,仅用于定义模型中的物料流向,其中“进口策略”定义多输入的汇合规则,“出口策略”定义多输出的分支规则。
属性编辑器
名称及备注
进口策略
“进口策略”定义了多输入时的汇合规则,允许用户通过指定策略接收特定前驱节点发来的物料数据。在流量控制组件中,共支持“先到先处理”、“循环接收”、“PBS出车规则”与“自定义接收”四种进口策略。
先到先处理
- 通过点击“进口策略”标签 - 在“进口策略”下拉框中选择“先到先处理”,当前流量控制节点将根据前驱节点发送物料的到达顺序,顺次接收物料进行处理,当存在多个物料同时到达,则随机选择处理。
循环
- 通过点击“进口策略”标签 - 在“进口策略”下拉框中选择“循环” - 点击“编辑”按钮,用户可以在弹出的循环节点列表中添加指定前驱节点的名称。当运行仿真时,当前流量控制节点在接收物料数据时,将会循环遍历循环节点列表上的所有节点,顺次等待并接收从它们发送而来的物料。
整车厂缓存库规则
- 通过点击“进口策略”标签 - 在“进口策略”下拉框中选择“PBS出车规则” - 用户可以在规则编辑器中导入不同的PBS出车规则。当运行仿真时,每当流量控制节点在接收物料数据时,将根据所设定的PBS出车规则对所有满足条件的前驱节点进行筛选,从而计算出应从哪个前驱结点中获取物料。
- 回程车道:此处将定义PBS回程车道的首个节点名称,当流量控制节点的所有前驱节点都已被处理中的物料所占用,且均不能满足权重为100的PBS规则时,默认排序规则下的首个物料将被发往回程车道,以解除PBS车道的阻塞情况。
- 属性源:此处将配置当前流量控制所需处理的所有待制订单和在制订单,初始化时流量控制将从订单表中解析所有订单属性名称与属性值,用户也可以通过点击“编辑”按钮对复数属性名称进行复合。
- PBS规则:支持间隔约束、连续约束、相邻约束以及自定义约束四种规则,当有多个车道的物料准备好时,流量控制节点将优先从满足高权重规则的车道中抓取物料,若同时有多个车道满足同一条件则降序通过低权重规则进行筛选直至剩下唯一一个车道。另外,若规则权重被设定为100,则此项规则为必须满足。
- 高级设置:用户可以在“高级设置”中配置当多个车道满足同一出车条件时默认的排序顺序。
自定义接收
- 通过点击“进口策略”标签 - 在“进口策略”下拉框中选择“自定义”- 点击“编辑”按钮,用户可以在弹出的代码编辑器中写入一段自定义代码。当运行仿真时,每当流量控制节点在接收物料数据时,将运行这段代码来计算应当从哪个前驱结点中获取物料。
出口策略
“出口策略”定义了多输出时的分支规则,允许用户通过指定策略向特定后驱节点发送物料数据。在流量控制组件中,共支持“物料名称”、“物料属性”、“循环”与“自定义分发”四种出口策略。
- 物料名称
通过点击“出口策略”标签 - 在“出口策略”下拉框中选择“物料名称”- 点击“编辑”按钮,用户可以在弹出的节点列表中添加指定的物料与后驱节点名称。当运行仿真时,当前流量控制节点在发送物料数据时,根据当前处理物料的名称,将其发往指定的后驱节点。当存在多条重复或冲突的规则时,行号小的规则具有更高的优先级。
- 物料属性
通过点击“出口策略”标签 - 在“出口策略”下拉框中选择“物料属性”- 点击“编辑”按钮,用户可以在弹出的节点列表中添加指定的物料属性、期待值与后驱节点名称。当运行仿真时,当前流量控制节点在发送物料数据时,将会根据当前处理物料特定属性的内容,将其发往指定的后驱节点。当存在多条重复或冲突的规则时,行号小的规则具有更高的优先级。
- 循环
通过点击“出口策略”标签 - 在“出口策略”下拉框中选择“循环”- 点击“编辑”按钮,用户可以在弹出的循环节点列表中添加指定后驱节点的名称。当运行仿真时,当前流量控制节点在发送物料数据时,将会循环遍历循环节点列表上的所有节点,并顺次向它们发送物料。
- 自定义 通过点击“出口策略”标签 - 在“出口策略”下拉框中选择“自定义”- 点击“编辑”按钮,用户可以在弹出的代码编辑器中写入一段自定义代码。当运行仿真时,每当流量控制节点需要发送物料数据时,将运行这段代码来计算应当向哪个后驱结点发送物料。
自定义
环境变量
变量名 | 类型 | 内容 |
---|---|---|
currentNode | StandardizedNode | 当前流量控制组件的节点信息 |
lastDest | Str | 本轮应当接收零件的前驱节点名称(仅用于入口规则) |
nextDest | Str | 本轮应当发送零件的后驱节点名称(仅用于出口规则) |
- lastDest说明:仅用于入口规则自定义。在执行自定义代码后,流量控制节点将读取变量 lastDest 中存放的节点名称,从该节点中获取物料数据。所以,在自定义代码中,计算得出的目标节点名称,应当保存在变量 lastDest 里。另外,在自定义标签的 “userdefine”中定义的变量也将被作为全局变量读取到环境变量中,通过在“userdefine”中定义变量也可以实现与“出口自定义规则”的数据互传。
- nextDest说明:仅用于出口规则自定义。在执行自定义代码后,流量控制节点将读取变量 nextDest 中存放的节点名称,向该节点发送物料数据。所以,在自定义代码中,计算得出的目标节点名称,应当保存在变量 nextDest 里。另外,在自定义标签的 “userdefine”中定义的变量也将被作为全局变量读取到环境变量中,通过在“userdefine”中定义变量也可以实现与“入口自定义规则”的数据互传。
共通方法
- 方法名: getStandardizedNode(name) (通过指定节点名称,获取该节点的基本信息 )
参数 | 内容 | 详情 |
---|---|---|
参数1 | 节点名称 | 数据类型为Str,内容为指定节点的名称 |
返回1 | 节点信息 | 数据类型为StandardizedNode,包含该节点的基本信息 |
数据类型
- 节点信息 (数据类型: StandardizedNode)
属性名称 | 类型 | 内容 |
---|---|---|
name | Str | 指定组件节点的名称 |
uuid | Str | 指定组件节点的UUID |
occupancy | Int | 指定组件节点中所含零件数量 |
capacity | Int | 指定组件节点的容量 |
lastNodes | List | 指点组件节点所有前驱节点的名称 |
nextNodes | List | 指点组件节点所有后驱节点的名称 |
currentMu | Material(*) | 指定组件节点中正在处理的零件信息 |
processingMuList | List | 指定组件节点中所有的零件信息 |
方法名 | 返回类型 | 返回值 |
---|---|---|
getPreparedLastNodes() | List | 返回所有非空前驱节点的名称 |
getEmptyNextNodes() | List | 返回所有空闲后驱节点的名称 |
- 物料信息 (数据类型: Material)