Forum Replies Created
Yes, it seems you need to modify the gains as you suggest. Also it seems your implementation does not have Derivative action, so when you choose a model in de pidtuner app, make sure is a first order model as to make sure Derivative action is zero.
Take a look to this presentation if you want more confidence that you are doing PID tuning correctly:
The error is the setpoint (SP) minus the process output (PV). The output column must contain the process output.
Every system (process and PID) has an input and an output. That is why it can be confusing. The PID has as input the error (SP-PV), and the control variable (CV) as output. The process has the CV as input and the PV as output.
What the PID tuner need as “input” is the CV and as “output” the PV. Because it is the input and output of the process. Hope this is clearer.
Thanks for you interest, regarding your questions:
Yes it could, the PID being a linear system, could also be “indentified”. Actually you can exchange the input for the output column and viceversa, and a model will come up trying to match the controller dynamics.
But only some common process models are supported by the tool. There is no “PID model” built into the software, so you won’t be able to “recover PID gains” from data with the software as-is. It could be done, but there no common use case for that, so it is not worth development time for me.
The most common case is what is presented, model the process, then use the model to obtain good PID gains as a good starting point for tuning the control loop.
It is a common question, and source of confusion. Maybe the following FAQ document can help you clarify the input/output selection:
The program is modeling the system process, not the controller. Try not to get confused by the names of the variables for any specific implementation, what the PIDTuner considers “input” is the input to the process (output of the PID). And what the PIDTuner considers “output” is the output of the process (input to the PID).
Hope the information above makes things a little clearer.
Time is always in seconds. If your PID implementation is non-standard, you are responsible of converting the PID gains to the non-standard time frame used by your PID.
Same goes with the gains. The PID Tuner shows both Integral Gain and Integral Time because in industry either one or the other are standard. So if your PID accepts some custom transformed Integral term, you are responsible for converting it to your special PID form.
I have been working on a presentation that I will officially release soon, hopefully with a video. Maybe this will help you clarify some practical concepts:
Thank you for your interest. The identification algorithm uses this solution:
Basically consists in integrating the inputs and outputs of the system (according to the desired model order) and then solving a couple of (linear) least squares problems.
The delay in nonlinear, so given that the (linear) least squares problems are “relatively cheap”, the delay is calculated by brute force initially using a grid of values. Then refinement is made using a simple newton method.
Hope this is helpful.
I am happy you like the tool, the “Scale Gains” slider simply implements the Skogestad PID tuning rules.
Yes, they are indeed Ki, Kd and Kp, from the “parallel” or “ideal” form:
Bear in mind that in most PID implementations, the “standard form” is the most common (the one that uses Ti and Td).
Apart from minimizing disturbances in the data, and making sure time is seconds, also make sure that the data must be the exact same values that go into the PID (process output) and out of the PID (process input).
I cannot stress this more, it is a very common mistake when using the tool, the data must be exactly what would come in and out of the PID block (of course in open-loop PID is disabled, but this is just to illustrate which are the signals that are needed).
Have a good tuning!
Hi, all time must be in seconds, always. The scale of the axis must the exact same that is used to feed in and read out of the PID block that will be used in your process loop.
Hi, yes all time must be in seconds. Your input step data is definitively weird.
It seems you are not introducing an “clean” open loop step response of your process. This can clearly be seen because when your input is zero, your process is responding to something, let’s call it “unmeasured disturbance”
What is even more worrying is that before the first step, the unmeasured disturbance seem to be affecting the process with a positive slope, and after the first step, it is affecting with a negative slope. So it not a disturbance that can be de-trended.
To get a good model of your process, you need to record a “clean” open loop step (without external disturbances). If there are external forces driving your system, it will be very hard to obtain an accurate description on how your process input drives the process output.
That being said, this does not mean the pidtuner will not be useful to you. What it means is that you should be careful and realize that the simulation given by it will not be an accurate one, because of the unclean data you gave to it.
If you have no way of performing a “clean” open loop step response experiment, I would use this data, but then de-tune the gains given by the pidtuner (slider to the left) and use it as a starting point for tuning. Then increase the performance slowly until satisfactory results are obtained. This is the price of uncertainty in control.February 4, 2021 at 11:08 am in reply to: Can I somehow limit the max. amplitude in “TUNE PID” section? #69
I have been thinking of adding this option in the simulation. Will probably add it in the near future as soon as I have the time.
Regardless, as long as your PID implementation has anti-windup mechanism, the PID tuning given by the tool should give you a very good starting point in spite of the limits. Then you can just fine tune online to achieve the desired response.
Thanks for the feedback! Let me know if you have more questions.
If you really want to understand how a PID is implemented, I highly recommend you to read the following blog series:
They are short and well explained, also is the implementation used in the pidtuner tool.
Regarding the PID parameters, some PID implementations use PID gains directly (so called parallel or ideal form), other use times (so called standard form). That is why the tool provides both, then the user must use the ones that their PID requires. Read:
Hope this is helpful.
Sorry for the delay. Was offline for holidays. I tried to load your project, but the data saved seems to be the demo data. Can you please load the data again to that project and save it again? Else you can post the data here directly.
Then your test data is still incorrect, what you need is to do is:
- Wait until the process output has settled in one operating point
- Apply one single step in the process input.
- Wait until the process output settles again into another operating point.
The data you shared is not useful, because you make many small changes in the input and do not let the output settle. What we need is one single input step and record how the output settles from one stable value into another one caused by the input change.