rleoni Posted January 26, 2023 Posted January 26, 2023 (edited) 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: jog^10. 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 January 26, 2023 by rleoni Quote
leandro.martins Posted January 26, 2023 Posted January 26, 2023 (edited) Just a guess, is the motor in a CS? Is there any different TA/TS configured in some motion program? Is the Motor[x].AbortTa/AbortTs also 0? Edited January 26, 2023 by leandro.martins Quote
rleoni Posted January 26, 2023 Author Posted January 26, 2023 (edited) 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 January 26, 2023 by rleoni Quote
DaveBarnett Posted January 26, 2023 Posted January 26, 2023 '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...(?) Quote
Omron Forums Support Posted January 27, 2023 Posted January 27, 2023 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 Quote
rleoni Posted January 27, 2023 Author Posted January 27, 2023 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. Quote
rleoni Posted January 27, 2023 Author Posted January 27, 2023 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. Quote
Sangmo Posted January 30, 2023 Posted January 30, 2023 (edited) 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 January 30, 2023 by Sangmo 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.