You are on page 1of 1

Dynamic Load Model Validation from Measurement

Data Playback and Automated Curve Fitting in PSS/E

Micah J. Till1, Solomon Yirga2


1 The University of Tennessee, Knoxville 2 Dominion Virginia Power, Richmond, VA

INTRODUCTION
With the proliferation of dynamic load models that can accurately represent protection scheme reactions
and FIDVR events, the data required to model a single point of delivery well has dramatically increased.
Even once measurement data on motor types and the residential/industrial demographics of an area are
collected, translating the survey results into the hundreds of required parameters is not a straightforward
process. This project offers a way to cut through the work of performing load surveys and interpreting the
data for PSS/E parameters by instead obtaining accurate parameters by curve fitting dynamic load
response to actual measurement data. This process can be automated so that the user need only submit
measurement data with the identity of the bus at which playback should occur.

STEP 0. MEASUREMENT DATA RESULTS


Format recorded voltage data into two CSV files: Measurement Data PSS/E Simulation
• The first with voltage data and the bus number 1.1 1.1
1 1
• The other with the power curve and the load ID
Voltage (pu)

Voltage (pu)
0.9 0.9
0.8 0.8
0.7 0.7
STEP 1. MODIFY CONEC CODE 0.6 0.6
0.5 0.5
PSS/E does not provide a tool to inject data into 0.4 0.4
dynamic simulations. To get around this: 0 1 2 3 4 0 1 2 3 4
Time (s) Time (s)
• The CONEC.flx FORTRAN code is modified to
Figure 1. As seen here, the input voltage data is played back at the
pull the voltage data from the CSV file and PSS/E bus exactly as it was originally recorded in the CSV file.
inject it into the run as the Efd of a generator at
Measurement Data PSS/E Simulation
the bus in the file header 4 4 (R=0.06)
Normalized Load Curve

Normalized Load Curve

• Compile the new CONEC.flx into duser.dll 3 3

STEP 2. SCRIPT DYNAMIC RUN 2 2

1 1
A Python script performs the following functions:
0 0
• Create the dummy generator for playback 0 1 2 3 4 0 1 2 3 4
• Alter load model parameters as needed Time (s) Time (s)

• Perform the dynamic run to produce an output Figure 2. Originally the simulation result has a 6% match to the desired
load power curve, in other words, there is almost no correlation at all.
channel file with the load power curve
• Calculate the Pearson’s correlation coefficient Measurement Data PSS/E Simulation
4 4 (R=0.33)
between the channel file and the desired
Normalized Load Curve

Normalized Load Curve

power curve in the second CSV file 3 3

• Determine if the correlation improved from 2 2

previous runs and how the model parameters 1 1


should be further adjusted as a result 0 0
• Loop the previous steps until the desired 0 1 2 3 4 0 1 2 3 4
Time (s) Time (s)
correlation is obtained or the parameter limits
Figure 3. After several iterations, the correlation improves to a 33%
are reached match against the desired load power curve. Given a wider range of
parameter values than explored here, this value will continue to
increase until the optimal parameter set is found.

CONCLUSION
The process described here is a simple method to find dynamic load model parameters matching
measured data. Since the FORTRAN code to modify the PSS/E CONEC.flx and Python scripts which
perform curve-fitting are generalized for any PSS/E case, only the CSV files containing the measured
data must be changed to investigate multiple loads. Automating the process for any specific case is
much easier than calculating the hundreds of parameters by hand and simultaneously provides
sensitivities for each of the parameters if further tuning is desired.

You might also like