-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add writing to schedules and EMS actuators to Spawn #1633
Comments
If an input or output or an EMS actuator is not supported or present in EnergyPlus, then |
I have added this feature in this commit: NREL/Spawn@a743b67 |
This should be fully addressed with NREL/Spawn@26fd4ac NREL/Spawn@a743b67 did not include explicit support for schedules (although you could use a general actuator to write the schedules, now there is support directly.
|
The test file that @kbenne uses is:
|
@kbenne : I suggest for the next build, you rename
to
unless you have a reason to deviate from using |
@kbenne :
but your snippet of the json file only has three fields. Is this a bug in the json file, or if not, is your |
@kbenne : Can you please clarify #1633 (comment) |
variableName is equivalent in meaning to field A2. That is to say that variableName is the actuated component unique name. If you are trying to actuate a "ElectricEquipment" object in EnergyPlus which ElectricEquipment idf object are you actuating. I would be fine with calling variableName just "name". In spawn there is no direct equivalent to field A1 which is used to reference the given actuator throughout EMS programs. The closest analog is the fmiName.
|
@kbenne : If A1 is used to reference the given actuator throughout EMS programs, then we should allow in Spawn to reference this name, no? A use case is that a user provides an idf name, which uses A1 in EMS programs, and now this user wants to change the value of this variable through Spawn. Wouldn't E+ then require A1 to be the name used in the idf, and hence Spawn needs to send A1. I think what is confusing here is that |
If someone wants to interact with a given actuator through EMS in the idf file, then they need to insert the EnergyManagementSystem:Actuator idf object themselves. They need to identify the idf object they want to actuate by the name, type, and control type. Ie "My Favorite Lighting Schedule", "Schedule Compact", "Schedule Value". They use the name field given in the "EnergyManagementSystem:Actuator" idf object to refer to that actuator in EMS programs. To actuate that same thing in spawn you must provide those three identifying values, "My Favorite Lighting Schedule", "Schedule Compact", "Schedule Value", however the name that you use to refer to that FMU variable does not need to be the same or even correspond to the name of an EnergyManagementSystem:Actuator object (field A1). I believe it is technically possible to actuate a given thing from both an EMS program and the FMU. I have been designing to allow for that at least in the future. The calling points come into play here. In EMS you have control over the calling point, whereas actuating via the FMU you don't. That said FMU is synchronized at the highest frequency therefore FMU actuations will have priority. I want to emphasize technically possible, and in the future. Currently I am actively filtering a limited set of the supported idd types, and EMS programs are currently filtered out. The idea would be to expand the supported set over time. |
@kbenne : So the statement
Similarly, what is the intention for schedules? I thought we also said they need not be in the idf file, but simulating
I would expect this to either work, or that EnergyPlus returns an error message saying that this schedule need to be instantiated in the idf file. The current behavior of writing the fmu and then telling the user that the schedule is not in the fmu won't help for most users. Please add such tests in the EnergyPlus code so we can give more meaningful instructions, and let me know if schedules (and actuators) need to be instantiated in idf. |
I think "No entry in the idf file is required to write to an EMS actuator" is a true statement. That was the point I think I must have failed to communicate. "If someone wants to interact with a given actuator through EMS in the idf file, then they need to insert the EnergyManagementSystem:Actuator idf object themselves." This is also true, but spawn is not EMS and therefore there is no requirement for idf input such as EnergyManagementSystem:Actuator. In Spawn we write to actuators through the EnergyPlus API as we wish. This is also true for python extensions that have recently been introduced to EnergyPlus. For schedules, we need a schedule object in the idf file, but I don't think any other objects such as EnergyManagementSystem:Actuator to actually actuate or otherwise change a schedule's value. I suppose I can inject a missing schedule into the idf if the spawn input file requests to actuate a schedule that does not exist. I'm not clear on the use case though, because something in the idf file would need to reference the schedule for it to be useful. |
Currently, writing to a schedule that is not in idf leads to an error. This is good, as otherwise if a user makes a typo in the schedule name, the simulation would run but results would not be affected. In view of this, it may be best to require that an actuator is also in idf. Currently the set up is in idf:
and in Modelica:
I suggest Modelica does not specify |
@kbenne : Please provide a writeup for what this object does, how it behaves and how we best call it. |
@kbenne : Can you please review and propose changes if needed to the to make sure it is OK for user-facing documentation. |
This issue is to add functionality to write the EnergyPlus schedules and EMS actuators.
See https://lbl-srg.github.io/soep/softwareArchitecture.html#sending-input-to-energyplus for specification.
The development branch
issue1633_schedulesActuators
is based onissue1129_energyPlus_zone
The text was updated successfully, but these errors were encountered: