Great question!
Short answers to your questions first.
- Yes. You can get the data via the strategy running on the R1. (You simply add the code into one of your charts - the PAC Control command you are looking for is ‘Set PID input’).
- Yes. You can set very long TPO periods. Is it efficient? Read the longer answer below.
- Given the long period, or long dead loop time, yes I would be looking at other methods to control your loops. (See long answer below).
Here are some (hopefully) helpful links to more information.
First up, our PID landing page. Just about every link known to Opto for our PID loops.
TPO form posts. Longish but really interesting.
PID loop technical note (pdf). Note the short section on page 4 and 5 about dead loop time.
Ok, back to your application.
Long answer is long…
Does each loop have its own furnace and pump?
An hour is a long dead loop time. I wonder where your temperature sensors are located?
Do you have one on the furnace output?
One in the room?
One on the start of the hydronic loop?
One at the end of the hydronic loop?
In other words, are there other places we can get some temperature data? Possibly with a shorter loop time than an hour.
Interesting they are read via Modbus. This means you will need a strategy to control the hydronic loops no matter what approach you chose to take (PID or chart based control).
In a nut shell, you have two challenges. First up, that very long dead loop time. An hour is a very long time in any ones life. Secondly, you need digital control of an analog variable.
In my experience, the former is going to cancel out the latter. A one hour dead loop time is even going to null and void just about any analog to analog PID control attempts.
So. Other methods…
As you say, you could have another table (or more) that turns things on and off before the set point. This will reduce your over shoot.
It could be as simple as taking your set point, and subtracting an offset value and storing that new set point in a table.
Each loop would probably end up with its own offset value, and that’s Ok.
Lets take a look at what I presume is happening;
The digital control of the furnace is causing the blue line (the hydronic loop temperature) to cycle. You are seeing over shoot. (And probably some pretty good undershoot around the desired set point).
Coming up with some preemptive set points could flatten things out enough. Turning off before you hit the set point and turning back on before you get too far below the set point will sure flatten out the cycles.
The nice thing about doing it this way is that you simply take the existing set point and just come up with two others based on that one. So two more tables and very little re-writing of your current strategy is required.
The only downside I can think to this is what happens as the seasons (ie load) changes? If you get too close to all three set points in value, you could really see some cycling of the furnace.
Question. Do you have independent control of the furnace and the pump?
If so, does the current control strategy keep the pump running for a while after the furnace turns off?
I have found that there is a fair bit of stored heat in a lot of furnaces and running the pump for a while after helps even things out as the heat dies down rather than just being cut off. I have even gone so far as to run the pump all the time and cycle the furnace as required.
Another approach you might want to think about is looking at the slope of the temperature…
As you can see, the temperature is a sine wave (of sorts). Perhaps you can use this to some advantage. What I have done in the past is start two timers, one short, one long. Say, 5 minute and 30 minute (you will have to experiment a little to see what time values work best in your application and perhaps even for each loop).
At the start of the timer, you grab the loop temperature and store it into a variable. Once the timer expires, grab the loop temperature and subtract it from the first value. Presto, you have the delta of the loop for that amount of time.
So now you know how fast your heating and how fast you are cooling.
Now that you know the rate of change and over what period of time, you can use that slope to determine what you should and when.
In other words, you now know how fast you are approaching or departing from your set point. In effect, you have the basics of a very simple PID loop.
Did not mean to wall-o-text you… it really was a great question!
Hope that helps, if anyone else has some thoughts, lurk no more! Share with us!