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