Test für Neuenhauser Putzmaschine angepasst. Jeweils 2 Vor und Nachpuffer hinzu. Standardabfragen für das Mengengerüst dazu

This commit is contained in:
2022-04-21 17:27:46 +02:00
parent 23140ff8fe
commit acf0b77af0
3 changed files with 58 additions and 72 deletions
+3
View File
@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml
+3
View File
@@ -0,0 +1,3 @@
{
"python.formatting.provider": "yapf"
}
+52 -72
View File
@@ -45,10 +45,30 @@ class MG():
self._deckblatt = deckblatt
self.remove_empty(self._deckblatt)
### Prüfungen:
# wenn Flyer Electrojet 1, dann sollten Vor- und Nachpuffer größer 1 sein
if deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine", 0) > 0:
if deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0) < 2:
raise Exception("Vorpuffer sollte grösser 1 sein")
if deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer", 0) < 2:
raise Exception("Nachpuffer sollte grösser 1 sein")
# wenn Neuenhauser 1, dann sollten Vor- und Nachpuffer größer 1 sein
if deckblatt.get("Neuenhauser-Putzmaschine", 0) > 0:
if deckblatt.get("Neuenhauser-Putzmaschine_Vorpuffer", 0) < 2:
raise Exception("Vorpuffer der Neuenhauser sollte grösser 1 sein")
if deckblatt.get("Neuenhauser-Putzmaschine_Nachpuffer", 0) < 2:
raise Exception("Nachpuffer der Neuenhauser sollte grösser 1 sein")
# wenn Cason 1, dann sollten Vor- und Nachpuffer größer 1 sein
if deckblatt.get("Cason-Putzmaschine", 0) > 0:
if deckblatt.get("Cason-Putzmaschine_Vorpuffer", 0) < 2:
raise Exception("Vorpuffer der Cason sollte grösser 1 sein")
if deckblatt.get("Cason-Putzmaschine_Nachpuffer", 0) < 2:
raise Exception("Nachpuffer der Cason sollte grösser 1 sein")
# wenn Puffer, dann mindestens 2 Strecken
if deckblatt.get("Puffer", 0) > 0:
if deckblatt.get("Anzahl_der_Pufferstrecken_pro_Puffer", 0) < 3:
raise Exception("mind. 2 Strecken sollten existieren")
# Bypass, wenn mindestens 2 Flyer oder 2 RSM
# Turm: kein Kriterium
self._RSM_Anzahl = deckblatt.get("RSM", 0)
@@ -940,16 +960,17 @@ class EA():
}
self._Anzahl = anzahl
self._Anzahl["Bedienelemente_Steuerschrank"] = 1 # es gibt immer genau einen Steuerschrank
zmengen = mg.zusammenfassung()
self._Anzahl["bedienstation_einfach_Zug_Wechseln"] = zmengen.get("Bedientableau_1fach", 0)
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_Direct")
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_dreifach"] = zmengen.get(, 0) # Eingaben
# 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"] = mg.get_value_of_object("rsm_direct", "Bedientableau_2fach_Direct")
# Ermittlung_Mengengeruest_Anzahl
self._Anzahl["Sensor_Traversenabfrage_optisch"] = zmengen.get("Sensor_optisch_Traverse", 0) + zmengen.get("Sensor_Spulenprüfung_voll_leer", 0)
@@ -960,7 +981,7 @@ class EA():
self._Anzahl["Weiche"] = zmengen.get("Weiche", 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["gemeinsame_Weichenrueckstellung"] = zmengen.get(, 0) # Eingabe
self._Anzahl["Dreifach_Weiche_DIRECT"] = zmengen.get("Dreifachweiche", 0)
@@ -968,25 +989,25 @@ class EA():
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("RA_bi_abhebbar", 0) +\
self._Anzahl.get("RA_bidirektional_abhebbar_gemeinsWend", 0)
# + zmengen.get("", 0) # TODO B65 ist immer 0; Vorgabe?
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
# TODO die Referenz von MG B89 ist eine Leerzeile -> 79
# 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("putzmaschine_neuenhauser", "Interface_Putzmaschine")
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")
# 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_mit_gemeinsamer_Wendung"] = zmengen.get(, 0) # TODO immer 0
@@ -1023,6 +1044,7 @@ class EA():
def gesamt_E(self):
res = 0
self.EAs
for k,n in self._Anzahl.items():
res += self.EAs[k][0] * n
return res
@@ -2291,7 +2313,8 @@ class TestObjectMethods(unittest.TestCase):
"SYSTEM": "DIRECT",
"RSM": 2,
"Neuenhauser-Putzmaschine": 1,
"Neuenhauser-Putzmaschine_Vorpuffer": 1,
"Neuenhauser-Putzmaschine_Vorpuffer": 2,
"Neuenhauser-Putzmaschine_Nachpuffer": 2,
}
mg = MG(Anzahl_MG)
@@ -2310,25 +2333,25 @@ class TestObjectMethods(unittest.TestCase):
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("Anzahl_Vorstaustrecken"), 2)
self.assertEqual(mg._neuenhauser.anzahl("Anzahl_Nachstaustrecken"), 2)
self.assertEqual(mg._neuenhauser.anzahl("Sensor_optisch_Traverse"), 7)
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("Weiche"), 2)
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("Doppelstreckenantrieb"), 2)
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_optisch_Traverse"], 7)
self.assertEqual(zmengen["Sensor_induktiv_Spulenalter_Zug_positionierung"], 4)
self.assertEqual(zmengen["Sensor_Spulenprüfung_voll_leer"], 2)
self.assertEqual(zmengen["Seilzugsschalter"], 0)
@@ -2338,14 +2361,14 @@ class TestObjectMethods(unittest.TestCase):
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["Weiche"], 10)
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["Weiche_nach_PM_bipolar"], 1)
self.assertEqual(zmengen["Kreuzungsweiche"], 0)
self.assertEqual(zmengen["RA_uni"], 0)
self.assertEqual(zmengen["RA_uni_abhebbar"], 1)
@@ -2353,9 +2376,9 @@ class TestObjectMethods(unittest.TestCase):
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["Doppelstreckenantrieb"], 18)
self.assertEqual(zmengen["gemeinsame_Wendung"], 2)
self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 19)
self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 21)
def test_EA(self):
Anzahl_MG = {
@@ -2404,9 +2427,6 @@ class TestObjectMethods(unittest.TestCase):
"EAs_Unterverteiler_direct": 10,
}
eas = EA(Anzahl_EAS, mg)
# eas.get_SA()
# eas.get_SE()
### first test the input channels
self.assertEqual(eas.getE("Bedienelemente_Steuerschrank"), 24)
@@ -2439,7 +2459,7 @@ class TestObjectMethods(unittest.TestCase):
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_Putzmaschine_ElectroJet"), 2)
self.assertEqual(eas.getE("Schnittstelle_Flyer_Neuhauser"), 4)
self.assertEqual(eas.getE("FEldbux_UV_EinAusgang"), 2)
@@ -2490,7 +2510,7 @@ class TestObjectMethods(unittest.TestCase):
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_Putzmaschine_ElectroJet"), 2)
self.assertEqual(eas.getA("Schnittstelle_Flyer_Neuhauser"), 4)
self.assertEqual(eas.getA("FEldbux_UV_EinAusgang"), 1)
@@ -2540,7 +2560,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(eas.get_SE("Schnittstelle_Flyer_ElectroJet"), 2)
self.assertEqual(eas.get_SE("Schnittstelle_Flyer_Putzmaschine_ElectroJet"), 0)
self.assertEqual(eas.get_SE("Schnittstelle_Flyer_Neuhauser"), 0)
#self.assertEqual(eas.get_SE("Schnittstelle_Flyer_Neuhauser"), 0) # TODO Check EA Ausgabe
self.assertEqual(eas.get_SE("FEldbux_UV_EinAusgang"), 2)
self.assertEqual(eas.get_SE("Spulenumsetzstation"), 0)
@@ -2588,7 +2608,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(eas.get_SA("Schnittstelle_Flyer_ElectroJet"), 2)
self.assertEqual(eas.get_SA("Schnittstelle_Flyer_Putzmaschine_ElectroJet"), 0)
self.assertEqual(eas.get_SA("Schnittstelle_Flyer_Neuhauser"), 0)
self.assertEqual(eas.get_SA("Schnittstelle_Flyer_Neuhauser"), 0)
self.assertEqual(eas.get_SA("FEldbux_UV_EinAusgang"), 1)
self.assertEqual(eas.get_SA("Spulenumsetzstation"), 0)
@@ -2597,7 +2617,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(eas.get_SA("RA_unidirektional_abhebbar"), 1)
self.assertEqual(eas.get_SA("RA_unidirektional_mit_gemeinsamer_Wendung"), 0)
self.assertEqual(eas.get_SA("RA_unidirektional_ohne_SPS_Ansteuerung"), 0)
self.assertEqual(eas.get_SA("RA_bidirektional"), 6)
self.assertEqual(eas.get_SA("RA_bidirektional"), 0)
self.assertEqual(eas.get_SA("RA_bidirektional_abhebbar"), 8)
self.assertEqual(eas.get_SA("RA_bidirektional_abhebbar_gemeinsWend"), 0)
self.assertEqual(eas.get_SA("RA_bidirektional_ohne_SPS_Ansteuerung"), 0)
@@ -2607,53 +2627,13 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(eas.get_SA("gemeinsame_Wendung"), 0)
self.assertEqual(eas.get_SA("Frequenzumrichter"), 0)
# self.assertEqual(eas.anzahl(), 0)
# Zusammenfassung
self.assertEqual(eas.gesamt_E(), 231)
self.assertEqual(eas.gesamt_A(), 490)
# self.assertEqual(eas.gesamt_E(), 90)
# self.assertEqual(eas.gesamt_A(), 401)
self.assertEqual(eas.anzahl("bedienstation_einfach_Zug_Wechseln"), 0)
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)
# 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