Skip to content

How to add or remove devices

Changgang Li edited this page Feb 8, 2021 · 6 revisions

Supported devices

Currently STEPS supports the following types of devices:

  1. BUS: AC bus
  2. GENERATOR: Synchronous generator
  3. WT_GENERATOR: Wind turbine generator
  4. PV_UNIT: Photovoltaic unit
  5. ENERGY_STORAGE: Energy storage
  6. LOAD: Load
  7. FIXED_SHUNT: Fixed shunt
  8. LINE: AC transmission line, also used to represent breakers, series compensator
  9. TRANSFORMER: 2-winding and 3-winding transformer
  10. HVDC: Two terminal high voltage direct current transmission system
  11. EQUIVALENT_DEVICE: Equivalent device (not discussed here)
  12. AREA: Area
  13. ZONE: Zone
  14. OWNER: Owner

You can find definition of those devices in code/steps/header/device of STEPS source.

Remarks: AREA, ZONE, and OWNER are not devices but are listed here since their operations are similar to other devices.

Bus

Buses are nodes that all devices are connected to. Buses should be prepared before other devices are prepared.

Remember: The total number of all buses should not exceeds the bus capacity, and the physical bus number should never exceeds the allowed maximum bus number.

Add new bus

To add a new bus to the simulator, use API add_bus:

busnumber = 1
busname = "BUS A"
basevoltage = 110.0
simulator.add_bus(busnumber, busname, basevoltage)
busnumber = 2
busname = "BUS B"
basevoltage = 220.0
simulator.add_bus(busnumber, busname, basevoltage)

Remember, busnumber, busname, and basevoltage must be presented when building a new BUS object.

Bus paremeters should be set up with API: set_bus_data.

Remove bus

To remove an existing bus, use API remove_bus:

busnumber = 1
simulator.remove_bus(busnumber)

Generator

Add new generator

Synchronous generators can be built with API add_generator.

bus = 1
ickt = "#1"
generator = (bus, ickt)
simulator.add_generator(generator)
ickt = "#2"
generator = (bus, ickt)
simulator.add_generator(generator)

Multiple generators can be added to the same bus with different identifier string.

Generator paremeters should be set up with API: set_generator_data.

Remove generator

To remove an existing generator, use API remove_generator

bus = 1
ickt = "#1"
generator = (bus, ickt)
simulator.remove_generator(generator)

Wind turbine generator

Add new wind turbine generator

Wind turbine generators can be built with API add_wt_generator.

bus = 1
ickt = "#1"
wtgenerator = (bus, ickt)
simulator.add_wt_generator(wtgenerator )
ickt = "#2"
wtgenerator= (bus, ickt)
simulator.add_wt_generator(wtgenerator )

Multiple wind turbine generators can be added to the same bus with different identifier string. Both wind turbine generator and synchronous generators can coexist at the same bus, but are usually modeled at different buses.

Wind turbine generator paremeters should be set up with API: set_wt_generator_data.

Remove wind turbine generator

To remove an existing wind turbine generator, use API remove_wt_generator

bus = 1
ickt = "#1"
wtgen = (bus, ickt)
simulator.remove_wt_generator(wtgen)

Photovoltaic unit

Add new photovoltaic unit

Photovoltaic units can be built with API add_pv_unit.

bus = 1
ickt = "#1"
pvunit = (bus, ickt)
simulator.add_pv_unit(pvunit)
ickt = "#2"
pvunit= (bus, ickt)
simulator.add_pv_unit(pvunit)

Multiple photovoltaic units can be added to the same bus with different identifier string. Wind turbine generator, photovoltaic units and synchronous generators can coexist at the same bus, but are usually modeled at different buses.

Photovoltaic unit paremeters should be set up with API: set_pv_unit_data.

Remove photovoltaic unit

To remove an existing photovoltaic unit, use API remove_pv_unit

bus = 1
ickt = "#1"
pvu = (bus, ickt)
simulator.remove_pv_unit(pvu)

Energy storage

Add new energy storage

Energy storages can be built with API add_energy_storage.

bus = 1
ickt = "#1"
es = (bus, ickt)
simulator.add_energy_storage(es)
ickt = "#2"
es = (bus, ickt)
simulator.add_energy_storage(es)

Multiple energy storages can be added to the same bus with different identifier string. Wind turbine generator, photovoltaic units, energy storages and synchronous generators can coexist at the same bus, but are usually modeled at different buses.

Energy storage paremeters should be set up with API: set_energy_storage_data.

Remove energy storage

To remove an existing energy storage, use API remove_energy_storage

bus = 1
ickt = "#1"
es = (bus, ickt)
simulator.remove_energy_storage(es)

Load

Add new load

Loads can be built with API add_load.

bus = 1
ickt = "#1"
load = (bus, ickt)
simulator.add_load(load)
ickt = "#2"
load = (bus, ickt)
simulator.add_load(load)

Multiple loads can be added to the same bus with different identifier string.

Load paremeters should be set up with API: set_load_data.

Remove load

To remove an existing load, use API remove_load

bus = 1
ickt = "#1"
load = (bus, ickt)
simulator.remove_load(load)

Fixed shunt

Add new fixed shunt

Fixed shunts can be built with API add_fixed_shunt.

bus = 1
ickt = "#1"
shunt = (bus, ickt)
simulator.add_fixed_shunt(shunt)
ickt = "#2"
shunt = (bus, ickt)
simulator.add_fixed_shunt(shunt)

Multiple fixed shunts can be added to the same bus with different identifier string.

Fixed shunt paremeters should be set up with API: set_fixed_shunt_data.

Remove fixed shunt

To remove an existing fixed shunt, use API remove_fixed_shunt

bus = 1
ickt = "#1"
shunt = (bus, ickt)
simulator.remove_fixed_shunt(shunt)

Line

AC transmission line is two-terminal device connecting to two different buses of the same voltage level.

Add new line

Lines can be built with API add_line.

ibus = 1
jbus = 2
ickt = "#1"
line = (ibus, jbus, ickt)
simulator.add_line(line)
ickt = "#2"
line = (ibus, jbus, ickt)
simulator.add_line(line)

Multiple lines can be added to the same two buses with different identifier string.

Line paremeters should be set up with API: set_line_data.

Remove line

To remove an existing line, use API remove_line

ibus = 1
jbus = 2
ickt = "#1"
line = (ibus, jbus, ickt)
simulator.remove_line(line)

Remarks

Breaker and serial compensators can also be modeled as line. To model breaker, a line with zero impedance can be created.

Transformer

Transformer can be classified into two types: two-winding transformer and three-winding transformer. It is two-terminal or three-terminal device connecting to two or three different buses of the different voltage levels.

Add new transformer

Transformers can be built with API add_transformer.

ibus = 1
jbus = 2
ickt = "#1"
trans = (ibus, jbus, ickt) # two-winding transformer
simulator.add_transformer(trans)
kbus = 0
ickt = "#2"
trans = (ibus, jbus, kbus, ickt) # two-winding transformer when kbus is 0, identical to (ibus, jbus, ickt)
simulator.add_transformer(trans)
kbus = 3
ickt = "#1"
trans = (ibus, jbus, kbus, ickt) # three-winding transformer
simulator.add_transformer(trans)

Multiple transformers can be added to the same two or three buses with different identifier string.

Transformer paremeters should be set up with API: set_transformer_data.

Remove transformer

To remove an existing transformer, use API remove_transformer

ibus = 1
jbus = 2
ickt = "#1"
trans = (ibus, jbus, ickt) # two-winding transformer
simulator.remove_transformer(trans)
kbus = 0
ickt = "#2"
trans = (ibus, jbus, kbus, ickt) # two-winding transformer when kbus is 0, identical to (ibus, jbus, ickt)
simulator.remove_transformer(trans)
kbus = 3
ickt = "#1"
trans = (ibus, jbus, kbus, ickt) # three-winding transformer
simulator.remove_transformer(trans)

HVDC

HVDC is two-terminal device connecting to two different buses. It is used to model LCC HVDC.

Add new HVDC link

HVDC link can be built with API add_hvdc.

ibus = 1
jbus = 2
name = "HVDC A PPOLE"
hvdc = (ibus, jbus, name)
simulator.add_hvdc(hvdc)
name = "HVDC A NPOLE"
hvdc = (ibus, jbus, name)
simulator.add_hvdc(hvdc)

Multiple HVDC links can be added to the same two buses with different name string.

HVDC paremeters should be set up with API: set_hvdc_data.

Remove hvdc

To remove an existing HVDC linke, use API remove_hvdc

ibus = 1
jbus = 2
name = "HVDC A PPOLE"
hvdc = (ibus, jbus, name)
simulator.remove_hvdc(hvdc)

Area

Add new area

To add a new area to the simulator, use API add_area.

areanumber = 1
areaname = "AREA A"
simulator.add_area(areanumber, areaname)
areanumber = 2
areaname = "AREA B"
simulator.add_area(areanumber, areaname)

Area paremeters should be set up with API: set_area_data.

Remove area

To remove an existing area, use API remove_area.

areanumber = 1
simulator.remove_area(areanumber)

Zone

Add new zone

To add a new zone to the simulator, use API add_zone.

zonenumber = 1
zonename = "AREA A"
simulator.add_zone(zonenumber, zonename)
zonenumber = 2
zonename = "ZONE B"
simulator.add_zone(zonenumber, zonename)

Zone paremeters should be set up with API: set_zone_data.

Remove zone

To remove an existing zone, use API remove_zone.

zonenumber = 1
simulator.remove_zone(zonenumber)

Owner

Add new owner

To add a new owner to the simulator, use API add_owner.

ownernumber = 1
ownername = "OWNER A"
simulator.add_owner(ownernumber, ownername)
ownernumber = 2
ownername = "OWNER B"
simulator.add_owner(ownernumber, ownername)

Owner paremeters should be set up with API: set_owner_data.

Remove owner

To remove an existing owner, use API remove_owner.

ownernumber = 1
simulator.remove_owner(ownernumber)
Clone this wiki locally