Exciter Model: REEC_C

 

Model Equations and/or Block Diagrams

Parameters:

PfFlag Power factor flag (1 – power factor control, 0 – Q control, which can be commanded by an external signal)
VFlag Voltage control flag (1 – Q control, 0 – voltage control)
QFlag Reactive power control flag ( 1 – voltage/Q control, 0 – constant pf or Q control)
Pqflag P/Q priority selection on current limit flag. 0 = Q priority; 1 = P priority
Vdip The voltage below which the reactive current injection (Iqinj) logic is activated (i.e. voltage_dip = 1)
Vup The voltage above which the reactive current injection (Iqinj) logic is activated (i.e. voltage_dip = 1)
Trv Filter time constant for voltage measurement
dbd1 Deadband in voltage error when voltage dip logic is activated (for overvoltage – thus overvoltage response can be disabled by setting this to a large number e.g. 999)
dbd2 Deadband in voltage error when voltage dip logic is activated (for undervoltage)
kqv Gain for reactive current injection during voltage dip (and overvoltage) conditions
Iqh1 Maximum limit of reactive current injection (Iqinj)
Iql1 Minimum limit of reactive current injection (Iqinj)
Vref0 The reference voltage from which the voltage error is calculated. This is set by the user. If the user does not specify a value it is initialized by the model to equal to the initial terminal voltage.
Tp Filter time constant for electrical power measurement
Qmax Reactive power limit maximum
Qmin Reactive power limit minimum
Vmax Voltage control maximum
Vmin Voltage control minimum
Kqp Proportional gain on Q control
Kqi Integral gain on Q control
Kvp Proportional gain on V control
Kvi Integral gain on V control
Tiq Time constant on lag delay
dPmax Positive Ramp rate on power reference
dPmin Negative Ramp rate on power reference
Pmax Maximum power reference
Pmin Minimum power reference
Tpord Filter time constant on Pord
Imax Maximum allowable total converter current limit
T The discharge time in units of seconds. That is, the time (in seconds) that it takes for the unit to go from 0% state of charge to 100% state of charge.
SOCini The initial state of charge on the battery and is a user entered value. It should be in per unit; 1.0 per unit means fully charged and 0.0 per unit means fully discharged.
SOCmax The maximum allowable state of charge. By definition the maximum value would be 1.0, however, it may be set to smaller values (e.g. 0.8) to represent manufacturer requirements that the BESS always remain at or below a certain charging level (e.g. 80%).
SOCmin The minimum allowable state of charge. By definition the minimum value would be 0.0, however, it may be set to larger values (e.g. 0.2) to represent manufacturer requirements that the BESS always remain at or above a certain charging level (e.g. 20%).
vq1 VDL1: Voltage Point1
lq1 VDL1: Iqmax Point1
vq2 VDL1: Voltage Point2
lq2 VDL1: Iqmax Point2
vq3 VDL1: Voltage Point3
lq3 VDL1: Iqmax Point3
vq4 VDL1: Voltage Point4
lq4 VDL1: Iqmax Point4
vp1 VDL2: Voltage Point1
lp1 VDL2: Ipmax Point1
vp2 VDL2: Voltage Point2
lp2 VDL2: Ipmax Point2
vp3 VDL2: Voltage Point3
lp3 VDL2: Ipmax Point3
vp4 VDL2: Voltage Point4
lp4 VDL2: Ipmax Point4
MVABase MVABase

 

Current Limit Logic Psuedo Code

The following pseudo-code describes how the values for Ipmax, Ipmin, Iqmax, and Iqmin are updated.

  Voltage_Thld2TimerActive = special boolean related to timer

  local_V = StateVtfilter // Vt State 1

 

  if VDL1 table is empty then Iqmax = 1E10

  else Iqmax = lookup from VL1 table using local_V

 

  if not Voltage_Thld2TimerActive then begin

    if VDL2 table is empty then Ipmax = 1E10

    else Ipmax = lookup from VDL2 table using local_V

  end

  if PQFlag = 0 then begin // Q priority [default]

    If Imax < Iqmax Then Iqmax = IMax

    Iqmin = -Iqmax

    if not Voltage_Thld2TimerActive then begin

      local_I = Sqr(Imax) - Sqr(Iqcmd)

      if local_I < 0 then local_I = 0

      else local_I = sqrt( local_I )

      if local_I < Ipmax Then Ipmax = local_I

    end

    Ipmin = -Ipmax

  end

  else Begin // P priority

    if not Voltage_Thld2TimerActive then begin

      if IMax < Ipmax Then Ipmax = Imax

    end

    Ipmin = -Ipmax

    local_I = Sqr(Imax) - Sqr(Ipcmd)

    if local_I < 0 then local_I = 0

    else local_I = sqrt( local_I )

    if local_I < Iqmax Then Iqmax = local_I

    Iqmin = -Iqmax// LOCAL_UpdateIqmin

  end