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

How can we use EnergyManagementSystem:CurveOrTableIndexVariable

asked 2017-09-20 05:45:26 -0500

katsuya.obara's avatar

updated 2017-09-21 04:11:47 -0500

I am trying to implement EMS for the first time to differentiate the chiller performance curve according to the outdoor air temperature.

I found one example which I can refer to. example-11-performance-curve-result-override

In this example, they input different performance curve according to outdoor air temperature. I expected that EMS:CurveOrTableIndexVariable can be used in this case. However, this example does not use it and create performance curve in EMS:Program.

Can anyone tell me whether I can use EMS:CurveOrTableIndexVariable for my purpose? if not can you give me some example using EMS:CurveOrTableIndexVariable?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2017-09-20 07:33:33 -0500

updated 2017-09-20 21:23:19 -0500

The EMS:CurveOrTableIndexVariable is used to map an existing curve so that you can use your own inputs to the curve instead of those that would normally be used by the program. I don't see an example of this object in the EMSApplicationGuide document so I will try to create on for you. I replicated the EMS:ConstructionVariableIndex example in the EMSApplicationGuide document. I have never used this method so there may be some mistakes I am not aware of. Most likely my first attempt is probably wrong. Try this in your input file and let me know how it works for you.

EnergyPlus input file curve object:

  Mycurve,           !- Name
  0.942587793,       !- Coefficient1 Constant
  0.009543347,       !- Coefficient2 x
  0.000683770,       !- Coefficient3 x**2
  -0.011042676,      !- Coefficient4 y
  0.000005249,       !- Coefficient5 y**2
  -0.000009720,      !- Coefficient6 x*y

Map the existing curve object for use in EMS programming:

  MyCurve,           !- Index
  Mycurve;           !- Performance Curve or Table Name

Then use the index in the EMS Program using the @CurveValue object:

  Set X = 12.0,
  Set Y = 21.5,
  Set MyCurveOutput = @CurveValue(MyCurve, X, Y),
  Set SomeVariableInYourProgram = MyCurveOutput * 0.01;

  EMSBasedCurveManager,              !- Name
  BeginTimestepBeforePredictor,      !- EnergyPlus Model Calling Point
  CalcCurveOutput;                   !- Program Name 1

The EMS variable SomeVariableInYourProgram can be used to actuate something in your simulation. For example, another curve:

  SomeVariableInYourProgram,   !- Name
  SomeOtherCurveName,          !- Actuated Component Unique Name
  Curve,                       !- Actuated Component Type
  Curve Result;                !- Actuated Component Control Type

There is also an example file named EMSCurveOverride_PackagedTerminalHeatPump which uses a different method to adjust performance curves (or tables) values. This may be what you looking for and this method I know does work. Review the EMS program in that example file before you attempt the method described above.

edit flag offensive delete link more


I tried your code. Error happens at MyCurveOutput = @CurveValue(MyCurve, X, Y), since ',' recognized as end of line. Do you have any solution for that?

katsuya.obara's avatar katsuya.obara  ( 2017-09-20 20:06:53 -0500 )edit

I could find solution in this page. [EMS application guide]P22 (

katsuya.obara's avatar katsuya.obara  ( 2017-09-20 20:28:38 -0500 )edit

Yeah, I thought I may have left something out. SET MyCurveOutput = ...

rraustad's avatar rraustad  ( 2017-09-20 20:44:47 -0500 )edit

It looks like the Actuator syntax might also be wrong. I did this pretty fast this morning just wanting to give you an idea of what to do.

rraustad's avatar rraustad  ( 2017-09-20 20:48:43 -0500 )edit

I think I fixed the Actuator syntax above.

rraustad's avatar rraustad  ( 2017-09-20 21:23:38 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops


Question Tools

1 follower


Asked: 2017-09-20 05:45:26 -0500

Seen: 107 times

Last updated: Sep 21 '17