|
在这一段时间的学习中,不管是单个操作员还是人机(多个操作员)还是AGV参与搬运和作业的模型中,大多时候都是通过编写任务序列来实现各种运输工具行进到某些位置、装载货物、卸载货物、再回到指定位置的这样一个任务流程,通过这样编写任务序列的方式有的时候需要满足一些前提条件,但是在实际生产中并不能时刻满足这些前提条件;而Flexsim的拉动模式有的时候更符合实际情况。
/ p6 e% t, @ a例如,编写任务序列行进至que1并从其中装载一个临时实体- treenode ts=createemptytasksequence(current,0,0);
& N1 d7 S& w! E! f+ c9 L- N# W - inserttask (ts,TASKTYPE_TRAVEL,que1);% }" j7 U5 k7 e) p
- inserttask (ts,TASKTYPE_FRLOAD,first(que1),que1);
复制代码 该任务序列能够顺利执行的前提条件是,当操作员行进到que1时,这个暂存区内是有临时实体的,如果操作员到达que1之后临时实体还未到达que1时,模型就会报错,报告invalid tasksequence,出现该种错误的原因是任务序列是提前编写的,无论que1中有无临时实体都会执行该任务序列,如果想要在任务序列模式下避免这种错误,可以首先编写语句来判断que1中有无实体再发送相应的消息来调用操作员;
) p" Q- E* A) A. _/ Z但是在拉动模式下,只需要对que1下游链接到的对象实体的“临时实体流”中勾选“拉入策略”,并对que1410的“临时实体流”中的“输出”勾选“使用运输工具”并链接到指定的操作员即可实现与上述任务序列一样的效果。0 b1 l" e) w, g4 G
结合到实际的生产现场,如果下游有合成任务需要拿取相应的物料,合成器采用拉动模式可以直接拉动操作员进行搬运、合成等作业,且在物料出现短缺的时候,操作人员会等待至物料补充时再搬运物料到合成器;但如果采用任务序列的方式,必须保证物料充足,那么就无法仿真模拟物料短缺时系统的状态以及物料短缺及时拉动上游配送的任务。
, E5 X" c' P& ~, q! N# h! a! O在我对实际问题进行建模的过程中,我一开始是使用任务序列来实现的,后来发现拉动模式也可以实现并且可以更好的实现。其实这也说明了一个思维的转变过程,正向思考时你觉得操作员需要到指定位置完成指定任务,但是没有去深入思考操作员为什么要这样来进行任务流程以及为什么在指定的时间点去做指定的任务,实际上是受到下游的拉动,这样就转化成为了逆向思考,而且模型的建立也更加简单。大部分初学者觉得任务序列的编写或者学习比较难但是其实Flexsim软件本身已经将最难的、最常用的设置成为参数设置。 |
评分
-
查看全部评分
|