全球FlexSim系统仿真中文论坛

搜索
查看: 5014|回复: 4

2019年第四期远程培训之库内倒箱

[复制链接]
shiny0801 发表于 2019-5-10 17:46:41 | 显示全部楼层 |阅读模式
在自动化立体库的仿真项目中,如果要出库的货物外侧有货物阻挡,则需要堆垛机先把阻挡的货物移到别的巷道再进行出库作业。模型布局如图所示:
建模步骤如下:
1.     创建一个货架,勾选Floor Storage(平置货架)。该货架作为整个立库的第一层。
注意:本demo只示意立库为一层时的做法,如果实际应用中涉及到多层可复制该货架修改z轴坐标并在逻辑中加入立库层——即第几个货架的判断。
2.     由于布局中货架位于堆垛机右侧,而货架默认列从左开始为第一列,故旋转货架Z轴180度,使货物入库从右侧开始放置。
3.     使用PF产生初始库存,50个item。
4.     出库item为随机选择
5.     在PF的出库逻辑线中,如果经过判断要出库的item外侧有其他item阻挡,则堆垛机先去装载需要挪出的物料,load之后逻辑判断该物料需要放置到哪一层(即哪一个巷道),判断逻辑为从第一层开始循环并在爆仓时进行弹窗提醒,若找到能存放的level则把level存在item的level标签上进行记录,如下图:
6.     有了上面第五点对于level的判断,我们在货架的放置到列触发器中写如下代码:
int cellcap = 1;
int nrofbays = rackgetnrofbays(current);
if(!objectexists(item.labels["level"]))
{
   for (int index= 1; index  <= nrofbays; index ++) {
           if(rackgetbaycontent(current, index ) < cellcap * rackgetnroflevels(current,index ))
                    returnindex ;
   }
}
else//倒库
{
   int ii =1;
   while(rackgetcellcontent(current,ii,item.level)>0)
   {
           ii++;
   }
   return ii;
}
return 1;
在货架的放置到层触发器中写如下代码:
int cellcap = 1;
int nroflevels = rackgetnroflevels(current,baynumber);
if(!objectexists(item.labels["level"]))
{
   for (int index= 1; index  <= nroflevels ; index ++){
           if(rackgetcellcontent(current, baynumber, index ) < cellcap)
                    returnindex ;
   }
}
else//倒库
{
   returnitem.level;
}
return 1;
注意:货架的这两个触发器的触发顺序是先触发放置到列,再触发放置到层。所以我先把放置到的层的编号在PF中unload之前确定下来,以便在放置到列中可以调用到。

6 D9 C- ^" e' r& C, f

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1威望 +10 收起 理由
慧娴亚伦 + 10

查看全部评分

Htenghui 发表于 2019-5-10 19:14:51 | 显示全部楼层
谢谢徐老师
沈瑞祥 发表于 2019-5-23 16:37:30 | 显示全部楼层
谢谢徐春琦老师!
JackKup0926 发表于 2019-5-29 13:49:25 | 显示全部楼层
謝謝老師分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2024-3-29 21:30 , Processed in 0.084560 second(s), 16 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表