Jump to content
OMRON Forums

PFM configuration problem


rleoni

Recommended Posts

I'm working on the integration of SmarAct SDC2 (driver for piezo actuators) to the Power Pmac controller. 
The piezo stage has a coupled sinusoidal encoder that is used to close the position loop in the SDC2 driver. The position setpoint is performed using pulses and direction signals up to 5 MHz.

I configured the Power Pmac according to the "Setting Up Power PMAC for Pulse-and-Direction Control" section of the user manual and use "Gate3[0].Chan[0].TimerMode = 3 and Gate3[0]. Chan[0].TimerA" as feedback (I intend to use SDC2's quadrature output to confirm the position). I also set JogTA and JogTs to 0 to eliminate S-curve generation in Pmac (SDC2 performs this procedure). However, when I perform movements of a few counts, I observe that the output frequency is lower and there is an active deceleration function as shown in the images below:


image.png.a084cd689538ecc68b003b1141202c0b.pngimage.png.22277bf23e2fffa8463970b818c30c8b.pngimage.png.f331aa5d9e156e810e02982f7b9199c3.png
jog^10.

image.png.7da691320b72556df3f920bfe8e6d5fe.pngimage.png.6db0222a555950e4092036a9c75ce46c.pngimage.png.25cb90c4121a651512a04c570b2ff1bc.png
jog^100

How should I configure Pmac to generate a specific amount of pulses by the "jog=" command at a constant frequency?
SCD2.pmh

Edited by rleoni
Link to comment
Share on other sites

There is no CS configured and the AbortTa/AbortTs are also at 0.

I think the problem is the servo frequency is too low.  I tried to use the Sys.PosCtrl, but I understood that it is only used to pass a target positing to another control loop (eg macro ring).

Edited by rleoni
Link to comment
Share on other sites

'Sounds like perhaps what you are seeing may be some distortion in the PFM loop itself.

Once your clock dividers are set for your application, you may want to tune the PID loop that controls these “pulse and direction” outputs.

All the following terms will have an effect.  The manual suggests the following:

Motor[x].Servo.Kp = 40

Motor[x].Servo.Kvfb = 0

Motor[x].Servo.Kvff = 40

Motor[x].Servo.Ki = 0.001

It’s particularly sensitive to the *.Servo.Kvff setting.

Your *.pmh file has very different gain settings...(?)

Link to comment
Share on other sites

Take a look at the "Step and Direction, PFM Output" section of the Power Brick LV ARM manual. It has a PLC which can temporarily be used to select a frequency divider, as well as instructions to manually output a frequency and motor settings. I believe you should also be able to issue something like #1out50 for 50% of Fmax.

https://automation.omron.com/en/us/products/family/Brick LV

Link to comment
Share on other sites

23 hours ago, DaveBarnett said:

'Sounds like perhaps what you are seeing may be some distortion in the PFM loop itself.

Once your clock dividers are set for your application, you may want to tune the PID loop that controls these “pulse and direction” outputs.

All the following terms will have an effect.  The manual suggests the following:

Motor[x].Servo.Kp = 40

Motor[x].Servo.Kvfb = 0

Motor[x].Servo.Kvff = 40

Motor[x].Servo.Ki = 0.001

It’s particularly sensitive to the *.Servo.Kvff setting.

Your *.pmh file has very different gain settings...(?)

Thanks Dave for the feedback.

I lowered gains because they caused overshoot or oscillation.

Link to comment
Share on other sites

18 hours ago, Eric Hotchkiss said:

Take a look at the "Step and Direction, PFM Output" section of the Power Brick LV ARM manual. It has a PLC which can temporarily be used to select a frequency divider, as well as instructions to manually output a frequency and motor settings. I believe you should also be able to issue something like #1out50 for 50% of Fmax.

https://automation.omron.com/en/us/products/family/Brick LV

Thank you Eric for the information.

I've read the section and I think I'm limited by the servo's frequency for very small movements.

Is it possible to configure gate3 to disable PFM after predefined counting of pulse counts or time?

I thought of using the "Capture/Compare Interrupt Service Routine", but by my measurements I got the same 20kHz as the phase interruption.

Link to comment
Share on other sites

If you don't want to have an acceleration and deceleration process and only need a signal with a fixed frequency and a fixed number of pulses, I think it is more difficult to use PMAC to achieve.The best way is to use FPGA.

Of course, if you must use PMAC to implement, you can try to perform an AND operation through the position comparison signal (EQU) and the PFM signal.

For example, set Oo output at position 20, set Off output at position 120, and then use the out command to make the virtual axis generate pulses at a fixed frequency, and the two output signals are sent to the driver after passing through the logic AND circuit externally.

Because PMAC is a motion controller, usually used to control the motor, so the pulse output must have an acceleration and deceleration process.The bottom layer of PMAC uses spline interpolation to plan the position/time curve, so even if you set the acceleration time to 0, it will still have a servo cycle trajectory that rises according to the curve.This is unavoidable, your request is best implemented using FPGA.

Because for any object, whether it is piezoelectric ceramics (although the response is very fast) but it is better to have an acceleration process.

Edited by Sangmo
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...