Table of Contents

IAxisMoveSequence

Namespace
ZEquipment
INTERFACE IAxisMoveSequence

Axes implementing this sequence over access to advance movement behavior. It gives access to

  • Chaining movement commands
  • Advanced overriding of ongoing movements
  • Movements modes, which are not supported in standard axis interfaces (e.g. moving to a position and continue moving with constant velocity)

To gain access to the advanced movement commands

  1. Enter the sequential mode by calling EnterSequenceAsync
  2. Use Sequence property to queue up commands or overwrite ongoing commands
  3. Use ExitSequenceAsync to exit the sequential mode

Properties

Sequence

PROPERTY Sequence : ZCore.IAxisSequencer

After the drive has been put into the sequencer mode using EnterSequenceAsync, this property can be used to chain movement or abort/blend running motions, which have been started by the Sequencer.

See ZCore.IAxisSequencer for details.

Property Value

IAxisSequencer

Methods

EnterSequenceAsync

METHOD EnterSequenceAsync (
 [input] startToken : ZCore.IStartToken)

Calling this method puts the axis into a "sequential movement" mode. Here it is possible to movement commands and control how ongoing movements are overwritten.

Example Usage

_taskToken1 : ZCore.TaskToken; // task tokens can be used to track already processed commands
// Start sequential movement modus, axis becomes busy.
_axis.Axis1.EnterSequenceAsync(THIS^);

// Chain movement commands
_axis.Axis1.Sequence.MoveAbsoluteAsync(token:=0, position:=5, speed:=5);
_axis.Axis1.Sequence.MoveRelativeAsync(token:=0,distance:=3, speed:=10);
_axis.Axis1.Sequence.MoveVelocityAsync(token:=_taskToken1, velocity:=5, mode:=AxisSequencerMode.Buffered, duration:=3);
_axis.Axis1.Sequence.MoveAbsoluteAsync(token:=0,-position:=10, speed:=3);
_axis.Axis1.Sequence.MoveCurrentAsync(token:=0, current:=5, currentRamp:=5, velocityLimitHigh := 10, velocityLimitLow := -10,
                                                 relative:=FALSE, mode:=AxisSequencerMode.Buffered, duration:=2);
_axis.Axis1.Sequence.MoveContinousAbsoluteAsync(token:=0,position:=30, speed:=5, mode:=AxisSequencerMode.Buffered, endVelocity:=6, duration:=3);
_axis.Axis1.Sequence.MoveContinousRelativeAsync(token:=0,distance:=-10, speed:=20, mode:=AxisSequencerMode.Buffered, endVelocity:= 6, duration:=3);

// Exit sequential mode, axis stays busy if the mode is not exited
_axis.Axis1.ExitSequenceAsync(token:=0);

When using the NativeMode all MoveXXXAsync operations will internal use this mode.

See AxisSequencer for details on individual commands and how mode can be used to either buffer a new move operation or interrupt an ongoing command.

Inputs

startToken IStartToken

(optional) object to check if the method was executed successfully - may be 0

ExitSequenceAsync

METHOD ExitSequenceAsync (
 [input] startToken : ZCore.IStartToken)

Exits the sequential mode, see EnterSequenceAsync.

Inputs

startToken IStartToken

(optional) object to check if the method was executed successfully - may be 0