File Exchange

image thumbnail

Temperature Control of a Water Tank

version 1.0 (11.6 KB) by

Uses P, PI and PID control to raise water tank temperature to 80°C.



No License

We would like to rise water temperature with a heater. Oulet temperature must be equal to the set point temperature (80°C). Proportional (P), Proportional-Integral (PI) and Proportional-Integral-Derivative (PID) control are used and the respective results are compared. Inlet water temperature is equal to 20°C. Water flow is equal to 10 m3/hr. Tank volume is equal to 100 m3. Water density and heat capacity are 1 Kg/m3 and 4.19 KJ/(Kg °C). The heater and the temperature measurement device have a first order delay with a time constant equal to respectively TauQ and TauSens. Initial heat input and tank temperature are equal to 2500 KJ/hr and 20°C. This problem is solved using Berkeley-Madonna in Chemical Engineering Dynamics by J. Ingham et al. (second edition, Wiley-VCH, 2000). The solution using MatLab is present in this page. Sensor temperature lags slightly behind tank temperature. P control gives a small characteristic offset, PI control shows oscillations and PID control gives best control with no offset and quickly damped oscillations.

A similar program using Mathematica 6.0 is available at the following link:

Please also visit an earlier version using Mathematica 5.0 available at the Wolfram Library Archive:

Comments and Ratings (17)

iwan 68=996

very good example for me as an undergraduate student

Nguyen Tu Cuong

To study

Nguyen Tu Cuong

Bouzid montasser

Mauricio Torres

Abdelkrim Merzougui

merci pour votre travail

Michael Peters

This script does offer no help to student's. Sorry.

Rolando fred

hey, I'm a student from the university of cape town and i have to agree with John D'Errico, this script does offer no help to student's

Juan Perez

Cuidado, contiene errores.

Andres Weston

The PID contain an error. I also agree with Le about the derivative term of the PID. It is not right, because you need the derivative or trend of the error, not to subtract just the states. That can be easily corrected. Other minor thing is that the control action is not written in the conventional way.

John D'Errico

These scripts offer no enhancement to the use of matlab. They contain no documentation. There are no inputs, no outputs except for simple plots. If these scripts are to be of any value to a student, they should attempt to teach their topic. These fail miserably in that task. If the plots that result are of any value at all, then they belong on a private website maintained by the author.

Se Le

Dear Houssam,
I don't think that the third term of your PID (the differential) must be proportionnal to (x(1)-x(3)). Basically, the differential term is proportional to the error's variation, so propostionnal to d(error)/dt . If you want to discretize, it gives[(TRset-x(3)_t ) - (TRset -x(3)_t-1)]/timestep.

vicente zuñiga

please help me, I would like to know more about your topic, how can I contact you?

This topic is very interesting for me because I am finishing my college.

Please write me.


please help me, I would like to know more about your topic, how can I contact you?

thanks a lot

antoni pascual


added link to the Wolfram demonstration project

MATLAB Release
MATLAB 6.0 (R12)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video