# Problem

How can I model controls that cycle between multiple pumps? Meaning, based on the same set of on and off conditions, the first time the condition occurs to turn on a pump, the first pump turns on, and the next time the same condition occurs, a second, different pump turns on instead, and so on.

# Solution

First, consider if it is hydraulically relevant to the design and decision-making. Meaning, if for example the two pumps are in parallel and have the same pump curve, you could simply use controls on one pump and achieve the correct hydraulic results, without having to add additional complexity to the model.

If cycling between different pumps is necessary, there are two possible solutions - manually set up time-based controls, or use a fictitious pipe as a control variable to construct the control logic. Both methods are described below.

## Option 1: Time-Based Controls

One option is to set up controls based on clock time or time from start. With this approach, you won't be able to have conditions based on other things like tank HGL. For example:

The two simple controls take care of the initial (time zero) conditions and then the other two controls with composite control conditions swap the pump status every 24 hours.

Here is the graph of flow through pumps with, one pump running for 24 hrs, then the other.

## Option 2: Controls based on hydraulic conditions

Another way of modeling cycling pumps using logical controls is to use a variable based on the status of a fictitious pipe. An example model is available below to demonstrate this concept, which was created in WaterGEMS/WaterCAD version 08.11.02.31. To open this model, you will need to be using this version or a newer version (including CONNECT Edition)

In order for the cycling to work, you will need a fictitious pipe as a control variable. This pipe will open and closed based on the controls and will help govern which pump is open to supply the demands and fill the tank downstream of the pumps (or any other condition). Assume that the condition is based on a tank called T-1, the pumps are called PMP-1 and PMP-2, and the fictitious pipes are called Control Pipe and Fake Pipe. Fake Pipe is only there to help avoid "system disconnection" user notifications; Fake Pipe will be left open at all times. See the image below for the general setup:

If you want the Pump-1 to supply the tank first, Pump-2 will be off and Control Pipe will be closed. Then set up the controls to say:

IF (T-1 HGL<xxx) and (Control Pipe Status = Closed), THEN (PMP-1 status = On)

To turn off Pump-1:

IF (T-1 HGL>xxx) and (PMP-1 Status = On), THEN (PMP-1 status = Off) and (Control Pipe Status = Open)

Then for Pump-2 to supply the tank:

IF (T-1 HGL<xxx) and (Control Pipe Status = Open), THEN (PMP-2 status = On)

To turn off Pump-2:

IF (T-1 HGL>xxx) and (PMP-2 status = On), THEN (PMP-2 status = Off) and (control Pipe Status = Closed)

Note that this workflow could be used with the GVF-Convex (SewerCAD) solver as well, available in SewerCAD and SewerGEMS. The sample model below is not compatible with SewerCAD.

## What if I need to cycle between more than two pumps?

If you need to cycle between three or more pumps, you can extend the same general concept, using two or more fictitious pipes in order to have multiple combinations of open and closed, to determine which pump should turn on next. Here is a shortened example of cycling between three pumps:

• If On_condition occurs, controlpipe1 is closed and controlpipe2 is closed then turn on pump1
• If On_condition occurs, controlpipe1 is closed and controlpipe2 is open then turn on pump2
• If On_condition occurs, controlpipe1 is open and controlpipe2 is open then turn on pump3

• If Off_condition occurs and pump1 is on, then turn pump1 off and open controlpipe2
• If Off_condition occurs and pump2 is on, then turn pump2 off and open controlpipe1
• If Off_condition occurs and pump3 is on, then turn pump3 off and close controlpipe1 and controlpipe2

# Model Files

Cycling between Pumps - WaterGEMS model