Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

How to change the feedback signal smoothly?

I am using only one axis of my PCI-7344 controller. But I want to be able to use 3 different signals (say A, B, C) as feedback (one at a time) in my close-loop servo testing system. But the problem is, the system jumps a lot when I switch the feedback signal from one to another. This is because the change in target position and and the change in feekback signal are not sychronized. Also the SC-2062 takes time to finish the switch. This jump is untolerable for my test. Any solution? Thanks!
0 Kudos
Message 1 of 6
(3,488 Views)
The reason why your system jumps is that since the internal PID loop of the motion controller does not now of the change in feedback, when the new feedback is sent, its setpoint will probably have changed and it will automatically try to send the motor to the new setpoint, giving you the jump. One way around this that occurs to me would be to use the read encoder position together with the reset position function. What you could do would be to use the extra encoder inputs that you have on the controller to keep track of the values of the different feedback you have. Before making the change in feedback, use the read encoder function to give you a reading as close as possible to the one at the time of the change. Use the value returned by this function to change the setp
oint of the PID loop to the initial position of the new feedback, so that the change does not create such a steep jump on your system.
0 Kudos
Message 2 of 6
(3,488 Views)
Thanks algames for your reply. But that is what we are doing right now. So when I switch the feedback, I need to do 3 things: (1). use SC2062 to switch the feedback channel, (2). change the PID gains and other settings, (3). change the setpoint. I believe Item(2) and (3) are very fast, while item (1) takes time (0.1 second?).
I guess I need to find out the right sequence to do this. Or, I am just wondering, is there anyway to ask the motion controller to hold the position while I am doing these 3 steps? This is easy for open-loop systems, but what about my close-loop servo system?
0 Kudos
Message 3 of 6
(3,488 Views)
Iw ould like to get some more info on your application before giving you some alternatives. What exactly is the application doing? When you are switching between feedback devices, is your motor oving? Or does the switch happen while the motor is halted? The motion controller will only see a change in the position based on the frequency of the pulse train you are senidng it. If you were to halt your motor before switching and not noise or extra pulses are being sent to the controller, then the setpoint should be held at the momento of transition, this might also work if you are moving at a low velocity but it would depend on how fast you can switch and how clean the switching and encoder signal are.
0 Kudos
Message 4 of 6
(3,488 Views)
Thanks Algames again!

I attached a draft drawing of my servo system. Basically, I need to the piston to move vertically. It has a built-in LVDT, which has 60mm measurement range. Also I attach another LVDT to the piston, which has only 1mm range and is much more accurate. I need to use the coarse LVDT as my feedback to move the piston and load my specimen; and need to use the accurate LVDT as my feedback to perform the test. The SC-2062 is used to switch between the two LVDTs and it is controlled by my DAQ (the link was not shown in the draft). For example, by writing a 0 to the digital port, I select the coarse LVDT. By writing 1 to the ditigal port, I select the accurate LVDT.

As you may notice, the motion controller always use
ADC channel 1 as the feedback, but I can choose which LVDT to go into ADC channel 1.

I guess my system is a little bit different because I am not using step motors, I am using a servovale.

My sequence right now is: 1). disable the axis, 2). switch the feedback channel, 3). apply the new PID gains, and 4). load the new target position.

It is causing jump as I talked about in the first post.

I tried to "halt" the movement in MAX, and do the switching, the system goes unstable right away. I have to kill the motor to stop it.

Hope my situation is clear to you and there is some solution for this.
0 Kudos
Message 5 of 6
(3,488 Views)
I think that your system is going unstable at the change because at the moment when you change the feedback, the control loop still has the PID value for the previous feedback. What you can try doing is the following. Just before coming to the place where your feedback will change, halt the axis. Load a very low value for KP (for example 20) and set all of the other gains to 0, the purpose of this is to esnure that for the brief amopunt of time it takes to switch the feedback devices, the system will not go unstable. Once the feeback has cnahged, load the new set of PID gains, this should minimize the jumps and osicllations you are seeing.
0 Kudos
Message 6 of 6
(3,488 Views)