I received an email today asking about reset windup during the unoccupied mode and what can be done to avoid it. Its useful info worth repeating here.
There’s no on-off feature for the PID controllers but internally there’s a limit, when the total of P + I + D hits 100% the PID gets clipped to 100%. At startup however the windup that is there could potentially cause problems. Here’s a couple work arounds:
We could hold the room temperature in a virtual variable and write a small program to toggle this variable between the real temperature in the day and the setpoint itself at night.
Here’s the virtual ‘temperature variable’ in the vars table and below is the program.
10 REM ******* USE A VAR TO HOLD THE ROOM TEMP ****
20 IF OCCUPIED THEN ROOMTV = ROOMTEMP
30 IF NOT OCCUPIED THEN ROOMTV = ROOMSET
This way the PID is satisfied at night and the I term doesn’t wind up. The only tradeoff is the program is a bit more complex, a trendlog will tell you whether its worth it.
Thinking about this a bit more:
In the example programs I have done recently there’s both a day and a night setpoint for both heating and cooling. The night cooling is disabled effectively by setting the cooling setpoint to high number. The PID sees the setpoint is achieved and therefore the PID doesn’t wind up.