mbalentine Posted July 26, 2019 Share Posted July 26, 2019 I would like to use a Direct PWM drive as a single phase, variable frequency( 30~250 hz), current controlled supply. First thought is to use a 'virtual axis' with commutation as a brushed DC motor and write a sinusoid function to Motor[x].IaBias from a Motion prog, PLC©, or C. Would using a realtime PLC© have less overhead than a Motion prog? Is this the right overall approach? Any comments on how best to do this and/or considerations to keep in mind? Thank You Link to comment Share on other sites More sharing options...
curtwilson Posted July 26, 2019 Share Posted July 26, 2019 You definitely want to set this up as you would for direct PWM control of a brush DC motor. (Do you have enough inductance in the load to keep the ripple down to acceptable levels?) You could poke values into IaBias in a real-time PLC program, doing the trig to create the sinusoid of the magnitude and frequency you want. You may find it easier to have a motion program looping on full-circle moves that will automatically create the sinusoidal outputs. circle1 while (Running) { I(Magnitude) TM(1000/Frequency) } With this you could use the standard PID servo algorithm with only Kp having a non-zero output, so the commanded current is directly proportional to the commanded "position. You would have to make sure the actual position feedback is "stuck" at zero. Alternately, you could select the Sys.PosCtrl servo algorithm that directly outputs the commanded position, and this value would be used as the command into the current loop. With all methods, you have to be careful about scaling. Link to comment Share on other sites More sharing options...
mbalentine Posted July 26, 2019 Author Share Posted July 26, 2019 Thank You I should be good on inductance. Still some work to do, but I anticipate 5-15 mH. Is there any meaningful overhead penalty for doing a circle move vs sine calc? Link to comment Share on other sites More sharing options...
curtwilson Posted July 26, 2019 Share Posted July 26, 2019 I doubt you would see any significant increase in computational overhead using circle moves in a motion program. The algorithms are very efficient. Link to comment Share on other sites More sharing options...
Recommended Posts