全球FlexSim系统仿真中文论坛

搜索
查看: 6060|回复: 7
打印 上一主题 下一主题

[急問] 以任務序列實現加工流程

[复制链接]
跳转到指定楼层
1#
r0805995 发表于 2015-2-1 22:59:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 r0805995 于 2015-2-1 23:54 编辑
/ B( ?/ [& b" b: ?9 F+ ]2 d  @) B* h# U/ R5 @
以queue模擬robot的上下手臂,Robotbuffer1為上Arm(R1)、Robotbuffer2為下Arm(R2),只要有空都能夾取,流程為Source->Input->OP1->R1 or R2->Test->R1 or R2->OP3->R1 or R2->OP2->R1 or R2->CircleF->Sink, 目標: 能做完Source給的所有產品,目前做到: 能流動到OP2,但中間有幾個小bug找不到,程式邏輯如下:
* i+ O: I8 q- z4 Z$ Z7 l+ h5 M1. Processor 只在finish時才呼叫robot夾取& N5 [/ q+ G* U$ R2 o6 _
2. R1 and R2 判斷每個產品進入時的標籤數值組合,並派任務給robot
* W0 ^, U  T+ U% Y3. Robot-OnUnload 是怕機台未finish時,Robot能去做其它事,但這部分寫得很破碎8 V9 q8 i8 ]' X. K& H3 l

9 n  ]3 R, e1 r3 \5 _目前Bug : 1. R1 and R2 容量只有1個,在模擬時間340秒左右,Robot誤動作至Input夾取產品到r1* C2 J6 j$ K8 v/ D6 V; `' U  k% x
               2. 480秒左右,機台都有產品加工,Robot還至Input夾取產品到r1,形成阻塞, A& ?) {7 x2 y' ~& o( q% [, @

2 _- C( g% \/ o: J! i: A7 JFlexsim Version: v7.1

本帖子中包含更多资源

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

x
2#
慧娴亚伦 发表于 2015-2-2 10:21:04 | 只看该作者
r0805995 您好!
4 U3 R2 h$ c% ^根据您的模型,您的题目描述似乎有一点不符,如果您模型中的流程是正确的话,那么开始的流程应该是source->input->r1/r2->OP1(后面一致)。3 `5 z6 p( h- c, _+ F- B, T
您的模型主要处理部分完全通过中间连接的引用来下达任务序列指令完成,个人觉得从您模型的要求来看似乎不需要这么复杂,我换了一个思路,通过a连接,让其自行通过调用运输工具来完成运输作业(但是处理器的处理数据和发生器到达数据没有原封按照您的要求设置)。! e0 s' o8 }8 ], m1 }4 O
这样做了之后,首先因为下游是内部逻辑自行判断,所以不会出现您模型中的bug1的问题。其次,为了避免出现堵塞的,我通过控制仅在R1和R2都空置时再夹取新进入系统的产品,当然可能在不同的加工情况下有更多的限制,您可以根据具体情况通过添加判断条件来控制是否夹取新的产品。

本帖子中包含更多资源

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

x
3#
 楼主| r0805995 发表于 2015-2-2 12:42:56 | 只看该作者
謝謝慧嫻亞倫,但是我的目的是要模擬訂單,不是要Inter-Arrival的方式。Source一開始排好訂單,然後下去做加工 ,source->input->r1/r2->OP1  我認為是這樣,所有Item同時進入Input,而Input OnEntry只觸發一次,Inter-Arrival則是讓Item進入就觸發OnEntry, 所以後面source->input->r1/r2->OP1 才會一致
4#
慧娴亚伦 发表于 2015-2-2 14:24:57 | 只看该作者
这个没关系,即使是批次到达,只在开始触发一次,您还可以用消息触发器或者是用户事件来每隔一段时间检查一下是否打开端口。
5#
 楼主| r0805995 发表于 2015-2-2 15:30:02 | 只看该作者
可以請問一下 消息触发器是OnMessage嗎 ?. s* c9 J7 ]# z& |* ?" L7 e% v
那用户事件是...?
9 ?6 i- W* q4 _+ g4 o4 UOnmessage使用時機不是很清楚
0 e; b, F: q6 Z4 q$ d6 P  G; Z# @$ y這兩種方法又該如何加入在這個例子??
6#
慧娴亚伦 发表于 2015-2-2 15:48:04 | 只看该作者
用户事件更方便理解一些,由于暂时没有正式版,因此无法使用用户事件(UserEvent)。
2 m* s6 B' a) ^. q7 W% O下面我用消息触发器来完成,道理是一样的,本例中通过消息每秒一次不停的检查下游是否两个buffer都处在空置状态(即可以接受新的产品进入系统),您可以根据需要将检查的频率增大或者减小。此外,额外给input添加了一个标签ontheway的标签,来以免机械手在运输途中,上游暂存区误认为下游都处于空置因此释放产品。
6 q7 a% b. @3 q( b/ U9 h3 y希望对您有帮助。

本帖子中包含更多资源

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

x
7#
 楼主| r0805995 发表于 2015-2-2 16:34:36 | 只看该作者
哇 謝謝慧嫻 這方法真的簡短許多,不過想在向您學習一下tasksequence
/ w0 S8 ]6 I8 f( |
' @  A) _" A6 h. D8 l4 T4 h假如我想全程用tasksequence派,且在Source產生各機台名稱的標籤,如經過A機台時標籤名稱A為1,經由標籤數值組合去派發到下一機台
8#
慧娴亚伦 发表于 2015-2-3 16:24:40 | 只看该作者
不是特别能理解您的意思,如果使用tasksequence派发的话,我会倾向使用moveobject这个任务,不过您这个例子中要借助机械手来做中转,似乎还是要涉及FRLOAD和FRUNLOAD。
# f. u+ C8 F0 {6 a# H" o关于任务还是应该多看一下用户手册里面具体介绍各种任务序列需要的参数,来选择合适的任务进行运作。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-29 18:15 , Processed in 0.068804 second(s), 14 queries .

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

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