Flexsim-查找货架上指定货格的货物案例
前言
函数帮助:
rackgetitembybaylevel(obj rack, num bay, num level, num itemrank);
rackgetbayofitem(ojb rack,obj item);
rackgetlevelofitem(ojb rack,obj item);
一、模型搭建
如图所示,有一个发生器(Source1)和货架(Rack1)。此时有两个操作员需要搬运指定货格中的item前往暂存区(Queue1)。两个操作员搬运的方法不同。
前提:在Rack1的OnEntry触发里,写入以下代码,以便观察item的货格:
/**Custom Code*/
Object current = ownerobject(c);
Object item = param(1);
int port = param(2);
int bay = param(3);
int level = param(4);
int row=rackgetbayofitem(current,item);//等同于当前页面的int bay = param(3);
int col=rackgetlevelofitem(current,item);//等同于当前页面的int level = param(4);
item.labels.assert("row").value=row;
item.labels.assert("col").value=col;
if (true)
{
string listName = "item_List";
List(listName).push(item,0);
}
1.Operator1
在“random”中使用随机数,随机生成第几行,第几列。
使用objectexits()函数判断第几行,第几列中是否存在item;
使用rackgetitembybaylevel()函数定义item;
2.Operator2
与Operator1不同的地方在于:使用了pull from list 去定义item,代替了rackgetitembybaylevel();
query(WHERE row==puller.row and col==puller.col)
上面的代码是写在pull from list>Query/Object/Array;
总结
其实还有很多方法可以实现操作员去取指定货格的货物,上面的两种方案只是参考。