diff --git a/.rieter_ekalk.py.un~ b/.rieter_ekalk.py.un~ new file mode 100644 index 0000000..bcbd5ef Binary files /dev/null and b/.rieter_ekalk.py.un~ differ diff --git a/convert_.txt b/convert_.txt new file mode 100644 index 0000000..fa7009c --- /dev/null +++ b/convert_.txt @@ -0,0 +1 @@ +{"Bedienelemente_Steuerschrank": 1, "bedienstation_einfach_Zug_Wechseln": 14, "bedienstation_automatische_Umfahrung": 0, "bedienstation_zweifach_Wechs_BCD_10f": 0, "bedienstation_zweifach_Not_Aus_Reset": 10, "EAs_Unterverteiler_direct": 0, "Sensor_Traversenabfrage_optisch": 68, "Reflexionslichtschranke_RSM_DIRECT": 0, "Sensor_Stopper_induktiv": 4, "Seilzugschalter": 0, "Weiche": 35, "Weiche_nach_PM_bipolar": 0, "Dreifach_Weiche_DIRECT": 0, "Kreuzungsweiche": 1, "Stopper": 0, "Ventil_RA_3_2_abhebbar": 4, "Ventil_Doppelstreckenantrieb_5_2_abhebbar": 6, "Blitzleuchte_Stoerung": 6, "Schnittstelle_Flyer_ElectroJet": 4, "Schnittstelle_Flyer_Neuhauser": 0, "FEldbux_UV_EinAusgang": 7, "Spulenumsetzstation": 0, "RA_unidirektional": 4, "RA_unidirektional_abhebbar": 0, "RA_unidirektional_ohne_SPS_Ansteuerung": 0, "RA_bidirektional": 30, "RA_bidirektional_abhebbar": 4, "RA_bidirektional_ohne_SPS_Ansteuerung": 4, "Doppelstreckenantrieb": 6} \ No newline at end of file diff --git a/datei.py b/datei.py new file mode 100644 index 0000000..a9fd206 --- /dev/null +++ b/datei.py @@ -0,0 +1,36 @@ +import json +import math + +anzahl = dict() +anzahl["et200_sp_ea_ebene"] = 1 +anzahl["schaltschrank"] = 1 +# a = 5 * math.ceil((anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 4 )) +a = (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)) + \ + anzahl.get("korrektur_et200_sp_eingangskarte_8_do", 0)) + + + +# details = {'Name': "Bob", +# 'Age' :28} + +# with open('convert.txt', 'w') as convert_file: +# convert_file.write(json.dumps(details)) + +# https://www.geeksforgeeks.org/write-a-dictionary-to-a-file-in-python/ +# Michael Stangl13:56 +# cat a.txt | sort > a_neu.txt + + + +# Fragen: +# EAs Bedienstation automatische umfahrung in excel diff --git a/excelsource.txt b/excelsource.txt new file mode 100644 index 0000000..072c3df --- /dev/null +++ b/excelsource.txt @@ -0,0 +1,40 @@ +Bedienst._2_fach_ Wechs._+_BCD_10f. _ DIR. 0 +Bedienstation_1_fach_Not_Aus +Bedienstation_1_fach_Zug_wechseln 14 +Bedienstation_2_fach_ Not_Aus_Reset 10 +Bedienstation_3_fach 0 +Bedienstation_4_fach 0 +Bedienstation_6_fach 0 +Blitzleuchte_Störung 6 +Doppelstreckenantrieb 6 +Doppelstreckenantriebgemeinsame_Wendung 0 +Dreifach_Weiche 0 +Drucktaster_automatische_Umfahrung 0 +E/As_Unterverteiler_DIRECT 0 +Feldbus_UV_Ein_/Ausgang 7 +Frequenzumrichter 0 +gemeinsame_Weichenrückstellung 0 +gemeinsame_Wendung 0 +Kreuzungsweiche 1 +RA_in_RSM;_bidirektional;_1_gemeinsame_Wendung_je_Seite;_je_Antrieb_ein_Motorschutzschalter 0 +RA_bidirektional 30 +RA_bidirektional_abhebbar 4 +RA_bidirektional_abhebbar_gemeins._Wend. 0 +RA_bidirektional;_ohne_SPS_Ansteuerung 4 +RA_unidirektional 4 +RA_unidirektional_abhebbar_ohne_SPS_Ansteuerung 0 +RA_unidirektional_mit_gemeinsamer_Wendung 0 +RA_unidirektional_abhebbar 0 +Reflexionslichtschranke_RSM_ DIRECT 0 +Schnittstelle_Flyer_ Electro_Jet 4 +Schnittstelle_Putzmaschine_ Electro_Jet +Schnittstelle_Putzmaschine_ Neuenhauser 0 +Seilzugschalter 0 +Sensor_Traversenabfrage_optisch 68 +Sensor_induktiv_ Flyer+PM 4 +Spulenumsetzstation 0 +Stopper 0 +Ventil_Doppelstreckenantrieb_ 5/2 _abhebbar 6 +Ventil_RA_ 3/2 _abhebbar 4 +Weiche 35 +Weiche_nach_PM_ bipolar 0 diff --git a/rieter_ekalk.py b/rieter_ekalk.py index 74e519a..45e2f09 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -288,7 +288,7 @@ class MG(): 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) +\ - self._verbindungsstrecken_w.get("Dreifachweiche", 0) + self._verbindungsstrecken_w.anzahl("Dreifachweiche") zmengen["Wechsel"] = self._flyer_f40._Mengen.get("Wechsel", 0) +\ self._flyer._Mengen.get("Wechsel", 0) zmengen["Stopper"] = self._flyer_f40._Mengen.get("Stopper", 0) @@ -416,7 +416,8 @@ class RSM_direct(Item): self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = math.floor(self._RSM_Anzahl / 5) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) - + def anzahl(self, partname): + return self._Mengen.get(partname, 0) # RSM_FA: class RSM_FA(Item): def __init__(self, anzahl:dict): @@ -837,6 +838,7 @@ class Verbindungsstrecken_Wechsel(Item): self._Mengen["RA_bi_ohne_SPS-Ansteuerung"] = anzahl.get("RA_bi_ohne_SPS-Ansteuerung", 0) self._Mengen["Doppelstreckenantrieb"] = anzahl.get("Doppelstreckenantrieb", 0) + # Puffer class Puffer(Item): def __init__(self, anzahl:dict): @@ -992,13 +994,13 @@ class EA(): self._Anzahl["Sensor_Traversenabfrage_optisch"] = zmengen.get("Sensor_optisch_Traverse", 0) + zmengen.get("Sensor_Spulenprüfung_voll_leer", 0) self._Anzahl["Reflexionslichtschranke_RSM_DIRECT"] = mg.get_value_of_object("rsm_direct", "Lichtschranke_Traverse") - self._Anzahl["Sensor_Stopper_induktiv"] = zmengen.get("Sensor_induktiv_Spulenalter_Zug_positionierung", 0) + self._Anzahl["Sensor_Stopper_induktiv"] = zmengen.get("Sensor_induktiv_Spulenalter_Zug_positionierung", 0) ###f dasselbe wie Sensor induktiv Flyer+PM? self._Anzahl["Seilzugschalter"] = zmengen.get("Seilzugsschalter", 0) self._Anzahl["Weiche"] = zmengen.get("Weiche", 0) self._Anzahl["Weiche_nach_PM_bipolar"] = zmengen.get("Weiche_nach_PM_bipolar", 0) # self._Anzahl["gemeinsame_Weichenrueckstellung"] = zmengen.get(, 0) # Eingabe - self._Anzahl["Dreifach_Weiche_DIRECT"] = zmengen.get("Dreifachweiche", 0) + self._Anzahl["Dreifach_Weiche_DIRECT"] = zmengen.get("Dreifachweiche", 0) self._Anzahl["Kreuzungsweiche"] = mg.get_value_of_object("verbindungsstrecken_wechsel", "Kreuzungsweiche") @@ -1023,9 +1025,7 @@ class EA(): mg.get_value_of_object("putzmaschine_neuenhauser", "Meldelampe_Überstrom") + \ mg.get_value_of_object("flyer_ejet", "Meldelampe_Überstrom") + \ mg.get_value_of_object("puffer", "Meldelampe_Überstrom") - - - + self._Anzahl["Spulenumsetzstation"] = zmengen.get("Spulenumsetzstation", 0) self._Anzahl["RA_unidirektional"] = zmengen.get("RA_uni", 0) self._Anzahl["RA_unidirektional_abhebbar"] =zmengen.get("RA_uni_abhebbar", 0) # self._Anzahl["RA_unidirektional_mit_gemeinsamer_Wendung"] = zmengen.get(, 0) # TODO immer 0 @@ -1045,8 +1045,8 @@ class EA(): return self.EAs[partname][0] def getA(self, partname): return self.EAs[partname][1] - def anzahl(self, partname): - return self._Anzahl.get(partname, 0) + def anzahl(self, partname, defaultv = 0): + return self._Anzahl.get(partname, defaultv) def get_SE(self, partname): num_of_e = self.getE(partname) @@ -1090,7 +1090,7 @@ class HW(): #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet "schaltschrankgehaeuse_b1x1200_zubehoer": 0, "schaltschrankgehaeuse_b2x800_zubehoer": 0, - "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 0, + "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 1, "sps_simatic_s7_cpu315_2_pn_dp": 0, "speicherkarte_fuer_sps_512_kb": 0, "sps_simatic_s7_cpu317_2_pn_dp": 0, @@ -1101,30 +1101,30 @@ class HW(): "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, + "et200_sp_ea_ebene":1, + "netzwerk_fernwartung":1, "abgang_400v":0, "abgang_24_v":0, - "anlagenrechner":0, + "anlagenrechner":1, "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, + "schaltschrank":1, #"unterverteiler_fuer_1neuenhauser_pm":0, "unterverteiler_fuer_1flyer":0, - "unterverteiler_fuer_2flyer":0, + "unterverteiler_fuer_2flyer":2, "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine":0, "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine":0, - "unterverteiler_fuer_puffer":0, + "unterverteiler_fuer_puffer":1, #"unterverteiler_fuer_5_rsm_fa":0, - "korrektur_1_rsm_zusaetzlich_im_unterverteiler":0, + "korrektur_1_rsm_zusaetzlich_im_unterverteiler":-1, #"unterverteiler_fuer_10_rsm_fa":0, + "korrektur_unterverteiler_fuer_10_rsm_fa":-2, #"unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":0, "korrektur_3_rsm_zusaetzlich_im_unterverteiler":0, @@ -1166,8 +1166,8 @@ class HW(): # "halter_fuer_drucktaster":0, ## summe_bedienstationen - "ET200_SP" - #"et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45":0, + "ET200_SP":1, + #"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, @@ -1175,25 +1175,32 @@ class HW(): #"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_mit_potKlemmen":0, + "korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen":0, + # "et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen":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, + "korrektur_et200_sp_base_unit_neue_last":-15, # "et200_sp_base_unit_links_gebrueckt":0, "korrektur_et200_sp_base_unit_links_gebrueckt":0, - # SLIO + "SLIO":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, + "korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO":0, # "slio_eingangskarte_4_de":0, + "korrektur_slio_eingangskarte_4_de":0, # "slio_eingangskarte_8_de":0, + "korrektur_slio_eingangskarte_8_de":0, # "slio_ausgangskarte_4_do":0, + "korrektur_slio_ausgangskarte_4_do":0, # "slio_ausgangskarte_8_do":0, + "korrektur_slio_ausgangskarte_8_do":0, # "slio_power_modul":0, + "korrektur_slio_power_modul":0, # "slio_4_x_dc_24v_4_x_dc_0v":0, + "korrektur_slio_4_x_dc_24v_4_x_dc_0v":0, # "slio_8_x_dc_24v":0, # "slio_8_x_dc_0v":0, + "korrektur_slio_8_x_dc_0v":0, # MATERIAL VOR ORT "movimot_fu_mit_anschaltung":0, @@ -1209,21 +1216,24 @@ class HW(): # "sensorkabel_je_20m":0, # "stopper_weichenkabel_je_5m":0, # "motorkabel_je_30m":0, - "kabelpritschen_leitern_200_60":0, + "kabelpritschen_leitern_200_60":348, "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, + "kleinteile_rohre_schellen_kabelbinder_ect":1.5, # "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, + "korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":-6, # "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":0, + "korrektur_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, + "korrektur_profinetkabel":0, # "schnittstellen_8x1mm2_30m":0, } @@ -1317,13 +1327,13 @@ class HW(): "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_mit_potKlemmen": 23, # 709000014 + "et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen": 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": 175, # 709000500 + "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO": 175, # 709000500 "slio_eingangskarte_4_de": 31, # 709000510 "slio_eingangskarte_8_de": 38, # 709000511 "slio_ausgangskarte_4_do": 39, # 709000021 @@ -1366,8 +1376,106 @@ class HW(): "profinetkabel": 42, # 726001xxx "schnittstellen_8x1mm2_30m": 35, # 725000019 } - - + # Zeit pro Einheit in min + zpe_dienstl_hardwareplanung = { + "schaltschrankgehaeuse_b1x1200_zubehoer": 0, ###f 4200+N12 + "schaltschrankgehaeuse_b2x800_zubehoer": 4200, + "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 4800, + "sps_simatic_s7_cpu315_2_pn_dp": 0, + "speicherkarte_fuer_sps_512_kb": 0, + "sps_simatic_s7_cpu317_2_pn_dp": 0, + "speicherkarte_fuer_sps2_mb": 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, + "et200_sp_ea_ebene":60, + "netzwerk_fernwartung":0, + "abgang_400v":60, + "abgang_24_v":60, + "anlagenrechner":0, + "anlagenrechner_ohne_bildschirm": 0, + "pulteinbau_monitor_srline_rflat_24fhd": 60, + "kurzhubtastatur_kbt06_mit_touchpad_uslayout": 0, + "netzwerk_display_adapter_lindy": 30, + "zusaetzlicher_bildschirm":0, + "schaltschrank":0, + "unterverteiler_fuer_1neuenhauser_pm":1200, + "unterverteiler_fuer_1flyer":720, + "unterverteiler_fuer_2flyer":1020, + "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine":810, + "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine":1110, + "unterverteiler_fuer_puffer":1200, + "unterverteiler_fuer_5_rsm_fa":960, + "unterverteiler_fuer_10_rsm_fa":1020, + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":1200, + "unterverteiler_fuer_4_rsm_direct":3000, + "unterverteiler_fuer_12_rsm_direct":4800, + "unterverteiler_fuer_8_rsm_direct":3900, + "busverteiler_6_rsm_direct":600, + "busverteiler_8_rsm_direct":960 + } + zpe_e_werkstatt = { + "schaltschrankgehaeuse_b1x1200_zubehoer": 0, ###f 2400 + O12 + "schaltschrankgehaeuse_b2x800_zubehoer": 4800, + "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 5160, + "sps_simatic_s7_cpu315_2_pn_dp": 0, + "speicherkarte_fuer_sps_512_kb": 0, + "sps_simatic_s7_cpu317_2_pn_dp": 0, + "speicherkarte_fuer_sps2_mb": 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, + "et200_sp_ea_ebene":120, + "netzwerk_fernwartung":0, + "abgang_400v":90, + "abgang_24_v":90, + "anlagenrechner":0, + "anlagenrechner_ohne_bildschirm": 0, + "pulteinbau_monitor_srline_rflat_24fhd": 240, + "kurzhubtastatur_kbt06_mit_touchpad_uslayout": 0, + "netzwerk_display_adapter_lindy": 120, + "zusaetzlicher_bildschirm":0, + "schaltschrank":0, + "unterverteiler_fuer_1neuenhauser_pm":1200, + "unterverteiler_fuer_1flyer":1020, + "unterverteiler_fuer_2flyer":1200, + "unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine":1140, + "unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine":1200, + "unterverteiler_fuer_puffer":1200, + "unterverteiler_fuer_5_rsm_fa":1020, + "unterverteiler_fuer_10_rsm_fa":1140, + "unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar":1500, + "unterverteiler_fuer_4_rsm_direct":3600, + "unterverteiler_fuer_12_rsm_direct":4800, + "unterverteiler_fuer_8_rsm_direct":4200, + "busverteiler_6_rsm_direct":480, + "busverteiler_8_rsm_direct":480, + "antrieb_unidirektional_halbleiter":10, + "antrieb_bidirektional_halbleiter":10, + "antrieb_unidirektional_schuetz":0, + "antrieb_bidirektional_schuetz":0, + "motorschutzschalter":0, + "wendeschuetzschaltung":0, + "frequenzumrichter":0, + "bedienstation_1fach_kpl":25, + "bedienst_2fach_wechs_bcd_10f":90, + "bedienstation_2fach_kpl":30, + "halter_bedientableau_2fach":30, + "bedienstation_3fach_kpl":25, + "halter_bedientableau_3fach":30, + "bedienstation_4fach_kpl":30, + "halter_bedientableau_4fach":30, + "bedienstation_6fach_kpl":45, + "halter_bedienstation_6fach":30, + "drucktaster_automatische_umfahrung":15, + "halter_fuer_drucktaster":0, + } Keys_of_Vor_Ort = [ "movimot_fu_mit_anschaltung", "sensor_optisch_traverse", @@ -1393,27 +1501,30 @@ class HW(): "kabel_fuer_1fach_bts_zug_wechseln", "zuleitung_75_m_unterverteiler_4x4mm2_400vac", "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", + "korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", + "korrektur_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", + "korrektur_profinetkabel", "schnittstellen_8x1mm2_30m" ] def __init__(self, anzahl:dict, mg: type[MG], eas: type[EA]): self._anzahl = anzahl - 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["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_1515_2"] = anzahl.get("sps_simatic_s7_1515_2", 0) - self._anzahl["sps_simatic_s7_1517_3"] = anzahl.get("sps_simatic_s7_1517_3", 0) - self._anzahl["sps_simatic_s7_1518_4"] = anzahl.get("sps_simatic_s7_1518_4", 0) - self._anzahl["sps_et200_1512sp"] = anzahl.get("sps_et200_1512sp", 0) + self._anzahl["schaltschrankgehaeuse_b1x1200_zubehoer"] = self.mengen.get("schaltschrankgehaeuse_b1x1200_zubehoer", 0) + self._anzahl["schaltschrankgehaeuse_b2x800_zubehoer"] = self.mengen.get("schaltschrankgehaeuse_b2x800_zubehoer", 0) + self._anzahl["schaltschrankgehaeuse_b1x1200+1x800_zubehoer"] = self.mengen.get("schaltschrankgehaeuse_b1x1200+1x800_zubehoer", 0) + self._anzahl["sps_simatic_s7_cpu315_2_pn_dp"] = self.mengen.get("sps_simatic_s7_cpu315_2_pn_dp", 0) + self._anzahl["speicherkarte_fuer_sps_512_kb"] = self.mengen.get("speicherkarte_fuer_sps_512_kb", 0) + self._anzahl["sps_simatic_s7_cpu317_2_pn_dp"] = self.mengen.get("sps_simatic_s7_cpu317_2_pn_dp", 0) + self._anzahl["speicherkarte_fuer_sps2_mb"] = self.mengen.get("speicherkarte_fuer_sps2_mb", 0) + self._anzahl["sps_simatic_s7_1515_2"] = self.mengen.get("sps_simatic_s7_1515_2", 0) + self._anzahl["sps_simatic_s7_1517_3"] = self.mengen.get("sps_simatic_s7_1517_3", 0) + self._anzahl["sps_simatic_s7_1518_4"] = self.mengen.get("sps_simatic_s7_1518_4", 0) + self._anzahl["sps_et200_1512sp"] = self.mengen.get("sps_et200_1512sp", 0) self._anzahl["memory_card_256_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb") + \ anzahl.get("sps_simatic_s7_1515_2") + \ @@ -1422,24 +1533,24 @@ class HW(): 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["et200_sp_ea_ebene"] = self.mengen.get("et200_sp_ea_ebene", 0) # TODO: Violett, nur bedingt ändern + self._anzahl["netzwerk_fernwartung"] = self.mengen.get("netzwerk_fernwartung", 0) + self._anzahl["abgang_400v"] = self.mengen.get("abgang_400v", 0) + self._anzahl["abgang_24_v"] = self.mengen.get("abgang_24_v", 0) + self._anzahl["anlagenrechner"] = self.mengen.get("anlagenrechner", 0) + self._anzahl["anlagenrechner_ohne_bildschirm"] = self.mengen.get("anlagenrechner_ohne_bildschirm", 0) + self._anzahl["pulteinbau_monitor_srline_rflat_24fhd"] = self.mengen.get("pulteinbau_monitor_srline_rflat_24fhd", 0) + self._anzahl["kurzhubtastatur_kbt06_mit_touchpad_uslayout"] = self.mengen.get("kurzhubtastatur_kbt06_mit_touchpad_uslayout", 0) + self._anzahl["netzwerk_display_adapter_lindy"] = self.mengen.get("netzwerk_display_adapter_lindy", 0) + self._anzahl["zusaetzlicher_bildschirm"] = self.mengen.get("zusaetzlicher_bildschirm", 0) # end Violett + self._anzahl["schaltschrank"] = self.mengen.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) - self._anzahl["unterverteiler_fuer_2flyer"] = anzahl.get("unterverteiler_fuer_2flyer", 0) - self._anzahl["unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) - self._anzahl["unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) - self._anzahl["unterverteiler_fuer_puffer"] = anzahl.get("unterverteiler_fuer_puffer", 0) + self._anzahl["unterverteiler_fuer_1flyer"] = self.mengen.get("unterverteiler_fuer_1flyer", 0) + self._anzahl["unterverteiler_fuer_2flyer"] = self.mengen.get("unterverteiler_fuer_2flyer", 0) + self._anzahl["unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"] = self.mengen.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) + self._anzahl["unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"] = self.mengen.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) + self._anzahl["unterverteiler_fuer_puffer"] = self.mengen.get("unterverteiler_fuer_puffer", 0) @@ -1471,55 +1582,35 @@ class HW(): 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? - motoren_uni_rsm_direct = mg.get_value_of_object("rsm_direct", "RA_bi_abhebbar") \ - + mg.get_value_of_object("rsm_direct", "Doppelstreckenantrieb") - - self._anzahl["antrieb_unidirektional_halbleiter"] = motoren_uni_flyer_f40 + motoren_uni_rsm_direct - - motoren_bi_flyer_f40 = mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_BI_abhebbar") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_BI_abhebbar_Korrektur") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_Korrektur") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_ohne_SPS_Ansteuerung") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "RRA_bi_ohne_SPS_Ansteuerung_Korrektur") + \ - mg.get_value_of_object("flyer_f40_ejet_inc_putz", "Doppelstreckenantrieb") - - motoren_uni_rsm_direct = mg.get_value_of_object("flyer_ejet", "RA_bi_abhebbar") + \ - mg.get_value_of_object("flyer_f40_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") ###f rsm oder flyer? - - self._anzahl["antrieb_bidirektional_halbleiter"] = motoren_bi_flyer_f40 + motoren_uni_rsm_direct + self._anzahl["antrieb_unidirektional_halbleiter"] = \ + mg.zusammenfassung().get("RA_uni") +\ + mg.zusammenfassung().get("RA_uni_abhebbar") +\ + mg.zusammenfassung().get("RA_uni_ohne_SPS_Ansteuerung") + # "antrieb_unidirektional_schuetz" TODO wo sind die? in Excel 0 # "antrieb_bidirektional_schuetz" # "motorschutzschalter" TODO von EAS holen? - self._anzahl["frequenzumrichter"] = eas.anzahl.get("frequenzumrichter", 0) + self._anzahl["frequenzumrichter"] = eas.anzahl("frequenzumrichter", 0) # # summe_motorstarter - 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["bedienstation_1fach_kpl"] = eas.anzahl("bedienstation_1fach_Not_Aus", 0) + eas.anzahl("bedienstation_einfach_Zug_Wechseln", 0) ###f "bedienstation_1fach_Not_Aus" keine Anzahl + self._anzahl["bedienst_2fach_wechs_bcd_10f"] = eas.anzahl("bedienst_2fach_wechs_bcd_10f", 0) + self._anzahl["bedienstation_2fach_kpl"] = eas.anzahl("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["bedienstation_3fach_kpl"] = eas.anzahl("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["bedienstation_4fach_kpl"] = eas.anzahl("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["bedienstation_6fach_kpl"] = eas.anzahl("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 - # # ET200_SP ###f wird eingegeben + self._anzahl["ET200_SP"] = self.mengen.get("ET200_SP", 0) 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) +\ @@ -1531,7 +1622,7 @@ class HW(): 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["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = self.mengen.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 +\ @@ -1544,42 +1635,46 @@ class HW(): 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["korrektur_et200_sp_eingangskarte_8_de"] = self.mengen.get("korrektur_et200_sp_eingangskarte_8_de", 0) + self._anzahl["et200_sp_eingangskarte_16_de"] = self.mengen.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)) + + anzahl.get("korrektur_et200_sp_eingangskarte_8_do", 0) + + mg.zusammenfassung().get("Kreuzungsweiche") * 2) + self._anzahl["korrektur_et200_sp_eingangskarte_8_do"] = self.mengen.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_mit_potKlemmen"] = 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_mit_potKlemmen", 0)) + self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0) + self._anzahl["et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen"] = anzahl.get("ET200_SP", 0) * (math.ceil((anzahl.get("et200_sp_eingangskarte_8_de", 0) + + anzahl.get("et200_sp_eingangskarte_8_do", 0))) - + anzahl.get("et200_sp_base_unit_neue_last_mit_potKlemmen", 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["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.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_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) + 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))) - + 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"] = self.mengen.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0) - # # SLIO ###f eingabewert + self._anzahl["SLIO"] = self.mengen.get("SLIO", 0) - self._anzahl["et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = anzahl.get("SLIO", 0) * (anzahl.get("et200_sp_ea_ebene", 0) +\ + self._anzahl["et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"] = 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) +\ @@ -1594,53 +1689,192 @@ class HW(): 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) + anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO", 0)) + self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"] = self.mengen.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO", 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" - # "slio_power_modul" - # "slio_4_x_dc_24v_4_x_dc_0v" - # "slio_8_x_dc_24v" - # "slio_8_x_dc_0v" + anzahl.get("unterverteiler_fuer_2flyer", 0) * 14 +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) * 6 +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 13 +\ + anzahl.get("unterverteiler_fuer_puffer", 0) * 9 +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) * 7 +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) * 15 +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) * 16 +\ + anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) * 7 +\ + anzahl.get("busverteiler_8_rsm_direct", 0) * 16 +\ + anzahl.get("korrektur_slio_eingangskarte_4_de", 0)) + self._anzahl["korrektur_slio_eingangskarte_4_de"] = self.mengen.get("korrektur_slio_eingangskarte_4_de", 0) + self._anzahl["slio_eingangskarte_8_de"] = anzahl.get("SLIO", 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) * 3 +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 7 +\ + 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) * 8 +\ + anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) * 2 +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) * 4 +\ + anzahl.get("busverteiler_8_rsm_direct", 0) * 8 +\ + anzahl.get("korrektur_slio_eingangskarte_8_de", 0)) + self._anzahl["korrektur_slio_eingangskarte_8_de"] = self.mengen.get("korrektur_slio_eingangskarte_8_de", 0) + self._anzahl["slio_ausgangskarte_4_do"] = anzahl.get("SLIO", 0) * (anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) * 12 +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) * 7 +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) * 14 +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) * 7 +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 14 +\ + anzahl.get("unterverteiler_fuer_puffer", 0) * 22 +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) * 16 +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) * 22 +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) * 16 +\ + anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) * 24 +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) * 44 +\ + anzahl.get("busverteiler_8_rsm_direct", 0) * 16 +\ + anzahl.get("korrektur_slio_ausgangskarte_4_do", 0)) + self._anzahl["korrektur_slio_ausgangskarte_4_do"] = self.mengen.get("korrektur_slio_ausgangskarte_4_do", 0) + self._anzahl["slio_ausgangskarte_8_do"] = anzahl.get("SLIO", 0) * ((anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 4 +\ + anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) * 12 +\ + anzahl.get("unterverteiler_fuer_1flyer", 0) * 8 +\ + anzahl.get("unterverteiler_fuer_2flyer", 0) * 14 +\ + anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) * 8 +\ + anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 14 +\ + anzahl.get("unterverteiler_fuer_puffer", 0) * 22 +\ + anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) * 16 +\ + anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) * 22 +\ + anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) * 16 +\ + anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) * 24 +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) * 44 +\ + anzahl.get("busverteiler_8_rsm_direct", 0) * 16) / 2 +\ + anzahl.get("korrektur_slio_ausgangskarte_8_do", 0)) + self._anzahl["korrektur_slio_ausgangskarte_8_do"] = self.mengen.get("korrektur_slio_ausgangskarte_8_do", 0) + self._anzahl["slio_power_modul"] = anzahl.get("SLIO", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO", 0) * 1 +\ + anzahl.get("korrektur_slio_power_modul", 0)) + self._anzahl["korrektur_slio_power_modul"] = self.mengen.get("korrektur_slio_power_modul") + self._anzahl["slio_4_x_dc_24v_4_x_dc_0v"] = anzahl.get("SLIO", 0) * (math.ceil((anzahl.get("slio_eingangskarte_4_de") + + anzahl.get("korrektur_slio_4_x_dc_24v_4_x_dc_0v", 0)))) + self._anzahl["korrektur_slio_4_x_dc_24v_4_x_dc_0v"] = self.mengen.get("korrektur_slio_4_x_dc_24v_4_x_dc_0v", 0) + self._anzahl["slio_8_x_dc_24v"] = anzahl.get("slio_8_x_dc_0v", 0) ###f + self._anzahl["slio_8_x_dc_0v"] = anzahl.get("SLIO", 0) * ((anzahl.get("slio_eingangskarte_8_de", 0) + + (anzahl.get("slio_ausgangskarte_4_do", 0) / 2)) * 1 + + anzahl.get("korrektur_slio_8_x_dc_0v", 0)) + self._anzahl["korrektur_slio_8_x_dc_0v"] = anzahl.get("korrektur_slio_8_x_dc_0v") + # # Summe_material_in_ll # # MATERIAL VOR ORT - # "movimot_fu_mit_anschaltung" - # "sensor_optisch_traverse" - # "sensorhalter_ohne_sensor_" - # "reflexionslichtschranke_rsm_direct" - # "stoppersensor_induktiv_mit_halter" - # "sensor_spulenpruefung_voll_leer" - # "seilzugschalter" - # "seil_fuer_seilzugschalter" - # "blitzleuchte" - # "spulenumsetzstation" - # "sensorkabel_je_20m" - # "stopper_weichenkabel_je_5m" - # "motorkabel_je_30m" - # "kabelpritschen_leitern_200_60" - # "kabelpritsche_rsm_100_60" - # "kabelpritsche_rsm_50_35" - # "klemmkasten_rsm" - # "klemmkasten_direct_in_rsm" - # "erdung" - # "kleinteile_rohre_schellen_kabelbinder_ect" - - # "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" - + self._anzahl["movimot_fu_mit_anschaltung"] = anzahl.get("movimot_fu_mit_anschaltung", 0) + self._anzahl["sensor_optisch_traverse"] = eas.anzahl('Sensor_Traversenabfrage_optisch') + ###f weder berechnet noch befüllt self._anzahl["sensorhalter_ohne_sensor_"] + self._anzahl["reflexionslichtschranke_rsm_direct"] = eas.anzahl("Reflexionslichtschranke_RSM_DIRECT", 0) + self._anzahl["stoppersensor_induktiv_mit_halter"] = eas.anzahl("Sensor_Stopper_induktiv") ###f dasselbe wie Sensor induktiv Flyer+PM?=$EAs.B39 + self._anzahl["sensor_spulenpruefung_voll_leer"] = mg.zusammenfassung().get("Sensor_Spulenprüfung_voll_leer", 0) + self._anzahl["seilzugschalter"] = eas.anzahl("Seilzugschalter", 0) + self._anzahl["seil_fuer_seilzugschalter"] = anzahl.get("seil_fuer_seilzugschalter") + self._anzahl["blitzleuchte"] = eas.anzahl("Blitzleuchte_Stoerung", 0) + self._anzahl["spulenumsetzstation"] = eas.anzahl("Spulenumsetzstation", 0) + self._anzahl["sensorkabel_je_20m"] = mg.get_value_of_object("rsm_direct", "Lichtschranke_Traverse") +\ + mg.zusammenfassung().get("Sensor_optisch_Traverse") +\ + mg.zusammenfassung().get("Sensor_induktiv_Spulenalter_Zug_positionierung") +\ + mg.zusammenfassung().get("Sensor_Spulenprüfung_voll_leer") +\ + mg.zusammenfassung().get("Werma_Rundumleuchte_Störung") + self._anzahl["stopper_weichenkabel_je_5m"] = eas.get_SA("Weiche") +\ + eas.get_SA("Weiche_nach_PM_bipolar") +\ + eas.get_SA("gemeinsame_Weichenrueckstellung") +\ + eas.get_SA("Dreifach_Weiche_DIRECT") +\ + eas.get_SA("Kreuzungsweiche") +\ + eas.get_SA("Stopper") +\ + eas.get_SA("Ventil_RA_3_2_abhebbar") +\ + eas.get_SA("Ventil_Doppelstreckenantrieb_5_2_abhebbar") +\ + eas.get_SA("Blitzleuchte_Stoerung") + self._anzahl["motorkabel_je_30m"] = mg.zusammenfassung().get("RA_uni", 0) +\ + mg.zusammenfassung().get("RA_uni_abhebbar", 0) +\ + mg.zusammenfassung().get("RA_uni_ohne_SPS_Ansteuerung", 0) +\ + mg.zusammenfassung().get("RA_bi", 0) +\ + mg.zusammenfassung().get("RA_bi_ohne_SPS-Ansteuerung", 0) +\ + mg.zusammenfassung().get("RA_bi_abhebbar", 0) +\ + mg.zusammenfassung().get("Doppelstreckenantrieb", 0) + self._anzahl["kabelpritschen_leitern_200_60"] = anzahl.get("kabelpritschen_leitern_200_60", 0) + self._anzahl["kabelpritsche_rsm_100_60"] = anzahl.get("kabelpritsche_rsm_100_60", 0) + self._anzahl["kabelpritsche_rsm_50_35"] = anzahl.get("kabelpritsche_rsm_50_35", 0) + self._anzahl["klemmkasten_rsm"] = mg.zusammenfassung().get("klemmkasten_rsm", 0) + self._anzahl["klemmkasten_direct_in_rsm"] = eas.anzahl("bedienstation_zweifach_Wechs_BCD_10f", 0) + self._anzahl["erdung"] = anzahl.get("zuleitung_75_m_unterverteiler_4x4mm2_400vac", 0) +\ + anzahl.get("motorkabel_je_30m", 0) / 2 + self._anzahl["kleinteile_rohre_schellen_kabelbinder_ect"] = anzahl.get("motorkabel_je_30m", 0) + self._anzahl["kabel_fuer_klemmkasten_und_bts_60m"] = anzahl.get("bedienst_2fach_wechs_bcd_10f", 0) +\ + anzahl.get("bedienstation_2fach_kpl", 0) +\ + anzahl.get("halter_bedientableau_2fach", 0) +\ + anzahl.get("bedienstation_3fach_kpl", 0) +\ + anzahl.get("halter_bedientableau_3fach", 0) +\ + anzahl.get("halter_bedientableau_4fach", 0) +\ + anzahl.get("bedienstation_4fach_kpl", 0) +\ + anzahl.get("bedienstation_6fach_kpl", 0) + self._anzahl["kabel_fuer_1fach_bts_zug_wechseln"] = anzahl.get("bedienstation_1fach_kpl", 0) + self._anzahl["zuleitung_75_m_unterverteiler_4x4mm2_400vac"] = 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_12_rsm_direct", 0) +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\ + anzahl.get("busverteiler_8_rsm_direct", 0) + self._anzahl["zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = 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_12_rsm_direct", 0) +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\ + anzahl.get("busverteiler_8_rsm_direct", 0) +\ + anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) + self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) + self._anzahl["zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = 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_12_rsm_direct", 0) +\ + anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\ + anzahl.get("busverteiler_8_rsm_direct", 0) +\ + anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0) + self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0) + if 'direct' in mg.get_deckblatt_value("SYSTEM"): + self._anzahl["zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm"] = mg.get_deckblatt_value("RSM") + else: + self._anzahl["zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm"] = 0 + if 'direct' in mg.get_deckblatt_value("SYSTEM"): + self._anzahl["zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm"] = mg.get_deckblatt_value("RSM") +\ + anzahl.get("klemmkasten_rsm", 0) + else: + self._anzahl["zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm"] = anzahl.get("klemmkasten_rsm", 0) + self._anzahl["profinetkabel"] = anzahl.get("sps_simatic_s7_1517_3", 0) +\ + anzahl.get("sps_simatic_s7_1515_2", 0) +\ + anzahl.get("sps_simatic_s7_cpu315_2_pn_dp", 0) +\ + anzahl.get("sps_simatic_s7_cpu317_2_pn_dp", 0) +\ + anzahl.get("sps_et200_1512sp", 0) +\ + anzahl.get("zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) +\ + anzahl.get("zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0) +\ + anzahl.get("korrektur_profinetkabel", 0) + self._anzahl["korrektur_profinetkabel"] = anzahl.get("korrektur_profinetkabel", 0) + self._anzahl["schnittstellen_8x1mm2_30m"] = mg.zusammenfassung().get("Interface_Putzmaschine", 0) +\ + mg.zusammenfassung().get("Interface_Doffer", 0) # remove all elements with the number of 0. They are of no use @@ -1685,8 +1919,35 @@ class HW(): return res - def summe_h_unterverteiler(self): - """ gibt dies Summer der Stunden zur Montage der Unterverteiler zurück""" + def summe_h_unterverteiler_hardware(self): + """ gibt dies Summer der Stunden zur Montage der Unterverteiler hardware 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", + ] + zeiten = dict() + res = 0 + for k in keys_unterverteiler: + anz = self._anzahl.get(k, 0) + dauer = anz * self.zpe_dienstl_hardwareplanung[k] / 60 + zeiten[k] = dauer + res += dauer + return res + def summe_h_unterverteiler_e_werkstatt(self): ###f in Excel Antrieb unidirektional (Halbleiter) Antrieb bidirektional (Halbleiter) miteinberechnet + + """ gibt dies Summer der Stunden zur Montage der Unterverteiler E-Werkstatt zurück""" keys_unterverteiler = [ "unterverteiler_fuer_1neuenhauser_pm", "unterverteiler_fuer_1flyer", @@ -1706,12 +1967,35 @@ class HW(): res = 0 for k in keys_unterverteiler: anz = self._anzahl.get(k, 0) - preis = anz * self.ep[k] - res += preis + dauer = anz * self.zpe_e_werkstatt[k] / 60 + res += dauer return res - def summe_h_schaltschrank(self): - """ gibt die Summer der Stunden zur Montage des Schaltschranks zurück""" + def summe_h_bedienstationen(self): + """ gibt die Summer der Stunden zur Montage der Bedienstationen zurück""" + keys_bedienstationen = [ + "bedienstation_1fach_kpl", + "bedienst_2fach_wechs_bcd_10f", + "bedienstation_2fach_kpl", + "halter_bedientableau_2fach", + "bedienstation_3fach_kpl", + "halter_bedientableau_3fach", + "bedienstation_4fach_kpl", + "halter_bedientableau_4fach", + "bedienstation_6fach_kpl", + "halter_bedienstation_6fach", + "drucktaster_automatische_umfahrung", + "halter_fuer_drucktaster" + ] + + res = 0 + for k in keys_bedienstationen: + anz = self._anzahl.get(k, 0) + dauer = anz * self.zpe_e_werkstatt[k] / 60 + res += dauer + return res + def summe_h_schaltschrank_hardware(self): + """ gibt die Summer der Stunden zur Montage des Schaltschranks Hardware zurück""" keys_schaltschrank = [ "schaltschrankgehaeuse_b1x1200_zubehoer" "schaltschrankgehaeuse_b2x800_zubehoer", @@ -1741,8 +2025,42 @@ class HW(): res = 0 for k in keys_schaltschrank: anz = self._anzahl.get(k, 0) - preis = anz * self.ep[k] - res += preis + dauer = anz * self.zpe_dienstl_hardwareplanung[k] / 60 + res += dauer + return res + def summe_h_schaltschrank_e_werkstatt(self): + """ gibt die Summer der Stunden zur Montage des Schaltschranks in der E-Werkstatt zurück""" + keys_schaltschrank = [ + "schaltschrankgehaeuse_b1x1200_zubehoer", + "schaltschrankgehaeuse_b2x800_zubehoer", + "schaltschrankgehaeuse_b1x1200+1x800_zubehoer", + "sps_simatic_s7_cpu315_2_pn_dp", + "speicherkarte_fuer_sps_512_kb", + "sps_simatic_s7_cpu317_2_pn_dp", + "speicherkarte_fuer_sps2_mb", + "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", + "anlagenrechner_ohne_bildschirm", + "pulteinbau_monitor_srline_rflat_24fhd", + "kurzhubtastatur_kbt06_mit_touchpad_uslayout", + "netzwerk_display_adapter_lindy", + "zusaetzlicher_bildschirm", + ] + + res = 0 + for k in keys_schaltschrank: + anz = self._anzahl.get(k, 0) + dauer = anz * self.zpe_e_werkstatt[k] / 60 + res += dauer return res class Dienstleistung(): @@ -1772,7 +2090,7 @@ class Dienstleistung(): #Unterverteilerbau #Klemmkastenbau_je_2h #Bedientableaubau - "Vormontage_im_Haus": 0, + "Vormontage_im_Haus": 0 } def __init__(self, Anzahl_DL, hw: type[HW]): @@ -1780,7 +2098,6 @@ class Dienstleistung(): self._Hours = Anzahl_DL - # "Pflichtenheft_Autom_Schnittstellen": 0, ## Hardwareplanung @@ -1790,17 +2107,22 @@ class Dienstleistung(): FaktorDispo = 0.2 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 + self._Hours["Erstellung_Steuerungslayout"] = hw.summe_h_unterverteiler_hardware() * FaktorLayout + self._Hours["Schaltplanerstellung_incl_Korrekturen"] = hw.summe_h_unterverteiler_hardware() * FaktorSchaltplan + self._Hours["Projektkoordination"] = hw.summe_h_unterverteiler_hardware() * FaktorProjektkoord + self._Hours["Materialdispo"] = hw.summe_h_unterverteiler_hardware() * FaktorDispo + self._Hours["Abstimmung_mit_E_Werkstatt"] = hw.summe_h_unterverteiler_hardware() * FaktorAbstimmung + self._Hours["Erstellen_E_Montageunterlagen"] = hw.summe_h_unterverteiler_hardware() * FaktorMontageUnterlagen # Test_und_Installation - 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["PC_Installation"] = hw.anzahl("anlagenrechner") * hw.zpe_e_werkstatt.get("anlagenrechner") / 60 *\ + (hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer") * + hw.zpe_e_werkstatt.get("schaltschrankgehaeuse_b1x1200_zubehoer") / 60 + + hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer") * + hw.zpe_e_werkstatt.get("schaltschrankgehaeuse_b2x800_zubehoer") / 60 + + hw.anzahl("schaltschrankgehaeuse_b1x1200+1x800_zubehoer")) *\ + hw.zpe_e_werkstatt.get( + "schaltschrankgehaeuse_b1x1200+1x800_zubehoer") / 60 * 8 + self._Hours["Oberfläche_Simulation"] = 0 #TODO was heisst hier bedingt ändern? self._Hours["SPS_Test_im_Haus_Simulation"] = 0 ## Dokumentation self._Hours["Bedienerhandbuch"] = 0 @@ -1808,12 +2130,20 @@ class Dienstleistung(): 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 #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? + self._Hours["Schaltschrankbau"] = hw.summe_h_schaltschrank_e_werkstatt() + self._Hours["Unterverteilerbau"] = hw.summe_h_unterverteiler_e_werkstatt() ###f in excel noch Antrieb unidirektional (Halbleiter) + # Antrieb bidirektional (Halbleiter) miteinberechnet + self._Hours["Klemmkastenbau_je_2h"] = (hw.anzahl("klemmkasten_rsm") + + hw.anzahl("klemmkasten_direct_in_rsm")) * 2 + self._Hours["Bedientableaubau"] = hw.anzahl("bedienstation_1fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_1fach_kpl") / 60 +\ + hw.anzahl("bedienst_2fach_wechs_bcd_10f") * hw.zpe_e_werkstatt.get("bedienst_2fach_wechs_bcd_10f") / 60 +\ + hw.anzahl("bedienstation_2fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_2fach_kpl") / 60 +\ + hw.anzahl("bedienstation_3fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_3fach_kpl") / 60 +\ + hw.anzahl("bedienstation_4fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_4fach_kpl") / 60 +\ + hw.anzahl("bedienstation_6fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_6fach_kpl") / 60 +\ + hw.anzahl("drucktaster_automatische_umfahrung") * hw.zpe_e_werkstatt.get("drucktaster_automatische_umfahrung") + self._Hours["Vormontage_im_Haus"] = 0 # TODO: Nur bedingt ändern? ###f warum hiuer = 0 und nicht = anzahl.get("Vormontage_im_Haus")? def __repr__(self): return repr(self._Hours) @@ -1823,10 +2153,44 @@ class Dienstleistung(): def summe_stunden(self): """returns hours necessary""" - return 0 - - def stunden_elektrowerkstatt(self): - return 0 + hours_necessary = self.stunden_hardwareplanung_test_installation() +\ + self.get_hours_of("Bedienerhandbuch") +\ + self.get_hours_of("SPS_Doku") +\ + self.get_hours_of("PC_Doku") +\ + self.stunden_elektrowerkstatt() + return hours_necessary + def stunden_hardwareplanung_test_installation(self): + """return hours of hardware-bucheting, test and installation""" + keys_hardwareplanung = [ + "Pflichtenheft_Autom_Schnittstellen", + "Erstellung_Steuerungslayout", + "Schaltplanerstellung_incl_Korrekturen", + "Projektkoordination", + "Materialdispo", + "Abstimmung_mit_E_Werkstatt", + "Erstellen_E_Montageunterlagen", + "PC_Installation", + "Oberfläche_Simulation", + "SPS_Test_im_Haus_Simulation" + ] + res = 0 + for k in keys_hardwareplanung: + dauer = self.get_hours_of(k) + res += dauer + return res + def stunden_elektrowerkstatt(self): ###f warum anderer wert als bei hardware-tabelle? + keys_elektrowerkstatt = [ + "Schaltschrankbau", + "Unterverteilerbau", + "Klemmkastenbau_je_2h", + "Bedientableaubau", + "Vormontage_im_Haus" + ] + res = 0 + for k in keys_elektrowerkstatt: + dauer = self.get_hours_of(k) + res += dauer + return res def stunden_elektro_Landsberg(self): return 0 @@ -1867,8 +2231,8 @@ class EMO(): 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["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)) self._Mengen["Motor_verdrahten_und_anschliessen"] = self.montagezeiten.get("Motor_verdrahten_und_anschliessen", 0) * mg.zusammenfassung().get("Gesamtanzahl_Antriebe",0) @@ -2191,6 +2555,7 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(zf['Sensor_optisch_Traverse'], 68) self.assertEqual(zf['Sensor_induktiv_Spulenalter_Zug_positionierung'], 4) self.assertEqual(zf['Sensor_Spulenprüfung_voll_leer'], 0) + self.assertEqual(zf['Seilzugsschalter'], 0) self.assertEqual(zf['Drucktaster_automatische_Umfahrung'], 0) self.assertEqual(zf['Bedientableau_1fach'], 14) self.assertEqual(zf['Bedientableau_2fach'], 10) @@ -2214,12 +2579,10 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(zf['RA_bi_abhebbar'], 4) self.assertEqual(zf['Doppelstreckenantrieb'], 6) self.assertEqual(zf['gemeinsame_Wendung'], 0) - self.assertEqual(zf['Seilzugsschalter'], 0) self.assertEqual(zf['klemmkasten_rsm'], 2) - Anzahl_EAS = { - } + Anzahl_EAS = {} eas = EA(Anzahl_EAS, mg) # eas.gesamt_E() @@ -2276,8 +2639,8 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(eas.get_SEA('Frequenzumrichter'), (0, 0)) - # self.assertEqual(eas.gesamt_E(), 152) - # self.assertEqual(eas.gesamt_A(), 216) + 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() @@ -2306,6 +2669,30 @@ class TestObjectMethods(unittest.TestCase): } emo = EMO(eas, hw, mg) + #DL + Anzahl_DL = {} + dl = Dienstleistung(Anzahl_DL, hw) + #self.assertEqual(dl.stunden_hardwareplanung_test_installation(), 225) + #self.assertEqual(dl.stunden_elektrowerkstatt(), 205) + #self.assertEqual(dl.summe_stunden(), 430) + self.assertEqual(dl.get_hours_of("Pflichtenheft_Autom_Schnittstellen"), 0) + self.assertEqual(dl.get_hours_of("Erstellung_Steuerungslayout"), 42) + self.assertEqual(dl.get_hours_of("Schaltplanerstellung_incl_Korrekturen"), 100) + self.assertEqual(dl.get_hours_of("Projektkoordination"), 25) + self.assertEqual(dl.get_hours_of("Materialdispo"), 33) + self.assertEqual(dl.get_hours_of("Abstimmung_mit_E_Werkstatt"), 8) + self.assertEqual(dl.get_hours_of("Erstellen_E_Montageunterlagen"), 8) + self.assertEqual(dl.get_hours_of("PC_Installation"), 8) + self.assertEqual(dl.get_hours_of("Oberfläche_Simulation"), 0) + self.assertEqual(dl.get_hours_of("SPS_Test_im_Haus_Simulation"), 0) + self.assertEqual(dl.get_hours_of("Bedienerhandbuch"), 16) + self.assertEqual(dl.get_hours_of("SPS_Doku"), 15) + self.assertEqual(dl.get_hours_of("PC_Doku"), 0) + self.assertEqual(dl.get_hours_of("Schaltschrankbau"), 88) + self.assertEqual(dl.get_hours_of("Unterverteilerbau"), 102) + self.assertEqual(dl.get_hours_of("Klemmkastenbau_je_2h"), 4) + self.assertEqual(dl.get_hours_of("Bedientableaubau"), 11) + self.assertEqual(dl.get_hours_of("Vormontage_im_Haus"), 0) # def test_deckblatt(self): # deckblatt_eingabe = {