how do i get the total losses of an IEEE 123 bus network? and how do you calculate the losses across the network
import py_dss_interface
dss = py_dss_interface.DSSDLL(r"C:\Program Files\OpenDSS") dss_file = r"C:\Program Files\OpenDSS\IEEETestCases\123Bus\IEEE123Master.dss" dss.text("compile [{}]".format(dss_file))
dss.text("solve")
dss.text("show losses") losses_text = dss.text("show losses") total_losses = None
for line in losses_text.split("\n"): if line.startswith("Total Losses"): total_losses = float(line.split(":")[1].strip().split()[0]) break
if total_losses is not None:
print("Perdas Totais: {:.2f} kW".format(total_losses)) lines = dss.lines_all_names() line_losses = {} for line in lines: dss.text("select line {}".format(line)) losses_text = dss.text("show losses") losses = float(losses_text.split(":")[1].strip().split()[0]) line_losses[line] = losses transformers = dss.transformers_all_Names() transformer_losses = {} for transformer in transformers: dss.text("select transformer {}".format(transformer)) losses_text = dss.text("show losses") losses = float(losses_text.split(":")[1].strip().split()[0]) transformer_losses[transformer] = losses generators = dss.generators_all_names() generator_losses = {} for generator in generators: dss.text("select generator {}".format(generator)) losses_text = dss.text("show losses") losses = float(losses_text.split(":")[1].strip().split()[0]) generator_losses[generator] = losses print("Perdas das Linhas:") for line, losses in line_losses.items(): print(f" {line}: {losses:.2f} kW") print("Perdas dos Transformadores:") for transformer, losses in transformer_losses.items(): print(f" {transformer}: {losses:.2f} kW") print("Perdas dos Geradores:") for generator, losses in generator_losses.items(): print(f" {generator}: {losses:.2f} kW")
else: print("Não foi possível obter as perdas totais da rede.")
I tried to run this code but it has some errors that I am not able to fix
Hey Marcos,
I see that you are using SnapShot mode. Here are some code using py-dss-interface 1.0.2 that can help you to get the losses (BTW: I will release a new py-dss-interface version this weekend, so the code below would need a few changes) :
print("\nParte 4 - Item 2") print(f"a") print(f"Plosses = {dss.circuit_losses()[0] / 10 ** 3} kW") print(f"b") print(f"Qlosses = {dss.circuit_losses()[1] / 10 ** 3} kvar") print(f"c") print(f"Plinelosses = {dss.circuit_line_losses()[0]} kW") print(f"Qlinelosses = {dss.circuit_line_losses()[1]} kvar") print(f"d") print(f"Ptransformerlosses = {dss.circuit_losses()[0] / 10 ** 3 - dss.circuit_line_losses()[0]} kW") print(f"Qtransformerlosses = {dss.circuit_losses()[1] / 10 ** 3 - dss.circuit_line_losses()[1]} kvar") print(f"e") dss.text(f"compile [{dss_file}]") dss.text("New EnergyMeter.Feeder element=Line.L115 terminal=1") dss.text("solve") dss.meters_write_name("Feeder") dss.meters_sample() register_names = dss.meters_register_names() register_values = dss.meters_register_values() print(f"a") print(f"Plosses = {register_values[register_names.index('Zone Losses kWh')]} kW") print(f"b") print(f"Qlosses = {register_values[register_names.index('Zone Losses kvarh')]} kvar") print(f"c") print(f"Plinelosses = {register_values[register_names.index('Line Losses')]} kW") print(f"d") print(f"Ptransformerlosses = {register_values[register_names.index('Transformer Losses')]} kW")
Hope it helps.
Paulo Radatz
Thank you for your help
Log in to post a comment.
how do i get the total losses of an IEEE 123 bus network? and how do you calculate the losses across the network
import py_dss_interface
dss = py_dss_interface.DSSDLL(r"C:\Program Files\OpenDSS")
dss_file = r"C:\Program Files\OpenDSS\IEEETestCases\123Bus\IEEE123Master.dss"
dss.text("compile [{}]".format(dss_file))
dss.text("solve")
dss.text("show losses")
losses_text = dss.text("show losses")
total_losses = None
for line in losses_text.split("\n"):
if line.startswith("Total Losses"):
total_losses = float(line.split(":")[1].strip().split()[0])
break
if total_losses is not None:
else:
print("Não foi possível obter as perdas totais da rede.")
I tried to run this code but it has some errors that I am not able to fix
Hey Marcos,
I see that you are using SnapShot mode. Here are some code using py-dss-interface 1.0.2 that can help you to get the losses (BTW: I will release a new py-dss-interface version this weekend, so the code below would need a few changes) :
print("\nParte 4 - Item 2")
print(f"a")
print(f"Plosses = {dss.circuit_losses()[0] / 10 ** 3} kW")
print(f"b")
print(f"Qlosses = {dss.circuit_losses()[1] / 10 ** 3} kvar")
print(f"c")
print(f"Plinelosses = {dss.circuit_line_losses()[0]} kW")
print(f"Qlinelosses = {dss.circuit_line_losses()[1]} kvar")
print(f"d")
print(f"Ptransformerlosses = {dss.circuit_losses()[0] / 10 ** 3 - dss.circuit_line_losses()[0]} kW")
print(f"Qtransformerlosses = {dss.circuit_losses()[1] / 10 ** 3 - dss.circuit_line_losses()[1]} kvar")
print(f"e")
dss.text(f"compile [{dss_file}]")
dss.text("New EnergyMeter.Feeder element=Line.L115 terminal=1")
dss.text("solve")
dss.meters_write_name("Feeder")
dss.meters_sample()
register_names = dss.meters_register_names()
register_values = dss.meters_register_values()
print(f"a")
print(f"Plosses = {register_values[register_names.index('Zone Losses kWh')]} kW")
print(f"b")
print(f"Qlosses = {register_values[register_names.index('Zone Losses kvarh')]} kvar")
print(f"c")
print(f"Plinelosses = {register_values[register_names.index('Line Losses')]} kW")
print(f"d")
print(f"Ptransformerlosses = {register_values[register_names.index('Transformer Losses')]} kW")
Hope it helps.
Paulo Radatz
Thank you for your help