Above picture show the control page for the holding tanks. Tank level gauges display the level in each tank and threshold settings will create alarms when the level goes under or over certain values. This allows automatic clearing of the tanks with a flush cycle for the black water tank.

The activity buttons are not on the page yet. Both aggregate functions and elementary functions are available.

An elementary function is a simple command to open one valve or start the pump, however the pump start will not be executed unless one valve is open. The drain valve for example will not open unless a hose is fitted to the outlet and a safety switch is activated to avoid uncontrolled spills.

An aggregate function is a combination of elementary functions, for example flushing the black water. The drain valve can remain closed and gray water from one gray water tank (or both) are pumped into the black water tank through a special spray nozzle inside the tank. The operation will stop automatically when the black water tank runs above 90% full. A warning will be generated when that happens.

Below is a very short video showing the basic animation of the drawing when an operation is performed. This video is a simulation and shows the pricipal movement of each item, like valves open and tank levels change. Once everything is connected up these animations will represent operations in real time and the tank levels will change accordingly, both in the drawing and the gauges.

Tank Display Animation

Final Display


The animation and switch logic is finished. The only thing missing is the actual sender input. The gauge positions and tank levels are not in sync on the image because of the missing data input. I will do a simulation at some point when I test the signal interface object in the application. For now this has to do.

The elementary functions do what the name says, switching elementary switches/valves. I have implemented a few constraints for safety. These are:

  • The pump can on be started when pushing the safety switch first and pushing the pump button within 5 seconds.
  • The pump will not start unless 2 valves are open to ensure flow and the pump is not pumping against a closed head.
    For example: Flush Valve open and one of the Gray Water valves – this will flush the Black Water tank until 95% full.
  • Drain valve can only open if a safety switch at the connection of the hose is closed avoiding unintended spill.
  • The pump will stop when the source tank or tanks are empty. Gray Water tank 2 will only drain to 20% because the water is used for toilet flush.
  • Pump switches off at any end condition.

The combined buttons start flush or drain processes automatically. For all drain processes the hose has to be connected and confirmed. The rest is fully automatic. The start is also secured with a safety button.

Tank levels in the diagram and the gauges are synchronised.

The only feature I have not yet implemented is a second needle for the gauges with which I can set the warning threshold in a graphical manor. At the moment this is fixed at 80% and 90%.