全球FlexSim系统仿真中文论坛

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

作者: liuzhifan    时间: 2017-8-2 15:21
标题: 任务分配器如何实现任务传递时按照先占值进行任务的抢占
我做了个小模型进行测试,发现任务分配器是无法传递任务先占值的,发生器5的状态属于aiting for transport,并且它具有先占值的,可是AGV还是去往发生器4
7 ]# P1 e4 p2 ?4 I' D) r% d
$ m2 D1 p! i# K$ ]4 t# V
2 E' K/ |6 y* r

! z( [$ s8 K# g( g, C4 Z
作者: liuzhifan    时间: 2017-8-2 15:22
模型
作者: 慧娴亚伦    时间: 2017-8-2 20:04
这块内容肯定没有问题,请仔细阅读用户手册关于先占的用法。
作者: liuzhifan    时间: 2017-8-8 09:37
慧娴亚伦 发表于 2017-8-2 20:04
$ D; ^. r- {0 \. A这块内容肯定没有问题,请仔细阅读用户手册关于先占的用法。
+ l; Z. P. X5 b
我建立的先占值测试模型,16版的flexsim实现不了我的代码逻辑,但是用17版运行的是可以实现。我是不是又遇到软件BUG了。我对先占值的理解没有错,就是16版的flexsim一直运行让我得不到我想要的结果,所以导致我很困惑。我还有一个模型,16版与17版的运行结果也是不一样的。我想请问下,遇到这种情况,是我编程代码的问题,还是软件的问题。
作者: 慧娴亚伦    时间: 2017-8-8 11:27
运行了模型,没有发现您所说的问题,能否具体指出运行到什么时候会有问题?
作者: liuzhifan    时间: 2017-8-8 11:39
慧娴亚伦 发表于 2017-8-8 11:271 p% d: R, Z! Q, D, u; }- w
运行了模型,没有发现您所说的问题,能否具体指出运行到什么时候会有问题?

+ Q. t8 [9 d& p, e8 |* K! J陈老师你运行我后面刚上传的模型,这个模型的问题比较明显。下方的AGV会停止无法调用,并且它的正在执行的任务序列里面同时存在两个任务。
作者: liuzhifan    时间: 2017-8-8 11:41
附件模型
作者: 慧娴亚伦    时间: 2017-8-8 13:50
先占需要注意两点:/ \) i7 n8 P' S3 {. [8 z
1、想要抢占当前的任务,这个任务必须分配出去,也就是说如果先占任务留在任务分配器(简称DP)里面(而不是直接分到指定任务执行器(简称TE)身上)是不会出现抢占的,在DP使用“第一个可用”(return 0;)它只会向空闲的TE分派任务。您这个例子中如果直接使用return 1;强行分派给TE,那么先占完全可以实现;
8 b; Q5 x' V* H# a" Z, C2、如果TE已经在执行先占任务,那么此时又传递过来一个先占任务,则基于他们的优先级,如果优先级高于当前执行的先占任务,才会发生抢占。(详见下面用户手册截图原话),否则将会跟一般任务一样存入任务序列队列中,自然不会发生抢占。! g8 b& H. `& O4 O) ~" k, a
7 y7 s  H7 X7 _
我无法实现您截图树结构中的这种情况,因为激活的任务序列(activetasksequence)只可能有一个3 E& h( U0 {& |# X& c
[attach]3849[/attach], e- A6 t4 K9 y. H5 P$ Y

+ m0 A: p+ e" M8 \3 T" x$ d
作者: liuzhifan    时间: 2017-8-8 15:12
慧娴亚伦 发表于 2017-8-8 13:50% W' K0 u; C1 B2 G( P
先占需要注意两点:
9 U5 K  J" e" E5 y# K1、想要抢占当前的任务,这个任务必须分配出去,也就是说如果先占任务留在任务分配器 ...
; n. @, v  c4 D9 }: O2 A4 I: g6 c6 Q
我知道任务执行器正在执行的任务只能有一个。我拿别的电脑也试过了(16版的)也会出现这种情况,所以比较困惑。应该是软件版本的问题吧




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