登录发现更多内容
首页
资讯
分类
目录
索引
酷站
发帖
用户名
Email
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
门户
Portal
论坛
BBS
搜索
搜索
本版
用户
帖子
设置
我的收藏
退出
3
0
0
首页
资料共享
›
案例十一 传送带分拣至第一个可以下游
返回列表
案例十一 传送带分拣至第一个可以下游
[ 复制链接 ]
Yumaotuo
资料共享
537
3
2018-5-17 09:43:19
[i=s] 本帖最后由 Yumaotuo 于 2018-5-17 09:44 编辑 [/i]
[align=left][font=微软雅黑][size=4][color=#ff0000]1、模型描述:[/color][/size][/font][/align][align=left][font=微软雅黑][size=15pt]
[/size][/font][/align][align=left][font=微软雅黑]传送带左右两侧各有两台设备,产品通过传送带分拣至第一个缺货的设备,设备前有一个容量为1的暂存区作待加工品的缓存。若无可用下游,产品在传送带指定决策点的位置等待,直到出现第一个可用的下游。[/font][/align][align=left][font=微软雅黑][size=4][color=#ff0000]
[/color][/size][/font][/align][align=left][font=微软雅黑][size=4][color=#ff0000]2、模型布局:[/color][/size][/font][/align][align=left][color=#ff0000]
[/color][/align][align=left][font=微软雅黑]依下图进行布局,发生器产生产品进入传送带,传送带依次与四个暂存区A连接,形成4个离开衔接点,决策点依次与4个离开衔接点A连接。暂存区与各自的处理器A连接,加工完的产品进入吸收器。[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][/align][align=left][size=4][color=#ff0000]
[/color][/size][/align][align=left][font=微软雅黑][size=4][color=#ff0000]3、建模逻辑:[/color][/size][/font][/align][align=left][font=微软雅黑][size=5]
[/size][/font][/align][align=left][font=宋体]我们在暂存区中创建表示暂存区当前容量的标签[/font]Content[font=宋体],产品到达决策点时停止,持续判断暂存区的[/font][font=Calibri]Content[/font][font=宋体]标签值是否有为[/font][font=Calibri]0[/font][font=宋体]的,若有就发送产品。[/font][/align][align=left][font=宋体]
[/font][/align][align=left][font=微软雅黑]决策点到达触发:[/font][/align][align=left][font=微软雅黑]/**停止临时实体并做第一轮的判断发送至下游*/[/font][/align][align=left][font=微软雅黑]Conveyor.DecisionPoint current = param(1);[/font][/align][align=left][font=微软雅黑]Object item = param(2);[/font][/align][align=left][font=微软雅黑]Conveyor conveyor = param(3);[/font][/align][align=left][font=微软雅黑]Conveyor.Item conveyorItem = conveyor.itemData[item];[/font][/align][align=left][font=微软雅黑] //************* PickOption Start *************\\[/font][/align][align=left][font=微软雅黑]conveyorstopitem(item);//停止临时实体[/font][/align][align=left][font=微软雅黑]for(int i=1;i<=current.outObjects.length;i++)//[color=#006400][backcolor=white]对下游端口循环判断[/backcolor][/color][/font][/align][align=left][font=微软雅黑] {[/font][/align][align=left][font=微软雅黑] if(current.outObjects.outObjects[1].Content == 0)//[color=#006400]Content标签等于0即为空载[/color][/font][/align][align=left][font=微软雅黑] {[/font][/align][align=left][font=微软雅黑] conveyorresumeitem(item);//[color=#006400]恢复临时实体[/color][/font][/align][align=left][font=微软雅黑] conveyorsenditem(item, current.outObjects);//[color=#006400]发送临时实体到可用下游[/color][/font][/align][align=left][font=微软雅黑] current.outObjects.outObjects[1].Content=1;//[color=#006400]Content标签值置为1,表示该下游不可用[/color][/font][/align][align=left][font=微软雅黑] item.color = Color.byNumber(i);//[color=#006400]更改相应的颜色[/color][/font][/align][align=left][font=微软雅黑] break;//[color=#006400]跳出循环[/color][/font][/align][align=left][font=微软雅黑] }[/font][/align][align=left][font=微软雅黑] if(i==4)//[color=#006400]如果未发现可有下游[/color][/font][/align][align=left][font=微软雅黑] {[/font][/align][align=left][font=微软雅黑] senddelayedmessage(current,0,item,1);//[color=#006400]发送1号消息至当前实体[/color][/font][/align][align=left][font=微软雅黑] } [/font][/align][align=left][font=微软雅黑] }[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]决策点消息触发:[/font][/align][align=left][font=微软雅黑]**下游有空时接收消息,并0.1秒刷新一次*/[/font][/align][align=left][font=微软雅黑]Conveyor.DecisionPoint current = param(9);[/font][/align][align=left][font=微软雅黑]Conveyor conveyor = param(10);[/font][/align][align=left][font=微软雅黑]if(msgparam(1)==1)//[color=#006400]接收消息[/color][/font][/align][align=left][font=微软雅黑]{[/font][/align][align=left][font=微软雅黑] Object item = msgsendingobject();//[color=#006400]声明item[/color][/font][/align][align=left][font=微软雅黑] for(int i=1;i<=current.outObjects.length;i++)//[color=#006400]对下游端口循环判断[/color][/font][/align][align=left][font=微软雅黑] {[/font][/align][align=left][font=微软雅黑] if(current.outObjects.outObjects[1].Content == 0)//[color=#006400]Content标签等于0即为空载[/color][/font][/align][align=left][font=微软雅黑] {[/font][/align][align=left][font=微软雅黑] conveyorresumeitem(item);//[color=#006400]恢复临时实体[/color][/font][/align][align=left][font=微软雅黑] conveyorsenditem(item, current.outObjects);//[color=#006400]发送临时实体到可用下游[/color][/font][/align][align=left][font=微软雅黑] current.outObjects.outObjects[1].Content=1;//[color=#006400]Content标签值置为1,表示该下游不可用[/color][/font][/align][align=left][font=微软雅黑] item.color = Color.byNumber(i);//[color=#006400]更改相应的颜色[/color][/font][/align][align=left][font=微软雅黑] break;//[color=#006400]跳出循环[/color][/font][/align][align=left][font=微软雅黑] }[/font][/align][align=left][font=微软雅黑] if(i==4)//[color=#006400]如果未发现可有下游[/color][/font][/align][align=left][font=微软雅黑] {[/font][/align][align=left][font=微软雅黑] senddelayedmessage(current,0.1,item,1);//[color=#006400]0.1秒后再次判断是否有可用下游[/color][/font][/align][align=left][font=微软雅黑] }[/font][/align][align=left][font=微软雅黑] } [/font][/align][align=left][font=微软雅黑]}[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]产品发送到暂存区需要一段时间,若根据暂存区容量来判断是否可用,那么第一个产品未到达之前该暂存区一直可用,这段时间内到达决策点的产品都会被发送至该暂存区,所以这里用标签来表示暂存区的容量,接收到发送指令后即设置标签值为1表示该暂存区已经被补货。模型中用到的标签和消息触发,在建模中使用都比较广泛。[/font][/align][i][/i]
点赞
0
收藏
0
────
0
人觉得很赞
────
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
3 回复
肖恩
回复
举报
2018-7-3 20:35:05
感谢分享
回复
评论
举报
王婉珍
回复
举报
2019-6-10 13:20:51
很好,记下来
回复
评论
举报
susan
回复
举报
2019-7-10 18:05:34
谢谢分享
回复
评论
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
点评
高级模式
本版积分规则
回帖后跳转到最后一页
返回
浏览过的版块
新手入门
信息公告
资料共享
登录开启您的创作之旅
快速登录,立即开启您的创作之旅~
登录
热门问答
查看更多
1
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
12094
227
2
Flexsim二次开发之塔吊
Flexsim二次开发之塔吊
6139
45
3
FlexSim2016 中国象棋
FlexSim2016 中国象棋
6011
44
4
快递分拨中心案例~新手可参考
快递分拨中心案例~新手可参考
5633
62
5
关于Processs Flow 使用的两个案例(AGV Elevator案例/子母穿梭
关于Processs Flow 使用的两个案例(AGV Elevator案例/子母穿梭
5479
34
博主榜
Htenghui
+ 10630
白可露
+ 7753
liguanyu
+ 6759
4
Round2011
+ 6323
5
梁之安
+ 6321
6
zgh1120
+ 5341
7
ishelo
+ 4710
8
linweixu168
+ 3722
9
liuzhifan
+ 3628
10
adysunshine
+ 3566
首页
分类
目录
索引
我的