IEEE Governor Models

Please Note: Type CMLFieldType has been changed to CMLFieldEnum. For example, CMLFieldType.ControlBlock has been changed to CMLFieldEnum.ControlBlock.

IEEE Steam Non-Reheat (SteamNR) (Source)

   @AnController(
      input="mach.speed - 1.0",
      output="this.delayBlock.y",
      refPoint="this.gainBlock.u0 + this.filterBlock.y + this.intBlock.y",
      display= {"str.Pm, this.output"}
   )
   public double k = 10.0, t1 = 0.5, t2 = 0.1;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="mach.speed - 1.0",
           parameter={"type.NoLimit", "this.k", "this.t2", "this.t1"},
           y0="this.refPoint - this.gainBlock.y - this.intBlock.y" )
   FilterControlBlock filterBlock;
   public double k3 = 1.0 /* 1.0/t3 */, pup = 1.2, pdown = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.StaticBlock,
           input="this.refPoint - this.filterBlock.y - this.intBlock.y",
           parameter={"type.Limit", "this.k3", "this.pup", "this.pdown"},
           y0="this.intBlock.u0" )
   GainBlock gainBlock;
   public double kint = 1.0, pmax = 10.0, pmin = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.gainBlock.y",
           parameter={"type.Limit", "this.kint", "this.pmax", "this.pmin"},
           y0="this.delayBlock.u0" )
   IntegrationControlBlock intBlock;
   public double kch = 1.0, tch = 1.2;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.intBlock.y",
           parameter={"type.NoLimit", "this.kch", "this.tch"},
           y0="mach.pm" )
   DelayControlBlock delayBlock;

Default Parameter

IEEE Steam Tandem Compound Single Reheat (StreamTCSR) (Source)

Up: Steam Speed Governor

Down: Tandem Compound Single Reheat Turbine

   @AnController(
      input="mach.speed - 1.0",
      output="this.fhp*this.chDelayBlock.y + this.fip*this.rhDelayBlock.y + this.flp*this.coDelayBlock.y",
      refPoint="this.gainBlock.u0 + this.filterBlock.y + this.intBlock.y",
      display= {"str.Pm, this.output", "str.CoBlock, this.coDelayBlock.y",
            "str.RhBlock, this.rhDelayBlock.y", "str.ChBlock, this.chDelayBlock.y"}
   )
   public double fhp = 0.2, fip = 0.3, flp = 0.5;
   public double k = 1.0, t1 = 0.5, t2 = 0.1;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="mach.speed - 1.0",
           parameter={"type.NoLimit", "this.k", "this.t2", "this.t1"},
           y0 = "this.refPoint - this.gainBlock.y - this.intBlock.y"  )
   FilterControlBlock filterBlock;
   public double k3 = 1.0 /* 1.0/t3 */, pup = 1.2, pdown = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.StaticBlock,
           input="this.refPoint - this.filterBlock.y - this.intBlock.y",
           parameter={"type.Limit", "this.k3", "this.pup", "this.pdown"},
           y0="this.intBlock.u0" )
   GainBlock gainBlock;
   public double kint = 1.0, pmax = 10.0, pmin = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.gainBlock.y",
           parameter={"type.Limit", "this.kint", "this.pmax", "this.pmin"},
           y0="this.chDelayBlock.u0" )
   IntegrationControlBlock intBlock;
   public double kch = 1.0, tch = 1.2;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.intBlock.y",
           parameter={"type.NoLimit", "this.kch", "this.tch"},
           y0="this.rhDelayBlock.u0" )
   DelayControlBlock chDelayBlock;
   public double krh = 1.0, trh = 1.2;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.chDelayBlock.y",
           parameter={"type.NoLimit", "this.krh", "this.trh"},
           y0="this.coDelayBlock.u0" )
   DelayControlBlock rhDelayBlock;
   public double kco = 1.0, tco = 1.2, factor = 1.0 / (fhp+fip+flp);
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.rhDelayBlock.y",
           parameter={"type.NoLimit", "this.kco", "this.tco"},
           y0="this.factor*mach.pm" )
   DelayControlBlock coDelayBlock;

Default Parameter

IEEE Steam Tandem Compound Double Reheat (SteamTCDR) (Source)

Up: Steam Speed Governor

Down: Tandem Compound Double Reheat Turbine

   @AnController(
      input="mach.speed - 1.0",
      output="this.fvhp*this.chDelayBlock.y + this.fhp*this.rh1DelayBlock.y + 
              this.fip*this.rh2DelayBlock.y +  this.flp*this.coDelayBlock.y",
      refPoint="this.gainBlock.u0 + this.filterBlock.y + this.intBlock.y",
      display= {"str.Pm, this.output"}
   )
   public double fvhp = 0.1, fhp = 0.1, fip = 0.3, flp = 0.5;
   public double k = 10.0, t1 = 0.5, t2 = 0.1;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="mach.speed - 1.0",
           parameter={"type.NoLimit", "this.k", "this.t2", "this.t1"},
           y0 = "this.refPoint - this.gainBlock.y - this.intBlock.y" )
   FilterControlBlock filterBlock;
   public double k3 = 1.0 /* 1.0/t3 */, pup = 1.2, pdown = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.StaticBlock,
           input="this.refPoint - this.filterBlock.y - this.intBlock.y",
           parameter={"type.Limit", "this.k3", "this.pup", "this.pdown"},
           y0="this.intBlock.u0" )
   GainBlock gainBlock;
   public double kint = 1.0, pmax = 10.0, pmin = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.gainBlock.y",
           parameter={"type.Limit", "this.kint", "this.pmax", "this.pmin"},
           y0="this.coDelayBlock.u0" )
   IntegrationControlBlock intBlock;
   public double kch = 1.0, tch = 1.2;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.intBlock.y",
           parameter={"type.NoLimit", "this.kch", "this.tch"},
           y0="this.rh1DelayBlock.u0" )
   DelayControlBlock chDelayBlock;
   public double krh1 = 1.0, trh1 = 1.2;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.chDelayBlock.y",
           parameter={"type.NoLimit", "this.krh1", "this.trh1"},
           y0="this.rh2DelayBlock.u0" )
   DelayControlBlock rh1DelayBlock;
   public double krh2 = 1.0, trh2 = 1.2;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.rh1DelayBlock.y",
           parameter={"type.NoLimit", "this.krh2", "this.trh2"},
           y0="this.coDelayBlock.u0" )
   DelayControlBlock rh2DelayBlock;
   public double kco = 1.0, tco = 1.2, factor = 1.0 / (fvhp+fhp+fip+flp);
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.rh2DelayBlock.y",
           parameter={"type.NoLimit", "this.kco", "this.tco"},
           y0="this.factor*mach.pm" )
   DelayControlBlock coDelayBlock;

Default Parameter

IEEE Hydro Turbine (Source)

   @AnController(
       input="mach.speed - 1.0",
       output="this.wFilterBlock.y",
       refPoint="this.gainBlock.u0 + this.delayBlock.y",
       display= {"str.Pm, this.output"}
   )
   public double k = 1.0, t2 = 0.5, t1 = 0.01;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="mach.speed - 1.0",
           parameter={"type.NoLimit", "this.k", "this.t2", "this.t1"},
           y0="this.delayBlock.u0" )
   FilterControlBlock filterBlock;

   public double k1 = 10.0, t3 = 0.5;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.filterBlock.y",
           parameter={"type.NoLimit", "this.k1", "this.t3"},
           y0="this.refPoint - this.gainBlock.y" )
   DelayControlBlock delayBlock;
   public double kgain = 1.0, pmax = 1.2, pmin = 0.0;
   @AnControllerField(
           type= CMLFieldEnum.StaticBlock,
           input="this.refPoint - this.delayBlock.y",
           parameter={"type.Limit", "this.kgain", "this.pmax", "this.pmin"},
           y0="this.wFilterBlock.u0" )
   GainBlock gainBlock;
   public double kf2 = 1.0, tw = 0.1, t4 = -0.5*tw, t5 = 0.5*tw;
   @AnControllerField(
           type= CMLFieldEnum.ControlBlock,
           input="this.gainBlock.y",
           parameter={"type.NoLimit", "this.kf2", "this.t4", "this.t5"},
           y0="mach.pm" )
   FilterControlBlock wFilterBlock;

Default Parameter

Reference:

[1] "Dynamic Models for Steam and Hydro Turbines in Power System Studies," IEEE Transactions on Power Apparatus and Systems, Vol. PAS-92, pp. 1904-1915, 1973

(Committee Report)