AGC400 Program Description
AGC400 Program Description
AGC400 Program Description
The content of this manual has been carefully checked for accuracy. However, if you find
any errors, please notify Survalent Technology Corporation.
Date Description
January 29, 2004 Initial version
January 19, 2010 Corrected CPS1 calculation. Added enhanced features: sign convention
selection, a meter correction factor in ACE equations, new WECC ACE
equation with ATEC, and the option to continue calculations while deactivated.
1 Introduction 1-1
This document describes the theory of operation of the Survalent Automatic Generation Control System for
the Windows SCADA system.
Automatic Generation Control (AGC) is a feedback control system that regulates the power output of
electric generators within your control area so as to maintain scheduled system frequency and/or power
interchange within pre-determined limits.
Section 1.1 gives you an overview of the features of the Survalent AGC system.
Chapter 2 describes the overall program organization of the Survalent AGC system.
The remaining chapters describe the details of each major component:
Chapter 3 describes the AGC routine.
Chapter 4 describes the economic dispatch calculation (EDC).
Chapter 5 describes the reserves and performance criteria calculations.
Chapter 6 describes the control output program (AGCTL).
Chapter 7 describes the interchange schedule handler.
Chapter 8 describes the shared memory-resident database used by all of the AGC programs.
The area control error (ACE) is calculated based on the operational mode selected by the dispatcher:
Constant Net Interchange
Constant Frequency
Tie Line Bias (using the ACE equation described by NERC)
Tie Line Bias with Automatic Time Error Correction (using the WECC ACE equation)
Economic
where each generator is assigned a base load plus an economic participation factor that allows ACE
correction to be distributed economically.
Regulating
an additional component used because regulating capacities are not always in proportion to economic
participation factors (i.e. fast response units, which are desirable for regulation, are not always the
most economic ones). This includes an emergency assist factor for those generators that are not
normally used for regulation.
The AGC system includes an Economic Dispatch Calculation program that dispatches the required
system generation in a manner that minimizes the cost of production. For each dispatchable generator, the
program calculates an optimum base load and a set of participation factors for regulation. These outputs
are used by the closed-loop control algorithms of the AGC program.
The dispatch calculation is an implementation of the classical Lagrangian multipliers technique, where the
solution specifies that all dispatchable generators are to be operated at the same incremental cost of
generation. Each generator may be assigned up to three sets of economic parameters, consisting of fuel
rate curves, rate limits and high and low economic limits. Each fuel rate curve is represented as a set of
A Reserves Monitor function calculates spinning, non-spinning and total reserves in generating capacity.
An Interchange Scheduling application allows the dispatcher to define and review scheduled power
interchange transactions. The AGC program takes these scheduled interchanges into account when
computing the area control error. For each transaction, the dispatcher enters a company name, the
amount of interchange, start and stop dates and times, ramp in and out rates, and price. At the transaction
start time, the transaction handler ramps in the transaction amount. The amount that is ramped in at any
given time is shown for each transaction on the Interchange display.
Both the AGC and Economic Dispatch programs contain support for jointly owned units:
Hydro-electric generating units are supported via a lead/lag filter in the unit control loop that compensates
for governor/water column dynamics.
Since the AGC system supports a “scheduled frequency deviation” value, it is possible to perform either
manual or automatic time error correction.
Outputs of the AGC program include calculated values that satisfy the requirements for reporting both
NERC A1/A2 and CPS1/CPS2 performance criteria.
Automatic time error correction and automatic payback of inadvertent interchange can be
accomplished using the WECC calculation of ACE, which incorporates a factor derived from the
accumulated on-peak and off-peak primary inadvertent interchange in the previous hour.
The AGC system’s database is created and maintained by editors integrated into SCADA Explorer. This
allows you to set up and tune the system.
There is no “control panel” provided for operating the AGC system. You create your own custom control
panel using the WorldView user interface. This provides your operators with a familiar interface subject to
the controls and other features that you have designed into your SCADA system. In this document,
reference will be made to some of the typical features such a control panel should include. A suggested
approach to creating such a control panel is described in AGC-401, AGC Database Guide.
However, to conform to the sign convention used by NERC in their discussions of AGC, you may
optionally configure your AGC system to follow that convention instead, i.e.:
Interchange power entering the system is defined as negative.
Interchange power leaving the system is defined as positive.
A positive value of area control error (ACE) indicates a need to decrease your generation.
For the purposes of this Program Description, the STC sign convention will be assumed.
The Automatic Generation Control Database Guide describes the editing facilities that are available to you
to define the Automatic Generation Control database.
The Automatic Generation Control Tuning Guide describes how to tune the Automatic Generation Control
system.
The Interchange Scheduling User’s Guide describes how to use the interchange scheduling feature of the
Automatic Generation Control system.
1.4 Abbreviations
The following is a brief list of abbreviations used in all four documents of the Automatic Generation Control
documentation set.
ACE Area Control Error
AGC Automatic Generation Control
EDC Economic Dispatch Calculation
FFB Feed Forward Bias
ICCP Inter Control Center Communication Protocol
2.1 Introduction
AGC program
This program, called AGC, is responsible for:
Initialization of internal AGC database
The AGC function itself
Reserves and performance criteria calculation
Execution of scheduled interchanges
Transcription of data in the internal database to and from the SCADA point database.
The overall program is described in section 2.2, AGC Program. Details of the AGC function itself are
described in chapter 3, AGC Routine. Details of the reserves and performance criteria calculations are
The AGC programs rely on the SCADA database for certain input and output data. Some of this data
resides in database points, and some is found in AGC database files, which you edit using SCADA
Explorer. If you need additional information about using SCADA Explorer, see DB-400, Windows SCADA
Database Editing Overview.
The AGC database files are found in the SCADA Explorer tree, under Automatic Generation Control, in the
branch labeled Applications. The creation of the required database is described in the AGC-401,
Automatic Generation Control Database Guide. The database files are:
MMDB
In-Memory AGC Database
At startup, the AGC program initializes the contents of the MMDB from the contents of:
The AGC System Data record
The Generator Unit Data file
Tie Line Data file
Interchange Schedule data file
SCADA Point database
After startup, the AGC program proceeds into a never-ending loop that is executed at every AGC cycle.
Inside the loop, the program performs steps in the following order:
Check for messages from other programs, and process them if there are any.
The messages that the AGC program receives are commands from the control panel, which is
described in the Custom AGC Control Panel chapter of the Automatic Generation Control
Database Guide. For diagnostic purposes, AGC may also receive commands from the ScanMon
program described in chapter 9, Monitoring AGC.
The commands received from the control panel are described in section 2.3, Commands From
Control Panel. The AGC program logs every received command on the event logger(s).
Process the interchange schedule file.
This is described in chapter 7, Interchange Scheduling.
Update MMDB data from SCADA.
This consists of transcribing the values of SCADA database points into the MMDB. The points that
correspond to MMDB variables are identified in the AGC System Data, Generator Unit Data and
Tie Line Data database tables.
Perform the AGC function.
This is described in detail in chapter 3, AGC Routine. Note that the AGC program does not itself
issue controls. It leaves instructions to issue controls in the MMDB. These instructions are acted
upon by the AGC Control Output program, AGCTL.
Perform the reserves calculation.
This is described in chapter 5, Reserves and Performance Criteria.
Perform calculations that satisfy the reporting requirements of NERC performance criteria A1, A2,
CPS1 and CPS2.
This is described in chapter 5, Reserves and Performance Criteria.
Transcribe data from the MMDB back into SCADA database points.
The data transcribed from the MMDB consists of outputs of both the AGC and EDC programs. The
points that receive values from the MMDB are identified in the AGC System Data, Generator Unit
Data and Tie Line Data files, and are generally different points from those whose values are
transcribed into the MMDB.
Wait for the current AGC cycle time to expire and then go back to the top of the loop.
AGC Program
Loop
Process messages, if any AGC Routine
Process interchange schedule file
Update MMDB from SCADA Calculate feed forward bias amount
Call AGC routine Calculate ACE component for joint units
Calculate feed forward bias Calculate total ACE
Calculate reserves Perform AGC
Calculate ACE component for joint units Compute actual shares for joint units
Calculate NERC performance criteria Return to AGC Program
Calculate total ACE
Update SCADA from MMDB
Perform AGC
Wait for next AGC cycle
Compute actual shares for joint units
Endloop
Activate AGC
This causes the AGC program to resume its AGC function after having been deactivated. It does not
re-initialize the contents of the MMDB.
Deactivate AGC
This causes the AGC program to suspend its AGC function. Transcription of data to and from the
MMDB continues, as does execution of the interchange schedule (although no AGC controls are
calculated, the total scheduled interchange is computed from the scheduled transactions). As a user-
selectable option, all AGC calculations may be allowed to continue, and only the issuing of generator
controls being suspended.
Re-initialize AGC
This causes the AGC program to restart by re-initializing the entire contents of the MMDB. The
dispatcher or engineer should use this function after having made changes to system or unit data in
the AGC System Data or Generator Unit files.
Although the Re-initialize AGC function updates everything in the MMDB, special functions are available to
allow you to perform a “bumpless” update by updating only the feed forward bias, economic data or tuning
Normally, the EDC program is triggered periodically by the AGC program at an interval specified in the
System Tuning parameters.
3.1 Introduction
This chapter describes the operation of the AGC routine that is called by the main AGC program on every
AGC cycle.
The AGC routine performs five logical steps in the order outlined below:
Calculate feed forward bias
Calculate ACE component for jointly owned units
Calculate total area control error (ACE)
Perform AGC function
Compute actual shares for internal joint units
The shape of the anticipated load change that this defines is triangular, as illustrated in Figure 3-1. If the
load change is positive, the peak value of bias is positive. If the load change is negative, the peak value
of bias is negative. Whenever a change is made to the feed forward
bias parameters, the dispatcher must notify AGC by selecting the The feed forward logic does not
“Update Feed Forward Bias” item in the AGC Control Menu. See support starting and ending
the Custom AGC Control Panel chapter in the Automatic times that span midnight.
Generation Control Database Guide.
Feed forward
ts Starting time
bias MW
tp Peak time
(FFBAMW)
te Ending time
Pp Peak value of bias
Pp
ts tp te time
Provided the dispatcher’s prediction is correct the area control error will, as the load changes, be less
than it would be without this bias.
If a joint unit is controlled by your AGC system on behalf of yourself and the other owners, the unit is
inside your control area and is referred to as an internal joint unit. Each other company’s desired share of
such a unit is represented by a database point whose value may be either telemetered to your system
(via ICCP, for example) or manually set by the dispatcher based on a telephone call.
If a joint unit is controlled by one of the other companies’ AGC systems, it is outside your control area and
is referred to as an external joint unit. In this case, your system should telemeter your desired share of the
unit’s output to that other AGC system (or, you can phone the other dispatcher to request your share).
The AGC program handles joint units, both internal and external, by treating the power shares that flow
across your AGC boundary as adjustments to your actual net interchange. The summation of telemetered
tie flows between you and your neighbors includes components attributable to the jointly owned units.
These must be removed to obtain your “true” net interchange. The net adjustment is stored in a variable
named ACECAP, whose value is simply added to ACE.
As explained below, the treatment of power shares that cross your AGC boundary is different for an
internal joint unit as opposed to an external joint unit.
The contribution to ACECAP from internal joint units is computed as the negative of the sum of actual
power shares of all companies (other than yourself) of all internal joint units that are online.
In the case of an internal joint unit operating in Base Load or Ramp mode, your desired share of the unit
is rate limited against a prorated long term rate limit. In addition, the total desired unit output is rate limited
according to the physical response rate limit for the unit. Therefore, the actual shares are generally not
equal to the desired shares.
The AGC program divides the actual power of each jointly owned unit within your control area into
calculated actual shares for each participating company and stores these values into database points,
from which they may be transmitted to the companies by any convenient method.
The amount of power received at the boundary by you, the owner, is determined by the AGC logic in
terms of power at the bus bar of the unit. Unlike the case for an internal unit, the transmission of power
from the bus bar of the unit to your AGC boundary is not considered to be lossless. The loss incurred in
delivering your share to your boundary is represented by a percentage loss factor for the unit, ULFECi
(where i is the unit in question). The power received at the AGC boundary is given by:
The owner_actual_share_at_busbar is telemetered to your system by the company that operates the joint
unit.
The sum of Preceived for each online external joint unit is added to variable ACECAP.
In the case of an external joint unit operating in Full Control or Base Load and Regulating mode, your
desired share of the unit is rate limited to lie within the long term rate limit for the unit and is limit checked
against prorated high and low regulating limits. In addition, the total desired generation from the unit is
checked against physical high and low regulating limits.
These calculations are described in detail in section 3.4.2. For a schematic illustration of the ACE
calculation, see Figure 3-2.
The feed forward bias component, FFBAMW, is included in ACE regardless of the area control mode
selected by the dispatcher. This was discussed in section 3.2, Feed Forward Bias.
The contribution of jointly owned units, contained in variable ACECAP, is not included in ACE in constant
frequency mode, since this mode is used only when your system is operating with all tie lines open. See
section 3.3, ACE Component for Jointly Owned Units.
The ACE calculation logic assumes that values of FFBAMW and ACECAP have already been computed
by other phases of the AGC routine for the present AGC cycle. Similarly, the scheduled net interchange,
SNI, is also assumed to have been calculated (by the interchange schedule handler of the AGC
program).
Once these components have been computed, the value of ACE is determined according to the selected
area control mode. See paragraph 3.4.2, ACE Calculation, for the details of the calculation.
The main AGC function operates using a filtered value of area control error, called FACE. The logic for
calculating FACE is described in paragraph 3.4.3, ACE Filter.
The ACE calculation changes when there are invalid measurements for tie line MW or joint unit MW
values, or if the system frequency deviates excessively from the scheduled frequency (normally 60 Hz).
These modifications are described in paragraph 3.4.4, Bad Telemetry.
scheduled measured
FEED WITHIN FFB COMPUTE FEED frequency - + frequency
FORWARD BIAS
ENABLED
Yes
TIME RANGE
Yes
FORWARD BIAS deviation deviation
from 60 Hz. from 60 Hz.
FFBAMW = 0 FFBAMW = 0
No No FFBAMW 0
-10 B x f
+ +
+
-
ACECAP
+
- +
CLOSED FOR TLB & CNI AREA ACE
CONTROL MODES AND ALL TIE MW
MEASUREMENT VALID AND ALL
INTERNAL JOINT UNIT MW
MEASUREMENTS VALID NON-LINEAR
ACE
5 ACECNI FILTER
ASICU
j,k
k=int j=2
FACE
_
ACTUAL + SCHEDULED
FTIEMW NET A
NET INTERCHANGE
INTERCHANGE
where:
ANI = actual net interchange
SNI = scheduled net interchange
ACECAP = the contribution from joint units
FFBAMW = the amount of feed-forward bias, if any
B = preset frequency bias in MW/0.1Hz (a positive number)
Note that since this mode is used when there are no tie line flows, there is no meter correction term.
on / offpeak
II primary
ACE ( ANI SNI ) ACECAP FFBAMW (10 B FDEV ) I ME
(1 Y ) H
This is identical to the equation for tie line bias mode described above, except for the addition of the final
“WECC Automatic Time Error Correction” term.
Y = B/BS, where B is the frequency bias as above, and Bs is the total frequency bias of the
interconnection (the group of interconnected control areas that yours is a member of).
This is also in MW/0.1Hz (note that Bs >> B)
H = correction time period, in hours
IIprimary = the primary II, accumulated separately for on-peak and off-peak hours, using the
method described in section 3.5.2, Primary Inadvertent Interchange.
In down to earth terms, consider the following example. Suppose we experience a sudden increase in
load. If AGC responds to this, it takes some time to generate a raise pulse to the generating unit, and still
more time for the units to respond. If the random load component has disappeared by this time, or
perhaps even reversed direction, then the AGC corrections will do nothing to help and can potentially
degrade the system performance. Allowing too much random noise to affect AGC causes too many
pulses to be sent to the generating units, resulting in excessive wear on equipment and possible loss of
dispatcher and/or plant operator confidence.
The simplest type of noise filter would consist of a time lag acting on ACE. A lag acts as a low-pass
frequency filter. It allows low frequency changes (i.e. sustained changes) to pass through, while blocking
high frequency noise (i.e. short duration changes). However, lags slow down the response of AGC to all
disturbances, thus degrading control system performance.
The next simplest type of filter is a deadband threshold acting on ACE. Small values of ACE are blocked
while larger values pass through unchanged. A deadband, although simple, suffers two major drawbacks
in this application. The deadband will allow a small ACE value to exist indefinitely without correction, and
the deadband becomes less effective in periods such as morning load pickup when the long term average
value of ACE is not expected to be zero. The ACE filter in the Survalent AGC program addresses each of
these problems by implementing a more intelligent deadband.
Operation of the ACE filter is best understood with the aid of Figure 3-3. From ACE, we calculate the
quantity ACEMWH, which is defined as the integral of ACE over a certain long-term period of interest.
Note that the units of the integral of ACE are energy, in MWH. In fact, ACEMWH is an approximation to
the inadvertent interchange accumulated within the latest time period of interest. The period of interest is
defined as twice the constant FK4. FK4 is adjustable, but is generally set to 450 seconds (so the nominal
period of interest is 15 minutes). ACEMWH may also be interpreted as the long-term trend in ACE, either
positive or negative.
The filtered value of ACE is called FACE, and is calculated as follows. The magnitude of ACE is applied
to a simple deadband whose threshold is the constant FK1. If ACE is greater than FK1, then FACE is set
equal to ACE.
If ACE is not greater than FK1, then we compare the magnitude of ACEMWH against the deadband
threshold FK2. If ACEMWH is less than, or equal to FK2, then both ACE and its long-term trend are small
and we block control (i.e. set FACE to zero). But if ACEMWH is greater than FK2, then the inadvertent
interchange is significant enough that we may want to act on it.
However, we may still wish to not allow ACE to pass through in this case. We do not want to add any lag
or phase shift to the signal. Therefore, the strategy of the filter is to apply selective rectification to ACE. If
the sign of ACE is the same as the sign of ACEMWH, then allowing ACE to pass through will act to
reduce ACEMWH. If the signs are different, then passing ACE through would increase the magnitude of
ACEMWH, so we block it.
enter with
ACE &
ACEMWH
YES
| ACE | > FK1
NO
NO
| ACEMWH | > FK2
YES
NO
ACE * ACEMWH > 0
YES
EXIT
WITH
FACE
For this purpose, blocking ACE consists of setting FACE to zero. Passing it through consists of setting
FACE equal to ACE times FK3. This additional constant, FK3, controls how aggressively we attempt to
force ACEMWH to zero. Normally, we set FK3 to 1.0 so that the strength of ACE is the same both above
and below the FK1 deadband. However, FK3 may be increased or decreased to speed up or slow down
the return of ACEMWH to zero, respectively.
Note that the value of ACEMWH used above is not exactly the same thing as the inadvertent interchange.
The difference is that ACEMWH considers only a relatively brief period of history, and the reason for
using ACEMWH is to prevent AGC from attempting to correct relatively old errors.
To calculate ACEMWH, we first lag ACE by FK4 seconds to get the quantity ACEL1. We further lag
ACEL1 by FK4 seconds to get the quantity ACEL2. ACEMWH is then computed as the integral of ACEL2.
At startup, ACE filter initialization consists of setting the following variables to zero: ACEL1, ACEL2 and
ACEMWH. The filter constants FK1, FK2, FK3 and FK4, along with the parameter EFFCYC are all
adjustable System Tuning parameters, found in the AGC System Data file. They can be edited using
SCADA Explorer. See the Automatic Generation Control Database Guide.
The primary goal of the ACE filter is to reduce control effort (i.e. the number of pulses sent to the
generating units). This corresponds to reducing the number of times we develop a non-zero value of
FACE. To help you tune the ACE filter, the AGC program computes a quantity, called EFFORT, which
represents an approximation to the fraction of time that FACE is non-zero (and therefore the fraction of
time that controls are issued). The variable EFFORT is computed by generating values of 1 or 0
depending on whether FACE is non-zero or zero, respectively, and passing these 1s and 0s through a
time lag (with a time constant of “EFFCYC” AGC cycles). The Automatic Generation Control Tuning
Guide (AGC-402) describes how to use this variable to tune the ACE filter.
These maximum values are System Tuning parameters, editable using SCADA Explorer. See AGC-401,
Automatic Generation Control Database Guide.
The LOFREQ and HIFREQ limit values are adjustable System Tuning parameters, editable using SCADA
Explorer. See the AGC System Tuning section in the Automatic Generation Control Database Guide.
The dispatcher is provided with the ability to deactivate the frequency trip logic of the AGC program
should he/she desire to operate outside the range given by LOFREQ and HIFREQ. See the Frequency
Trip Enabled section in the Automatic Generation Control Database Guide.
When we have a bad MW value for a joint unit, and the unit is online, the AGC program sets the values of
ACECNI and ACECAP to zero and increments the counter, IBICU. The tie line checks are skipped when
In the joint unit actual shares calculation, if a bad MW value is encountered, all actual shares (ASICUj,I)
for the unit are set to a large negative number (-1000 MW) to indicate to the requesting company that the
value is invalid and should not be used. When the MW value returns to a valid state, the normal path of
calculating ASICUj,i for the unit is followed and the ASICUj,i values will return to positive numbers.
10 * * TE
1 Y * II total
on / off Peak on / off Peak
updated II previous II primary
primary
60
where:
IItotal is the area’s total Actual Inadvertent Interchange (MWh), on-peak or off-peak, accumulated
during the last operating hour (see 3.5.3).
ΔTE is the hourly change in system time error, including any manual adjustments and the time
error correction:
where:
TEend hour = Time Error (in seconds) at the end of the hour
TEbegin hour = Time Error (in seconds) at the beginning of the hour
TDadj = any operator adjustment introduced to the time error
This accumulated value of primary II includes contributions from both the previous hour’s inadvertent
interchange, and correction of the time error. The value of TE (time error) is maintained by the AGC
program on each cycle by comparing the reference frequency against the actual frequency during that
cycle, and is displayed to the operator in a database point. This point may be manually adjusted by the
operator to make manual adjustment to the time error. In addition, a database point is provided to allow
the user to enter the scheduled frequency offset, δF.
During each on-peak or off-peak period, the corresponding value for the last hour’s actual II is used in the
calculation above for Primary II. This value, in turn, is used in the ATEC term of the ACE equation
described in section 3.4.2.4, to implement automatic “payback” of previous inadvertent interchange, and
automatic correction of the time error.
Figure 3-4 shows a schematic overview of the main AGC logic, with FACE as the primary input signal,
and the determination of the raise/lower pulses or setpoint signals for each unit as the output.
The load allocation logic allows the load to be carried by each unit to be assigned according to one of five
modes (individually selectable for each unit):
Mode 0 – Manual Mode
Mode 1 – Full Control Mode
Mode 2 – Base Load and Regulating Mode
The unit control loop logic exerts closed-loop feedback control over the power output of each generator.
The control loop logic for each unit implements an integral-action controller, with the load reference point
of the generating unit (i.e. the governor speed motor) being driven at a rate that is essentially proportional
to the magnitude of the unit control error UCEi:
+ UEHLRL USER
+ SUMDIF UEPFUP +
DESIRED
OR
UEPFDN
- + UELLRL
+
RATE LIMIT URHLT
MODE 1 UNITS
UEBP ONLY
UDES TO
MODE 1 UNITS UERATE FOR
+ UEBP FROM EDC IF THE UNIT
URLLT
UEP OTHER
MODE 1 UNIT
MODE 2- 4 UNITS
MODE 1
FROM YES
UNITS
DISPATCHER IF
UEP MODE 2 UNIT
NO
EXTERNAL
JOINT UNIT
D
1
+
REGULATING + RATE LIMIT UNIT
FACE GAIN FACTOR UDES MODE
RF TO : K10 * KFR 1 OR 2
+
2
OTHER
MODE 1 OR 2
UNITS UEBP * (1 + BLRR)
A MODE 1 AND 2
UNITS
EMERGENCY
ASSIST OTHER
UEBP * (1 - BLRR)
DEADBAND MODE 1 OR 2
UNITS
EMERGENCY
ASSIST
FACTOR
AF
DESIRED SHARES OF
EXTERNAL JOINT
COMPANIES
2 3 4 5
+ + + +
5
CDES = DSICU
2
CDES
URHL
UDES = UDES + CDES UDES
B C
URLL
UDES
YES
UEHLT
USER DESIRED INTERNAL
JOINT UNIT
UELLT
NO
UDES
RATE LIMIT
UDES
TOWARD
UEBP
UDES
UNIT RAMP
BASE POINT PARAMETERS
Only those units in Full Control mode will have economic participation factors UEPFUPi and UPEFDNi,
calculated for them by the EDC program and used in the AGC program.
Units in the other modes have zero economic participation factors set for them by the EDC program. The
EDC program also calculates “rubber” high and low limits for each unit in Full Control mode. These are
stored in MMDB variables UEHLRLi and UELLRLi respectively. These are used by the AGC program to
limit the UEPi value for each unit, and thereby ensure that the economic component does not exceed the
long-term rate-limited value to be allowed.
The EDC program calculates two sets of economic participation factors each time it executes as follows:
UEPFUPi = Unit economic participation factor for increasing load changes since the last run of EDC
UEPFDNi = Unit economic participation factor for decreasing load changes since the last run of EDC
The AGC program performs a check to see which set of economic participation factors should be used
during any particular control cycle. The check is based on the sum of the base points for Mode 1 – 4
units, the output of Mode 1 – 4 units, and the filtered value of ACE. The test consists of:
Calculate the sum of the actual unit powers for Mode 1 through 4 units, plus FACE:
SUMP1 = Σ(UMW i of Mode 1-4 units) + FACE (where Σ represents the “sum of”)
Calculate the sum of the base points for Mode 1 units and economic path components, UEPi, for
Mode 2-4 units:
If SUMDIF is positive, use the factors for increasing load. If SUMDIF is negative, use the factors for
decreasing load.
Note that the economic participation factors always, by definition, sum to either zero or unity. If a unit hits
its economic high or low limit, and hence is unable to satisfy rule (1), a new EDC is requested by AGC to
update the UEBPi, UEPFUPi and UEPFDNi values.
While the allocation of (1) will eventually neutralize the value of FACE, it is usually desirable to allocate
short-term unit loading changes to each Mode 1 unit to cancel FACE in different proportions from that
given by the economic participation factor, UEPFi. The Full Control mode allocation therefore adds a
regulating component of loading onto the economically allocated loading of each unit as follows:
The system gain variable, GAIN, is calculated as the sum of all regulating factors for units that are
controllable in each AGC cycle, divided into the sum of the regulating factors for all units marked as
existing and equipped for AGC. The value of GAIN is limited to a maximum of 3.0 to avoid any control
instability problems that might result when several units capable of being controlled are removed from
control. Each unit’s regulating factor, RFi, should be set in proportion to its regulating abilities. Note that
the regulating factors do not necessarily sum to unity.
The regulating contribution is augmented by an “assist action” component whenever the magnitude of
ACE exceeds a field-tunable threshold, K01.
The regulating contribution is augmented by an “assist action” component whenever the magnitude of
ACE exceeds a field-tunable threshold, K01.
Until the ramp start time is reached, the unit is controlled as though it was in Base Load mode, using the
dispatcher-entered value of UEBPi. At the time that the ramp is started, the AGC program computes the
following delta MW for the ramp:
RMPMW UEBPi
RMPDEL
RMPTM 60 DELT
where DELT is the control cycle period of the AGC program. Thereafter, until the ramp stop time is
reached, the value of UEBPi is adjusted at each AGC cycle as follows:
Subject to the ability of the unit to move at the rate implied by RMPDEL, the unit will be at the desired
destination value, RMPMW, at the end of the specified ramp time interval, RMPTM. If the unit cannot
move this fast, its output will eventually arrive there automatically subject to its ability to generate
RMPMW megawatts.
The desired value of generation for a unit is determined as the sum of three components:
UDESi = Economic + Regulating + Assist
For units in Base Load or Ramp mode, the Regulating and Assist components do not apply. For units in
Full Control or Base Load and Regulating mode, all three terms apply.
The economic component is the variable UEPi, and in fact, in the case of units in Mode 2, 3 or 4, is
identical to UDESi. Thus we rate limit UDESi for units in these modes by rate limiting changes in UEPi to
the prorated long term rate UERATEi for each unit. If the dispatcher or plant operator specifies a new
base point, say 10 MW larger than the old one, UEPi is allowed to increment upward toward the new
value each AGC cycle but not faster than the rate limit UERATEi.
In the case of a unit in Full Control mode, the base point is determined by the EDC program, and the
economic component, UEPi, is determined as a function of that base point and the economic participation
factor applied to the change in generation requirement since the last execution of EDC. EDC respects the
long-term rate limit, UERATEi, for the unit when determining the base point. However, the participation
factor does not. Therefore, the economic component,
UEPi, can, in the presence of a large value of ACE, We do not rate limit UEPi to the fast
change faster than the short-term response rate limit for rate for either Full Control or Base
the unit. Load and Regulating mode
In the case of Full Control or Base Load and Regulating mode, we compute a new value of UDESi
comprised of the three components, each cycle. We then check this new value against the value for the
last cycle. If the change is greater than that allowed by KFR * K10, we limit the new value to be the old
plus the allowable change for one cycle. If K10 (a system-wide constant) were 3, and the fast response
rate for the unit, KFRi, were 3.0 MW/minute, the allowable change each cycle would be 3 * 3.0 DELT/60 =
0.6 MW/cycle. If K10 were set to unity, the allowable movement would be 0.2 MW/cycle.
Pulse
Strength
ideal
practical
approximation
The scheme of Figure 3-5 has the disadvantage that a small but persistent value of UCEi would not cause
control action. This is overcome by accumulating the value of unit control error in UCEACCi, and
transmitting a pulse whenever the value of UCEACCi exceeds a threshold, K07i, for the unit. A further
check is made on the magnitude of unit control error, UCEi, to determine if a long pulse should be sent. If
The use of the accumulator, UCEACCi, to recognize small values of UCEi prevents small unit errors from
persisting indefinitely, and also provides a degree of filtering of small random components in the UCEi
signal.
The values of the thresholds K07i and K09i, and of the pulse strengths, are field adjustable to allow
optimal tuning of each unit.
Pulse
Strength
long raise
short raise
short lower
long lower
Consider, for example, the transfer of load from a fast-responding unit to a slower-responding unit,
initiated by stepping down the UDESi value of the fast unit and stepping up the UDESi value of the slow
unit. Without this permissive control feature, the fast unit would unload before the slow unit could pick up
the corresponding load, and a positive value of ACE would develop. The permissive control logic allows
pulses only when UCEi and ACE have the same sign, and hence would slow down the response of the
faster unit to match that of the other. It would not, however, limit the ability of the fast responding unit to
move quickly in response to a large ACE signal of opposite sign to UCEi.
The unit’s detected rate, SUMPi, and lagged rate, SUM4i, are obtained by solving the Laplace transfer
functions below in a digital manner:
SUMPi UMWi T 3
1 T 3
Pulsing is blocked any time the absolute value of SUM4i exceeds K08i, as explained in paragraph 3.6.4.3,
Long Term Rate Limiting. If the unit had been moving in one direction long enough and fast enough to
cause SUM4i to exceed K08i, and a reverse change in UDESi would cause the unit to move in the
opposite direction, pulsing will be allowed almost immediately. Almost immediate pulsing will occur
because the sign of UCEi will quickly become opposite to that of SUM4i and pulsing is allowed even
though the absolute value of SUM4i exceeds K08i. SUM4i will then build from, say, a number smaller than
–K08i to +K08i before pulsing would be blocked once again. This will allow the unit to move at the fast
rate KFRi for approximately twice as long as we want to allow.
This is a problem that is overcome by employing two additional lagged rates of SUMP i, S4Pi and S4Ni,
which are computed as follows:
S 4 Pi SUMPi 1
1 T 4
S 4 N i SUMPi 1
1 T 4
The reason for the test against KDi is simple: we do not wish to reset either S4Pi or S4Ni due to noise on
the UMW i signal for the unit.
Once the reverse change in UDESi causes the unit to move fast and long enough to build the absolute
value of S4Pi or S4Ni to exceed K08i, pulsing is blocked. Eventually the absolute value of SUM4i will build
to exceed K08i. Until that time we would have had blocking due to either S4Pi or S4Ni. At the time the
absolute value of SUM4i reaches or exceeds K08i, the appropriate value of S4Pi or S4Ni will be set to
SUM4i.
SUM1i UDESi 1
1 T1
Since this single time constant model is only an approximation to the actual unit response, small and
short-lived discrepancies between SUM1i and UMW i do not indicate a failure to respond. The tracking
failure indication is therefore based on SUM2i, where:
and
SUM 2 i ERR 1
1 T 2
SUM2i can build up to a significant value only if the discrepancy between UMW i and SUM1i exceeds KDi
and persists for a time determined by T2. A “not tracking” alarm is generated when SUM2i exceeds K06.
The values of T1, T2, KD, and K06 are field adjustable.
A change in unit control status does not change a unit’s control mode. Hence a unit operating in Full
Control mode may be switched from “on AGC” to “off AGC” status without having to alter its mode setting.
The dispatcher may also change control mode without changing control status. Note that when the
dispatcher sets a unit to Manual mode, the unit’s control status remains “on AGC” even though the AGC
program will not issue any controls to it.
The value of IBUCMX is the same for all units and is field adjustable.
REGUP
The amount of regulating capacity available in the upward direction from units in Full Control or Base
Load and Regulating modes:
REGUPi URHLTi UMWi
(where Σ represents the “sum of”)
REGDN
The amount of regulating capacity available in the downward direction from units in Full Control or
Base Load and Regulating modes:
REGDNi UMWi URLLTi
RMWMW
The total regulating gain, in MW, of regulating power for units in Full Control or Base Load and
Regulating modes that will be ordered in response to a 1 MW ACE signal:
RMWMWi GAIN RFi
A low value of any of these quantities indicates that more regulating capacity is needed. Alarm limits can
be placed on the points that receive these calculated values so as to alert the dispatcher that these
quantities may be less than the requirements.
Whenever the AGC program determines that the EDC program should be executed, it sets bit 11 of the
system status word ISSWA.
Because it may take many control cycles to move unit outputs to the calculated base points, it is
necessary to conditionally inhibit requests for EDC execution for cases (a) and (b) above. This is done in
the following way. When EDC executes successfully, it sets bit 8 of the system status word ISSWB. AGC
examines this bit each time it executes. If the bit is found set, AGC clears it and zeroes a counter,
IEDCNT. If the bit is found to be zero, the counter is incremented by one each AGC cycle. So long as the
If EDC dispatches all units in Full Control mode to economic high limits or all of them to economic low
limits, it sets bit 5 of ISSWB. While this bit is set, AGC requests for EDC execution for cases (a) and (b)
are inhibited.
For external joint units, the signal is a setpoint and corresponds to the desired MW output at the bus bar
of the joint unit. This signal is transmitted directly to the control center computer of the company operating
the unit. Aside from the fact that this signal is reduced by the external loss factor and input to the joint unit
component of ACE (see section 3.3, ACE Component for Jointly Owned Units), no post-AGC operations
are imposed on the signal.
This is not the case for an internal joint unit with joint companies other than the owner requesting a
portion of the output of the unit at the bus bar.
Each non-owner joint company having a percentage entitlement of an internal joint unit telemeters a
requested “Desired Share – Internal Joint Unit”, DSICUj,i, for each company “j” for internal joint unit “i”.
The AGC main logic calculates a DSICU1,i for the owner prior to the set-point or pulsing logic. Then, all
DSICUj,i values for a unit are summed together to obtain the total value of desired output of the unit,
UDESi, which is then subjected to physical regulating high and low regulating limits and used by the rate-
limiting, not-tracking and pulsing or set-point logic modules.
Control action is then exerted on the unit. The value of output, UMW i, for the present control cycle is then
apportioned to each joint company and sent as a value, ASICUj,i, to each company that lodged a request
on the unit. The determination of ASICUj,i for each unit and joint company is described below.
The values of ASICUj,i for each joint company is calculated as a function of:
DSICUj,i
The desired share of internal joint unit, for each company “j”
UCEi
The value of unit control error
UMWi
The telemetered value of the unit’s output in MW
TOL1
An adjustable tolerance value of UCEi to determine which of two paths should be used to calculate
the value of ASICUj,i for each joint company
First, a test is performed to see if the absolute value of UCEi is within TOL1, a small tolerance consistent
with normal AGC action. If so, the value of ASICUj,i for each company is set to:
DSICU j ,i
ASICU j ,i UMWi
DSICU j ,i
where Σ represents the sum of the DSICU of all the companies. The following internal program variables
are computed:
ASOj,i = ASICUj,i
DSOj,i = DSICUj,i
UMOi = UMW i
If a joint company lodges a significant change in its desired share, DSICUj,i of the unit, and the unit’s
output has not had time to change accordingly, then Path A would unfairly readjust the shares of other
companies which did not change their DSICUj,i values. Another path, “Path B”, takes care of this situation.
When a company lodges a significant change in DSICUj,i, a significant absolute value of UCEi develops.
Testing the absolute value of UCEi against the tolerance TOL1 determines if Path B is to be used. If Path
B is entered, the values of ASOj,i, DSOj,i and UMOi from the last pass through Path A are used.
In Path B, the change in DSICUj,i from DSOj,i is determined for each company. This is denoted as ∆DSj,i.
This ∆DSj,i is then summed for all companies, j, and the absolute value of the sum is tested against
another tolerance value, TOL2. The purpose of this test is to determine if the summation of changes in
DSICUj,i essentially offset each other, and therefore would not result in a significant change in output of
the unit through control action. If the sum is less than TOL2, we branch into Path A and continue as
normal. Otherwise, we proceed into Path B.
DS j ,i
ASICU j ,i ASO j ,i
DS j , i UMWi UMOi
The foregoing is designed to treat all If the unit is placed in Manual mode, the dispatcher
companies fairly.
or plant operator must assume the responsibility to
manually move the unit to match the total desired
Should an internal joint unit have a bad
share requested by the joint companies.
telemetered MW value, the calculated values
of ASICU for the unit will be erroneous. In this
case, we set the ASICUj,i values for the unit to a large negative value (-1000 MW) and also set the value
of UMOi for the unit to –1000 MW. The large negative values of ASICUj,i indicate to the requesting
4.1 Introduction
Economic Dispatch Calculation (EDC) is a program that dispatches the system generation required to
supply a given load. For each generating unit under economic dispatch, the EDC program calculates the
optimum economic megawatt base points and economic participation factors.
The dispatch calculation is based on the principle of operating all dispatchable generators at the same
incremental cost of generation (“lambda”, λ), and uses an iterative procedure.
Transmission losses within the owner system are not considered since the owner system is considered to
be lossless for purposes of dispatch. Penalty factors are supported, however.
UF C df i IM i PFi
i
dp
i
i
In addition to the coordination equations, the following power balance equation must be satisfied for all
units on control:
DG is normally FACE, but is limited to the maximum MW that all units on control may move during the
interval between EDC executions. DG always has the same sign as FACE.
The EDC program consists of an inner loop and an outer loop. The inner loop is a binary search routine
for solving the coordination equations in order to obtain base points for a fixed value of LAMBDA (λ).
During this solution, it is necessary to recognize the high and low economic limits and the program-
calculated high and low rate limits as shown in Figure 4-1.
Once a set of base points have been determined by the inner loop, the outer loop checks whether the
power balance equation is satisfied. If not, LAMBDA (λ) is adjusted upward or downward, and the inner
loop is re-entered to compute a new set of base points.
In case (b), an alarm is raised and the base points and participation factors are left unchanged from the
previous run.
Base points
limited to Base points
this range are always
during the limited to
present (t) (max. response rate) this range.
execution of
the EDC
routine.
t = N minutes
If a valid solution is obtained, the program then computes the economic participation factors for those
units that are to follow load. The economic participation factors for units that do not follow load are set to
zero.
Economic participation factors are calculated assuming that the slope of the LAMBDA versus generation
curve is constant over a short range. The load is increased by a percentage, and a new dispatch is made.
The economic participation factors to be used when load is above the sum of the base points are then
calculated as follows:
The load is then decreased by the same percentage below its original value, and another new dispatch is
made. The economic participation factors to be used when load is below the sum of the base points are
calculated in the same way as the increasing ones.
The EDC program uses the same dispatch calculation subroutine in all four cases. This subroutine is
described in paragraph 4.3.1, Dispatch Calculation Subroutine.
The binary search method operates by dividing the search region into two, deciding which half the desired
result is in, then dividing that half into two, and so on until a solution is obtained. The procedure is
illustrated in Figure 4-2.
The calculation starts with a value of DESGEN = sum of all generation from telemetry, and an initial value
of LAMBDA = LAMBDA1, (which is usually the value from the last EDC). Using the initial value of
LAMBDA, the total generation is calculated. This is either higher or lower than the desired value. The
value of the difference is multiplied by an estimate of the slope of the curve to give a LAMBDA step size.
LAMBDA is then increased or decreased by the step size, depending on whether the error is negative or
positive, and the total generation is re-calculated. When the difference between the calculated generation
and desired generation changes sign, the search range has been defined. In Figure 4-2, this range is
LAMBDA3 to LAMBDA2.
Now the binary search proper begins. The new LAMBDA estimate is set to the middle of the search range
and the step size is set to ¼ of the search range. Generation is calculated at this value of LAMBDA and
compared with desired generation. The difference must be within the tolerance for a converged solution.
If the solution has not converged, a new LAMBDA estimate is formed by adding or subtracting the step
size to or from LAMBDA, depending on whether the error is negative or positive. The step size is halved
and the program goes back to compute the total generation at the new operating point.
This procedure is repeated until the solution converges or until the iteration limit is reached. The solution
is considered to have converged when the error (MW n – DESGEN) is less than a specified fraction of
DESGEN. This fraction, ERRTPW, is adjustable via the AGC System Tuning parameters (see the
Automatic Generation Control Database Guide). If the solution fails to converge, an alarm is raised.
MW
MW1 MW2 DESGEN MW3
The last step performed by the dispatch calculation subroutine is to determine whether or not all of the
generators on control are at limits, and to set a flag if they are all at high limits or all at low limits.
This binary search algorithm will always work for the economic dispatch calculation when
given a realistic set of conditions. Cases can be found for which the Gauss-Seidel method
would be unsuccessful, including the case where the heat rate curve has discontinuities.
These discontinuities, which the Survalent AGC system supports, would cause the Gauss-
Seidel method to fail since it uses the slope of the LAMBDA versus generation curve to
choose its next value, and the slope at a discontinuity is infinite.
Using the fuel cost for the unit, the generation calculation subroutine converts the incremental cost to an
incremental fuel rate DI. It then uses this value to locate the operating point on the incremental fuel rate
curve (see Figure 4-3):
DI IPi 1
PNEW MWi 1 MWi MWi 1
IPi IPi 1
The generation calculation subroutine correctly handles discontinuous heat rate curves. The system
incremental cost may fall in the gap between two curve segments. In this case, unit output is held at that
MW value until LAMBDA reaches the upper curve segment. See Figure 4-4.
IP
i
DI
IPi-1
MW i-1 Pnew MW i MW
Incremental
fuel rate
10250 10500
9750
9250 10000
9000
9500
8750
8500
Joint unit generation is treated by the program identically with owner (non-joint) unit generation, with
the exceptions noted in section 4.6, Joint Unit Representation.
The system operator can enable an “evaluation pass” for one or more units. The results of the
evaluation pass dispatch are not passed to the AGC program but are merely made available for
output to the dispatcher. This helps the dispatcher to determine desired base points for units that are
in manual or base load mode of operation.
Each generator unit can be represented by three dispatcher-selected incremental heat rate curves.
Each generator unit can be represented by three complete sets of economic parameters – fuel cost,
unit adjustment factor, high and low limits, etc.
Economic participation factors are computed for both upward and downward changes about the value
of system load that is used in the calculation of the economic base points of the online EDC.
The AGC program uses the upward participation factors when the load is above the sum of the base
points, and it uses the downward ones when the load is below the sum of the base points. Whether the
load is actually increasing or decreasing is immaterial.
The EDC program does not observe any spinning reserve constraints. A reserves calculation routine in
the AGC program computes reserves at every AGC cycle. Alarm limits may be placed on these computed
reserve values to warn the dispatcher when reserves are inadequate. In such cases, the dispatcher must
take action independently of the EDC program.
With only these two exceptions, the dispatch calculation treats joint units in the same way as
owner units.
Base points and recommended base points for joint units are stored “as is”. That is, the arrays UEBPi and
UBPEPMi show just the owner’s share of them. Similarly, the rate-limited high and low limits (UEHLRLi
and UELLRLi) that are calculated by the EDC program are also just the owner’s share of them.
Each of the six straight line segments defined by the seven points must have positive (non-zero)
slopes. A discontinuity may be represented by
specifying a second heat rate value (in HEATRP) A zero value in a HEATRP cell means
for the same amount of generation (HEATMW). In that there is no discontinuity there.
the example above, which is illustrated by Figure Since you can’t have a discontinuity at
4-4, there is a discontinuity in the heat rate curve either end of the curve, the first and last
at both 40 MW and 80 MW. cells of HEATRP are not used.
Fuel cost for each fuel type for each unit.
4.8 Outputs
Output data from the EDC program consists of:
The base points for all online thermal generating units on full AGC control (Mode 1).
The recommended base points for all units with evaluation pass enabled.
The economic participation factors for all online generating units that are to participate in load
following (i.e. units in Full Control mode).
The rate-limited high and low limits (see Figure 4-1) presently being used in the computation of the
base points for each controlled generating unit.
The latest value of the incremental cost of received power (i.e., LAMBDA, λ) based on system actual
generation at time of dispatch. Note that this value has no meaning when all units on control are at
limits.
The total generation from dispatched units.
Flag indicating all units at limits.
Flag indicating non-convergence.
5.1 Reserves
The reserves calculation routine is called by the AGC program at every AGC cycle. Calculated reserve
values are stored in analog database points on which you can place alarm limits, so that the dispatcher
can be warned when reserves are below requirements.
If you want, you can instruct the reserves calculation routine to adjust the alarm limits on spinning and
operating reserves for you as a function of system load. This is done via points specified in the following
three fields of the AGC System Data file:
Spinning Reserve Required %
Operating Reserve Required %
Additional Operating Reserve Required MW
1. Calculate the spinning reserve of each normal owner unit that is synchronized to the system and
to be counted toward reserves (according to the reserve category for the unit). This is the smaller
of the following:
o Unit regulating high limit - Unit actual output
o Unit AGC response rate limit multiplied by 10 minutes.
2. Calculate the spinning reserve of each internal joint unit synchronized to the system and to be
counted toward reserves (according to the reserve category of the unit). This is the smaller of the
following:
o Unit regulating high limit * owner share of unit - owner share of unit actual output
o Unit AGC response rate limit * owner share of unit * 10 minutes
3. Calculate the spinning reserve of each external joint unit synchronized to the system and to be
counted toward reserves (according to the reserve category of the unit). This is the smaller of the
following:
o “Physical” unit regulating high limit * owner percent entitlement - owner’s share of the unit’s
actual output at the bus bar as received by data link.
o “Physical” unit AGC response rate limit * owner percent entitlement * 10 minutes.
Spinning reserve contributions from external joint units are then diminished by the transmission
loss factors (ULFECi) of the respective units.
4. Calculate the system spinning reserve by summing the unit spinning reserves determined in (1),
(2) and (3), and adding in the value of foreign spinning reserve.
5. Determine the non-spinning reserve contribution of each unit that is not synchronized to the
system and to be counted toward non-spinning reserve (according to the reserve category of that
6. Calculate the system non-spinning reserve by summing the unit values from step (5) and adding
the value of foreign non-spinning reserve as entered by the dispatcher.
7. Calculate the system operating reserve by adding the values of system spinning reserves and
system non-spinning reserves from steps (4) and (6).
If you enter a non-zero value for the % required operating reserve, AGC updates the lower pre-
emergency alarms limit on the operating reserve point every 5 minutes as follows:
where KCPS1 is field programmable, typically derived from the targeted frequency bound for your
control area (ε1). The resulting value of CPS1 is expressed in percent.
When either the ACE or frequency error term is zero, the value of CPS1 will be 200%. It will be higher if
ACE is working to correct frequency error, but will be lower if ACE is aggravating the frequency error.
The AGC program also computes this month’s and last The monthly averages exclude minutes
month’s averages and stores these in other database during which AGC was either not running
points. Last month’s average can be collected in a or was deactivated (unless you have
historical dataset. configured the option to continue all
calculations while AGC is deactivated).
The constant KCPS1 and the database points used are
specified in the AGC System Data file. See the Automatic Generation Control Database Guide.
Compliance reporting may consist of exporting and averaging these averages over your reporting interval,
and dividing by a constant that is derived from the targeted frequency bound.
The AGC program’s CPS2 calculation includes maintenance of monthly counts of:
valid 10-minute intervals (intervals during which AGC was running and not deactivated)
valid 10-minute intervals that contain violations based on a user-defined limit (L10)
Using these, the AGC program maintains both the current month’s and last month’s CPS2 values as
follows:
6.1 Introduction
This chapter describes the program that issues AGC controls to the RTUs on behalf of the AGC program.
This program is called AGCTL.
The AGC program indicates what controls it wants issued via the following MMDB variables:
IURLP
This is an integer array of dimension MXUNT (the number of generator units). Each element i of this
array contains a code that specifies one of the following controls for unit i:
USET
This is a real-number array, also of dimension MXUNT. If the control code in IURLPi is 8 or 9, the desired
setpoint is contained in USETi.
At every AGC cycle, AGCTL checks the control code contained in each element of IURLP. For each
control code that is non-zero, AGCTL performs the following:
In either case, AGCTL waits for a checkback response from the scan task, and then immediately goes on
to check the control code for the next unit. AGCTL does not check for any results of the control. (The
AGC program contains separate logic to check that the unit is following.)
If the checkback response indicates success, then AGCTL sets the control code to zero. If the checkback
response indicates failure, then AGCTL does not immediately retry the control. Instead, it leaves the
control code unchanged for another attempt at the next AGC cycle. If, in the meantime, the AGC program
changes its mind and decides that it wants a long pulse instead, that’s fine. The AGCTL program will
execute whatever control code it finds in IURLPi on the next cycle.
If the checkback is successful, and logging of controls is enabled for the unit (via a database point defined
in the AGC Generator Unit database file), then AGCTL logs the control by means of a zero-priority alarm.
The short pulse width for each unit is a tuning parameter defined in the AGC Generator Unit file. All of the
points for each generator are also defined in this file See the Automatic Generation Control Database
Guide.
Note that although AGCTL waits for a checkback response from the scan task, this does not mean that
you cannot use controls to which the RTU does not issue response messages. (These are the most
bandwidth-efficient type of controls to use for this purpose.) The checkback response message from the
scan task simply means that the scan task has done its job with the RTU and encountered no errors.
The long pulse width for each unit is a tuning parameter defined in the AGC Generator Unit database file.
See the Automatic Generation Control Database Guide.
As in case of pulse controls, AGCTL waits for a checkback response from the scan task, and then
immediately goes on to check the control code for the next unit. AGCTL does not check for any results of
the control (the AGC program contains separate logic to check that the unit is following).
7.1 Introduction
Scheduled interchanges are defined by the dispatcher via the Interchange Transaction application.
Running this user-interface application will produce the AGC Interchange Scheduling display, shown in
Figure 7-1. The Interchange Scheduling User’s Guide describes how to use this display.
The SNI quantity is used as a component of the ACE calculation in the tie line bias modes (with or without
ATEC) and the constant net interchange mode. (See paragraphs 3.4.2.1 Tie Line Bias, 3.4.2.2 Constant
As soon as a scheduled interchange transaction becomes due, the interchange handler routine begins to
ramp toward the full transaction amount at the specified ramp-in rate. The ramp is performed by
incrementing a current amount value for the transaction. (If the full scheduled amount is negative, the
current amount is decremented toward that negative value.) It is the sum of these current amount values
for all overlapping transactions scheduled that forms the SNI quantity (scheduled net interchange). When
the current amount reaches the full scheduled amount, that transaction is fully ramped in.
When an interchange transaction’s end time is due, the interchange handler ramps the transaction out by
decrementing (or incrementing, for a negative amount) its current amount value at its ramp-out rate. As
the current amount ramps toward zero, the transaction‘s contribution to SNI also goes to zero. When the
current amount is zero, the transaction is fully ramped out.
Such transactions may be scheduled in order to manually pay back inadvertent interchange that had
accumulated prior to making use of the automatic payback capability of the Tie Line Bias with ATEC
control area mode.
8.1 Introduction
The contents of the AGC data files listed above are edited using SCADA Explorer, via the AGC editors
described in the Automatic Generation Control Database Guide.
MMDB stands for Main Memory Data Base, and is a shared common area that contains common
operating variables used by all of the AGC processes (AGC, AGCTL and EDC). In this document, the
description of the AGC functions are in terms of the variables in the MMDB common area, and hence, for
reference, a list of the contents of the MMDB is provided in section 8.2, Contents of the MMDB, and
section 8.3, MMDB Status Words.
Section 8.4, AGC Database Report, describes a report program that you can use to obtain a report of the
current data contained in the MMDB.
Most of the database points specified in the AGC editors have their values transcribed either into or out of
variables in the MMDB. The MMDB variables associated with these database points are identified in the
editing descriptions contained in the Automatic Generation Control Database Guide.
The common data memory areas PNTCOM and MMDB, along with some internal shared data, are
implemented as a Windows dynamically-linked library named MMDB.DLL. This file must be present on
disk along with the AGC program files, although it does not contain any valid data until run-time.
Compile-time system sizing parameters used to dimension arrays are shown in the table below:
In the example of Figure 8-1, there are two tie lines and three generator units defined in the system.
Because the size of the report might overflow your Command Prompt window’s buffer (making it
impossible for you to scroll back to review the results), the program will prompt you to type the Enter key
after the system and Tie Line data, prior to displaying each unit’s data. Similarly, the program will prompt
you at the end, before it exits (which could close the window). This allows you to control the flow of data,
and to look for the information in the report that is of interest to you.
----------------------------------------------------------
REAL-TIME SYSTEM DATA FROM SCADA
----------------------------------------------------------
OPERATOR INPUTS
----------------------------------------------------------
SYSTEM STATUS WORD A
----------------------------------------------------------
SYSTEM STATUS WORD B
----------------------------------------------------------
SYSTEM PARAMETERS
----------------------------------------------------------
COMPUTED RESULTS
----------------------------------------------------------
SYSTEM TUNING DATA
----------------------------------------------------------
OTHER SYSTEM STUFF
----------------------------------------------------------
INTERNAL AGC PROGRAM DATA
----------------------------------------------------------
TIE LINE DATA
Tie # 1
----------------------------------------------------------
UNIT DATA
Press ENTER to view next unit data.
Unit # 1
Unit # 3
>
Your SCADA system includes a client program called ScanMon that allows you to monitor various
programs in the system. ScanMon is discussed in detail in Survalent SCADA System Manager’s Guide
for Windows (document number SM-400).
Once ScanMon is connected to the AGC program, it will periodically log information to help you
understand how the program is operating. This subject is discussed more fully in AGC-402, AGC Tuning
Guide.