Files
kabellaengen/lib/ioconverter.py
T

1241 lines
85 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import pandas as pd
import unittest
# Assuming the ExcelConverter class from the previous turn is available and pasted here
class ExcelConverter:
def __init__(self):
self.eingaenge_identifier = ["FDI", "B", "S", "E", "I", "DI", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BJ", "BK", "BL", "BM", "BN", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FJ", "FK", "FL", "FM", "FN", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SJ", "SK", "SL", "SM", "SN", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ"]
self.ausgaenge_identifier = ["K", "O", "Q", "M", "A", "P", "DQ", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK", "CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EJ", "EK", "EL", "EM", "EN", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GJ", "GK", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HJ", "HK", "HL", "HM", "HN", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KJ", "KK", "KL", "KM", "KN", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MJ", "MK", "ML", "MM", "MN", "MP", "MQ", "MR", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PJ", "PK", "PL", "PM", "PN", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QJ", "QK", "QL", "QM", "QN", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RJ", "RK", "RL", "RM", "RN", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ"]
def _gleiche_finden(self, liste):
counter = {}
for eintrag in liste:
name = eintrag['Name']
counter[name] = counter.get(name, 0) + 1
doppelte = set(name for name, count in counter.items() if count > 1)
doppelte_eintraege = [eintrag for eintrag in liste if eintrag['Name'] in doppelte]
return doppelte_eintraege, doppelte
def _anschluesse_ergaenzen(self, anschluesse):
"""
Ergänzt fehlende Anschlüsse für Bauteile.
Entspricht der PowerShell-Funktion AnschluesseErgaenzen.
"""
anschluesse_sorted = sorted(anschluesse, key=lambda x: x['Name'])
bauteil_dict = {}
# Gruppiere vorhandene Anschlüsse nach Bauteil, speichere nummer + eintrag
for eintrag in anschluesse_sorted:
name = eintrag['Name']
if '.' in name:
bauteil = name.rsplit('.', 1)[0] + '.'
nummer = int(name.split('.')[-1])
else:
bauteil = name[:-1]
nummer = int(name[-1])
if bauteil not in bauteil_dict:
bauteil_dict[bauteil] = []
bauteil_dict[bauteil].append((nummer, eintrag))
added_entries = []
for bauteil, eintraege in bauteil_dict.items():
vorhandene_nummern = set(n for n, _ in eintraege)
fehlende = set(range(8)) - vorhandene_nummern
for i in fehlende:
new_name = f"{bauteil}{i}"
new_entry = {
'Name': new_name,
'Kommentar': "",
'Bezug': "",
'Zeile': -1
}
eintraege.append((i, new_entry))
added_entries.append(new_entry)
# Bezug finden (erstes mit Bezug)
bezug_quelle = next((eintrag['Bezug'] for _, eintrag in sorted(eintraege, key=lambda x: x[0]) if eintrag.get('Bezug')), None)
if bezug_quelle:
for _, eintrag in eintraege:
if not eintrag.get('Bezug'):
eintrag['Bezug'] = bezug_quelle
anschluesse.extend(added_entries)
return sorted(anschluesse, key=lambda x: x['Name'])
def _verarbeite_io_liste(self, liste):
"""
Filtert doppelte Namen aus der Liste und markiert sie mit Hinweis; gibt separate Liste mit eindeutigen Duplikaten zurück.
"""
gleiche, doppelte_namen = self._gleiche_finden(liste)
# Nur ein Eintrag pro doppeltem Namen in gleiche_liste
gesehen = set()
reduzierte_gleiche = []
for eintrag in gleiche:
name = eintrag['Name']
if name not in gesehen:
reduzierte_gleiche.append(eintrag)
gesehen.add(name)
gefiltert = self._duplikate_markieren_und_filtern(liste, doppelte_namen)
return reduzierte_gleiche, gefiltert
def _duplikate_markieren_und_filtern(self, liste, doppelte_namen):
"""
Behalte nur das erste Vorkommen jedes doppelten Namens in der Liste.
Markiere dieses Vorkommen mit 'Hinweis': 'Doppelt'.
"""
neue_liste = []
gesehen = set()
for eintrag in liste:
name = eintrag['Name']
if name in doppelte_namen:
if name not in gesehen:
eintrag['Hinweis'] = "Duplikat!"
neue_liste.append(eintrag)
gesehen.add(name)
# sonst: ignorieren
else:
neue_liste.append(eintrag)
return neue_liste
def _prep_simpel(self, ursprungdatei, prefix_eingang="E", prefix_ausgang="A"):
"""
Konvertiert Daten aus der Ursprungsdatei
Eingänge und Ausgänge in seperaten dataframes; Fehler nicht enthalten
"""
eingaenge = []
ausgaenge = []
fehler = []
for i, eintrag in enumerate(ursprungdatei):
eintragszeile = eintrag.strip().split("'")
bmk_zahl_raw = eintragszeile[1].strip()
kommentar = eintragszeile[3].strip()
bmk_alpha = ''.join(filter(str.isalpha, bmk_zahl_raw))
bmk_numeric = ''.join(filter(str.isdigit, bmk_zahl_raw))
bmk_formatted = bmk_numeric
if len(bmk_numeric) > 0:
bmk_formatted = bmk_numeric[:-1] + "." + bmk_numeric[-1] if len(bmk_numeric) > 1 else "0." + bmk_numeric
if bmk_alpha in self.eingaenge_identifier:
name = prefix_eingang + bmk_formatted
eingaenge.append({'Name': name, 'Kommentar': kommentar, 'Zeile': i})
elif bmk_alpha in self.ausgaenge_identifier:
name = prefix_ausgang + bmk_formatted
ausgaenge.append({'Name': name, 'Kommentar': kommentar, 'Zeile': i})
else:
name = bmk_formatted
fehler.append({'Name': name, 'Kommentar': f"Fehlerhafte BMK '{bmk_zahl_raw}'", 'Zeile': i})
# Fehler-Dataframe erzeugen
df_fehler = pd.DataFrame(fehler).sort_values(by="Name") if fehler else pd.DataFrame()
# Eingänge & Ausgänge verarbeiten (Duplikate markieren und filtern)
gleiche_eingaenge, eingaenge = self._verarbeite_io_liste(eingaenge)
gleiche_ausgaenge, ausgaenge = self._verarbeite_io_liste(ausgaenge)
# DataFrames erzeugen u. sortieren
df_eingaenge = pd.DataFrame(eingaenge).sort_values(by="Name")
df_ausgaenge = pd.DataFrame(ausgaenge).sort_values(by="Name")
df_gleiche_eingaenge = pd.DataFrame(gleiche_eingaenge).sort_values(by="Name") if gleiche_eingaenge else pd.DataFrame()
df_gleiche_ausgaenge = pd.DataFrame(gleiche_ausgaenge).sort_values(by="Name") if gleiche_ausgaenge else pd.DataFrame()
return df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge
def _prep_tia(self, ursprungdatei, prefix_eingang="E", prefix_ausgang="A"):
"""
Konvertiert Daten für TIA Portal und schreibt sie in eine Excel-Datei mit zwei Blättern ("Constants" und "PLC Tags").
Eingänge und Ausgänge gemeinsam jeweils in consts und tags (Prefix cIn, cOut); doppelte Namen markiert und ausgeschlossen; Fehler mit Prefix 'Err'.
"""
eingaenge = []
ausgaenge = []
fehler = []
for i, eintrag in enumerate(ursprungdatei):
eintragszeile = eintrag.strip().split("'")
bmk_zahl_raw = eintragszeile[1].strip()
kommentar = eintragszeile[3].strip()
bmk_alpha = ''.join(filter(str.isalpha, bmk_zahl_raw))
bmk_numeric = ''.join(filter(str.isdigit, bmk_zahl_raw))
bmk_formatted = bmk_numeric
if len(bmk_numeric) > 0:
bmk_formatted = bmk_numeric[:-1] + "." + bmk_numeric[-1] if len(bmk_numeric) > 1 else "0." + bmk_numeric
if bmk_alpha in self.eingaenge_identifier:
name = prefix_eingang + bmk_formatted
name_constant = "cIn" + bmk_zahl_raw
eingaenge.append({
'Name': name,
'NameOriginal': bmk_zahl_raw,
'NameConstant': name_constant,
'Kommentar': kommentar,
'Zahl': int(bmk_numeric) if bmk_numeric else 0, # Convert to int
'Zeile': i
})
elif bmk_alpha in self.ausgaenge_identifier:
name = prefix_ausgang + bmk_formatted
name_constant = "cOut" + bmk_zahl_raw
ausgaenge.append({
'Name': name,
'NameOriginal': bmk_zahl_raw,
'NameConstant': name_constant,
'Kommentar': kommentar,
'Zahl': int(bmk_numeric) if bmk_numeric else 0, # Convert to int
'Zeile': i
})
else: # Hier wird Fehlerhafte BMK behandelt
name = bmk_formatted
name_constant = "cErr" + bmk_zahl_raw
fehler.append({
'Name': name,
'NameOriginal': bmk_zahl_raw,
'NameConstant': name_constant,
'Kommentar': f"Fehlerhafte BMK '{bmk_zahl_raw}'", # Zeile von Lorenz eingefügt, da sonst pandas mit Fehler, da kein Kommentar
'Zahl': i, # Original PowerShell uses 'i' for Zahl in Fehler, not bmk_numeric
'Zeile': i
})
# Fehler-Dataframe erzeugen
df_fehler = pd.DataFrame(fehler).sort_values(by="Zahl") if fehler else pd.DataFrame()
# Duplikate verarbeiten & markieren
gleiche_eingaenge, eingaenge = self._verarbeite_io_liste(eingaenge)
gleiche_ausgaenge, ausgaenge = self._verarbeite_io_liste(ausgaenge)
# DataFrames erstellen u. sortieren
df_eingaenge = pd.DataFrame(eingaenge).sort_values(by="Zahl")
df_ausgaenge = pd.DataFrame(ausgaenge).sort_values(by="Zahl")
df_gleiche_eingaenge = pd.DataFrame(gleiche_eingaenge).sort_values(by="Zahl") if gleiche_eingaenge else pd.DataFrame()
df_gleiche_ausgaenge = pd.DataFrame(gleiche_ausgaenge).sort_values(by="Zahl") if gleiche_ausgaenge else pd.DataFrame()
df_consts, df_tags = self._create_tia_dataframes(df_fehler, df_eingaenge, df_ausgaenge)
return df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_consts, df_tags
def _create_tia_dataframes(self, df_fehler, df_eingaenge, df_ausgaenge):
"""
Hilfsfunktion für 'prep_tia', die dataframes für spätere excel Ausgabe erzeugt ("Constants" und "PLC Tags").
Eingänge und Ausgänge gemeinsam jeweils in consts und tags; Fehler ebenfalls mit Prefix 'Err' enthalten.
"""
df_constants_data = []
j = 0
for row in df_fehler.itertuples():
df_constants_data.append({
"Name": row.NameConstant,
"Path": "Import",
"Data Type": "Int",
"Value": j,
"Comment": ""
})
j += 1
for row in df_eingaenge.itertuples():
df_constants_data.append({
"Name": row.NameConstant,
"Path": "Import",
"Data Type": "Int",
"Value": j,
"Comment": ""
})
j += 1
for row in df_ausgaenge.itertuples():
df_constants_data.append({
"Name": row.NameConstant,
"Path": "Import",
"Data Type": "Int",
"Value": j,
"Comment": ""
})
j += 1
df_constants = pd.DataFrame(df_constants_data)
# Blatt "PLC Tags"
df_plc_tags_data = []
for row in df_fehler.itertuples():
df_plc_tags_data.append({
"Name": row.NameOriginal,
"Path": "Import",
"Data Type": "Bool",
"Logical Address": f"%{row.Name}",
"Comment": row.Kommentar,
"Hmi Visible": "True",
"Hmi Accessible": "True",
"Hmi Writeable": "True",
"Typeobject ID": "",
"Version ID": ""
})
for row in df_eingaenge.itertuples() :
df_plc_tags_data.append({
"Name": row.NameOriginal,
"Path": "Import",
"Data Type": "Bool",
"Logical Address":f"%{row.Name}",
"Comment": row.Kommentar,
"Hmi Visible": "True",
"Hmi Accessible": "True",
"Hmi Writeable": "True",
"Typeobject ID": "",
"Version ID": ""
})
for row in df_ausgaenge.itertuples():
df_plc_tags_data.append({
"Name": row.NameOriginal,
"Path": "Import",
"Data Type": "Bool",
"Logical Address": f"%{row.Name}",
"Comment": row.Kommentar,
"Hmi Visible": "True",
"Hmi Accessible": "True",
"Hmi Writeable": "True",
"Typeobject ID": "",
"Version ID": ""
})
df_plc_tags = pd.DataFrame(df_plc_tags_data)
return (df_constants, df_plc_tags)
def _prep_wscad(self, ursprungdatei, prefix_eingang="E", prefix_ausgang="A"):
"""
Konvertiert Daten für WSCAD mit Bezugsinformationen und schreibt sie in eine Excel-Datei.
Entspricht der PowerShell-Funktion ExcelDateiBeschreibenWSCAD_Bezug.
"""
eingaenge = []
ausgaenge = []
fehler = []
for i, eintrag in enumerate(ursprungdatei):
eintragszeile = eintrag.strip().split("'")
bmk_zahl_raw = eintragszeile[1].strip()
kommentar = eintragszeile[3].strip()
bezug = eintragszeile[7].strip()
bmk_alpha = ''.join(filter(str.isalpha, bmk_zahl_raw))
bmk_numeric = ''.join(filter(str.isdigit, bmk_zahl_raw))
bmk_formatted = bmk_numeric
if len(bmk_numeric) > 0:
bmk_formatted = bmk_numeric[:-1] + "." + bmk_numeric[-1] if len(bmk_numeric) > 1 else "0." + bmk_numeric
# Remove leading zeros
if len(bmk_formatted) >= 4 and bmk_formatted.startswith("0") and bmk_alpha in self.eingaenge_identifier:
bmk_formatted = bmk_formatted[1:]
if len(bmk_formatted) >= 4 and bmk_formatted.startswith("0"):
bmk_formatted = bmk_formatted[1:]
elif len(bmk_formatted) >= 3 and bmk_formatted.startswith("0") and bmk_alpha in self.ausgaenge_identifier:
bmk_formatted = bmk_formatted[1:]
if len(bmk_formatted) >= 3 and bmk_formatted.startswith("0"):
bmk_formatted = bmk_formatted[1:]
if bmk_alpha in self.eingaenge_identifier:
name = prefix_eingang + bmk_formatted
eingaenge.append({'Name': name, 'Kommentar': kommentar, 'Zeile': i, 'Bezug': bezug})
elif bmk_alpha in self.ausgaenge_identifier:
name = prefix_ausgang + bmk_formatted
ausgaenge.append({'Name': name, 'Kommentar': kommentar, 'Zeile': i, 'Bezug': bezug})
else:
name = bmk_formatted
fehler.append({'Name': name, 'Kommentar': f"Fehlerhafte BMK '{bmk_zahl_raw}'", 'Zeile': i, 'Bezug': bezug})
eingaenge = self._anschluesse_ergaenzen(eingaenge)
ausgaenge = self._anschluesse_ergaenzen(ausgaenge)
# Fehler-Dataframe erzeugen
df_fehler = pd.DataFrame(fehler).sort_values(by="Name") if fehler else pd.DataFrame()
# Duplikate verarbeiten & markieren
gleiche_eingaenge, eingaenge = self._verarbeite_io_liste(eingaenge)
gleiche_ausgaenge, ausgaenge = self._verarbeite_io_liste(ausgaenge)
# DataFrames erzeugen u. sortieren
df_eingaenge = pd.DataFrame(eingaenge).sort_values(by="Name")
df_ausgaenge = pd.DataFrame(ausgaenge).sort_values(by="Name")
df_gleiche_eingaenge = pd.DataFrame(gleiche_eingaenge).sort_values(by="Name") if gleiche_eingaenge else pd.DataFrame()
df_gleiche_ausgaenge = pd.DataFrame(gleiche_ausgaenge).sort_values(by="Name") if gleiche_ausgaenge else pd.DataFrame()
return df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge
def _prep_data(self, data, export_type):
"""
Aufbereiter der Daten je nach gewünschtem Export-Typ
"""
if export_type == "Simpel":
return self._prep_simpel(data)
elif export_type == "TIA":
return self._prep_tia(data)
elif export_type in ["WSCAD", "WSCAD mit Bezug"]:
return self._prep_wscad(data)
else:
raise ValueError("Unbekannter Export-Typ")
def export_excel(self, data, export_type, export_path):
"""
Wrapper, der aufgerufen wird und in sich die Aufbereitung der Daten und das Abspeichern als Excel abruft.
"""
# Daten vorbereiten
dataframes = self._prep_data(data, export_type)
# Excel Datei schreiben und speichern
self._write_excel(dataframes, export_type, export_path)
def _write_excel(self, dataframes, export_type, export_path):
"""
Erzeugung der Excel-Datei im gewünschten Muster
"""
if export_type == "Simpel":
# Format für Simpel-Ausgabe
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge = dataframes
with pd.ExcelWriter(export_path, engine='openpyxl') as writer:
# Sheet 1: Ein / Ausgänge
start_row = 0
df_eingaenge.to_excel(writer, sheet_name='Ein-, Ausgaenge', index=False, startrow=start_row)
start_row += len(df_eingaenge) + 2 # Leerzeile dazwischen
# Ausgaenge direkt drunter schreiben (ohne Header)
df_ausgaenge.to_excel(writer, sheet_name='Ein-, Ausgaenge', index=False, startrow=start_row, header=False)
# Duplikate und Errors
self._write_duplicates_errors(writer, df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler)
elif export_type == "TIA":
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_consts, df_tags = dataframes
with pd.ExcelWriter(export_path, engine='openpyxl') as writer:
# 1. PLC Tags Sheet mit Header. Spalten: Name, Path, Data Type, Logical Address, Comment, Hmi Visible, Hmi Accessible, Hmi Writeable, Typeobject ID, Version ID
df_tags.to_excel(writer, sheet_name='PLC Tags', index=False)
# 2. Constants Sheet mit Header. Spalten: Name, Path, Data Type, Value, Comment
df_consts.to_excel(writer, sheet_name='Constants', index=False)
# Duplikate und Errors
self._write_duplicates_errors(writer, df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler)
elif export_type in ["WSCAD", "WSCAD mit Bezug"]:
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge = dataframes
include_bezug = export_type == "WSCAD mit Bezug"
# Basis-Template
df_result = pd.DataFrame(
columns=[
"Anschluss",
"Kommentar",
"Symboltext",
"Bezug",
"Sondertext 1",
"Sondertext 2",
"Sondertext 3",
"Sondertext 4",
"Sondertext 5",
"Sondertext 6",
"Sondertext 7",
"Sondertext 8",
]
)
# Fehler ganz oben in Sheet schreiben (falls sie existieren)
if not df_fehler.empty:
df_result = self._append_df(df_result, df_fehler, include_bezug)
# Ein u. Ausgänge schreiben
df_result = self._append_df(df_result, df_eingaenge, include_bezug)
df_result = self._append_df(df_result, df_ausgaenge, include_bezug)
with pd.ExcelWriter(export_path, engine="openpyxl") as writer:
df_result.to_excel(writer, index=False, sheet_name="WSCAD")
# Bezug-Spalte als Text formatieren (Spalte 4 = "Bezug")
worksheet = writer.book["WSCAD"]
for row in worksheet.iter_rows(min_row=2, min_col=4, max_col=4):
for cell in row:
if cell.value and str(cell.value).startswith("="):
# Erzwinge Textformat
cell.number_format = "@"
cell.value = str(cell.value) # wichtig: string setzen
cell.data_type = 's' # explizit als String, verhindert Formelinterpretation
# Duplikate und Errors
self._write_duplicates_errors(writer, df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler)
def _append_df(self, target_df, source_df, include_bezug=False):
"""
Hilfsfunktion, die Dataframes für WSCAD Export aneinander reiht und entweder Bezug inkludiert oder nicht
"""
data = {
"Anschluss": source_df["Name"],
"Kommentar": source_df["Kommentar"],
"Symboltext": "",
"Bezug": source_df["Bezug"] if include_bezug else "",
"Sondertext 1": "",
"Sondertext 2": "",
"Sondertext 3": "",
"Sondertext 4": "",
"Sondertext 5": "",
"Sondertext 6": "",
"Sondertext 7": "",
"Sondertext 8": "",
}
tmp = pd.DataFrame(data)
return pd.concat([target_df, tmp], ignore_index=True)
def _write_duplicates_errors(self, writer, df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler):
"""
Schreibt optional die Sheets 'Duplikate' und 'Fehler', falls Inhalte vorhanden sind.
"""
# Bezug-Spalte für Excel Darstellung vorbereiten
for df in [df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler]:
if "Bezug" in df.columns:
df["Bezug"] = df["Bezug"].apply(lambda x: f"'{x}" if pd.notnull(x) else x)
# Duplikate-Sheet
if not df_gleiche_eingaenge.empty or not df_gleiche_ausgaenge.empty:
start_row = 0
if not df_gleiche_eingaenge.empty:
df_gleiche_eingaenge.to_excel(writer, sheet_name='Duplikate', index=False, startrow=start_row)
start_row += len(df_gleiche_eingaenge) + 2 # Abstand
if not df_gleiche_ausgaenge.empty:
df_gleiche_ausgaenge.to_excel(writer, sheet_name='Duplikate', index=False, startrow=start_row, header=False)
# Fehler-Sheet
if not df_fehler.empty:
df_fehler.to_excel(writer, sheet_name='Fehler', index=False)
def call_portal_to_excel(self, textlines, konvertierungsart):
ec = ExcelConverter()
all_duplicate_inputs = []
all_duplicate_outputs = []
all_errors = []
prefix_eingang = "E"
prefix_ausgang = "A"
target_path = os.environ.get("PROJECT_WORK")
#self.current_task_label.config(text=f"Erstelle Excel-Datei: {os.path.basename(ziel_datei)}")
gleiche_eingaenge = []
gleiche_ausgaenge = []
fehler = []
if konvertierungsart == "Simpel":
# df_eingaenge, df_ausgaenge wird in excel Datei geschrieben. Hier zu Ausgabe hinzugefügt, damit unittest befüllt werden kann
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge = ec._prep_simpel(
textlines, prefix_eingang, prefix_ausgang
)
return df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge
elif konvertierungsart == "TIA":
# df_consts und df_tags wird in excel Datei geschrieben. Hier zu Ausgabe hinzugefügt, damit unittest befüllt werden kann
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_consts, df_tags = ec._prep_tia(
textlines, prefix_eingang, prefix_ausgang
)
return(df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_consts, df_tags)
elif konvertierungsart == "WSCAD" or "WSCAD mit Bezug":
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge = ec._prep_wscad(
textlines, prefix_eingang, prefix_ausgang
)
return(df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge)
all_duplicate_inputs.extend(gleiche_eingaenge)
all_duplicate_outputs.extend(gleiche_ausgaenge)
all_errors.extend(fehler)
#self.completed_tasks_listbox.insert(tk.END, f"ERFOLG: {os.path.basename(ziel_datei)}")
#self.switch_to_duplicates_tab(all_duplicate_inputs, all_duplicate_outputs, all_errors)
class TestPlant(unittest.TestCase):
def test_Simpel(self):
textlines = """'DI0023','STEUERSPANNUNG 24V UC200 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC200 OK','CONTROL VOLTAGE 24V UC200 OK','TENSION DE MANIOBRA 24V UC200 OK',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK',''
'XY0022','STEUERSPANNUNG 24V UC103 ','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC103 OK','CONTROL VOLTAGE 24V UC103 OK','TENSION DE MANIOBRA 24V UC103 OK',''
'DI0021','STEUERSPANNUNG 24V UC102-UC101 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC102-UC101 OK','CONTROL VOLTAGE 24V UC102-UC101 OK','TENSION DE MANIOBRA 24V UC102-UC101 OK',''
'KF0013','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','COMPR. AIR OFF','=A01+UH000-KF01Q','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','CLOSE PRESS.-MAINTENANCE UNIT','AIRE COMPRIMIDO/VÁLVULA DE AISLAMIENTO C',''
'KF0012','RESET NOT HALT','RESET E-STOP','=A01+UH000-KF01Q','RESET NOT HALT','RESET EMERGENCY STOP','RESET PARO DE EMERGENCIA',''
'PF0011','ÜBERSTROM/SICHERUNGSFALL','IL-YE-LED','=A01+UH000-KF01Q','ÜBERSTROM/SICHERUNGSFALL','OVERCURRENT/MIN. CIRCUIT BREAKERS','SOBREINTENSIDAD/FUSIBLE AUTOMÁTICO',''
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','',''
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','',''
"""
textarray = textlines.splitlines()
'''Testcase: 10 Zeilen mit I/O: Davon 4 Eingänge (1 Duplikat), 5 Ausgänge (1 Duplikat), 1 Fehlerhafte BMK'''
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge = call_portal_to_excel(self, textarray, "Simpel")
# print("\n Eingänge:\n")
# print(df_eingaenge)
# print("\n Ausgänge:\n")
# print(df_ausgaenge)
# print("\n gleiche Eingänge:\n")
# print(df_gleiche_eingaenge)
# print("\n gleiche Ausgänge:\n")
# print(df_gleiche_ausgaenge)
self.assertEqual(len(df_fehler), 1) # Fehler anzeigen: Zeile 4 Prefix XY
self.assertEqual(len(df_eingaenge), 4 - len(df_gleiche_eingaenge)) # 4 Eingänge in Liste, einer davon als Duplikat
self.assertEqual(len(df_ausgaenge), 5 - len(df_gleiche_ausgaenge)) # 5 Ausgänge in Liste, einer davon Duplikat
def test_TIA(self):
textlines = """'DI0023','STEUERSPANNUNG 24V UC200 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC200 OK','CONTROL VOLTAGE 24V UC200 OK','TENSION DE MANIOBRA 24V UC200 OK',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK',''
'XY0022','STEUERSPANNUNG 24V UC103 ','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC103 OK','CONTROL VOLTAGE 24V UC103 OK','TENSION DE MANIOBRA 24V UC103 OK',''
'DI0021','STEUERSPANNUNG 24V UC102-UC101 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC102-UC101 OK','CONTROL VOLTAGE 24V UC102-UC101 OK','TENSION DE MANIOBRA 24V UC102-UC101 OK',''
'KF0013','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','COMPR. AIR OFF','=A01+UH000-KF01Q','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','CLOSE PRESS.-MAINTENANCE UNIT','AIRE COMPRIMIDO/VÁLVULA DE AISLAMIENTO C',''
'KF0012','RESET NOT HALT','RESET E-STOP','=A01+UH000-KF01Q','RESET NOT HALT','RESET EMERGENCY STOP','RESET PARO DE EMERGENCIA',''
'PF0011','ÜBERSTROM/SICHERUNGSFALL','IL-YE-LED','=A01+UH000-KF01Q','ÜBERSTROM/SICHERUNGSFALL','OVERCURRENT/MIN. CIRCUIT BREAKERS','SOBREINTENSIDAD/FUSIBLE AUTOMÁTICO',''
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','',''
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','',''
"""
textarray = textlines.splitlines()
'''Testcase: 10 Zeilen mit I/O: Davon 4 Eingänge (1 Duplikat), 5 Ausgänge (1 Duplikat), 1 Fehlerhafte BMK'''
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_consts, df_tags = call_portal_to_excel(self, textarray, "TIA")
# print("\n Consts:\n")
# print(df_consts)
# print("\n Tags:\n")
# print(df_tags)
# print("\n gleiche Eingänge:\n")
# print(df_gleiche_eingaenge)
# print("\n gleiche Ausgänge:\n")
# print(df_gleiche_ausgaenge)
self.assertIn("DI0020", df_gleiche_eingaenge["NameOriginal"].values) # Püfen, ob doppelter Name in doppelteEingänge auftaucht
self.assertIn("MA1020", df_gleiche_ausgaenge["NameOriginal"].values) # Püfen, ob doppelter Name in doppelteAusgänge auftaucht
self.assertEqual(len(df_fehler), 1) # Fehler anzeigen: Zeile 4 Prefix XY
# Test, ob länge passt. Eigentlich 10 Eingabezeilen, Fehler bleibt drin, aber 2x 1 Duplikat in Eingang und Ausgang abziehen
self.assertEqual(len(df_consts), len(textarray)-(len(df_gleiche_ausgaenge)+len(df_gleiche_eingaenge)))
self.assertEqual(len(df_tags), len(textarray)-(len(df_gleiche_ausgaenge)+len(df_gleiche_eingaenge)))
def test_WSCAD(self):
textlines = """'DI0023','STEUERSPANNUNG 24V UC200 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC200 OK','CONTROL VOLTAGE 24V UC200 OK','TENSION DE MANIOBRA 24V UC200 OK',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK',''
'XY0022','STEUERSPANNUNG 24V UC103 ','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC103 OK','CONTROL VOLTAGE 24V UC103 OK','TENSION DE MANIOBRA 24V UC103 OK',''
'DI0021','STEUERSPANNUNG 24V UC102-UC101 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC102-UC101 OK','CONTROL VOLTAGE 24V UC102-UC101 OK','TENSION DE MANIOBRA 24V UC102-UC101 OK',''
'KF0013','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','COMPR. AIR OFF','=A01+UH000-KF01Q','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','CLOSE PRESS.-MAINTENANCE UNIT','AIRE COMPRIMIDO/VÁLVULA DE AISLAMIENTO C',''
'KF0012','RESET NOT HALT','RESET E-STOP','=A01+UH000-KF01Q','RESET NOT HALT','RESET EMERGENCY STOP','RESET PARO DE EMERGENCIA',''
'PF0011','ÜBERSTROM/SICHERUNGSFALL','IL-YE-LED','=A01+UH000-KF01Q','ÜBERSTROM/SICHERUNGSFALL','OVERCURRENT/MIN. CIRCUIT BREAKERS','SOBREINTENSIDAD/FUSIBLE AUTOMÁTICO',''
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','',''
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','',''
"""
textarray = textlines.splitlines()
'''Testcase: 10 Zeilen mit I/O: Davon 4 Eingänge (1 Duplikat), 5 Ausgänge (1 Duplikat), 1 Fehlerhafte BMK'''
df_gleiche_eingaenge, df_gleiche_ausgaenge, df_fehler, df_eingaenge, df_ausgaenge = call_portal_to_excel(self, textarray, "WSCAD mit Bezug")
print("\n Eingänge:\n")
print(df_eingaenge)
print("\n Ausgänge:\n")
print(df_ausgaenge)
# print("\n Fehler")
# print(df_fehler)
# print("\n gleiche Eingänge:\n")
# print(df_gleiche_eingaenge)
# print("\n gleiche Ausgänge:\n")
# print(df_gleiche_ausgaenge)
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(TestPlant('test_Simpel'))
suite.addTest(TestPlant('test_TIA'))
suite.addTest(TestPlant('test_WSCAD'))
runner = unittest.TextTestRunner()
runner.run(suite)
export_type_arr = ("Simpel", "TIA", "WSCAD", "WSCAD mit Bezug")
textlines = """'XYZ0023','STEUERSPANNUNG 24V UC200 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC200 OK','CONTROL VOLTAGE 24V UC200 OK','TENSION DE MANIOBRA 24V UC200 OK','',''
'DI0020','STEUERSPANNUNG 24V UH000 OK','24V OK UH000','=A01+UH000-KF02i','STEUERSPANNUNG 24V UH000 OK','CONTROL VOLTAGE 24V UH000 OK','TENSION DE MANIOBRA 24V UH000 OK','',''
'DI0020','STEUERSPANNUNG 24V UC103 ','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC103 OK','CONTROL VOLTAGE 24V UC103 OK','TENSION DE MANIOBRA 24V UC103 OK','',''
'DI0021','STEUERSPANNUNG 24V UC102-UC101 OK','24V OK','=A01+UH000-KF02i','STEUERSPANNUNG 24V UC102-UC101 OK','CONTROL VOLTAGE 24V UC102-UC101 OK','TENSION DE MANIOBRA 24V UC102-UC101 OK','',''
'KF0013','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','COMPR. AIR OFF','=A01+UH000-KF01Q','DRUCKL.-WARTUNGSEINH. SCHLIESSEN','CLOSE PRESS.-MAINTENANCE UNIT','AIRE COMPRIMIDO/VÁLVULA DE AISLAMIENTO C','',''
'KF0012','RESET NOT HALT','RESET E-STOP','=A01+UH000-KF01Q','RESET NOT HALT','RESET EMERGENCY STOP','RESET PARO DE EMERGENCIA','',''
'PF0011','ÜBERSTROM/SICHERUNGSFALL','IL-YE-LED','=A01+UH000-KF01Q','ÜBERSTROM/SICHERUNGSFALL','OVERCURRENT/MIN. CIRCUIT BREAKERS','SOBREINTENSIDAD/FUSIBLE AUTOMÁTICO','',''
'PF0010','DRUCKLUFT FEHLT','IL-YE-LED','=A01+UH000-KF01Q','DRUCKLUFT FEHLT','COMPRESSED AIR MISSING','AIRE COMPRIMIDO DESCONECTADO','',''
'PF0002','START NACH STÖRUNG','IPB-CL-LED','=A01+UH000-KF00Q','START NACH STÖRUNG','START AFTER TROUBLE','ARRANQUE DESPUÉS DE AVERÍA','',''
'PF0004','STÖRUNG KOMMUNIKATION PC-SPS','IL-YE-LED','=A01+UH000-KF00Q','STÖRUNG KOMMUNIKATION PC-SPS','TROUBLE COMMUNICATION PC-PLC','AVERÍA COMMUNICATIÓN PC-CPP','',''
'PF0006','ABHEBEN AKTIV','IL-YE-LED','=A01+UH000-KF00Q','ABHEBEN AKTIV','LIFT OFF ACTIVE','SEPARAR ACTIVO','',''
'PF0005','LAUFZEITFEHLER','IPB-YE-LED','=A01+UH000-KF00Q','LAUFZEITFEHLER','TRAVEL TIME ERROR','ERROR DE TIEMPO','',''
'PF0003','NOT HALT BETÄTIGT','IL-YE-LED','=A01+UH000-KF00Q','NOT HALT BETÄTIGT','EMERGENCY STOP PUSHED','PARO EMERGENCIA OK','',''
'PF0001','ANLAGE EIN','IPB-GN-LED','=A01+UH000-KF00Q','ANLAGE EIN','SYSTEM ON','SISTEMA ENCENDIDO','',''
'PF0000','STÖRUNG ALLGEMEIN','IL-YE-LED','=A01+UH000-KF00Q','STÖRUNG ALLGEMEIN','GENERAL TROUBLE','AVERÍA','',''
'DI0017','PHASENÜBERWACHUNGSRELAIS 400VAC EIN','MONITOR. RELAY','=A01+UH000-KF01i','PHASENÜBERWACHUNGSRELAIS 400VAC EIN','PHASE MONITORING RELAY 400VAC ON','VIGILANCIA DE FASE EL RELE´','',''
'SF0015','RESET AKTIV','PB-BK-NO','=A01+UH000-KF01i','RESET AKTIV','RESET ACTIVE','RESET AKTIVA','',''
'DI0014','HAUPTSCHÜTZE EIN','MAIN CONTACT.','=A01+UH000-KF01i','HAUPTSCHÜTZE EIN','MAIN CONTACTORS ON','ENCENDIDO CONTACTOR PRINCIPAL','',''
'DI0013','SICHERHEITSRELAIS EIN','SAFETY RELAY','=A01+UH000-KF01i','SICHERHEITSRELAIS EIN','SAFETY RELAY ON','RELÉ DE SEGURIDAD ENCENDIDO','',''
'DI0012','SICHERUNGSAUTOMATENFALL','CIRCUIT BR.','=A01+UH000-KF01i','SICHERUNGSAUTOMATENFALL','MINIATURE CIRCUIT BREAKERS','FUSIBLE AUTOMÁTICO','',''
'DI0011','ÜBERSTROM','MOTORS','=A01+UH000-KF01i','ÜBERSTROM','OVERCURRENT','SOBREINTENSIDAD','',''
'BG0010','DRUCKLUFT OK','COMPR. AIR','=A01+UH000-KF01i','DRUCKLUFT OK','COMPRESSED AIR OK','AIRE COMPRIMIDO OK','',''
'SF0004','LAMPENTEST','PB-WH-NO','=A01+UH000-KF00i','LAMPENTEST','LAMP TEST','ENSAYO LAMPARA','',''
'SF0006','ANTRIEBE ABHEBEN','SS-BK-NO','=A01+UH000-KF00i','ANTRIEBE ABHEBEN','LIFT OFF CONVEYORS','SEPARAR MOTOR','',''
'SF0005','LAUFZEITFEHLER','IPB-YE-N0','=A01+UH000-KF00i','LAUFZEITFEHLER','TRAVEL TIME ERROR','ERROR DE TIEMPO','',''
'SF0003','NOT HALT SCHALTSCHRANK','EPB-RD-NC','=A01+UH000-KF00i','NOT HALT','EMERGENCY STOP','PARO DE EMERGENCIA ARMARIO DE DISTRIBUCI','',''
'SF0002','START NACH STÖRUNG','IPB-CL-NO','=A01+UH000-KF00i','START NACH STÖRUNG','START AFTER TROUBLE','ARRANQUE DESPUÉS DE AVERÍA','',''
'SF0001','ANLAGE EIN','IPB-GN-NO','=A01+UH000-KF00i','ANLAGE EIN','SYSTEM ON','SISTEMA ENCENDIDO','',''
'SF0000','ANLAGE AUS','PB-BK-NC','=A01+UH000-KF00i','ANLAGE AUS','SYSTEM OFF','SISTEMA APAGADO','',''
'BG1303','SENSOR HAUPTSTR. FB213','LT-FB213','=A01+UC102-KF04i','','','','',''
'BG1424','SENSOR HAUPTSTR. EINFAHRT FB211','LT-ENTER FB211','=A01+UH000-KF05i','','','','',''
'BG1462','SENSOR HAUPTSTR. AUSFAHRT FB222','LT-EXIT-FB222','=A01+UH000-KF08i','','','','',''
'BG3133','SENSOR HAUPTSTR. FB312','LT-FB312','=A01+UH000-KF12i','','','','',''
'MB1487','WEICHE ABZWEIG AUSFAHRT FB222','SW EXIT FB222','=A01+UH000-KF10Q','','','','',''
'MA1437','ANTRIEB HAUPTSTR. AUSFAHRT RF - RSM FB212','M-BI FB212','=A01+UH000-KF05Q','','','','','>'
'MA1436','ANTRIEB HAUPTSTR. EINFAHRT RF - RSM FB211','M-BI FB211','=A01+UH000-KF05Q','','','','','<'
'BG1460','SENSOR HAUPTSTR. AUSFAHRT FB221','LT- EXIT FB221','=A01+UH000-KF08i','','','','',''
'BG1417','SENSOR HAUPTSTR. FLYER 6','LT-ENTER RF6','=A01+UH000-KF04i','','','','',''
'MA1480','ANTRIEB HAUPTSTR. EINFAHRT RF - RSM FB221','M-BI FB221','=A01+UH000-KF10Q','','','','','<'
'QA1525','ANTRIEB HAUPTSTR. RF 8','M-BI RF 8','=A01+UC103-KF02Q','','','','','>'
'MA1524','ANTRIEB HAUPTSTR. RF 8','M-BI RF 8','=A01+UC103-KF02Q','','','','','>'
'BG1140','SENSOR HAUPTSTR. FLYER 3 FB215','LT RF3 FB215','=A01+UC101-KF06i','','','','',''
'MB1486','WEICHE ABZWEIG HAUPTSTR. EINFAHRT FB73','SW ENTER ','=A01+UH000-KF10Q','','','','',''
'QA1483','ANTRIEB HAUPTSTR. RF - RSM','M-BI RSM-RF','=A01+UH000-KF10Q','','','','','<'
'MA1482','ANTRIEB HAUPTSTR. RF - RSM','M-BI RF-RSM','=A01+UH000-KF10Q','','','','','<'
'BG1457','SENSOR HAUPTSTR. EINFAHRT FB222','LT-ENTER-FB222','=A01+UH000-KF07i','','','','',''
'BG1461','SENSOR HAUPTSTR. EINFAHRT FB221','LT-ENTER-FB221','=A01+UH000-KF08i','','','','',''
'BG1420','SENSOR HAUPTSTR. AUSFAHRT FB213','LT- EXIT FB213','=A01+UH000-KF05i','','','','',''
'MA1484','ANTRIEB HAUPTSTR. AUSFAHRT RF - RSM FB222','M-BI FB222','=A01+UH000-KF10Q','','','','','>'
'BG1421','SENSOR HAUPTSTR. FB212','LT-FB212','=A01+UH000-KF05i','','','','',''
'QA1477','ANTRIEB EIN-AUSFAHRT HAUPTSTR. RF - RSM','M-BI RSM-RF','=A01+UH000-KF09Q','','','','','>'
'MA1476','ANTRIEB EIN-AUSFAHRT HAUPTSTR. RF - RSM','M-BI RF-RSM','=A01+UH000-KF09Q','','','','','<'
'MB3236','WEICHE GERADE FB320','STRAIGHT','=A01+UH000-KF20Q','','','','',''
'MB3237','WEICHE ABZWEIG FB320','BRANCH ','=A01+UH000-KF20Q','','','','',''
'BG3231','SENSOR HAUPTSTR. FB321','LT-FB321','=A01+UH000-KF16i','','','','',''
'BG3132','SENSOR HAUPTSTR. FB310-FB320','LT-FB310-FB320','=A01+UH000-KF12i','','','','',''
'MB3136','WEICHE GERADE FB310','STRAIGHT','=A01+UH000-KF14Q','','','','',''
'MB3137','WEICHE ABZWEIG FB310','BRANCH ','=A01+UH000-KF14Q','','','','',''
'QA1433','ANTRIEB EIN-AUSFAHRT HAUPTSTR. RF - RSM','M-BI RSM-RF','=A01+UH000-KF05Q','','','','','>'
'MA1432','ANTRIEB EIN-AUSFAHRT HAUPTSTR. RF - RSM','M-BI RF-RSM','=A01+UH000-KF05Q','','','','','<'
'MB1422','WEICHE ABZWEIG PUFFER FB212','SW EXIT FB212','=A01+UH000-KF04Q','','','','',''
'BG1423','SENSOR HAUPTSTR. AUSFAHRT FB212','LT-EXIT FB212','=A01+UH000-KF05i','','','','',''
'QA3235','ANTRIEB HAUPTSTRECKE -> RSM 28-21 ','RA-BI','=A01+UH000-KF20Q','','','','','<'
'MA3234','ANTRIEB HAUPTSTRECKE -> RSM 21-28 ','RA-BI','=A01+UH000-KF20Q','','','','A','<'
'QA3135','ANTRIEB HAUPTSTRECKE -> RSM 10-1','RA-BI','=A01+UH000-KF14Q','','','','','<'
'MA3134','ANTRIEB HAUPTSTRECKE -> RSM 1-10','RA-BI','=A01+UH000-KF14Q','','','','A','<'
'QA3035','ANTRIEB HAUPTSTRECKE -> RSM 10-1','RA-BI','=A01+UC200-KF03Q','','','','','<'
'MA3034','ANTRIEB HAUPTSTRECKE -> RSM 1-10','RA-BI','=A01+UC200-KF03Q','','','','A','<'
'PF3214','RUNDUMLEUCHTE STÖRUNG RSM 11-20','LED-YE_FAULT','=A01+UH000-KF18Q','','','','',''
'SF3216','RESET/START NACH NOT HALT RSM 21-25','IPB-YE-NO','=A01+UH000-KF14i','RESET','RESET','RESET','',''
'PF3216','RESET/START NACH NOT HALT RSM 21-25','IPB-YE-LED ','=A01+UH000-KF18Q','','','','',''
'SF3215','NOT HALT RSM 21-25','EPB-NC','=A01+UH000-KF14i','NOT-HALT','E-STOP','E-STOP','',''
'PF3114','RUNDUMLEUCHTE STÖRUNG RSM 11-20','LED-YE_FAULT','=A01+UH000-KF12Q','','','','',''
'SF3116','RESET/START NACH NOT HALT RSM 11-20','IPB-YE-NO','=A01+UH000-KF10i','RESET','RESET','RESET','',''
'PF3116','RESET/START NACH NOT HALT RSM 11-20','IPB-YE-LED ','=A01+UH000-KF12Q','','','','',''
'SF3115','NOT HALT RSM 11-20','EPB-NC','=A01+UH000-KF10i','NOT-HALT','E-STOP','E-STOP','',''
'SF3226','ZUG WECHSELN RSM 30','LDT-GN-NO','=A01+UH000-KF15i','-UZ3226','-UZ3226','','',''
'PF3254','ZUG WECHSELN RSM 30','LDT-GN-LED ','=A01+UH000-KF22Q','','','','',''
'QA3257','ANTRIEB AUSFAHREN RSM 30','RA-BI','=A01+UH000-KF22Q','','','','','<'
'MA3256','ANTRIEB EINFAHREN RSM 30','RA-BI','=A01+UH000-KF22Q','','','','A','>'
'BG3227','SENSOR OPTISCH RSM 30','OPT. AP110','=A01+UH000-KF15i','','','','',''
'SF3224','ZUG WECHSELN RSM 29','LDT-GN-NO','=A01+UH000-KF15i','-UZ3224','-UZ3224','','',''
'PF3250','ZUG WECHSELN RSM 29','LDT-GN-LED ','=A01+UH000-KF22Q','','','','',''
'MB3251','WEICHE ABZWEIG RSM 29','SW RSM 29','=A01+UH000-KF22Q','','','','',''
'QA3253','ANTRIEB AUSFAHREN RSM 29','RA-BI','=A01+UH000-KF22Q','','','','','<'
'MA3252','ANTRIEB EINFAHREN RSM 29','RA-BI','=A01+UH000-KF22Q','','','','A','>'
'BG3225','SENSOR OPTISCH RSM 29','OPT. AP110','=A01+UH000-KF15i','','','','',''
'MB3241','WEICHE ABZWEIG RSM 27','SW RSM 27','=A01+UH000-KF21Q','','','','',''
'MB3231','WEICHE ABZWEIG RSM 26','SW RSM 26','=A01+UH000-KF20Q','','','','',''
'MB3245','WEICHE ABZWEIG RSM 28','SW RSM 28','=A01+UH000-KF21Q','','','','',''
'QA3247','ANTRIEB AUSFAHREN RSM 28','RA-BI','=A01+UH000-KF21Q','','','','','<'
'MA3246','ANTRIEB EINFAHREN RSM 28','RA-BI','=A01+UH000-KF21Q','','','','A','>'
'BG3223','SENSOR OPTISCH RSM 28','OPT. AP110','=A01+UH000-KF15i','','','','',''
'QA3243','ANTRIEB AUSFAHREN RSM 27','RA-BI','=A01+UH000-KF21Q','','','','','<'
'MA3242','ANTRIEB EINFAHREN RSM 27','RA-BI','=A01+UH000-KF21Q','','','','A','>'
'BG3221','SENSOR OPTISCH RSM 27','OPT. AP110','=A01+UH000-KF15i','','','','',''
'QA3233','ANTRIEB AUSFAHREN RSM 26','RA-BI','=A01+UH000-KF20Q','','','','','<'
'MA3232','ANTRIEB EINFAHREN RSM 26','RA-BI','=A01+UH000-KF20Q','','','','A','>'
'BG3213','SENSOR OPTISCH RSM 26','OPT. AP110','=A01+UH000-KF14i','','','','',''
'MB3225','WEICHE ABZWEIG RSM 25','SW RSM 25','=A01+UH000-KF19Q','','','','',''
'QA3227','ANTRIEB AUSFAHREN RSM 25','RA-BI','=A01+UH000-KF19Q','','','','','<'
'MA3226','ANTRIEB EINFAHREN RSM 25','RA-BI','=A01+UH000-KF19Q','','','','A','>'
'BG3211','SENSOR OPTISCH RSM 25','OPT. AP110','=A01+UH000-KF14i','','','','',''
'QA3223','ANTRIEB AUSFAHREN RSM 24','RA-BI','=A01+UH000-KF19Q','','','','','<'
'MA3222','ANTRIEB EINFAHREN RSM 24','RA-BI','=A01+UH000-KF19Q','','','','A','>'
'BG3207','SENSOR OPTISCH RSM 24','OPT. AP110','=A01+UH000-KF13i','','','','',''
'MB3221','WEICHE ABZWEIG RSM 24','SW RSM 24','=A01+UH000-KF19Q','','','','',''
'QA3213','ANTRIEB AUSFAHREN RSM 23','RA-BI','=A01+UH000-KF18Q','','','','','<'
'MA3212','ANTRIEB EINFAHREN RSM 23','RA-BI','=A01+UH000-KF18Q','','','','A','>'
'BG3205','SENSOR OPTISCH RSM 23','OPT. AP110','=A01+UH000-KF13i','','','','',''
'QA3207','ANTRIEB AUSFAHREN RSM 22','RA-BI','=A01+UH000-KF17Q','','','','','<'
'MA3206','ANTRIEB EINFAHREN RSM 22','RA-BI','=A01+UH000-KF17Q','','','','A','>'
'BG3203','SENSOR OPTISCH RSM 22','OPT. AP110','=A01+UH000-KF13i','','','','',''
'QA3203','ANTRIEB AUSFAHREN RSM 21','RA-BI','=A01+UH000-KF17Q','','','','','<'
'MA3202','ANTRIEB EINFAHREN RSM 21','RA-BI','=A01+UH000-KF17Q','','','','A','>'
'BG3201','SENSOR OPTISCH RSM 21','OPT. AP110','=A01+UH000-KF13i','','','','',''
'MB3211','WEICHE ABZWEIG RSM 23','SW RSM 23','=A01+UH000-KF18Q','','','','',''
'MB3205','WEICHE ABZWEIG RSM 22','SW RSM 22','=A01+UH000-KF17Q','','','','',''
'MB3201','WEICHE ABZWEIG RSM 21','SW RSM 21','=A01+UH000-KF17Q','','','','',''
'SF3222','ZUG WECHSELN RSM 28','LDT-GN-NO','=A01+UH000-KF15i','-UZ3222','-UZ3222','','',''
'PF3244','ZUG WECHSELN RSM 28','LDT-GN-LED ','=A01+UH000-KF21Q','','','','',''
'SF3220','ZUG WECHSELN RSM 27','LDT-GN-NO','=A01+UH000-KF15i','-UZ3220','-UZ3220','','',''
'PF3240','ZUG WECHSELN RSM 27','LDT-GN-LED ','=A01+UH000-KF21Q','','','','',''
'SF3212','ZUG WECHSELN RSM 26','LDT-GN-NO','=A01+UH000-KF14i','-UZ3300','-UZ3300','','',''
'PF3230','ZUG WECHSELN RSM 26','LDT-GN-LED ','=A01+UH000-KF20Q','','','','',''
'SF3210','ZUG WECHSELN RSM 25','LDT-GN-NO','=A01+UH000-KF14i','-UZ3210','-UZ3210','','',''
'PF3224','ZUG WECHSELN RSM 25','LDT-GN-LED ','=A01+UH000-KF19Q','','','','',''
'SF3206','ZUG WECHSELN RSM 24','LDT-GN-NO','=A01+UH000-KF13i','-UZ3206','-UZ3206','','',''
'PF3220','ZUG WECHSELN RSM 24','LDT-GN-LED ','=A01+UH000-KF19Q','','','','',''
'SF3204','ZUG WECHSELN RSM 23','LDT-GN-NO','=A01+UH000-KF13i','-UZ3204','-UZ3204','','',''
'PF3210','ZUG WECHSELN RSM 23','LDT-GN-LED ','=A01+UH000-KF18Q','','','','',''
'SF3202','ZUG WECHSELN RSM 22','LDT-GN-NO','=A01+UH000-KF13i','-UZ3202','-UZ3202','','',''
'PF3204','ZUG WECHSELN RSM 22','LDT-GN-LED ','=A01+UH000-KF17Q','','','','',''
'SF3200','ZUG WECHSELN RSM 21','LDT-GN-NO','=A01+UH000-KF13i','-UZ3200','-UZ3200','','',''
'PF3200','ZUG WECHSELN RSM 21','LDT-GN-LED ','=A01+UH000-KF17Q','','','','',''
'MB3155','WEICHE ABZWEIG RSM 20','SW RSM 20','=A01+UH000-KF16Q','','','','',''
'QA3157','ANTRIEB AUSFAHREN RSM 20','RA-BI','=A01+UH000-KF16Q','','','','','<'
'MA3156','ANTRIEB EINFAHREN RSM 20','RA-BI','=A01+UH000-KF16Q','','','','A','>'
'BG3127','SENSOR OPTISCH RSM 20','OPT. AP110','=A01+UH000-KF11i','','','','',''
'QA3153','ANTRIEB AUSFAHREN RSM 19','RA-BI','=A01+UH000-KF16Q','','','','','<'
'MA3152','ANTRIEB EINFAHREN RSM 19','RA-BI','=A01+UH000-KF16Q','','','','A','>'
'BG3125','SENSOR OPTISCH RSM 19','OPT. AP110','=A01+UH000-KF11i','','','','',''
'QA3147','ANTRIEB AUSFAHREN RSM 18','RA-BI','=A01+UH000-KF15Q','','','','','<'
'MA3146','ANTRIEB EINFAHREN RSM 18','RA-BI','=A01+UH000-KF15Q','','','','A','>'
'BG3123','SENSOR OPTISCH RSM 18','OPT. AP110','=A01+UH000-KF11i','','','','',''
'QA3143','ANTRIEB AUSFAHREN RSM 17','RA-BI','=A01+UH000-KF15Q','','','','','<'
'MA3142','ANTRIEB EINFAHREN RSM 17','RA-BI','=A01+UH000-KF15Q','','','','A','>'
'BG3121','SENSOR OPTISCH RSM 17','OPT. AP110','=A01+UH000-KF11i','','','','',''
'QA3133','ANTRIEB AUSFAHREN RSM 16','RA-BI','=A01+UH000-KF14Q','','','','','<'
'MA3132','ANTRIEB EINFAHREN RSM 16','RA-BI','=A01+UH000-KF14Q','','','','A','>'
'BG3113','SENSOR OPTISCH RSM 16','OPT. AP110','=A01+UH000-KF10i','','','','',''
'QA3127','ANTRIEB AUSFAHREN RSM 15','RA-BI','=A01+UH000-KF13Q','','','','','<'
'MA3126','ANTRIEB EINFAHREN RSM 15','RA-BI','=A01+UH000-KF13Q','','','','A','>'
'BG3111','SENSOR OPTISCH RSM 15','OPT. AP110','=A01+UH000-KF10i','','','','',''
'QA3123','ANTRIEB AUSFAHREN RSM 14','RA-BI','=A01+UH000-KF13Q','','','','','<'
'MA3122','ANTRIEB EINFAHREN RSM 14','RA-BI','=A01+UH000-KF13Q','','','','A','>'
'BG3107','SENSOR OPTISCH RSM 14','OPT. AP110','=A01+UH000-KF09i','','','','',''
'MB3151','WEICHE ABZWEIG RSM 19','SW RSM 19','=A01+UH000-KF16Q','','','','',''
'MB3145','WEICHE ABZWEIG RSM 18','SW RSM 18','=A01+UH000-KF15Q','','','','',''
'MB3141','WEICHE ABZWEIG RSM 17','SW RSM 17','=A01+UH000-KF15Q','','','','',''
'MB3131','WEICHE ABZWEIG RSM 16','SW RSM 16','=A01+UH000-KF14Q','','','','',''
'MB3125','WEICHE ABZWEIG RSM 15','SW RSM 15','=A01+UH000-KF13Q','','','','',''
'MB3121','WEICHE ABZWEIG RSM 14','SW RSM 14','=A01+UH000-KF13Q','','','','',''
'SF3126','ZUG WECHSELN RSM 20','LDT-GN-NO','=A01+UH000-KF11i','-UZ3122','-UZ3122','','',''
'PF3154','ZUG WECHSELN RSM 20','LDT-GN-LED ','=A01+UH000-KF16Q','','','','',''
'SF3124','ZUG WECHSELN RSM 19','LDT-GN-NO','=A01+UH000-KF11i','-UZ3120','-UZ3120','','',''
'PF3150','ZUG WECHSELN RSM 19','LDT-GN-LED ','=A01+UH000-KF16Q','','','','',''
'SF3122','ZUG WECHSELN RSM 18','LDT-GN-NO','=A01+UH000-KF11i','-UZ3116','-UZ3116','','',''
'PF3144','ZUG WECHSELN RSM 18','LDT-GN-LED ','=A01+UH000-KF15Q','','','','',''
'SF3120','ZUG WECHSELN RSM 17','LDT-GN-NO','=A01+UH000-KF11i','-UZ3120','-UZ3102','','',''
'PF3140','ZUG WECHSELN RSM 17','LDT-GN-LED ','=A01+UH000-KF15Q','','','','',''
'SF3112','ZUG WECHSELN RSM 16','LDT-GN-NO','=A01+UH000-KF10i','-UZ3112','-UZ3112','','',''
'PF3130','ZUG WECHSELN RSM 16','LDT-GN-LED ','=A01+UH000-KF14Q','','','','',''
'SF3110','ZUG WECHSELN RSM 15','LDT-GN-NO','=A01+UH000-KF10i','-UZ3110','-UZ3110','','',''
'PF3124','ZUG WECHSELN RSM 15','LDT-GN-LED ','=A01+UH000-KF13Q','','','','',''
'SF3106','ZUG WECHSELN RSM 14','LDT-GN-NO','=A01+UH000-KF09i','-UZ3106','-UZ3106','','',''
'PF3120','ZUG WECHSELN RSM 14','LDT-GN-LED ','=A01+UH000-KF13Q','','','','',''
'QA3113','ANTRIEB AUSFAHREN RSM 13','RA-BI','=A01+UH000-KF12Q','','','','','<'
'MA3112','ANTRIEB EINFAHREN RSM 13','RA-BI','=A01+UH000-KF12Q','','','','A','>'
'BG3105','SENSOR OPTISCH RSM 13','OPT. AP110','=A01+UH000-KF09i','','','','',''
'MB3111','WEICHE ABZWEIG RSM 13','SW RSM 13','=A01+UH000-KF12Q','','','','',''
'SF3104','ZUG WECHSELN RSM 13','LDT-GN-NO','=A01+UH000-KF09i','-UZ3104','-UZ3104','','',''
'PF3110','ZUG WECHSELN RSM 13','LDT-GN-LED ','=A01+UH000-KF12Q','','','','',''
'QA3107','ANTRIEB AUSFAHREN RSM 12','RA-BI','=A01+UH000-KF11Q','','','','','<'
'MA3106','ANTRIEB EINFAHREN RSM 12','RA-BI','=A01+UH000-KF11Q','','','','A','>'
'BG3103','SENSOR OPTISCH RSM 12','OPT. AP110','=A01+UH000-KF09i','','','','',''
'MB3105','WEICHE ABZWEIG RSM 12','SW RSM 12','=A01+UH000-KF11Q','','','','',''
'SF3102','ZUG WECHSELN RSM 12','LDT-GN-NO','=A01+UH000-KF09i','-UZ3102','-UZ3102','','',''
'PF3104','ZUG WECHSELN RSM 12','LDT-GN-LED ','=A01+UH000-KF11Q','','','','',''
'SF3100','ZUG WECHSELN RSM 11','LDT-GN-NO','=A01+UH000-KF09i','-UZ3100','-UZ3100','','',''
'PF3100','ZUG WECHSELN RSM 11','LDT-GN-LED ','=A01+UH000-KF11Q','','','','',''
'QA3103','ANTRIEB AUSFAHREN RSM 11','RA-BI','=A01+UH000-KF11Q','','','','','<'
'MA3102','ANTRIEB EINFAHREN RSM 11','RA-BI','=A01+UH000-KF11Q','','','','A','>'
'BG3101','SENSOR OPTISCH RSM 11','OPT. AP110','=A01+UH000-KF09i','','','','',''
'MB3101','WEICHE ABZWEIG RSM 11','SW RSM 11','=A01+UH000-KF11Q','','','','',''
'BG3130','SENSOR HAUPTSTR. FB310 ','LT-FB310','=A01+UH000-KF12i','','','','',''
'BG3230','SENSOR HAUPTSTR. FB320 ','LT-FB320','=A01+UH000-KF16i','','','','',''
'BG3131','SENSOR HAUPTSTR. FB311','LT-FB311','=A01+UH000-KF12i','','','','',''
'BG1541','SENSOR AUSFAHRT PUFFER F0902 FLYER 9','LT-EXIT F0902','=A01+UC103-KF02i','','','','',''
'BG1540','SENSOR AUSFAHRT PUFFER F0901 FLYER 9','LT-EXIT F0901','=A01+UC103-KF02i','','','','',''
'MB1574','ANPRESSEN NACHPUFFER F0901 FLYER 9','PRESS F0901','=A01+UC103-KF07Q','','','','',''
'MB1575','ANPRESSEN NACHPUFFER F0902 FLYER 9','PRESS F0902','=A01+UC103-KF07Q','','','','',''
'QA1571','ANTRIEB NACHPUFFER F0707 FLYER 9','M-BI-LE','=A01+UC103-KF07Q','','','','','<'
'MA1570','ANTRIEB NACHPUFFER F0901 FLYER 9','M-BI-RI','=A01+UC103-KF07Q','','','','','>'
'MB1544','ANPRESSEN PUFFER F0901 FLYER 9','PRESS F0901','=A01+UC103-KF04Q','','','','',''
'MB1545','ANPRESSEN PUFFER F0902 FLYER 9','PRESS F0902','=A01+UC103-KF04Q','','','','',''
'QA1561','ANTRIEB PUFFER F0901 FLYER 9','M-BI-RI','=A01+UC103-KF06Q','','','','','>'
'MA1560','ANTRIEB PUFFER F0901 FLYER 9','M-BI-LE','=A01+UC103-KF06Q','','','','','<'
'BG1546','SENSOR AUSFAHRT NACHPUFFER F0902 RF 9','LT-EXIT F0902','=A01+UC103-KF02i','','','','',''
'BG1545','SENSOR AUSFAHRT NACHPUFFER F0901 RF 9','LT-EXIT F0901','=A01+UC103-KF02i','','','','',''
'MB1541','WEICHE ABZWEIG EINFAHRT PUFFER F0902 FLYER 9','SW ENTER F0901','=A01+UC103-KF04Q','','','','',''
'MB1540','WEICHE ABZWEIG EINFAHRT RF 9','SW ENTER RF 9','=A01+UC103-KF04Q','','','','',''
'MB1567','WEICHE ABZWEIG EINFAHRT NACHP. RF 9','SW-STRAIGHT','=A01+UC103-KF06Q','','','','',''
'MB1566','WEICHE ABZWEIG EINFAHRT NACHP. RF 9','SW-BRANCH','=A01+UC103-KF06Q','','','','',''
'KF1555','IF RF 09: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC103-KF05Q','IF RF 09: START SPULENWECHSEL 2','IF RF 09: START EXCHANGE 2','','',''
'DI1554','IF RF 09 : NEUE SPULE','IF-RELAIS','=A01+UC103-KF03i','IF RF 09: NEUE SPULE ','IF RF 09: NEW BOBBIN','','',''
'KF1554','IF RF 09: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC103-KF05Q','IF RF 09: START SPULENWECHSEL 1','IF RF 09: START EXCHANGE 1','','',''
'PF1547','RUNDUMLEUCHTE STÖRUNG FLYER 9','LED-YE_FAULT','=A01+UC103-KF04Q','','','','',''
'SF1553','RESET FLYER 9','IPB-YE-NO','=A01+UC103-KF03i','RESET','RESET','RESET','',''
'PF1553','RESET FLYER 9','IPB-YE-LED','=A01+UC103-KF05Q','','','','',''
'SF1552','NOT HALT FLYER 9','EPB-NC','=A01+UC103-KF03i','NOT-HALT','E-STOP','E-STOP','',''
'BG1556','SENSOR SPULE IN POSITION FLYER 9','BOBBIN IN POS','=A01+UC103-KF03i','','','','',''
'BG1544','SENSOR ZUG IN DOFFER FLYER 9','LT-TRAIN IN DOF','=A01+UC103-KF02i','','','','',''
'BG1543','SENSOR ZUG IN DOFFER PM 9','LT-TRAIN IN DOF','=A01+UC103-KF02i','','','','',''
'MB1551','ABHEBEN ANTRIEBE PM 9','LIFT OFF BS 9','=A01+UC103-KF05Q','','','','',''
'MA1556','ANTRIEBE FLYER 9','M-BI','=A01+UC103-KF05Q','','','','','>'
'MB1502','WEICHE ABZWEIG EINFAHRT PUFFER F0802 FLYER 8','SW ENTER F0802','=A01+UC103-KF00Q','','','','',''
'MB1500','WEICHE ABZWEIG EINFAHRT FLYER 8','SW ENTER RF 8','=A01+UC103-KF00Q','','','','',''
'MB1501','WEICHE ABZWEIG EINFAHRT RF 8','SW ENTER RF 8','=A01+UC103-KF00Q','','','','',''
'MB1534','ANPRESSEN NACHPUFFER F0801 FLYER 8','PRESS F0801','=A01+UC103-KF03Q','','','','',''
'MB1535','ANPRESSEN NACHPUFFER F0802 FLYER 8','PRESS F0802','=A01+UC103-KF03Q','','','','',''
'QA1531','ANTRIEB NACHPUFFER F0802 RF 8','M-BI','=A01+UC103-KF03Q','','','','','>'
'MA1530','ANTRIEB NACHPUFFER F0801 RF 8','M-BI','=A01+UC103-KF03Q','','','','','>'
'MB1504','ANPRESSEN PUFFER F0801 FLYER 8','PRESS F0801','=A01+UC103-KF00Q','','','','',''
'MB1505','ANPRESSEN PUFFER F0802 FLYER 8','PRESS F0802','=A01+UC103-KF00Q','','','','',''
'QA1521','ANTRIEB PUFFER F0802 FLYER 8','M-BI-RI','=A01+UC103-KF02Q','','','','','<'
'MA1520','ANTRIEB PUFFER F0801 FLYER 8','M-BI-LE','=A01+UC103-KF02Q','','','','','<'
'BG1505','SENSOR AUSFAHRT NACHPUFFER F0801 FLYER 8','LT-EXIT F0801','=A01+UC103-KF00i','','','','',''
'BG1506','SENSOR AUSFAHRT NACHPUFFER F0802 FLYER 8','LT-EXIT F0802','=A01+UC103-KF00i','','','','',''
'BG1501','SENSOR AUSFAHRT PUFFER F0802 FLYER 8','LT-EXIT F0802','=A01+UC103-KF00i','','','','',''
'BG1500','SENSOR AUSFAHRT PUFFER F0801 FLYER 8','LT-EXIT F0801','=A01+UC103-KF00i','','','','',''
'SF1511','HAUPTSCHALTER EIN +UC103','I-MS ON','=A01+UC103-KF01i','HAUPTSCHALTER EIN','MAIN SWITCH ON','','',''
'SF1510','MOTORSCHUTZSCHALTER HAT AUSGELÖST','I-CB OK','=A01+UC103-KF01i','MSS IN ORDNUNG','MPS OK','','',''
'PF1510','LM-ÜBERSTROM +UC103','IL-YE-LED','=A01+UC103-KF01Q','LM ÜBERSTROM','IL OVERCURRENT','','',''
'MB1527','WEICHE ABZWEIG EINFAHRT NACHP. RF 8','SW-BRANCH','=A01+UC103-KF02Q','','','','',''
'MB1526','WEICHE ABZWEIG EINFAHRT NACHP. RF 8','SW-STRAIGHT','=A01+UC103-KF02Q','','','','',''
'BG1503','SENSOR ZUG IN DOFFER PM 8','LT-TRAIN IN DOF','=A01+UC103-KF00i','','','','',''
'BG1516','SENSOR SPULE IN POSITION FLYER 8','BOBBIN IN POS','=A01+UC103-KF01i','','','','',''
'BG1504','SENSOR ZUG IN DOFFER FLYER 8','LT-TRAIN IN DOF','=A01+UC103-KF00i','','','','',''
'MB1511','ABHEBEN ANTRIEBE PM 8','LIFT OFF BS 8','=A01+UC103-KF01Q','','','','',''
'MA1516','ANTRIEBE FLYER 8','M-BI','=A01+UC103-KF01Q','','','','','<'
'KF1515','IF RF 08: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC103-KF01Q','IF RF 08: START SPULENWECHSEL 2','IF RF 08: START EXCHANGE 2','','',''
'DI1514','IF RF 08 : NEUE SPULE','IF-RELAIS','=A01+UC103-KF01i','IF RF 08: NEUE SPULE ','IF RF 08: NEW BOBBIN','','',''
'KF1514','IF RF 08: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC103-KF01Q','IF RF 08: START SPULENWECHSEL 1','IF RF 08: START EXCHANGE 1','','',''
'PF1507','RUNDUMLEUCHTE STÖRUNG FLYER 8','LED-YE_FAULT','=A01+UC103-KF00Q','','','','',''
'SF1513','RESET FLYER 8','IPB-YE-NO','=A01+UC103-KF01i','RESET','RESET','RESET','',''
'PF1513','RESET FLYER 8','IPB-YE-LED','=A01+UC103-KF01Q','','','','',''
'SF1512','NOT HALT FLYER 8','EPB-NC','=A01+UC103-KF01i','NOT-HALT','E-STOP','E-STOP','',''
'BG1446','SENSOR AUSFAHRT NACHPUFFER F0702 RF 7','LT-EXIT F0702','=A01+UH000-KF06i','','','','',''
'BG1445','SENSOR AUSFAHRT NACHPUFFER F0701 RF 7','LT-EXIT F0701','=A01+UH000-KF06i','','','','',''
'MB1441','WEICHE ABZWEIG EINFAHRT F0701 RF 7','SW ENTER F0701 ','=A01+UH000-KF06Q','','','','',''
'MB1443','WEICHE ABZWEIG AUSFAHRT NACHP. FLYER 7','SW EXIT RF7','=A01+UH000-KF06Q','','','','',''
'MB1440','WEICHE ABZWEIG EINFAHRT RF 7','SW ENTER RF 7','=A01+UH000-KF06Q','','','','',''
'MB1442','WEICHE ABZWEIG EINFAHRT F0702 RF 7','SW ENTER F0702','=A01+UH000-KF06Q','','','','',''
'MB1474','ANPRESSEN NACHPUFFER F0701 FLYER 7','PRESS F0701','=A01+UH000-KF09Q','','','','',''
'MB1475','ANPRESSEN NACHPUFFER F0702 FLYER 7','PRESS F0702','=A01+UH000-KF09Q','','','','',''
'QA1471','ANTRIEB NACHPUFFER F0707 FLYER 7','M-BI-LE','=A01+UH000-KF09Q','','','','','<'
'MA1470','ANTRIEB NACHPUFFER F0701 FLYER 7','M-BI-RI','=A01+UH000-KF09Q','','','','','>'
'MB1444','ANPRESSEN PUFFER F0701 FLYER 7','PRESS F0701','=A01+UH000-KF06Q','','','','',''
'MB1445','ANPRESSEN PUFFER F0702 FLYER 7','PRESS F0702','=A01+UH000-KF06Q','','','','',''
'QA1461','ANTRIEB PUFFER F0701 FLYER 7','M-BI-RI','=A01+UH000-KF08Q','','','','','>'
'MA1460','ANTRIEB PUFFER F0701 FLYER 7','M-BI-LE','=A01+UH000-KF08Q','','','','','<'
'BG1441','SENSOR AUSFAHRT PUFFER F0702 FLYER 7','LT-EXIT F0702','=A01+UH000-KF06i','','','','',''
'BG1440','SENSOR AUSFAHRT PUFFER F0701 FLYER 7','LT-EXIT F0701','=A01+UH000-KF06i','','','','',''
'BG1456','SENSOR SPULE IN POSITION FLYER 7','BOBBIN IN POS','=A01+UH000-KF07i','','','','',''
'BG1444','SENSOR ZUG IN DOFFER FLYER 7','LT-TRAIN IN DOF','=A01+UH000-KF06i','','','','',''
'BG1443','SENSOR ZUG IN DOFFER PM 7','LT-TRAIN IN DOF','=A01+UH000-KF06i','','','','',''
'MB1451','ABHEBEN ANTRIEBE PM 7','LIFT OFF BS 7','=A01+UH000-KF07Q','','','','',''
'MA1456','ANTRIEBE FLYER 7','M-BI','=A01+UH000-KF07Q','','','','','>'
'MB1467','WEICHE ABZWEIG EINFAHRT NACHP. RF7','SW-STRAIGHT','=A01+UH000-KF08Q','','','','',''
'MB1466','WEICHE ABZWEIG EINFAHRT NACHP. RF7','SW-BRANCH','=A01+UH000-KF08Q','','','','',''
'KF1455','IF RF 07: START SPULENWECHSEL 2','IF-RELAIS','=A01+UH000-KF07Q','IF RF 07: START SPULENWECHSEL 2','IF RF 07: START EXCHANGE 2','','',''
'DI1454','IF RF 07 : NEUE SPULE','IF-RELAIS','=A01+UH000-KF07i','IF RF 07: NEUE SPULE ','IF RF 07: NEW BOBBIN','','',''
'KF1454','IF RF 07: START SPULENWECHSEL 1','IF-RELAIS','=A01+UH000-KF07Q','IF RF 07: START SPULENWECHSEL 1','IF RF 07: START EXCHANGE 1','','',''
'PF1447','RUNDUMLEUCHTE STÖRUNG FLYER 7','LED-YE_FAULT','=A01+UH000-KF06Q','','','','',''
'SF1453','RESET FLYER 7','IPB-YE-NO','=A01+UH000-KF07i','RESET','RESET','RESET','',''
'PF1453','RESET FLYER 7','IPB-YE-LED','=A01+UH000-KF07Q','','','','',''
'SF1452','NOT HALT FLYER 7','EPB-NC','=A01+UH000-KF07i','NOT-HALT','E-STOP','E-STOP','',''
'SF3026','ZUG WECHSELN RSM 10','LDT-GN-NO','=A01+UC200-KF02i','-UZ3026','-UZ3026','','',''
'PF3054','ZUG WECHSELN RSM 10','LDT-GN-LED ','=A01+UC200-KF05Q','','','','',''
'SF3024','ZUG WECHSELN RSM 9','LDT-GN-NO','=A01+UC200-KF02i','-UZ3024','-UZ3024','','',''
'PF3050','ZUG WECHSELN RSM 9','LDT-GN-LED ','=A01+UC200-KF05Q','','','','',''
'QA3057','ANTRIEB AUSFAHREN RSM 10','RA-BI','=A01+UC200-KF05Q','','','','','<'
'MA3056','ANTRIEB EINFAHREN RSM 10','RA-BI','=A01+UC200-KF05Q','','','','A','>'
'BG3027','SENSOR OPTISCH RSM 10','OPT. AP110','=A01+UC200-KF02i','','','','',''
'MB3055','WEICHE ABZWEIG RSM 10','SW RSM 10','=A01+UC200-KF05Q','','','','',''
'QA3053','ANTRIEB AUSFAHREN RSM 9','RA-BI','=A01+UC200-KF05Q','','','','','<'
'MA3052','ANTRIEB EINFAHREN RSM 9','RA-BI','=A01+UC200-KF05Q','','','','A','>'
'BG3025','SENSOR OPTISCH RSM 9','OPT. AP110','=A01+UC200-KF02i','','','','',''
'MB3051','WEICHE ABZWEIG RSM 9','SW RSM 09','=A01+UC200-KF05Q','','','','',''
'SF3014','HAUPTSCHALTER EIN +UC200','I-MS ON','=A01+UC200-KF01i','HAUPTSCHALTER EIN','MAIN SWITCH ON','','',''
'SF3017','MOTORSCHUTZSCHALTER HAT AUSGELÖST','I-CB OK','=A01+UC200-KF01i','MSS IN ORDNUNG','MPS OK','','',''
'PF3017','LM-ÜBERSTROM +UC200 RSM 1-10','IL-YE-LED','=A01+UC200-KF01Q','LM ÜBERSTROM','IL OVERCURRENT','','',''
'SF3020','ZUG WECHSELN RSM 7','LDT-GN-NO','=A01+UC200-KF02i','-UZ3020','-UZ3020','','',''
'PF3040','ZUG WECHSELN RSM 7','LDT-GN-LED ','=A01+UC200-KF04Q','','','','',''
'QA3043','ANTRIEB AUSFAHREN RSM 7','RA-BI','=A01+UC200-KF04Q','','','','','<'
'MA3042','ANTRIEB EINFAHREN RSM 7','RA-BI','=A01+UC200-KF04Q','','','','A','>'
'BG3021','SENSOR OPTISCH RSM 7','OPT. AP110','=A01+UC200-KF02i','','','','',''
'MB3041','WEICHE ABZWEIG RSM 7','SW RSM 07','=A01+UC200-KF04Q','','','','',''
'SF3022','ZUG WECHSELN RSM 8','LDT-GN-NO','=A01+UC200-KF02i','-UZ3022','-UZ3022','','',''
'PF3044','ZUG WECHSELN RSM 8','LDT-GN-LED ','=A01+UC200-KF04Q','','','','',''
'QA3047','ANTRIEB AUSFAHREN RSM 8','RA-BI','=A01+UC200-KF04Q','','','','','<'
'MA3046','ANTRIEB EINFAHREN RSM 8','RA-BI','=A01+UC200-KF04Q','','','','A','>'
'BG3023','SENSOR OPTISCH RSM 8','OPT. AP110','=A01+UC200-KF02i','','','','',''
'MB3045','WEICHE ABZWEIG RSM 8','SW RSM 08','=A01+UC200-KF04Q','','','','',''
'PF3014','RUNDUMLEUCHTE STÖRUNG RSM 01-10','LED-YE_FAULT','=A01+UC200-KF01Q','','','','',''
'SF3016','RESET/START NACH NOT HALT RSM 1-10','IPB-YE-NO','=A01+UC200-KF01i','RESET','RESET','RESET','',''
'PF3016','RESET/START NACH NOT HALT RSM 1-10','IPB-YE-LED ','=A01+UC200-KF01Q','','','','',''
'SF3015','NOT HALT RSM 1-10','EPB-NC','=A01+UC200-KF01i','NOT-HALT','E-STOP','E-STOP','',''
'SF3012','ZUG WECHSELN RSM 6','LDT-GN-NO','=A01+UC200-KF01i','-UZ3012','-UZ3012','','',''
'PF3030','ZUG WECHSELN RSM 6','LDT-GN-LED ','=A01+UC200-KF03Q','','','','',''
'QA3033','ANTRIEB AUSFAHREN RSM 6','RA-BI','=A01+UC200-KF03Q','','','','','<'
'MA3032','ANTRIEB EINFAHREN RSM 6','RA-BI','=A01+UC200-KF03Q','','','','A','>'
'BG3013','SENSOR OPTISCH RSM 6','OPT. AP110','=A01+UC200-KF01i','','','','',''
'MB3031','WEICHE ABZWEIG RSM 6','SW RSM 06','=A01+UC200-KF03Q','','','','',''
'SF3010','ZUG WECHSELN RSM 5','LDT-GN-NO','=A01+UC200-KF01i','-UZ3010','-UZ3010','','',''
'PF3024','ZUG WECHSELN RSM 5','LDT-GN-LED ','=A01+UC200-KF02Q','','','','',''
'QA3027','ANTRIEB AUSFAHREN RSM 5','RA-BI','=A01+UC200-KF02Q','','','','','<'
'MA3026','ANTRIEB EINFAHREN RSM 5','RA-BI','=A01+UC200-KF02Q','','','','A','>'
'BG3011','SENSOR OPTISCH RSM 5','OPT. AP110','=A01+UC200-KF01i','','','','',''
'MB3025','WEICHE ABZWEIG RSM 5','SW RSM 05','=A01+UC200-KF02Q','','','','',''
'SF3006','ZUG WECHSELN RSM 4','LDT-GN-NO','=A01+UC200-KF00i','-UZ3006','-UZ3006','','',''
'PF3020','ZUG WECHSELN RSM 4','LDT-GN-LED ','=A01+UC200-KF02Q','','','','',''
'SF3004','ZUG WECHSELN RSM 3','LDT-GN-NO','=A01+UC200-KF00i','-UZ3004','-UZ3004','','',''
'PF3010','ZUG WECHSELN RSM 3','LDT-GN-LED ','=A01+UC200-KF01Q','','','','',''
'QA3023','ANTRIEB AUSFAHREN RSM 4','RA-BI','=A01+UC200-KF02Q','','','','','<'
'MA3022','ANTRIEB EINFAHREN RSM 4','RA-BI','=A01+UC200-KF02Q','','','','A','>'
'BG3007','SENSOR OPTISCH RSM 4','OPT. AP110','=A01+UC200-KF00i','','','','',''
'MB3021','WEICHE ABZWEIG RSM 4','SW RSM 04','=A01+UC200-KF02Q','','','','',''
'QA3013','ANTRIEB AUSFAHREN RSM 3','RA-BI','=A01+UC200-KF01Q','','','','','<'
'MA3012','ANTRIEB EINFAHREN RSM 3','RA-BI','=A01+UC200-KF01Q','','','','A','>'
'BG3005','SENSOR OPTISCH RSM 3','OPT. AP110','=A01+UC200-KF00i','','','','',''
'MB3011','WEICHE ABZWEIG RSM 3','SW RSM 03','=A01+UC200-KF01Q','','','','',''
'SF3002','ZUG WECHSELN RSM 2','LDT-GN-NO','=A01+UC200-KF00i','-UZ3002','-UZ3002','','',''
'PF3004','ZUG WECHSELN RSM 2','LDT-GN-LED ','=A01+UC200-KF00Q','','','','',''
'QA3007','ANTRIEB AUSFAHREN RSM 2','RA-BI','=A01+UC200-KF00Q','','','','','<'
'MA3006','ANTRIEB EINFAHREN RSM 2','RA-BI','=A01+UC200-KF00Q','','','','A','>'
'BG3003','SENSOR OPTISCH RSM 2','OPT. AP110','=A01+UC200-KF00i','','','','',''
'MB3005','WEICHE ABZWEIG RSM 2','SW RSM 02','=A01+UC200-KF00Q','','','','',''
'SF3000','ZUG WECHSELN RSM 1','LDT-GN-NO','=A01+UC200-KF00i','-UZ3000','-UZ3000','','',''
'PF3000','ZUG WECHSELN RSM 1 ','LDT-GN-LED ','=A01+UC200-KF00Q','','','','',''
'QA3003','ANTRIEB AUSFAHREN RSM 1','RA-BI','=A01+UC200-KF00Q','','','','','<'
'MA3002','ANTRIEB EINFAHREN RSM 1','RA-BI','=A01+UC200-KF00Q','','','','A','>'
'BG3001','SENSOR OPTISCH RSM 1 ','OPT. AP110','=A01+UC200-KF00i','','','','',''
'MA1464','ANTRIEB HAUPTSTR. AUSFAHRT RF - RSM FB212','M-BI FB212','=A01+UH000-KF08Q','','','','','>'
'MA1462','ANTRIEB HAUPTSTR. EINFAHRT FB211','M-BI FB211','=A01+UH000-KF08Q','','','','','<'
'MB1423','WEICHE ABZWEIG FB213','SW FB213','=A01+UH000-KF04Q','','','','',''
'QA1425','ANTRIEB HAUPTSTECKE RF 6','M-BI-RF6 FB63','=A01+UH000-KF04Q','','','','','>'
'MA1424','ANTRIEB HAUPTSTECKE RF 6','M-BI-RF6 FB63','=A01+UH000-KF04Q','','','','','<'
'BG1405','SENSOR AUSFAHRT NACHPUFFER F0601 FLYER 6','LT-EXIT F0601','=A01+UH000-KF03i','','','','',''
'BG1406','SENSOR AUSFAHRT NACHPUFFER F0602 FLYER 6','LT-EXIT F0602','=A01+UH000-KF03i','','','','',''
'MB1401','WEICHE ABZWEIG EINFAHRT PUFFER F0601 FLYER 6','SW F0601','=A01+UH000-KF02Q','','','','',''
'BG1422','SENSOR HAUPTSTR. FB212','LT-FB212','=A01+UH000-KF05i','','','','',''
'MB1400','WEICHE ABZWEIG EINFAHRT FLYER 6','SW ENTER RF6','=A01+UH000-KF02Q','','','','',''
'MB1403','WEICHE ABZWEIG NACHPUFFER F0601-F0602 ','SW EXIT','=A01+UH000-KF02Q','','','','',''
'MB1434','ANPRESSEN NACHPUFFER F0601 FLYER 6','PRESS F0601','=A01+UH000-KF05Q','','','','',''
'MB1435','ANPRESSEN NACHPUFFER F0602 FLYER 6','PRESS F0602','=A01+UH000-KF05Q','','','','',''
'QA1431','ANTRIEB NACHPUFFER F0602 RF6','M-BI','=A01+UH000-KF05Q','','','','','>'
'MA1430','ANTRIEB NACHPUFFER F0601 RF6','M-BI','=A01+UH000-KF05Q','','','','','>'
'MB1404','ANPRESSEN PUFFER F0601 FLYER 6','PRESS F0601','=A01+UH000-KF02Q','','','','',''
'MB1405','ANPRESSEN PUFFER F0602 FLYER 6','PRESS F0602','=A01+UH000-KF02Q','','','','',''
'QA1421','ANTRIEB PUFFER F0602 FLYER 6','M-BI-RI','=A01+UH000-KF04Q','','','','','<'
'MA1420','ANTRIEB PUFFER F0601 FLYER 6','M-BI-LE','=A01+UH000-KF04Q','','','','','<'
'MB1427','WEICHE ABZWEIG EINFAHRT NACHP. RF 6','SW-BRANCH','=A01+UH000-KF04Q','','','','',''
'MB1426','WEICHE ABZWEIG EINFAHRT NACHP. RF 6','SW-STRAIGHT','=A01+UH000-KF04Q','','','','',''
'BG1401','SENSOR AUSFAHRT PUFFER F0602 FLYER 6','LT-EXIT F0602','=A01+UH000-KF03i','','','','',''
'BG1400','SENSOR AUSFAHRT PUFFER F0601 FLYER 6','LT-EXIT F0601','=A01+UH000-KF03i','','','','',''
'KF1415','IF RF 06: START SPULENWECHSEL 2','IF-RELAIS','=A01+UH000-KF03Q','IF RF 06: START SPULENWECHSEL 2','IF RF 06: START EXCHANGE 2','','',''
'DI1414','IF RF 06 : NEUE SPULE','IF-RELAIS','=A01+UH000-KF04i','IF RF 06: NEUE SPULE ','IF RF 06: NEW BOBBIN','','',''
'KF1414','IF RF 06: START SPULENWECHSEL 1','IF-RELAIS','=A01+UH000-KF03Q','IF RF 06: START SPULENWECHSEL 1','IF RF 06: START EXCHANGE 1','','',''
'PF1407','RUNDUMLEUCHTE STÖRUNG FLYER 6','LED-YE_FAULT','=A01+UH000-KF02Q','','','','',''
'SF1413','RESET FLYER 6','IPB-YE-NO','=A01+UH000-KF04i','RESET','RESET','RESET','',''
'PF1413','RESET FLYER 6','IPB-YE-LED','=A01+UH000-KF03Q','','','','',''
'SF1412','NOT HALT FLYER 6','EPB-NC','=A01+UH000-KF04i','NOT-HALT','E-STOP','E-STOP','',''
'BG1403','SENSOR ZUG IN DOFFER PM 6','LT-TRAIN IN DOF','=A01+UH000-KF03i','','','','',''
'BG1416','SENSOR SPULE IN POSITION FLYER 6','BOBBIN IN POS','=A01+UH000-KF04i','','','','',''
'BG1404','SENSOR ZUG IN DOFFER FLYER 6','LT-TRAIN IN DOF','=A01+UH000-KF03i','','','','',''
'MB1411','ABHEBEN ANTRIEBE PM 6','LIFT OFF RF 6','=A01+UH000-KF03Q','','','','',''
'MA1416','ANTRIEBE FLYER 6','M-BI','=A01+UH000-KF03Q','','','','','<'
'KF1295','IF RF 05: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC102-KF05Q','IF RF 05: START SPULENWECHSEL 2','IF RF 05: START EXCHANGE 2','','',''
'DI1294','IF RF 05 : NEUE SPULE','IF-RELAIS','=A01+UC102-KF03i','IF RF 05: NEUE SPULE ','IF RF 05: NEW BOBBIN','','',''
'KF1294','IF RF 05: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC102-KF05Q','IF RF 05: START SPULENWECHSEL 1','IF RF 05: START EXCHANGE 1','','',''
'PF1287','RUNDUMLEUCHTE STÖRUNG FLYER 5','LED-YE_FAULT','=A01+UC102-KF04Q','','','','',''
'SF1293','RESET FLYER 5','IPB-YE-NO','=A01+UC102-KF03i','RESET','RESET','RESET','',''
'PF1293','RESET FLYER 5','IPB-YE-LED','=A01+UC102-KF05Q','','','','',''
'SF1292','NOT HALT FLYER 5','EPB-NC','=A01+UC102-KF03i','NOT-HALT','E-STOP','E-STOP','',''
'BG1286','SENSOR AUSFAHRT NACHPUFFER F0502 RF 5','LT-EXIT F0502','=A01+UC102-KF02i','','','','',''
'BG1285','SENSOR AUSFAHRT NACHPUFFER F0501 RF 5','LT-EXIT F0501','=A01+UC102-KF02i','','','','',''
'BG1302','SENSOR HAUPTSTR. FB214','LT-FB214','=A01+UC102-KF04i','','','','',''
'BG1301','SENSOR HAUPTSTR. FB214','LT-FB214','=A01+UC102-KF04i','','','','',''
'MB1316','WEICHE ABZWEIG FB214','SW FB214','=A01+UC102-KF07Q','','','','',''
'MA1304','ANTRIEB HAUPTSTR. FB214','M-BI FB214','=A01+UC102-KF06Q','','','','','>'
'MA1302','ANTRIEB HAUPTSTR. FB213','M-BI FB213','=A01+UC102-KF06Q','','','','','<'
'MB1314','ANPRESSEN NACHPUFFER F0501 FLYER 5','PRESS F0501','=A01+UC102-KF07Q','','','','',''
'MB1315','ANPRESSEN NACHPUFFER F0502 FLYER 5','PRESS F0502','=A01+UC102-KF07Q','','','','',''
'QA1311','ANTRIEB NACHPUFFER F0502 FLYER 5','M-BI-RI','=A01+UC102-KF07Q','','','','','<'
'MA1310','ANTRIEB NACHPUFFER F0501 FLYER 5','M-BI-LE','=A01+UC102-KF07Q','','','','','<'
'MB1284','ANPRESSEN PUFFER F0501 FLYER 5','PRESS F0501','=A01+UC102-KF04Q','','','','',''
'MB1285','ANPRESSEN PUFFER F0502 FLYER 5','PRESS F0502','=A01+UC102-KF04Q','','','','',''
'QA1301','ANTRIEB PUFFER F0502 FLYER 5','M-BI-RI','=A01+UC102-KF06Q','','','','','<'
'MA1300','ANTRIEB PUFFER F0501 FLYER 5','M-BI-LE','=A01+UC102-KF06Q','','','','','<'
'BG1257','SENSOR HAUPTSTR. FLYER 4','LT-ENTER RF 4','=A01+UC102-KF01i','','','','',''
'BG1281','SENSOR AUSFAHRT PUFFER F0502 FLYER 5','LT-EXIT F0502','=A01+UC102-KF02i','','','','',''
'BG1280','SENSOR AUSFAHRT PUFFER F0501 FLYER 5','LT-EXIT F0501','=A01+UC102-KF02i','','','','',''
'MB1282','WEICHE ABZWEIG EINFAHRT RF 5','SW ENTER RF 5','=A01+UC102-KF04Q','','','','',''
'MB1281','WEICHE ABZWEIG EINFAHRT PUFFER F0502 FLYER 5','SW RF5 F502','=A01+UC102-KF04Q','','','','',''
'MB1280','WEICHE ABZWEIG EINFAHRT PUFFER RF 5','SW ENTER RF 5','=A01+UC102-KF04Q','','','','',''
'MB1307','WEICHE ABZWEIG EINFAHRT NACHP. RF 5','SW-BRANCH','=A01+UC102-KF06Q','','','','',''
'MB1306','WEICHE ABZWEIG EINFAHRT NACHP. RF 5','SW-STRAIGHT','=A01+UC102-KF06Q','','','','',''
'BG1296','SENSOR SPULE IN POSITION FLYER 5','BOBBIN IN POS','=A01+UC102-KF03i','','','','',''
'BG1284','SENSOR ZUG IN DOFFER FLYER 5','LT-TRAIN IN DOF','=A01+UC102-KF02i','','','','',''
'BG1283','SENSOR ZUG IN DOFFER PM 5','LT-TRAIN IN DOF','=A01+UC102-KF02i','','','','',''
'MB1291','ABHEBEN ANTRIEBE PM 5','LIFT OFF BS 5','=A01+UC102-KF05Q','','','','',''
'MA1296','ANTRIEBE FLYER 5','M-BI','=A01+UC102-KF05Q','','','','','>'
'MB1274','ANPRESSEN NACHPUFFER F0401 FLYER 4','PRESS F0401','=A01+UC102-KF03Q','','','','',''
'MB1275','ANPRESSEN NACHPUFFER F0402 FLYER 4','PRESS F0402','=A01+UC102-KF03Q','','','','',''
'QA1271','ANTRIEB NACHPUFFER F0402 FLYER 4','M-BI','=A01+UC102-KF03Q','','','','','>'
'MA1270','ANTRIEB NACHPUFFER F0401 FLYER 4','M-BI','=A01+UC102-KF03Q','','','','','>'
'MB1244','ANPRESSEN PUFFER F0401 FLYER 4','PRESS F0401','=A01+UC102-KF00Q','','','','',''
'MB1245','ANPRESSEN PUFFER F0402 FLYER 4','PRESS F0402','=A01+UC102-KF00Q','','','','',''
'QA1261','ANTRIEB PUFFER F0402 FLYER 4','M-BI-RI','=A01+UC102-KF02Q','','','','','<'
'MA1260','ANTRIEB PUFFER F0401 FLYER 4','M-BI-LE','=A01+UC102-KF02Q','','','','','<'
'MB1240','WEICHE ABZWEIG EINFAHRT FLYER 4','SW ENTER RF4','=A01+UC102-KF00Q','','','','',''
'MB1241','WEICHE ABZWEIG EINFAHRT FLYER 4 F0401','SW ENTER F0401','=A01+UC102-KF00Q','','','','',''
'MB1242','WEICHE ABZWEIG EINFAHRT RF 4','SW ENTER RF 4','=A01+UC102-KF00Q','','','','',''
'BG1246','SENSOR AUSFAHRT NACHPUFFER F0402 RF 4','LT-EXIT F0402','=A01+UC102-KF00i','','','','',''
'BG1245','SENSOR AUSFAHRT NACHPUFFER F0401 RF 4','LT-EXIT F0401','=A01+UC102-KF00i','','','','',''
'SF1251','HAUPTSCHALTER EIN +UC102','I-MS ON','=A01+UC102-KF01i','HAUPTSCHALTER EIN','MAIN SWITCH ON','','',''
'SF1250','MOTORSCHUTZSCHALTER HAT AUSGELÖST','I-CB OK','=A01+UC102-KF01i','MSS IN ORDNUNG','MPS OK','','',''
'PF1250','LM-ÜBERSTROM +UC102','IL-YE-LED','=A01+UC102-KF01Q','LM ÜBERSTROM','IL OVERCURRENT','','',''
'KF1255','IF RF 04: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC102-KF01Q','IF RF 04: START SPULENWECHSEL 2','IF RF 04: START EXCHANGE 2','','',''
'DI1254','IF RF 04 : NEUE SPULE','IF-RELAIS','=A01+UC102-KF01i','IF RF 04: NEUE SPULE ','IF RF 04: NEW BOBBIN','','',''
'KF1254','IF RF 04: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC102-KF01Q','IF RF 04: START SPULENWECHSEL 1','IF RF 04: START EXCHANGE 1','','',''
'PF1247','RUNDUMLEUCHTE STÖRUNG FLYER 4','LED-YE_FAULT','=A01+UC102-KF00Q','','','','',''
'SF1253','RESET FLYER 4','IPB-YE-NO','=A01+UC102-KF01i','RESET','RESET','RESET','',''
'PF1253','RESET FLYER 4','IPB-YE-LED','=A01+UC102-KF01Q','','','','',''
'SF1252','NOT HALT FLYER 4','EPB-NC','=A01+UC102-KF01i','NOT-HALT','E-STOP','E-STOP','',''
'MB1267','WEICHE ABZWEIG EINFAHRT NACHP. RF 4','SW-BRANCH','=A01+UC102-KF02Q','','','','',''
'MB1266','WEICHE ABZWEIG EINFAHRT NACHP. RF 4','SW-STRAIGHT','=A01+UC102-KF02Q','','','','',''
'BG1241','SENSOR AUSFAHRT PUFFER F0402 FLYER 4','LT-EXIT F0402','=A01+UC102-KF00i','','','','',''
'BG1240','SENSOR AUSFAHRT PUFFER F0401 FLYER 4','LT-EXIT F0401','=A01+UC102-KF00i','','','','',''
'BG1243','SENSOR ZUG IN DOFFER PM 4','LT-TRAIN IN DOF','=A01+UC102-KF00i','','','','',''
'BG1256','SENSOR SPULE IN POSITION FLYER 4','BOBBIN IN POS','=A01+UC102-KF01i','','','','',''
'BG1244','SENSOR ZUG IN DOFFER FLYER 4 ','LT-TRAIN IN DOF','=A01+UC102-KF00i','','','','',''
'MB1251','ABHEBEN ANTRIEBE PM 4','LIFT OFF RF 4','=A01+UC102-KF01Q','','','','',''
'MA1256','ANTRIEBE FLYER 4','M-BI','=A01+UC102-KF01Q','','','','','<'
'BG1141','SENSOR HAUPTSTR. FLYER 3 FB216','LT RF3 FB216','=A01+UC101-KF06i','','','','',''
'MB1147','WEICHE ABZWEIG EINFAHRT NACHP. RF 3','SW-BRANCH','=A01+UC101-KF10Q','','','','',''
'MB1146','WEICHE ABZWEIG EINFAHRT NACHP. RF 3','SW-STRAIGHT','=A01+UC101-KF10Q','','','','',''
'KF1135','IF RF 03: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC101-KF09Q','IF RF 03: START SPULENWECHSEL 2','IF RF 03: START EXCHANGE 2','','',''
'DI1134','IF RF 03 : NEUE SPULE','IF-RELAIS','=A01+UC101-KF05i','IF RF 03: NEUE SPULE ','IF RF 03: NEW BOBBIN','','',''
'KF1134','IF RF 03: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC101-KF09Q','IF RF 03: START SPULENWECHSEL 1','IF RF 03: START EXCHANGE 1','','',''
'PF1127','RUNDUMLEUCHTE STÖRUNG FLYER 3','LED-YE_FAULT','=A01+UC101-KF08Q','','','','',''
'SF1133','RESET FLYER 3','IPB-YE-NO','=A01+UC101-KF05i','RESET','RESET','RESET','',''
'PF1133','RESET FLYER 3','IPB-YE-LED','=A01+UC101-KF09Q','','','','',''
'SF1132','NOT HALT FLYER 3','EPB-NC','=A01+UC101-KF05i','NOT-HALT','E-STOP','E-STOP','',''
'BG1005','SENSOR AUSFAHRT NACHPUFFER F0101 RF 1','LT-EXIT F101 ','=A01+UC101-KF00i','','','','',''
'BG1126','SENSOR AUSFAHRT NACHPUFFER F0302 FLYER 3','LT-EXIT F0302','=A01+UC101-KF04i','','','','',''
'BG1125','SENSOR AUSFAHRT NACHPUFFER F0301 FLYER 3','LT-EXIT F0301','=A01+UC101-KF04i','','','','',''
'MB1122','WEICHE ABZWEIG EINFAHRT RF 3','SW ENTER RF 3','=A01+UC101-KF08Q','','','','',''
'MB1121','WEICHE ABZWEIG EINFAHRT PUFFER F0301 FLYER 3','SW ENTER F0301 ','=A01+UC101-KF08Q','','','','',''
'MB1143','WEICHE ABZWEIG EINFAHRT RF3 FB216 ','SW RF3 FB216','=A01+UC101-KF10Q','','','','',''
'MA1144','ANTRIEB HAUPTSTECKE FB215 ','M-BI FB215','=A01+UC101-KF10Q','','','','','<'
'MA1156','ANTRIEB HAUPTSTECKE FB216','M-BI FB216','=A01+UC101-KF11Q','','','','','>'
'MB1120','WEICHE ABZWEIG EINFAHRT FLYER 3 ','SW ENTER RF 3','=A01+UC101-KF08Q','','','','',''
'MB1154','ANPRESSEN NACHPUFFER F0301 FLYER 3','PRESS F0301','=A01+UC101-KF11Q','','','','',''
'MB1155','ANPRESSEN NACHPUFFER F0302 FLYER 3','PRESS F0302','=A01+UC101-KF11Q','','','','',''
'QA1151','ANTRIEB NACHPUFFER F0302 FLYER 3','M-BI','=A01+UC101-KF11Q','','','','','<'
'MA1150','ANTRIEB NACHPUFFER F0301 FLYER 3','M-BI','=A01+UC101-KF11Q','','','','','<'
'MB1124','ANPRESSEN PUFFER F0301 FLYER 3','PRESS F0301','=A01+UC101-KF08Q','','','','',''
'MB1125','ANPRESSEN PUFFER F0302 FLYER 3','PRESS F0302','=A01+UC101-KF08Q','','','','',''
'QA1141','ANTRIEB PUFFER F0301 FLYER 3','M-BI-RI','=A01+UC101-KF10Q','','','','','>'
'MA1140','ANTRIEB PUFFER F0301 FLYER 3','M-BI-LE','=A01+UC101-KF10Q','','','','','>'
'BG1121','SENSOR AUSFAHRT PUFFER F0302 FLYER 3','LT-EXIT F0302','=A01+UC101-KF04i','','','','',''
'BG1120','SENSOR AUSFAHRT PUFFER F0301 FLYER 3','LT-EXIT F0301','=A01+UC101-KF04i','','','','',''
'MB1131','ABHEBEN ANTRIEBE PM 3','LIFT OFF BS 3','=A01+UC101-KF09Q','','','','',''
'MA1136','ANTRIEBE FLYER 3','M-BI','=A01+UC101-KF09Q','','','','','>'
'BG1136','SENSOR SPULE IN POSITION FLYER 3 ','BOBBIN IN POS','=A01+UC101-KF05i','','','','',''
'BG1124','SENSOR ZUG IN DOFFER FLYER 3','LT-TRAIN IN DOF','=A01+UC101-KF04i','','','','',''
'BG1123','SENSOR ZUG IN DOFFER PM 3','LT-TRAIN IN DOF','=A01+UC101-KF04i','','','','',''
'MB1114','ANPRESSEN NACHPUFFER F0201 FLYER 2','PRESS F0201','=A01+UC101-KF07Q','','','','',''
'MB1115','ANPRESSEN NACHPUFFER F0202 FLYER 2','PRESS F0202','=A01+UC101-KF07Q','','','','',''
'QA1111','ANTRIEB NACHPUFFER F0202 FLYER 2','M-BI-RI','=A01+UC101-KF07Q','','','','','>'
'MA1110','ANTRIEB NACHPUFFER F0201 FLYER 2','M-BI-LE','=A01+UC101-KF07Q','','','','','<'
'MB1084','ANPRESSEN PUFFER F0201 FLYER 2','PRESS F0201','=A01+UC101-KF04Q','','','','',''
'MB1085','ANPRESSEN PUFFER F0202 FLYER 2','PRESS F0202','=A01+UC101-KF04Q','','','','',''
'QA1101','ANTRIEB PUFFER F0202 FLYER 2','M-BI-RI','=A01+UC101-KF06Q','','','','','<'
'MA1100','ANTRIEB PUFFER F0201 FLYER 2','M-BI-LE','=A01+UC101-KF06Q','','','','','<'
'BG1080','SENSOR AUSFAHRT PUFFER F0201 FLYER 2','LT-EXIT F0201','=A01+UC101-KF02i','','','','',''
'BG1081','SENSOR AUSFAHRT PUFFER F0202 FLYER 2','LT-EXIT F0202','=A01+UC101-KF02i','','','','',''
'MB1081','WEICHE ABZWEIG EINFAHRT PUFFER F0201 FLYER 2','SW ENTER F0201','=A01+UC101-KF04Q','','','','',''
'BG1086','SENSOR AUSFAHRT NACHPUFFER F0202 RF 2','LT-EXIT F0202','=A01+UC101-KF02i','','','','',''
'BG1085','SENSOR AUSFAHRT NACHPUFFER F0201 RF 2','LT-EXIT F0201','=A01+UC101-KF02i','','','','',''
'MB1082','WEICHE ABZWEIG EINFAHRT RF 2','SW ENTER RF 2','=A01+UC101-KF04Q','','','','',''
'BG1097','SENSOR HAUPTSTR. FLYER 2 ','LT-ENTER FB ','=A01+UC101-KF03i','','','','',''
'MB1080','WEICHE ABZWEIG EINFAHRT RF 2','SW ENTER RF2','=A01+UC101-KF04Q','','','','',''
'SF1091','HAUPTSCHALTER EIN +UC101','I-MS ON','=A01+UC101-KF03i','HAUPTSCHALTER EIN','MAIN SWITCH ON','','',''
'SF1090','MOTORSCHUTZSCHALTER HAT AUSGELÖST','I-CB OK','=A01+UC101-KF03i','MSS IN ORDNUNG','MPS OK','','',''
'PF1090','LM-ÜBERSTROM +UC101','IL-YE-LED','=A01+UC101-KF05Q','LM ÜBERSTROM','IL OVERCURRENT','','',''
'MB1107','WEICHE ABZWEIG EINFAHRT NACHP. RF 2','SW-BRANCH','=A01+UC101-KF06Q','','','','',''
'MB1106','WEICHE ABZWEIG EINFAHRT NACHP. RF 2','SW-STRAIGHT','=A01+UC101-KF06Q','','','','',''
'KF1095','IF RF 02: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC101-KF05Q','IF RF 02: START SPULENWECHSEL 2','IF RF 02: START EXCHANGE 2','','',''
'DI1094','IF RF 02 : NEUE SPULE','IF-RELAIS','=A01+UC101-KF03i','IF RF 02: NEUE SPULE ','IF RF 02: NEW BOBBIN','','',''
'PF1087','RUNDUMLEUCHTE STÖRUNG FLYER 2','LED-YE_FAULT','=A01+UC101-KF04Q','','','','',''
'KF1094','IF RF 02: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC101-KF05Q','IF RF 02: START SPULENWECHSEL 1','IF RF 02: START EXCHANGE 1','','',''
'SF1093','RESET FLYER 2','IPB-YE-NO','=A01+UC101-KF03i','RESET','RESET','RESET','',''
'PF1093','RESET FLYER 2','IPB-YE-LED','=A01+UC101-KF05Q','','','','',''
'SF1092','NOT HALT FLYER 2','EPB-NC','=A01+UC101-KF03i','NOT-HALT','E-STOP','E-STOP','',''
'BG1096','SENSOR SPULE IN POSITION FLYER 2 ','BOBBIN IN POS','=A01+UC101-KF03i','','','','',''
'BG1084','SENSOR ZUG IN DOFFER FLYER 2 ','LT-TRAIN IN DOF','=A01+UC101-KF02i','','','','',''
'BG1083','SENSOR ZUG IN DOFFER PM 2','LT-TRAIN IN DOF','=A01+UC101-KF02i','','','','',''
'MB1091','ABHEBEN ANTRIEBE PM 2','LIFT OFF RF 2','=A01+UC101-KF05Q','','','','',''
'MA1096','ANTRIEB FLYER 2','M-BI','=A01+UC101-KF05Q','','','','','<'
'QA1025','ANTRIEB HAUPTSTR. RF 1','M RF1','=A01+UC101-KF02Q','','','','','>'
'MA1024','ANTRIEB HAUPTSTR. RF 1','M RF1','=A01+UC101-KF02Q','','','','','>'
'MB1027','WEICHE ABZWEIG EINFAHRT NACHP. RF 1','SW-STRAIGHT','=A01+UC101-KF02Q','','','','',''
'MB1026','WEICHE ABZWEIG EINFAHRT NACHP. RF 1','SW-BRANCH','=A01+UC101-KF02Q','','','','',''
'PF1007','RUNDUMLEUCHTE STÖRUNG FLYER 1','LED-YE_FAULT','=A01+UC101-KF00Q','','','','',''
'SF1013','RESET FLYER 1','IPB-YE-NO','=A01+UC101-KF01i','RESET','RESET','RESET','',''
'PF1013','RESET FLYER 1','IPB-YE-LED','=A01+UC101-KF01Q','','','','',''
'SF1012','NOT HALT FLYER 1','EPB-NC','=A01+UC101-KF01i','NOT-HALT','E-STOP','E-STOP','',''
'KF1015','IF RF 01: START SPULENWECHSEL 2','IF-RELAIS','=A01+UC101-KF01Q','IF RF 01: START SPULENWECHSEL 2','IF RF 01: START EXCHANGE 2','CUANDO 01: LIBERAR CAMBIOS DE BOBINAS 2','',''
'DI1014','IF RF 01 : NEUE SPULE','IF-RELAIS','=A01+UC101-KF01i','IF RF 01: NEUE SPULE ','IF RF 01: NEW BOBBIN','CUANDO 01: LLAMAR NUEVA BOBINA','',''
'KF1014','IF RF 01: START SPULENWECHSEL 1','IF-RELAIS','=A01+UC101-KF01Q','IF RF 01: START SPULENWECHSEL 1','IF RF 01: START EXCHANGE 1','CUANDO 01: LIBERAR CAMBIOS DE BOBINAS 1','',''
'MB1034','ANPRESSEN NACHPUFFER F0101 FLYER 1','PRESS F0101','=A01+UC101-KF03Q','','','','',''
'MB1035','ANPRESSEN NACHPUFFER F0102 FLYER 1','PRESS F0102','=A01+UC101-KF03Q','','','','',''
'QA1031','ANTRIEB NACHPUFFER F0102 FLYER 1','M-BI','=A01+UC101-KF03Q','','','','','<'
'MA1030','ANTRIEB NACHPUFFER F0101 FLYER 1','M-BI','=A01+UC101-KF03Q','','','','','<'
'MB1004','ANPRESSEN PUFFER F0101 FLYER 1 ','PRESS F0101','=A01+UC101-KF00Q','','','','',''
'MB1005','ANPRESSEN PUFFER F0102 FLYER 1 ','PRESS F0102','=A01+UC101-KF00Q','','','','',''
'QA1021','ANTRIEB PUFFER F0102 FLYER 1','M-BI-RI','=A01+UC101-KF02Q','','','','','>'
'MA1020','ANTRIEB PUFFER F0101 FLYER 1','M-BI-LE','=A01+UC101-KF02Q','','','','','>'
'BG1000','SENSOR AUSFAHRT PUFFER F0101 FLYER 1','LT-EXIT F0101','=A01+UC101-KF00i','','','','',''
'BG1001','SENSOR AUSFAHRT PUFFER F0102 FLYER 1','LT-EXIT F0102','=A01+UC101-KF00i','','','','',''
'MB1001','WEICHE ABZWEIG EINFAHRT PUFFER F0101 FLYER 1','SW ENTER F0101','=A01+UC101-KF00Q','','','','',''
'MB1000','WEICHE ABZWEIG EINFAHRT RF 1','SW ENTER RF 1','=A01+UC101-KF00Q','','','','',''
'BG1006','SENSOR AUSFAHRT NACHPUFFER F0102 RF 1','LT-EXIT F102','=A01+UC101-KF00i','','','','',''
'MB1011','ABHEBEN ANTRIEBE PM 1 ','LIFT OFF BS 1','=A01+UC101-KF01Q','','','','',''
'BG1003','SENSOR ZUG IN DOFFER PM 1','LT-TRAIN IN DOF','=A01+UC101-KF00i','','','','',''
'MA1016','ANTRIEB FLYER 1 ','M-BI','=A01+UC101-KF01Q','','','','','>'
'BG1016','SENSOR SPULE IN POSITION RF 1','BOBBIN IN POS','=A01+UC101-KF01i','','','','',''
'BG1004','SENSOR ZUG IN DOFFER FLYER 1','LT-TRAIN IN DOF','=A01+UC101-KF00i','','','','',''
"""
textarray = textlines.splitlines()
exporter = ExcelConverter()
for etype in export_type_arr:
export_path = f"work/excel_{etype}.xlsx"
exporter.export_excel(textarray, etype, export_path)