全球FlexSim系统仿真中文论坛

标题: 任务分配器如何实现任务传递时按照先占值进行任务的抢占 [打印本页]

作者: liuzhifan    时间: 2017-8-2 15:21
标题: 任务分配器如何实现任务传递时按照先占值进行任务的抢占
我做了个小模型进行测试,发现任务分配器是无法传递任务先占值的,发生器5的状态属于aiting for transport,并且它具有先占值的,可是AGV还是去往发生器4
, ^5 o* y  }& b7 }1 ^. I
: j* B3 @% U# I9 o$ m% m1 N3 s: m9 r0 g
: s7 \1 V2 n: f; S

1 K% i+ G- U* T$ I7 W
作者: liuzhifan    时间: 2017-8-2 15:22
模型
作者: 慧娴亚伦    时间: 2017-8-2 20:04
这块内容肯定没有问题,请仔细阅读用户手册关于先占的用法。
作者: liuzhifan    时间: 2017-8-8 09:37
慧娴亚伦 发表于 2017-8-2 20:04
' ?! y$ @! p! h& W这块内容肯定没有问题,请仔细阅读用户手册关于先占的用法。

3 ?. a% i" K0 o- O! C; c$ r# G! u8 w我建立的先占值测试模型,16版的flexsim实现不了我的代码逻辑,但是用17版运行的是可以实现。我是不是又遇到软件BUG了。我对先占值的理解没有错,就是16版的flexsim一直运行让我得不到我想要的结果,所以导致我很困惑。我还有一个模型,16版与17版的运行结果也是不一样的。我想请问下,遇到这种情况,是我编程代码的问题,还是软件的问题。
作者: 慧娴亚伦    时间: 2017-8-8 11:27
运行了模型,没有发现您所说的问题,能否具体指出运行到什么时候会有问题?
作者: liuzhifan    时间: 2017-8-8 11:39
慧娴亚伦 发表于 2017-8-8 11:273 k6 f6 c' {- x, |8 ?0 B1 Q; @
运行了模型,没有发现您所说的问题,能否具体指出运行到什么时候会有问题?
, U. }) \. {3 _' {0 E2 K
陈老师你运行我后面刚上传的模型,这个模型的问题比较明显。下方的AGV会停止无法调用,并且它的正在执行的任务序列里面同时存在两个任务。
作者: liuzhifan    时间: 2017-8-8 11:41
附件模型
作者: 慧娴亚伦    时间: 2017-8-8 13:50
先占需要注意两点:5 M1 }% B6 E3 r: N
1、想要抢占当前的任务,这个任务必须分配出去,也就是说如果先占任务留在任务分配器(简称DP)里面(而不是直接分到指定任务执行器(简称TE)身上)是不会出现抢占的,在DP使用“第一个可用”(return 0;)它只会向空闲的TE分派任务。您这个例子中如果直接使用return 1;强行分派给TE,那么先占完全可以实现;6 Y$ H- E5 W( g6 K2 a
2、如果TE已经在执行先占任务,那么此时又传递过来一个先占任务,则基于他们的优先级,如果优先级高于当前执行的先占任务,才会发生抢占。(详见下面用户手册截图原话),否则将会跟一般任务一样存入任务序列队列中,自然不会发生抢占。
* g1 ~) P5 u7 b, [+ g
6 q8 Z. Z% `% u+ W- Y# \- e我无法实现您截图树结构中的这种情况,因为激活的任务序列(activetasksequence)只可能有一个8 w  b9 V/ G. R* w
[attach]3849[/attach]
4 q. B8 z2 t, U9 n4 D' p. @/ t$ W$ W) A. ~- `

作者: liuzhifan    时间: 2017-8-8 15:12
慧娴亚伦 发表于 2017-8-8 13:501 ^, p% |8 o8 F9 D
先占需要注意两点:
5 j; k) a$ D1 r& X1、想要抢占当前的任务,这个任务必须分配出去,也就是说如果先占任务留在任务分配器 ...

3 ]* n) [) w- Q0 i5 @, }0 @. C我知道任务执行器正在执行的任务只能有一个。我拿别的电脑也试过了(16版的)也会出现这种情况,所以比较困惑。应该是软件版本的问题吧




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3