This is my first post in here, so if I am doing something wrong, please pardon me and help me to fix my wrongs.
I have an application which I am using to control a servo-hydraulic actuator with a position sensor (located inside the actuator) feedback. My sine-generation and PID control loops are running in the FPGA part of the code and I can modify their parameters from a user interface communicating with the real-time target.
When I run a sine wave on my actuator, it actually catches the target signal with a little bit PID tuning. However, especially in high frequencies, it needs more effort the arrange the PID gains.
So, I want to accomplish to modify the target signal with respect to the sensor feedback to catch the original target signal without changing the PID parameters. In more details, let's say for example, I need to run a sine wave with an amplitude of 10mm, and my position sensor gives me 5mm as feedback. So maybe, I need a modification to increase my initial target from 10mm to 20mm and my position sensor gives me the desired 10mm as a feedback (Numbers can change in real world application). Actually, I think it is clear in my mind in theory, however I could not have been successful after so many tries.
To sum up, without losing my target signal (this is important for the comparison of the desired and the modified target signal in run-time, I think), I want to modify its amplitude with respect to the sensor's feedback to catch my initial target signal on a servo-hydraulic actuator.
I hope this is clear, and I really hope somebody among this community can help me, because I am really helpless after so many tries on my own.
You want to implement a PID controller in parallel to an existing PID controller instead of modifying the parameters for the already existing PID controller?
That sounds backward, inefficient and just plain wrong. Why not just utilise the parameters for the already-existing PID controller?
Have you done a proper tuning of your PID parameters (using Ziegler-Nichols or another common method), or are you just making guesses? I suspect that if you tuned your PID properly it would work across the whole range you need to cover, although it's possible that your system response is weird in some way that requires different PID gains at different points. Have you considered adding a feed-foward element to your control based on the desired sine wave amplitude?
aosaris: If I'm understanding you correctly, what you are asking for is called command feedforward in controls jargon. The idea is to take your target command and feed it around your PID blocks, which will provide greatly improved command tracking compared to PID alone. The implementation of this feedforward signal depends on the physical system you are controlling.
One common way of acheiving command feedforward is to invert the model of your physical system and apply your target (command) to this inverted model. The output will be a signal you can feed forward around the PID block directly to your actuator. This greatly improves command tracking at lower and higher frequencies without requiring you to crank up your PID gains. Let the PID block provide disturbance rejection, it isn't really good for much else.
Here is a link that provides a brief technical explanation: http://www.me.metu.edu.tr/courses/me534/protected/ME%20534%20-%2004%20Controller%20Design%20III%20(r...
Actually that's not the case I am looking for. We have a controller of a very well known company in Europe and this controller makes amplitude compensation as I described in my question without changing the PID parameters. And its results are very successful. Now I am trying to implement such kind of a control algorithm, however I could not achieve after so many trials.
Maybe I can implement an auto tuning for PID parameters, but I fear that this method can make the actuator unstable during the autotuning.
Thanks for your reply. Actually, we are controlling so many servo-hydraulic actuators, so I have a little bit experience (dealing with them for almost 6 years now) how to set up PID parameters, so we are doing trial and error method at this point. This system I am working on will be sold to a customer, so they do not have such an experience yet I am having difficulties especially on high frequencies to set up the PID parameters. So, amplitude compensation would be more practical to run for our customer.
I will think and try to work on feed-forward control as you mentioned.
Thank you for your reply. Nathand also mentioned about feedforward control as you did. I will read the link you have sent, however I do not have the model of my physical system nor do I know how to achieve it.
Anyway, let me look the link you provided first as it seems feedforward control is the most logical thing to do in this case.