MC_MoveContinuousAbsolute

Function block MC_MoveContinuousAbsolute
Commands a controlled motion to a specified absolute position ending with the specified velocity.
VAR_IN_OUT
B AxisIn AXIS_REF Reference to an axis.
VAR_INPUT
B Execute BOOL Starts the motion at rising edge.
E ContinuousUpdate BOOL If TRUE, when the function block (FB) is running and the values of the parameters are updated, the FB will use the new value. If FALSE, the FB won't use the new value.
B Position LREAL Commanded position for the motion [second] (negative or positive).
B Velocity LREAL Value of the maximum velocity. [unit/second]
B EndVelocity LREAL Value of the end velocity. Signed value. [second].
E Acceleration LREAL Value of the acceleration. The unit is determined by MC_ProfileType. [unit/second2] or [second]
E Deceleration LREAL Value of the deceleration. The unit is determined by MC_ProfileType. [unit/second2] or [second]
E Jerk LREAL Value of the jerk. The unit is determined by MC_ProfileType. [unit/second3] or [second]
E Direction MC_Direction The moving direction of an axis.
E BufferMode MC_BufferMode Defines how to blend the velocity of two function blocks.
VAR_OUTPUT
B InEndVelocity BOOL Commanded position reached and running at requested end velocity.
E Busy BOOL The function block is not finished and new output values are to be expected.
E Active BOOL The function block is controlling the axis.
E CommandAborted BOOL The command is aborted by another command.
B Error BOOL Signals that an error has occurred within the function block.
B ErrorID MC_Error Error identification.
  • If the commanded position is reached and no new motion command is put into the buffer, the axis continues to run with the specified EndVelocity.
  • The Continuous Motion state means it will not stop by itself.
  • If EndVelocity is less than Velocity, the axis will use EndVelocity to run after the commanded position has been reached; if EndVelocity is greater than Velocity, the axis will use Velocity to run.
  • This function block (FB) can be replaced by the combination of MC_MoveAbsolute and MC_MoveVelocity if BufferMode is implemented on those FBs.
  • Currently MC_MoveContinuousAbsolute can't reverse the direction of the axis.

 

  MC_MoveContinuousAbsolute  
AXIS_REF   AxisIn   Axis   AXIS_REF
BOOL   Execute   InEndVelocity   BOOL
BOOL   ContinuousUpdate   Busy   BOOL
LREAL   Position   Active   BOOL
LREAL   Velocity   CommandAborted   BOOL
LREAL   EndVelocity   Error   BOOL
LREAL   Acceleration   ErrorID   MC_Error
LREAL   Deceleration        
LREAL   Jerk        
MC_Direction   Direction        
MC_BufferMode   BufferMode        
             

One use case for MC_MoveContinuousAbsolute is a linear cutter:

One linear axis that is carrying a laser device that is used to cut a workpiece.

During the cutting process the laser must be moved with a fix velocity, no acceleration or deceleration phase can be tolerated. The laser must be moved to its waiting position after the cutting was done.

This can be achieved with the FB MC_MoveContinuousAbsolute in the following way:

 

Started with a rising edge of xStartCuttingCycle, the instance "mca" of MC_MoveContinuousAbsolute will move the axis with lrFastVelocity to lrStartCutPos, turn back and have the speed lrCutVelocity when reaching lrStartCutPos again in negative direction. In this point in time, InEndVelocity is set, and the laser is switched on. As no other motion FB interrupts this movement, MC_MoveContinuousAbsolute will keep travelling in negative direction with the current speed. After the axis has overstepped the position lrEndPos, where the laser is switched off, the MC_MoveAbsolute instance "ma" moves the axis with high speed to its idle position: