发帖
 找回密码
 立即注册
搜索
2 0 0

执行类实体反连接到分配器的作用

历史版块_9 2 2 2011-12-20 16:27:35
连接执行类实体与分配器时,通常由分配器连接到执行类实体。反向连接的话,会有什么作用呢?
举例来说,当一个操作员在执行搬运货物时,如果被一个抢占任务打断的话,操作员会将剩余的任务交给分配器而去执行抢占任务。上述的剩余任务会由分配器分配下去(如果存在其他操作员的话)。
但在这个过程中  会有一个奇怪的现象。虽然操作员将任务交给了分配器,但是已装载的临时实体却不会消失,仍然在操作员身上。
这部分内容 也可以在说明书中查询。
──── 0人觉得很赞 ────

本帖子中包含更多资源

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

x
2011-12-20 17:27:30
[i=s] 本帖最后由 domcylai 于 2011-12-21 10:49 编辑 [/i]

我认为,操作员被先占后,剩下的task如您所说的通过“反连接”交回给分配器,但是没有任意一个task指明让flowitem消失(或则搬运到某地),如果需要让他消失,可以用destroyobject(),但是如果要在执行那个先占的任务之前将 flowitem搬运到某地,是否可以调整tasksequence的排序?
被抢占的那一瞬间,如果可以控制tasksequence的排序,就好办了。


————————————————————————
花时间研究了一下,并没有找到相关代码去“编辑”第一次搬运的tasksequence,所以我想到了只能通过删掉原来的tasksequence,然后重新生成一个相同的tasksequence; 在执行完 那个先占的tasksequence以后,再由分配器将新tasksequence返还给操作人员;

PS:如果大家对Queue有一定理解的话,我们可以将这个模型中的分配器 当成一个“任务暂存区”,正如chengjun所说,通过反连接,将任务传递给这个“任务暂存区”

本帖子中包含更多资源

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

x
2011-12-21 10:41:28
[i=s] 本帖最后由 domcylai 于 2011-12-21 10:48 编辑 [/i]

忘记放上附件了,补上说明:为了说明详细,声明 先占的那个任务叫preempttask,原来的那个叫oldtask,新的叫newtask;

1)操作员执行oldtask时,Queue4 发射 preempttask抢占,此时操作员将oldtask剩下的任务传递给分配器,

2)Queue4发射的preempttask修改一下,在“使用运输工具”的下拉菜单选择“任务序列示例1”,并点击编辑按钮,增加:
treenode Queue3 = centerobject(centerobject(current,1),1);
inserttask(ts,TASKTYPE_TRAVEL,Queue3,NULL);
inserttask(ts,TASKTYPE_MOVEOBJECT,rank(centerobject(current,1),1),Queue3);
意思是将已经搬运的item放回到原来的那个Queue,然后执行新的;

3)item放回到原来的Queue3后,Queue3 会生成newtask,因为操作员被先占了,所以oldtask和newtask将传递到分配器,而且它们的优先级一样,根据时间先后,oldtask排在前面;

4)下面要做的是删除oldtask,我用了destroyobject(),和gettasksequence(), 并将代码卸载sink的进入触发中:
treenode oldtask = gettasksequence(centerobject(current,1),1);
destroyobject(oldtask);

——

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 立即登录
高级模式
返回
历史版块_9
热门问答
查看更多
1
流水作业线的仿真
流水作业线的仿真
32
83
2
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
28
224
3
Flexsim初级建模工程师水平标准
Flexsim初级建模工程师水平标准
27
234
4
图形用户界面(GUI)教学视频
图形用户界面(GUI)教学视频
25
75
5
flexsim中文教程,pdf文档已整理-重新整理
flexsim中文教程,pdf文档已整理-重新整理
25
114
博主榜
+ 5