Movement command sequencing
(Original Document)
Creating a trajectory
The creation of a trajectory is carried out by programming a series of basic movement instructions (SMOVE function). This function applies to an IODDT type variable T_STEPPER_STD. In the example shown, we declare theAXIS_0 variable of type T_STEPPER_STD.
Each basic command to execute an SMOVE function must only be done once. You must program the execution either:
The report on the execution of the function is supplied by the module, via the bits NEXT and DONE.
Memory buffer
The TSX CFY module has a mechanism that supports the sequencing of movement commands.
Each axis of the TSX CFY module includes a memory buffer that allows it to receive 2 movement commands, in addition to that which it is executing. Thus, after finishing executing the current command, it carries on immediately to the first command present in the buffer memory.
Command sequencing:
Sequencing between 2 commands
The sequencing between 2 movement commands is carried out in the following way:
For sequencing to be instantaneous, the execution time of the instruction in progress must be greater than the period of the master task.
NOTE: A new command must only be transmitted to the module if the memory buffer associated with the axis to be controlled is not full.
Bits associated with the sequencing mechanism
The bits associated with the sequencing mechanism are as follows:
Addressing
Description
NEXT (%Ir.m.c.0)
Indicates to the program user that the module is ready to receive the next movement command.
DONE (%Ir.m.c.1)
Indicates the end of the execution of the current command and the absence of a new command in the memory buffer.
AT_PNT (%Ir.m.c.8)
Indicates that the moving part has reached the point aimed for:
  • for a continuous movement, remains at 0,
  • for a movement with stop, is equivalent to NO_MOTION.
NOTE: The program must always test either the NEXT bit or the DONE bit before executing an SMOVE command.
Example
The following diagram represents the timing diagram of a sequence:
For a movement with stop: DONE switches to 1 when NO_MOTION (%Ir.m.c.7) switches to 1 and when the memory buffer is available.
For a continuous movement: DONE switches to 1 when the target position is exceeded and when the buffer memory is empty.