How to add or remove devices - changgang/steps GitHub Wiki
Supported devices
Currently STEPS supports the following types of devices:
- BUS: AC bus
- GENERATOR: Synchronous generator
- WT_GENERATOR: Wind turbine generator
- PV_UNIT: Photovoltaic unit
- ENERGY_STORAGE: Energy storage
- LOAD: Load
- FIXED_SHUNT: Fixed shunt
- LINE: AC transmission line, also used to represent breakers, series compensator
- TRANSFORMER: 2-winding and 3-winding transformer
- HVDC: Two terminal high voltage direct current transmission system
- EQUIVALENT_DEVICE: Equivalent device (not discussed here)
- AREA: Area
- ZONE: Zone
- 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)