an den EAS weiter gebaut

This commit is contained in:
2022-04-19 17:47:53 +02:00
parent fb7330564e
commit 290a569b66
+170 -197
View File
@@ -1,4 +1,5 @@
#from distutils.log import debug
from logging import raiseExceptions
import math
import sys
#from pickle import FALSE
@@ -143,6 +144,8 @@ class MG():
if (objectname.lower() == "turm"):
return self._turm.anzahl(key)
raise Exception("unkown element")
def getresult(self):
res = {
@@ -802,6 +805,9 @@ class Verbindungsstrecken_Wechsel():
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)
@@ -898,7 +904,7 @@ class Turm():
class EA():
def __init__(self, anzahl:dict):
def __init__(self, anzahl:dict, mg: type[MG]):
# Eingänge und Ausgänge jeder Hardwareeinheit
self.EAs = {
# # Bedienelemente_Steuerschrank
@@ -924,6 +930,7 @@ class EA():
"bedienst_dreifach": (3, 3),
"bedienst_vierfach": (4, 4),
"bedienst_sechsfach": (6, 6),
"EAs_Unterverteiler_direct": (7, 6),
# Ermittlung_Mengengeruest_Anzahl,
"Sensor_Traversenabfrage_optisch": (1, 0),
@@ -957,32 +964,73 @@ class EA():
"RA_bidirektional_abhebbar_gemeinsWend": (0, 1),
"RA_bidirektional_ohne_SPS_Ansteuerung": (0, 0),
"RA_in_RSM_bidirektional": (0, 1),
"RA_in_RSM_bi_Anzahl_Antriebe_je_Seite": (0, 0), # Füll zeile. Eigentlich gibt es hier keine E/As. Dies wird hier nur die Anzahl gebraucht
"Doppelstreckenantrieb": (0, 2),
"Doppelstreckenantriebgemeinsame_Wendung": (0, 1),
"gemeinsame_Wendung": (1, 3),
"gemeinsame_Wendung": (0, 2),
"Frequenzumrichter": (1, 3),
}
self._Anzahl = anzahl
Stopper = anzahl.get("Stopper", 0)
if Stopper > 0:
self._Anzahl["Sensor_Stopper_induktiv"] = anzahl.get("Stopper", 0)
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_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 ?
# Ermittlung_Mengengeruest_Anzahl
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["gemeinsame_Weichenrueckstellung"] = zmengen.get(, 0) # TODO warum leer
self._Anzahl["Dreifach_Weiche_DIRECT"] = zmengen.get("Dreifachweiche", 0)
RA_unidirektional_abhebbar = anzahl.get("RA_unidirektional_abhebbar", 0)
RA_bidirektional_abhebbar = anzahl.get("RA_bidirektional_abhebbar", 0)
RA_bidirektional_abhebbar_gemeinsWend = anzahl.get("RA_bidirektional_abhebbar_gemeinsWend", 0)
Ventil_RA_3_2_abhebbar = RA_unidirektional_abhebbar + \
RA_bidirektional_abhebbar + RA_bidirektional_abhebbar_gemeinsWend
if Ventil_RA_3_2_abhebbar > 0:
self._Anzahl["Ventil_RA_3_2_abhebbar"] = Ventil_RA_3_2_abhebbar
Doppelstreckenantrieb = anzahl.get("Doppelstreckenantrieb", 0)
Doppelstreckenantriebgemeinsame_Wendung = anzahl.get("Doppelstreckenantriebgemeinsame_Wendung", 0)
Ventil_Doppelstreckenantrieb_5_2_abhebbar = Doppelstreckenantrieb + Doppelstreckenantriebgemeinsame_Wendung
if Ventil_Doppelstreckenantrieb_5_2_abhebbar > 0:
self._Anzahl["Ventil_Doppelstreckenantrieb_5_2_abhebbar"] = Ventil_Doppelstreckenantrieb_5_2_abhebbar
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
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
# 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["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")
# TODO Letzer Abschnit der EAS? "Zentraler Aufbau der SPS..." wo verwendet?
# 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
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
self._Anzahl["RA_bidirektional_ohne_SPS_Ansteuerung"] = zmengen.get("RA_bi_ohne_SPS-Ansteuerung", 0)
# self._Anzahl["RA_in_RSM_bidirektional"] = zmengen.get(, 0) # TODO immer 0
self._Anzahl["Doppelstreckenantrieb"] = zmengen.get("Doppelstreckenantrieb", 0)
# self._Anzahl["Doppelstreckenantriebgemeinsame_Wendung"] = zmengen.get(, 0) # TODO immer 0
# self._Anzahl["gemeinsame_Wendung"] = zmengen.get(, 0) # TODO immer 0
# self._Anzahl["Frequenzumrichter"] = zmengen.get(, 0) # TODO immer 0
def getE(self, partname):
return self.EAs[partname][0]
@@ -1412,9 +1460,9 @@ class HW():
# "busverteiler_8_rsm_direct"
# "korrektur_8_rsm_zusaetzlich_im_unterverteiler"
motoren_uni_flyer_f40= mg.get_value_of_object("flyer_f40", "RA_uni") \
+ mg.get_value_of_object("flyer_f40", "RA_uni_abhebbar") \
+ mg.get_value_of_object("flyer_f40", "RA_uni_abhebbar_Korrektur")
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")
# TODO warum ist hier bi drin?
motoren_uni_rsm_direct = mg.get_value_of_object("rsm_direct", "RA_bi_abhebbar") \
@@ -1422,19 +1470,19 @@ class HW():
self._anzahl["antrieb_unidirektional_halbleiter"] = motoren_uni_flyer_f40 + motoren_uni_rsm_direct
motoren_bi_flyer_f40 = mg.get_value_of_object("flyer_f40", "RRA_BI_abhebbar") + \
mg.get_value_of_object("flyer_f40", "RRA_BI_abhebbar_Korrektur") + \
mg.get_value_of_object("flyer_f40", "RRA_bi") + \
mg.get_value_of_object("flyer_f40", "RRA_bi_Korrektur") + \
mg.get_value_of_object("flyer_f40", "RRA_bi_ohne_SPS-Ansteuerung") + \
mg.get_value_of_object("flyer_f40", "RRA_bi_ohne_SPS_Ansteuerung_Korrektur") + \
mg.get_value_of_object("flyer_f40", "Doppelstreckenantrieb")
motoren_bi_flyer_f40 = mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_BI_abhebbar") + \
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_Korrektur") + \
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", "RA_bi_abhebbar_Korrektur") + \
mg.get_value_of_object("flyer_f40", "RA_bi") + \
mg.get_value_of_object("flyer_f40", "Doppelstreckenantrieb") + \
mg.get_value_of_object("flyer_f40", "RA_bi_abhebbar_unger_Schiene-Ansteuerung")
mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_bi_abhebbar_Korrektur") + \
mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_bi") + \
mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Doppelstreckenantrieb") + \
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
@@ -2160,11 +2208,42 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(mg.anzahl("Anzahl_Strecken/RSM"), 8)
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,
}
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 = {
"bedienstation_einfach_Zug_Wechseln": 9,
"Weiche": 16,
}
eas = EA(Anzahl_EAS)
eas = EA(Anzahl_EAS, mg)
self.assertEqual(eas.anzahl("bedienstation_einfach_Zug_Wechseln"), 9)
self.assertEqual(eas.anzahl("Weiche"), 16)
@@ -2187,10 +2266,32 @@ class TestObjectMethods(unittest.TestCase):
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)
eas = EA(Anzahl_EAS, mg)
self.assertEqual(eas.anzahl("Stopper"), 5)
self.assertEqual(eas.getE("Stopper"), 0)
@@ -2203,6 +2304,37 @@ class TestObjectMethods(unittest.TestCase):
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,
@@ -2216,11 +2348,11 @@ class TestObjectMethods(unittest.TestCase):
"RA_bidirektional": 3,
"RA_bidirektional_abhebbar": 3,
"RA_bidirektional_ohne_SPS_Ansteuerung": 4,
"RA_in_RSM_bi_Anzahl_Antriebe_je_Seite": 3,
"Doppelstreckenantrieb": 3,
"gemeinsame_Wendung": 1,
}
eas_alapresa = EA(Anzahl_EAS_A_La_Presa)
eas_alapresa = EA(Anzahl_EAS_A_La_Presa, mg)
self.assertEqual(eas_alapresa.gesamt_E(), 60)
self.assertEqual(eas_alapresa.gesamt_A(), 95)
@@ -2229,166 +2361,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(math.floor(res_eas_alapresa_E), 69)
self.assertEqual(math.floor(res_eas_alapresa_A), 109)
def test_HW_A_La_Presa(self):
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,
"RA_in_RSM_bi_Anzahl_Antriebe_je_Seite": 3,
"Doppelstreckenantrieb": 3,
"gemeinsame_Wendung": 1,
}
Anzahl_HW_A_La_Presa = {
# Material Anzahl
# Material in LL
# schaltschrank_anzahl
"schaltschrankgehäuse_und_zubehör": 1.2,
"einspeisungssatz": 1,
"kleinmaterial": 1,
# _Summe_Schaltschrank
# unterverteiler,
"unterverteilergehäuse_und_zubehör": 2,
"hauptschalter": 1,
"hauptschütz": 1,
"kleinmaterial_unterverteiler": 1,
# _Summe_Unterverteiler
# _Anzahl_Unterverteiler
"schnittstellenrelais": 6,
"antrieb_unidirektional_halbleiter": 9,
"antrieb_bidirektional_halbleiter": 13,
"antrieb_unidirektional_schütz": 0,
"antrieb_bidirektional_schütz": 0,
"motorschutzschalter": 0,
"gemeinsame_wendung": 1,
# _Summe_Motorstarter
"bedienstation_1fach": 9,
"bedienst_2fach_red": 0,
"bedienstation_2": 4,
"bedienstation_3": 0,
"bedienstation_4": 0,
"bedienstation_6": 0,
# _Summe_Bedienstationen
"panel_pc": 0,
"pc": 1,
"switch": 2,
"ewon_router_für_fernwartung": 1,
"drucker": 0,
# _Summe_PC
"profibus_asi_gateway_netzteil": 0,
"ein_ausgangsmodul": 0,
"blindverschlüsse": 0,
"asi_buskabel": 0,
"buskabel_24V": 0,
"extension_plug": 0,
"profibus_stecker": 0,
# _Summe_ASI_Hardware
# bis_64_E/A
# sps_hardware_vipa_100,
"cpu_114r_16de_8da": 0,
"mmc_512kb_memory_64": 0,
"eingangskarte_8de": 0,
"ausgangskarte_8da_bereits_integriert": 0,
"eingangskarte_16de": 0,
"ausgangskarte_16da_bereits_integriert": 0,
# bis_1.000_E_A
# sps_hardware_siemens_s7_300
"cpu_315_2_pn_dp_mit_ethernet": 1,
"cpu_315sn_net_vipa": 0,
"mmc_512kb_memory_1000": 1,
"cpu_317_2_pn_dp_mit_ethernet": 0,
"cpu_317sn_net_vipa": 0,
"cpu_319_2_pn_dp_mit_ethernet": 0,
"mmc_2mb_memory": 0,
"kommunikationsprozessor_cp_343_1": 0,
"et200m_anschaltung_im_153": 0,
"profibusstecker_je_1st_cpu_und_im153": 1,
"eingangskarte_sm_321_16de": 1,
"ausgangskarte_sm_322_16da": 1,
"frontstecker_für_ein_ausgangskarte_16": 2,
"eingangskarte_sm_321_32de": 2,
"ausgangskarte_sm_322_32da": 3,
"frontstecker_für_ein_ausgangskarte_32": 5,
# über_1.000_E_A
# sps_hardware_siemens_s7_400,
"cpu_414_2": 0,
"baugruppenträger_ur_1": 0,
"stromversorgung_ps405_230vac10A": 0,
"pufferbatterie": 0,
"speicherkarte_2_mb": 0,
"ethernet_anschaltung_cp443_1": 0,
"eingangskarte_sm_421_32de": 0,
"ausgangskarte_sm_422_32da": 0,
"frontstecker_für_ein_ausgangskarte": 0,
# _Summe_Material_in_LL
# Material_vor_Ort
"movimot_fu_mit_anschaltung": 0,
"trolleytraversensabfrage_optisch": 21,
"reflexionslichtschranke_rsm_direct": 0,
"stoppersensor_induktiv": 3,
"seilzugschalter": 0,
"blitzleuchte": 2,
"spulenumsetzstation": 0,
"sensorkabel_je_20m": 24,
"stopper_weichenkabel_je_5m": 25,
"motorkabel_je_40m": 22,
"kabelpritschen_leitern": 117,
"kabelpritsche_rsm": 0,
"klemmkasten_flyer_und_putzmaschine": 3,
"klemmkasten_direct_in_rsm": 0,
"erdung": 1,
"kleinteile": 1,
"sonstige_kabel_busleitung_etc": 1,
"zuleitung_unterverteiler_4x10_40m": 1,
"zuleitung_unterverteiler_7x4_40m": 1,
"profibuskabel": 1,
"schnittstellen_8x1mm": 3,
}
hw = HW(Anzahl_HW_A_La_Presa, EA(Anzahl_EAS_A_La_Presa))
self.assertEqual(hw.anzahl("schaltschrankgehäuse_und_zubehör"), 1.2)
self.assertEqual(hw.anzahl("einspeisungssatz"), 1)
self.assertEqual(hw.anzahl("kleinmaterial"), 1)
self.assertEqual(hw.anzahl("unterverteilergehäuse_und_zubehör"), 2)
self.assertEqual(hw.anzahl("hauptschalter"), 1)
self.assertEqual(hw.anzahl("hauptschütz"), 1)
self.assertEqual(hw.anzahl("kleinmaterial_unterverteiler"), 1)
self.assertEqual(hw.anzahl("schnittstellenrelais"), 6)
self.assertEqual(hw.anzahl("antrieb_unidirektional_halbleiter"), 9)
#self.assertEqual(hw.anzahl("antrieb_bidirektional_halbleiter"), 13)
#self.assertEqual(hw.anzahl("antrieb_unidirektional_schütz"), 0)
#self.assertEqual(hw.anzahl("antrieb_bidirektional_schütz"), 0)
self.assertEqual(hw.anzahl("motorschutzschalter"), 0)
self.assertEqual(hw.anzahl("gemeinsame_wendung"), 1)
#self.assertEqual(hw.anzahl("antrieb_bidirektional_halbleiter"), 13) #in HW korrekte Rechnung auskommentiert?
#self.assertEqual(hw.summe_in_LL(), 8727)
#self.assertEqual(hw.summe_vorort(), 5503)
#self.assertEqual(hw.summe_gesamt(), 14230)
def test_HW(self):
@@ -2679,7 +2652,7 @@ def test2():
"panel_pc": 1,
"antrieb_unidirektional_halbleiter": 1,
}
eas = EA(Anzahl_EAS)
eas = EA(Anzahl_EAS, mg)
hw = HW(Anzahl_HW, mg, eas)
emo_eingabe = {
"Schaltschrank_aufstellen": 1,