# Why would PU bus voltages blow up to infinity in a FLAT dynamic simulation?

Hello,

I just started working extensively with the dynamic simulator in PSS/E 33, and I am currently running a flat (No Contingencies), 1 second, dynamic simulation of a simple 9 bus (3 gens, 3 loads) case. I have loaded all the .raw data and .dyr data into the case via python and the PSSE API (see applicable source code below).

Does anyone have any idea why the PU bus voltages blow up to infinity? I must be missing something somewhere - This exact case simulates perfectly in PowerWorld.

Here is some of the applicable source code:

p.case(static_case_file) #Loads a succesfully solved (with FNSL) case. (Verified against PowerWorld output)
##convert to dynamic case
p.conl(-1,1,1)  #setup
p.conl(-1,1,3) #cleanup
p.cong() # convert Gens
p.ordr() # preserve sparsity of network matrices
p.fact() # factorize the network admittance matrix
p.tysl() # switching study network solutions
## Save dynamic case binary file
p.save(dynamic_case_file)
## load dynamic model definitions
p.dyre_new([1,1,1,1], dyr_infile) # loads dynamic parameters in the .dyr file overwrites existing dynamic data
## Save binary file for dynamic information
p.snap([-1,-1,-1,-1,-1], dynamic_snap_file)
##LOAD Saved Files into working memory
p.case(dynamic_case_file)
p.rstr(dynamic_snap_file)
##Setup Dynamic Sim
p.chsb(0,1,[-1,-1,-1,1,13,0])
## strt(Option, Outfile)  execute before 'run'
p.strt(0, dynamic_channel_outfile)
## run(OPTION, TPause, numTimeStepsBTWPrint, numTimeStepsOUT, NumtimeStepPLT)
p.run(tpause = .1) # initial run to stabalize (suggested in PSSe)
p.run(tpause = 1)  # proceding runs...


Following are the generator models that I am using in the dyr_infile:

1, 'GENSAL', 1, 8.96, .0333, .0333, 23.64, 23.64, .146, .0969, .0608, .05, 0, 0, 0 /
2, 'GENSAL', 1, 6, .0333, .0333, 6.4, 6.4, .8958, .8645, .1198, .05, 0, 0, 0 /
3, 'GENSAL', 1, 5.89, .0333, .0333, 3.01, 3.01, 1.3125, 1.2578, .1813, .05, 0, 0, 0 /


Finally here is the channel_outfile graphed (and zoomed in...)

A few other notes:

1. I have already verified that complex machine impedance (Zx of ZSOURCE) matches the Xd" and Xq" value in the GENSAL model

2. For simplicity sake I am modeling 3 transformer branches as simple Non-Transformer Branches.

I am brand new to PSSE, and would really appreciate any thoughts on what might be causing this. I assume there is some parameter causing the differential equations in the dynamic simulation to blow up - or I am missing a command/step in allowing PSSE to completely understand the topology. Any thoughts on how to troubleshoot this beast would also be helpful. In the meantime, I will continue reading through the loads of documentation...

thanks

edit retag close merge delete

does adding a p.fnsl() after you load the case help just in case it's saved in a funny state?

( 2013-10-19 21:15:25 -0500 )edit

It looks like that TYSL can not solve the case. Check the message after you run p.strt to see on which bus the power flow solution blows up.

( 2013-10-21 19:39:29 -0500 )edit

@JervisW -- Thanks for the comment. Adding the "p.fnsl()" did not change anything about the output of the simulation. After some further testing and reading I was able to figure a few things out. Please see my answer below.

( 2013-10-22 20:16:54 -0500 )edit

@yfwing -- 1/2 -- Thanks for the thought. That makes complete sense, and after looking at the PSS/E output a few times (still getting used to reading it) I did notice that bus 1 and 2 (buses with generators) had some "suspect intial conditions." Unfortunately I was not sure how to use that to

( 2013-10-22 20:19:16 -0500 )edit

@yfwing --2/2-- troubleshoot the dynamic simulation, as it doesn't really say much about what variable in the dynamic simulation is causing the blow up. Perhaps my answer below will supply some clarification?

( 2013-10-22 20:20:29 -0500 )edit

Sort by » oldest newest most voted

So I realize I am answering my own question here, but I believe I did somehow stumble across the solution.

The problem with the above code does not lie in the python implementation, rather it is in the .dyr file that describes the GENSAL dynamic machine models. (see the original values in the question.)

At first I started by using the default values that Power World provides:

/ bus, model, id, Tdo', tdo", tqo", H, D, Xd, Xq, Xd', Xd"=Xq", Xl, S(1.0), S(1.2)
1, 'GENSAL', 1, 7, .035, .05, 3, 0, 2.1  , .5,  .2, .18, .15, 0, 0 /
2, 'GENSAL', 1, 7, .035, .05, 3, 0, 2.1  , .5,  .2, .18, .15, 0, 0 /
3, 'GENSAL', 1, 7, .035, .05, 3, 0, 2.1  , .5,  .2, .18, .15, 0, 0 /


This allowed me to produce an accurate flat dynamic simulation.

Next, since I did not understand why my original GENSAL values would work in Power World, but not PSS/E I decided to start playing with the values. Below is this result:

/ bus, model, id, Tdo', tdo", tqo", H, D, Xd, Xq, Xd', Xd"=Xq", Xl, S(1.0), S(1.2)
1, 'GENSAL', 1, 8.96, 0.05, 0.05, 23.64, 0.01, .146, .138, .018, .05, 0, 0, 0 /
2, 'GENSAL', 1, 6, 0.05, 0.05, 6.4,  0.01, .8958, .851, .112, .05, 0, 0, 0 /
3, 'GENSAL', 1, 5.89, 0.05, 0.05, 3.01, 0.01, .132, .126, .016, .05, 0, 0, 0 /


This produced a similar output to the default power world output that looks like this:

For a short beginner explanation (perhaps someone else who knows more about machine modeling can chime in) Here goes:

1. For simplicity sake I made the damping coefficient (D) nearly 0

2. I changed the Tdo' and Tqo' to be small, but still larger than the PSS/E step size (1/120) otherwise the simulation cannot solve (result of trial and error)

3. Made Xq to be 95% of Xd for each generator, and similarly made Xd' to be (1/8) of Xd. I found this "rule of thumb" somewhere in a textbook on modeling machines. Seems to be a good approximation.

Hope this helps, and onward to exciter/governor models!

more

1

For your original .dyr file, change the xl to a value larger than 0.0, but smaller than xd''. After these changes, I would expect a flat no-disturbance simulation. Use half-cycle step size should be OK.

( 2013-10-23 00:24:13 -0500 )edit

@yfwing I will give that a try and repost about how that works out. Do you know how to change the dynamic simulation step size? I cannot find it anywhere in the documentation. I just went with half-cycle because that was default. An API command would be best, as I do nothing in the GUI.

( 2013-10-23 00:40:03 -0500 )edit
1

@rich, you can use function 'dynamics_solution_param_2' to change the simulation time step. Check PSS/E API manual for details.

( 2013-10-23 01:05:54 -0500 )edit

Please start posting anonymously - your entry will be published after you log in or create a new account.