I need to implement a self-tuning PID controller in a PLC. I know the behavior of the plant (I mean, I know that if the speed is reduced the tension gets higher and vice versa), but I do not have a mathematical model of it. Which method would you recommend?
The case is the following:
I have a system which consists of a warp beam in which a thread is wound and an AC motor to rotate the warp beam (“Process” according to the picture below). This thread should be fed at a constant tension to another machine (The whole system is a weaving machine, but I am just controlling the speed of the warp beam using a tension sensor). The motor is connected to a control motion system in which we have just to specify the speed at which the motor should rotate, so we have a PID controller to calculate the speed at which the motor should run. To measure the tension of the thread we have a tension sensor.
By the nature of the process itself, the tension on the thread has oscillations, and depends of the pattern of the woven fabric and speed. It is a “high speed” process. So we specified a target tension, which the “motor” should try to achieve, but we also specified a Max. and Min. if the tension gets out of this range the whole machine will stop.
As an example the behavior of the tension in a loom is depicted below.
Best Answer
You could identify the process transfer function by recursive least squares (or other TF estimator) operating on the real-time process input/output signals. Matlab's System Identification Toolbox has some algorithms. RLS background can be found at:
https://math.stackexchange.com/questions/631498/simple-example-of-recursive-least-squares-rls