Ask Your Question
1

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

asked 2013-10-18 20:52:32 -0500

wassup_doc gravatar image

updated 2013-10-22 20:22:22 -0500

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,2,[0,0],[100,0,0,100]) #convert loads
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...)

image description

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 flag offensive close merge delete

Comments

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

JervisW gravatar imageJervisW ( 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.

yfwing gravatar imageyfwing ( 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.

wassup_doc gravatar imagewassup_doc ( 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

wassup_doc gravatar imagewassup_doc ( 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?

wassup_doc gravatar imagewassup_doc ( 2013-10-22 20:20:29 -0500 )edit

1 answer

Sort by ยป oldest newest most voted
1

answered 2013-10-22 20:41:46 -0500

wassup_doc gravatar image

updated 2013-10-22 20:46:06 -0500

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:

image description

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!

edit flag offensive delete link more

Comments

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.

yfwing gravatar imageyfwing ( 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.

wassup_doc gravatar imagewassup_doc ( 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.

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

Your Answer

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

Add Answer

[hide preview]

Question Tools

Stats

Asked: 2013-10-18 20:52:32 -0500

Seen: 1,576 times

Last updated: Oct 22 '13