Chiller on/off control based on OA temperature
I would like to know how you turn off chiller when OA temperature is below a certain set value.
First time here? Check out the Help page!
I would like to know how you turn off chiller when OA temperature is below a certain set value.
I have done this before using an EnergyPlus Measure that I scripted that created an AvailabilityManagerAssignmentList object and AvailabilityManager:LowTemperatureTurnOff object. The AvailabilityManagerAssignmentList object references the AvailabilityManager:LowTemperatureTurnOff object where you specify a node (outside air node in this case) and the temperature at which the system turns off. I also had to modify the the Chilled Water Loop object to reference the correct Availability Manager list. I know creating your own measures isn't ideal but if you are new at this, I recommend looking at the OpenStudio Measure Writing Guide. Of course this can all be done outside of OpenStudio as well.
Based on a comment request, here is a snippet of an example to apply the measure.
First I create the two Availability Manager objects I need for the measure:
new_plant_loop_availabilitymanagerlist_string = "
AvailabilityManagerAssignmentList,
Plant Loop Availability Manager List, !- Name
AvailabilityManager:LowTemperatureTurnOff, !- Availability Manager Object Type 1
Plant Loop Availability Manager; !- Availability Manager Name 1
"
#make new object from string
idfObject = OpenStudio::IdfObject::load(new_plant_loop_availabilitymanagerlist_string)
object = idfObject.get
wsObject = workspace.addObject(object)
new_plant_loop_availabilitymanagerlist = wsObject.get
new_plant_loop_availabilitymanager_string = "
AvailabilityManager:LowTemperatureTurnOff,
Plant Loop Availability Manager, !- Name
Plant Systems OA Node, !- Sensor Node Name
40; !- Temperature (C)
"
#make new object from string
idfObject = OpenStudio::IdfObject::load(new_plant_loop_availabilitymanager_string)
object = idfObject.get
wsObject = workspace.addObject(object)
new_plant_loop_availabilitymanager = wsObject.get
Second I get the Plant Loop I want to apply the measure to, in this case, Plant Loop. I then get that Plant Loop object and change the string for the 19th input, which is the input for the Availability Manager List Name, to my new Availability Manager List that I had created above:
#get Plant Loops in model
plant_loops = workspace.getObjectsByName("Plant Loop")
plant_loops.each do |plant_loop|
plant_loop.setString(19,"Plant Loop Availability Manager List") # Availability Manager List Name
end
Hopefully I didn't leave anything out but this should get you an idea of how you can apply it to your model.
I am very new to writing measures. Would you have any insight in how to get from what you link to above to an openstudio or energy plus measure. The openstudio measures guide is not really that informative for this kind of case.
Currently I have an openstudio measure with user inputs for the chiller system, the node for OA air, and the override schedule. I am stuck as to how to move forward on applying the AvailabilityManager:LowTempratureTurnOff in the measure.
It seems I was on the right track was just missing the method for adding to the plant loop. I have implemented this code using an enerygplus measure but when it runs in openstudio I receive an error message. [utilities.idf.WorkspaceObject] <0> Object of type 'AvailabilityManagerAssignmentList' and named 'Plant Loop Availability Manager List', points to an object named Plant Loop Availability Manager from field 2, but that object cannot be located. When I check the error output files the model is failing to run due to the name plant loop availability manager being deleted.
Plant Loop Availability Manager should be the name of the AvailabilityManager:LowTemperatureTurnOff object that is created with the second string above and should not be deleted.
I just realized that I copied the order of objects incorrectly above. I had the string being defined after making it into an object for the Plant Loop Availability Manager name object. I've fixed this above so you can recopy or compare to the previous code. Sorry about that!
I saw no one had answered you so I thought this might help. I am not 100% sure about in OpenStudio but if you put it into EnergyPlus you could possibly use the setpointManager:OutdoorAirReset or SetpointManager:FollowOutdoorAirTemperature (I have only used this with the cooling tower so I am not sure it would work with the chiller but it is probably worth a try). As EnergyPlus is the engine for OpenStudio this might appear where you add setpoints to your system. Otherwise you could pull your model out of OpenStudio and run it in EnergyPlus adding this setpoint to your chiller. I am not sure either are perfect but they might help.
Please start posting anonymously - your entry will be published after you log in or create a new account.
Asked: 2014-11-10 10:09:44 -0600
Seen: 1,330 times
Last updated: Nov 25 '14
@Taherian What simulation tool are you using?
OpenStudio application
I added the "openstudio" tag. This is important since Unmet Hours is used for other simulation tools as well.