Skip to content

kerspoon/laos

Repository files navigation

LAOS

A program to look at the security of the IEEE RTS 96 using PSAT in Matlab. Python is used to generate the files to test.

Files

  • script.py this is where all the main functionality of the program lies. see the bottom of the file for some examples of how the program can be used.

  • simulation_batch.py - SimulationBatch - batch_file - batch

  • psat_report.py - PsatReport - report_file - report

  • psat_data.py - PsatData - psat_file - psat

  • network_probability.py - NetworkProbability - prob_file - prob

  • buslevel.py a messy utility to get load forecast and load forecast errors.

  • misc.py A few utilities.

  • parsingutil.py a few utilities for pyparsing

  • modifiedtestcase.py a few utilities for unittest

Bugs

  • failed convergences on load flow followed by passing opf. causes error should cause pass.

  • reactive-limit-bug - caused by seperating generators onto virtual busses example: (pf 0.772)

  • kill-large-gen-bug - fix_mismatch fails when large gens are killed example: (pf 1.107)

  • islanding-bug - islanding should cause fail not error (e.g. kill bus 7)

  • report_to_psat - shunt-bug - it might sometimes get included twice

  • Re-run tests (again) as both opf and pf.

To Do

  • make report on why things fail and pass
  • show to rod

Things that should be done

  • FIX BUGS
  • look into using a distributed slack bus.
  • memoize results considering that loss of either unit on a bus is the same action as long as they are identical units.
  • do unit commitment as well as OPF
  • run N-1 test

File Types

psat_file (*.m)

Defined in Link 6 (PSAT).

Bus.con = [ ... 
  1   138  1  0  2  1;
  24  230  1  0  2  1;
 ];
 
Line.con = [ ... 
 1   2   100  138  60  0  0   0.0026  0.0139  0.4611 0 0 1.93 0 2    1;
 ];

prob_file (*.net)

component probabilities.

bus 1 0.025 13 
bus 2 0.025 13 
line A1     1  2 .24    16  0.0
line A2     1  3 .51    10  2.9
generator G1  1 450   50    U20               
generator G2  1 450   50    U20           
crow A12-1 A13-2 0.075
crow A13-2 A12-1 0.075
crow A18   A20   0.075

batch_file (*.bch)

[abc]
    remove bus 1
    remove line A3
    remove line A54
[def]
[ghi]
    remove generator G65
    remove line C21-4
[jkl]
    set all demand 1.25

matlab_file (*.m)

defined by psat manual.

initpsat;
Settings.lfmit = 50;
Settings.violations = 'on'
runpsat('psat_filename','data');
runpsat pf;
runpsat pfrep;
closepsat;
exit;

Links

  1. [http://psdyn.ece.wisc.edu/IEEE_benchmarks/index.htm](University of Wisconsin)
    • 9 Bus System
    • IEEE 39 Bus System
    • Simplified 14-Generator Australian Power System
    • (including full dynamic models)
  2. [http://www.ee.washington.edu/research/pstca/](University of Washington Power Systems Test Case Archive)
    • Power Flow Test Cases (No. buses: 14, 30, 57, 118, 300)
    • Dynamic Test Cases (17 Gen, 30 Bus "New England", 50 Generator)
    • IEEE-RTS-96
  3. [http://www.mathworks.com/access/helpdesk/help/toolbox/physmod/powersys](Matlab SimPowerSystems)
  4. http://rwl.github.com/pylon/
  5. http://www.pserc.cornell.edu/matpower/
  6. http://www.power.uwaterloo.ca/~fmilano/psat.htm

Notes

  • There might be a way to trip out and modify a system while matlab is running in a way that will be much quicker to run
  • to test the scenario generation probabilities are correct you can use sort test.bch | grep -v '^\[' | uniq -c > test.csv

To Try

  • Settings.distrsw = 1 % use distributed slack bus
  • Settings.init % status (including PF diverged!)
  • OPF.conv % did the OPF converge
  • OPF.report % not sure but should be checked out
  • clpsat.refresh = 0 % don't bother re-running the PF
  • clpsat.showopf % not sure

About

Matlab (PSAT) based security assesment of the IEEE-RTS-96 (Reliability Test System) using python to generate contingincies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published