全球FlexSim系统仿真中文论坛

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

作者: liuzhifan    时间: 2017-8-2 15:21
标题: 任务分配器如何实现任务传递时按照先占值进行任务的抢占
我做了个小模型进行测试,发现任务分配器是无法传递任务先占值的,发生器5的状态属于aiting for transport,并且它具有先占值的,可是AGV还是去往发生器4
; a5 g2 l) x4 K* e% T

5 t  N1 _. B6 v( J
" i; N; u: x6 k  E# h0 ]
% B: _9 _5 b% a9 D. f% c- W4 [
作者: liuzhifan    时间: 2017-8-2 15:22
模型
作者: 慧娴亚伦    时间: 2017-8-2 20:04
这块内容肯定没有问题,请仔细阅读用户手册关于先占的用法。
作者: liuzhifan    时间: 2017-8-8 09:37
慧娴亚伦 发表于 2017-8-2 20:04
' W% H0 S! W" D8 ^这块内容肯定没有问题,请仔细阅读用户手册关于先占的用法。
* l- e' ~0 d1 e& q) ]( ^* \
我建立的先占值测试模型,16版的flexsim实现不了我的代码逻辑,但是用17版运行的是可以实现。我是不是又遇到软件BUG了。我对先占值的理解没有错,就是16版的flexsim一直运行让我得不到我想要的结果,所以导致我很困惑。我还有一个模型,16版与17版的运行结果也是不一样的。我想请问下,遇到这种情况,是我编程代码的问题,还是软件的问题。
作者: 慧娴亚伦    时间: 2017-8-8 11:27
运行了模型,没有发现您所说的问题,能否具体指出运行到什么时候会有问题?
作者: liuzhifan    时间: 2017-8-8 11:39
慧娴亚伦 发表于 2017-8-8 11:275 ]9 c* Z/ `/ f/ K6 F; P
运行了模型,没有发现您所说的问题,能否具体指出运行到什么时候会有问题?
' z- m, Y% U: `. g2 H# h+ b
陈老师你运行我后面刚上传的模型,这个模型的问题比较明显。下方的AGV会停止无法调用,并且它的正在执行的任务序列里面同时存在两个任务。
作者: liuzhifan    时间: 2017-8-8 11:41
附件模型
作者: 慧娴亚伦    时间: 2017-8-8 13:50
先占需要注意两点:5 F2 U5 N: h7 b4 t5 P
1、想要抢占当前的任务,这个任务必须分配出去,也就是说如果先占任务留在任务分配器(简称DP)里面(而不是直接分到指定任务执行器(简称TE)身上)是不会出现抢占的,在DP使用“第一个可用”(return 0;)它只会向空闲的TE分派任务。您这个例子中如果直接使用return 1;强行分派给TE,那么先占完全可以实现;6 _: ]2 I' E/ S0 ]. f! x& J
2、如果TE已经在执行先占任务,那么此时又传递过来一个先占任务,则基于他们的优先级,如果优先级高于当前执行的先占任务,才会发生抢占。(详见下面用户手册截图原话),否则将会跟一般任务一样存入任务序列队列中,自然不会发生抢占。9 n+ o& w( G- T

! R5 s5 T" \, B* d$ V% C  R我无法实现您截图树结构中的这种情况,因为激活的任务序列(activetasksequence)只可能有一个
( ^9 A' @6 W  l) b) ^8 G6 P/ \[attach]3849[/attach]
1 y, {3 A! f, ]- P0 Q1 ~6 D( }
  f; W- m1 p$ q' k& h
作者: liuzhifan    时间: 2017-8-8 15:12
慧娴亚伦 发表于 2017-8-8 13:50# ?/ h' R! X( G+ \
先占需要注意两点:
4 @# d+ g, N% Q9 P4 V1、想要抢占当前的任务,这个任务必须分配出去,也就是说如果先占任务留在任务分配器 ...

2 |' q; R' U1 i! L) J我知道任务执行器正在执行的任务只能有一个。我拿别的电脑也试过了(16版的)也会出现这种情况,所以比较困惑。应该是软件版本的问题吧




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