Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Thank you for the comment, Denis. You are right, I don't have a storage capacity (in J) directly associated with the PCUD. The storage capacity is tied to the storage medium (bricks) temperature. This is an EMS global variable that updates at each timestep based on an energy balance equation : T(t+1) = T(t) dt/C*[Pcharge(t) - Pdischarge(t) - Ploss(t]). Where Pdischarge(t) is a minimum between Pmax(t) and Pdemand(t). The maximum discharge capacity Pmax(t) (W) is the maximum amount of heat that could be extracted from the unit at any given timestep, it is a function of the storage temperature T(t).

You are right on the money with your second part of the comment. I have a whole control logic that determines the Pcharge(t) part, based on schedules, peak limits, outdoor temperatures, DR event signals etc. It works very well so far, apart from times when some combination of user control inputs results in insufficient storage temperatures, resulting in unmet hours. The maximum loading capacity "communicated" to EnergyPlus by the unit should follow the storage temperature, but instead it seems to be permanently saved as the size of the PCUD (maximum capacity at the maximum storage temperature) during the initialization phase. I am essentially trying to find a creative way, using EMS to update the sizing (maximum capacity) of the equipment at each time step based on its last calculated storage temperature. I think this would correct the load distribution problem between the unit and a boiler, as explained in my post.

Thank you for the comment, Denis. You are right, I don't have a storage capacity (in J) directly associated with the PCUD. The storage capacity is tied to the storage medium (bricks) temperature. This is an EMS global variable that updates at each timestep based on an energy balance equation : T(t+1) = T(t) dt/C*[Pcharge(t) - Pdischarge(t) - Ploss(t]). Ploss(t)]. Where Pdischarge(t) is a minimum between Pmax(t) and Pdemand(t). The maximum discharge capacity Pmax(t) (W) is the maximum amount of heat that could be extracted from the unit at any given timestep, it is a function of the storage temperature T(t).

You are right on the money with your second part of the comment. I have a whole control logic that determines the Pcharge(t) part, based on schedules, peak limits, outdoor temperatures, DR event signals etc. It works very well so far, apart from times when some combination of user control inputs results in insufficient storage temperatures, resulting in unmet hours. The maximum loading capacity "communicated" to EnergyPlus by the unit should follow the storage temperature, but instead it seems to be permanently saved as the size of the PCUD (maximum capacity at the maximum storage temperature) during the initialization phase. I am essentially trying to find a creative way, using EMS to update the sizing (maximum capacity) of the equipment at each time step based on its last calculated storage temperature. I think this would correct the load distribution problem between the unit and a boiler, as explained in my post.