User's Manual
PMAC2A PC104 Hardware Reference Manual
Software Setup 17
Since the PMAC2PC104 uses standard PMAC2 firmware the following I-variables must be set properly
to use the digital-to-analog (filtered DAC) outputs:
I900 = 1001 ; PWM frequency 29.4kHz, PWM 1-4
I901 = 5 ; Phase Clock 9.8059kHz
I902 = 3 ; Servo frequency 2.451kHz
I903 = 1746 ; ADC frequency
I906 = 1001 ; PWM frequency 29.4kHz, PWM 5-8
I907 = 1746 ; ADC frequency
I9n6 = 0 ; Output mode: PWM
Ix69 = 1001 ; DAC limit 10Vdc
I10 = 3421867 ; Servo interrupt time
n = channel number from 1 to 8
x = motor number from 1 to 8
Parameters to Set up Global Hardware Signals
I900
I900 determines the frequency of the MaxPhase clock signal from which the actual phase clock
signal is derived. It also determines the PWM cycle frequency for Channels 1 to 4. This variable
is set according to the equation:
I900 = INT[117,964.8/(4*PWMFreq(KHz)) - 1]
The PMAC2 PC/104 filtered PWM circuits were optimized for 30KHz. I900 should be set to
1088 (calculated as 27.06856KHz)
I901
I901 determines how the actual phase clock is generated from the MaxPhase clock, using the
equation:
PhaseFreq(kHz) = MaxPhaseFreq(kHz)/(I901+1)
I901 is an integer value with a range of 0 to 15, permitting a division range of 1 to 16. Typically,
the phase clock frequency is in the range of 8 kHz to 12 kHz. 9KHz is standard, set I901 = 5
(calculated as 9.02285 KHz).
I902
I902 determines how the servo clock is generated from the phase clock, using the equation:
ServoFreq(KHz) = PhaseFreq(KHz)/(I902+1)
I902 is an integer value with a range of 0 to 15, permitting a division range of 1 to 16. On the
servo update, which occurs once per servo clock cycle, PMAC2 updates commanded position
(interpolates) and closes the position/velocity servo loop for all active motors, whether or not
commutation and/or a digital current loop is closed by PMAC2. Typical servo clock frequencies
are 1 to 4 kHz. The PMAC standard is 2.26 KHz, set I902 = 3 (calculated as 2.25571 KHz).
I10 tells the PMAC2 interpolation routines how much time there is between servo clock cycles. It
must be changed any time I900, I901, or I902 is changed. I10 can be set according to the
formula:
I10 = (2*I900+3)(I901+1)(I902+1)*640/9
I10 should be set to 3718827.