PSLTDSim 0.1.0

Creator: railscoder56

Last updated:

Add to Cart

Description:

PSLTDSim 0.1.0

PSLTDSim = Power System Long-Term Dynamic Simulator
Purpose: Use Python and PSLF to simulate long-term power system dynamics.
Examples of long-term dynamics:

A 20 minute wind ramp that forces a governor action response that in turn affects the area control error (ACE) which is later corrected by automatic generator control (AGC [a.k.a. load frequency control or LFC]).
A Generator is tripped in an area that is importing power. Governor action from other areas will respond before AGC works to restore tie-line balance.
A multi-hour simulation of a daily load cycle and forcast used to assure AGC algorithm operates within NERC mandates.

Warning: Work in progress - everything may be broken. Nothing guaranteed.
To install package from git repository: "pip install -e ." from this directory with administrative privleges.
If python 3 32 bit is not default python: "py -3-32 -m pip install -e ."
Requires IronPython (32 bit) to be on system path.
What this code does:
-Uses an agent-based approach to power system modeling.
-Creates a time sequence of power flows while accounting for combined system frequency, all generator mechanical powers and associated staes along with balancing authority states.
-Uses the PSLF system model format and power flow solver.
-Communicates with PSLF via Ironpython.
-Python 3 communicates with Ironpython via AMQP.
-Reads PSLF dyd files and creates python equivalents of one governor (tgov1).
-Implements a generic governor for models that are not fully created in Python (i.e. anything besides tgov1).
-Allows for noise, step, and ramp type perturbances
What this code doesn't do:
-Use definite time controllers to change the status of agents in the system according to user programmable logic.
-Handle tripping of any generator (power-flow solution mysteriously diverges).
Notes:

Requires GE PSLF Python API and valid PSLF licencse. (sorry)
To workaround GE API issues: Erlang, RabbitMQ, and Ironpython are required.
Additional Python packages include:

Python 3: Scipy ( for Numpy and Matplotlib) and Pika (for AMQP)
Ironpython 2.7 32 bit: Pika (Note: Ironpython must be 32 bit to work with GE PSLF middleware)



Recent Progress:

Code refactored to:

Utilize Py3<->AMQP<->IPY<-> PSLF workarounds
Allow for generic automation using agent current value dictionaries
Enable easier code packaging
Clarify code structure


Code creates python mirror of PSLF areas, buses, generators, loads, branch sections, and shunts.
Code has been written to:

Check accuracy of mirror
Ignore islanded objects
Allow for optional Vsched or Vinit of bus Voltage setting
Parse .dyd files (more than one)
Parse .ltd files
Handle H (inertia)
Add noise, step, and ramp perturbances to most any agent value
Set area wide governor deadbands
Incorporate balancing authority actions into simulation
Parse EIA data for multi-hour demand/forcast simulation
Distribute changes in Pacc according to inertia
Exectute Combined Swing equation
Step dynamic modles (tgov1 and genericGov)
Log values of interest
Generate data dictionary
Import/Export Mirror or data data dictionary via shelve
Export Model or data data dictionary from Python 3.x to MATLAB .mat file
Generate terminal output
Generate plots via matplotlib
Run multiple simulations in a batch style and handle errors in a non-show stopping way


MATLAB scripts created to verify and validate simulation outputs

Frequency, Pe, Pm, Q, and Voltage Magnitude and Angle compared to PSDS.
Branch power flow of P, Q, and I.
Accounts for loss of system inertia and change in system losses.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.