From 44da168c6a2eb3a37012a09ec2934722875d67a5 Mon Sep 17 00:00:00 2001 From: "m.stangl" Date: Fri, 1 Apr 2022 19:12:16 +0200 Subject: [PATCH] =?UTF-8?q?HW=20Klasse=20neu=20=C3=BCberarbeitet.=20Keys?= =?UTF-8?q?=20aus=20Excel=20importiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + rieter_ekalk.py | 1121 +++++++++++++++++++++++++++-------------------- 2 files changed, 636 insertions(+), 486 deletions(-) diff --git a/.gitignore b/.gitignore index 8e43369..60ba882 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] +*.py~ *$py.class # C extensions diff --git a/rieter_ekalk.py b/rieter_ekalk.py index 0180902..98d7c6d 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -35,6 +35,7 @@ class MG(): # wenn Puffer, dann mindestens 2 Strecken # Bypass, wenn mindestens 2 Flyer oder 2 RSM # Turm: kein Kriterium + self._deckblatt = deckblatt self._RSM_Anzahl = deckblatt.get("RSM", 0) rsm_direct_mengen = rsm_direct rsm_direct_mengen["Anzahl"] = self._RSM_Anzahl #übernahme aus deckblatt @@ -77,6 +78,29 @@ class MG(): self._turm = Turm(turm_mengen) + def get_deckblatt(self, key): + # deckblatt_eingabe = { + # "SYSTEM":"", + # "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, + # } + pass + def getresult(self): res = { @@ -944,59 +968,206 @@ class EA(): return res class HW(): + mengen = { + #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + "schaltschrankgehaeuse_b1x800_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, + "sps_et200_1512sp": 0, + #"memory_card_256_mb": 0 + #"memory_card_2_gb": 0 + "memory_card_2_gb":0, + "et200_sp_ea_ebene":0, + "netzwerk_fernwartung":0, + "abgang_400v":0, + "abgang_24_v":0, + "anlagenrechner":0, + "zusaetzlicher_bildschirm":0, + + #"unterverteiler_fuer_1neuenhauser_pm":0, + "unterverteiler_fuer_1flyer":0, + "unterverteiler_fuer_2flyer":0, + "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine":0, + "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine":0, + "unterverteiler_fuer_puffer":0, + + "unterverteiler_fuer_5_rsm_fa":0, + "korrektur_1_rsm_zusaetzlich_im_unterverteiler":0, + + "unterverteiler_fuer_10_rsm_fa":0, + + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":0, + "korrektur_3_rsm_zusaetzlich_im_unterverteiler":0, + + "unterverteiler_fuer_4_rsm_direct":0, + "korrektur_4_rsm_zusaetzlich_im_unterverteiler":0, + + "unterverteiler_fuer_12_rsm_direct":0, + "korrektur_12_rsm_zusaetzlich_im_unterverteiler":0, + "unterverteiler_fuer_8_rsm_direct":0, + "korrektur_8_rsm_zusaetzlich_im_unterverteiler":0, + + "busverteiler_6_rsm_direct":0, + "korrektur_6_rsm_zusaetzlich_im_unterverteiler":0, + + "busverteiler_8_rsm_direct":0, + "korrektur_8_rsm_zusaetzlich_im_unterverteiler":0, + + "antrieb_unidirektional_halbleiter":0, + "antrieb_bidirektional_halbleiter":0, + "antrieb_unidirektional_schuetz":0, + "antrieb_bidirektional_schuetz":0, + "motorschutzschalter":0, + "wendeschuetzschaltung":0, + "frequenzumrichter":0, + ## summe_motorstarter + + "bedienstation_1fach_kpl":0, + "bedienst_2fach_wechs_bcd_10f":0, + "bedienstation_2fach_kpl":0, + "bedienstation_3fach_kpl":0, + "bedienstation_4fach_kpl":0, + "bedienstation_10fach_kpl":0, + "drucktaster_automatische_umfahrung":0, + "halter_fuer_drucktaster":0, + # summe_bedienstationen + + # bis:0, + "sps_hardware_siemens_s7":0, + "s7_1500_cpu_1515_2_pn_mit_ethernet":0, + "s7_1500_cpu_1517_3_pn_dp_mit_ethernet":0, + "s7_1500_mmc_12mb_":0, + "simatic_pn_pn_coupler_6es7158_3ad10_0xa0_+_busadapter_ba_2xrj45":0, + + "_et200_mp_im155_5_pn":0, + "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, + "profinetstrecker_je_1st_cpu_und_im153":0, + "s7_1500_eingangskarte_sm_321_16de":0, + "s7_1500_ausgangskarte_sm_322_16da":0, + "s7_1500_eingangskarte_sm_321_32de":0, + "s7_1500_ausgangskarte_sm_322_32da":0, + # _summe_sps_hardware + + # ET200_SP + "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, + "et200_sp_eingangskarte_8_de":0, + "et200_sp_eingangskarte_16_de":0, + "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, + + # SLIO + "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, + # Summe_material_in_ll + + # 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, + "seil_fuer_seilzugschalter":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, + "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, + } + # Einzelteilpreise in € ep = { # Schaltschrank Einzelpreis - "schaltschrankgehaeuse_b1x800_zubehoer": 2000, - "schaltschrankgehaeuse_b2x800_zubehoer": 4157, - "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 5135, - "sps_simatic_s7_cpu315-2_pn_dp": 1880, - "speicherkarte_fuer_sps: 512_kb": 150, - "comfort_panel_tp_900_mit_pn": 1486, - "sps_simatic_s7_cpu317-2_pn_dp": 3324, - "speicherkarte_fuer_sps2_mb": 215, - "sps_simatic_s7_1513-1": 1143, - "sps_simatic_s7_1515-2": 1927, - "sps_simatic_s7_1517-3": 3828, - "sps_simatic_s7_1518-4": 5402, - "sps_et200_1512sp": 623, - "memory-card-256_mb": 250, - "memory-card-2_gb": 474, - "et200-sp_ea-ebene": 0, - "netzwerk-fernwartung": 750, - "abgang_400v": 250, - "abgang_24_v": 250, + "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 + "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 + "et200_sp_ea_ebene": 0, # 790009001 + "netzwerk_fernwartung": 750, # 790011001 + "abgang_400v": 250, # ---- + "abgang_24_v": 250, # ---- + # + "anlagenrechner": 1657, # 790011000 + "zusaetzlicher_bildschirm": 750, # + # _summe_schaltschrank - "anlagenrechner": 1657, - "zusaetzlicher_bildschirm": 750, - # _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_1-neuenhauser_pm": 1000, - "unterverteiler_fuer_1-flyer": 1000, - "unterverteiler_fuer_2-flyer": 400, - "unterverteiler_fuer_1-flyer_f40_mit_integrierter_putzmaschine": 700, - "unterverteiler_fuer_2-flyer_f40_mit_integrierter_putzmaschine": 1100, - "unterverteiler_fuer_puffer": 700, - - "unterverteiler_fuer_5-rsm_fa": 700, - # korrektur_1_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_10-rsm_fa": 800, - - "unterverteiler_fuer_3-rsm_fa_mit_umfahrung_steckbar": 1000, - # korrektur_3_rsm_zusaetzlich_im_unterverteiler - "unterverteiler_fuer_4-rsm_direct": 5027, - # korrektur_4_rsm_zusaetzlich_im_unterverteiler - - "unterverteiler_fuer_12-rsm_direct": 7930, - # korrektur_12_rsm_zusaetzlich_im_unterverteiler - - "unterverteiler_fuer_8-rsm_direct": 6322, - # korrektur_8_rsm_zusaetzlich_im_unterverteiler - - "busverteiler_6-rsm_direct": 1818, - # korrektur_6_rsm_zusaetzlich_im_unterverteiler - - "busverteiler_8-rsm_direct": 1818, + "unterverteiler_fuer_5_rsm_fa": 700, # 790820210_D + # korrektur_1_rsm_zusaetzlich_im_unterverteiler + + "unterverteiler_fuer_10_rsm_fa": 800, # 790820210_F + # + + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar": 1000, # 790820209_C + # korrektur_3_rsm_zusaetzlich_im_unterverteiler + + "unterverteiler_fuer_4_rsm_direct": 5027, # 790820300 + # korrektur_4_rsm_zusaetzlich_im_unterverteiler + + "unterverteiler_fuer_12_rsm_direct": 7930, # 790820302 + # korrektur_12_rsm_zusaetzlich_im_unterverteiler + + "unterverteiler_fuer_8_rsm_direct": 6322, # 790820301 + # korrektur_8_rsm_zusaetzlich_im_unterverteiler + + "busverteiler_6_rsm_direct": 1818, # 790801002 + # korrektur_6_rsm_zusaetzlich_im_unterverteiler + + "busverteiler_8_rsm_direct": 1818, # 790801001 # korrektur_8_rsm_zusaetzlich_im_unterverteiler "antrieb_unidirektional_halbleiter": 75, @@ -1008,201 +1179,184 @@ class HW(): "frequenzumrichter": 250, # summe_motorstarter - "bedienstation_1-fach_kpl.": 51, - "bedienst._2-fach_wechs._bcd_10f": 90, - "bedienstation_2-fach_kpl.": 92, - "bedienstation_3-fach_kpl.": 104, - "bedienstation_4-fach_kpl.": 116, - "bedienstation_10-fach_kpl.": 380, + "bedienstation_1fach_kpl": 51, + "bedienst_2fach_wechs_bcd_10f": 90, + "bedienstation_2fach_kpl": 92, # 790002021_A + "bedienstation_3fach_kpl": 104, + "bedienstation_4fach_kpl": 116, + "bedienstation_10fach_kpl": 380, "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, + "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, + "_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 + "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, - "et200-sp_eingangskarte_8_de": 30, - "et200-sp_eingangskarte_16_de": 54, - "et200-sp_eingangskarte_8_do": 45, - "et200-sp_eingangskarte_16_do": 62, - "et200-sp_base-unit_neue_last": 20, - "et200-sp_base-unit_links_gebrueckt": 13, - "et200-sp_base-unit_neue_last": 17, - "et200-sp_base-unit_links_gebrueckt": 10, + # 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 # SLIO - "et_200sp_bundle_profinet_im_155-6pn_st_ba_2xrj45": 155, - "slio_eingangskarte_4_de": 25, - "slio_eingangskarte_8_de": 33, - "slio_ausgangskarte_4_do": 30, - "slio_ausgangskarte_8_do": 36, - "slio_power-modul": 18, - "slio_4_x_dc_24v_4_x_dc_0v": 13, - "slio_8_x_dc_24v": 13, - "slio_8_x_dc_0v": 13, + "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 + "slio_power_modul": 18, # 709000014 + "slio_4_x_dc_24v_4_x_dc_0v": 13, # 709000015 + "slio_8_x_dc_24v": 13, # 709000011 + "slio_8_x_dc_0v": 13, # 709000010 # Summe_material_in_ll # MATERIAL VOR ORT - "movimot_fu_mit_anschaltung": 550, - "sensor_optisch_traverse": 25, - "sensorhalter_ohne_sensor_": 8, - "reflexionslichtschranke_rsm_direct": 45, - "stoppersensor_induktiv_mit_halter": 63, - "sensor_spulenpruefung_voll_leer": 126, - "seilzugschalter": 150, - "seil_fuer_seilzugschalter": 0.40, - "blitzleuchte": 72, - "spulenumsetzstation": 0, - "sensorkabel_je_20m": 20, - "stopper-_weichenkabel_je_5m": 15, - "motorkabel_je_30m": 23, - "kabelpritschen_-leitern_200_60": 12, - "kabelpritsche_rsm_100_60": 11, - "kabelpritsche_rsm_50_35": 7, - "klemmkasten_rsm": 120, - "klemmkasten_direct_in_rsm": 97, + "movimot_fu_mit_anschaltung": 550, + "sensor_optisch_traverse": 25, # 827072200 + "sensorhalter_ohne_sensor_": 8, # 827072xxx + "reflexionslichtschranke_rsm_direct": 45, # 827072207 + "stoppersensor_induktiv_mit_halter": 63, # 827072205 + "sensor_spulenpruefung_voll_leer": 126, # 827072204 + 721000041 + "seilzugschalter": 150, + "seil_fuer_seilzugschalter": 0.40, + "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 + "klemmkasten_rsm": 120, + "klemmkasten_direct_in_rsm": 97, # 790000703 "erdung": 9, "kleinteile_rohre_schellen_kabelbinder_ect": 500, "kabel_fuer_klemmkasten_und_bts_60m": 37, - "zuleitung_75_m_unterverteiler_4x4mm^2_400vac": 146, - "zuleitung_75_m_unterverteiler_12x4mm^2_24_vdc": 450, - "zuleitung_75_m_unterverteiler_12x2_5mm^2_24_vdc": 250, + "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_8x1mm^2_30m": 25, + "schnittstellen_8x1mm2_30m": 25, } - Keys_of_LL = ["movimot_fu_mit_anschaltung", "trolleytraversensabfrage_optisch", - "reflexionslichtschranke_rsm_direct", - "stoppersensor_induktiv", "seilzugschalter", "blitzleuchte", "spulenumsetzstation", - "sensorkabel_je_20m", - "stopper_weichenkabel_je_5m", "motorkabel_je_40m", "kabelpritschen_leitern", "kabelpritsche_rsm", - "klemmkasten_flyer_und_putzmaschine", "klemmkasten_direct_in_rsm", "erdung", "kleinteile", - "sonstige_kabel_busleitung_etc", "zuleitung_unterverteiler_4x10_40m", - "zuleitung_unterverteiler_7x4_40m", - "profibuskabel", "schnittstellen_8x1mm"] + Keys_of_Vor_Ort = [ + "movimot_fu_mit_anschaltung", + "sensor_optisch_traverse", + "sensorhalter_ohne_sensor_", + "reflexionslichtschranke_rsm_direct", + "stoppersensor_induktiv_mit_halter", + "sensor_spulenpruefung_voll_leer", + "seilzugschalter", + "seil_fuer_seilzugschalter", + "blitzleuchte", + "spulenumsetzstation", + "sensorkabel_je_20m", + "stopper_weichenkabel_je_5m", + "motorkabel_je_30m", + "kabelpritschen_leitern_200_60", + "kabelpritsche_rsm_100_60", + "kabelpritsche_rsm_50_35", + "klemmkasten_rsm", + "klemmkasten_direct_in_rsm", + "erdung", + "kleinteile_rohre_schellen_kabelbinder_ect", + "kabel_fuer_klemmkasten_und_bts_60m", + "zuleitung_75_m_unterverteiler_4x4mm2_400vac", + "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", + "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", + "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm", + "zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm", + "profinetkabel", + "schnittstellen_8x1mm2_30m" + ] - def __init__(self, anzahl:dict, eas: type[EA]): + def __init__(self, anzahl:dict, mg: type[MG], eas: type[EA]): self._anzahl = anzahl - ## Material in LL - self._anzahl["schnittstellenrelais"] = eas.get_SA("Schnittstelle_Flyer_Mazoli") +\ - eas.get_SA("Schnittstelle_Putzmaschine_Cason") + self._anzahl["schaltschrankgehaeuse_b1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x800_zubehoer", 0) + self._anzahl["schaltschrankgehaeuse_b2x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b2x800_zubehoer", 0) + self._anzahl["schaltschrankgehaeuse_b1x1200+1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x1200+1x800_zubehoer", 0) + self._anzahl["sps_simatic_s7_cpu315_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu315_2_pn_dp", 0) + self._anzahl["speicherkarte_fuer_sps_512_kb"] = anzahl.get("speicherkarte_fuer_sps_512_kb", 0) + self._anzahl["comfort_panel_tp_900_mit_pn"] = anzahl.get("comfort_panel_tp_900_mit_pn", 0) + self._anzahl["sps_simatic_s7_cpu317_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu317_2_pn_dp", 0) + self._anzahl["speicherkarte_fuer_sps2_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb", 0) + self._anzahl["sps_simatic_s7_1513_1"] = anzahl.get("sps_simatic_s7_1513_1", 0) + self._anzahl["sps_simatic_s7_1515_2"] = anzahl.get("sps_simatic_s7_1515_2", 0) + self._anzahl["sps_simatic_s7_1517_3"] = anzahl.get("sps_simatic_s7_1517_3", 0) + self._anzahl["sps_simatic_s7_1518_4"] = anzahl.get("sps_simatic_s7_1518_4", 0) + self._anzahl["sps_et200_1512sp"] = anzahl.get("sps_et200_1512sp", 0) - self._anzahl["antrieb_unidirektional_halbleiter"] = eas.anzahl("RA_unidirektional") + \ - eas.anzahl("RA_unidirektional_abhebbar") + \ - eas.anzahl("RA_unidirektional_mit_gemeinsamer_Wendung") + \ - eas.anzahl("RA_unidirektional_ohne_SPS_Ansteuerung") + \ - eas.anzahl("RA_bidirektional_abhebbar_gemeinsWend") - # self._anzahl["antrieb_bidirektional_halbleiter"] = eas.anzahl("RA_bidirektional") + \ - # eas.anzahl("RA_bidirektional_abhebbar") + \ - # eas.anzahl("RA_bidirektional_ohne_SPS_Ansteuerung") +\ - # eas.anzahl("Doppelstreckenantrieb") - self._anzahl["antrieb_bidirektional_halbleiter"] = eas.anzahl("RA_bidirektional") + \ - eas.anzahl("RA_bidirektional_abhebbar") + \ - eas.anzahl("RA_bidirektional_abhebbar_gemeinsWend") +\ - eas.anzahl("RA_bidirektional_ohne_SPS_Ansteuerung") +\ - eas.anzahl("RA_in_RSM_bidirektional") - self._anzahl["antrieb_unidirektional_schütz"] = eas.anzahl("Stopper") + \ - eas.anzahl("Ventil_RA_3_2_abhebbar") + \ - eas.anzahl("Ventil_Doppelstreckenantrieb_5_2_abhebbar") - self._anzahl["antrieb_bidirektional_schütz"] = eas.anzahl("Blitzleuchte_Stoerung") + \ - eas.anzahl("Ventil_RA_3_2_abhebbar") + \ - eas.anzahl("Ventil_Doppelstreckenantrieb_5_2_abhebbar") + 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["motorschutzschalter"] = eas.anzahl("RA_in_RSM_bidirektional") * eas.anzahl("RA_in_RSM_bi_Anzahl_Antriebe_je_Seite") - self._anzahl["gemeinsame_wendung"] = eas.anzahl("RA_in_RSM_bidirektional") + eas.anzahl("gemeinsame_Wendung") + self._anzahl["memory_card_2_gb"] = self._anzahl.get("sps_simatic_s7_1518_4", 0) - self._anzahl["bedienstation_1fach"] = eas.anzahl("bedienstation_1fach_Not_Aus") + eas.anzahl("bedienstation_einfach_Zug_Wechseln") - self._anzahl["bedienst_2fach_red"] = eas.anzahl("bedienstation_zweifach_Wechs_BCD_8f") - self._anzahl["bedienstation_2"] = eas.anzahl("bedienstation_zweifach_Not_Aus_Fahrdauerueb") - self._anzahl["bedienstation_3"] = eas.anzahl("bedienst_dreifach") - self._anzahl["bedienstation_4"] = eas.anzahl("bedienst_vierfach") - self._anzahl["bedienstation_6"] = eas.anzahl("bedienst_sechsfach") + 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["zusaetzlicher_bildschirm"] = anzahl.get("zusaetzlicher_bildschirm", 0) # end Violett - ein_ausgangsmodul = self._anzahl.get("ein_ausgangsmodul", 0) - profibus_asi_gateway_netzteil = math.ceil(ein_ausgangsmodul / 25) # Excel AUFRUNDEN() - self._anzahl["profibus_asi_gateway_netzteil"] = profibus_asi_gateway_netzteil - self._anzahl["blindverschlüsse"] = ein_ausgangsmodul * 2 - self._anzahl["asi_buskabel"] = profibus_asi_gateway_netzteil * 100 - self._anzahl["buskabel_24V"] = profibus_asi_gateway_netzteil * 100 - - self._anzahl["profibus_stecker"] = ein_ausgangsmodul - - ## bis_64_E/A - self._anzahl["ausgangskarte_8da_bereits_integriert"] = self._anzahl.get("eingangskarte_8de", 0) - self._anzahl["ausgangskarte_16da_bereits_integriert"] = self._anzahl.get("eingangskarte_16de", 0) + #self._anzahl["unterverteiler_fuer_1neuenhauser_pm"] = mg.("", 0) + #self._anzahl[""] = anzahl.get("", 0) + + # "unterverteiler_fuer_1neuenhauser_pm":0, + # "unterverteiler_fuer_1flyer":0, + # "unterverteiler_fuer_2flyer":0, + # "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine":0, + # "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine":0, + # "unterverteiler_fuer_puffer":0, + + # "unterverteiler_fuer_5_rsm_fa":0, + # "korrektur_1_rsm_zusaetzlich_im_unterverteiler":0, + + # "unterverteiler_fuer_10_rsm_fa":0, + + # "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":0, + # "korrektur_3_rsm_zusaetzlich_im_unterverteiler":0, + + # "unterverteiler_fuer_4_rsm_direct":0, + # "korrektur_4_rsm_zusaetzlich_im_unterverteiler":0, + + # "unterverteiler_fuer_12_rsm_direct":0, + # "korrektur_12_rsm_zusaetzlich_im_unterverteiler":0, + # "unterverteiler_fuer_8_rsm_direct":0, + # "korrektur_8_rsm_zusaetzlich_im_unterverteiler":0, + + # "busverteiler_6_rsm_direct":0, + # "korrektur_6_rsm_zusaetzlich_im_unterverteiler":0, + + # "busverteiler_8_rsm_direct":0, + # "korrektur_8_rsm_zusaetzlich_im_unterverteiler":0, - ## bis_1.000_E_A - self._anzahl["mmc_512kb_memory_64"] = self._anzahl.get("cpu_315_2_pn_dp_mit_ethernet", 0) + \ - self._anzahl.get("cpu_315sn_net_vipa", 0) - self._anzahl["mmc_2mb_memory"] = self._anzahl.get("cpu_317_2_pn_dp_mit_ethernet", 0) + \ - self._anzahl.get("cpu_317sn_net_vipa", 0) + \ - self._anzahl.get("cpu_319_2_pn_dp_mit_ethernet", 0) - et200m_anschaltung_im_153 = self._anzahl.get("eingangskarte_sm_321_16de", 0) + \ - self._anzahl.get("ausgangskarte_sm_322_16da", 0) + \ - self._anzahl.get("eingangskarte_sm_321_32de", 0) + \ - self._anzahl.get("eingangskarte_sm_321_32da", 0) - self._anzahl["et200m_anschaltung_im_153"] = math.floor(et200m_anschaltung_im_153 /8) # Excel: ABRUNDEN() - self._anzahl["profibusstecker_je_1st_cpu_und_im153"] = self._anzahl.get("et200m_anschaltung_im_153", 0) + 1 - self._anzahl["frontstecker_für_ein_ausgangskarte_16"] = self._anzahl.get("eingangskarte_sm_321_16de", 0) + \ - self._anzahl.get("ausgangskarte_sm_322_16da", 0) - self._anzahl["frontstecker_für_ein_ausgangskarte_32"] = self._anzahl.get("eingangskarte_sm_321_32de", 0) + \ - self._anzahl.get("ausgangskarte_sm_322_32da", 0) - ## über_1.000_E_A - self._anzahl["frontstecker_für_ein_ausgangskarte_32"] = self._anzahl.get("eingangskarte_sm_421_32de", 0) + \ - self._anzahl.get("ausgangskarte_sm_422_32da", 0) - - ## Material_vor_Ort - self._anzahl["trolleytraversensabfrage_optisch"] = eas.anzahl("Sensor_Traversenabfrage_optisch") - self._anzahl["reflexionslichtschranke_rsm_direct"] = eas.anzahl("Reflexionslichtschranke_RSM_DIRECT") - self._anzahl["stoppersensor_induktiv"] = eas.anzahl("Sensor_Stopper_induktiv") - self._anzahl["seilzugschalter"] = eas.anzahl("Seilzugschalter") - self._anzahl["blitzleuchte"] = eas.anzahl("Blitzleuchte_Stoerung") - self._anzahl["spulenumsetzstation"] = eas.anzahl("Spulenumsetzstation") - self._anzahl["sensorkabel_je_20m"] = eas.anzahl("Sensor_Traversenabfrage_optisch") +\ - eas.anzahl("Reflexionslichtschranke_RSM_DIRECT") +\ - eas.anzahl("Sensor_Stopper_induktiv") +\ - eas.anzahl("Seilzugschalter") - self._anzahl["stopper_weichenkabel_je_5m"] = eas.anzahl("Weiche") +\ - eas.anzahl("Weiche_mit_gemeinsamer_Rueckstellung") +\ - eas.anzahl("gemeinsame_Weichenrueckstellung") +\ - eas.anzahl("Dreifach_Weiche_DIRECT") +\ - eas.anzahl("Kreuzungsweiche") +\ - eas.anzahl("Stopper") +\ - eas.anzahl("Ventil_RA_3_2_abhebbar") +\ - eas.anzahl("Ventil_Doppelstreckenantrieb_5_2_abhebbar") - self._anzahl["motorkabel_je_40m"] = self._anzahl.get("antrieb_unidirektional_halbleiter", 0) +\ - self._anzahl.get("antrieb_bidirektional_halbleiter", 0) - self._anzahl["klemmkasten_flyer_und_putzmaschine"] = eas.anzahl("Schnittstelle_Flyer_Mazoli") +\ - eas.anzahl("Schnittstelle_Putzmaschine_Cason") - self._anzahl["klemmkasten_direct_in_rsm"] = eas.anzahl("bedienstation_zweifach_Wechs_BCD_8f") - # TODO anzahl_unterverteiler ist im hw ein Wert im Excel der von Hand eingetragen werden muss? - self._anzahl["zuleitung_unterverteiler_4x10_40m"] = eas.anzahl("anzahl_unterverteiler") + 1 - self._anzahl["zuleitung_unterverteiler_7x4_40m"] = eas.anzahl("anzahl_unterverteiler") + 1 - self._anzahl["profibuskabel"] = eas.anzahl("anzahl_unterverteiler") + 1 - # -> end TODO - self._anzahl["schnittstellen_8x1mm"] = eas.anzahl("Schnittstelle_Flyer_Mazoli") +\ - eas.anzahl("Schnittstelle_Putzmaschine_Cason") # remove all elements with the number of 0. They are of no use @@ -1231,7 +1385,9 @@ class HW(): def summe_in_LL(self): res = 0 for k,anz in self._anzahl.items(): - if k in self.Keys_of_LL: + if k in self.Keys_of_Vor_Ort: + pass + else: preis = anz * self.ep[k] res += preis return res @@ -1239,67 +1395,137 @@ class HW(): def summe_vorort(self): res = 0 for k,anz in self._anzahl.items(): - if k in self.Keys_of_LL: - pass - else: + if k in self.Keys_of_Vor_Ort: preis = anz * self.ep[k] res += preis return res + def summe_h_unterverteiler(self): + """ gibt dies Summer der Stunden zur Montage der Unterverteiler zurück""" + keys_unterverteiler = [ + "unterverteiler_fuer_1neuenhauser_pm", + "unterverteiler_fuer_1flyer", + "unterverteiler_fuer_2flyer", + "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", + "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", + "unterverteiler_fuer_puffer", + "unterverteiler_fuer_5_rsm_fa", + "unterverteiler_fuer_10_rsm_fa", + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", + "unterverteiler_fuer_4_rsm_direct", + "unterverteiler_fuer_12_rsm_direct", + "unterverteiler_fuer_8_rsm_direct", + "busverteiler_6_rsm_direct", + "busverteiler_8_rsm_direct", + ] + res = 0 + for k in keys_unterverteiler: + anz = self._anzahl.get(k, 0) + preis = anz * self.ep[k] + res += preis + return res + + def summe_h_schaltschrank(self): + """ gibt dies Summer der Stunden zur Montage des Schaltschranks zurück""" + keys_schaltschrank = [ + "schaltschrankgehaeuse_b1x800_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", + "sps_et200_1512sp", + "memory_card_256_mb", + "memory_card_2_gb", + "et200_sp_ea_ebene", + "netzwerk_fernwartung", + "abgang_400v", + "abgang_24_v", + "anlagenrechner", + "zusaetzlicher_bildschirm", + ] + + res = 0 + for k in keys_schaltschrank: + anz = self._anzahl.get(k, 0) + preis = anz * self.ep[k] + res += preis + return res + class Dienstleistung(): + # Angaben in h + mengen = { + "Pflichtenheft_Autom_Schnittstellen": 0, + ## Hardwareplanung + #"Erstellung_Steuerungslayout": 1, + #"Schaltplanerstellung_incl_Korrekturen": 1, + #"Projektkoordination": 1, + #"Materialdispo": 1, + #"Abstimmung_mit_E_Werkstatt": 1, + #"Erstellen_E_Montageunterlagen": 1, - def __init__(self, Anzahl_DL, ea: type[EA], hw: type[HW]): + # Test_und_Installation + "PC_Installation": 0, + #"Oberfläche_Simulation": 0, + #"SPS_Test_im_Haus_Simulation": 0, + ## Dokumentation + "Bedienerhandbuch": 0, + "SPS_Doku": 0, + "PC_Doku": 0, + + ## Elektrowerkstatt + #Schaltschrankbau + #Unterverteilerbau + #Klemmkastenbau_je_2h + #Bedientableaubau + "Vormontage_im_Haus": 0, + } + + def __init__(self, Anzahl_DL, hw: type[HW]): + # hier sind die Dienstleistungen in Stunden gegeben, bzw. werden errechnet self._Hours = Anzahl_DL - # TODO Warum ist hier RA _uni und _bi mit drin? - Summe_EA_plus_Antriebe = ea.gesamt_E() + ea.gesamt_A() +\ - ea.anzahl("RA_unidirektional_ohne_SPS_Ansteuerung") +\ - ea.anzahl("RA_bidirektional_ohne_SPS_Ansteuerung") - # TODO woher kommen die "magic numbers" /8 usw. ? - self.Hardwareplan_Erstellung_Steuerungslayout = Summe_EA_plus_Antriebe/8* 0.6 - self.Schaltplanerstellung_incl_Korrekturen = Summe_EA_plus_Antriebe/8* 1.25 - self.Materialdisposition = Summe_EA_plus_Antriebe * 0.05 - # hier nur zur visualisierung der Ergebnisse: - self._Hours["Hardwareplan_Erstellung_Steuerungslayout"] = self.Hardwareplan_Erstellung_Steuerungslayout - self._Hours["Schaltplanerstellung_incl_Korrekturen"] = self.Schaltplanerstellung_incl_Korrekturen - self._Hours["Materialdisposition"] = self.Materialdisposition - self.Pflichtenheft_Autom_Schnittstellen = Anzahl_DL["Pflichtenheft_Autom_Schnittstellen"] - # Hardwareplanung - self.Projektkoordination = Anzahl_DL["Projektkoordination"] + # "Pflichtenheft_Autom_Schnittstellen": 0, - self.Abstimmung_mit_E_Werkstatt = Anzahl_DL["Abstimmung_mit_E_Werkstatt"] - self.Erstellen_E_Montageunterlagen = Anzahl_DL["Erstellen_E_Montageunterlagen"] + ## Hardwareplanung + FaktorLayout = 0.15 + FaktorSchaltplan = 0.55 + FaktorProjektkoord = 0.05 + FaktorDispo = 0.15 + FaktorAbstimmung = 0.05 + FaktorMontageUnterlagen = 0.05 + self._Hours["Erstellung_Steuerungslayout"] = hw.summe_h_unterverteiler() * FaktorLayout + self._Hours["Schaltplanerstellung_incl_Korrekturen"] = hw.summe_h_unterverteiler() * FaktorSchaltplan + self._Hours["Projektkoordination"] = hw.summe_h_unterverteiler() * FaktorProjektkoord + self._Hours["Materialdispo"] = hw.summe_h_unterverteiler() * FaktorDispo + 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.PC_Installation = Anzahl_DL["PC_Installation"] - self.Oberfläche_Simulation = Anzahl_DL["Oberfläche_Simulation"] - self.SPS_Test_im_Haus_Simulation = Anzahl_DL["SPS_Test_im_Haus_Simulation"] - # Dokumentation - self.Bedienerhandbuch = Anzahl_DL["Bedienerhandbuch"] - self.SPS_Doku = Anzahl_DL["SPS_Doku"] - self.PC_Doku = Anzahl_DL["PC_Doku"] - # Elektrowerkstatt - # TODO: Woher kokmmt "Summe Schaltschrank" im Excel Reiter "HW"? woher "Anzahl Unterverteiler" B20? was soll 0.5 * 20 ? - #self.Schaltschrankbau = hw.anzahl("schaltschrankgehäuse_und_zubehör") * hw.anzahl("summe_schaltschrank")/0.4 +\ - # (hw.anzahl("summe_unterverteiler") * hw.anzahl("unterverteilergehäuse_und_zubehör")) / 0.5 * 20 - self.Schaltschrankbau = 0 - self.Klemmkastenbau_je_1h = hw.anzahl("klemmkasten_direct_in_rsm") + hw.anzahl("klemmkasten_flyer_und_putzmaschine") - self.Bedientableaubau = ( hw.anzahl("bedienstation_1fach") +\ - hw.anzahl("bedienst_2fach_red") +\ - hw.anzahl("bedienstation_2") +\ - hw.anzahl("bedienstation_3") +\ - hw.anzahl("bedienstation_4") +\ - hw.anzahl("bedienstation_6") ) * 0.5 - # hier nur zur visualisierung der Ergebnisse: - self._Hours["Schaltschrankbau"] = self.Schaltschrankbau - self._Hours["Klemmkastenbau_je_1h"] = self.Klemmkastenbau_je_1h - self._Hours["Bedientableaubau"] = self.Bedientableaubau - self.Vormontage_im_Haus = Anzahl_DL["Vormontage_im_Haus"] + self._Hours["PC_Installation"] = 0 # TODO woher kommt das? + self._Hours["Oberfläche_Simulation" ] = 0 # was heisst hier bedingt ändern? + self._Hours["SPS_Test_im_Haus_Simulation"] = 0 + ## Dokumentation + self._Hours["Bedienerhandbuch"] = 0 + self._Hours["SPS_Doku"] = 0 + self._Hours["PC_Doku"] = 0 + + ## Elektrowerkstatt + self._Hours["Schaltschrankbau"] = hw.summe_h_schaltschrank() + self._Hours["Unterverteilerbau"] = 0 + self._Hours["Klemmkastenbau_je_2h"] = 0 + self._Hours["Bedientableaubau"] = 0 + self._Hours["Vormontage_im_Haus"] = 0 # TODO: Nur bedingt ändern? - # hier sind die Dienstleistungen in Stunden gegeben, bzw. werden errechnet def __repr__(self): return repr(self._Hours) @@ -1309,13 +1535,13 @@ class Dienstleistung(): def summe_stunden(self): """returns hours necessary""" - return self.Pflichtenheft_Autom_Schnittstellen + self.Hardwareplan_Erstellung_Steuerungslayout + self.Schaltplanerstellung_incl_Korrekturen + self.Projektkoordination + self.Materialdisposition + self.Abstimmung_mit_E_Werkstatt + self.Erstellen_E_Montageunterlagen + self.PC_Installation + self.Oberfläche_Simulation + self.SPS_Test_im_Haus_Simulation + self.Bedienerhandbuch + self.SPS_Doku + self.PC_Doku + self.Schaltschrankbau + self.Klemmkastenbau_je_1h + self.Bedientableaubau + self.Vormontage_im_Haus + return 0 def stunden_elektrowerkstatt(self): - return self.Schaltschrankbau + self.Klemmkastenbau_je_1h + self.Bedientableaubau + self.Vormontage_im_Haus + return 0 def stunden_elektro_Landsberg(self): - return self.Pflichtenheft_Autom_Schnittstellen + self.Hardwareplan_Erstellung_Steuerungslayout + self.Schaltplanerstellung_incl_Korrekturen + self.Projektkoordination + self.Materialdisposition + self.Abstimmung_mit_E_Werkstatt + self.Erstellen_E_Montageunterlagen + self.PC_Installation + self.Oberfläche_Simulation + self.SPS_Test_im_Haus_Simulation + self.Bedienerhandbuch + self.SPS_Doku + self.PC_Doku + return 0 #EMO class EMO(): @@ -1453,6 +1679,36 @@ class calc_main_tab(): # Press the green button in the gutter to run the script. if __name__ == '__main__': # Anzahl der für das Projekt benutzten + deckblatt_eingabe = { + "SYSTEM":"", + "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, + } + rsm_direct_eingabe = {} + rsm_fa_eingabe = {} + flyer_f40_eingabe = {} + neuenhauser_eingabe = {} + flyer_eingabe = {} + verbindungsstrecken_w_mengen = {} + puffer_eingabe = {} + turm_eingabe = {} + mg = MG(deckblatt_eingabe, rsm_direct_eingabe, rsm_fa_eingabe, flyer_f40_eingabe, neuenhauser_eingabe, flyer_eingabe, verbindungsstrecken_w_mengen, puffer_eingabe, turm_eingabe) + Anzahl_EAS = { "Bedienelemente_Steuerschrank" : 1, @@ -1499,129 +1755,22 @@ if __name__ == '__main__': "gemeinsame_Wendung": 1, } Anzahl_HW = { - ## Material Anzahl - ## Material in LL - # schaltschrank_anzahl - "schaltschrankgehäuse_und_zubehör": 1.2, - "einspeisungssatz": 1, - "kleinmaterial": 1, - - ## unterverteiler - "unterverteilergehäuse_und_zubehör": 2, - "hauptschalter": 1, - "hauptschütz": 1, - "kleinmaterial_unterverteiler": 1, - #schnittstellenrelais - #antrieb_unidirektional_halbleiter - #antrieb_bidirektional_halbleiter - #antrieb_unidirektional_schütz - #antrieb_bidirektional_schütz - #motorschutzschalter - #gemeinsame_wendung - #bedienstation_1fach - #bedienst_2fach_red - #bedienstation_2" - #bedienstation_3 - #bedienstation_4 - #bedienstation_6 - - "panel_pc": 0, - "pc": 1, - "switch": 2, - "ewon_router_für_fernwartung": 1, - "drucker": 0, - # _Summe_PC - - "ein_ausgangsmodul": 0, - "extension_plug": 0, - - ## bis_64_E/A - ## sps_hardware_vipa_100, - "cpu_114r_16de_8da": 258, - "mmc_512kb_memory_64": 0, - "eingangskarte_8de": 0, - "eingangskarte_16de": 0, - - ## bis_1.000_E_A - ## sps_hardware_siemens_s7_300 - "cpu_315_2_pn_dp_mit_ethernet": 1, - "cpu_315sn_net_vipa": 0, - - "cpu_317_2_pn_dp_mit_ethernet": 0, - "cpu_317sn_net_vipa": 0, - "cpu_319_2_pn_dp_mit_ethernet": 0, - - "kommunikationsprozessor_cp_343_1": 0, - #et200m_anschaltung_im_153 - "profibusstecker_je_1st_cpu_und_im153": 1, - "eingangskarte_sm_321_16de": 1, - "ausgangskarte_sm_322_16da": 1, - #frontstecker_für_ein_ausgangskarte_16 - "eingangskarte_sm_321_32de": 2, - "ausgangskarte_sm_322_32da": 3, - #frontstecker_für_ein_ausgangskarte_32 - - ## über_1.000_E_A - ## sps_hardware_siemens_s7_400, - "cpu_414_2": 0, - "baugruppenträger_ur_1": 0, - "stromversorgung_ps405_230vac10A": 0, - "pufferbatterie": 0, - "speicherkarte_2_mb": 0, - "ethernet_anschaltung_cp443_1": 0, - "eingangskarte_sm_421_32de": 0, - "ausgangskarte_sm_422_32da": 0, - #frontstecker_für_ein_ausgangskarte - - ## Material_vor_Ort - "movimot_fu_mit_anschaltung": 0, - #trolleytraversensabfrage_optisch - #reflexionslichtschranke_rsm_direct - #stoppersensor_induktiv - #seilzugschalter - #blitzleuchte - #spulenumsetzstation - #sensorkabel_je_20m - #stopper_weichenkabel_je_5m - #motorkabel_je_40m - "kabelpritschen_leitern": 117, - "kabelpritsche_rsm": 0, - #klemmkasten_flyer_und_putzmaschine - #klemmkasten_direct_in_rsm - "erdung": 1, - "kleinteile": 1, - - "sonstige_kabel_busleitung_etc": 1, - #zuleitung_unterverteiler_4x10_40m - #zuleitung_unterverteiler_7x4_40m - #profibuskabel - #schnittstellen_8x1mm } Anzahl_DL = { "Pflichtenheft_Autom_Schnittstellen": 0, - # Hardwareplanung - "Projektkoordination": 1, - - "Abstimmung_mit_E_Werkstatt": 1, - "Erstellen_E_Montageunterlagen": 1, # Test_und_Installation "PC_Installation": 0, - "Oberfläche_Simulation": 0, - "SPS_Test_im_Haus_Simulation": 0, - # Dokumentation + ## Dokumentation "Bedienerhandbuch": 0, "SPS_Doku": 0, "PC_Doku": 0, - # Elektrowerkstatt - #Schaltschrankbau - #Klemmkastenbau_je_1h - #Bedientableaubau + ## Elektrowerkstatt "Vormontage_im_Haus": 0, } eas = EA(Anzahl_EAS) - hw = HW(Anzahl_HW, eas) - dl = Dienstleistung(Anzahl_DL, eas, hw) + hw = HW(Anzahl_HW, mg, eas) + dl = Dienstleistung(Anzahl_DL, hw) calc_main_tab(hw, dl) def test_deckblatt_neuenhauser(self, deckblatt:MG): @@ -1716,51 +1865,51 @@ class TestObjectMethods(unittest.TestCase): "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_2-fach":0, - "Bedientableau_2-fach_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, - } + #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_2-fach":0, + "Bedientableau_2-fach_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, @@ -2305,29 +2454,29 @@ if __name__ == '__main__': } rsm_direct_eingabe = { - #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet - #"Anzahl":0, # wird in deckblatt-Klasse berechnet - #"Anzahl_Strecken/RSM":8, - "Sensor_optisch_Traverse":0, - #"Lichtschranke_Traverse":0, - #"Bedientableau_2-fach":0, - "Bedientableau_2-fach_Korrektur":0, - #"Bedientableau_2-fach_Direct":0, - #"Weiche":0, - "Weiche_Korrektur":0, - #"Weiche_Gemeinsame_Rückstellung":0, - "Weiche_Gemeinsame_Rückstellung_Korrektur":0, - #"RA_bi_abhebbar":0, - "RA_bi_abhebbar_Korrektur":0, - #"Doppelstreckenantrieb":0, - #"gemeinsame_Wendung":0, - #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":0, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":0, - } + #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + #"Anzahl":0, # wird in deckblatt-Klasse berechnet + #"Anzahl_Strecken/RSM":8, + "Sensor_optisch_Traverse":0, + #"Lichtschranke_Traverse":0, + #"Bedientableau_2-fach":0, + "Bedientableau_2-fach_Korrektur":0, + #"Bedientableau_2-fach_Direct":0, + #"Weiche":0, + "Weiche_Korrektur":0, + #"Weiche_Gemeinsame_Rückstellung":0, + "Weiche_Gemeinsame_Rückstellung_Korrektur":0, + #"RA_bi_abhebbar":0, + "RA_bi_abhebbar_Korrektur":0, + #"Doppelstreckenantrieb":0, + #"gemeinsame_Wendung":0, + #"Meldelampe_Überstrom":0, + "Meldelampe_Überstrom_Korrektur":0, + #"Hauptschalter_Ein-Meldung":0, + "Hauptschalter_Ein-Meldung_Korrektur":0, + #"Werma_Rundumleuchte_Störung":0, + "Werma_Rundumleuchte_Störung_Korrektur":0, + } rsm_fa_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl_RSM":0, @@ -2359,51 +2508,51 @@ if __name__ == '__main__': "Werma_Rundumleuchte_Störung_Korrektur":0, } 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":0, - #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet - #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet - #"Anzahl_Schienen":0, - "Single-Line_/_Durchfahrt":False, - "Nachpuffer":False, - #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":0, - #"Sensor_induktiv_Spulenhalter":0, - "Sensor_induktiv_Spulenhalter_Korrektur":0, - #"Bedientableau_2-fach":0, - "Bedientableau_2-fach_Korrektur":0, - #"Interface_Doffer":0, - "Interface_Doffer_Korrektur":0, - #"Weiche":0, - "Weiche_Korrektur":0, - #"Weiche_nach_Flyer_(bipolar)":0, - "Weiche_nach_Flyer_(bipolar)_Korrektur":0, - "Dreifachweiche":0, - "Wechsel":0, - "Stopper":0, - "RA_uni":0, - #"RA_uni_abhebbar":0, - "RA_uni_abhebbar_Korrektur":0, - #"RA_uni_ohne_SPS-Ansteuerung":0, - "RA_uni_ohne_SPS-Ansteuerung_Korrektur":0, - #"RRA_BI_abhebbar":0, - "RRA_BI_abhebbar_Korrektur":0, - "RRA_bi":0, - #"RRA_bi_Korrektur":0, - #"RRA_bi_ohne_SPS-Ansteuerung":0, - "RRA_bi_ohne_SPS-Ansteuerung_Korrektur":0, - #"Doppelstreckenantrieb":0, - "Doppelstreckenantrieb_Korrektur":0, - "RA_bi_abhebbar_(unger._Schiene)":0, - #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":0, - #"Hauptschalter_Ein-Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":0, - #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":0, - } + #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":0, + #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet + #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet + #"Anzahl_Schienen":0, + "Single-Line_/_Durchfahrt":False, + "Nachpuffer":False, + #"Sensor_optisch_Traverse":0, + "Sensor_optisch_Traverse_Korrektur":0, + #"Sensor_induktiv_Spulenhalter":0, + "Sensor_induktiv_Spulenhalter_Korrektur":0, + #"Bedientableau_2-fach":0, + "Bedientableau_2-fach_Korrektur":0, + #"Interface_Doffer":0, + "Interface_Doffer_Korrektur":0, + #"Weiche":0, + "Weiche_Korrektur":0, + #"Weiche_nach_Flyer_(bipolar)":0, + "Weiche_nach_Flyer_(bipolar)_Korrektur":0, + "Dreifachweiche":0, + "Wechsel":0, + "Stopper":0, + "RA_uni":0, + #"RA_uni_abhebbar":0, + "RA_uni_abhebbar_Korrektur":0, + #"RA_uni_ohne_SPS-Ansteuerung":0, + "RA_uni_ohne_SPS-Ansteuerung_Korrektur":0, + #"RRA_BI_abhebbar":0, + "RRA_BI_abhebbar_Korrektur":0, + "RRA_bi":0, + #"RRA_bi_Korrektur":0, + #"RRA_bi_ohne_SPS-Ansteuerung":0, + "RRA_bi_ohne_SPS-Ansteuerung_Korrektur":0, + #"Doppelstreckenantrieb":0, + "Doppelstreckenantrieb_Korrektur":0, + "RA_bi_abhebbar_(unger._Schiene)":0, + #"Meldelampe_Überstrom":0, + "Meldelampe_Überstrom_Korrektur":0, + #"Hauptschalter_Ein-Meldung":0, + "Hauptschalter_Ein-Meldung_Korrektur":0, + #"Werma_Rundumleuchte_Störung":0, + "Werma_Rundumleuchte_Störung_Korrektur":0, + } neuenhauser_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, @@ -2524,7 +2673,7 @@ if __name__ == '__main__': "antrieb_unidirektional_halbleiter": 1, } eas = EA(Anzahl_EAS) - hw = HW(Anzahl_HW, eas) + hw = HW(Anzahl_HW, mg, eas) emo_eingabe = { "Schaltschrank_aufstellen": 1, "Unterverteiler_montieren": 4,