Anbindung Hager ECR 380D als Zähler
Verfasst: Di Feb 08, 2022 4:05 pm
Hallo
ich würde die Einbindung eines Hager ECR als Request anfragen mit flexibler Adresse, Port, ID und Nutzung also sowohl als Netzbezug als such als Zwischenzäher oder Verbraucher
Für Rückfragen oder Test stehe ich natürlich jederzeit zur Verfügung
MfG
Elektron
ich würde die Einbindung eines Hager ECR als Request anfragen mit flexibler Adresse, Port, ID und Nutzung also sowohl als Netzbezug als such als Zwischenzäher oder Verbraucher
Code: Alles auswählen
#!/usr/bin/python
import sys
# import os
# import time
# import getopt
import struct
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('192.168.0.203', port=502)
modbusid = 1
# Gesamtleistung W
resp = client.read_holding_registers(0xB011,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
final = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Gesamt Watt = ' + str(final) +' W')
f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.write(str(final))
f.close()
# Bezug kWh
resp = client.read_holding_registers(0xB060,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
ikwh = float(all) * 1000
# in Kommazahl umrechnen mal 1000 in Wh
print ('Gesamt Bezug = ' + str(ikwh) +' Wh')
f = open('/var/www/html/openWB/ramdisk/bezugkwh', 'w')
f.write(str(ikwh))
f.close()
# Einspeisung kWh
resp = client.read_holding_registers(0xB064,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
ekwh = float(all) * 1000
# in Kommazahl umrechnen mal 1000 in Wh
print ('Einspeisung = ' + str(ekwh) +' Wh')
f = open('/var/www/html/openWB/ramdisk/einspeisungkwh', 'w')
f.write(str(ekwh))
f.close()
# EVU Herz
resp = client.read_holding_registers(0xB006,1, unit=modbusid)
hz = resp.registers[0]
hz = float(hz) / 100
print ('Netzfrequenz = ' + str(hz) +' Hz')
f = open('/var/www/html/openWB/ramdisk/evuhz', 'w')
f.write(str(hz))
f.close()
# Spannung Phase L1
resp = client.read_holding_registers(0xB000,1, unit=modbusid)
voltage1 = resp.registers[0]
voltage1 = float(voltage1) / 100
print ('Spannung L1 = ' + str(voltage1) +' V')
f = open('/var/www/html/openWB/ramdisk/evuv1', 'w')
f.write(str(voltage1))
f.close()
# Spannung Phase L2
resp = client.read_holding_registers(0xB001,1, unit=modbusid)
voltage2 = resp.registers[0]
voltage2 = float(voltage2) / 100
print ('Spannung L2 = ' + str(voltage2) +' V')
f = open('/var/www/html/openWB/ramdisk/evuv2', 'w')
f.write(str(voltage2))
f.close()
# Spannung Phase L3
resp = client.read_holding_registers(0xB002,1, unit=modbusid)
voltage3 = resp.registers[0]
voltage3 = float(voltage3) / 100
print ('Spannung L3 = ' + str(voltage3) +' V')
f = open('/var/www/html/openWB/ramdisk/evuv3', 'w')
f.write(str(voltage3))
f.close()
# Strom Phase L1
resp = client.read_holding_registers(0xB009,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
lla1 = float(all) / 1000
# in Kommazahl umrechnen durch 1000 in A
print ('Strom L1 = ' + str(lla1) +' A')
f = open('/var/www/html/openWB/ramdisk/bezuga1', 'w')
f.write(str(lla1))
f.close()
# Strom Phase L2
resp = client.read_holding_registers(0xB00B,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
lla2 = float(all) / 1000
# in Kommazahl umrechnen durch 1000 in A
print ('Strom L1 = ' + str(lla2) +' A')
f = open('/var/www/html/openWB/ramdisk/bezuga2', 'w')
f.write(str(lla2))
f.close()
# Strom Phase L3
resp = client.read_holding_registers(0xB00D,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
lla3 = float(all) / 1000
# in Kommazahl umrechnen durch 1000 in A
print ('Strom L1 = ' + str(lla3) +' A')
f = open('/var/www/html/openWB/ramdisk/bezuga3', 'w')
f.write(str(lla3))
f.close()
# Leistung Phase L1
resp = client.read_holding_registers(0xB019,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
finalw1 = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Watt L1 = ' + str(finalw1) +' W')
f = open('/var/www/html/openWB/ramdisk/bezugw1', 'w')
f.write(str(finalw1))
f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.close()
# Leistung Phase L2
resp = client.read_holding_registers(0xB01B,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
finalw2 = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Watt L2 = ' + str(finalw2) +' W')
f = open('/var/www/html/openWB/ramdisk/bezugw2', 'w')
f.write(str(finalw2))
f.close()
# Leistung Phase L3
resp = client.read_holding_registers(0xB01D,2, unit=modbusid)
value1 = resp.registers[0]
value2 = resp.registers[1]
all = (value1 << 16) + value2
# beide Register in eine Zahl schieben
finalw3 = float(all) * 10
# in Kommazahl umrechnen mal 10 in W
print ('Watt L3 = ' + str(finalw3) +' W')
f = open('/var/www/html/openWB/ramdisk/bezugw3', 'w')
f.write(str(finalw3))
f.close()
# Leistungsfaktor CosPhi L1
resp = client.read_holding_registers(0xB02B,1, unit=modbusid)
evupf1 = resp.registers[0]
evupf1 = float(evupf1) / 1000
print ('CosPhi L1 = ' + str(evupf1) +' %')
f = open('/var/www/html/openWB/ramdisk/evupf1', 'w')
f.write(str(evupf1))
f.close()
# Leistungsfaktor CosPhi L2
resp = client.read_holding_registers(0xB02C,1, unit=modbusid)
evupf2 = resp.registers[0]
evupf2 = float(evupf2) / 1000
print ('CosPhi L2 = ' + str(evupf2) +' %')
f = open('/var/www/html/openWB/ramdisk/evupf2', 'w')
f.write(str(evupf2))
f.close()
# Leistungsfaktor CosPhi L3
resp = client.read_holding_registers(0xB02D,1, unit=modbusid)
evupf3 = resp.registers[0]
evupf3 = float(evupf3) / 1000
print ('CosPhi L3 = ' + str(evupf3) +' %')
f = open('/var/www/html/openWB/ramdisk/evupf3', 'w')
f.write(str(evupf3))
f.close()
MfG
Elektron