在实际的工厂仿真建模过程中,工件在机台间的移动,主要通过两种方式实现:一种是直接用Connector连线;另外一种就是用移动类命令语句实现。后者因为更加灵活,成为建模时的首选,下面就为大家介绍移动类命令(Move、Insert、Transfer)的区别,以及使用过程中的注意事项。
根据移动工件目的地的不同,可以分为两类:
1 点类型控件 这类控件基本上包括除Line、Track外的绝大多数控件,工件在该类型控件上不进行移动,例如:SingleProc、Buffer等。对于这类控件,三种移动类命令基本没有区别,可以根据使用习惯通用。
2 长度类型控件 主要指Line、Track类型的控件,工件可以在控件上进行移动。当工件被移动到这一类控件上,三种移动类命令就有了比较大的区别:
Move:工件在触发命令被移动后,至移动到Booking Point的这段时间,工件同时存在于当前控件与目标工件上,即:工件前端已经移动到目标控件上,但是移动动画仍然停留在当前控件上。
Insert:这个命令要求被移动到的目标位置有足够的空间,空间大小取决于工件长度,空间不足是不能成功移动的。工件移动的过程,相当于直接将工件放到目标位置。
Transfer:工件在触发命令被移动后,完全进入目标控件,只要目标位置为空,无论空间大小,都可以移动成功。因此,对于长度比较长的工件,当目标位置为空且空间不足时,常会出现堆叠的现象。
以上为三种移动类命令的区别。但是在实际应用中,还需要注意这三个命令在执行过程中,如果不能成功执行,仿真是不会中断的,经常成为模型出错或异常的原因,且很难排查。尤其是当造成不能移动的因素是不可监控变量时,移动行为不会进入目标控件的Forward Blocking List,这样移动行为将不会发生。因此为了避免该现象的发生,建议大家在使用这三种移动命令的时候采用下面的方式:
if @.move/insert/transfer(xxxxxx,xx)=false then debug; end;
这样既可以正常移动,如果移动不成功,也可以及时报错,提高模型调试效率。