Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Installing a bus reactor can help control over-voltage problems at transmission voltage substations. Often these over-voltage conditions will occur during a lightly-loaded system and return to normal at fully loaded times.

So to identify a bus that requires a reactor, step one might be to get a lightly loaded PSSE saved case.

Now we must identify those buses that are operating outside (higher than) their target voltage range. One option is to use the traditional VCHK. Which will tabulate the buses where voltage magnitude is outside a specified range.

psspy.vchk(sid=-1, vlo=0.9, vhi=1.1)

Unfortunately the results are just printed to the screen. We can do better. Lets get a Python list of the high voltage buses.

from psspy import abusint, abusreal
MAX_PU = 1.1

def transpose(subsystem_data):
  ierr, values = subsystem_data
  return zip(*values)

buses = transpose(abusint(sid=-1, string="NUMBER"))[0]
voltages = transpose(abusreal(sid=-1, string="PU"))[0]

high_voltage_buses = []
for bus, voltage in zip(buses, voltages):

  if voltage > MAX_PU:
    high_voltage_buses.append((bus, voltage))

# high_voltage_buses: [(3503, 1.14)]
click to hide/show revision 2
Additional information about finding sensitive points using jacobian matrix

Installing a bus reactor can help control over-voltage problems at transmission voltage substations. Often these over-voltage conditions will occur during a lightly-loaded system and return to normal at fully loaded times.

So to identify a bus that requires a reactor, step one might be to get a lightly loaded PSSE saved case.

Now we must identify those buses that are operating outside (higher than) their target voltage range. One option is to use the traditional VCHK. Which will tabulate the buses where voltage magnitude is outside a specified range.

psspy.vchk(sid=-1, vlo=0.9, vhi=1.1)

Unfortunately the results are just printed to the screen. We can do better. Lets get a Python list of the high voltage buses.

from psspy import abusint, abusreal
MAX_PU = 1.1

def transpose(subsystem_data):
  ierr, values = subsystem_data
  return zip(*values)

buses = transpose(abusint(sid=-1, string="NUMBER"))[0]
voltages = transpose(abusreal(sid=-1, string="PU"))[0]

high_voltage_buses = []
for bus, voltage in zip(buses, voltages):

  if voltage > MAX_PU:
    high_voltage_buses.append((bus, voltage))

# high_voltage_buses: [(3503, 1.14)]

(edit)

Hi again. I've asked around some of the engineers based in Melbourne, Australia. They mentioned that because the system jacobian is dependent on how the system is switched, that using it to determine sensitive entries could be difficult (also creating and using a jacobian is difficult in PSS/E - if anyone knows how please chime in).

Instead, they run multiple system studies for a large range of loading conditions and switching configurations to find cases where over voltage conditions occur.

Some of this is scripted with IDEV scripts, and to reduce the number of study cases, the engineer applies her knowledge of the power system to select the most likely candidates.

I still think looking at the jacobian would be instructive. If anyone can point me to any literature on this I would be appreciative too.