Home‎ > ‎Reference Guide‎ > ‎Governor Model‎ > ‎

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
NameTypeDefaultUnitMaxMin
Kdouble?pu??
T1double?sec??
T2double?sec??
T3double?sec??
Pmaxdouble?pu??
Pmindouble ?pu??
Pupdouble ?pu ? ?
Pdowndouble ?sec ? ?
Tchdouble ?sec ? ?


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
NameTypeDefaultUnitMaxMin
Kdouble?pu??
T1double?sec??
T2double?sec??
T3double?sec??
Pmaxdouble?pu??
Pmindouble ?pu??
Pupdouble ?pu ? ?
Pdowndouble ?sec ? ?
Tchdouble ?sec ? ?
Trhdouble ?sec ? ?
Tcodouble ?sec ? ?
Fchdouble ?pu ? ?
Fipdouble ?pu ? ?
Flpdouble ?pu ? ?


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
NameTypeDefaultUnitMaxMin
Kdouble?pu??
T1double?sec??
T2double?sec??
T3double?sec??
Pmaxdouble?pu??
Pmindouble ?pu??
Pupdouble ?pu ? ?
Pdowndouble ?sec ? ?
Tchdouble ?sec ? ?
Trh1double ?sec ? ?
Trh2double ?sec ? ?
Tcodouble ?sec ? ?
Fvhpdouble ?pu ? ?
Fhpdouble ?pu ? ?
Fipdouble ?pu ? ?
Flpdouble ?pu ? ?


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
NameTypeDefaultUnitMaxMin
Kdouble?pu??
T1double?sec??
T2double?sec??
T3double?sec??
Pmaxdouble?pu??
Pmindouble ?pu??
Twdouble ?sec ? ?




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)
Comments