From 989384a56724582ed8fbaf2de1d2a9b31d4e6647 Mon Sep 17 00:00:00 2001 From: "m.stangl" Date: Wed, 20 Apr 2022 18:16:27 +0200 Subject: [PATCH] =?UTF-8?q?Weitere=20Tests=20des=20Mengenger=C3=BCsts=20du?= =?UTF-8?q?rchgef=C3=BChrt.=20Bugfixes.=20Tests=20f=C3=BCr=20EAS=20begonne?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rieter_ekalk.py | 1377 +++++++++++++++++++++++++++-------------------- 1 file changed, 796 insertions(+), 581 deletions(-) diff --git a/rieter_ekalk.py b/rieter_ekalk.py index 526eca4..c559f6e 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -42,27 +42,32 @@ class MG(): #"Turm_Anzahl_Wendlungen":0, } - # wenn Flyer Electrojet 1, dann sollten Vor- und Nachpuffer größer 1 sein - # wenn Neuenhauser 1, dann sollten Vor- und Nachpuffer größer 1 sein - # wenn Cason 1, dann sollten Vor- und Nachpuffer größer 1 sein - # wenn Puffer, dann mindestens 2 Strecken - # Bypass, wenn mindestens 2 Flyer oder 2 RSM - # Turm: kein Kriterium + self._deckblatt = deckblatt + self.remove_empty(self._deckblatt) + # wenn Flyer Electrojet 1, dann sollten Vor- und Nachpuffer größer 1 sein + # wenn Neuenhauser 1, dann sollten Vor- und Nachpuffer größer 1 sein + # wenn Cason 1, dann sollten Vor- und Nachpuffer größer 1 sein + # wenn Puffer, dann mindestens 2 Strecken + # Bypass, wenn mindestens 2 Flyer oder 2 RSM + # Turm: kein Kriterium self._RSM_Anzahl = deckblatt.get("RSM", 0) rsm_direct_mengen = {} if "rsm_direct" in kwargs: rsm_direct_mengen = kwargs['rsm_direct'] - + self.remove_empty(rsm_direct_mengen) rsm_direct_mengen["Anzahl"] = self._RSM_Anzahl #übernahme aus deckblatt + rsm_fa_mengen = {} if "rsm_fa" in kwargs: rsm_fa_mengen = kwargs['rsm_fa'] + self.remove_empty(rsm_fa_mengen) rsm_fa_mengen["Anzahl_RSM"] = self._RSM_Anzahl #übernahme aus deckblatt flyer_f40_mengen = {} if "flyer_f40" in kwargs: flyer_f40_mengen = kwargs['flyer_f40'] + self.remove_empty(flyer_f40_mengen) flyer_f40_mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine"] = deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine", 0) #übernahme aus deckblatt flyer_f40_mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer"] = deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0) #übernahme aus deckblatt flyer_f40_mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer"] = deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer", 0) #übernahme aus deckblatt @@ -70,12 +75,15 @@ class MG(): neuenhauser_mengen = {} if "neuenhauser" in kwargs: neuenhauser_mengen = kwargs['neuenhauser'] + self.remove_empty(neuenhauser_mengen) neuenhauser_mengen["Neuenhauser-Putzmaschine"] = deckblatt.get("Neuenhauser-Putzmaschine", 0) neuenhauser_mengen["Neuenhauser-Putzmaschine_Vorpuffer"] = deckblatt.get("Neuenhauser-Putzmaschine_Vorpuffer", 0) neuenhauser_mengen["Neuenhauser-Putzmaschine_Nachpuffer"] = deckblatt.get("Neuenhauser-Putzmaschine_Nachpuffer", 0) + flyer_mengen = {} if "flyer" in kwargs: flyer_mengen = kwargs['flyer'] + self.remove_empty(flyer_mengen) flyer_mengen["Anzahl"] = deckblatt.get("Flyer", 0) flyer_mengen["Flyer"] = deckblatt.get("Flyer", 0) flyer_mengen["Anzahl_Schienen"] = deckblatt.get("Flyer_Puffer", 0) @@ -83,18 +91,21 @@ class MG(): puffer_mengen = {} if "puffer" in kwargs: puffer_mengen = kwargs['puffer'] + self.remove_empty(puffer_mengen) puffer_mengen["Puffer"] = deckblatt.get("Puffer", 0) puffer_mengen["Anzahl_Pufferstrecken"] = deckblatt.get("Anzahl_der_Pufferstrecken_pro_Puffer", 0) turm_mengen = {} if "turm" in kwargs: turm_mengen = kwargs['turm'] + self.remove_empty(turm_mengen) turm_mengen["Turm"] = deckblatt.get("Turm", 0) turm_mengen["Anzahl_Wendlungen"] = deckblatt.get("Turm_Anzahl_Wendlungen", 0) verbindungsstrecken_w_mengen = {} if "verbindungsstrecken_w" in kwargs: verbindungsstrecken_w_mengen = kwargs['verbindungsstrecken_w'] - + self.remove_empty(verbindungsstrecken_w_mengen) + #überprüfe welche Art von System, setze dict der unrelevanten klasse = 0 system = deckblatt.get("SYSTEM", "") self._rsm_direct = RSM_direct({}) @@ -113,12 +124,12 @@ class MG(): def get_deckblatt_value(self, key): - return self._deckblatt.get(key, 0) + return self._deckblatt.get(key, 0) def get_value_of_object(self, objectname, key): # Deckblatt if (objectname.lower() == "deckblatt"): - return self._deckblatt.get(key) + return self._deckblatt.get(key) # RSM_direct if (objectname.lower() == "rsm_direct"): return self._rsm_direct.anzahl(key) @@ -159,7 +170,7 @@ class MG(): "Turm": self._turm._Mengen, } return res - + def tojson(self, input:dict): return json.dumps(input, sort_keys=False, indent=4) @@ -173,12 +184,21 @@ class MG(): with open("zusammenfassung_mengengeruest.json", "w") as file: file.write(json) + def remove_empty(self, toclean): + # remove all elements with the number of 0. They are of no use + l = [] + for k,v in toclean.items(): + if v == 0: + l.append(k) + for item in l: + del toclean[item] + def zusammenfassung(self): - #in Excel Zellwerte und Bezüge der Spalte "G" können ignoriert werden + #in Excel Zellwerte und Bezüge der Spalte "G" können ignoriert werden zmengen = { "Sensor_optisch_Traverse": 0, "Sensor_induktiv_Spulenalter_Zug_positionierung": 0, - "Sensor_Spulenprüfung_voll/leer": 0, + "Sensor_Spulenprüfung_voll_leer": 0, "Seilzugsschalter": 0, "Drucktaster_automatische_Umfahrung": 0, "Bedientableau_1fach": 0, @@ -191,13 +211,13 @@ class MG(): "Wechsel": 0, "Stopper": 0, "Meldelampe_Überstrom": 0, - "Hauptschalter_Ein-Meldung": 0, + "Hauptschalter_Ein_Meldung": 0, "Werma_Rundumleuchte_Störung": 0, - "Weiche_nach_PM_(bipolar)": 0, + "Weiche_nach_PM_bipolar": 0, "Kreuzungsweiche": 0, "RA_uni": 0, "RA_uni_abhebbar": 0, - "RA_uni_ohne_SPS-Ansteuerung": 0, + "RA_uni_ohne_SPS_Ansteuerung": 0, "RA_bi": 0, "RA_bi_ohne_SPS-Ansteuerung": 0, "RA_bi_abhebbar": 0, @@ -215,14 +235,15 @@ class MG(): self._verbindungsstrecken_w._Mengen.get("Kreuzungsweiche",0) * 4 +\ self._puffer._Mengen.get("Sensor_optisch_Traverse",0) +\ self._turm._Mengen.get("Sensor_optisch_Traverse",0) - + zmengen["Sensor_induktiv_Spulenalter_Zug_positionierung"] = self._flyer_f40._Mengen.get("Sensor_induktiv_Spulenhalter",0) +\ - self._neuenhauser._Mengen.get("Sensorik_Zugpositionierung",0) - - zmengen["Sensor_Spulenprüfung_voll/leer"] = self._neuenhauser._Mengen.get("Sensor_WT18_Spulenprüfung_voll/leer",0) + self._neuenhauser._Mengen.get("Sensorik_Zugpositionierung",0) +\ + self._flyer._Mengen.get("Sensor_induktiv_Spulenalter_Zug_positionierung",0) + + zmengen["Sensor_Spulenprüfung_voll_leer"] = self._neuenhauser._Mengen.get("Sensor_WT18_Spulenprüfung_voll_leer",0) zmengen["Seilzugsschalter"] = self._rsm_fa._Mengen.get("Seilzugsschalter", 0) - zmengen["Drucktaster_automatische_Umfahrung"] = self._rsm_fa._Mengen.get("Mit_Drucktaster", 0) + zmengen["Drucktaster_automatische_Umfahrung"] = self._rsm_fa._Mengen.get("Mit_Drucktaster", 0) zmengen["Bedientableau_1fach"] = self._rsm_fa._Mengen.get("Bedientableau_1fach", 0) + self._verbindungsstrecken_w._Mengen.get("Bedientableau_1fach", 0) zmengen["Bedientableau_2fach"] = self._rsm_direct._Mengen.get("Bedientableau_2fach", 0) +\ self._rsm_fa._Mengen.get("Bedientableau_2fach", 0) +\ @@ -230,7 +251,7 @@ class MG(): self._neuenhauser._Mengen.get("Bedientableau_2fach", 0) +\ self._flyer._Mengen.get("Bedientableau_2fach", 0) +\ self._verbindungsstrecken_w._Mengen.get("Bedientableau_2fach", 0) +\ - self._turm._Mengen.get("Bedientableau_2fach", 0) + self._turm._Mengen.get("Bedientableau_2fach", 0) zmengen["Bedientableau_14fach"] = self._verbindungsstrecken_w._Mengen.get("Bedientableau_14fach", 0) zmengen["Interface_Putzmaschine"] = self._neuenhauser._Mengen.get("Interface_Putzmaschine", 0) zmengen["Interface_Doffer"] = self._flyer_f40._Mengen.get("Interface_Doffer", 0) + self._flyer._Mengen.get("Interface_Doffer", 0) @@ -254,36 +275,36 @@ class MG(): self._neuenhauser._Mengen.get("Meldelampe_Überstrom", 0) +\ self._flyer._Mengen.get("Meldelampe_Überstrom", 0) +\ self._puffer._Mengen.get("Meldelampe_Überstrom", 0) - zmengen["Hauptschalter_Ein-Meldung"] = self._rsm_direct._Mengen.get("Hauptschalter_Ein-Meldung", 0) +\ - self._rsm_fa._Mengen.get("Hauptschalter_Ein-Meldung", 0) +\ - self._flyer_f40._Mengen.get("Hauptschalter_Ein-Meldung", 0) +\ - self._neuenhauser._Mengen.get("Hauptschalter_Ein-Meldung", 0) +\ - self._flyer._Mengen.get("Hauptschalter_Ein-Meldung", 0) +\ - self._puffer._Mengen.get("Hauptschalter_Ein-Meldung", 0) + zmengen["Hauptschalter_Ein_Meldung"] = self._rsm_direct._Mengen.get("Hauptschalter_Ein_Meldung", 0) +\ + self._rsm_fa._Mengen.get("Hauptschalter_Ein_Meldung", 0) +\ + self._flyer_f40._Mengen.get("Hauptschalter_Ein_Meldung", 0) +\ + self._neuenhauser._Mengen.get("Hauptschalter_Ein_Meldung", 0) +\ + self._flyer._Mengen.get("Hauptschalter_Ein_Meldung", 0) +\ + self._puffer._Mengen.get("Hauptschalter_Ein_Meldung", 0) zmengen["Werma_Rundumleuchte_Störung"] = self._rsm_direct._Mengen.get("Werma_Rundumleuchte_Störung", 0) +\ self._rsm_fa._Mengen.get("Werma_Rundumleuchte_Störung", 0) +\ self._flyer_f40._Mengen.get("Werma_Rundumleuchte_Störung", 0) +\ self._neuenhauser._Mengen.get("Werma_Rundumleuchte_Störung", 0) +\ self._flyer._Mengen.get("Werma_Rundumleuchte_Störung", 0) +\ self._verbindungsstrecken_w._Mengen.get("Werma_Rundumleuchte_Störung", 0) - zmengen["Weiche_nach_PM_(bipolar)"] = self._flyer_f40._Mengen.get("Weiche_nach_PM_(bipolar)", 0) +\ - self._neuenhauser._Mengen.get("Weiche_nach_PM_(bipolar)", 0) + zmengen["Weiche_nach_PM_bipolar"] = self._flyer_f40._Mengen.get("Weiche_nach_PM_bipolar", 0) +\ + self._neuenhauser._Mengen.get("Weiche_nach_PM_bipolar", 0) zmengen["Kreuzungsweiche"] = self._verbindungsstrecken_w._Mengen.get("Kreuzungsweiche", 0) zmengen["RA_uni"] = self._verbindungsstrecken_w._Mengen.get("RA_uni", 0) +\ self._flyer_f40._Mengen.get("RA_uni", 0) zmengen["RA_uni_abhebbar"] = self._flyer_f40._Mengen.get("RA_uni_abhebbar", 0) +\ self._neuenhauser._Mengen.get("RA_uni_abhebbar", 0) - zmengen["RA_uni_ohne_SPS-Ansteuerung"] = self._flyer_f40._Mengen.get("RA_uni_ohne_SPS-Ansteuerung", 0) +\ - self._neuenhauser._Mengen.get("RA_uni_ohne_SPS-Ansteuerung", 0) +\ - self._verbindungsstrecken_w._Mengen.get("RA_uni_ohne_SPS-Ansteuerung", 0) + zmengen["RA_uni_ohne_SPS_Ansteuerung"] = self._flyer_f40._Mengen.get("RA_uni_ohne_SPS_Ansteuerung", 0) +\ + self._neuenhauser._Mengen.get("RA_uni_ohne_SPS_Ansteuerung", 0) +\ + self._verbindungsstrecken_w._Mengen.get("RA_uni_ohne_SPS_Ansteuerung", 0) zmengen["RA_bi"] = self._rsm_fa._Mengen.get("RRA_bi", 0) +\ self._flyer_f40._Mengen.get("RA_bi", 0) +\ self._flyer._Mengen.get("RA_bi", 0) +\ self._verbindungsstrecken_w._Mengen.get("RA_bi", 0) +\ - self._puffer._Mengen.get("RA_bi", 0) +\ + self._puffer._Mengen.get("RA_bi_ungerade_Schiene", 0) +\ self._turm._Mengen.get("RA_bi", 0) - zmengen["RA_bi_ohne_SPS-Ansteuerung"] = self._rsm_fa._Mengen.get("RRA_bi_ohne_SPS-Ansteuerung", 0) +\ - self._flyer_f40._Mengen.get("RRA_bi_ohne_SPS-Ansteuerung", 0) +\ + zmengen["RA_bi_ohne_SPS-Ansteuerung"] = self._rsm_fa._Mengen.get("RRA_bi_ohne_SPS_Ansteuerung", 0) +\ + self._flyer_f40._Mengen.get("RRA_bi_ohne_SPS_Ansteuerung", 0) +\ self._flyer._Mengen.get("RA_bi_ohne_SPS-Ansteuerung", 0) +\ self._verbindungsstrecken_w._Mengen.get("RA_bi_ohne_SPS-Ansteuerung", 0) +\ self._turm._Mengen.get("RA_bi_ohne_SPS-Ansteuerung", 0) #TODO: Notation beachten: RA_bi, RRA_bi @@ -300,20 +321,31 @@ class MG(): self._rsm_fa._Mengen.get("gemeinsame_Wendung", 0) zmengen["Gesamtanzahl_Antriebe"] = zmengen.get("RA_uni", 0) +\ zmengen.get("RA_uni_abhebbar", 0) +\ - zmengen.get("RA_uni_ohne_SPS-Ansteuerung", 0) +\ + zmengen.get("RA_uni_ohne_SPS_Ansteuerung", 0) +\ zmengen.get("RA_bi", 0) +\ zmengen.get("RA_bi_ohne_SPS-Ansteuerung", 0) +\ zmengen.get("RA_bi_abhebbar", 0) +\ zmengen.get("Doppelstreckenantrieb", 0) return zmengen +# Klasse zur Vererbung an alle Elemente aus denen die Halle besteht +class Item(): + def anzahl(self, partname): + return self._Mengen.get(partname, 0) + + def tojson(self): + return json.dumps(self._Mengen) + + def mengengeruest(self): + return self._Mengen + # RSM_direct: -class RSM_direct(): +class RSM_direct(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet "Anzahl":0, - #"Anzahl_Strecken/RSM":8, + #"Anzahl_Strecken_RSM":8, "Sensor_optisch_Traverse":0, #"Lichtschranke_Traverse":0, #"Bedientableau_2fach":0, @@ -329,7 +361,7 @@ class RSM_direct(): #"gemeinsame_Wendung":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -339,7 +371,7 @@ class RSM_direct(): self._Mengen = {} self._RSM_Anzahl = anzahl.get("Anzahl", 0) self._Mengen["Anzahl"] = anzahl.get("Anzahl", 0) - self._Mengen["Anzahl_Strecken/RSM"] = 8 + self._Mengen["Anzahl_Strecken_RSM"] = 8 self._Mengen["Sensor_optisch_Traverse"] = anzahl.get("Sensor_optisch_Traverse", 0) self._Mengen["Lichtschranke_Traverse"] = self._RSM_Anzahl * 6 self._Mengen["Bedientableau_2fach"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Bedientableau_2fach_Korrektur", 0) @@ -350,25 +382,17 @@ class RSM_direct(): self._Mengen["Weiche_Gemeinsame_Rückstellung_Korrektur"] = anzahl.get("Weiche_Gemeinsame_Rückstellung_Korrektur", 0) self._Mengen["RA_bi_abhebbar"] = math.ceil(self._RSM_Anzahl * 0.31) + anzahl.get("RA_bi_abhebbar_Korrektur", 0) self._Mengen["RA_bi_abhebbar_Korrektur"] = anzahl.get("RA_bi_abhebbar_Korrektur", 0) - self._Mengen["Doppelstreckenantrieb"] = self._RSM_Anzahl * self._Mengen.get("Anzahl_Strecken/RSM", 0) + self._Mengen["Doppelstreckenantrieb"] = self._RSM_Anzahl * self._Mengen.get("Anzahl_Strecken_RSM", 0) self._Mengen["gemeinsame_Wendung"] = math.ceil(self._RSM_Anzahl / 6) * 2 self._Mengen["Meldelampe_Überstrom"] = math.ceil(self._RSM_Anzahl / 8) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) - self._Mengen["Hauptschalter_Ein-Meldung"] = math.ceil(self._RSM_Anzahl / 8) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + self._Mengen["Hauptschalter_Ein_Meldung"] = math.ceil(self._RSM_Anzahl / 8) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = math.floor(self._RSM_Anzahl / 5) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - - def tojson(self): - return json.dumps(self._Mengen) - - def mengengeruest(self): - return self._Mengen # RSM_FA: -class RSM_FA(): +class RSM_FA(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -388,13 +412,13 @@ class RSM_FA(): #"RRA_bi":0, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":0, - #"RRA_bi_ohne_SPS-Ansteuerung":0, + #"RRA_bi_ohne_SPS_Ansteuerung":0, "gemeinsame_Wendung":0, #"Seilzugschalter":0, #"Mit_Drucktaster":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -447,9 +471,9 @@ class RSM_FA(): self._Mengen["RRA_bi_auf_Haupstrecke"] = anzahl.get("RRA_bi_auf_Haupstrecke", 0) if self.flex_a_premium(): - self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = self._RSM_Anzahl * 4 + self._Mengen["RRA_bi_ohne_SPS_Ansteuerung"] = self._RSM_Anzahl * 4 else: - self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = 0 + self._Mengen["RRA_bi_ohne_SPS_Ansteuerung"] = 0 self._Mengen["gemeinsame_Wendung"] = anzahl.get("gemeinsame_Wendung", 0) @@ -460,7 +484,7 @@ class RSM_FA(): if (anzahl.get("Getriebe_in_der_Mitte", False)): seilzfaktor_getriebe_mitte = 2 self._Mengen["Seilzugschalter"] = self._RSM_Anzahl * (seilzfaktor_premium + seilzfaktor_getriebe_mitte) - + if self.flex_a_premium(): self._Mengen["Mit_Drucktaster"] = self._RSM_Anzahl * 8 else: @@ -468,7 +492,7 @@ class RSM_FA(): self._Mengen["Mit_Drucktaster_Korrektur"] = anzahl.get("Mit_Drucktaster_Korrektur",0) self._Mengen["Meldelampe_Überstrom"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) - self._Mengen["Hauptschalter_Ein-Meldung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + self._Mengen["Hauptschalter_Ein_Meldung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) @@ -476,16 +500,8 @@ class RSM_FA(): def flex_a_premium(self): return self._Mengen.get("Flex_A_Premium", False) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - - def tojson(self): - return json.dumps(self._Mengen) - - def mengengeruest(self): - return self._Mengen # Flyer_F40_(Electrojet)_incl._Putzmaschine: -class Flyer_F40_EJet_inc_Putz(): +class Flyer_F40_EJet_inc_Putz(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -495,7 +511,7 @@ class Flyer_F40_EJet_inc_Putz(): "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #"Anzahl_Schienen":0, - "Single-Line_/_Durchfahrt":False, + "Single_Line_Durchfahrt":False, "Nachpuffer":False, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, @@ -515,25 +531,25 @@ class Flyer_F40_EJet_inc_Putz(): "RA_uni":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, - #"RA_uni_ohne_SPS-Ansteuerung":0, - "RA_uni_ohne_SPS-Ansteuerung_Korrektur":0, + #"RA_uni_ohne_SPS_Ansteuerung":0, + "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0, #"RRA_BI_abhebbar":0, "RRA_BI_abhebbar_Korrektur":0, "RRA_bi":0, #"RRA_bi_Korrektur":0, - #"RRA_bi_ohne_SPS-Ansteuerung":0, + #"RRA_bi_ohne_SPS_Ansteuerung":0, "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0, #"Doppelstreckenantrieb":0, "Doppelstreckenantrieb_Korrektur":0, "RA_bi_abhebbar_unger_Schiene":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, } - + self._Mengen = {} self._Flyer_Anzahl = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine", 0) +\ anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur", 0) @@ -544,7 +560,7 @@ class Flyer_F40_EJet_inc_Putz(): self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur", 0) self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0) self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer", 0) - self._Mengen["Single-Line_/_Durchfahrt"] = anzahl.get("Single-Line_/_Durchfahrt", False) + self._Mengen["Single_Line_Durchfahrt"] = anzahl.get("Single_Line_Durchfahrt", False) self._Mengen["Nachpuffer"] = anzahl.get("Nachpuffer", False) sensorfaktor_nachpuffer = 7 if (anzahl.get("Nachpuffer", False)): @@ -559,8 +575,8 @@ class Flyer_F40_EJet_inc_Putz(): self._Mengen["Interface_Doffer_Korrektur"] = anzahl.get("Interface_Doffer_Korrektur", 0) self._Mengen["Weiche"] = self._Flyer_Anzahl * self._Mengen.get("Anzahl_Schienen", 0) + anzahl.get("Weiche_Korrektur", 0) + anzahl.get("Wechsel", 0) self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0) - - if (anzahl.get("Single-Line_/_Durchfahrt", False)): + + if (anzahl.get("Single_Line_Durchfahrt", False)): self._Mengen["Weiche_nach_Flyer_bipolar"] = self._Flyer_Anzahl + anzahl.get("Weiche_nach_Flyer_bipolar_Korrektur", 0) else: self._Mengen["Weiche_nach_Flyer_bipolar"] = anzahl.get("Weiche_nach_Flyer_bipolar_Korrektur", 0) @@ -572,20 +588,20 @@ class Flyer_F40_EJet_inc_Putz(): rraunifaktor_durchfahrt = 0 rraunifaktor_nachpuffer = 1 - if (anzahl.get("Single-Line_/_Durchfahrt", False)): + if (anzahl.get("Single_Line_Durchfahrt", False)): rraunifaktor_durchfahrt = 1 if (anzahl.get("Nachpuffer", False)): rraunifaktor_nachpuffer = 0 self._Mengen["RA_uni_abhebbar"] = self._Flyer_Anzahl * (rraunifaktor_durchfahrt + rraunifaktor_nachpuffer) + anzahl.get("RA_uni_abhebbar_Korrektur", 0) self._Mengen["RA_uni_abhebbar_Korrektur"] = anzahl.get("RA_uni_abhebbar_Korrektur", 0) - if (anzahl.get("Single-Line_/_Durchfahrt", False)): - self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = self._Flyer_Anzahl + if (anzahl.get("Single_Line_Durchfahrt", False)): + self._Mengen["RA_uni_ohne_SPS_Ansteuerung"] = self._Flyer_Anzahl else: - self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung_Korrektur", 0) - self._Mengen["RA_uni_ohne_SPS-Ansteuerung_Korrektur"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung_Korrektur", 0) + self._Mengen["RA_uni_ohne_SPS_Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS_Ansteuerung_Korrektur", 0) + self._Mengen["RA_uni_ohne_SPS_Ansteuerung_Korrektur"] = anzahl.get("RA_uni_ohne_SPS_Ansteuerung_Korrektur", 0) - if (anzahl.get("Single-Line_/_Durchfahrt", False)): + if (anzahl.get("Single_Line_Durchfahrt", False)): self._Mengen["RRA_BI_abhebbar"] = self._Flyer_Anzahl else: self._Mengen["RRA_BI_abhebbar"] = anzahl.get("RRA_BI_abhebbar_Korrektur", 0) @@ -593,12 +609,12 @@ class Flyer_F40_EJet_inc_Putz(): self._Mengen["RRA_bi"] = anzahl.get("RRA_bi", 0) - if (anzahl.get("Single-Line_/_Durchfahrt", False)): - self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = anzahl.get("RRA_bi_ohne_SPS_Ansteuerung_Korrektur", 0) + if (anzahl.get("Single_Line_Durchfahrt", False)): + self._Mengen["RRA_bi_ohne_SPS_Ansteuerung"] = anzahl.get("RRA_bi_ohne_SPS_Ansteuerung_Korrektur", 0) else: - self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = self._Flyer_Anzahl - - if (anzahl.get("Single-Line_/_Durchfahrt", False)): + self._Mengen["RRA_bi_ohne_SPS_Ansteuerung"] = self._Flyer_Anzahl + + if (anzahl.get("Single_Line_Durchfahrt", False)): self._Mengen["Doppelstreckenantrieb"] = self._Flyer_Anzahl * math.floor(self._Mengen.get("Anzahl_Schienen", 0)/2) + self._Flyer_Anzahl else: self._Mengen["Doppelstreckenantrieb"] = self._Flyer_Anzahl * math.floor(self._Mengen.get("Anzahl_Schienen", 0)/2) + anzahl.get("Doppelstreckenantrieb_Korrektur", 0) @@ -607,21 +623,14 @@ class Flyer_F40_EJet_inc_Putz(): self._Mengen["Meldelampe_Überstrom"] = self._Flyer_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) - self._Mengen["Hauptschalter_Ein-Meldung"] = self._Flyer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + self._Mengen["Hauptschalter_Ein_Meldung"] = self._Flyer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = self._Flyer_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - def tojson(self): - return json.dumps(self._Mengen) - - def mengengeruest(self): - return self._Mengen # Putzmaschine_(Neuenhauser): -class Putzmaschine_Neuenhauser(): +class Putzmaschine_Neuenhauser(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -634,26 +643,26 @@ class Putzmaschine_Neuenhauser(): #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, - #"Sensor_WT18_Spulenprüfung_voll/leer":0, + #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, - #"Weiche_nach_PM_(bipolar)":0, + #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, - #"RA_uni_ohne_SPS-Ansteuerung":0, - #"RA_uni_abhebbar_(unger._Sch.)":0, + #"RA_uni_ohne_SPS_Ansteuerung":0, + #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, } - + self._Mengen = {} self._Putze_Anzahl = anzahl.get("Neuenhauser-Putzmaschine", 0) self._Vorpuffer_Anzahl = anzahl.get("Neuenhauser-Putzmaschine_Vorpuffer", 0) @@ -670,7 +679,7 @@ class Putzmaschine_Neuenhauser(): self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Sensorik_Zugpositionierung"] = self._Putze_Anzahl * 4 - self._Mengen["Sensor_WT18_Spulenprüfung_voll/leer"] = self._Putze_Anzahl * 2 + self._Mengen["Sensor_WT18_Spulenprüfung_voll_leer"] = self._Putze_Anzahl * 2 self._Mengen["Bedientableau_2fach"] = self._Putze_Anzahl + anzahl.get("Bedientableau_2fach_Korrektur", 0) self._Mengen["Bedientableau_2fach_Korrektur"] = anzahl.get("Bedientableau_2fach_Korrektur", 0) @@ -678,30 +687,23 @@ class Putzmaschine_Neuenhauser(): self._Mengen["Interface_Putzmaschine"] = self._Putze_Anzahl self._Mengen["Weiche"] = self._Putze_Anzahl * self._Vorpuffer_Anzahl + anzahl.get("Weiche_Korrektur", 0) self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0) - self._Mengen["Weiche_nach_PM_(bipolar)"] = self._Putze_Anzahl * (self._Nachpuffer_Anzahl-1) + self._Mengen["Weiche_nach_PM_bipolar"] = self._Putze_Anzahl * (self._Nachpuffer_Anzahl-1) self._Mengen["RA_uni_abhebbar"] = self._Putze_Anzahl + anzahl.get("RA_uni_abhebbar_Korrektur", 0) self._Mengen["RA_uni_abhebbar_Korrektur"] = anzahl.get("RA_uni_abhebbar_Korrektur", 0) - self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = self._Putze_Anzahl + self._Mengen["RA_uni_ohne_SPS_Ansteuerung"] = self._Putze_Anzahl - self._Mengen["RA_uni_abhebbar_(unger._Sch.)"] = self._Putze_Anzahl * (math.floor(self._Vorpuffer_Anzahl/3) + math.floor(self._Nachpuffer_Anzahl/3)) + self._Mengen["RA_uni_abhebbar_unger_Sch"] = self._Putze_Anzahl * (math.floor(self._Vorpuffer_Anzahl/3) + math.floor(self._Nachpuffer_Anzahl/3)) self._Mengen["Doppelstreckenantrieb"] = self._Putze_Anzahl * (math.floor(self._Vorpuffer_Anzahl/2) + math.floor(self._Nachpuffer_Anzahl/2)) self._Mengen["Meldelampe_Überstrom"] = self._Putze_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) - self._Mengen["Hauptschalter_Ein-Meldung"] = self._Putze_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + self._Mengen["Hauptschalter_Ein_Meldung"] = self._Putze_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = self._Putze_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - def tojson(self): - return json.dumps(self._Mengen) - def mengengeruest(self): - return self._Mengen - # Flyer_(Electrojet): -class Flyer_EJet(): +class Flyer_EJet(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -727,12 +729,12 @@ class Flyer_EJet(): "RA_bi_abhebbar_unger_Schiene":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, } - + self._Mengen = {} self._Flyer_Anzahl = anzahl.get("Flyer", 0) self._Mengen["Anzahl"] = self._Flyer_Anzahl @@ -759,20 +761,14 @@ class Flyer_EJet(): self._Mengen["RA_bi_abhebbar_unger_Schiene"] = anzahl.get("RA_bi_abhebbar_unger_Schiene", 0) self._Mengen["Meldelampe_Überstrom"] = self._Flyer_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) - self._Mengen["Hauptschalter_Ein-Meldung"] = self._Flyer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + self._Mengen["Hauptschalter_Ein_Meldung"] = self._Flyer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = self._Flyer_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - def tojson(self): - return json.dumps(self._Mengen) - def mengengeruest(self): - return self._Mengen # Verbindungsstrecken/_Wechsel: -class Verbindungsstrecken_Wechsel(): +class Verbindungsstrecken_Wechsel(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -785,7 +781,7 @@ class Verbindungsstrecken_Wechsel(): "Kreuzungsweiche":0, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, - "RA_uni_ohne_SPS-Ansteuerung":0, + "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 @@ -800,21 +796,13 @@ class Verbindungsstrecken_Wechsel(): self._Mengen["Kreuzungsweiche"] = anzahl.get("Kreuzungsweiche", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = anzahl.get("Werma_Rundumleuchte_Störung", 0) self._Mengen["RA_uni"] = anzahl.get("RA_uni", 0) - self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung", 0) + self._Mengen["RA_uni_ohne_SPS_Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS_Ansteuerung", 0) self._Mengen["RA_bi"] = anzahl.get("RA_bi", 0) self._Mengen["RA_bi_ohne_SPS-Ansteuerung"] = anzahl.get("RA_bi_ohne_SPS-Ansteuerung", 0) self._Mengen["Doppelstreckenantrieb"] = anzahl.get("Doppelstreckenantrieb", 0) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - - def tojson(self): - return json.dumps(self._Mengen) - - def mengengeruest(self): - return self._Mengen # Puffer -class Puffer(): +class Puffer(Item): def __init__(self, anzahl:dict): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -826,14 +814,14 @@ class Puffer(): "Sensor_optisch_Traverse_Korrektur":0, #"Weiche":0, "Weiche_Korrektur":0, - "RA_bi_(ungerade_Schiene)":0, + "RA_bi_ungerade_Schiene":0, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, } - + self._Mengen = {} self._Puffer_Anzahl = anzahl.get("Puffer", 0) self._Strecken_Anzahl = anzahl.get("Anzahl_Pufferstrecken", 0) @@ -842,25 +830,17 @@ class Puffer(): self._Mengen["Sensor_optisch_Traverse"] = self._Puffer_Anzahl*self._Strecken_Anzahl + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Weiche"] = self._Puffer_Anzahl*self._Strecken_Anzahl + anzahl.get("Weiche_Korrektur", 0) - self._Mengen["RA_bi_(ungerade_Schiene)"] = anzahl.get("RA_bi_(ungerade_Schiene)", 0) + self._Mengen["RA_bi_ungerade_Schiene"] = anzahl.get("RA_bi_ungerade_Schiene", 0) self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0) self._Mengen["Doppelstreckenantrieb"] = self._Puffer_Anzahl * math.floor(self._Strecken_Anzahl/2) self._Mengen["Meldelampe_Überstrom"] = self._Puffer_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) - self._Mengen["Hauptschalter_Ein-Meldung"] = self._Puffer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + self._Mengen["Hauptschalter_Ein_Meldung"] = self._Puffer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - - def tojson(self): - return json.dumps(self._Mengen) - - def mengengeruest(self): - return self._Mengen # Turm -class Turm(): +class Turm(Item): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, @@ -890,17 +870,6 @@ class Turm(): self._Mengen["RA_bi_ohne_SPS_Korrektur"] = anzahl.get("RA_bi_ohne_SPS_Korrektur", 0) self._Mengen["Bedientableau_2fach"] = self._Turm_Anzahl*2 - def anzahl(self, partname): - return self._Mengen.get(partname, 0) - - def tojson(self): - return json.dumps(self._Mengen) - - def mengengeruest(self): - return self._Mengen - - - class EA(): @@ -926,7 +895,7 @@ class EA(): "bedienstation_einfach_Zug_Wechseln": (1, 1), "bedienstation_automatische_Umfahrung": (1, 1), "bedienstation_zweifach_Wechs_BCD_10f": (5, 1), - "bedienstation_zweifach_Not_Aus_Reset": (3, 3), + "bedienstation_zweifach_Not_Aus_Reset": (2, 2), "bedienst_dreifach": (3, 3), "bedienst_vierfach": (4, 4), "bedienst_sechsfach": (6, 6), @@ -941,7 +910,7 @@ class EA(): "Weiche": (0, 1), "Weiche_nach_PM_bipolar": (0, 2), "gemeinsame_Weichenrueckstellung": (0, 1), - "Dreifach_Weiche_DIRECT": (0, 4), + "Dreifach_Weiche_DIRECT": (0, 2), "Kreuzungsweiche": (0, 10), "Stopper": (0, 1), "Ventil_RA_3_2_abhebbar": (0, 1), @@ -973,55 +942,55 @@ class EA(): self._Anzahl = anzahl zmengen = mg.zusammenfassung() self._Anzahl["bedienstation_einfach_Zug_Wechseln"] = zmengen.get("Bedientableau_1fach", 0) - self._Anzahl["bedienstation_automatische_Umfahrung"] = zmengen.get("Drucktaster_automatische_Umfahrung", 0)/4 # TODO warum durch 4? + self._Anzahl["bedienstation_automatische_Umfahrung"] = math.ceil(zmengen.get("Drucktaster_automatische_Umfahrung", 0)/4) # TODO warum durch 4? self._Anzahl["bedienstation_zweifach_Wechs_BCD_10f"] = mg.get_value_of_object("rsm_direct", "Bedientableau_2fach") - + self._Anzahl["bedienstation_zweifach_Not_Aus_Reset"] = zmengen.get("Bedientableau_2fach", 0) # self._Anzahl["bedienst_dreifach"] = zmengen.get(, 0) TODO warum ist das leer # self._Anzahl["bedienst_vierfach"] = zmengen.get(, 0) # self._Anzahl["bedienst_sechsfach"] = zmengen.get(, 0) - # self._Anzahl["EAs_Unterverteiler_direct"] = zmengen.get(, 0) # TODO HW Abhängigkeit ? - + # self._Anzahl["EAs_Unterverteiler_direct"] = zmengen.get(, 0) # TODO HW Abhängigkeit ? + # Ermittlung_Mengengeruest_Anzahl - self._Anzahl["Sensor_Traversenabfrage_optisch"] = zmengen.get("Sensor_optisch_Traverse", 0) + zmengen.get("Sensor_Spulenprüfung_voll/leer", 0) - + self._Anzahl["Sensor_Traversenabfrage_optisch"] = zmengen.get("Sensor_optisch_Traverse", 0) + zmengen.get("Sensor_Spulenprüfung_voll_leer", 0) + self._Anzahl["Reflexionslichtschranke_RSM_DIRECT"] = mg.get_value_of_object("rsm_direct", "Lichtschranke_Traverse") self._Anzahl["Sensor_Stopper_induktiv"] = zmengen.get("Sensor_induktiv_Spulenalter_Zug_positionierung", 0) self._Anzahl["Seilzugschalter"] = zmengen.get("Seilzugsschalter", 0) - + self._Anzahl["Weiche"] = zmengen.get("Weiche", 0) - self._Anzahl["Weiche_nach_PM_bipolar"] = zmengen.get("Weiche_nach_PM_(bipolar)", 0) + self._Anzahl["Weiche_nach_PM_bipolar"] = zmengen.get("Weiche_nach_PM_bipolar", 0) # self._Anzahl["gemeinsame_Weichenrueckstellung"] = zmengen.get(, 0) # TODO warum leer self._Anzahl["Dreifach_Weiche_DIRECT"] = zmengen.get("Dreifachweiche", 0) self._Anzahl["Kreuzungsweiche"] = mg.get_value_of_object("verbindungsstrecken_wechsel", "Kreuzungsweiche") self._Anzahl["Stopper"] = zmengen.get("Stopper", 0) - + self._Anzahl["Ventil_RA_3_2_abhebbar"] = zmengen.get("RA_uni_abhebbar", 0) +\ - zmengen.get("RA_uni_ohne_SPS-Ansteuerung", 0) - # + zmengen.get("", 0) # TODO B65 ist immer 0 + zmengen.get("RA_uni_ohne_SPS_Ansteuerung", 0) + # + zmengen.get("", 0) # TODO B65 ist immer 0 self._Anzahl["Ventil_Doppelstreckenantrieb_5_2_abhebbar"] = zmengen.get("Doppelstreckenantrieb", 0) self._Anzahl["Blitzleuchte_Stoerung"] = zmengen.get("Werma_Rundumleuchte_Störung", 0) - - + + self._Anzahl["Schnittstelle_Flyer_ElectroJet"] = mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Interface_Doffer") + \ - mg.get_value_of_object("flyer_ejet", "Interface_Doffer") - # TODO die Referenz von MG B89 ist eine Leerzeile + mg.get_value_of_object("flyer_ejet", "Interface_Doffer") + # TODO die Referenz von MG B89 ist eine Leerzeile # self._Anzahl["Schnittstelle_Flyer_Putzmaschine_ElectroJet"] = zmengen.get(, 0) # TODO ist leer - self._Anzahl["Schnittstelle_Flyer_Neuhauser"] = mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Interface_Doffer") + self._Anzahl["Schnittstelle_Flyer_Neuhauser"] = mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Interface_Doffer") self._Anzahl["FEldbux_UV_EinAusgang"] = mg.get_value_of_object("rsm_fa", "Meldelampe_Überstrom") + \ mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Meldelampe_Überstrom") + \ mg.get_value_of_object("putzmaschine_neuenhauser", "Meldelampe_Überstrom") + \ - mg.get_value_of_object("flyer_ejet", "Meldelampe_Überstrom") + mg.get_value_of_object("flyer_ejet", "Meldelampe_Überstrom") + - # self._Anzahl["Spulenumsetzstation"] = zmengen.get(, 0) # ist immer 0 - + self._Anzahl["RA_unidirektional"] = zmengen.get("RA_uni", 0) - self._Anzahl["RA_unidirektional_abhebbar"] =zmengen.get("RA_uni_abhebbar", 0) + self._Anzahl["RA_unidirektional_abhebbar"] =zmengen.get("RA_uni_abhebbar", 0) # self._Anzahl["RA_unidirektional_mit_gemeinsamer_Wendung"] = zmengen.get(, 0) # TODO immer 0 - self._Anzahl["RA_unidirektional_ohne_SPS_Ansteuerung"] = zmengen.get("RA_uni_ohne_SPS-Ansteuerung", 0) + self._Anzahl["RA_unidirektional_ohne_SPS_Ansteuerung"] = zmengen.get("RA_uni_ohne_SPS_Ansteuerung", 0) self._Anzahl["RA_bidirektional"] = zmengen.get("RA_bi", 0) self._Anzahl["RA_bidirektional_abhebbar"] = zmengen.get("RA_bi_abhebbar", 0) # self._Anzahl["RA_bidirektional_abhebbar_gemeinsWend"] = zmengen.get(, 0) # TODO wird nicht befüllt @@ -1099,23 +1068,23 @@ class HW(): "unterverteiler_fuer_5_rsm_fa":0, "korrektur_1_rsm_zusaetzlich_im_unterverteiler":0, - + "unterverteiler_fuer_10_rsm_fa":0, - + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":0, "korrektur_3_rsm_zusaetzlich_im_unterverteiler":0, - + "unterverteiler_fuer_4_rsm_direct":0, "korrektur_4_rsm_zusaetzlich_im_unterverteiler":0, - + "unterverteiler_fuer_12_rsm_direct":0, "korrektur_12_rsm_zusaetzlich_im_unterverteiler":0, "unterverteiler_fuer_8_rsm_direct":0, "korrektur_8_rsm_zusaetzlich_im_unterverteiler":0, - + "busverteiler_6_rsm_direct":0, "korrektur_6_rsm_zusaetzlich_im_unterverteiler":0, - + "busverteiler_8_rsm_direct":0, "korrektur_8_rsm_zusaetzlich_im_unterverteiler":0, @@ -1231,10 +1200,10 @@ class HW(): "netzwerk_fernwartung": 750, # 790011001 "abgang_400v": 250, # ---- "abgang_24_v": 250, # ---- - # + # "anlagenrechner": 1657, # 790011000 "zusaetzlicher_bildschirm": 750, # - # _summe_schaltschrank + # _summe_schaltschrank "unterverteiler_fuer_1neuenhauser_pm": 1000, # 790820210 "unterverteiler_fuer_1flyer": 1000, # 790820207_A @@ -1244,26 +1213,26 @@ class HW(): "unterverteiler_fuer_puffer": 700, # 790820210_F "unterverteiler_fuer_5_rsm_fa": 700, # 790820210_D - # korrektur_1_rsm_zusaetzlich_im_unterverteiler - + # korrektur_1_rsm_zusaetzlich_im_unterverteiler + "unterverteiler_fuer_10_rsm_fa": 800, # 790820210_F - # - + # + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar": 1000, # 790820209_C - # korrektur_3_rsm_zusaetzlich_im_unterverteiler - + # korrektur_3_rsm_zusaetzlich_im_unterverteiler + "unterverteiler_fuer_4_rsm_direct": 5027, # 790820300 - # korrektur_4_rsm_zusaetzlich_im_unterverteiler - + # korrektur_4_rsm_zusaetzlich_im_unterverteiler + "unterverteiler_fuer_12_rsm_direct": 7930, # 790820302 - # korrektur_12_rsm_zusaetzlich_im_unterverteiler - + # korrektur_12_rsm_zusaetzlich_im_unterverteiler + "unterverteiler_fuer_8_rsm_direct": 6322, # 790820301 - # korrektur_8_rsm_zusaetzlich_im_unterverteiler - + # korrektur_8_rsm_zusaetzlich_im_unterverteiler + "busverteiler_6_rsm_direct": 1818, # 790801002 - # korrektur_6_rsm_zusaetzlich_im_unterverteiler - + # korrektur_6_rsm_zusaetzlich_im_unterverteiler + "busverteiler_8_rsm_direct": 1818, # 790801001 # korrektur_8_rsm_zusaetzlich_im_unterverteiler @@ -1326,23 +1295,23 @@ class HW(): # Summe_material_in_ll # MATERIAL VOR ORT - "movimot_fu_mit_anschaltung": 550, + "movimot_fu_mit_anschaltung": 550, "sensor_optisch_traverse": 25, # 827072200 "sensorhalter_ohne_sensor_": 8, # 827072xxx "reflexionslichtschranke_rsm_direct": 45, # 827072207 "stoppersensor_induktiv_mit_halter": 63, # 827072205 "sensor_spulenpruefung_voll_leer": 126, # 827072204 + 721000041 - "seilzugschalter": 150, - "seil_fuer_seilzugschalter": 0.40, + "seilzugschalter": 150, + "seil_fuer_seilzugschalter": 0.40, "blitzleuchte": 72, # 790000006 - "spulenumsetzstation": 0, + "spulenumsetzstation": 0, "sensorkabel_je_20m": 20, # 722001xxx "stopper_weichenkabel_je_5m": 15, # 722001xxx - "motorkabel_je_30m": 23, - "kabelpritschen_leitern_200_60": 12, + "motorkabel_je_30m": 23, + "kabelpritschen_leitern_200_60": 12, "kabelpritsche_rsm_100_60": 11, # 715000020 "kabelpritsche_rsm_50_35": 7, # 715003010 - "klemmkasten_rsm": 120, + "klemmkasten_rsm": 120, "klemmkasten_direct_in_rsm": 97, # 790000703 "erdung": 9, "kleinteile_rohre_schellen_kabelbinder_ect": 500, @@ -1392,57 +1361,57 @@ class HW(): def __init__(self, anzahl:dict, mg: type[MG], eas: type[EA]): self._anzahl = anzahl - self._anzahl["schaltschrankgehaeuse_b1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x800_zubehoer", 0) - self._anzahl["schaltschrankgehaeuse_b2x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b2x800_zubehoer", 0) - self._anzahl["schaltschrankgehaeuse_b1x1200+1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x1200+1x800_zubehoer", 0) - self._anzahl["sps_simatic_s7_cpu315_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu315_2_pn_dp", 0) - self._anzahl["speicherkarte_fuer_sps_512_kb"] = anzahl.get("speicherkarte_fuer_sps_512_kb", 0) - self._anzahl["comfort_panel_tp_900_mit_pn"] = anzahl.get("comfort_panel_tp_900_mit_pn", 0) - self._anzahl["sps_simatic_s7_cpu317_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu317_2_pn_dp", 0) - self._anzahl["speicherkarte_fuer_sps2_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb", 0) - self._anzahl["sps_simatic_s7_1513_1"] = anzahl.get("sps_simatic_s7_1513_1", 0) - self._anzahl["sps_simatic_s7_1515_2"] = anzahl.get("sps_simatic_s7_1515_2", 0) - self._anzahl["sps_simatic_s7_1517_3"] = anzahl.get("sps_simatic_s7_1517_3", 0) - self._anzahl["sps_simatic_s7_1518_4"] = anzahl.get("sps_simatic_s7_1518_4", 0) - self._anzahl["sps_et200_1512sp"] = anzahl.get("sps_et200_1512sp", 0) + self._anzahl["schaltschrankgehaeuse_b1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x800_zubehoer", 0) + self._anzahl["schaltschrankgehaeuse_b2x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b2x800_zubehoer", 0) + self._anzahl["schaltschrankgehaeuse_b1x1200+1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x1200+1x800_zubehoer", 0) + self._anzahl["sps_simatic_s7_cpu315_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu315_2_pn_dp", 0) + self._anzahl["speicherkarte_fuer_sps_512_kb"] = anzahl.get("speicherkarte_fuer_sps_512_kb", 0) + self._anzahl["comfort_panel_tp_900_mit_pn"] = anzahl.get("comfort_panel_tp_900_mit_pn", 0) + self._anzahl["sps_simatic_s7_cpu317_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu317_2_pn_dp", 0) + self._anzahl["speicherkarte_fuer_sps2_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb", 0) + self._anzahl["sps_simatic_s7_1513_1"] = anzahl.get("sps_simatic_s7_1513_1", 0) + self._anzahl["sps_simatic_s7_1515_2"] = anzahl.get("sps_simatic_s7_1515_2", 0) + self._anzahl["sps_simatic_s7_1517_3"] = anzahl.get("sps_simatic_s7_1517_3", 0) + self._anzahl["sps_simatic_s7_1518_4"] = anzahl.get("sps_simatic_s7_1518_4", 0) + self._anzahl["sps_et200_1512sp"] = anzahl.get("sps_et200_1512sp", 0) self._anzahl["memory_card_256_mb"] = self._anzahl["speicherkarte_fuer_sps2_mb"] + \ self._anzahl["sps_simatic_s7_1513_1"] + \ self._anzahl["sps_simatic_s7_1515_2"] + \ self._anzahl["sps_simatic_s7_1517_3"] + \ - self._anzahl["sps_simatic_s7_1518_4"] + self._anzahl["sps_simatic_s7_1518_4"] - self._anzahl["memory_card_2_gb"] = self._anzahl.get("sps_simatic_s7_1518_4", 0) + self._anzahl["memory_card_2_gb"] = self._anzahl.get("sps_simatic_s7_1518_4", 0) self._anzahl["et200_sp_ea_ebene"] = anzahl.get("et200_sp_ea_ebene", 0) # TODO: Violett, nur bedingt ändern - self._anzahl["netzwerk_fernwartung"] = anzahl.get("netzwerk_fernwartung", 0) - self._anzahl["abgang_400v"] = anzahl.get("abgang_400v", 0) - self._anzahl["abgang_24_v"] = anzahl.get("abgang_24_v", 0) - self._anzahl["anlagenrechner"] = anzahl.get("anlagenrechner", 0) + self._anzahl["netzwerk_fernwartung"] = anzahl.get("netzwerk_fernwartung", 0) + self._anzahl["abgang_400v"] = anzahl.get("abgang_400v", 0) + self._anzahl["abgang_24_v"] = anzahl.get("abgang_24_v", 0) + self._anzahl["anlagenrechner"] = anzahl.get("anlagenrechner", 0) self._anzahl["zusaetzlicher_bildschirm"] = anzahl.get("zusaetzlicher_bildschirm", 0) # end Violett - self._anzahl["unterverteiler_fuer_1neuenhauser_pm"] = mg.get_deckblatt_value("RSM") - - self._anzahl["unterverteiler_fuer_1flyer"] = anzahl.get("unterverteiler_fuer_1flyer", 0) - self._anzahl["unterverteiler_fuer_2flyer"] = anzahl.get("unterverteiler_fuer_2flyer", 0) - self._anzahl["unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) - self._anzahl["unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) - self._anzahl["unterverteiler_fuer_puffer"] = anzahl.get("unterverteiler_fuer_puffer", 0) + self._anzahl["unterverteiler_fuer_1neuenhauser_pm"] = mg.get_deckblatt_value("RSM") + + self._anzahl["unterverteiler_fuer_1flyer"] = anzahl.get("unterverteiler_fuer_1flyer", 0) + self._anzahl["unterverteiler_fuer_2flyer"] = anzahl.get("unterverteiler_fuer_2flyer", 0) + self._anzahl["unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) + self._anzahl["unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) + self._anzahl["unterverteiler_fuer_puffer"] = anzahl.get("unterverteiler_fuer_puffer", 0) - - if (mg.get_value_of_object("rsm_fa", "Flex_A_Premium") == False): + + if (mg.get_value_of_object("rsm_fa", "Flex_A_Premium") == False): num_rsms = mg.get_value_of_object("rsm_fa", "Anzahl_RSM") self._anzahl["unterverteiler_fuer_5_rsm_fa"] = math.ceil(num_rsms/5) + anzahl.get("korrektur_1_rsm_zusaetzlich_im_unterverteiler", 0) - if (mg.get_value_of_object("rsm_fa", "Flex_A_Premium") == False): + if (mg.get_value_of_object("rsm_fa", "Flex_A_Premium") == False): num_rsms = mg.get_value_of_object("rsm_fa", "Anzahl_RSM") self._anzahl["unterverteiler_fuer_10_rsm_fa"] = math.ceil(num_rsms/10) else: num_rsms = mg.get_value_of_object("rsm_fa", "Anzahl_RSM") - self._anzahl["unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar"] = math.ceil(num_rsms/3) + self._anzahl["unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar"] = math.ceil(num_rsms/3) # TODO "korrektur_3_rsm_zusaetzlich_im_unterverteiler" - + # TODO "unterverteiler_fuer_4_rsm_direct" ist 0. Warum? # "korrektur_4_rsm_zusaetzlich_im_unterverteiler" @@ -1453,20 +1422,20 @@ class HW(): # TODO "unterverteiler_fuer_8_rsm_direct" ist 0, warum? # "korrektur_8_rsm_zusaetzlich_im_unterverteiler" self._anzahl["unterverteiler_fuer_8_rsm_direct"] = mg.get_deckblatt_value("RSM") /8. - + # "busverteiler_6_rsm_direct" # "korrektur_6_rsm_zusaetzlich_im_unterverteiler" - + # "busverteiler_8_rsm_direct" # "korrektur_8_rsm_zusaetzlich_im_unterverteiler" motoren_uni_flyer_f40= mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_uni") \ + mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_uni_abhebbar") \ - + mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_uni_abhebbar_Korrektur") + + mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_uni_abhebbar_Korrektur") - # TODO warum ist hier bi drin? + # TODO warum ist hier bi drin? motoren_uni_rsm_direct = mg.get_value_of_object("rsm_direct", "RA_bi_abhebbar") \ - + mg.get_value_of_object("rsm_direct", "Doppelstreckenantrieb") + + mg.get_value_of_object("rsm_direct", "Doppelstreckenantrieb") self._anzahl["antrieb_unidirektional_halbleiter"] = motoren_uni_flyer_f40 + motoren_uni_rsm_direct @@ -1474,9 +1443,9 @@ class HW(): mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_BI_abhebbar_Korrektur") + \ mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi") + \ mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_Korrektur") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_ohne_SPS-Ansteuerung") + \ + mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_ohne_SPS_Ansteuerung") + \ mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_ohne_SPS_Ansteuerung_Korrektur") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Doppelstreckenantrieb") + mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Doppelstreckenantrieb") motoren_uni_rsm_direct = mg.get_value_of_object("flyer_ejet", "RA_bi_abhebbar") + \ mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_bi_abhebbar_Korrektur") + \ @@ -1485,97 +1454,97 @@ class HW(): mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_bi_abhebbar_unger_Schiene-Ansteuerung") self._anzahl["antrieb_bidirektional_halbleiter"] = motoren_bi_flyer_f40 + motoren_uni_rsm_direct - -# "antrieb_unidirektional_schuetz" TODO wo sind die? in Excel 0 -# "antrieb_bidirektional_schuetz" - -# "motorschutzschalter" TODO von EAS holen? -# "wendeschuetzschaltung" + # "antrieb_unidirektional_schuetz" TODO wo sind die? in Excel 0 + # "antrieb_bidirektional_schuetz" + + + # "motorschutzschalter" TODO von EAS holen? + # "wendeschuetzschaltung" self._anzahl["frequenzumrichter"] = eas.anzahl("frequenzumrichter") -# # summe_motorstarter + # # summe_motorstarter -# "bedienstation_1fach_kpl" -# "bedienst_2fach_wechs_bcd_10f" -# "bedienstation_2fach_kpl" -# "bedienstation_3fach_kpl" -# "bedienstation_4fach_kpl" -# "bedienstation_10fach_kpl" -# "drucktaster_automatische_umfahrung" -# "halter_fuer_drucktaster" -# # summe_bedienstationen + # "bedienstation_1fach_kpl" + # "bedienst_2fach_wechs_bcd_10f" + # "bedienstation_2fach_kpl" + # "bedienstation_3fach_kpl" + # "bedienstation_4fach_kpl" + # "bedienstation_10fach_kpl" + # "drucktaster_automatische_umfahrung" + # "halter_fuer_drucktaster" + # # summe_bedienstationen -# # bis -# "sps_hardware_siemens_s7" -# "s7_1500_cpu_1515_2_pn_mit_ethernet" -# "s7_1500_cpu_1517_3_pn_dp_mit_ethernet" -# "s7_1500_mmc_12mb_" -# "simatic_pn_pn_coupler_6es7158_3ad10_0xa0_+_busadapter_ba_2xrj45" + # # bis + # "sps_hardware_siemens_s7" + # "s7_1500_cpu_1515_2_pn_mit_ethernet" + # "s7_1500_cpu_1517_3_pn_dp_mit_ethernet" + # "s7_1500_mmc_12mb_" + # "simatic_pn_pn_coupler_6es7158_3ad10_0xa0_+_busadapter_ba_2xrj45" -# "_et200_mp_im155_5_pn" -# "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" -# "profinetstrecker_je_1st_cpu_und_im153" -# "s7_1500_eingangskarte_sm_321_16de" -# "s7_1500_ausgangskarte_sm_322_16da" -# "s7_1500_eingangskarte_sm_321_32de" -# "s7_1500_ausgangskarte_sm_322_32da" -# # _summe_sps_hardware + # "_et200_mp_im155_5_pn" + # "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" + # "profinetstrecker_je_1st_cpu_und_im153" + # "s7_1500_eingangskarte_sm_321_16de" + # "s7_1500_ausgangskarte_sm_322_16da" + # "s7_1500_eingangskarte_sm_321_32de" + # "s7_1500_ausgangskarte_sm_322_32da" + # # _summe_sps_hardware -# # ET200_SP -# "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" -# "et200_sp_eingangskarte_8_de" -# "et200_sp_eingangskarte_16_de" -# "et200_sp_eingangskarte_8_do" -# "et200_sp_eingangskarte_16_do" -# "et200_sp_base_unit_neue_last" -# "et200_sp_base_unit_links_gebrueckt" -# "et200_sp_base_unit_neue_last" -# "et200_sp_base_unit_links_gebrueckt" + # # ET200_SP + # "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" + # "et200_sp_eingangskarte_8_de" + # "et200_sp_eingangskarte_16_de" + # "et200_sp_eingangskarte_8_do" + # "et200_sp_eingangskarte_16_do" + # "et200_sp_base_unit_neue_last" + # "et200_sp_base_unit_links_gebrueckt" + # "et200_sp_base_unit_neue_last" + # "et200_sp_base_unit_links_gebrueckt" -# # SLIO -# "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" -# "slio_eingangskarte_4_de" -# "slio_eingangskarte_8_de" -# "slio_ausgangskarte_4_do" -# "slio_ausgangskarte_8_do" -# "slio_power_modul" -# "slio_4_x_dc_24v_4_x_dc_0v" -# "slio_8_x_dc_24v" -# "slio_8_x_dc_0v" -# # Summe_material_in_ll + # # SLIO + # "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" + # "slio_eingangskarte_4_de" + # "slio_eingangskarte_8_de" + # "slio_ausgangskarte_4_do" + # "slio_ausgangskarte_8_do" + # "slio_power_modul" + # "slio_4_x_dc_24v_4_x_dc_0v" + # "slio_8_x_dc_24v" + # "slio_8_x_dc_0v" + # # Summe_material_in_ll -# # MATERIAL VOR ORT -# "movimot_fu_mit_anschaltung" -# "sensor_optisch_traverse" -# "sensorhalter_ohne_sensor_" -# "reflexionslichtschranke_rsm_direct" -# "stoppersensor_induktiv_mit_halter" -# "sensor_spulenpruefung_voll_leer" -# "seilzugschalter" -# "seil_fuer_seilzugschalter" -# "blitzleuchte" -# "spulenumsetzstation" -# "sensorkabel_je_20m" -# "stopper_weichenkabel_je_5m" -# "motorkabel_je_30m" -# "kabelpritschen_leitern_200_60" -# "kabelpritsche_rsm_100_60" -# "kabelpritsche_rsm_50_35" -# "klemmkasten_rsm" -# "klemmkasten_direct_in_rsm" -# "erdung" -# "kleinteile_rohre_schellen_kabelbinder_ect" + # # MATERIAL VOR ORT + # "movimot_fu_mit_anschaltung" + # "sensor_optisch_traverse" + # "sensorhalter_ohne_sensor_" + # "reflexionslichtschranke_rsm_direct" + # "stoppersensor_induktiv_mit_halter" + # "sensor_spulenpruefung_voll_leer" + # "seilzugschalter" + # "seil_fuer_seilzugschalter" + # "blitzleuchte" + # "spulenumsetzstation" + # "sensorkabel_je_20m" + # "stopper_weichenkabel_je_5m" + # "motorkabel_je_30m" + # "kabelpritschen_leitern_200_60" + # "kabelpritsche_rsm_100_60" + # "kabelpritsche_rsm_50_35" + # "klemmkasten_rsm" + # "klemmkasten_direct_in_rsm" + # "erdung" + # "kleinteile_rohre_schellen_kabelbinder_ect" -# "kabel_fuer_klemmkasten_und_bts_60m" -# "zuleitung_75_m_unterverteiler_4x4mm2_400vac" -# "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc" -# "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" -# "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm" -# "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm" -# "profinetkabel" -# "schnittstellen_8x1mm2_30m" + # "kabel_fuer_klemmkasten_und_bts_60m" + # "zuleitung_75_m_unterverteiler_4x4mm2_400vac" + # "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc" + # "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" + # "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm" + # "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm" + # "profinetkabel" + # "schnittstellen_8x1mm2_30m" @@ -1587,7 +1556,7 @@ class HW(): l.append(k) for item in l: del self._anzahl[item] - + def __repr__(self): return repr(self._anzahl) @@ -1672,7 +1641,7 @@ class HW(): "anlagenrechner", "zusaetzlicher_bildschirm", ] - + res = 0 for k in keys_schaltschrank: anz = self._anzahl.get(k, 0) @@ -1751,7 +1720,7 @@ class Dienstleistung(): def __repr__(self): return repr(self._Hours) - def get_hours_of(self, dlname): + def get_hours_of(self, dlname): return self._Hours.get(dlname, 0) def summe_stunden(self): @@ -1765,7 +1734,7 @@ class Dienstleistung(): return 0 #EMO -class EMO(): +class EMO(): montagezeiten = { "Schaltschrank_aufstellen": 6.0, #(h/St) "Unterverteiler_montieren": 3.0, #(h/St) @@ -1813,7 +1782,7 @@ class EMO(): hw.anzahl("Bedienstation_4") +\ hw.anzahl("Bedienstation_10") +\ hw.anzahl("Drucktaster_autom_Umfahrung")) - + self._Mengen["Schnittstelle_Flyer_Putzmaschine"] = self.montagezeiten.get("Schnittstelle_Flyer_Putzmaschine", 0) * (ea.anzahl("Schnittstelle_Flyer_EJet") +\ ea.anzahl("Schnittstelle_Putzmaschine_EJet") +\ ea.anzahl("Schnittstelle_Putzmaschine_Neuenhauser")) @@ -1851,12 +1820,12 @@ class TestObjectMethods(unittest.TestCase): "Turm":2, "Turm_Anzahl_Wendlungen":5, } - + #auskommentiert Zeilen sind nicht einzugeben rsm_direct_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, # wird in deckblatt-Klasse berechnet - #"Anzahl_Strecken/RSM":8, + #"Anzahl_Strecken_RSM":8, "Sensor_optisch_Traverse":4, #"Lichtschranke_Traverse":0, #"Bedientableau_2fach":0, @@ -1872,7 +1841,7 @@ class TestObjectMethods(unittest.TestCase): #"gemeinsame_Wendung":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":4, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":4, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":4, @@ -1896,14 +1865,14 @@ class TestObjectMethods(unittest.TestCase): #"RRA_bi":0, "RRA_bi_Korrektur":3, "RRA_bi_auf_Haupstrecke":3, - #"RRA_bi_ohne_SPS-Ansteuerung":0, + #"RRA_bi_ohne_SPS_Ansteuerung":0, "gemeinsame_Wendung":3, #"Seilzugschalter":0, #"Mit_Drucktaster":0, "Mit_Drucktaster_Korrektur":3, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":3, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":3, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":3, @@ -1916,7 +1885,7 @@ class TestObjectMethods(unittest.TestCase): #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet #"Anzahl_Schienen":0, - "Single-Line_/_Durchfahrt":True, + "Single_Line_Durchfahrt":True, "Nachpuffer":True, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":3, @@ -1936,20 +1905,20 @@ class TestObjectMethods(unittest.TestCase): "RA_uni":4, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":3, - #"RA_uni_ohne_SPS-Ansteuerung":0, - "RA_uni_ohne_SPS-Ansteuerung_Korrektur":2, + #"RA_uni_ohne_SPS_Ansteuerung":0, + "RA_uni_ohne_SPS_Ansteuerung_Korrektur":2, #"RRA_BI_abhebbar":0, "RRA_BI_abhebbar_Korrektur":3, "RRA_bi":0, #"RRA_bi_Korrektur":0, - #"RRA_bi_ohne_SPS-Ansteuerung":0, + #"RRA_bi_ohne_SPS_Ansteuerung":0, "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":3, #"Doppelstreckenantrieb":0, "Doppelstreckenantrieb_Korrektur":2, "RA_bi_abhebbar_unger_Schiene":3, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":3, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":2, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":3, @@ -1965,21 +1934,21 @@ class TestObjectMethods(unittest.TestCase): #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":3, #"Sensorik_Zugpositionierung":0, - #"Sensor_WT18_Spulenprüfung_voll/leer":0, + #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":3, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":2, - #"Weiche_nach_PM_(bipolar)":0, + #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":3, - #"RA_uni_ohne_SPS-Ansteuerung":0, - #"RA_uni_abhebbar_(unger._Sch.)":0, + #"RA_uni_ohne_SPS_Ansteuerung":0, + #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":2, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":3, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":2, @@ -2009,7 +1978,7 @@ class TestObjectMethods(unittest.TestCase): "RA_bi_abhebbar_unger_Schiene":4, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":3, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":4, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":3, @@ -2024,11 +1993,11 @@ class TestObjectMethods(unittest.TestCase): "Sensor_optisch_Traverse_Korrektur":5, #"Weiche":0, "Weiche_Korrektur":6, - "RA_bi_(ungerade_Schiene)":7, + "RA_bi_ungerade_Schiene":7, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":6, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":5, } turm_eingabe = { @@ -2047,7 +2016,7 @@ class TestObjectMethods(unittest.TestCase): } - deckblatt = MG(deckblatt_eingabe, + deckblatt = MG(deckblatt_eingabe, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, @@ -2059,7 +2028,7 @@ class TestObjectMethods(unittest.TestCase): #Testmethoden: ''' # self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl"), 13) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl_Strecken/RSM"), 8) + # self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl_Strecken_RSM"), 8) # self.assertEqual(deckblatt._rsm_direct.anzahl("Sensor_optisch_Traverse"), 4) # self.assertEqual(deckblatt._rsm_direct.anzahl("Lichtschranke_Traverse"), 78) # self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2fach"), 6) @@ -2070,7 +2039,7 @@ class TestObjectMethods(unittest.TestCase): # self.assertEqual(deckblatt._rsm_direct.anzahl("Doppelstreckenantrieb"), 104) # self.assertEqual(deckblatt._rsm_direct.anzahl("gemeinsame_Wendung"), 6) # self.assertEqual(deckblatt._rsm_direct.anzahl("Meldelampe_Überstrom"), 6) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Hauptschalter_Ein-Meldung"), 6) + # self.assertEqual(deckblatt._rsm_direct.anzahl("Hauptschalter_Ein_Meldung"), 6) # self.assertEqual(deckblatt._rsm_direct.anzahl("Werma_Rundumleuchte_Störung"), 6) # self.assertEqual(deckblatt._rsm_fa.anzahl("Anzahl_RSM"), 13) @@ -2081,12 +2050,12 @@ class TestObjectMethods(unittest.TestCase): # self.assertEqual(deckblatt._rsm_fa.anzahl("Weiche"), 29) # self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi"), 32) # self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi_auf_Haupstrecke"), 3) - # self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi_ohne_SPS-Ansteuerung"), 0) + # self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi_ohne_SPS_Ansteuerung"), 0) # self.assertEqual(deckblatt._rsm_fa.anzahl("gemeinsame_Wendung"), 3) # self.assertEqual(deckblatt._rsm_fa.anzahl("Seilzugschalter"), 26) # self.assertEqual(deckblatt._rsm_fa.anzahl("Mit_Drucktaster"), 3) # self.assertEqual(deckblatt._rsm_fa.anzahl("Meldelampe_Überstrom"), 5) - # self.assertEqual(deckblatt._rsm_fa.anzahl("Hauptschalter_Ein-Meldung"), 5) + # self.assertEqual(deckblatt._rsm_fa.anzahl("Hauptschalter_Ein_Meldung"), 5) # self.assertEqual(deckblatt._rsm_fa.anzahl("Werma_Rundumleuchte_Störung"), 5) self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl"), 6) @@ -2102,13 +2071,13 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(deckblatt._flyer_f40.anzahl("Stopper"), 5) self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni"), 4) self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_abhebbar"), 9) - self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_ohne_SPS-Ansteuerung"), 6) + self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_ohne_SPS_Ansteuerung"), 6) self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_BI_abhebbar"), 9) - self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_bi_ohne_SPS-Ansteuerung"), 3) + self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_bi_ohne_SPS_Ansteuerung"), 3) self.assertEqual(deckblatt._flyer_f40.anzahl("Doppelstreckenantrieb"), 13.5) self.assertEqual(deckblatt._flyer_f40.anzahl("RA_bi_abhebbar_unger_Schiene"), 3) self.assertEqual(deckblatt._flyer_f40.anzahl("Meldelampe_Überstrom"), 9) - self.assertEqual(deckblatt._flyer_f40.anzahl("Hauptschalter_Ein-Meldung"), 8) + self.assertEqual(deckblatt._flyer_f40.anzahl("Hauptschalter_Ein_Meldung"), 8) self.assertEqual(deckblatt._flyer_f40.anzahl("Werma_Rundumleuchte_Störung"), 9) self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl"), 11) @@ -2116,17 +2085,17 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Nachstaustrecken"), 14) self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_optisch_Traverse"), 322) self.assertEqual(deckblatt._neuenhauser.anzahl("Sensorik_Zugpositionierung"), 44) - self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_WT18_Spulenprüfung_voll/leer"), 22) + self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_WT18_Spulenprüfung_voll_leer"), 22) self.assertEqual(deckblatt._neuenhauser.anzahl("Bedientableau_2fach"), 14) self.assertEqual(deckblatt._neuenhauser.anzahl("Interface_Putzmaschine"), 11) self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche"), 134) - self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche_nach_PM_(bipolar)"), 143) + self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche_nach_PM_bipolar"), 143) self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_abhebbar"), 14) - self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_ohne_SPS-Ansteuerung"), 11) - self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_abhebbar_(unger._Sch.)"), 88) + self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_ohne_SPS_Ansteuerung"), 11) + self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_abhebbar_unger_Sch"), 88) self.assertEqual(deckblatt._neuenhauser.anzahl("Doppelstreckenantrieb"), 143) self.assertEqual(deckblatt._neuenhauser.anzahl("Meldelampe_Überstrom"), 13) - self.assertEqual(deckblatt._neuenhauser.anzahl("Hauptschalter_Ein-Meldung"), 14) + self.assertEqual(deckblatt._neuenhauser.anzahl("Hauptschalter_Ein_Meldung"), 14) self.assertEqual(deckblatt._neuenhauser.anzahl("Werma_Rundumleuchte_Störung"), 13) self.assertEqual(deckblatt._flyer.anzahl("Anzahl"), 7) @@ -2143,17 +2112,17 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(deckblatt._flyer.anzahl("RA_bi_abhebbar"), 14) self.assertEqual(deckblatt._flyer.anzahl("Doppelstreckenantrieb"), 42) self.assertEqual(deckblatt._flyer.anzahl("Meldelampe_Überstrom"), 10) - self.assertEqual(deckblatt._flyer.anzahl("Hauptschalter_Ein-Meldung"), 11) + self.assertEqual(deckblatt._flyer.anzahl("Hauptschalter_Ein_Meldung"), 11) self.assertEqual(deckblatt._flyer.anzahl("Werma_Rundumleuchte_Störung"), 10) self.assertEqual(deckblatt._puffer.anzahl("Anzahl"), 5) self.assertEqual(deckblatt._puffer.anzahl("Anzahl_Staustrecken"), 11) self.assertEqual(deckblatt._puffer.anzahl("Sensor_optisch_Traverse"), 60) self.assertEqual(deckblatt._puffer.anzahl("Weiche"), 61) - self.assertEqual(deckblatt._puffer.anzahl("RA_bi_(ungerade_Schiene)"), 7) + self.assertEqual(deckblatt._puffer.anzahl("RA_bi_ungerade_Schiene"), 7) self.assertEqual(deckblatt._puffer.anzahl("Doppelstreckenantrieb"), 25) self.assertEqual(deckblatt._puffer.anzahl("Meldelampe_Überstrom"), 11) - self.assertEqual(deckblatt._puffer.anzahl("Hauptschalter_Ein-Meldung"), 10) + self.assertEqual(deckblatt._puffer.anzahl("Hauptschalter_Ein_Meldung"), 10) self.assertEqual(deckblatt._turm.anzahl("Anzahl"), 2) self.assertEqual(deckblatt._turm.anzahl("Anzahl_Staustrecken"), 5) @@ -2169,212 +2138,461 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(deckblatt._turm.anzahl("RA_bi_ohne_SPS"), 26) self.assertEqual(deckblatt._turm.anzahl("Bedientableau_2fach"), 4) - def test_RSM_direct(self): - Anzahl_RSM = { - "Anzahl":0, - "Sensor_optisch_Traverse":0, - "Bedientableau_2fach_Korrektur":0, - "Weiche_Korrektur":0, - "Weiche_Gemeinsame_Rückstellung_Korrektur":0, - "RA_bi_abhebbar_Korrektur":0, - "Meldelampe_Überstrom_Korrektur":0, - "Hauptschalter_Ein-Meldung_Korrektur":0, - "Werma_Rundumleuchte_Störung_Korrektur":0, + def test_Mengengerüst_Zusammenfassung_RSM_DIRECT_Electrojet(self): + Anzahl_MG = { + "SYSTEM": "DIRECT", + "RSM": 10, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine": 1, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": 2, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": 2, } - cont = { - "Anzahl":0, - "Anzahl_Strecken/RSM":0, - "Sensor_optisch_Traverse":0, - "Lichtschranke_Traverse":0, - "Bedientableau_2fach":0, - "Bedientableau_2fach_Korrektur":0, - "Bedientableau_2fach_Direct":0, - "Weiche":0, - "Weiche_Korrektur":0, - "Weiche_Gemeinsame_Rückstellung":0, - "Weiche_Gemeinsame_Rückstellung_Korrektur":0, - "RA_bi_abhebbar":0, - "RA_bi_abhebbar_Korrektur":0, - "Doppelstreckenantrieb":0, - "gemeinsame_Wendung":0, - "Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":0, - "Hauptschalter_Ein-Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":0, - "Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":0, + mg = MG(Anzahl_MG) + + # check data of the rsm + self.assertEqual(mg._rsm_direct.anzahl("Anzahl_Strecken_RSM"), 8) + self.assertEqual(mg._rsm_direct.anzahl("Lichtschranke_Traverse"), 60) + self.assertEqual(mg._rsm_direct.anzahl("Bedientableau_2fach"), 1) + self.assertEqual(mg._rsm_direct.anzahl("Bedientableau_2fach_Direct"), 10) + self.assertEqual(mg._rsm_direct.anzahl("Weiche"), 40) + self.assertEqual(mg._rsm_direct.anzahl("Weiche_Gemeinsame_Rückstellung"), 1) + self.assertEqual(mg._rsm_direct.anzahl("RA_bi_abhebbar"), 4) + self.assertEqual(mg._rsm_direct.anzahl("Doppelstreckenantrieb"), 80) + self.assertEqual(mg._rsm_direct.anzahl("gemeinsame_Wendung"), 4) + self.assertEqual(mg._rsm_direct.anzahl("Meldelampe_Überstrom"), 2) + self.assertEqual(mg._rsm_direct.anzahl("Hauptschalter_Ein_Meldung"), 2) + self.assertEqual(mg._rsm_direct.anzahl("Werma_Rundumleuchte_Störung"), 2) + + # check data of the f40 flyer + self.assertEqual(mg._flyer_f40.anzahl("Anzahl_Schienen"), 4) + self.assertEqual(mg._flyer_f40.anzahl("Single_Line_Durchfahrt"), False) + self.assertEqual(mg._flyer_f40.anzahl("Nachpuffer"), False) + self.assertEqual(mg._flyer_f40.anzahl("Sensor_optisch_Traverse"), 11) + self.assertEqual(mg._flyer_f40.anzahl("Sensor_induktiv_Spulenhalter"), 2) + self.assertEqual(mg._flyer_f40.anzahl("Bedientableau_2fach"), 1) + self.assertEqual(mg._flyer_f40.anzahl("Interface_Doffer"), 1) + self.assertEqual(mg._flyer_f40.anzahl("Weiche"), 4) + self.assertEqual(mg._flyer_f40.anzahl("Weiche_nach_Flyer_bipolar"), 0) + self.assertEqual(mg._flyer_f40.anzahl("Dreifachweiche"), 0) + self.assertEqual(mg._flyer_f40.anzahl("Wechsel"), 0) + self.assertEqual(mg._flyer_f40.anzahl("Stopper"), 0) + self.assertEqual(mg._flyer_f40.anzahl("RA_uni"), 0) + self.assertEqual(mg._flyer_f40.anzahl("RA_uni_abhebbar"), 1) + self.assertEqual(mg._flyer_f40.anzahl("RA_uni_ohne_SPS_Ansteuerung"), 0) + self.assertEqual(mg._flyer_f40.anzahl("RRA_BI_abhebbar"), 0) + self.assertEqual(mg._flyer_f40.anzahl("RRA_bi"), 0) + self.assertEqual(mg._flyer_f40.anzahl("RRA_bi_ohne_SPS_Ansteuerung"), 1) + self.assertEqual(mg._flyer_f40.anzahl("Doppelstreckenantrieb"), 2) + self.assertEqual(mg._flyer_f40.anzahl("RA_bi_abhebbar_unger_Schiene"), 0) + self.assertEqual(mg._flyer_f40.anzahl("Meldelampe_Überstrom"), 1) + self.assertEqual(mg._flyer_f40.anzahl("Hauptschalter_Ein_Meldung"), 1) + self.assertEqual(mg._flyer_f40.anzahl("Werma_Rundumleuchte_Störung"), 1) + + zmengen = mg.zusammenfassung() + self.assertEqual(zmengen["Sensor_optisch_Traverse"], 11) + self.assertEqual(zmengen["Sensor_induktiv_Spulenalter_Zug_positionierung"], 2) + self.assertEqual(zmengen["Sensor_Spulenprüfung_voll_leer"], 0) + self.assertEqual(zmengen["Seilzugsschalter"], 0) + self.assertEqual(zmengen["Drucktaster_automatische_Umfahrung"], 0) + self.assertEqual(zmengen["Bedientableau_1fach"], 0) + self.assertEqual(zmengen["Bedientableau_2fach"], 2) + self.assertEqual(zmengen["Bedientableau_14fach"], 0) + self.assertEqual(zmengen["Interface_Putzmaschine"], 0) + self.assertEqual(zmengen["Interface_Doffer"], 1) + self.assertEqual(zmengen["Weiche"], 44) + self.assertEqual(zmengen["Dreifachweiche"], 1) + self.assertEqual(zmengen["Wechsel"], 0) + self.assertEqual(zmengen["Stopper"], 0) + self.assertEqual(zmengen["Meldelampe_Überstrom"], 3) + self.assertEqual(zmengen["Hauptschalter_Ein_Meldung"], 3) + self.assertEqual(zmengen["Werma_Rundumleuchte_Störung"], 3) + self.assertEqual(zmengen["Weiche_nach_PM_bipolar"], 0) + self.assertEqual(zmengen["Kreuzungsweiche"], 0) + self.assertEqual(zmengen["RA_uni"], 0) + self.assertEqual(zmengen["RA_uni_abhebbar"], 1) + self.assertEqual(zmengen["RA_uni_ohne_SPS_Ansteuerung"], 0) + self.assertEqual(zmengen["RA_bi"], 0) + self.assertEqual(zmengen["RA_bi_ohne_SPS-Ansteuerung"], 1) + self.assertEqual(zmengen["RA_bi_abhebbar"], 4) + self.assertEqual(zmengen["Doppelstreckenantrieb"], 82) + self.assertEqual(zmengen["gemeinsame_Wendung"], 4) + self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 88) + + def test_Mengengerüst_Zusammenfassung_RSMFA_Flyer(self): + Anzahl_MG = { + "SYSTEM": "FA", + "RSM": 11, + "Flyer":1, + "Flyer_Puffer":2, } - mg = RSM_direct(Anzahl_RSM) - self.assertEqual(mg.anzahl("Anzahl_Strecken/RSM"), 8) + mg = MG(Anzahl_MG) + + # check data of the rsm fa + self.assertEqual(mg._rsm_fa.anzahl("Anzahl_RSM"), 11) + self.assertEqual(mg._rsm_fa.anzahl("Sensor_optisch_Traverse"), 11) + self.assertEqual(mg._rsm_fa.anzahl("Bedientableau_1fach"), 11) + self.assertEqual(mg._rsm_fa.anzahl("Bedientableau_2fach"), 2) + self.assertEqual(mg._rsm_fa.anzahl("Weiche"), 11) + self.assertEqual(mg._rsm_fa.anzahl("RRA_bi"), 11) + self.assertEqual(mg._rsm_fa.anzahl("RRA_bi_ohne_SPS_Ansteuerung"), 0) + self.assertEqual(mg._rsm_fa.anzahl("Seilzugschalter"), 0) + self.assertEqual(mg._rsm_fa.anzahl("Mit_Drucktaster"), 0) + self.assertEqual(mg._rsm_fa.anzahl("Meldelampe_Überstrom"), 2) + self.assertEqual(mg._rsm_fa.anzahl("Hauptschalter_Ein_Meldung"), 2) + self.assertEqual(mg._rsm_fa.anzahl("Werma_Rundumleuchte_Störung"),2) + + # check the data of the flyer + self.assertEqual(mg._flyer.anzahl("Anzahl_Schienen"), 2) + self.assertEqual(mg._flyer.anzahl("Sensor_optisch_Traverse"), 7) + self.assertEqual(mg._flyer.anzahl("Sensor_induktiv_Spulenalter_Zug_positionierung"), 1) + self.assertEqual(mg._flyer.anzahl("Bedientableau_2fach"), 1) + self.assertEqual(mg._flyer.anzahl("Interface_Doffer"), 1) + self.assertEqual(mg._flyer.anzahl("Weiche"), 2) + self.assertEqual(mg._flyer.anzahl("Weiche_nach_Flyer_bipolar"), 1) + self.assertEqual(mg._flyer.anzahl("Wechsel"), 1) + self.assertEqual(mg._flyer.anzahl("RA_bi_ohne_SPS-Ansteuerung"), 1) + self.assertEqual(mg._flyer.anzahl("RA_bi_abhebbar"), 1) + self.assertEqual(mg._flyer.anzahl("Doppelstreckenantrieb"), 1) + self.assertEqual(mg._flyer.anzahl("Meldelampe_Überstrom"), 1) + self.assertEqual(mg._flyer.anzahl("Hauptschalter_Ein_Meldung"), 1) + self.assertEqual(mg._flyer.anzahl("Werma_Rundumleuchte_Störung"), 1) + + zmengen = mg.zusammenfassung() + self.assertEqual(zmengen["Sensor_optisch_Traverse"], 18) + self.assertEqual(zmengen["Sensor_induktiv_Spulenalter_Zug_positionierung"], 1) + self.assertEqual(zmengen["Sensor_Spulenprüfung_voll_leer"], 0) + self.assertEqual(zmengen["Seilzugsschalter"], 0) + self.assertEqual(zmengen["Drucktaster_automatische_Umfahrung"], 0) + self.assertEqual(zmengen["Bedientableau_1fach"], 11) + self.assertEqual(zmengen["Bedientableau_2fach"], 3) + self.assertEqual(zmengen["Bedientableau_14fach"], 0) + self.assertEqual(zmengen["Interface_Putzmaschine"], 0) + self.assertEqual(zmengen["Interface_Doffer"], 1) + self.assertEqual(zmengen["Weiche"], 13) + self.assertEqual(zmengen["Dreifachweiche"], 0) + self.assertEqual(zmengen["Wechsel"], 1) + self.assertEqual(zmengen["Stopper"], 0) + self.assertEqual(zmengen["Meldelampe_Überstrom"], 3) + self.assertEqual(zmengen["Hauptschalter_Ein_Meldung"], 3) + self.assertEqual(zmengen["Werma_Rundumleuchte_Störung"], 3) + self.assertEqual(zmengen["Weiche_nach_PM_bipolar"], 0) + self.assertEqual(zmengen["Kreuzungsweiche"], 0) + self.assertEqual(zmengen["RA_uni"], 0) + self.assertEqual(zmengen["RA_uni_abhebbar"], 0) + self.assertEqual(zmengen["RA_uni_ohne_SPS_Ansteuerung"], 0) + self.assertEqual(zmengen["RA_bi"], 11) + self.assertEqual(zmengen["RA_bi_ohne_SPS-Ansteuerung"], 1) + self.assertEqual(zmengen["RA_bi_abhebbar"], 1) + self.assertEqual(zmengen["Doppelstreckenantrieb"], 1) + self.assertEqual(zmengen["gemeinsame_Wendung"], 0) + self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 14) + + def test_Mengengerüst_Zusammenfassung_RSM_Neuenhauser(self): + Anzahl_MG = { + "SYSTEM": "DIRECT", + "RSM": 2, + "Neuenhauser-Putzmaschine": 1, + "Neuenhauser-Putzmaschine_Vorpuffer": 1, + } + mg = MG(Anzahl_MG) + + # check data of the rsm + self.assertEqual(mg._rsm_direct.anzahl("Anzahl_Strecken_RSM"), 8) + self.assertEqual(mg._rsm_direct.anzahl("Lichtschranke_Traverse"), 12) + self.assertEqual(mg._rsm_direct.anzahl("Bedientableau_2fach"), 1) + self.assertEqual(mg._rsm_direct.anzahl("Bedientableau_2fach_Direct"), 2) + self.assertEqual(mg._rsm_direct.anzahl("Weiche"), 8) + self.assertEqual(mg._rsm_direct.anzahl("Weiche_Gemeinsame_Rückstellung"), 1) + self.assertEqual(mg._rsm_direct.anzahl("RA_bi_abhebbar"), 1) + self.assertEqual(mg._rsm_direct.anzahl("Doppelstreckenantrieb"), 16) + self.assertEqual(mg._rsm_direct.anzahl("gemeinsame_Wendung"), 2) + self.assertEqual(mg._rsm_direct.anzahl("Meldelampe_Überstrom"), 1) + self.assertEqual(mg._rsm_direct.anzahl("Hauptschalter_Ein_Meldung"), 1) + self.assertEqual(mg._rsm_direct.anzahl("Werma_Rundumleuchte_Störung"), 0) + + # check the data of neuenhauser + self.assertEqual(mg._neuenhauser.anzahl("Anzahl_Vorstaustrecken"), 1) + self.assertEqual(mg._neuenhauser.anzahl("Anzahl_Nachstaustrecken"), 0) + self.assertEqual(mg._neuenhauser.anzahl("Sensor_optisch_Traverse"), 4) + self.assertEqual(mg._neuenhauser.anzahl("Sensorik_Zugpositionierung"), 4) + self.assertEqual(mg._neuenhauser.anzahl("Sensor_WT18_Spulenprüfung_voll_leer"), 2) + self.assertEqual(mg._neuenhauser.anzahl("Bedientableau_2fach"), 1) + self.assertEqual(mg._neuenhauser.anzahl("Interface_Putzmaschine"), 1) + self.assertEqual(mg._neuenhauser.anzahl("Weiche"), 1) + self.assertEqual(mg._neuenhauser.anzahl("Weiche_nach_PM_bipolar"), -1) # TODO negativ? + self.assertEqual(mg._neuenhauser.anzahl("RA_uni_abhebbar"), 1) + self.assertEqual(mg._neuenhauser.anzahl("RA_uni_ohne_SPS_Ansteuerung"), 1) + self.assertEqual(mg._neuenhauser.anzahl("RA_uni_abhebbar_unger_Sch"), 0) + self.assertEqual(mg._neuenhauser.anzahl("Doppelstreckenantrieb"), 0) + self.assertEqual(mg._neuenhauser.anzahl("Meldelampe_Überstrom"), 1) + self.assertEqual(mg._neuenhauser.anzahl("Hauptschalter_Ein_Meldung"), 1) + self.assertEqual(mg._neuenhauser.anzahl("Werma_Rundumleuchte_Störung"), 1) + + zmengen = mg.zusammenfassung() + self.assertEqual(zmengen["Sensor_optisch_Traverse"], 4) + self.assertEqual(zmengen["Sensor_induktiv_Spulenalter_Zug_positionierung"], 4) + self.assertEqual(zmengen["Sensor_Spulenprüfung_voll_leer"], 2) + self.assertEqual(zmengen["Seilzugsschalter"], 0) + self.assertEqual(zmengen["Drucktaster_automatische_Umfahrung"], 0) + self.assertEqual(zmengen["Bedientableau_1fach"], 0) + self.assertEqual(zmengen["Bedientableau_2fach"], 2) + self.assertEqual(zmengen["Bedientableau_14fach"], 0) + self.assertEqual(zmengen["Interface_Putzmaschine"], 1) + self.assertEqual(zmengen["Interface_Doffer"], 0) + self.assertEqual(zmengen["Weiche"], 9) + self.assertEqual(zmengen["Dreifachweiche"], 1) + self.assertEqual(zmengen["Wechsel"], 0) + self.assertEqual(zmengen["Stopper"], 0) + self.assertEqual(zmengen["Meldelampe_Überstrom"], 2) + self.assertEqual(zmengen["Hauptschalter_Ein_Meldung"], 2) + self.assertEqual(zmengen["Werma_Rundumleuchte_Störung"], 1) + self.assertEqual(zmengen["Weiche_nach_PM_bipolar"], -1) # TODO warum negativ? + self.assertEqual(zmengen["Kreuzungsweiche"], 0) + self.assertEqual(zmengen["RA_uni"], 0) + self.assertEqual(zmengen["RA_uni_abhebbar"], 1) + self.assertEqual(zmengen["RA_uni_ohne_SPS_Ansteuerung"], 1) + self.assertEqual(zmengen["RA_bi"], 0) + self.assertEqual(zmengen["RA_bi_ohne_SPS-Ansteuerung"], 0) + self.assertEqual(zmengen["RA_bi_abhebbar"], 1) + self.assertEqual(zmengen["Doppelstreckenantrieb"], 16) + self.assertEqual(zmengen["gemeinsame_Wendung"], 2) + self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 19) def test_EA(self): - Anzahl_MG = { - "SYSTEM":"DIRECT", - "RSM": 0, - "Flyer":0, - "Flyer_Puffer": 0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": 0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": 0, - "Neuenhauser-Putzmaschine":0, - "Neuenhauser-Putzmaschine_Vorpuffer":0, - "Neuenhauser-Putzmaschine_Nachpuffer":0, - "Cason-Putzmaschine":0, - "Cason-Putzmaschine_Vorpuffer":0, - "Cason-Putzmaschine_Nachpuffer":0, - "Puffer":0, - "Anzahl_der_Pufferstrecken_pro_Puffer":0, - "Begegnungsstrecke_Bypass":0, - "Turm":0, - "Turm_Anzahl_Wendlungen":0, + "SYSTEM": "DIRECT", + "RSM": 10, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine": 1, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": 2, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": 2, } - mg = MG(Anzahl_MG, - # rsm_direct=rsm_direct_eingabe, - # rsm_fa=rsm_fa_eingabe, - # flyer_f40=flyer_f40_eingabe, - # neuenhauser=neuenhauser_eingabe, - # flyer=flyer_eingabe, - # verbindungsstrecken_w=verbindungsstrecken_w_eingabe, - # puffer=puffer_eingabe, - # turm=turm_eingabe - ) + mg = MG(Anzahl_MG) + + zmengen = mg.zusammenfassung() + self.assertEqual(zmengen["Sensor_optisch_Traverse"], 11) + self.assertEqual(zmengen["Sensor_induktiv_Spulenalter_Zug_positionierung"], 2) + self.assertEqual(zmengen["Sensor_Spulenprüfung_voll_leer"], 0) + self.assertEqual(zmengen["Seilzugsschalter"], 0) + self.assertEqual(zmengen["Drucktaster_automatische_Umfahrung"], 0) + self.assertEqual(zmengen["Bedientableau_1fach"], 0) + self.assertEqual(zmengen["Bedientableau_2fach"], 2) + self.assertEqual(zmengen["Bedientableau_14fach"], 0) + self.assertEqual(zmengen["Interface_Putzmaschine"], 0) + self.assertEqual(zmengen["Interface_Doffer"], 1) + self.assertEqual(zmengen["Weiche"], 44) + self.assertEqual(zmengen["Dreifachweiche"], 1) + self.assertEqual(zmengen["Wechsel"], 0) + self.assertEqual(zmengen["Stopper"], 0) + self.assertEqual(zmengen["Meldelampe_Überstrom"], 3) + self.assertEqual(zmengen["Hauptschalter_Ein_Meldung"], 3) + self.assertEqual(zmengen["Werma_Rundumleuchte_Störung"], 3) + self.assertEqual(zmengen["Weiche_nach_PM_bipolar"], 0) + self.assertEqual(zmengen["Kreuzungsweiche"], 0) + self.assertEqual(zmengen["RA_uni"], 0) + self.assertEqual(zmengen["RA_uni_abhebbar"], 1) + self.assertEqual(zmengen["RA_uni_ohne_SPS_Ansteuerung"], 0) + self.assertEqual(zmengen["RA_bi"], 0) + self.assertEqual(zmengen["RA_bi_ohne_SPS-Ansteuerung"], 1) + self.assertEqual(zmengen["RA_bi_abhebbar"], 4) + self.assertEqual(zmengen["Doppelstreckenantrieb"], 82) + self.assertEqual(zmengen["gemeinsame_Wendung"], 4) + self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 88) + Anzahl_EAS = { "bedienstation_einfach_Zug_Wechseln": 9, "Weiche": 16, } eas = EA(Anzahl_EAS, mg) - self.assertEqual(eas.anzahl("bedienstation_einfach_Zug_Wechseln"), 9) - self.assertEqual(eas.anzahl("Weiche"), 16) + # eas.get_SA() + # eas.get_SE() + + # first test whether the input and output channels are correct + self.assertEqual(eas.getE("Bedienelemente_Steuerschrank"), 24) + + # Bedienstation + self.assertEqual(eas.getE("bedienstation_1fach_Not_Aus"), 1) self.assertEqual(eas.getE("bedienstation_einfach_Zug_Wechseln"), 1) - self.assertEqual(eas.getA("bedienstation_einfach_Zug_Wechseln"), 1) - self.assertEqual(eas.getE("Weiche"), 0) - self.assertEqual(eas.getA("Weiche"), 1) + self.assertEqual(eas.getE("bedienstation_automatische_Umfahrung"), 1) + self.assertEqual(eas.getE("bedienstation_zweifach_Wechs_BCD_10f"), 5) + self.assertEqual(eas.getE("bedienstation_zweifach_Not_Aus_Reset"), 2) + self.assertEqual(eas.getE("bedienst_dreifach"), 3) + self.assertEqual(eas.getE("bedienst_vierfach"), 4) + self.assertEqual(eas.getE("bedienst_sechsfach"), 6) + self.assertEqual(eas.getE("EAs_Unterverteiler_direct"), 7) - self.assertEqual(eas.getE("Bedienelemente_Steuerschrank"), 16) + # Ermittlung_Mengengeruest_Anzahl + self.assertEqual(eas.getE("Sensor_Traversenabfrage_optisch"), 1) + self.assertEqual(eas.getE("Reflexionslichtschranke_RSM_DIRECT"), 1) + self.assertEqual(eas.getE("Sensor_Stopper_induktiv"), 1) + self.assertEqual(eas.getE("Seilzugschalter"), 1) + + self.assertEqual(eas.getE("Weiche"), 0) + self.assertEqual(eas.getE("Weiche_nach_PM_bipolar"), 0) + self.assertEqual(eas.getE("gemeinsame_Weichenrueckstellung"), 0) + self.assertEqual(eas.getE("Dreifach_Weiche_DIRECT"), 0) + self.assertEqual(eas.getE("Kreuzungsweiche"), 0) + self.assertEqual(eas.getE("Stopper"), 0) + self.assertEqual(eas.getE("Ventil_RA_3_2_abhebbar"), 0) + self.assertEqual(eas.getE("Ventil_Doppelstreckenantrieb_5_2_abhebbar"), + 0) + self.assertEqual(eas.getE("Blitzleuchte_Stoerung"), 0) + + self.assertEqual(eas.getE("Schnittstelle_Flyer_ElectroJet"), 2) + self.assertEqual( + eas.getE("Schnittstelle_Flyer_Putzmaschine_ElectroJet"), 2) + self.assertEqual(eas.getE("Schnittstelle_Flyer_Neuhauser"), 4) + self.assertEqual(eas.getE("FEldbux_UV_EinAusgang"), 2) + + self.assertEqual(eas.getE("Spulenumsetzstation"), 40) + + self.assertEqual(eas.getE("RA_unidirektional"), 0) + self.assertEqual(eas.getE("RA_unidirektional_abhebbar"), 0) + self.assertEqual(eas.getE("RA_unidirektional_mit_gemeinsamer_Wendung"), + 0) + self.assertEqual(eas.getE("RA_unidirektional_ohne_SPS_Ansteuerung"), 0) + self.assertEqual(eas.getE("RA_bidirektional"), 0) + self.assertEqual(eas.getE("RA_bidirektional_abhebbar"), 0) + self.assertEqual(eas.getE("RA_bidirektional_abhebbar_gemeinsWend"), 0) + self.assertEqual(eas.getE("RA_bidirektional_ohne_SPS_Ansteuerung"), 0) + self.assertEqual(eas.getE("RA_in_RSM_bidirektional"), 0) + self.assertEqual(eas.getE("Doppelstreckenantrieb"), 0) + self.assertEqual(eas.getE("Doppelstreckenantriebgemeinsame_Wendung"), + 0) + self.assertEqual(eas.getE("gemeinsame_Wendung"), 0) + self.assertEqual(eas.getE("Frequenzumrichter"), 1) + + ###################### self.assertEqual(eas.getA("Bedienelemente_Steuerschrank"), 16) - self.assertEqual(repr(eas), "{'bedienstation_einfach_Zug_Wechseln': 9, 'Weiche': 16}") + # Bedienstation + self.assertEqual(eas.getA("bedienstation_1fach_Not_Aus"), 1) + self.assertEqual(eas.getA("bedienstation_einfach_Zug_Wechseln"), 1) + self.assertEqual(eas.getA("bedienstation_automatische_Umfahrung"), 1) + self.assertEqual(eas.getA("bedienstation_zweifach_Wechs_BCD_10f"), 1) + self.assertEqual(eas.getA("bedienstation_zweifach_Not_Aus_Reset"), 2) + self.assertEqual(eas.getA("bedienst_dreifach"), 3) + self.assertEqual(eas.getA("bedienst_vierfach"), 4) + self.assertEqual(eas.getA("bedienst_sechsfach"), 6) + self.assertEqual(eas.getA("EAs_Unterverteiler_direct"), 6) - self.assertEqual(eas.get_SE("bedienstation_einfach_Zug_Wechseln"), 9) - self.assertEqual(eas.get_SA("bedienstation_einfach_Zug_Wechseln"), 9) - self.assertEqual(eas.get_SE("Weiche"), 0) - self.assertEqual(eas.get_SA("Weiche"), 16) + # Ermittlung_Mengengeruest_Anzahl + self.assertEqual(eas.getA("Sensor_Traversenabfrage_optisch"), 0) + self.assertEqual(eas.getA("Reflexionslichtschranke_RSM_DIRECT"), 0) + self.assertEqual(eas.getA("Sensor_Stopper_induktiv"), 0) + self.assertEqual(eas.getA("Seilzugschalter"), 0) + + self.assertEqual(eas.getA("Weiche"), 1) + self.assertEqual(eas.getA("Weiche_nach_PM_bipolar"), 2) + self.assertEqual(eas.getA("gemeinsame_Weichenrueckstellung"), 1) + self.assertEqual(eas.getA("Dreifach_Weiche_DIRECT"), 2) + self.assertEqual(eas.getA("Kreuzungsweiche"), 10) + self.assertEqual(eas.getA("Stopper"), 1) + self.assertEqual(eas.getA("Ventil_RA_3_2_abhebbar"), 1) + self.assertEqual(eas.getA("Ventil_Doppelstreckenantrieb_5_2_abhebbar"), + 2) + self.assertEqual(eas.getA("Blitzleuchte_Stoerung"), 1) + + self.assertEqual(eas.getA("Schnittstelle_Flyer_ElectroJet"), 2) + self.assertEqual( + eas.getA("Schnittstelle_Flyer_Putzmaschine_ElectroJet"), 2) + self.assertEqual(eas.getA("Schnittstelle_Flyer_Neuhauser"), 4) + self.assertEqual(eas.getA("FEldbux_UV_EinAusgang"), 1) + + self.assertEqual(eas.getA("Spulenumsetzstation"), 20) + + self.assertEqual(eas.getA("RA_unidirektional"), 1) + self.assertEqual(eas.getA("RA_unidirektional_abhebbar"), 1) + self.assertEqual(eas.getA("RA_unidirektional_mit_gemeinsamer_Wendung"), + 1) + self.assertEqual(eas.getA("RA_unidirektional_ohne_SPS_Ansteuerung"), 0) + self.assertEqual(eas.getA("RA_bidirektional"), 2) + self.assertEqual(eas.getA("RA_bidirektional_abhebbar"), 2) + self.assertEqual(eas.getA("RA_bidirektional_abhebbar_gemeinsWend"), 1) + self.assertEqual(eas.getA("RA_bidirektional_ohne_SPS_Ansteuerung"), 0) + self.assertEqual(eas.getA("RA_in_RSM_bidirektional"), 1) + self.assertEqual(eas.getA("Doppelstreckenantrieb"), 2) + self.assertEqual(eas.getA("Doppelstreckenantriebgemeinsame_Wendung"), + 1) + self.assertEqual(eas.getA("gemeinsame_Wendung"), 2) + self.assertEqual(eas.getA("Frequenzumrichter"), 3) + + + + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + # self.assertEqual(eas.anzahl(), 0) + + + # self.assertEqual(eas.gesamt_E(), 90) + # self.assertEqual(eas.gesamt_A(), 401) + + self.assertEqual(eas.anzahl("bedienstation_einfach_Zug_Wechseln"), 0) - self.assertEqual(eas.gesamt_E(), 9) - self.assertEqual(eas.gesamt_A(), 25) def test_EA_implicit(self): - Anzahl_MG = { - "SYSTEM":"DIRECT", - "RSM": 0, - "Flyer":0, - "Flyer_Puffer": 0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": 0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": 0, - "Neuenhauser-Putzmaschine":0, - "Neuenhauser-Putzmaschine_Vorpuffer":0, - "Neuenhauser-Putzmaschine_Nachpuffer":0, - "Cason-Putzmaschine":0, - "Cason-Putzmaschine_Vorpuffer":0, - "Cason-Putzmaschine_Nachpuffer":0, - "Puffer":0, - "Anzahl_der_Pufferstrecken_pro_Puffer":0, - "Begegnungsstrecke_Bypass":0, - "Turm":0, - "Turm_Anzahl_Wendlungen":0, - } - mg = MG(Anzahl_MG) - Anzahl_EAS = { - "Stopper": 5, - } - eas = EA(Anzahl_EAS, mg) - self.assertEqual(eas.anzahl("Stopper"), 5) + # Anzahl_MG = { + # "SYSTEM":"DIRECT", + # "RSM": 0, + # "Flyer":0, + # "Flyer_Puffer": 0, + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": 0, + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": 0, + # "Neuenhauser-Putzmaschine":0, + # "Neuenhauser-Putzmaschine_Vorpuffer":0, + # "Neuenhauser-Putzmaschine_Nachpuffer":0, + # "Cason-Putzmaschine":0, + # "Cason-Putzmaschine_Vorpuffer":0, + # "Cason-Putzmaschine_Nachpuffer":0, + # "Puffer":0, + # "Anzahl_der_Pufferstrecken_pro_Puffer":0, + # "Begegnungsstrecke_Bypass":0, + # "Turm":0, + # "Turm_Anzahl_Wendlungen":0, + # } + # mg = MG(Anzahl_MG) + # Anzahl_EAS = { + # "Stopper": 5, + # } + # eas = EA(Anzahl_EAS, mg) + # self.assertEqual(eas.anzahl("Stopper"), 5) - self.assertEqual(eas.getE("Stopper"), 0) - self.assertEqual(eas.getA("Stopper"), 0) - - # Sensor für Stopper wird automatisch hinzugefügt - self.assertEqual(repr(eas), "{'Stopper': 5, 'Sensor_Stopper_induktiv': 5}") - - self.assertEqual(eas.gesamt_E(), 5) - self.assertEqual(eas.gesamt_A(), 0) - - def test_EA_A_La_Presa(self): - Anzahl_MG = { - "SYSTEM":"DIRECT", - "RSM": 0, - "Flyer":0, - "Flyer_Puffer": 0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer": 0, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer": 0, - "Neuenhauser-Putzmaschine":0, - "Neuenhauser-Putzmaschine_Vorpuffer":0, - "Neuenhauser-Putzmaschine_Nachpuffer":0, - "Cason-Putzmaschine":0, - "Cason-Putzmaschine_Vorpuffer":0, - "Cason-Putzmaschine_Nachpuffer":0, - "Puffer":0, - "Anzahl_der_Pufferstrecken_pro_Puffer":0, - "Begegnungsstrecke_Bypass":0, - "Turm":0, - "Turm_Anzahl_Wendlungen":0, - } - mg = MG(Anzahl_MG, - # rsm_direct=rsm_direct_eingabe, - # rsm_fa=rsm_fa_eingabe, - # flyer_f40=flyer_f40_eingabe, - # neuenhauser=neuenhauser_eingabe, - # flyer=flyer_eingabe, - # verbindungsstrecken_w=verbindungsstrecken_w_eingabe, - # puffer=puffer_eingabe, - # turm=turm_eingabe - ) - - Anzahl_EAS_A_La_Presa = { - "Bedienelemente_Steuerschrank": 1, - "bedienstation_einfach_Zug_Wechseln": 9, - "bedienstation_zweifach_Not_Aus_Fahrdauerueb": 4, - "Sensor_Traversenabfrage_optisch": 21, - "Weiche": 16, - "Stopper": 3, - "Blitzleuchte_Stoerung": 2, - "Schnittstelle_Flyer_Mazoli": 3, - "RA_unidirektional_mit_gemeinsamer_Wendung": 9, - "RA_bidirektional": 3, - "RA_bidirektional_abhebbar": 3, - "RA_bidirektional_ohne_SPS_Ansteuerung": 4, - "Doppelstreckenantrieb": 3, - "gemeinsame_Wendung": 1, - } - - eas_alapresa = EA(Anzahl_EAS_A_La_Presa, mg) - self.assertEqual(eas_alapresa.gesamt_E(), 60) - self.assertEqual(eas_alapresa.gesamt_A(), 95) - - res_eas_alapresa_E = eas_alapresa.gesamt_E()*1.15 - res_eas_alapresa_A = eas_alapresa.gesamt_A()*1.15 - self.assertEqual(math.floor(res_eas_alapresa_E), 69) - self.assertEqual(math.floor(res_eas_alapresa_A), 109) + # self.assertEqual(eas.getE("Stopper"), 0) + # self.assertEqual(eas.getA("Stopper"), 0) + # # Sensor für Stopper wird automatisch hinzugefügt + # self.assertEqual(repr(eas), "{'Stopper': 5, 'Sensor_Stopper_induktiv': 5}") + # self.assertEqual(eas.gesamt_E(), 5) + # self.assertEqual(eas.gesamt_A(), 0) + pass def test_HW(self): - Anzahl_EAS = { - "bedienstation_einfach_Zug_Wechseln": 1, - "Weiche": 2, - "RA_unidirektional": 1 - } - Anzahl_HW = { - "hauptschalter": 2, - "panel_pc": 1, - "antrieb_unidirektional_halbleiter": 1, - } + # Anzahl_EAS = { + # "bedienstation_einfach_Zug_Wechseln": 1, + # "Weiche": 2, + # "RA_unidirektional": 1 + # } + # Anzahl_HW = { + # "hauptschalter": 2, + # "panel_pc": 1, + # "antrieb_unidirektional_halbleiter": 1, + # } # mg = MG(deckblatt, {}) # eas = EA(Anzahl_EAS) # hw = HW(Anzahl_HW, eas) @@ -2387,18 +2605,15 @@ class TestObjectMethods(unittest.TestCase): # self.assertEqual(hw.summe_gesamt(), 460.736) # self.assertEqual(hw.summe_in_LL(), 294) # self.assertEqual(hw.summe_vorort(), 166.736) - + pass - # TODO: Check dependencies step by step - # print(hw) - - # def test_DL(self): - # Anzahl_EAS = { - # "bedienstation_einfach_Zug_Wechseln": 9, - # "Weiche": 16, - # } - # eas + def test_DL(self): + # Anzahl_EAS = { + # "bedienstation_einfach_Zug_Wechseln": 9, + # "Weiche": 16, + # } + pass def test2(): @@ -2423,11 +2638,11 @@ def test2(): "Turm":0, "Turm_Anzahl_Wendlungen":0, } - + rsm_direct_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, # wird in deckblatt-Klasse berechnet - #"Anzahl_Strecken/RSM":8, + #"Anzahl_Strecken_RSM":8, "Sensor_optisch_Traverse":0, #"Lichtschranke_Traverse":0, #"Bedientableau_2fach":0, @@ -2443,7 +2658,7 @@ def test2(): #"gemeinsame_Wendung":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -2466,14 +2681,14 @@ def test2(): #"RRA_bi":0, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":0, - #"RRA_bi_ohne_SPS-Ansteuerung":0, + #"RRA_bi_ohne_SPS_Ansteuerung":0, "gemeinsame_Wendung":0, #"Seilzugschalter":0, #"Mit_Drucktaster":0, "Mit_Drucktaster_Korrektur":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -2486,7 +2701,7 @@ def test2(): #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet #"Anzahl_Schienen":0, - "Single-Line_/_Durchfahrt":False, + "Single_Line_Durchfahrt":False, "Nachpuffer":False, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, @@ -2506,20 +2721,20 @@ def test2(): "RA_uni":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, - #"RA_uni_ohne_SPS-Ansteuerung":0, - "RA_uni_ohne_SPS-Ansteuerung_Korrektur":0, + #"RA_uni_ohne_SPS_Ansteuerung":0, + "RA_uni_ohne_SPS_Ansteuerung_Korrektur":0, #"RRA_BI_abhebbar":0, "RRA_BI_abhebbar_Korrektur":0, "RRA_bi":0, #"RRA_bi_Korrektur":0, - #"RRA_bi_ohne_SPS-Ansteuerung":0, + #"RRA_bi_ohne_SPS_Ansteuerung":0, "RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0, #"Doppelstreckenantrieb":0, "Doppelstreckenantrieb_Korrektur":0, "RA_bi_abhebbar_unger_Schiene":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -2535,21 +2750,21 @@ def test2(): #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, - #"Sensor_WT18_Spulenprüfung_voll/leer":0, + #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, - #"Weiche_nach_PM_(bipolar)":0, + #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, - #"RA_uni_ohne_SPS-Ansteuerung":0, - #"RA_uni_abhebbar_(unger._Sch.)":0, + #"RA_uni_ohne_SPS_Ansteuerung":0, + #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -2578,7 +2793,7 @@ def test2(): "RA_bi_abhebbar_unger_Schiene":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, #"Werma_Rundumleuchte_Störung":0, "Werma_Rundumleuchte_Störung_Korrektur":0, @@ -2594,7 +2809,7 @@ def test2(): "Kreuzungsweiche":0, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, - "RA_uni_ohne_SPS-Ansteuerung":0, + "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 @@ -2609,11 +2824,11 @@ def test2(): "Sensor_optisch_Traverse_Korrektur":0, #"Weiche":0, "Weiche_Korrektur":0, - "RA_bi_(ungerade_Schiene)":0, + "RA_bi_ungerade_Schiene":0, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, + #"Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur":0, } turm_eingabe = { @@ -2630,7 +2845,7 @@ def test2(): "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } - mg = MG(Anzahl_MG, + mg = MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, @@ -2674,5 +2889,5 @@ def test_Unittests(): unittest.main() if __name__ == '__main__': - test2() - #test_Unittests() + #test2() + test_Unittests()