# 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