Chilled water plant logic
-
Hi guys,
I need a hand to produce some sort of logic (within Mango or DGLux) for the following scenario:I have a chilled water plant that comprises three Water Chillers, I need to setup a logic for the control of this plant as follows:
- If the ambient temperature is above 17 °C start one unit at 6.00 am.
- If the ambient temperature continues to rise and reaches a 25 °C value, start the second unit.
- If the ambient temperature continues to rise and reaches a 35 °C value, start the third unit.
- This should happen Monday through friday from 6.00 am to 5.00 pm., at this time all running units should shutdown.
- Units should cycle weekly (i.e. unit 1 transforms in to unit 2, unit 2 in to unit 3, unit 3 in to unit 1)
- There's also an electric boiler that uses the same water loop, and it should start/stop in the same schedule, but only if the ambient temperature goes below 15 °C.
Any help you can provide will be greatly appreciated.
Thanks,
Regards
Rodrigo -
Hi Rodrigo,
To start with I'll give you some tips on how you might do this and if you still need help we can look at writing a full script.
In the Scripting Data Source create a binary Data Point and you could call it something like Chillers_Active. I would then create a Scheduled even with a CRON pattern like: Active at: 0 0 6 ? * MON-FRI Inactive at: 0 0 17 ? * MON-FRI Next create an event handler for this Scheduled event to turn the Binary point to true when it's active and false when it's inactive.
Now you can write a script like:
if (Chillers_Active && AT.value > 17) { chiller1.set(true); }
I'll have to think more about cycling the chillers but you can probably do that with another scheduled event and some virtual data pionts.
-
Once you look at the scripting and figure it out you should be able to do this with ease. As for the cycling I would create two scripts. The first one as mentioned by Joel but instead of it turning chillers on have it turn virtual stages on (1-3). The second script will just assign stages to physical chillers and every week increment the stage number with loopback to 1 when greater than 4.
Week 1: Stage 1 = Chiller 1, Stage 2 = Chiller 2, Stage 3 = Chiller 3
Week 2: Stage 2 = Chiller 1, Stage 3 = Chiller 2, Stage 1 = Chiller 3
Week 3: Stage 3 = Chiller 1, Stage 1 = Chiller 2, Stage 2 = Chiller 3This can all be done in one script, I just prefer a bunch of smaller scripts.
-
Thanks guys! I will give it a try and let you know how it goes,
Regards,
Rodrigo -
Units should cycle weekly (i.e. unit 1 transforms in to unit 2, unit 2 in to unit 3, unit 3 in to unit 1)
If the reason you want to cycle the units is to keep the operating hours similar between units, if you're tracking their total runtime hours, then rather than starting the "next" unit, you could start the unit with the lowest runtime. If you want the unit to be offline for a week for maintenance, then of course only check the runtime weekly.