PLC_OPEN MC_MoveAbsolute 位置相同

PLC_OPEN MC_MoveAbsolute with same position

有时可能会发生调用 MC_MoveAbsolute 时轴的当前位置相同的情况,在这种情况下,“完成”或“忙碌”状态不能用于管理函数的结束,因为函数不得执行任何移动。 我是这些类型控件的新手,我研究过的示例总是使用这样的状态机:

1: MC_MoveAbsolute .exec: = true;
  if MC_MoveAbsolute .busy then // never goes high if AxisActPos = MC_MoveAbsolute.position;
   MC_MoveAbsolute .exec: = false;
   nextStep: = 2;
end_if
2:
    if MC_MoveAbsolute.done then
          // do something

处理这些情况的最佳方法是什么?

我一般不用忙位。

1: MC_MoveAbsolute .exec: = true;
   nextStep: = 2;

2: if MC_MoveAbsolute.done then
       MC_MoveAbsolute .exec: = false;
       // do something
   end_if

case结构的本质是,当步长递增时,新的代码直到下一次程序扫描才会执行。因此,假设您在 case 之外的每次扫描中执行 MC_MoveAbsolute 功能块,done 位将在它之前适当设置(取决于是否需要运动)在 case.

的第 2 步中检查