xiaomupeng2009 Posted April 28, 2011 Posted April 28, 2011 Can the PMAC adjust PID parameters for itself? it is to say the PMAC can adjust the PID parameters according to the different movement ? it not need manual adjustment!
Omron Forums Support Posted April 28, 2011 Posted April 28, 2011 Xiaomupeng, There is no automatic self-adjustment algorithm in the Turbo PMAC firmware, such as adaptive control. In contrast, Power PMAC does have such an adaptive control algorithm in firmware. However, if you have enough controls knowledge, you can implement your own PLC program to change your controller (PID) gains dynamically. Some PMAC-users use the technique "gain scheduling," some use "adaptive control," etc. The PLC would just modify the gains depending on the "state" or situation the PMAC is encountering. You can also use the "User-Written Servo Algorithms" in an unused motor whose number precedes the motor whose gains you want to vary. This user algorithm can read inputs and vary the gains of subsequent motors at the servo rate. See page 169 of the Turbo PMAC User Manual. What specifically do you need to do for your application? If you give us more specific details, we can help you better.
xiaomupeng2009 Posted May 7, 2011 Author Posted May 7, 2011 Xiaomupeng, There is no automatic self-adjustment algorithm in the Turbo PMAC firmware, such as adaptive control. In contrast, Power PMAC does have such an adaptive control algorithm in firmware. However, if you have enough controls knowledge, you can implement your own PLC program to change your controller (PID) gains dynamically. Some PMAC-users use the technique "gain scheduling," some use "adaptive control," etc. The PLC would just modify the gains depending on the "state" or situation the PMAC is encountering. You can also use the "User-Written Servo Algorithms" in an unused motor whose number precedes the motor whose gains you want to vary. This user algorithm can read inputs and vary the gains of subsequent motors at the servo rate. See page 169 of the Turbo PMAC User Manual. What specifically do you need to do for your application? If you give us more specific details, we can help you better. i want to use the turbo PMAC to control the linear motor,but influence of the load is different in different time, it is to say different situations have different PID parameters, so i want the PMAC can turning the PID parameters in itself! thank you ! the PLC program can edit the pmac adaptive control algorithm ? I have used the PLC to change the PID parameters before,but the pid parameters is have adjusted by myself ,then i use the PLC program to change the PID parameters!!! thank charles very much!!!
Omron Forums Support Posted May 9, 2011 Posted May 9, 2011 Turbo PMAC does NOT have adaptive control. If you want to use it, you will have to write your own, either using Open Servo or by modifying the gains of the default servo algorithm using a PLC. Using Open Servo is only recommended if you are a very experienced user of PMAC, and have experience with control design. Here is an example of how to perform gain scheduling (not adaptive control) in a PLC. Using motor 1, the PLC will set a specific middle range for Kp (Ixx30) while the motor's position is between -10000 and 10000 counts. When the motor's position goes above 10000 cts, Kp doubles. If the motor's position goes below -10000 cts, Kp halves: M162->D:$00008B ; #1 Actual position (1/[ixx08*32] cts) #define Mtr1ActPos M162 #define Mtr1PosSF I108*32 #define Mtr1ActPosScaled P1000 #define Latch P1001 #define Mtr1Kp I130 Latch=0 I5=3 ; Enable background and foreground PLCs to run I8=0 ; Set Real Time Interrupt rate equal to Servo Rate End Gat Del Gat Close Open PLCC0 Clear Mtr1ActPosScaled=Mtr1ActPos/(Mtr1PosSF) ; Compute motor 1 actual position in counts If(Mtr1ActPosScaled<10000 AND Mtr1ActPosScaled >-10000) ; If motor 1 between -10000 and 10000 counts Mtr1Kp=446782 ; Set Kp to middle range Latch=0 ; Set latch low EndIf If(Mtr1ActPosScaled!<10000 AND Latch=0) ; If motor 1 goes beyond 10000 counts Mtr1Kp=Mtr1Kp*2 ; Double Kp gain Latch=1 ; Set latch high EndIf If(Mtr1ActPosScaled!>-10000 AND Latch=0) ; If motor 1 goes below -10000 counts Mtr1Kp=Mtr1Kp/2 ; Divide Kp by two Latch=1 ; Set latch high EndIf Close
xiaomupeng2009 Posted June 28, 2011 Author Posted June 28, 2011 If I want to detect the change of the load of the linear motor,for example ,i want to detect the velocity,I can use the M parameters to visit the register,then i can change the PID parameters according to different velocitys. but how can i know the change of the load and how to detect the change of the load? thank you?
Omron Forums Support Posted June 28, 2011 Posted June 28, 2011 There are a number of sensors available for load detection. For example, you can try using a "load cell" or a "strain gauge". Try googling those sensors. http://www.omega.com/ has some great documentation on how strain gauges work for reference. If you do not want to add another sensor, you can detect a change in load by monitoring the following error. If at one point in your motion your following error spikes greatly and then remains much larger than normal, you may have experienced a change in load, because your servo loop is no longer able to minimize the following error like it was doing before the load changed.
Brian Posted June 28, 2011 Posted June 28, 2011 The drive signal to your amplifier is directly proportional to load, if you have a torque-mode amplifier.
Omron Forums Support Posted July 7, 2011 Posted July 7, 2011 Xiaomepeng, Although almost all linear motors have high frequency dynamics, you may assume it as rigid body i.e. (ma=u(t)) If the load is changing in time, the simplest thing to estimate the mass (to be more precise the overall gain of the system in terms of dac bits/s^2) is to divide control input to acceleration. A better way is of course using least square estimation to average out the effects of measurement noise. In terms of implementation you should be aware of the drawbacks of adaptive control. There are means to robustify adaptive control laws (forgetting factor and dead zone). This is not a place that I can go on the details of adaptive control theory, see Applied Nonlinear Control by Slotine, Petros Ioannou's book, etc.
xiaomupeng2009 Posted September 27, 2011 Author Posted September 27, 2011 Brain,can you tell me how to detect the drive signal in the pmac?
JeffLowe Posted September 27, 2011 Posted September 27, 2011 Brain,can you tell me how to detect the drive signal in the pmac? If you use the recommended M variable setup, this would be Mx68, Filter Output. You will need to scale the +/- 32767 output to with the tranconductance gain of your amplifier and your motor force constant. Execute a constant acceleration move and observe the value.
Recommended Posts