Poprawki od Gemini, parsowanie pliku nastawy.txt
Dodany konwerter w pythonie do konwersji nastaw z docx na txt
This commit is contained in:
@@ -37,7 +37,8 @@ class DistanceRelayZDistA:
|
||||
# Typ charakterystyki (0=poligonalna, 1=okragla)
|
||||
typ_zwarc=0,
|
||||
# Włącznik
|
||||
wyl=False):
|
||||
wyl=False,
|
||||
settings=None):
|
||||
|
||||
# Parametry linii
|
||||
self.Z_line_R = Z_line_R
|
||||
@@ -55,12 +56,7 @@ class DistanceRelayZDistA:
|
||||
self.fi2 = fi2
|
||||
self.fi3 = fi3
|
||||
self.fi4 = fi4
|
||||
|
||||
# Kąty pomocnicze
|
||||
RnaS = math.pi / 180
|
||||
self.tanfi1 = math.tan(RnaS * fi1)
|
||||
self.tanfi2 = math.tan(RnaS * fi2)
|
||||
|
||||
|
||||
# Współczynniki stref
|
||||
self.z1_reach = z1_reach
|
||||
self.z2_reach = z2_reach
|
||||
@@ -68,9 +64,6 @@ class DistanceRelayZDistA:
|
||||
self.z4_reach = z4_reach
|
||||
self.z5_reach = z5_reach
|
||||
|
||||
# Obliczanie parametrów stref
|
||||
self._calc_zones()
|
||||
|
||||
# Opóźnienia stref [ms]
|
||||
self.t_z1 = t_z1
|
||||
self.t_z2 = t_z2
|
||||
@@ -85,36 +78,86 @@ class DistanceRelayZDistA:
|
||||
|
||||
# Kierunek
|
||||
self.kierunek = kierunek
|
||||
|
||||
|
||||
# Kompensacja ziemnozwarciowa
|
||||
self.Kk1 = Kk1
|
||||
self.Kk1_kat = Kk1_kat
|
||||
self.KkC = KkC
|
||||
self.KkC_kat = KkC_kat
|
||||
|
||||
# Oblicz współczynniki kompensacji
|
||||
self.ReK1 = 3 * Kk1 * math.cos(RnaS * -Kk1_kat)
|
||||
self.ImK1 = 3 * Kk1 * math.sin(RnaS * -Kk1_kat)
|
||||
self.ReKr = 3 * KkC * math.cos(RnaS * -KkC_kat)
|
||||
self.ImKr = 3 * KkC * math.sin(RnaS * -KkC_kat)
|
||||
|
||||
|
||||
# Typ charakterystyki
|
||||
self.typ_zwarc = typ_zwarc
|
||||
|
||||
# Stan wyłącznika
|
||||
self.wyl = wyl
|
||||
|
||||
# Nadpisz nastawy z pliku konfiguracyjnego
|
||||
if settings:
|
||||
print("\n--- Nadpisywanie nastaw ZDistA z pliku konfiguracyjnego ---")
|
||||
self.kierunek = int(settings.get('Kierunek', self.kierunek))
|
||||
|
||||
# Strefy - obsługa zarówno zasięgu w % (np. z1_reach) jak i wartości bezwzględnych (np. Z1_R)
|
||||
if 'Z1_R' in settings and self.Z_line_R > 0:
|
||||
self.z1_reach = float(settings['Z1_R']) / self.Z_line_R
|
||||
else:
|
||||
self.z1_reach = float(settings.get('z1_reach', self.z1_reach))
|
||||
|
||||
if 'Z2_R' in settings and self.Z_line_R > 0:
|
||||
self.z2_reach = float(settings['Z2_R']) / self.Z_line_R
|
||||
else:
|
||||
self.z2_reach = float(settings.get('z2_reach', self.z2_reach))
|
||||
|
||||
if 'Z3_R' in settings and self.Z_line_R > 0:
|
||||
self.z3_reach = float(settings['Z3_R']) / self.Z_line_R
|
||||
else:
|
||||
self.z3_reach = float(settings.get('z3_reach', self.z3_reach))
|
||||
|
||||
if 'Z4_R' in settings and self.Z_line_R > 0:
|
||||
self.z4_reach = float(settings['Z4_R']) / self.Z_line_R
|
||||
else:
|
||||
self.z4_reach = float(settings.get('z4_reach', self.z4_reach))
|
||||
|
||||
if 'Z5_R' in settings and self.Z_line_R > 0:
|
||||
self.z5_reach = float(settings['Z5_R']) / self.Z_line_R
|
||||
else:
|
||||
self.z5_reach = float(settings.get('z5_reach', self.z5_reach))
|
||||
|
||||
self.t_z1 = int(settings.get('tZ1', self.t_z1))
|
||||
self.t_z2 = int(settings.get('tZ2', self.t_z2))
|
||||
self.t_z3 = int(settings.get('tZ3', self.t_z3))
|
||||
self.t_z4 = int(settings.get('tZ4', self.t_z4))
|
||||
self.t_z5 = int(settings.get('tZ5', self.t_z5))
|
||||
|
||||
self.Kk1 = float(settings.get('Kk1', self.Kk1))
|
||||
self.Kk1_kat = float(settings.get('Kk1_kat', self.Kk1_kat))
|
||||
|
||||
print("--- Koniec nadpisywania nastaw ZDistA ---\n")
|
||||
|
||||
# Kąty pomocnicze
|
||||
RnaS = math.pi / 180
|
||||
self.tanfi1 = math.tan(RnaS * self.fi1)
|
||||
self.tanfi2 = math.tan(RnaS * self.fi2)
|
||||
|
||||
# Obliczanie parametrów stref
|
||||
self._calc_zones()
|
||||
|
||||
# Oblicz współczynniki kompensacji
|
||||
self.ReK1 = 3 * self.Kk1 * math.cos(RnaS * -self.Kk1_kat)
|
||||
self.ImK1 = 3 * self.Kk1 * math.sin(RnaS * -self.Kk1_kat)
|
||||
self.ReKr = 3 * self.KkC * math.cos(RnaS * -self.KkC_kat)
|
||||
self.ImKr = 3 * self.KkC * math.sin(RnaS * -self.KkC_kat)
|
||||
|
||||
# Debug info
|
||||
print(f"Nastawy zabezpieczenia ZDistA:")
|
||||
print(f" Linia: R={Z_line_R:.2f} Ohm, X={Z_line_X:.2f} Ohm, |Z|={self.Z_line_mag:.2f} Ohm")
|
||||
print(f" Kąt linii: {line_angle:.1f} deg")
|
||||
print(f" Strefa 1: {z1_reach*100:.0f}% (natychmiast)")
|
||||
print(f" Strefa 2: {z2_reach*100:.0f}% ({t_z2}ms)")
|
||||
print(f" Strefa 3: {z3_reach*100:.0f}% ({t_z3}ms)")
|
||||
print(f" Strefa 4: {z4_reach*100:.0f}% ({t_z4}ms)")
|
||||
print(f" Strefa 5: {z5_reach*100:.0f}% ({t_z5}ms)")
|
||||
print(f" Kierunek: {kierunek} (0=bez, 1=do linii, 2=do szyn)")
|
||||
print(f" Kompensacja Kk1: {Kk1}, kąt: {Kk1_kat} deg")
|
||||
print(f" Strefa 1: {self.z1_reach*100:.0f}% ({self.t_z1}ms)")
|
||||
print(f" Strefa 2: {self.z2_reach*100:.0f}% ({self.t_z2}ms)")
|
||||
print(f" Strefa 3: {self.z3_reach*100:.0f}% ({self.t_z3}ms)")
|
||||
print(f" Strefa 4: {self.z4_reach*100:.0f}% ({self.t_z4}ms)")
|
||||
print(f" Strefa 5: {self.z5_reach*100:.0f}% ({self.t_z5}ms)")
|
||||
print(f" Kierunek: {self.kierunek} (0=bez, 1=do linii, 2=do szyn)")
|
||||
print(f" Kompensacja Kk1: {self.Kk1}, kąt: {self.Kk1_kat} deg")
|
||||
|
||||
# Inicjalizacja stanów
|
||||
self.init_state()
|
||||
|
||||
Reference in New Issue
Block a user