Delta Tau GEO BRICK LV User Manual

Page of 440
Turbo PMAC User Manual 
Turbo PMAC Computational Features
 
239
 
Servo Interrupt Tasks 
Another timer register can be used to evaluate the computation load of the servo-interrupt tasks such as 
the conversion table, interpolation, position/velocity-loop closure, and data gathering.  This register, 
located at Y:$000037, holds the number of timer increments elapsed from the beginning to the end of the 
servo-interrupt tasks for the last interrupt. 
If this time plus the phase-task time is less than the time between phase interrupts (X:$37 + Y:$37 < 
X:$FFFF8C), then this is the actual time the servo tasks took.  However, if the sum of these times is 
greater than one phase cycle (X:$37 + Y:$37 > X:$FFFF8C), then the servo tasks were interrupted (at 
least once) by phase tasks, and the time for the interrupting phase tasks must be subtracted out (see 
example below). 
When the net time for the servo tasks is divided by the product of the phase-interrupt period and the 
number of phase-interrupts per servo-interrupt, the result is the duty cycle of the servo-interrupt tasks.  
Note that certain servo tasks, such as data gathering, foreground motor data reporting, and even servo-
loop closure if Ixx60 > 0, do not have to be executed every servo cycle, so the duty cycle can vary. 
Real-Time Interrupt Tasks 
Two timer registers provide information on the loading of real-time interrupt (RTI) tasks such as PLC 0, 
PLCC0, and motion-program calculations.  The first register, at X:$00000B, holds the number of timer 
increments from the beginning to the end of the RTI tasks for the last interrupt.  The second register, at 
Y:$00000B, holds the largest number of timer increments from the beginning to the end of a set of RTI 
tasks since the last power-up/reset. 
If these times plus the phase and servo-task times are less than the time between phase interrupts (X:$37 
+ Y:$37 + X/Y:$0B < X:$FFFF8C), then these are the actual times the RTI tasks took.  However, if these 
times are greater than one phase cycle (X:$37 + Y:$37 + X/Y:$0B > X:$FFFF8C), then the RTI tasks 
were interrupted (at least once) by phase tasks, and the time for the interrupting phase tasks must be 
subtracted out.  Also, if these times are greater than one servo cycle, then the RTI tasks were also 
interrupted by servo tasks (see example below). 
Dividing the latest net time for the RTI tasks by the product of the phase interrupt period, the number of 
phase interrupts per servo interrupt, and the number of servo interrupts per RTI yields the duty cycle of 
the RTI tasks.  The duty cycle for real-time interrupt tasks can vary widely within an application, so it is 
advisable to compute a running average to compute general loading. 
Total Interrupt Tasks 
The total duty cycle for Turbo PMAC interrupt tasks can be calculated by summing the duty cycles for 
the three types of interrupt tasks.  In general, it is recommended that the duty cycle for phase and servo 
tasks does not exceed 50%, and the duty cycle for all foreground tasks does not exceed 75%.  These are 
not strict limits – it is possible to exceed them, but the timing of all operations should be carefully 
evaluated if these guidelines are exceeded. 
Sample Monitoring Program 
The following sample code can be used to monitor the total interrupt-task duty cycle: 
M70->X:$FFFF8C,0,24 
; Time between phase interrupts 
M71->X:$000037,0,24 
; Time for phase tasks 
M72->Y:$000037,0,24 
; Time for servo tasks 
M73->X:$00000B,0,24 
; Time for RTI tasks 
P70=4  
 
 
; 4 phase interrupts per servo interrupt 
P76=16 
 
 
; Length of filter for averaging duty cycle 
OPEN PLC 17 CLEAR 
P71=M71/M70  
 
; Phase task duty cycle 
P69=INT((M71+M72)/M70)   
; # of times phase interrupted servo