Using Fewer Controllers in TPD
When TPD systems are customised to meet a specification, it is sometimes tempting to add a new controller to the system to accommodate each requirement of the specification. This approach can cause clutter, system instability, and results which are difficult to interpret. In many cases where multiple controllers are used, there are redundant controllers which serve no purpose, and controllers whose operation can be replaced by editing the component properties directly, leading to a more stable simulation.
For a detailed discussion of the correct use of controllers, and an explanation of the controller types talked about below, please see our online Controller Guide:
https://docs.edsl.net/tpd/Controllers/StandardController.html
In this example we will consider a simple system. There is a zone with a fancoil unit, and mechanical supply and extract. There are heating and cooling coils to condition the supply air, plus heat recovery and a pre-heat coil for very cold weather.
Now we will consider the control requirements.
The cooling coil will be activated if the external air temperature exceeds 19°C, and it will cool the supply air to 14°C.
The heating coil will be activated if the external air temperature falls below 15°C, and it will heat the supply air to 20°C.
The heat recovery unit will attempt to warm the supply air to 20°C when the heating coil is used, and attempt to cool the supply air to 14°C when the cooling coil is used, if possible.
The pre-heat coil will warm incoming air to 5°C when the external air temperature falls below 5°C.
The image below shows how the resulting system might look if we tried to achieve this by using controllers.
The operation of each controller is explained below; this section is merely for illustration, in the rest of the blog post we will see how the controllers are reduced.
A: Sends a signal of 1 when the external air temperature is below 15°C. The heating coil has a maximum offcoil temperature of 20°C.
B: Sends a signal of 1 when the external air temperature rises above 19°C. The cooling coil has a minimum offcoil temperature of 14°C.
C: Sends the maximum of the heating and cooling signals to the heat recovery unit.
D: Sends a heating signal to the heat recovery unit if it receives signals from both A and E.
E: Ensures the heat recovery unit does not over-heat by sending a signal of zero when the air temperature onto the heating coil is 20°C or above.
F: Sends a cooling signal to the heat recovery unit if it receives signals from B, G, and H.
G: Ensures the heat recovery unit does not over-cool by sending a signal of zero when the air temperature onto the cooling coil is 14°C or lower.
H: A difference controller which monitors the two air temperatures entering the heat recovery unit to check whether cool air recovery is possible.
I: Sends a heating signal to the pre-heat coil if it receives signals from both J and K.
J: Checks whether the external air temperature is below 5°C.
K: Checks that the temperature leaving the pre-heat coil does not exceed 5°C.
11 controllers are used in total, but it could have been worse; if the cooling and heating coil had setups similar to the pre-heat coil then they would each require another two controllers, making 15.
This particular setup will probably simulate and work as intended for most hours of the year, especially in this case with only a single zone. Nonetheless this approach is not generally desirable or recommended.
The first two problems are obvious:
* Visual clutter and confusion.
* Great care required with inputs for each controller, correct ordering of wires, etc.
Further problems often become apparent after simulation is attempted:
* Numerous simulation events caused by failure to iterate to a stable solution, especially in multi-zone systems.
* Difficulty in diagnosing simulation problems when the multiple controller signals have to be checked.
* System instability and confusion caused by controllers make results difficult to interpret and cast doubt on their validity.
Let’s see what can be done to reduce the number of controllers used.
For starters, the difference controller H is redundant and serves no purpose. This will send a signal to F if the return air from the zone is lower than the external air temperature. Under such conditions, controller B will also be sending a signal to F, rendering controller H pointless.
Next, we consider the cooling coil. We can make use of profile modifiers instead of using a controller.
Profile modifiers usually give very stable behaviour in a simulation compared to controllers.
We want to deactivate the component when the external air temperature is below 19°C. We can achieve this with a profile modifier based on external air temperature. We could put this modifier on the cooling coil duty (duty goes to zero when outdoor air is too cold) or the setpoint (setpoint goes to 150°C when outdoor air is too cold). The image on the right shows one possible setup, with a modifier applied to the setpoint.
If we apply a similar modifier to the heating coil (dropping heating coil setpoint when the outdoor air is too warm) then the cooling and heating coil can be disconnected from controllers B and A respectively.
Let’s return to the heat recovery unit and remember what was specified for the controls:
“The heat recovery unit will attempt to warm the supply air to 20°C when the heating coil is used, and attempt to cool the supply air to 14°C when the cooling coil is used, if possible.”
These setpoints and controls match what is required from the coils. If the coils are conditioning the supply air, the heat recovery unit should try to match this temperature. If the coils are not conditioning the supply air, the heat recovery is not required.
There is a very simple way to achieve this; a setpoint passthrough controller can be placed after both coils. The air temperature here becomes the heat exchanger’s setpoint.
We have to add a new controller but we can delete seven, for a net reduction of six controllers.
It’s time to turn our attention to the pre-heat coil. First, a quick reminder of the specification and the controls currently in place.
“The pre-heat coil will warm incoming air to 5°C when the external air temperature falls below 5°C.”
“I: Sends a heating signal to the pre-heat coil if it receives signals from both J and K.
J: Checks whether the external air temperature is below 5°C.
K: Checks that the temperature leaving the pre-heat coil does not exceed 5°C.”
Let’s say we use a different approach from the one which we used for the heating and cooling coils.
We will consider each controller in turn. Controller J is not needed; the pre-heat coil cannot heat to 5°C unless the air is colder than this, so checking the outdoor air temperature is unnecessary. We delete J.
We could also remove controller I; now there is only one incoming signal it serves no purpose. K can be plugged directly into the coil.
For the sake of argument, let’s say we don’t want the pre-heat coil to control to exactly 5°C, but keep a 1°C control band.
The existing controls are shown on the right.
Do we have to keep controller K?
The Heating Coil component has a property we can use, “Control Band”.
When the value of this field is greater than zero, the coil will act as though there is an attached controller monitoring the air temperature immediately after the coil, returning a signal which changes linearly between the two temperatures of “Setpoint” and “Setpoint + Control Band”.
If we delete the controller we can enter a value of 1°C for the control band, with a setpoint of 4°C, replicating the effect of the controller but removing the need for the simulation to iterate until the control signal and coil output stabilise.
We now have a single controller instead of eleven. The smaller number of controllers yields multiple benefits.
* Simulation requires fewer iterations, so simulations are quicker and more stable. Fewer simulation events, fewer unmet hours.
* Tighter control bands are more easily achievable with profile modifiers.
* Component controls are more “self-contained” so if something goes wrong, it’s easier to diagnose, instead of having to trace multiple control signals.
Ask yourself: Which of the systems shown below would you rather have to work with?


















