From 90ec5d091e4f5842f512839cdeea9d2917484484 Mon Sep 17 00:00:00 2001 From: luise jedlitschka Date: Tue, 31 Jan 2023 18:02:59 +0100 Subject: [PATCH] =?UTF-8?q?=C3=9Cberarbeitung=20Preise=20hw=20mit=20neuer?= =?UTF-8?q?=20Exceldatei,=20hw=20mengen=20und=20init=20erg=C3=A4nzt=20mit?= =?UTF-8?q?=20Exceldatei,=20Dienstleistung=20angefangen=20zu=20=C3=BCberar?= =?UTF-8?q?beiten=20und=20erg=C3=A4nzen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + rieter_ekalk.py | 2240 ++++++++++++++++++++++++----------------------- 2 files changed, 1150 insertions(+), 1091 deletions(-) diff --git a/.gitignore b/.gitignore index eaf8b02..91d37d5 100644 --- a/.gitignore +++ b/.gitignore @@ -158,3 +158,4 @@ cython_debug/ # rieter ekalk json outputs json_mengengeruest.json zusammenfassung_mengengeruest.json +*.xlsx diff --git a/rieter_ekalk.py b/rieter_ekalk.py index aff8136..74e519a 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -287,7 +287,8 @@ class MG(): self._turm._Mengen.get("Weiche", 0) zmengen["Dreifachweiche"] = self._rsm_direct._Mengen.get("Weiche_Gemeinsame_Rückstellung", 0) +\ self._flyer_f40._Mengen.get("Dreifachweiche", 0) +\ - self._flyer._Mengen.get("Dreifachweiche", 0) #TODO: ist "Weiche_Gemeinsame_Rückstellung" == "Dreifachweiche"? + self._flyer._Mengen.get("Dreifachweiche", 0) +\ + self._verbindungsstrecken_w.get("Dreifachweiche", 0) zmengen["Wechsel"] = self._flyer_f40._Mengen.get("Wechsel", 0) +\ self._flyer._Mengen.get("Wechsel", 0) zmengen["Stopper"] = self._flyer_f40._Mengen.get("Stopper", 0) @@ -907,7 +908,7 @@ class Turm(Item): -class EA(): +class EA(): def __init__(self, anzahl:dict, mg: type[MG]): # Eingänge und Ausgänge jeder Hardwareeinheit self.EAs = { @@ -928,7 +929,7 @@ class EA(): # Bedienstation, "bedienstation_1fach_Not_Aus": (1, 1), "bedienstation_einfach_Zug_Wechseln": (1, 1), - "bedienstation_automatische_Umfahrung": (1, 1), + "bedienstation_automatische_Umfahrung": (1, 1), # in Excel Drucktaster automatische Umfahrung? ansonsten fehlt in Excel "bedienstation_zweifach_Wechs_BCD_10f": (5, 1), "bedienstation_zweifach_Not_Aus_Reset": (2, 2), "bedienst_dreifach": (3, 3), @@ -977,8 +978,8 @@ 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_einfach_Zug_Wechseln"] = zmengen.get("Bedientableau_1fach", 0) + self._Anzahl["bedienstation_automatische_Umfahrung"] = math.ceil(zmengen.get("Drucktaster_automatische_Umfahrung", 0)/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) @@ -1065,6 +1066,10 @@ class EA(): def gesamt_E(self): res = 0 self.EAs + a = list(self._Anzahl.keys()) + a.sort() + with open('convert_.txt', 'w') as convert_file: + convert_file.write(json.dumps(self._Anzahl)) for k,n in self._Anzahl.items(): res += self.EAs[k][0] * n return res @@ -1078,20 +1083,18 @@ class EA(): def Anzahl_notwendigen_Siemens_EAKarten(self): SiemensS7_32DE = math.ceil(self.gesamt_E()/32) SiemensS7_32DA = math.ceil(self.gesamt_A()/32) - + return (SiemensS7_32DE, SiemensS7_32DA) class HW(): mengen = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - "schaltschrankgehaeuse_b1x800_zubehoer": 0, + "schaltschrankgehaeuse_b1x1200_zubehoer": 0, "schaltschrankgehaeuse_b2x800_zubehoer": 0, "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 0, "sps_simatic_s7_cpu315_2_pn_dp": 0, "speicherkarte_fuer_sps_512_kb": 0, - "comfort_panel_tp_900_mit_pn": 0, "sps_simatic_s7_cpu317_2_pn_dp": 0, "speicherkarte_fuer_sps2_mb": 0, - "sps_simatic_s7_1513_1": 0, "sps_simatic_s7_1515_2": 0, "sps_simatic_s7_1517_3": 0, "sps_simatic_s7_1518_4": 0, @@ -1104,7 +1107,12 @@ class HW(): "abgang_400v":0, "abgang_24_v":0, "anlagenrechner":0, + "anlagenrechner_ohne_bildschirm": 0, + "pulteinbau_monitor_srline_rflat_24fhd": 0, + "kurzhubtastatur_kbt06_mit_touchpad_uslayout": 0, + "netzwerk_display_adapter_lindy": 0, "zusaetzlicher_bildschirm":0, + "schaltschrank":0, #"unterverteiler_fuer_1neuenhauser_pm":0, "unterverteiler_fuer_1flyer":0, @@ -1113,12 +1121,12 @@ class HW(): "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine":0, "unterverteiler_fuer_puffer":0, - "unterverteiler_fuer_5_rsm_fa":0, + #"unterverteiler_fuer_5_rsm_fa":0, "korrektur_1_rsm_zusaetzlich_im_unterverteiler":0, - "unterverteiler_fuer_10_rsm_fa":0, + #"unterverteiler_fuer_10_rsm_fa":0, - "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":0, + #"unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":0, "korrektur_3_rsm_zusaetzlich_im_unterverteiler":0, "unterverteiler_fuer_4_rsm_direct":0, @@ -1135,143 +1143,151 @@ class HW(): "busverteiler_8_rsm_direct":0, "korrektur_busverteiler_8_rsm_zusaetzlich_im_unterverteiler":0, - "antrieb_unidirektional_halbleiter":0, - "antrieb_bidirektional_halbleiter":0, + #"antrieb_unidirektional_halbleiter":0, + #"antrieb_bidirektional_halbleiter":0, "antrieb_unidirektional_schuetz":0, "antrieb_bidirektional_schuetz":0, "motorschutzschalter":0, "wendeschuetzschaltung":0, - "frequenzumrichter":0, + #"frequenzumrichter":0, ## summe_motorstarter - "bedienstation_1fach_kpl":0, - "bedienst_2fach_wechs_bcd_10f":0, - "bedienstation_2fach_kpl":0, - "halter_bedienstation_2fach":0, - "bedienstation_3fach_kpl":0, - "halter_bedienstation_3fach":0, - "bedienstation_4fach_kpl":0, - "halter_bedienstation_4fach":0, - "bedienstation_6fach_kpl":0, - "halter_bedienstation_6fach":0, - "drucktaster_automatische_umfahrung":0, - "halter_fuer_drucktaster":0, - # summe_bedienstationen + # "bedienstation_1fach_kpl":0, + # "bedienst_2fach_wechs_bcd_10f":0, + # "bedienstation_2fach_kpl":0, + # "halter_bedientableau_2fach":0, + # "bedienstation_3fach_kpl":0, + # "halter_bedientableau_3fach":0, + # "bedienstation_4fach_kpl":0, + # "halter_bedientableau_4fach":0, + # "bedienstation_6fach_kpl":0, + # "halter_bedienstation_6fach":0, + # "drucktaster_automatische_umfahrung":0, + # "halter_fuer_drucktaster":0, + ## summe_bedienstationen - # ET200_SP - "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, - "et200_sp_eingangskarte_8_de":0, + "ET200_SP" + #"et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, + "korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, + #"et200_sp_eingangskarte_8_de":0, + "korrektur_et200_sp_eingangskarte_8_de":0, "et200_sp_eingangskarte_16_de":0, - "et200_sp_eingangskarte_8_do":0, + #"et200_sp_eingangskarte_8_do":0, + "korrektur_et200_sp_eingangskarte_8_do":0, "et200_sp_eingangskarte_16_do":0, - "et200_sp_base_unit_neue_last":0, - "et200_sp_base_unit_links_gebrueckt":0, - "et200_sp_base_unit_neue_last":0, - "et200_sp_base_unit_links_gebrueckt":0, + # "et200_sp_base_unit_neue_last":0, + "korrektur_et200_sp_base_unit_neue_last":0, ###f gedoppelt? + # "et200_sp_base_unit_links_gebrueckt":0, + # "et200_sp_base_unit_neue_last":0, + "korrektur_et200_sp_base_unit_neue_last":0, + # "et200_sp_base_unit_links_gebrueckt":0, + "korrektur_et200_sp_base_unit_links_gebrueckt":0, # SLIO - "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO":0, - "slio_eingangskarte_4_de":0, - "slio_eingangskarte_8_de":0, - "slio_ausgangskarte_4_do":0, - "slio_ausgangskarte_8_do":0, - "slio_power_modul":0, - "slio_4_x_dc_24v_4_x_dc_0v":0, - "slio_8_x_dc_24v":0, - "slio_8_x_dc_0v":0, + # "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO":0, + "korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, + # "slio_eingangskarte_4_de":0, + # "slio_eingangskarte_8_de":0, + # "slio_ausgangskarte_4_do":0, + # "slio_ausgangskarte_8_do":0, + # "slio_power_modul":0, + # "slio_4_x_dc_24v_4_x_dc_0v":0, + # "slio_8_x_dc_24v":0, + # "slio_8_x_dc_0v":0, # MATERIAL VOR ORT "movimot_fu_mit_anschaltung":0, - "sensor_optisch_traverse":0, - "sensorhalter_ohne_sensor_":0, - "reflexionslichtschranke_rsm_direct":0, - "stoppersensor_induktiv_mit_halter":0, - "sensor_spulenpruefung_voll_leer":0, - "seilzugschalter":0, + # "sensor_optisch_traverse":0, + # "sensorhalter_ohne_sensor_":0, + # "reflexionslichtschranke_rsm_direct":0, + # "stoppersensor_induktiv_mit_halter":0, + # "sensor_spulenpruefung_voll_leer":0, + # "seilzugschalter":0, "seil_fuer_seilzugschalter":0, - "blitzleuchte":0, - "spulenumsetzstation":0, - "sensorkabel_je_20m":0, - "stopper_weichenkabel_je_5m":0, - "motorkabel_je_30m":0, + # "blitzleuchte":0, + # "spulenumsetzstation":0, + # "sensorkabel_je_20m":0, + # "stopper_weichenkabel_je_5m":0, + # "motorkabel_je_30m":0, "kabelpritschen_leitern_200_60":0, "kabelpritsche_rsm_100_60":0, "kabelpritsche_rsm_50_35":0, - "klemmkasten_rsm":0, - "klemmkasten_direct_in_rsm":0, - "erdung":0, + # "klemmkasten_rsm":0, + # "klemmkasten_direct_in_rsm":0, + # "erdung":0, "kleinteile_rohre_schellen_kabelbinder_ect":0, - - "kabel_fuer_klemmkasten_und_bts_60m":0, - "zuleitung_75_m_unterverteiler_4x4mm2_400vac":0, - "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0, - "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":0, - "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm":0, - "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm":0, - "profinetkabel":0, - "schnittstellen_8x1mm2_30m":0, + # "kabel_fuer_klemmkasten_und_bts_60m":0, + # "kabel_fuer_1fach_bts_zug_wechseln":0, + # "zuleitung_75_m_unterverteiler_4x4mm2_400vac":0, + # "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0, + # "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":0, + # "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm":0, + # "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm":0, + # "profinetkabel":0, + # "schnittstellen_8x1mm2_30m":0, } # Einzelteilpreise in € ep = { # Schaltschrank Einzelpreis "schaltschrankgehaeuse_b1x800_zubehoer": 2000, # - "schaltschrankgehaeuse_b2x800_zubehoer": 4157, # 790821101 - "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 5135, # 790821102 - "sps_simatic_s7_cpu315_2_pn_dp": 1880, # 708003004 - "speicherkarte_fuer_sps_512_kb": 150, # 708003012 - "comfort_panel_tp_900_mit_pn": 1486, # 708001102 - "sps_simatic_s7_cpu317_2_pn_dp": 3324, # 708003007 - "speicherkarte_fuer_sps2_mb": 215, # 708003027 - "sps_simatic_s7_1513_1": 1143, # 790008100 - "sps_simatic_s7_1515_2": 1927, # 790008100 + "schaltschrankgehaeuse_b2x800_zubehoer": 4663, # 790821101 + "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 5721, # 790821102 + "sps_simatic_s7_cpu315_2_pn_dp": 2237, # 708003004 + "speicherkarte_fuer_sps_512_kb": 173, # 708003012 + "sps_simatic_s7_cpu317_2_pn_dp": 3957, # 708003007 + "speicherkarte_fuer_sps2_mb": 246, # 708003027 + "sps_simatic_s7_1515_2": 2174, # 790008100 "sps_simatic_s7_1517_3": 3828, # 790008101 - "sps_simatic_s7_1518_4": 5402, # 6ES7518-4AP00-0AB0 - "sps_et200_1512sp": 623, # 709000003 - "memory_card_256_mb": 250, # 708015093 - "memory_card_2_gb": 474, # 708015094 + "sps_simatic_s7_1518_4": 5892, # 6ES7518-4AP00-0AB0 + "sps_et200_1512sp": 706, # 709000003 + "memory_card_256_mb": 0, # 708015093 + "memory_card_2_gb": 516, # 708015094 "et200_sp_ea_ebene": 0, # 790009001 "netzwerk_fernwartung": 750, # 790011001 "abgang_400v": 250, # ---- "abgang_24_v": 250, # ---- - # "anlagenrechner": 1657, # 790011000 - "zusaetzlicher_bildschirm": 750, # + "anlagenrechner_ohne_bildschirm": 1487, # 1x 711003025 PC; 1x 711003026 Filter; 1x 711003111Softnet; 1x711003049 UPS + "pulteinbau_monitor_srline_rflat_24fhd": 1200, # 400009058 + "kurzhubtastatur_kbt06_mit_touchpad_uslayout": 350, # 400009057 + "netzwerk_display_adapter_lindy": 650, # + "zusaetzlicher_bildschirm": 1100, # # _summe_schaltschrank "unterverteiler_fuer_1neuenhauser_pm": 1000, # 790820210 "unterverteiler_fuer_1flyer": 1000, # 790820207_A - "unterverteiler_fuer_2flyer": 400, # 790820209_A - "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine": 700, # 790820210 - "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine": 1100, # 790820210 - "unterverteiler_fuer_puffer": 700, # 790820210_F + "unterverteiler_fuer_2flyer": 1000, # 790820209_A + "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine": 1000, # 790820210 + "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine": 1000, # 790820210 + "unterverteiler_fuer_puffer": 1000, # 790820210_F - "unterverteiler_fuer_5_rsm_fa": 700, # 790820210_D + "unterverteiler_fuer_5_rsm_fa": 1000, # 790820210_D # korrektur_1_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_10_rsm_fa": 800, # 790820210_F + "unterverteiler_fuer_10_rsm_fa": 1000, # 790820210_F # "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar": 1000, # 790820209_C # korrektur_3_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_4_rsm_direct": 5027, # 790820300 + "unterverteiler_fuer_4_rsm_direct": 5584, # 790820300 # korrektur_4_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_12_rsm_direct": 7930, # 790820302 + "unterverteiler_fuer_12_rsm_direct": 8258, # 790820302 # korrektur_12_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_8_rsm_direct": 6322, # 790820301 + "unterverteiler_fuer_8_rsm_direct": 6736, # 790820301 # korrektur_8_rsm_zusaetzlich_im_unterverteiler - "busverteiler_6_rsm_direct": 1818, # 790801002 + "busverteiler_6_rsm_direct": 1748, # 790801002 # korrektur_6_rsm_zusaetzlich_im_unterverteiler - "busverteiler_8_rsm_direct": 1818, # 790801001 + "busverteiler_8_rsm_direct": 2052, # 790801001 # korrektur_8_rsm_zusaetzlich_im_unterverteiler - "antrieb_unidirektional_halbleiter": 75, - "antrieb_bidirektional_halbleiter": 90, + "antrieb_unidirektional_halbleiter": 90, + "antrieb_bidirektional_halbleiter": 105, "antrieb_unidirektional_schuetz": 0, "antrieb_bidirektional_schuetz": 0, "motorschutzschalter": 0, @@ -1279,61 +1295,48 @@ class HW(): "frequenzumrichter": 250, # summe_motorstarter - "bedienstation_1fach_kpl": 51, - "bedienst_2fach_wechs_bcd_10f": 90, - "bedienstation_2fach_kpl": 92, # 790002021_A - "halter_bedienstation_2fach":0, - "bedienstation_3fach_kpl": 104, - "halter_bedienstation_3fach":0, - "bedienstation_4fach_kpl": 116, - "halter_bedienstation_4fach":0, - "bedienstation_10fach_kpl": 380, + "bedienstation_1fach_kpl": 59, + "bedienst_2fach_wechs_bcd_10f": 105, # 790002024 + "bedienstation_2fach_kpl": 66, # 790000020 + "halter_bedientableau_2fach": 42, # 825304006 + "bedienstation_3fach_kpl": 99, # 790000040 + "halter_bedientableau_3fach": 46, # 825304007 + "bedienstation_4fach_kpl": 121, # 790000045 + "halter_bedientableau_4fach": 52, # 825304003 + "bedienstation_6fach_kpl": 146, # 790000033 + "halter_bedientableau_6fach": 56, # 825304002 "drucktaster_automatische_umfahrung": 28, "halter_fuer_drucktaster": 33, # summe_bedienstationen - # bis: 1.000 E_A - "sps_hardware_siemens_s7": 1500, - "s7_1500_cpu_1515_2_pn_mit_ethernet": 1607, - "s7_1500_cpu_1517_3_pn_dp_mit_ethernet": 3366, - "s7_1500_mmc_12mb_": 205, - "simatic_pn_pn_coupler_6es7158_3ad10_0xa0_+_busadapter_ba_2xrj45": 354, - - "_et200_mp_im155_5_pn": 169, - "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45": 176, - "profinetstrecker_je_1st_cpu_und_im153": 12, - "s7_1500_eingangskarte_sm_321_16de": 146, - "s7_1500_ausgangskarte_sm_322_16da": 135, - "s7_1500_eingangskarte_sm_321_32de": 221, - "s7_1500_ausgangskarte_sm_322_32da": 269, - # _summe_sps_hardware - # ET200_SP - "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45": 185, # 709000006 - "et200_sp_eingangskarte_8_de": 30, # 709000021 - "et200_sp_eingangskarte_16_de": 54, # 709000022 - "et200_sp_eingangskarte_8_do": 45, # 709000031_A - "et200_sp_eingangskarte_16_do": 62, # 709000032 - "et200_sp_base_unit_neue_last": 20, # 709000014 - "et200_sp_base_unit_links_gebrueckt": 13, # 709000015 - "et200_sp_base_unit_neue_last": 17, # 709000011 - "et200_sp_base_unit_links_gebrueckt": 10, # 709000010 + "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45": 199, # 709000006 + # "korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" + "et200_sp_eingangskarte_8_de": 35, + # "korrektur_et200_sp_eingangskarte_8_de" # 709000021 + "et200_sp_eingangskarte_16_de": 58, # 709000022 + "et200_sp_eingangskarte_8_do": 46, # 709000031_A + "et200_sp_eingangskarte_16_do": 66, # 709000032 + "et200_sp_base_unit_neue_last": 23, # 709000014 + "et200_sp_base_unit_links_gebrueckt": 15, # 709000015 + "et200_sp_base_unit_neue_last": 19, # 709000011 + "et200_sp_base_unit_links_gebrueckt": 11, # 709000010 # SLIO - "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45": 155, # 709000500 - "slio_eingangskarte_4_de": 25, # 709000510 - "slio_eingangskarte_8_de": 33, # 709000511 - "slio_ausgangskarte_4_do": 30, # 709000021 - "slio_ausgangskarte_8_do": 36, # 709000021 + "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45": 175, # 709000500 + "slio_eingangskarte_4_de": 31, # 709000510 + "slio_eingangskarte_8_de": 38, # 709000511 + "slio_ausgangskarte_4_do": 39, # 709000021 + "slio_ausgangskarte_8_do": 46, # 709000021 "slio_power_modul": 18, # 709000014 - "slio_4_x_dc_24v_4_x_dc_0v": 13, # 709000015 - "slio_8_x_dc_24v": 13, # 709000011 + "slio_4_x_dc_24v_4_x_dc_0v": 18, # 709000015 + "slio_8_x_dc_24v": 138, # 709000011 "slio_8_x_dc_0v": 13, # 709000010 # Summe_material_in_ll # MATERIAL VOR ORT "movimot_fu_mit_anschaltung": 550, - "sensor_optisch_traverse": 25, # 827072200 + "sensor_optisch_traverse": 27, # 827072200 "sensorhalter_ohne_sensor_": 8, # 827072xxx "reflexionslichtschranke_rsm_direct": 45, # 827072207 "stoppersensor_induktiv_mit_halter": 63, # 827072205 @@ -1342,25 +1345,26 @@ class HW(): "seil_fuer_seilzugschalter": 0.40, "blitzleuchte": 72, # 790000006 "spulenumsetzstation": 0, - "sensorkabel_je_20m": 20, # 722001xxx - "stopper_weichenkabel_je_5m": 15, # 722001xxx - "motorkabel_je_30m": 23, - "kabelpritschen_leitern_200_60": 12, - "kabelpritsche_rsm_100_60": 11, # 715000020 - "kabelpritsche_rsm_50_35": 7, # 715003010 + "sensorkabel_je_20m": 25, # 722001xxx + "stopper_weichenkabel_je_5m": 20, # 722001xxx + "motorkabel_je_30m": 26, + "kabelpritschen_leitern_200_60": 15, + "kabelpritsche_rsm_100_60": 12, # 715000020 + "kabelpritsche_rsm_50_35": 9, # 715003010 "klemmkasten_rsm": 120, - "klemmkasten_direct_in_rsm": 97, # 790000703 - "erdung": 9, - "kleinteile_rohre_schellen_kabelbinder_ect": 500, + "klemmkasten_direct_in_rsm": 122, # 790000703 + "erdung": 13, + "kleinteile_rohre_schellen_kabelbinder_ect": 750, - "kabel_fuer_klemmkasten_und_bts_60m": 37, - "zuleitung_75_m_unterverteiler_4x4mm2_400vac": 146, - "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc": 450, - "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc": 250, - "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm": 145, - "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm": 136, - "profinetkabel": 42, - "schnittstellen_8x1mm2_30m": 25, + "kabel_fuer_klemmkasten_und_bts_60m": 145, + "kabel_fuer_1fach_bts_zug_wechseln": 50, + "zuleitung_75_m_unterverteiler_4x4mm2_400vac": 146, # 725000050 + "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc": 450, # 725000057 + "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc": 280, # 725000057 + "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm": 145, # 725000007 + "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm": 136, # 725000004 + "profinetkabel": 42, # 726001xxx + "schnittstellen_8x1mm2_30m": 35, # 725000019 } @@ -1386,6 +1390,7 @@ class HW(): "erdung", "kleinteile_rohre_schellen_kabelbinder_ect", "kabel_fuer_klemmkasten_und_bts_60m", + "kabel_fuer_1fach_bts_zug_wechseln", "zuleitung_75_m_unterverteiler_4x4mm2_400vac", "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", @@ -1398,35 +1403,36 @@ 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_b1x1200_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x1200_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["memory_card_256_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb") + \ + anzahl.get("sps_simatic_s7_1515_2") + \ + anzahl.get("sps_simatic_s7_1517_3") + \ + anzahl.get("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"] = 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["anlagenrechner_ohne_bildschirm"] = anzahl.get("anlagenrechner_ohne_bildschirm", 0) + self._anzahl["pulteinbau_monitor_srline_rflat_24fhd"] = anzahl.get("pulteinbau_monitor_srline_rflat_24fhd", 0) + self._anzahl["kurzhubtastatur_kbt06_mit_touchpad_uslayout"] = anzahl.get("kurzhubtastatur_kbt06_mit_touchpad_uslayout", 0) + self._anzahl["netzwerk_display_adapter_lindy"] = anzahl.get("netzwerk_display_adapter_lindy", 0) self._anzahl["zusaetzlicher_bildschirm"] = anzahl.get("zusaetzlicher_bildschirm", 0) # end Violett - + self._anzahl["schaltschrank"] = anzahl.get("schaltschrank", 0) self._anzahl["unterverteiler_fuer_1neuenhauser_pm"] = mg.get_deckblatt_value("RSM") self._anzahl["unterverteiler_fuer_1flyer"] = anzahl.get("unterverteiler_fuer_1flyer", 0) @@ -1439,11 +1445,12 @@ class HW(): 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) - + self._anzahl["unterverteiler_fuer_5_rsm_fa"] = math.ceil(num_rsms/5) + anzahl.get("korrektur_5_rsm_zusaetzlich_im_unterverteiler", 0) + # TODO "korrektur_5_rsm_zusaetzlich_im_unterverteiler" 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) + self._anzahl["unterverteiler_fuer_10_rsm_fa"] = math.ceil(num_rsms/10) + anzahl.get("korrektur_10_rsm_zusaetzlich_im_unterverteiler", 0) + # TODO "korrektur_10_rsm_zusaetzlich_im_unterverteiler" 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) @@ -1453,24 +1460,22 @@ class HW(): # "korrektur_4_rsm_zusaetzlich_im_unterverteiler" - self._anzahl["unterverteiler_fuer_12_rsm_direct"] = mg.get_deckblatt_value("RSM") /12. + self._anzahl["unterverteiler_fuer_12_rsm_direct"] = math.ceil(mg.get_deckblatt_value("RSM") /12) + anzahl.get("korrektur_12_rsm_zusaetzlich_im_unterverteiler", 0) # "korrektur_12_rsm_zusaetzlich_im_unterverteiler" # 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" + self._anzahl["busverteiler_6_rsm_direct"] = math.ceil(mg.get_deckblatt_value("RSM") /6) + anzahl.get("korrektur_6_rsm_zusaetzlich_im_unterverteiler", 0) # "korrektur_6_rsm_zusaetzlich_im_unterverteiler" - # "busverteiler_8_rsm_direct" + self._anzahl["busverteiler_8_rsm_direct"] = math.ceil(mg.get_deckblatt_value("RSM") /8) + anzahl.get("korrektur_8_rsm_zusaetzlich_im_unterverteiler", 0) # "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") - # 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") @@ -1488,61 +1493,113 @@ class HW(): 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") + mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RA_bi_abhebbar_unger_Schiene-Ansteuerung") ###f rsm oder flyer? - self._anzahl["antrieb_bidirektional_halbleiter"] = motoren_bi_flyer_f40 + motoren_uni_rsm_direct + 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" - self._anzahl["frequenzumrichter"] = eas.anzahl("frequenzumrichter") + self._anzahl["frequenzumrichter"] = eas.anzahl.get("frequenzumrichter", 0) # # 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" + self._anzahl["bedienstation_1fach_kpl"] = eas.anzahl.get("bedienstation_1fach_Not_Aus", 0) + eas.anzahl.get("bedienstation_einfach_Zug_Wechseln", 0) ###f "bedienstation_1fach_Not_Aus" keine Anzahl + self._anzahl["bedienst_2fach_wechs_bcd_10f"] = eas.anzahl.get("bedienst_2fach_wechs_bcd_10f", 0) + self._anzahl["bedienstation_2fach_kpl"] = eas.anzahl.get("bedienstation_2fach_kpl", 0) + self._anzahl["halter_bedientableau_2fach"] = anzahl.get("bedienstation_2fach_kpl", 0) + self._anzahl["bedienstation_3fach_kpl"] = eas.anzahl.get("bedienstation_3fach_kpl", 0) + self._anzahl["halter_bedientableau_3fach"] = anzahl.get("bedienstation_3fach_kpl", 0) + self._anzahl["bedienstation_4fach_kpl"] = eas.anzahl.get("bedienstation_4fach_kpl", 0) + self._anzahl["halter_bedientableau_4fach"] = anzahl.get("bedienstation_4fach_kpl", 0) + self._anzahl["bedienstation_6fach_kpl"] = eas.anzahl.get("bedienstation_6fach_kpl", 0) + self._anzahl["halter_bedientableau_6fach"] = anzahl.get("bedienstation_6fach_kpl", 0) + self._anzahl["drucktaster_automatische_umfahrung"] = mg.zusammenfassung().get("Drucktaster_automatische_Umfahrung", 0) + self._anzahl["halter_fuer_drucktaster"] = anzahl.get("drucktaster_automatische_umfahrung", 0) # # 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" + # # ET200_SP ###f wird eingegeben + self._anzahl["et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et200_sp_ea_ebene", 0) * 2 * anzahl.get("schaltschrank", 0) +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) +\ + anzahl.get("unterverteiler_fuer_puffer", 0) +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) +\ + anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0)) + self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) + self._anzahl["et200_sp_eingangskarte_8_de"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 3 +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) * 3 +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) * 7 +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 5 +\ + anzahl.get("unterverteiler_fuer_puffer", 0) * 5 +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) * 8 +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) * 4 +\ + anzahl.get("korrektur_et200_sp_eingangskarte_8_de", 0) +\ + mg.zusammenfassung().get("Kreuzungsweiche")) + self._anzahl["korrektur_et200_sp_eingangskarte_8_de"] = anzahl.get("korrektur_et200_sp_eingangskarte_8_de", 0) + self._anzahl["et200_sp_eingangskarte_16_de"] = anzahl.get("et200_sp_eingangskarte_16_de", 0) + self._anzahl["et200_sp_eingangskarte_8_do"] = anzahl.get("ET200_SP", 0) * (math.ceil(anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) * 6 +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) * 6 +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) * 5 +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 5 +\ + anzahl.get("unterverteiler_fuer_puffer", 0) * 7 +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) * 6 +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) * 9 / 1,5 ,0) +\ + anzahl.get("korrektur_et200_sp_eingangskarte_8_do", 0) +\ + mg.zusammenfassung().get("Kreuzungsweiche") * 2) + self._anzahl["korrektur_et200_sp_eingangskarte_8_do"] = anzahl.get("korrektur_et200_sp_eingangskarte_8_do", 0) + self._anzahl["et200_sp_eingangskarte_16_do"] = anzahl.get("et200_sp_eingangskarte_16_do", 0) + self._anzahl["et200_sp_base_unit_neue_last"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) * 2 +\ + anzahl.get("korrektur_et200_sp_base_unit_neue_last", 0)) + self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = anzahl.get("korrektur_et200_sp_base_unit_neue_last", 0) + self._anzahl["et200_sp_base_unit_links_gebrueckt"] = anzahl.get("ET200_SP", 0) * (math.ceil(anzahl.get("et200_sp_eingangskarte_8_de", 0) +\ + anzahl.get("et200_sp_eingangskarte_8_do", 0), 0) -\ + anzahl.get("et200_sp_base_unit_neue_last", 0)) + + self._anzahl["et200_sp_base_unit_neue_last"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) * 2 +\ + anzahl.get("korrektur_et200_sp_base_unit_neue_last", 0)) + self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = anzahl.get("korrektur_et200_sp_base_unit_neue_last", 0) - # "_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 + self._anzahl["et200_sp_base_unit_links_gebrueckt"] = anzahl.get("ET200_SP", 0) * ( math.ceil(anzahl.get("et200_sp_eingangskarte_16_de", 0) +\ + anzahl.get("et200_sp_eingangskarte_16_do", 0), 0) -\ + anzahl.get("et200_sp_base_unit_neue_last", 0) +\ + anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0)) + self._anzahl["korrektur_et200_sp_base_unit_links_gebrueckt"] = anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0) - # # 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 ###f eingabewert - # # SLIO - # "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" - # "slio_eingangskarte_4_de" + self._anzahl["et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = anzahl.get("SLIO", 0) * (anzahl.get("et200_sp_ea_ebene", 0) +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) +\ + anzahl.get("unterverteiler_fuer_puffer", 0) +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) +\ + anzahl.get("unterverteiler_fuer_4_rsm_direct", 0) +\ + anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\ + anzahl.get("busverteiler_6_rsm_direct", 0) +\ + anzahl.get("busverteiler_8_rsm_direct", 0) +\ + anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0)) + self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) + self._anzahl["slio_eingangskarte_4_de"] = anzahl.get("SLIO", 0) * (anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 6 +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) * 8 +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) * 6 +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) * 14 +\$B$48*6+$B$51*13+$B$54*9+$B$57*7+$B$61*15+$B$65*16+$B$72*4+$B$76*7+$B$84*16+H127) # "slio_eingangskarte_8_de" # "slio_ausgangskarte_4_do" # "slio_ausgangskarte_8_do" @@ -1654,17 +1711,15 @@ class HW(): return res def summe_h_schaltschrank(self): - """ gibt dies Summer der Stunden zur Montage des Schaltschranks zurück""" + """ gibt die Summer der Stunden zur Montage des Schaltschranks zurück""" keys_schaltschrank = [ - "schaltschrankgehaeuse_b1x800_zubehoer", + "schaltschrankgehaeuse_b1x1200_zubehoer" "schaltschrankgehaeuse_b2x800_zubehoer", "schaltschrankgehaeuse_b1x1200+1x800_zubehoer", "sps_simatic_s7_cpu315_2_pn_dp", "speicherkarte_fuer_sps_512_kb", - "comfort_panel_tp_900_mit_pn", "sps_simatic_s7_cpu317_2_pn_dp", "speicherkarte_fuer_sps2_mb", - "sps_simatic_s7_1513_1", "sps_simatic_s7_1515_2", "sps_simatic_s7_1517_3", "sps_simatic_s7_1518_4", @@ -1676,6 +1731,10 @@ class HW(): "abgang_400v", "abgang_24_v", "anlagenrechner", + "anlagenrechner_ohne_bildschirm", + "pulteinbau_monitor_srline_rflat_24fhd", + "kurzhubtastatur_kbt06_mit_touchpad_uslayout", + "netzwerk_display_adapter_lindy", "zusaetzlicher_bildschirm", ] @@ -1700,7 +1759,7 @@ class Dienstleistung(): #"Erstellen_E_Montageunterlagen": 1, # Test_und_Installation - "PC_Installation": 0, + # "PC_Installation": 0, #"Oberfläche_Simulation": 0, #"SPS_Test_im_Haus_Simulation": 0, ## Dokumentation @@ -1725,10 +1784,10 @@ class Dienstleistung(): # "Pflichtenheft_Autom_Schnittstellen": 0, ## Hardwareplanung - FaktorLayout = 0.15 - FaktorSchaltplan = 0.55 - FaktorProjektkoord = 0.05 - FaktorDispo = 0.15 + FaktorLayout = 0.25 + FaktorSchaltplan = 0.6 + FaktorProjektkoord = 0.15 + FaktorDispo = 0.2 FaktorAbstimmung = 0.05 FaktorMontageUnterlagen = 0.05 self._Hours["Erstellung_Steuerungslayout"] = hw.summe_h_unterverteiler() * FaktorLayout @@ -1738,8 +1797,10 @@ class Dienstleistung(): self._Hours["Abstimmung_mit_E_Werkstatt"] = hw.summe_h_unterverteiler() * FaktorAbstimmung self._Hours["Erstellen_E_Montageunterlagen"] = hw.summe_h_unterverteiler() * FaktorMontageUnterlagen # Test_und_Installation - self._Hours["PC_Installation"] = 0 # TODO woher kommt das? - self._Hours["Oberfläche_Simulation" ] = 0 # was heisst hier bedingt ändern? + self._Hours["PC_Installation"] = hw.anzahl("anlagenrechner") * (hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer") +\ + hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer") +\ + hw.anzahl("schaltschrankgehaeuse_b1x1200+1x800_zubehoer")) * 8 + self._Hours["Oberfläche_Simulation"] = 0 # was heisst hier bedingt ändern? self._Hours["SPS_Test_im_Haus_Simulation"] = 0 ## Dokumentation self._Hours["Bedienerhandbuch"] = 0 @@ -1750,7 +1811,7 @@ class Dienstleistung(): self._Hours["Schaltschrankbau"] = hw.summe_h_schaltschrank() self._Hours["Unterverteilerbau"] = 0 self._Hours["Klemmkastenbau_je_2h"] = 0 - self._Hours["Bedientableaubau"] = 0 + self._Hours["Bedientableaubau"] = 0 #hw.#=$HW.M97+$HW.M98+$HW.M99+$HW.M101+$HW.M103+$HW.M105+$HW.M107 self._Hours["Vormontage_im_Haus"] = 0 # TODO: Nur bedingt ändern? @@ -1802,10 +1863,10 @@ class EMO(): "Weiche_Stopper_anschliessen": 0, "Erdung": 0, } - self._Mengen = {} #TODO: Namensgebung für dict Keys aus HW() und EA() anpassen, wenn Klassen fertiggestellt sind - self._Mengen["Schaltschrank_aufstellen"] = self.montagezeiten.get("Schaltschrank_aufstellen", 0) * (hw.anzahl("schaltschrank_und_zubehör_b_1_800") +\ - hw.anzahl("schaltschrank_und_zubehör_b_2_800") +\ - hw.anzahl("schaltschrank_und_zubehör_b_1_1200_1_800")) + self._Mengen = {} + self._Mengen["Schaltschrank_aufstellen"] = self.montagezeiten.get("Schaltschrank_aufstellen", 0) * (hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer") +\ + hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer") +\ + hw.anzahl("schaltschrankgehaeuse_b1x1200+1x800_zubehoer")) self._Mengen["Unterverteiler_montieren"] = math.ceil(self.montagezeiten.get("Unterverteiler_montieren", 0) * hw.anzahl("75_m_Zuleitung_Unterverteiler_4x4_400VAC")) self._Mengen["Pritsche_montieren_umbauen_demontieren"] = math.ceil(hw.anzahl("kabelpritschen_leitern_200_60")/self.montagezeiten.get("Pritsche_montieren_umbauen_demontieren", 0)) self._Mengen["Pritsche_in_RSM_montieren"] = math.ceil(hw.anzahl("kabelpritsche_rsm_100_60")/self.montagezeiten.get("Pritsche_in_RSM_montieren", 0)) @@ -1820,10 +1881,8 @@ class EMO(): 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")) - #TODO: "Schnittstelle_Flyer_Putzmaschine" Werte aus Mengengerüst Fragwürdig; EAs!B53 keine Formel hinterlegt + self._Mengen["Schnittstelle_Flyer_Putzmaschine"] = ea.anzahl("Schnittstelle_Putzmaschine_EJet") +\ + ea.anzahl("Schnittstelle_Putzmaschine_Neuenhauser") self._Mengen["Sensoren_montieren"] = math.ceil(self.montagezeiten.get("Sensoren_montieren", 0) * hw.anzahl("sensorkabel_je_20m")) self._Mengen["Seilzugschalter_installieren"] = math.ceil(self.montagezeiten.get("Seilzugschalter_installieren", 0) * ea.anzahl("Seilzugschalter")) @@ -1831,861 +1890,11 @@ class EMO(): self._Mengen["Weiche_Stopper_anschliessen"] = math.ceil(self.montagezeiten.get("Weiche_Stopper_anschliessen", 0) * ea.anzahl("stopper_weichenkabel_je_5m")) self._Mengen["Erdung"] = math.ceil(self.montagezeiten.get("Erdung", 0) * hw.anzahl("75_m_Zuleitung_Unterverteiler_4x4_400VAC")) - print(self._Mengen) + #print(self._Mengen) class TestObjectMethods(unittest.TestCase): - - def test_deckblatt(self): - deckblatt_eingabe = { - "SYSTEM":"fa", - "RSM":13, - "Flyer":7, - "Flyer_Puffer":13, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine":4, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3, - "Neuenhauser-Putzmaschine":11, - "Neuenhauser-Putzmaschine_Vorpuffer":12, - "Neuenhauser-Putzmaschine_Nachpuffer":14, - "Cason-Putzmaschine":0, - "Cason-Putzmaschine_Vorpuffer":0, - "Cason-Putzmaschine_Nachpuffer":0, - "Puffer":5, - "Anzahl_der_Pufferstrecken_pro_Puffer":11, - "Begegnungsstrecke_Bypass":0, - "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, - "Sensor_optisch_Traverse":4, - #"Lichtschranke_Traverse":0, - #"Bedientableau_2fach":0, - "Bedientableau_2fach_Korrektur":4, - #"Bedientableau_2fach_Direct":0, - #"Weiche":0, - "Weiche_Korrektur":4, - #"Weiche_Gemeinsame_Rückstellung":0, - "Weiche_Gemeinsame_Rückstellung_Korrektur":4, - #"RA_bi_abhebbar":0, - "RA_bi_abhebbar_Korrektur":4, - #"Doppelstreckenantrieb":0, - #"gemeinsame_Wendung":0, - #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":4, - #"Hauptschalter_Ein_Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":4, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":4, - } - rsm_fa_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl_RSM":0, - #"Automatische_Umfahrung":0, # 'Automatische_Umfahrung' und 'Flex_A_Premium' sind eine Zelle -> identischer Wert - "Flex_A_Premium":False, - "Getriebe_in_der_Mitte":True, - "RSM_Einfahrt_Ein_Beidseitig":True, - #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_zusätzlich":3, - "Sensor_optisch_Traverse_Korrektur":3, - #"Bedientableau_1fach":0, - "Bedientableau_1fach_Korrektur":3, - #"Bedientableau_2fach":0, - "Bedientableau_2fach_Korrektur":3, - #"Weiche":0, - "Weiche_Korrektur":3, - #"RRA_bi":0, - "RRA_bi_Korrektur":3, - "RRA_bi_auf_Haupstrecke":3, - #"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_Korrektur":3, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":3, - } - flyer_f40_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl":0, - #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, #wird in deckblatt-Klasse berechnet - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":2, - #"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, - "Nachpuffer":True, - #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":3, - #"Sensor_induktiv_Spulenhalter":0, - "Sensor_induktiv_Spulenhalter_Korrektur":2, - #"Bedientableau_2fach":0, - "Bedientableau_2fach_Korrektur":3, - #"Interface_Doffer":0, - "Interface_Doffer_Korrektur":2, - #"Weiche":0, - "Weiche_Korrektur":3, - #"Weiche_nach_Flyer_bipolar":0, - "Weiche_nach_Flyer_bipolar_Korrektur":2, - "Dreifachweiche":7, - "Wechsel":6, - "Stopper":5, - "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, - #"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_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_Korrektur":2, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":3, - } - neuenhauser_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl":0, - #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen - #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen - #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen - #"Anzahl_Vorstaustrecken":0, - #"Anzahl_Nachstaustrecken":0, - #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":3, - #"Sensorik_Zugpositionierung":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, - #"RA_uni_abhebbar":0, - "RA_uni_abhebbar_Korrektur":3, - #"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_Korrektur":3, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":2, - } - flyer_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl":0, - #"Flyer":0, # äquivalent zu 'Anzahl' - #"Anzahl_Schienen:":0, - #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":3, - #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, - #"Bedientableau_2fach":0, - #"Interface_Doffer":0, - #"Weiche":0, - "Weiche_Korrektur":4, - #"Weiche_nach_Flyer_bipolar":0, - "Weiche_nach_Flyer_bipolar_Korrektur":3, - "Dreifachweiche":3, - #"Wechsel":0, - "Wechsel_Korrektur":4, - #"RA_bi_ohne_SPS-Ansteuerung":0, - #"RA_bi_abhebbar":0, - "RA_bi_abhebbar_Korrektur":3, - "RA_bi":3, - #"Doppelstreckenantrieb":0, - "RA_bi_abhebbar_unger_Schiene":4, - #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":3, - #"Hauptschalter_Ein_Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":4, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":3, - } - puffer_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl":0, - #"Puffer":0, #äquivalent zu Anzahl - #"Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken - #"Anzahl_Staustrecken":0, - #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":5, - #"Weiche":0, - "Weiche_Korrektur":6, - "RA_bi_ungerade_Schiene":7, - #"Doppelstreckenantrieb":0, - #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":6, - #"Hauptschalter_Ein_Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":5, - } - turm_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl":0, - #"Turm":0, #äquivalent zu Anzahl - #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken - #"Anzahl_Staustrecken":0, - #"Sensor_optisch_Traverse":0, - #"Weiche":0, - #"RA_bi":0, - "RA_bi_Korrektur":5, - #"RA_bi_ohne_SPS":0, - "RA_bi_ohne_SPS_Korrektur":6, - #"Bedientableau_2fach":0, - } - - - deckblatt = MG(deckblatt_eingabe, - rsm_direct=rsm_direct_eingabe, - rsm_fa=rsm_fa_eingabe, - flyer_f40=flyer_f40_eingabe, - neuenhauser=neuenhauser_eingabe, - flyer=flyer_eingabe, - #verbindungsstrecken_w=, - puffer=puffer_eingabe, - turm=turm_eingabe) - #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("Sensor_optisch_Traverse"), 4) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Lichtschranke_Traverse"), 78) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2fach"), 6) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2fach_Direct"), 13) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Weiche"), 56) - # self.assertEqual(deckblatt._rsm_direct.anzahl("Weiche_Gemeinsame_Rückstellung"), 6) - # self.assertEqual(deckblatt._rsm_direct.anzahl("RA_bi_abhebbar"), 9) - # 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("Werma_Rundumleuchte_Störung"), 6) - - # self.assertEqual(deckblatt._rsm_fa.anzahl("Anzahl_RSM"), 13) - # self.assertEqual(deckblatt._rsm_fa.anzahl("Sensor_optisch_Traverse"), 32) - # self.assertEqual(deckblatt._rsm_fa.anzahl("Sensor_optisch_Traverse_zusätzlich"), 3) - # self.assertEqual(deckblatt._rsm_fa.anzahl("Bedientableau_1fach"), 29) - # self.assertEqual(deckblatt._rsm_fa.anzahl("Bedientableau_2fach"), 5) - # 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("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("Werma_Rundumleuchte_Störung"), 5) - - self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl"), 6) - self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl_Schienen"), 5) - #self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_optisch_Traverse"), 80) # TODO: Wenn Nachpuffer == True, dann wird Sensor_optisch_Traverse_Korrektur doppelt addiert => =WENN(B49="ja";B46*(B47*1)+(B46*5)+(B56*2);B46*(B47*1)+(B46*7)+(B56*2))+C50 - self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_induktiv_Spulenhalter"), 14) - self.assertEqual(deckblatt._flyer_f40.anzahl("Bedientableau_2fach"), 9) - self.assertEqual(deckblatt._flyer_f40.anzahl("Interface_Doffer"), 8) - self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche"), 39) - self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche_nach_Flyer_bipolar"), 8) - self.assertEqual(deckblatt._flyer_f40.anzahl("Dreifachweiche"), 7) - self.assertEqual(deckblatt._flyer_f40.anzahl("Wechsel"), 6) - 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("RRA_BI_abhebbar"), 9) - 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("Werma_Rundumleuchte_Störung"), 9) - - self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl"), 11) - self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Vorstaustrecken"), 12) - 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("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("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("Doppelstreckenantrieb"), 143) - self.assertEqual(deckblatt._neuenhauser.anzahl("Meldelampe_Überstrom"), 13) - 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) - self.assertEqual(deckblatt._flyer.anzahl("Anzahl_Schienen"), 13) - self.assertEqual(deckblatt._flyer.anzahl("Sensor_optisch_Traverse"), 206) - self.assertEqual(deckblatt._flyer.anzahl("Sensor_induktiv_Spulenalter_Zug_positionierung"), 7) - self.assertEqual(deckblatt._flyer.anzahl("Bedientableau_2fach"), 7) - self.assertEqual(deckblatt._flyer.anzahl("Interface_Doffer"), 7) - self.assertEqual(deckblatt._flyer.anzahl("Weiche"), 95) - self.assertEqual(deckblatt._flyer.anzahl("Weiche_nach_Flyer_bipolar"), 7) - self.assertEqual(deckblatt._flyer.anzahl("Wechsel"), 11) - self.assertEqual(deckblatt._flyer.anzahl("Dreifachweiche"), 3) - self.assertEqual(deckblatt._flyer.anzahl("RA_bi_ohne_SPS-Ansteuerung"), 7) - 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("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("Doppelstreckenantrieb"), 25) - self.assertEqual(deckblatt._puffer.anzahl("Meldelampe_Überstrom"), 11) - self.assertEqual(deckblatt._puffer.anzahl("Hauptschalter_Ein_Meldung"), 10) - - self.assertEqual(deckblatt._turm.anzahl("Anzahl"), 2) - self.assertEqual(deckblatt._turm.anzahl("Anzahl_Staustrecken"), 5) - self.assertEqual(deckblatt._turm.anzahl("Weiche"), 6) - self.assertEqual(deckblatt._turm.anzahl("RA_bi"), 9) - self.assertEqual(deckblatt._turm.anzahl("RA_bi_ohne_SPS"), 26) - self.assertEqual(deckblatt._turm.anzahl("Bedientableau_2fach"), 4) - ''' - self.assertEqual(deckblatt._turm.anzahl("Anzahl"), 2) - self.assertEqual(deckblatt._turm.anzahl("Anzahl_Staustrecken"), 5) - self.assertEqual(deckblatt._turm.anzahl("Weiche"), 6) - self.assertEqual(deckblatt._turm.anzahl("RA_bi"), 9) - self.assertEqual(deckblatt._turm.anzahl("RA_bi_ohne_SPS"), 26) - self.assertEqual(deckblatt._turm.anzahl("Bedientableau_2fach"), 4) - - 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, - } - 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 = 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": 2, - "Neuenhauser-Putzmaschine_Nachpuffer": 2, - } - 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"), 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"), 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"), 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"], 7) - 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"], 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) - 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"], 18) - self.assertEqual(zmengen["gemeinsame_Wendung"], 2) - self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 21) - - def test_EA(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, - } - 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, - "bedienst_sechsfach": 1, - "EAs_Unterverteiler_direct": 10, - } - eas = EA(Anzahl_EAS, mg) - - ### first test the input channels - 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.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) - - # 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) - - ### then the output channels ### - self.assertEqual(eas.getA("Bedienelemente_Steuerschrank"), 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) - - # 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) - - - # Test of Sum. - self.assertEqual(eas.get_SE("bedienstation_1fach_Not_Aus"), 0) - self.assertEqual(eas.get_SE("bedienstation_einfach_Zug_Wechseln"), 0) - self.assertEqual(eas.get_SE("bedienstation_automatische_Umfahrung"), 0) - self.assertEqual(eas.get_SE("bedienstation_zweifach_Wechs_BCD_10f"), 50) - self.assertEqual(eas.get_SE("bedienstation_zweifach_Not_Aus_Reset"), 4) - self.assertEqual(eas.get_SE("bedienst_dreifach"), 0) - self.assertEqual(eas.get_SE("bedienst_vierfach"), 0) - self.assertEqual(eas.get_SE("bedienst_sechsfach"), 6) - self.assertEqual(eas.get_SE("EAs_Unterverteiler_direct"), 70) - - # Ermittlung_Mengengeruest_Anzahl - self.assertEqual(eas.get_SE("Sensor_Traversenabfrage_optisch"), 11) - self.assertEqual(eas.get_SE("Reflexionslichtschranke_RSM_DIRECT"), 60) - self.assertEqual(eas.get_SE("Sensor_Stopper_induktiv"), 2) - self.assertEqual(eas.get_SE("Seilzugschalter"), 0) - - self.assertEqual(eas.get_SE("Weiche"), 0) - self.assertEqual(eas.get_SE("Weiche_nach_PM_bipolar"), 0) - self.assertEqual(eas.get_SE("gemeinsame_Weichenrueckstellung"), 0) - self.assertEqual(eas.get_SE("Dreifach_Weiche_DIRECT"), 0) - self.assertEqual(eas.get_SE("Kreuzungsweiche"), 0) - self.assertEqual(eas.get_SE("Stopper"), 0) - self.assertEqual(eas.get_SE("Ventil_RA_3_2_abhebbar"), 0) - self.assertEqual(eas.get_SE("Ventil_Doppelstreckenantrieb_5_2_abhebbar"), 0) - self.assertEqual(eas.get_SE("Blitzleuchte_Stoerung"), 0) - - 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) # TODO Check EA Ausgabe - self.assertEqual(eas.get_SE("FEldbux_UV_EinAusgang"), 2) - - self.assertEqual(eas.get_SE("Spulenumsetzstation"), 0) - - self.assertEqual(eas.get_SE("RA_unidirektional"), 0) - self.assertEqual(eas.get_SE("RA_unidirektional_abhebbar"), 0) - self.assertEqual(eas.get_SE("RA_unidirektional_mit_gemeinsamer_Wendung"), 0) - self.assertEqual(eas.get_SE("RA_unidirektional_ohne_SPS_Ansteuerung"), 0) - self.assertEqual(eas.get_SE("RA_bidirektional"), 0) - self.assertEqual(eas.get_SE("RA_bidirektional_abhebbar"), 0) - self.assertEqual(eas.get_SE("RA_bidirektional_abhebbar_gemeinsWend"), 0) - self.assertEqual(eas.get_SE("RA_bidirektional_ohne_SPS_Ansteuerung"), 0) - self.assertEqual(eas.get_SE("RA_in_RSM_bidirektional"), 0) - self.assertEqual(eas.get_SE("Doppelstreckenantrieb"), 0) - self.assertEqual(eas.get_SE("Doppelstreckenantriebgemeinsame_Wendung"), 0) - self.assertEqual(eas.get_SE("gemeinsame_Wendung"), 0) - self.assertEqual(eas.get_SE("Frequenzumrichter"), 0) - - ### output #### - self.assertEqual(eas.get_SA("bedienstation_1fach_Not_Aus"), 0) - self.assertEqual(eas.get_SA("bedienstation_einfach_Zug_Wechseln"), 0) - self.assertEqual(eas.get_SA("bedienstation_automatische_Umfahrung"), 0) - self.assertEqual(eas.get_SA("bedienstation_zweifach_Wechs_BCD_10f"), 10) - self.assertEqual(eas.get_SA("bedienstation_zweifach_Not_Aus_Reset"), 4) - self.assertEqual(eas.get_SA("bedienst_dreifach"), 0) - self.assertEqual(eas.get_SA("bedienst_vierfach"), 0) - self.assertEqual(eas.get_SA("bedienst_sechsfach"), 6) - self.assertEqual(eas.get_SA("EAs_Unterverteiler_direct"), 60) - - # Ermittlung_Mengengeruest_Anzahl - self.assertEqual(eas.get_SA("Sensor_Traversenabfrage_optisch"), 0) - self.assertEqual(eas.get_SA("Reflexionslichtschranke_RSM_DIRECT"), 0) - self.assertEqual(eas.get_SA("Sensor_Stopper_induktiv"), 0) - self.assertEqual(eas.get_SA("Seilzugschalter"), 0) - - self.assertEqual(eas.get_SA("Weiche"), 44) - self.assertEqual(eas.get_SA("Weiche_nach_PM_bipolar"), 0) - self.assertEqual(eas.get_SA("gemeinsame_Weichenrueckstellung"), 0) - self.assertEqual(eas.get_SA("Dreifach_Weiche_DIRECT"), 2) - self.assertEqual(eas.get_SA("Kreuzungsweiche"), 0) - self.assertEqual(eas.get_SA("Stopper"), 0) - self.assertEqual(eas.get_SA("Ventil_RA_3_2_abhebbar"), 5) - self.assertEqual(eas.get_SA("Ventil_Doppelstreckenantrieb_5_2_abhebbar"), 164) - self.assertEqual(eas.get_SA("Blitzleuchte_Stoerung"), 3) - - 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("FEldbux_UV_EinAusgang"), 1) - - self.assertEqual(eas.get_SA("Spulenumsetzstation"), 0) - - self.assertEqual(eas.get_SA("RA_unidirektional"), 0) - 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"), 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) - self.assertEqual(eas.get_SA("RA_in_RSM_bidirektional"), 0) - self.assertEqual(eas.get_SA("Doppelstreckenantrieb"), 164) - self.assertEqual(eas.get_SA("Doppelstreckenantriebgemeinsame_Wendung"), 0) - self.assertEqual(eas.get_SA("gemeinsame_Wendung"), 0) - self.assertEqual(eas.get_SA("Frequenzumrichter"), 0) - - # Zusammenfassung - self.assertEqual(eas.gesamt_E(), 231) - self.assertEqual(eas.gesamt_A(), 490) - - - - def test_EA_implicit(self): - 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, - # } - # mg = MG(deckblatt, {}) - # eas = EA(Anzahl_EAS) - # hw = HW(Anzahl_HW, eas) - - # hw = HW(Anzahl_HW, mg, eas) - # self.assertEqual(hw.anzahl("hauptschalter"), 2) - # self.assertEqual(hw.anzahl("panel_pc"), 1) - # print (hw) - # #self.assertEqual(hw.anzahl("antrieb_unidirektional_halbleiter"), 1) - # self.assertEqual(hw.summe_gesamt(), 460.736) - # self.assertEqual(hw.summe_in_LL(), 294) - # self.assertEqual(hw.summe_vorort(), 166.736) - pass - - - def test_DL(self): - # Anzahl_EAS = { - # "bedienstation_einfach_Zug_Wechseln": 9, - # "Weiche": 16, - # } - pass - - + def test_A_JayJay(self): # Anzahl der für das Projekt benutzten Anzahl_MG = { @@ -3013,8 +2222,8 @@ class TestObjectMethods(unittest.TestCase): } eas = EA(Anzahl_EAS, mg) - eas.gesamt_E() - eas.gesamt_A() + # eas.gesamt_E() + # eas.gesamt_A() # Prüfe die Summe aller Eingänge und Ausgänge für jeden Elementtyp @@ -3066,15 +2275,20 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(eas.get_SEA('gemeinsame_Wendung'), (0, 0)) self.assertEqual(eas.get_SEA('Frequenzumrichter'), (0, 0)) - eas.Anzahl_notwendigen_Siemens_EAKarten() + # self.assertEqual(eas.gesamt_E(), 152) + # self.assertEqual(eas.gesamt_A(), 216) + self.assertEqual(eas.get_SEA('Frequenzumrichter'), (0, 0)) + (eingänge, ausgänge) = eas.Anzahl_notwendigen_Siemens_EAKarten() + self.assertEqual(eingänge, 5) + self.assertEqual(ausgänge, 7) Anzahl_HW = { "hauptschalter": 2, "panel_pc": 1, "antrieb_unidirektional_halbleiter": 1, } - + hw = HW(Anzahl_HW, mg, eas) emo_eingabe = { "Schaltschrank_aufstellen": 1, @@ -3093,6 +2307,850 @@ class TestObjectMethods(unittest.TestCase): emo = EMO(eas, hw, mg) + # def test_deckblatt(self): + # deckblatt_eingabe = { + # "SYSTEM":"fa", + # "RSM":13, + # "Flyer":7, + # "Flyer_Puffer":13, + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine":4, + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3, + # "Neuenhauser-Putzmaschine":11, + # "Neuenhauser-Putzmaschine_Vorpuffer":12, + # "Neuenhauser-Putzmaschine_Nachpuffer":14, + # "Cason-Putzmaschine":0, + # "Cason-Putzmaschine_Vorpuffer":0, + # "Cason-Putzmaschine_Nachpuffer":0, + # "Puffer":5, + # "Anzahl_der_Pufferstrecken_pro_Puffer":11, + # "Begegnungsstrecke_Bypass":0, + # "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, + # "Sensor_optisch_Traverse":4, + # #"Lichtschranke_Traverse":0, + # #"Bedientableau_2fach":0, + # "Bedientableau_2fach_Korrektur":4, + # #"Bedientableau_2fach_Direct":0, + # #"Weiche":0, + # "Weiche_Korrektur":4, + # #"Weiche_Gemeinsame_Rückstellung":0, + # "Weiche_Gemeinsame_Rückstellung_Korrektur":4, + # #"RA_bi_abhebbar":0, + # "RA_bi_abhebbar_Korrektur":4, + # #"Doppelstreckenantrieb":0, + # #"gemeinsame_Wendung":0, + # #"Meldelampe_Überstrom":0, + # "Meldelampe_Überstrom_Korrektur":4, + # #"Hauptschalter_Ein_Meldung":0, + # "Hauptschalter_Ein-Meldung_Korrektur":4, + # #"Werma_Rundumleuchte_Störung":0, + # "Werma_Rundumleuchte_Störung_Korrektur":4, + # } + # rsm_fa_eingabe = { + # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + # #"Anzahl_RSM":0, + # #"Automatische_Umfahrung":0, # 'Automatische_Umfahrung' und 'Flex_A_Premium' sind eine Zelle -> identischer Wert + # "Flex_A_Premium":False, + # "Getriebe_in_der_Mitte":True, + # "RSM_Einfahrt_Ein_Beidseitig":True, + # #"Sensor_optisch_Traverse":0, + # "Sensor_optisch_Traverse_zusätzlich":3, + # "Sensor_optisch_Traverse_Korrektur":3, + # #"Bedientableau_1fach":0, + # "Bedientableau_1fach_Korrektur":3, + # #"Bedientableau_2fach":0, + # "Bedientableau_2fach_Korrektur":3, + # #"Weiche":0, + # "Weiche_Korrektur":3, + # #"RRA_bi":0, + # "RRA_bi_Korrektur":3, + # "RRA_bi_auf_Haupstrecke":3, + # #"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_Korrektur":3, + # #"Werma_Rundumleuchte_Störung":0, + # "Werma_Rundumleuchte_Störung_Korrektur":3, + # } + # flyer_f40_eingabe = { + # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + # #"Anzahl":0, + # #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, #wird in deckblatt-Klasse berechnet + # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":2, + # #"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, + # "Nachpuffer":True, + # #"Sensor_optisch_Traverse":0, + # "Sensor_optisch_Traverse_Korrektur":3, + # #"Sensor_induktiv_Spulenhalter":0, + # "Sensor_induktiv_Spulenhalter_Korrektur":2, + # #"Bedientableau_2fach":0, + # "Bedientableau_2fach_Korrektur":3, + # #"Interface_Doffer":0, + # "Interface_Doffer_Korrektur":2, + # #"Weiche":0, + # "Weiche_Korrektur":3, + # #"Weiche_nach_Flyer_bipolar":0, + # "Weiche_nach_Flyer_bipolar_Korrektur":2, + # "Dreifachweiche":7, + # "Wechsel":6, + # "Stopper":5, + # "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, + # #"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_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_Korrektur":2, + # #"Werma_Rundumleuchte_Störung":0, + # "Werma_Rundumleuchte_Störung_Korrektur":3, + # } + # neuenhauser_eingabe = { + # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + # #"Anzahl":0, + # #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen + # #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen + # #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen + # #"Anzahl_Vorstaustrecken":0, + # #"Anzahl_Nachstaustrecken":0, + # #"Sensor_optisch_Traverse":0, + # "Sensor_optisch_Traverse_Korrektur":3, + # #"Sensorik_Zugpositionierung":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, + # #"RA_uni_abhebbar":0, + # "RA_uni_abhebbar_Korrektur":3, + # #"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_Korrektur":3, + # #"Werma_Rundumleuchte_Störung":0, + # "Werma_Rundumleuchte_Störung_Korrektur":2, + # } + # flyer_eingabe = { + # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + # #"Anzahl":0, + # #"Flyer":0, # äquivalent zu 'Anzahl' + # #"Anzahl_Schienen:":0, + # #"Sensor_optisch_Traverse":0, + # "Sensor_optisch_Traverse_Korrektur":3, + # #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, + # #"Bedientableau_2fach":0, + # #"Interface_Doffer":0, + # #"Weiche":0, + # "Weiche_Korrektur":4, + # #"Weiche_nach_Flyer_bipolar":0, + # "Weiche_nach_Flyer_bipolar_Korrektur":3, + # "Dreifachweiche":3, + # #"Wechsel":0, + # "Wechsel_Korrektur":4, + # #"RA_bi_ohne_SPS-Ansteuerung":0, + # #"RA_bi_abhebbar":0, + # "RA_bi_abhebbar_Korrektur":3, + # "RA_bi":3, + # #"Doppelstreckenantrieb":0, + # "RA_bi_abhebbar_unger_Schiene":4, + # #"Meldelampe_Überstrom":0, + # "Meldelampe_Überstrom_Korrektur":3, + # #"Hauptschalter_Ein_Meldung":0, + # "Hauptschalter_Ein-Meldung_Korrektur":4, + # #"Werma_Rundumleuchte_Störung":0, + # "Werma_Rundumleuchte_Störung_Korrektur":3, + # } + # puffer_eingabe = { + # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + # #"Anzahl":0, + # #"Puffer":0, #äquivalent zu Anzahl + # #"Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken + # #"Anzahl_Staustrecken":0, + # #"Sensor_optisch_Traverse":0, + # "Sensor_optisch_Traverse_Korrektur":5, + # #"Weiche":0, + # "Weiche_Korrektur":6, + # "RA_bi_ungerade_Schiene":7, + # #"Doppelstreckenantrieb":0, + # #"Meldelampe_Überstrom":0, + # "Meldelampe_Überstrom_Korrektur":6, + # #"Hauptschalter_Ein_Meldung":0, + # "Hauptschalter_Ein-Meldung_Korrektur":5, + # } + # turm_eingabe = { + # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + # #"Anzahl":0, + # #"Turm":0, #äquivalent zu Anzahl + # #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken + # #"Anzahl_Staustrecken":0, + # #"Sensor_optisch_Traverse":0, + # #"Weiche":0, + # #"RA_bi":0, + # "RA_bi_Korrektur":5, + # #"RA_bi_ohne_SPS":0, + # "RA_bi_ohne_SPS_Korrektur":6, + # #"Bedientableau_2fach":0, + # } + + + # deckblatt = MG(deckblatt_eingabe, + # rsm_direct=rsm_direct_eingabe, + # rsm_fa=rsm_fa_eingabe, + # flyer_f40=flyer_f40_eingabe, + # neuenhauser=neuenhauser_eingabe, + # flyer=flyer_eingabe, + # #verbindungsstrecken_w=, + # puffer=puffer_eingabe, + # turm=turm_eingabe) + # #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("Sensor_optisch_Traverse"), 4) + # # self.assertEqual(deckblatt._rsm_direct.anzahl("Lichtschranke_Traverse"), 78) + # # self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2fach"), 6) + # # self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2fach_Direct"), 13) + # # self.assertEqual(deckblatt._rsm_direct.anzahl("Weiche"), 56) + # # self.assertEqual(deckblatt._rsm_direct.anzahl("Weiche_Gemeinsame_Rückstellung"), 6) + # # self.assertEqual(deckblatt._rsm_direct.anzahl("RA_bi_abhebbar"), 9) + # # 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("Werma_Rundumleuchte_Störung"), 6) + + # # self.assertEqual(deckblatt._rsm_fa.anzahl("Anzahl_RSM"), 13) + # # self.assertEqual(deckblatt._rsm_fa.anzahl("Sensor_optisch_Traverse"), 32) + # # self.assertEqual(deckblatt._rsm_fa.anzahl("Sensor_optisch_Traverse_zusätzlich"), 3) + # # self.assertEqual(deckblatt._rsm_fa.anzahl("Bedientableau_1fach"), 29) + # # self.assertEqual(deckblatt._rsm_fa.anzahl("Bedientableau_2fach"), 5) + # # 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("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("Werma_Rundumleuchte_Störung"), 5) + + # self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl"), 6) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl_Schienen"), 5) + # #self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_optisch_Traverse"), 80) # TODO: Wenn Nachpuffer == True, dann wird Sensor_optisch_Traverse_Korrektur doppelt addiert => =WENN(B49="ja";B46*(B47*1)+(B46*5)+(B56*2);B46*(B47*1)+(B46*7)+(B56*2))+C50 + # self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_induktiv_Spulenhalter"), 14) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Bedientableau_2fach"), 9) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Interface_Doffer"), 8) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche"), 39) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche_nach_Flyer_bipolar"), 8) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Dreifachweiche"), 7) + # self.assertEqual(deckblatt._flyer_f40.anzahl("Wechsel"), 6) + # 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("RRA_BI_abhebbar"), 9) + # 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("Werma_Rundumleuchte_Störung"), 9) + + # self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl"), 11) + # self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Vorstaustrecken"), 12) + # 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("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("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("Doppelstreckenantrieb"), 143) + # self.assertEqual(deckblatt._neuenhauser.anzahl("Meldelampe_Überstrom"), 13) + # 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) + # self.assertEqual(deckblatt._flyer.anzahl("Anzahl_Schienen"), 13) + # self.assertEqual(deckblatt._flyer.anzahl("Sensor_optisch_Traverse"), 206) + # self.assertEqual(deckblatt._flyer.anzahl("Sensor_induktiv_Spulenalter_Zug_positionierung"), 7) + # self.assertEqual(deckblatt._flyer.anzahl("Bedientableau_2fach"), 7) + # self.assertEqual(deckblatt._flyer.anzahl("Interface_Doffer"), 7) + # self.assertEqual(deckblatt._flyer.anzahl("Weiche"), 95) + # self.assertEqual(deckblatt._flyer.anzahl("Weiche_nach_Flyer_bipolar"), 7) + # self.assertEqual(deckblatt._flyer.anzahl("Wechsel"), 11) + # self.assertEqual(deckblatt._flyer.anzahl("Dreifachweiche"), 3) + # self.assertEqual(deckblatt._flyer.anzahl("RA_bi_ohne_SPS-Ansteuerung"), 7) + # 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("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("Doppelstreckenantrieb"), 25) + # self.assertEqual(deckblatt._puffer.anzahl("Meldelampe_Überstrom"), 11) + # self.assertEqual(deckblatt._puffer.anzahl("Hauptschalter_Ein_Meldung"), 10) + + # self.assertEqual(deckblatt._turm.anzahl("Anzahl"), 2) + # self.assertEqual(deckblatt._turm.anzahl("Anzahl_Staustrecken"), 5) + # self.assertEqual(deckblatt._turm.anzahl("Weiche"), 6) + # self.assertEqual(deckblatt._turm.anzahl("RA_bi"), 9) + # self.assertEqual(deckblatt._turm.anzahl("RA_bi_ohne_SPS"), 26) + # self.assertEqual(deckblatt._turm.anzahl("Bedientableau_2fach"), 4) + # ''' + # self.assertEqual(deckblatt._turm.anzahl("Anzahl"), 2) + # self.assertEqual(deckblatt._turm.anzahl("Anzahl_Staustrecken"), 5) + # self.assertEqual(deckblatt._turm.anzahl("Weiche"), 6) + # self.assertEqual(deckblatt._turm.anzahl("RA_bi"), 9) + # self.assertEqual(deckblatt._turm.anzahl("RA_bi_ohne_SPS"), 26) + # self.assertEqual(deckblatt._turm.anzahl("Bedientableau_2fach"), 4) + + # 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, + # } + # 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 = 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": 2, + # "Neuenhauser-Putzmaschine_Nachpuffer": 2, + # } + # 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"), 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"), 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"), 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"], 7) + # 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"], 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) + # 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"], 18) + # self.assertEqual(zmengen["gemeinsame_Wendung"], 2) + # self.assertEqual(zmengen["Gesamtanzahl_Antriebe"], 21) + + # def test_EA(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, + # } + # 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, + # "bedienst_sechsfach": 1, + # "EAs_Unterverteiler_direct": 10, + # } + # eas = EA(Anzahl_EAS, mg) + + + # ### first test the input channels + # 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.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) + + # # 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) + + # ### then the output channels ### + # self.assertEqual(eas.getA("Bedienelemente_Steuerschrank"), 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) + + # # 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) + + + # # Test of Sum. + # self.assertEqual(eas.get_SE("bedienstation_1fach_Not_Aus"), 0) + # self.assertEqual(eas.get_SE("bedienstation_einfach_Zug_Wechseln"), 0) + # self.assertEqual(eas.get_SE("bedienstation_automatische_Umfahrung"), 0) + # self.assertEqual(eas.get_SE("bedienstation_zweifach_Wechs_BCD_10f"), 50) + # self.assertEqual(eas.get_SE("bedienstation_zweifach_Not_Aus_Reset"), 4) + # self.assertEqual(eas.get_SE("bedienst_dreifach"), 0) + # self.assertEqual(eas.get_SE("bedienst_vierfach"), 0) + # self.assertEqual(eas.get_SE("bedienst_sechsfach"), 6) + # self.assertEqual(eas.get_SE("EAs_Unterverteiler_direct"), 70) + + # # Ermittlung_Mengengeruest_Anzahl + # self.assertEqual(eas.get_SE("Sensor_Traversenabfrage_optisch"), 11) + # self.assertEqual(eas.get_SE("Reflexionslichtschranke_RSM_DIRECT"), 60) + # self.assertEqual(eas.get_SE("Sensor_Stopper_induktiv"), 2) + # self.assertEqual(eas.get_SE("Seilzugschalter"), 0) + + # self.assertEqual(eas.get_SE("Weiche"), 0) + # self.assertEqual(eas.get_SE("Weiche_nach_PM_bipolar"), 0) + # self.assertEqual(eas.get_SE("gemeinsame_Weichenrueckstellung"), 0) + # self.assertEqual(eas.get_SE("Dreifach_Weiche_DIRECT"), 0) + # self.assertEqual(eas.get_SE("Kreuzungsweiche"), 0) + # self.assertEqual(eas.get_SE("Stopper"), 0) + # self.assertEqual(eas.get_SE("Ventil_RA_3_2_abhebbar"), 0) + # self.assertEqual(eas.get_SE("Ventil_Doppelstreckenantrieb_5_2_abhebbar"), 0) + # self.assertEqual(eas.get_SE("Blitzleuchte_Stoerung"), 0) + + # 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) # TODO Check EA Ausgabe + # self.assertEqual(eas.get_SE("FEldbux_UV_EinAusgang"), 2) + + # self.assertEqual(eas.get_SE("Spulenumsetzstation"), 0) + + # self.assertEqual(eas.get_SE("RA_unidirektional"), 0) + # self.assertEqual(eas.get_SE("RA_unidirektional_abhebbar"), 0) + # self.assertEqual(eas.get_SE("RA_unidirektional_mit_gemeinsamer_Wendung"), 0) + # self.assertEqual(eas.get_SE("RA_unidirektional_ohne_SPS_Ansteuerung"), 0) + # self.assertEqual(eas.get_SE("RA_bidirektional"), 0) + # self.assertEqual(eas.get_SE("RA_bidirektional_abhebbar"), 0) + # self.assertEqual(eas.get_SE("RA_bidirektional_abhebbar_gemeinsWend"), 0) + # self.assertEqual(eas.get_SE("RA_bidirektional_ohne_SPS_Ansteuerung"), 0) + # self.assertEqual(eas.get_SE("RA_in_RSM_bidirektional"), 0) + # self.assertEqual(eas.get_SE("Doppelstreckenantrieb"), 0) + # self.assertEqual(eas.get_SE("Doppelstreckenantriebgemeinsame_Wendung"), 0) + # self.assertEqual(eas.get_SE("gemeinsame_Wendung"), 0) + # self.assertEqual(eas.get_SE("Frequenzumrichter"), 0) + + # ### output #### + # self.assertEqual(eas.get_SA("bedienstation_1fach_Not_Aus"), 0) + # self.assertEqual(eas.get_SA("bedienstation_einfach_Zug_Wechseln"), 0) + # self.assertEqual(eas.get_SA("bedienstation_automatische_Umfahrung"), 0) + # self.assertEqual(eas.get_SA("bedienstation_zweifach_Wechs_BCD_10f"), 10) + # self.assertEqual(eas.get_SA("bedienstation_zweifach_Not_Aus_Reset"), 4) + # self.assertEqual(eas.get_SA("bedienst_dreifach"), 0) + # self.assertEqual(eas.get_SA("bedienst_vierfach"), 0) + # self.assertEqual(eas.get_SA("bedienst_sechsfach"), 6) + # self.assertEqual(eas.get_SA("EAs_Unterverteiler_direct"), 60) + + # # Ermittlung_Mengengeruest_Anzahl + # self.assertEqual(eas.get_SA("Sensor_Traversenabfrage_optisch"), 0) + # self.assertEqual(eas.get_SA("Reflexionslichtschranke_RSM_DIRECT"), 0) + # self.assertEqual(eas.get_SA("Sensor_Stopper_induktiv"), 0) + # self.assertEqual(eas.get_SA("Seilzugschalter"), 0) + + # self.assertEqual(eas.get_SA("Weiche"), 44) + # self.assertEqual(eas.get_SA("Weiche_nach_PM_bipolar"), 0) + # self.assertEqual(eas.get_SA("gemeinsame_Weichenrueckstellung"), 0) + # self.assertEqual(eas.get_SA("Dreifach_Weiche_DIRECT"), 2) + # self.assertEqual(eas.get_SA("Kreuzungsweiche"), 0) + # self.assertEqual(eas.get_SA("Stopper"), 0) + # self.assertEqual(eas.get_SA("Ventil_RA_3_2_abhebbar"), 5) + # self.assertEqual(eas.get_SA("Ventil_Doppelstreckenantrieb_5_2_abhebbar"), 164) + # self.assertEqual(eas.get_SA("Blitzleuchte_Stoerung"), 3) + + # 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("FEldbux_UV_EinAusgang"), 1) + + # self.assertEqual(eas.get_SA("Spulenumsetzstation"), 0) + + # self.assertEqual(eas.get_SA("RA_unidirektional"), 0) + # 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"), 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) + # self.assertEqual(eas.get_SA("RA_in_RSM_bidirektional"), 0) + # self.assertEqual(eas.get_SA("Doppelstreckenantrieb"), 164) + # self.assertEqual(eas.get_SA("Doppelstreckenantriebgemeinsame_Wendung"), 0) + # self.assertEqual(eas.get_SA("gemeinsame_Wendung"), 0) + # self.assertEqual(eas.get_SA("Frequenzumrichter"), 0) + + # Zusammenfassung + # self.assertEqual(eas.gesamt_E(), 152) + # self.assertEqual(eas.gesamt_A(), 216) + + # def test_EA_implicit(self): + # 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, + # } + # mg = MG(deckblatt, {}) + # eas = EA(Anzahl_EAS) + # hw = HW(Anzahl_HW, eas) + + # hw = HW(Anzahl_HW, mg, eas) + # self.assertEqual(hw.anzahl("hauptschalter"), 2) + # self.assertEqual(hw.anzahl("panel_pc"), 1) + # print (hw) + # #self.assertEqual(hw.anzahl("antrieb_unidirektional_halbleiter"), 1) + # self.assertEqual(hw.summe_gesamt(), 460.736) + # self.assertEqual(hw.summe_in_LL(), 294) + # self.assertEqual(hw.summe_vorort(), 166.736) + + #def test_DL(self): + # Anzahl_EAS = { + # "bedienstation_einfach_Zug_Wechseln": 9, + # "Weiche": 16, + # } + def test_Unittests():