Delta Tau GEO BRICK LV User Manual

Page of 440
Turbo PMAC User Manual 
Writing and Executing Motion Programs
 
339
 
How PMAC Executes a Motion Program 
It can be important to know how Turbo PMAC works its way through a motion program.  A motion 
program differs fundamentally from a typical high-level computer program in that it has statements 
(moves, DWELLs, and DELAYs) that take time; there is an important difference between the calculation 
time and the execution time. 
Basically, a Turbo PMAC program exists to pass data to the trajectory generator routines that compute the 
series of commanded positions for the motors every servo cycle.  The motion program must be working 
ahead of the actual commanded move to keep the trajectory generators fed with data.  If the program fails 
to keep ahead, and the time for the next move comes without the proper data in place for the trajectory 
generators, Turbo PMAC will abort the program and bring all motors in the coordinate system to a stop. 
Calculating Ahead 
PMAC processes program lines either one or two moves (including DWELLs and DELAYs) ahead.  
Calculating one move ahead is necessary in order to be able to blend moves together; calculating a second 
move ahead is necessary if proper acceleration and velocity limiting is to be done, or a three-point spline 
is to be calculated (SPLINE mode).  For linear blended moves with Isx13 (move segmentation time) 
equal to zero (disabled), Turbo PMAC calculates two moves ahead, because the velocity and acceleration 
limits are enabled here.  With the special lookahead buffer enabled, Turbo PMAC looks enough moves 
ahead in a continuous sequence to stay Isx20 segments ahead.  In all other cases, Turbo PMAC is 
calculating one move ahead. 
Starting Calculations 
Upon the command to start the program, Turbo PMAC will calculate program statements down to and 
including the first or second move statement, depending on the mode of the move and the setting of 
Isx13.  This can include multiple modal statements, calculation statements, and logical control statements.  
The programmed moves will not actually start executing until I11 milliseconds have passed, even if the 
calculations were finished earlier.  This permits proper synchronization between cards, so one will not 
start before the other.  If I11 is set to zero, the first move will start as soon as the calculations have 
finished.