ABB_CC_Testcase.MediumScale

Medium scale benchmark

ABB_CC_Testcase.MediumScale.OpenLoop ABB_CC_Testcase.MediumScale.PrimaryController ABB_CC_Testcase.MediumScale.PrimaryControlledSystem ABB_CC_Testcase.MediumScale.Case1 ABB_CC_Testcase.MediumScale.Case2 ABB_CC_Testcase.MediumScale.Case3 ABB_CC_Testcase.MediumScale.Case4 ABB_CC_Testcase.MediumScale.Case5 ABB_CC_Testcase.MediumScale.Case6

Information

Medium scale benchmark problem

NameDescription
OpenLoop  
PrimaryController Primary Control System
PrimaryControlledSystem  
Case1 Double line outage, no secondary control
Case2 Double line outage, stabilizatiobn by tap changer voltage reference
Case3 Double line outage, stabilizatiobn by capacitor switching
Case4 Triple line outage, failed attempt to stabilize by capacitor switching and tap reference change
Case5 Triple line outage, stabilization by load shedding
Case6 Triple line outage, stabilization by combined load shedding and capacitor switching


ABB_CC_Testcase.MediumScale.OpenLoop ABB_CC_Testcase.MediumScale.OpenLoop

ABB_CC_Testcase.MediumScale.OpenLoop

Information

Model of open-loop system
This is a system with purely continuous nonlinear dynamics

Modelica definition

model OpenLoop 
  Components.Slack G1(V0=1.03);
  Components.Bus Bus11;
  Components.Bus Bus14;
  Components.Bus Bus12;
  Components.Bus Bus13;
  Components.Bus Bus21;
  Components.Bus Bus22;
  Components.Bus Bus23;
  Components.Bus Bus24;
  Components.Bus Bus31;
  Components.Bus Bus32;
  Components.Bus Bus33;
  Components.Bus Bus34;
  Components.Impedance L11(X=0.1);
  Components.Impedance L12(X=0.1);
  Components.Impedance L13(X=0.1);
  Components.Impedance L21(X=0.1);
  Components.Impedance L22(X=0.1);
  Components.Impedance L23(X=0.1);
  Components.Impedance L31(X=0.1);
  Components.Impedance L32(X=0.1);
  Components.Impedance L33(X=0.1);
  Components.GenQSS2 G2(D=1, Pm0=0.5);
  Components.GenQSS2 G3(D=1, Pm0=0.5);
  Components.SimplerLoad Load1(ShedStep=0.1, as=0.5);
  Components.SimplerLoad Load2(
    P0=1, 
    Q0=0.4, 
    ShedStep=0.1, 
    as=0.5);
  Components.SimplerLoad Load3(
    Q0=0.4, 
    ShedStep=0.1, 
    P0=1.3, 
    as=0.5);
  Components.Transformer T1;
  Components.Transformer T2;
  Components.Transformer T3;
  Components.Capacitor C1(B=0.2);
  Components.Capacitor C2(B=0.2);
  Components.Capacitor C3(B=0.2);
  Components.ParTripLine Tie12(X=0.8);
  Components.ParTripLine Tie13(X=1.6);
  Components.ParTripLine Tie23(X=0.8);
  
  input Integer CapStep[3];
  input Integer LoadStep[3];
  input Integer TrStep[3];
  input Real GEfd[2];
  input Integer faulted[3];
  output Real Vload[3]={Bus14.V,Bus24.V,Bus34.V};
  output Real Vgen[2]={G2.V,G3.V};
  output Real Vcap[3]={Bus13.V,Bus23.V,Bus33.V};
  
  Real Pl=Load1.Pl + Load2.Pl + Load3.Pl;
  Real Ql=Load1.Ql + Load2.Ql + Load3.Ql;
  
  //
  //auxilliary outputs
  output Real B11va=Bus11.T.va;
  output Real B11vb=Bus11.T.vb;
  output Real B12va=Bus12.T.va;
  output Real B12vb=Bus12.T.vb;
  output Real B13va=Bus13.T.va;
  output Real B13vb=Bus13.T.vb;
  output Real B14va=Bus14.T.va;
  output Real B14vb=Bus14.T.vb;
  
  output Real B21va=Bus21.T.va;
  output Real B21vb=Bus21.T.vb;
  output Real B22va=Bus22.T.va;
  output Real B22vb=Bus22.T.vb;
  output Real B23va=Bus23.T.va;
  output Real B23vb=Bus23.T.vb;
  output Real B24va=Bus24.T.va;
  output Real B24vb=Bus24.T.vb;
  
  output Real B31va=Bus31.T.va;
  output Real B31vb=Bus31.T.vb;
  output Real B32va=Bus32.T.va;
  output Real B32vb=Bus32.T.vb;
  output Real B33va=Bus33.T.va;
  output Real B33vb=Bus33.T.vb;
  output Real B34va=Bus34.T.va;
  output Real B34vb=Bus34.T.vb;
  
  output Real G1ia=G1.T.ia;
  output Real G1ib=G1.T.ib;
  output Real G2ia=G2.T.ia;
  output Real G2ib=G2.T.ib;
  output Real G3ia=G3.T.ia;
  output Real G3ib=G3.T.ib;
  output Real Load1ia=Load1.T.ia;
  output Real Load1ib=Load1.T.ib;
  output Real Load2ia=Load2.T.ia;
  output Real Load2ib=Load2.T.ib;
  output Real Load3ia=Load3.T.ia;
  output Real Load3ib=Load3.T.ib;
  
  output Real C1ia=C1.T.ia;
  output Real C1ib=C1.T.ib;
  output Real C2ia=C2.T.ia;
  output Real C2ib=C2.T.ib;
  output Real C3ia=C3.T.ia;
  output Real C3ib=C3.T.ib;
  
  output Real Tie12ia=Tie12.T1.ia;
  output Real Tie12ib=Tie12.T1.ib;
  output Real Tie13ia=Tie13.T1.ia;
  output Real Tie13ib=Tie13.T1.ib;
  output Real Tie23ia=Tie23.T1.ia;
  output Real Tie23ib=Tie23.T1.ib;
  
  output Real L11ia=L11.T1.ia;
  output Real L11ib=L11.T1.ib;
  output Real L12ia=L12.T1.ia;
  output Real L12ib=L12.T1.ib;
  output Real L13ia=L13.T1.ia;
  output Real L13ib=L13.T1.ib;
  
  output Real L21ia=L11.T1.ia;
  output Real L21ib=L21.T1.ib;
  output Real L22ia=L22.T1.ia;
  output Real L22ib=L22.T1.ib;
  output Real L23ia=L23.T1.ia;
  output Real L23ib=L23.T1.ib;
  
  output Real L31ia=L31.T1.ia;
  output Real L31ib=L31.T1.ib;
  output Real L32ia=L32.T1.ia;
  output Real L32ib=L32.T1.ib;
  output Real L33ia=L33.T1.ia;
  output Real L33ib=L33.T1.ib;
  //
  output Real G1Pg=G1.Pg;
  output Real G1Qg=G1.Qg;
  output Real G2Pg=G2.Pg;
  output Real G2Qg=G2.Qg;
  output Real G3Pg=G3.Pg;
  output Real G3Qg=G3.Qg;
  
  output Real Load1Pl=Load1.Pl;
  output Real Load1Ql=Load1.Ql;
  output Real Load2Pl=Load2.Pl;
  output Real Load2Ql=Load2.Ql;
  output Real Load3Pl=Load3.Pl;
  output Real Load3Ql=Load3.Ql;
equation 
  
  connect(Bus11.T, G1.T);
  connect(Bus12.T, L11.T2);
  connect(Bus11.T, L11.T1);
  connect(L13.T1, Bus12.T);
  connect(L12.T1, Bus11.T);
  connect(L12.T2, Bus13.T);
  connect(L13.T2, Bus13.T);
  connect(Load1.T, Bus14.T);
  connect(T1.T1, Bus13.T);
  connect(T1.T2, Bus14.T);
  connect(Bus22.T, L21.T2);
  connect(Bus21.T, L21.T1);
  connect(L23.T1, Bus22.T);
  connect(L22.T1, Bus21.T);
  connect(L22.T2, Bus23.T);
  connect(L23.T2, Bus23.T);
  connect(Load2.T, Bus24.T);
  connect(T2.T1, Bus23.T);
  connect(T2.T2, Bus24.T);
  connect(C1.T, Bus13.T);
  connect(C2.T, Bus23.T);
  connect(G2.T, Bus21.T);
  
  faulted = {Tie12.faulted,Tie23.faulted,Tie13.faulted};
  CapStep = {C1.step,C2.step,C3.step};
  TrStep = {T1.tappos,T2.tappos,T3.tappos};
  LoadStep = {Load1.step,Load2.step,Load3.step};
  GEfd = {G2.Efd,G3.Efd};
  connect(Bus32.T, L31.T2);
  connect(Bus31.T, L31.T1);
  connect(L33.T1, Bus32.T);
  connect(L32.T1, Bus31.T);
  connect(L32.T2, Bus33.T);
  connect(L33.T2, Bus33.T);
  connect(Load3.T, Bus34.T);
  connect(T3.T1, Bus33.T);
  connect(T3.T2, Bus34.T);
  connect(C3.T, Bus33.T);
  connect(G3.T, Bus31.T);
  connect(Tie23.T1, Bus22.T);
  connect(Bus12.T, Tie13.T1);
  connect(Bus32.T, Tie23.T2);
  connect(Bus22.T, Tie12.T1);
  connect(Bus32.T, Tie13.T2);
  connect(Tie12.T2, Bus12.T);
end OpenLoop;

ABB_CC_Testcase.MediumScale.PrimaryController ABB_CC_Testcase.MediumScale.PrimaryController

Primary Control System

ABB_CC_Testcase.MediumScale.PrimaryController

Information

Model of primary-controllers
This is a system with purely continuous nonlinear dynamics

Parameters

NameDefaultDescription
Ef0[2]{1.55,1.55} 
Efmax[2]{1.78,1.78} 
SimulinkSafetrue 
TapDelay30 
DB[3]{0.01*3,0.01*3,0.01*3} 
up_limit0[2]{false,false} 
GenVref[2]{1.03,1.03} 

Modelica definition

model PrimaryController "Primary Control System" 
  parameter Real Ef0[2](
    min=1.5, 
    max=9) = {1.55,1.55};
  Real tEfd[2];
  parameter Real Efmax[2]={1.78,1.78};
  parameter Boolean SimulinkSafe=true;
  parameter Real TapDelay=30;
  parameter Real DB[3]={0.01*3,0.01*3,0.01*3};
  parameter Boolean up_limit0[2]={false,false};
  input Real Vgen[2];
  input Real Vload[3];
  input Real Vcap[3];
  input Real TapVref[3];
  
  parameter Real GenVref[2]={1.03,1.03};
  output Real Efd[2](start=Ef0);
  output Integer tappos[3];
  output Real timer[3];
  output Boolean idle[3];
  output Boolean wait[3];
  output Boolean action[3];
  output Boolean up_limit[2](start=up_limit0, fixed=true);
  Components.DBControl TapCon;
equation 
  // generator voltage control
  for m in 1:2 loop
    up_limit[m] = if not (pre(up_limit[m])) then (tEfd[m] > Efmax[m]) else not 
      (Vgen[m] > GenVref[m]);
    if SimulinkSafe then
      1e-2*der(tEfd[m]) + tEfd[m] = if up_limit[m] then Efmax[m] else Ef0[m] + 
        50*(GenVref[m] - Vgen[m]);
    else
      tEfd[m] = if up_limit[m] then Efmax[m] else Ef0[m] + 50*(GenVref[m] - 
        Vgen[m]);
    end if;
  end for;
  Efd = tEfd;
  
  // connection of tap controller
  TapCon.Vref = TapVref;
  TapCon.u = Vload;
  tappos = TapCon.y;
  
  // connection auxilliary variables
  timer = TapCon.timer;
  idle = TapCon.idle;
  wait = TapCon.wait;
  action = TapCon.action;
end PrimaryController;

ABB_CC_Testcase.MediumScale.PrimaryControlledSystem ABB_CC_Testcase.MediumScale.PrimaryControlledSystem

ABB_CC_Testcase.MediumScale.PrimaryControlledSystem

Information

Connection of OpenLoop and Primary control systems

Parameters

NameDefaultDescription
faultTime10 
tapstepsize0.02 
loadstepsize0.05 
CapStep[3]redeclare input Integer CapStep[3] 
LoadStep[3]redeclare input Integer LoadStep[3] 
TapVref[3]redeclare input Real TapVref[3] 
faulted[3]redeclare input Integer faulted[3] 

Modelica definition

model PrimaryControlledSystem 
  parameter Real faultTime=10;
  parameter Real tapstepsize=0.02;
  parameter Real loadstepsize=0.05;
  replaceable input Integer CapStep[3];
  replaceable input Integer LoadStep[3];
  replaceable input Real TapVref[3];
  replaceable input Integer faulted[3];
  output Real Vload[3];
  output Real Vgen[2];
  output Real Vcap[3];
  output Real GEfd[2];
  OpenLoop System;
  PrimaryController Controller(SimulinkSafe=false);
  output Integer tappos[3];
  output Real timer[3];
  output Boolean idle[3];
  output Boolean wait[3];
  output Boolean action[3];
  output Boolean up_limit[2];
equation 
  Controller.Vgen = System.Vgen;
  Controller.Vload = System.Vload;
  Vload = System.Vload;
  Vcap = System.Vcap;
  Vgen = System.Vgen;
  Controller.Vcap = System.Vcap;
  Controller.TapVref = TapVref;
  System.GEfd = Controller.Efd;
  System.faulted = faulted;
  LoadStep = {System.Load1.step,System.Load2.step,System.Load3.step};
  CapStep = {System.C1.step,System.C2.step,System.C3.step};
  System.TrStep = (Controller.tappos);
  GEfd = System.GEfd;
  tappos = Controller.tappos;
  timer = Controller.TapCon.timer;
  wait = Controller.TapCon.wait;
  idle = Controller.TapCon.idle;
  action = Controller.TapCon.action;
  up_limit = Controller.up_limit;
  
end PrimaryControlledSystem;

ABB_CC_Testcase.MediumScale.Case1 ABB_CC_Testcase.MediumScale.Case1

Double line outage, no secondary control

ABB_CC_Testcase.MediumScale.Case1

Modelica definition

model Case1 "Double line outage, no secondary control" 
  extends Modelica.Icons.Example;
  PrimaryControlledSystem System;
equation 
  System.faulted = {0,0,if time > 100 then 2 else 0};
  System.LoadStep = {0,0,0};
  System.CapStep = {0,0,1};
  System.TapVref = {1,1,1};
end Case1;

ABB_CC_Testcase.MediumScale.Case2 ABB_CC_Testcase.MediumScale.Case2

Double line outage, stabilizatiobn by tap changer voltage reference

ABB_CC_Testcase.MediumScale.Case2

Modelica definition

model Case2 
  "Double line outage, stabilizatiobn by tap changer voltage reference"
   
  
  extends Modelica.Icons.Example;
  PrimaryControlledSystem System;
equation 
  
  System.faulted = {0,0,if time > 100 then 2 else 0};
  System.LoadStep = {0,0,0};
  System.CapStep = {0,0,1};
  System.TapVref = {1,if time > 150 then 0.95 else 1,if time > 150 then 0.95
     else 1};
end Case2;

ABB_CC_Testcase.MediumScale.Case3 ABB_CC_Testcase.MediumScale.Case3

Double line outage, stabilizatiobn by capacitor switching

ABB_CC_Testcase.MediumScale.Case3

Modelica definition

model Case3 
  "Double line outage, stabilizatiobn by capacitor switching" 
  extends Modelica.Icons.Example;
  PrimaryControlledSystem System;
equation 
  
  System.faulted = {0,0,if time > 100 then 2 else 0};
  //  faulted = {0,0,0};
  System.LoadStep = {0,0,0};
  System.CapStep = {0,if time > 150 then 1 else 0,1};
  System.TapVref = {1,1,1};
end Case3;

ABB_CC_Testcase.MediumScale.Case4 ABB_CC_Testcase.MediumScale.Case4

Triple line outage, failed attempt to stabilize by capacitor switching and tap reference change

ABB_CC_Testcase.MediumScale.Case4

Modelica definition

model Case4 
  "Triple line outage, failed attempt to stabilize by capacitor switching and tap reference change"
   
  
  extends Modelica.Icons.Example;
  PrimaryControlledSystem System;
equation 
  
  System.faulted = {0,if time > 110 then 1 else 0,if time > 100 then 2 else 0};
  //  faulted = {0,0,0};
  System.LoadStep = {0,0,0};
  System.CapStep = {0,if time > 150 then 1 else 0,1};
  System.TapVref = {1,if time > 150 then 0.95 else 1,if time > 150 then 0.95
     else 1};
end Case4;

ABB_CC_Testcase.MediumScale.Case5 ABB_CC_Testcase.MediumScale.Case5

Triple line outage, stabilization by load shedding

ABB_CC_Testcase.MediumScale.Case5

Modelica definition

model Case5 "Triple line outage, stabilization by load shedding" 
  extends Modelica.Icons.Example;
  PrimaryControlledSystem System;
equation 
  
  System.faulted = {0,if time > 110 then 1 else 0,if time > 100 then 2 else 0};
  //  faulted = {0,0,0};
  System.LoadStep = {0,if time > 150 then 1 else 0,if time > 150 then 1 else 0};
  System.CapStep = {0,0,1};
  System.TapVref = {1,1,1};
end Case5;

ABB_CC_Testcase.MediumScale.Case6 ABB_CC_Testcase.MediumScale.Case6

Triple line outage, stabilization by combined load shedding and capacitor switching

ABB_CC_Testcase.MediumScale.Case6

Modelica definition

model Case6 
  "Triple line outage, stabilization by combined load shedding and capacitor switching"
   
  
  extends Modelica.Icons.Example;
  PrimaryControlledSystem System;
equation 
  
  System.faulted = {0,if time > 110 then 1 else 0,if time > 100 then 2 else 0};
  //  faulted = {0,0,0};
  System.LoadStep = {0,0,if time > 140 then 1 else 0};
  System.CapStep = {0,if time > 140 then 1 else 0,1};
  System.TapVref = {1,if time > 140 then 0.95 else 1,if time > 140 then 0.95
     else 1};
end Case6;

HTML-documentation generated by Dymola Thu Apr 01 11:25:39 2004 .