08-31-2018 03:29 AM
Hi everyone,
I made a temperature control program in labview and used the PID.vi for that.
The input to the PID is the temperature measured by a thermocouple and the output is a voltage that controls the power supply for a heating element.If I set a setpoint, the program even begins to regulate.
However, the problem now is that the output of the PID.vi remains at 100% of the heating power,so at the maximum voltage, until reaching the setpoint and only then begins to regulate down. Therefore, the temperature still rises to + 5 ° C above the setpoint and then oscillates around the setpoint with this deviation.
I've already tried a P controller by setting the I and D parts to false, but got the same result.
08-31-2018 05:44 AM - edited 08-31-2018 05:45 AM
Hi magic,
So what am I doing wrong?
- you don't attach your VI.
- you don't supply any "hard " data (like temperatue curves, used PID gains, any Ziegler-Nichols experimental data, …)
I've already tried a P controller by setting the I and D parts to false, but got the same result.
Using just the P gain will not avoid overshoot…
I have no experience with PID regulation
Read a book on control mechanism.
Or Wikipedia. Yes, really. Apply Ziegler-Nichols or any other suitable method!
08-31-2018 07:09 AM
Open the LabVIEW Example Finder and search for Autotuning Smith Predictor.
The example code uses a simulated "Plant" for responses, but the code can be easily adapted to actual IO. I just did this last week for an application that had a blower and flow meter that were separated by a long distance. There was that issue of "deadtime" to overcome.
Google Smith Predictor and have a read.
08-31-2018 11:40 AM
Based on basic PID operations, if the temperature overshoots on the way up then your P factor is way too high. If the temperature oscillates around the setpoint then your I factor is too low. The D factor is mostly used for mechanical systems. Adjust each factor one at a time by 50% and repeat.
09-07-2018 06:48 AM - edited 09-07-2018 06:50 AM
@GerdW wrote:
Hi magic,
So what am I doing wrong?
- you don't attach your VI.
- you don't supply any "hard " data (like temperatue curves, used PID gains, any Ziegler-Nichols experimental data, …)
I've already tried a P controller by setting the I and D parts to false, but got the same result.
Using just the P gain will not avoid overshoot…
I have no experience with PID regulation
Read a book on control mechanism.
Or Wikipedia. Yes, really. Apply Ziegler-Nichols or any other suitable method!
Sorry, I forgot to attach my VI.
Since I've already read some of your comments on PID, I knew that you generally recommend that and it is a good advice. Therefore, I have already read the article on it in Wikipedia.
I should add, that I use a NI USB-6008 and the DAQ Assistant for temperature input and voltage output.
So far, I have tried different Kc values between 0 and 100. I tested Ti with 0.01 (and also inf) and I constantly set Td to 0. I got the same result every time.
Probably it would make sense to try Ziegler-Nichols next.
09-17-2018 03:15 PM
There is nothing wrong with your code. Here are 4 suggestions to troubleshoot: