# PID control VI

5 replies to this topic

### #1 alexb

alexb

• Members
• 8 posts
• Version:LabVIEW 8.0
• Since:2007

Posted 23 September 2009 - 11:55 AM

hey guys,
I need your help. I'm working on a project - level control in a tank with water.
I suppose to control the level of the water , for example - the user can choose the height he wants the water to fill the tank , and a pump starts to pour water into the tank.

I work with the PID VI. The user can choose how to control the water with the controllers - P , Pi , Pd or the combined PID.

For example , the P control works like the equation m=P*e
m - stands for the strengh of the water pumping
e - stands for the error - difference between the height I want , and the height found in the tank.
p - is a constant

As bigger the difference between the wanted height and the found height , as stronger the strengh of the pumping.

While the tank is being filled , the pumping suppose to get wicker until it stops.

This algorithm that I wrote shows :
The user chooses the set point - the height he wants.

The DAQ measures the height - (height * 100) / wanted height --> gives us the error.
But , while the tank is being filled , and the error is getting smaller , the pumping strengh stays the same.

P.S

I didn't use the entrance that called Process Variable in the PID VI. That's where I suppose to attach the "error". But when I do that the pump stops working.

It's my final project and I'm desperate.

### #2 ned

ned

Extremely Active

• Members
• 473 posts
• Location:Emeryville, CA
• Version:LabVIEW 2012
• Since:1999

Posted 23 September 2009 - 12:24 PM

I didn't use the entrance that called Process Variable in the PID VI. That's where I suppose to attach the "error". But when I do that the pump stops working.

You haven't understood how PID works at all. You MUST use the Process Variable input; in your case it's the measured height of liquid in the tank. The PID VI calculates the error internally by finding the difference between the Process Variable and the Setpoint.

### #3 alexb

alexb

• Members
• 8 posts
• Version:LabVIEW 8.0
• Since:2007

Posted 23 September 2009 - 01:03 PM

You haven't understood how PID works at all. You MUST use the Process Variable input; in your case it's the measured height of liquid in the tank. The PID VI calculates the error internally by finding the difference between the Process Variable and the Setpoint.

I understand that , but when I use this input. The Pump stops working.
I shows that the pump works on -2 volts. Very weird.
Is there something that I'm missing ? maybe I suppose to inverse the input in the Pump when I work with the PID VI ?

### #4 viSci

viSci

Extremely Active

• 335 posts
• Version:LabVIEW 2013
• Since:1998

Posted 23 September 2009 - 01:25 PM

Try converting all inputs (level) and outputs pump speed to %, there are egu to % and % to egu vi's for this purpose.
also make sure you understand if you are forward or reverse acting. In other words, what is ther relationshiop between input and output. If it is reverse acting then make you PID k gain negative.

### #5 alexb

alexb

• Members
• 8 posts
• Version:LabVIEW 8.0
• Since:2007

Posted 23 September 2009 - 02:48 PM

Try converting all inputs (level) and outputs pump speed to %, there are egu to % and % to egu vi's for this purpose.
also make sure you understand if you are forward or reverse acting. In other words, what is ther relationshiop between input and output. If it is reverse acting then make you PID k gain negative.

### #6 ned

ned

Extremely Active

• Members
• 473 posts
• Location:Emeryville, CA
• Version:LabVIEW 2012
• Since:1999

Posted 23 September 2009 - 06:03 PM