Jump to content
OMRON Forums

MaxDac on Pfm output


Recommended Posts



I am currently using a PowerPMAC to control an amplifier with pulse and direction signals. My amplifier allows a maximum input frequency for pulses of 800kHz.


I set Gate3[0].PfmClockDiv to 5 in order to have a PfmClock of 3.125MHz.

I also set Gate3[0].Chan[0].PfmWidth to 5, which makes my pulses 5/3.125 = 1.6µs.

The problem is I don't know what value to set for Motor[1].MaxDac in order to limit my pulses output to 800kHz.


What I did for now is observe pulses on an oscilloscope and adjust MaxDac value so that "#1 out 100" command gives me 800Khz, #1 out 50" command gives me 400Khz etc...

I found that Motor[1].MaxDac = 10 000 fits what I want but I would like to understand where this value comes from.




Best Regards,


Link to comment
Share on other sites

  • 3 weeks later...
  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

In the SW Reference Manual, under the description for the output register Gate3.Chan[j].Pfm, it gives the formula for the output frequency as:


Fout = (Gate3.Chan[j].Pfm / 4,294,483,648) * Fpfmclk


This treats the Pfm element as a full 32-bit register. The servo algorithm only considers the high 16 bits to be integer values, so the effective formula becomes:


Fout = (ServoCmd / 65,536) * Fpfmclk


With your PfmClock frequency of 3.125 MHz (3125 kHz), a servo command of 10,000 would produce:


Fout = (10,000 / 65,536) * 3125 = 476.9 kHz


This is exactly what my system produces in this setting.


Note that a pulse width of 1.6 usec cannot support a frequency of 800 kHz, as it would always saturate by 667 kHz. I would set the PfmWidth to 2 for a 0.64 usec pulse width, which would be about 50% duty cycle at 800 kHz.

Link to comment
Share on other sites

This topic is now closed to further replies.

  • Create New...