With this example the controller of a tank filling/emptying
system is demonstrated. This example is from Dressler (2004), see
Literature
which in turn is based on an example model from Karl Erk Arzen of
JGraphCharts.
The basic operation is to fill and empty the two tanks:
- Valve 1 is opened and tank 1 is filled.
- When tank 1 reaches its fill level limit, valve 1 is
closed.
- After a waiting time, valve 2 is opened and the fluid flows
from tank 1 into tank 2.
- When tank 1 is empty, valve 2 is closed.
- After a waiting time, valve 3 is opened and the fluid flows out
of tank 2
- When tank 2 is empty, valve 3 is closed
The above "normal" operation can be influenced by three
buttons:
- Button start starts the above process. When this button
is pressed after a "stop" or "shut" operation, the process
operation continues.
- Button stop stops the above process by closing all
valves. Then, the controller waits for further input (either
"start" or "shut" operation).
- Button shut is used to shutdown the process, by emptying
at once both tanks. When this is achieved, the process goes back to
its start configuration. Clicking on "start", restarts the
process.
The tank controller has some safeguards to prevent the tanks to
overflow even if there are errors in the control system:
- Valve 1 is closed in any case, if the fill level of tank 1 is
1.01*fill limit.
- Valve 2 is closed in any case, if the fill level of tank 2 is
1.01*fill limit.
The default simulation time is 900 s. The result can be
animated. For this, set in Dymola in the command window:
"animationSpeed(speed = 50)".
Generated at 2026-04-06T18:18:36Z by OpenModelicaOpenModelica 1.26.3 using
GenerateDoc.mos