import rieter_ekalk as rek import unittest import pandas as pd class TestObjectMethods(unittest.TestCase): # def test_A_JayJay(self): # # Anzahl der für das Projekt benutzten # Anzahl_MG = { # "SYSTEM": "FA", # "RSM":14, # "Flyer":4, # "Flyer_Puffer":2, # "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, # "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, # "Neuenhauser-Putzmaschine":0, # "Neuenhauser-Putzmaschine_Vorpuffer":0, # "Neuenhauser-Putzmaschine_Nachpuffer":0, # "Cason-Putzmaschine":0, # "Cason-Putzmaschine_Vorpuffer":0, # "Cason-Putzmaschine_Nachpuffer":0, # "Puffer":1, # "Anzahl_der_Pufferstrecken_pro_Puffer":5, # "Begegnungsstrecke_Bypass":2, # "Turm":0, # "Turm_Anzahl_Wendlungen":0, # } # rsm_direct_eingabe = { # } # rsm_fa_eingabe = { # "Flex_A_Premium":False, # braucht man das noch? # "Getriebe_in_der_Mitte":False, # braucht man das noch? # "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? # "Sensor_optisch_Traverse_zusätzlich":6, # "Bedientableau_1fach_Korrektur":0, # "Bedientableau_2fach_Korrektur":4, # "Weiche_Korrektur":4, # "RRA_bi_Korrektur":0, # "RRA_bi_auf_Haupstrecke":10, # "RRA_uni_Begegnung":4, # "gemeinsame_Wendung":0, # "Mit_Drucktaster_Korrektur":0, # "Meldelampe_Überstrom_Korrektur":0, # "Hauptschalter_Ein-Meldung_Korrektur":0, # "Werma_Rundumleuchte_Störung_Korrektur":0, # "klemmkasten_rsm":2, # } # 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_2fach":0, # "Bedientableau_2fach_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, # #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen # #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen # #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen # #"Anzahl_Vorstaustrecken":0, # #"Anzahl_Nachstaustrecken":0, # #"Sensor_optisch_Traverse":0, # "Sensor_optisch_Traverse_Korrektur":0, # #"Sensorik_Zugpositionierung":0, # #"Sensor_WT18_Spulenprüfung_voll_leer":0, # #"Bedientableau_2fach":0, # "Bedientableau_2fach_Korrektur":0, # #"Interface_Putzmaschine":0, # #"Weiche":0, # "Weiche_Korrektur":0, # #"Weiche_nach_PM_bipolar":0, # #"RA_uni_abhebbar":0, # "RA_uni_abhebbar_Korrektur":0, # #"RA_uni_ohne_SPS_Ansteuerung":0, # #"RA_uni_abhebbar_unger_Sch":0, # #"Doppelstreckenantrieb":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, # } # flyer_eingabe = { # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # #"Anzahl":0, # #"Flyer":0, # äquivalent zu 'Anzahl' # #"Anzahl_Schienen:":0, # #"Sensor_optisch_Traverse":0, # "Sensor_optisch_Traverse_Korrektur":0, # #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, # #"Bedientableau_2fach":0, # #"Interface_Doffer":0, # #"Weiche":0, # "Weiche_Korrektur":0, # #"Weiche_nach_Flyer_bipolar":0, # "Dreifachweiche":0, # #"Wechsel":0, # "Wechsel_Korrektur":0, # #"RA_bi_ohne_SPS-Ansteuerung":0, # #"RA_bi_abhebbar":0, # "RA_bi_abhebbar_Korrektur":0, # "RA_bi":4, # #"Doppelstreckenantrieb":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, # } # verbindungsstrecken_w_eingabe = { # #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # #"Sensor_optisch_Traverse":0, # "Bedientableau_1fach":0, # "Bedientableau_2fach":0, # "Bedientableau_14fach":0, # "Weiche":0, # "Dreifachweiche":0, # "Kreuzungsweiche":1, # "Werma_Rundumleuchte_Störung":0, # "RA_uni":0, # "RA_uni_ohne_SPS_Ansteuerung":0, # "RA_bi":0, # "RA_bi_ohne_SPS-Ansteuerung":0, # "Doppelstreckenantrieb":0 # } # puffer_eingabe = { # # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # # "Anzahl":0, # # "Puffer":0, #äquivalent zu Anzahl # # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # # "Anzahl_Staustrecken":0, # # "Sensor_optisch_Traverse":0, # "Sensor_optisch_Traverse_Korrektur": 1, # # "Weiche":0, # "Weiche_Korrektur": 0, # "RA_bi_ungerade_Schiene": 2, # # "Doppelstreckenantrieb":0, # # "Meldelampe_Überstrom":0, # "Meldelampe_Überstrom_Korrektur": 0, # # "Hauptschalter_Ein_Meldung":0, # "Hauptschalter_Ein-Meldung_Korrektur": 0, # } # turm_eingabe = { # "RA_bi_Korrektur":0, # #"RA_bi_ohne_SPS":0, # "RA_bi_ohne_SPS_Korrektur":0, # #"Bedientableau_2fach":0, # } # mg = rek.MG(Anzahl_MG, # rsm_direct=rsm_direct_eingabe, # rsm_fa=rsm_fa_eingabe, # flyer_f40=flyer_f40_eingabe, # neuenhauser=neuenhauser_eingabe, # flyer=flyer_eingabe, # verbindungsstrecken_w=verbindungsstrecken_w_eingabe, # puffer=puffer_eingabe, # turm=turm_eingabe) # # check data of Mengengerüst # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Anzahl_RSM'), 14) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Flex_A_Premium'), False) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Getriebe_in_der_Mitte'), False) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'RSM_Einfahrt_Ein_Beidseitig'), False) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Sensor_optisch_Traverse'), 20) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Sensor_optisch_Traverse_zusätzlich'), 6) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_1fach'), 14) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_1fach_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_2fach'), 6) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_2fach_Korrektur'), 4) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Weiche'), 18) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Weiche_Korrektur'), 4) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi'), 24) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi_auf_Haupstrecke'), 10) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi_ohne_SPS_Ansteuerung'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'gemeinsame_Wendung'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Seilzugschalter'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Mit_Drucktaster'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Mit_Drucktaster_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Meldelampe_Überstrom'), 2) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Meldelampe_Überstrom_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Hauptschalter_Ein_Meldung'), 2) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Hauptschalter_Ein-Meldung_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Werma_Rundumleuchte_Störung'), 2) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'Werma_Rundumleuchte_Störung_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('rsm_fa', 'klemmkasten_rsm'), 2) # # check data of the flyer # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Anzahl'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Anzahl_Schienen'), 2) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Flyer'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Sensor_optisch_Traverse'), 28) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Sensor_optisch_Traverse_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Sensor_induktiv_Spulenalter_Zug_positionierung'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Bedientableau_2fach'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Interface_Doffer'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Weiche'), 8) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Weiche_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Weiche_nach_Flyer_bipolar'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Dreifachweiche'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Wechsel'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Wechsel_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_ohne_SPS-Ansteuerung'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_abhebbar'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_abhebbar_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Doppelstreckenantrieb'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_abhebbar_unger_Schiene'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Meldelampe_Überstrom'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Meldelampe_Überstrom_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Hauptschalter_Ein_Meldung'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Hauptschalter_Ein-Meldung_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Werma_Rundumleuchte_Störung'), 4) # self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Werma_Rundumleuchte_Störung_Korrektur'), 0) # # Verbindungsstrecken Wechsel # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Sensor_optisch_Traverse'), 10) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Bedientableau_1fach'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Bedientableau_2fach'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Bedientableau_14fach'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Weiche'), 4) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Dreifachweiche'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Kreuzungsweiche'), 1) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Werma_Rundumleuchte_Störung'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_uni'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_uni_ohne_SPS_Ansteuerung'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_bi'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_bi_ohne_SPS-Ansteuerung'), 0) # self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Doppelstreckenantrieb'), 0) # # Puffer # self.assertEqual(mg.get_value_of_object('puffer', 'Anzahl'), 1) # self.assertEqual(mg.get_value_of_object('puffer', 'Anzahl_Staustrecken'), 5) # self.assertEqual(mg.get_value_of_object('puffer', 'Sensor_optisch_Traverse'), 6) # self.assertEqual(mg.get_value_of_object('puffer', 'Sensor_optisch_Traverse_Korrektur'), 1) # self.assertEqual(mg.get_value_of_object('puffer', 'Weiche'), 5) # self.assertEqual(mg.get_value_of_object('puffer', 'RA_bi_ungerade_Schiene'), 2) # self.assertEqual(mg.get_value_of_object('puffer', 'Weiche_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('puffer', 'Doppelstreckenantrieb'), 2) # self.assertEqual(mg.get_value_of_object('puffer', 'Meldelampe_Überstrom'), 1) # self.assertEqual(mg.get_value_of_object('puffer', 'Meldelampe_Überstrom_Korrektur'), 0) # self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein_Meldung'), 1) # self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein-Meldung_Korrektur'), 0) # zf = mg.zusammenfassung() # self.assertEqual(zf['Gesamtanzahl_Antriebe'], 44) # 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) # self.assertEqual(zf['Bedientableau_14fach'], 0) # self.assertEqual(zf['Interface_Putzmaschine'], 0) # self.assertEqual(zf['Interface_Doffer'], 4) # self.assertEqual(zf['Weiche'], 35) # self.assertEqual(zf['Dreifachweiche'], 0) # self.assertEqual(zf['Wechsel'], 4) # self.assertEqual(zf['Stopper'], 0) # self.assertEqual(zf['Meldelampe_Überstrom'], 7) # self.assertEqual(zf['Hauptschalter_Ein_Meldung'], 7) # self.assertEqual(zf['Werma_Rundumleuchte_Störung'], 6) # self.assertEqual(zf['Weiche_nach_PM_bipolar'], 0) # self.assertEqual(zf['Kreuzungsweiche'], 1) # self.assertEqual(zf['RA_uni'], 4) # self.assertEqual(zf['RA_uni_abhebbar'], 0) # self.assertEqual(zf['RA_uni_ohne_SPS_Ansteuerung'], 0) # self.assertEqual(zf['RA_bi'], 30) # self.assertEqual(zf['RA_bi_ohne_SPS-Ansteuerung'], 4) # self.assertEqual(zf['RA_bi_abhebbar'], 4) # self.assertEqual(zf['Doppelstreckenantrieb'], 6) # self.assertEqual(zf['gemeinsame_Wendung'], 0) # self.assertEqual(zf['klemmkasten_rsm'], 2) def test_eas(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":0, "Turm_Anzahl_Wendlungen":0, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_EAS = {"schaltschrank":1} eas = rek.EA(Anzahl_EAS, mg) # Prüfe die Summe aller Eingänge und Ausgänge für jeden Elementtyp # Bedienstation self.assertEqual(eas.get_SEA('bedienstation_1fach_Not_Aus'), (0, 0)) self.assertEqual(eas.get_SEA('bedienstation_einfach_Zug_Wechseln'), (14, 14)) self.assertEqual(eas.get_SEA('bedienstation_automatische_Umfahrung'), (0, 0)) self.assertEqual(eas.get_SEA('bedienstation_zweifach_Wechs_BCD_10f'), (0, 0)) self.assertEqual(eas.get_SEA('bedienstation_zweifach_Not_Aus_Reset'), (20, 20)) self.assertEqual(eas.get_SEA('bedienst_dreifach'), (0, 0)) self.assertEqual(eas.get_SEA('bedienst_vierfach'), (0, 0)) self.assertEqual(eas.get_SEA('bedienst_sechsfach'), (0, 0)) self.assertEqual(eas.get_SEA('EAs_Unterverteiler_direct'), (0, 0)) # Ermittlung Mengengerüst self.assertEqual(eas.get_SEA('Sensor_Traversenabfrage_optisch'), (68, 0)) self.assertEqual(eas.get_SEA('Reflexionslichtschranke_RSM_DIRECT'), (0, 0)) self.assertEqual(eas.get_SEA('Sensor induktiv Flyer+PM'), (4, 0)) self.assertEqual(eas.get_SEA('Seilzugschalter'), (0, 0)) self.assertEqual(eas.get_SEA('Weiche'), (0, 35)) self.assertEqual(eas.get_SEA('Weiche_nach_PM_bipolar'), (0, 0)) self.assertEqual(eas.get_SEA('gemeinsame_Weichenrueckstellung'), (0, 0)) self.assertEqual(eas.get_SEA('Dreifach_Weiche_DIRECT'), (0, 0)) self.assertEqual(eas.get_SEA('Kreuzungsweiche'), (0, 10)) self.assertEqual(eas.get_SEA('Stopper'), (0, 0)) self.assertEqual(eas.get_SEA('Ventil_RA_3_2_abhebbar'), (0, 4)) self.assertEqual(eas.get_SEA('Ventil_Doppelstreckenantrieb_5_2_abhebbar'), (0, 12)) self.assertEqual(eas.get_SEA('Blitzleuchte_Stoerung'), (0, 6)) self.assertEqual(eas.get_SEA('Schnittstelle_Flyer_ElectroJet'), (8, 8)) self.assertEqual(eas.get_SEA('Schnittstelle_Putzmaschine_Neuhauser'), (0, 0)) self.assertEqual(eas.get_SEA('FEldbux_UV_EinAusgang'), (14, 7)) self.assertEqual(eas.get_SEA('Spulenumsetzstation'), (0, 0)) self.assertEqual(eas.get_SEA('RA_unidirektional'), (0, 4)) self.assertEqual(eas.get_SEA('RA_unidirektional_abhebbar'), (0, 0)) self.assertEqual(eas.get_SEA('RA_unidirektional_mit_gemeinsamer_Wendung'), (0, 0)) self.assertEqual(eas.get_SEA('RA_unidirektional_ohne_SPS_Ansteuerung'), (0, 0)) self.assertEqual(eas.get_SEA('RA_bidirektional'), (0, 60)) self.assertEqual(eas.get_SEA('RA_bidirektional_abhebbar'), (0, 8)) self.assertEqual(eas.get_SEA('RA_bidirektional_abhebbar_gemeinsWend'), (0, 0)) self.assertEqual(eas.get_SEA('RA_bidirektional_ohne_SPS_Ansteuerung'), (0, 0)) self.assertEqual(eas.get_SEA('RA_in_RSM_bidirektional'), (0, 0)) self.assertEqual(eas.get_SEA('Doppelstreckenantrieb'), (0, 12)) self.assertEqual(eas.get_SEA('Doppelstreckenantriebgemeinsame_Wendung'), (0, 0)) self.assertEqual(eas.get_SEA('gemeinsame_Wendung'), (0, 0)) 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_incl_reserve(), 160) self.assertEqual(eas.gesamt_A_incl_reserve(), 227) self.assertEqual(eas.get_SEA('Frequenzumrichter'), (0, 0)) (eingänge, ausgänge) = eas.Anzahl_notwendigen_Siemens_EAKarten() self.assertEqual(eingänge, 5) self.assertEqual(ausgänge, 7) (eingänge, ausgänge) = eas.Anzahl_Siemens_EAKarten_incl_reserve() self.assertEqual(eingänge, 5) self.assertEqual(ausgänge, 8) def test_HW(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":0, "Turm_Anzahl_Wendlungen":0, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_EAS = { "schaltschrank":1 } eas = rek.EA(Anzahl_EAS, mg) Anzahl_HW = { "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 1, "sps_simatic_s7_1515_2": 1, "et200_sp_ea_ebene":1, "netzwerk_fernwartung":1, "anlagenrechner":1, "unterverteiler_fuer_2flyer":2, "unterverteiler_fuer_puffer":1, "korrektur_5_rsm_zusaetzlich_im_unterverteiler":-1, "korrektur_10_rsm_zusaetzlich_im_unterverteiler":-2, "ET200_SP":1, "et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen", # MATERIAL VOR ORT "kabelpritschen_leitern_200_60":348, "kleinteile_rohre_schellen_kabelbinder_ect":1.5, "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc_or_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" } hw = rek.HW(Anzahl_HW, mg, eas) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer"), 0) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer"), 0) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200+1x800_zubehoer"), 1) self.assertEqual(hw.anzahl("sps_simatic_s7_cpu315_2_pn_dp"), 0) self.assertEqual(hw.anzahl("speicherkarte_fuer_sps_512_kb"), 0) self.assertEqual(hw.anzahl("sps_simatic_s7_cpu317_2_pn_dp"), 0) self.assertEqual(hw.anzahl("speicherkarte_fuer_sps2_mb"), 0) self.assertEqual(hw.anzahl("sps_simatic_s7_1515_2"), 1) self.assertEqual(hw.anzahl("sps_simatic_s7_1517_3"), 0) self.assertEqual(hw.anzahl("sps_simatic_s7_1518_4"), 0) self.assertEqual(hw.anzahl("sps_et200_1512sp"), 0) self.assertEqual(hw.anzahl("memory_card_256_mb"), 1) self.assertEqual(hw.anzahl("memory_card_2_gb"), 0) self.assertEqual(hw.anzahl("et200_sp_ea_ebene"), 1) self.assertEqual(hw.anzahl("netzwerk_fernwartung"), 1) self.assertEqual(hw.anzahl("abgang_400v"), 0) self.assertEqual(hw.anzahl("abgang_24_v"), 0) self.assertEqual(hw.anzahl("anlagenrechner"), 1) self.assertEqual(hw.anzahl("anlagenrechner_ohne_bildschirm"), 0) self.assertEqual(hw.anzahl("pulteinbau_monitor_srline_rflat_24fhd"), 0) self.assertEqual(hw.anzahl("kurzhubtastatur_kbt06_mit_touchpad_uslayout"), 0) self.assertEqual(hw.anzahl("netzwerk_display_adapter_lindy"), 0) self.assertEqual(hw.anzahl("zusaetzlicher_bildschirm"), 0) self.assertEqual(hw.anzahl("schaltschrank"), 1) self.assertEqual(hw.anzahl("unterverteiler_fuer_1neuenhauser_pm"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_1flyer"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_2flyer"), 2) self.assertEqual(hw.anzahl("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_puffer"), 1) self.assertEqual(hw.anzahl("unterverteiler_fuer_5_rsm_fa"), 2) self.assertEqual(hw.anzahl("korrektur_5_rsm_zusaetzlich_im_unterverteiler"), -1) self.assertEqual(hw.anzahl("unterverteiler_fuer_10_rsm_fa"), 0) self.assertEqual(hw.anzahl("korrektur_10_rsm_zusaetzlich_im_unterverteiler"), -2) self.assertEqual(hw.anzahl("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar"), 0) self.assertEqual(hw.anzahl("korrektur_3_rsm_zusaetzlich_im_unterverteiler"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_4_rsm_direct"), 0) self.assertEqual(hw.anzahl("korrektur_4_rsm_zusaetzlich_im_unterverteiler"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_12_rsm_direct"), 0) self.assertEqual(hw.anzahl("korrektur_12_rsm_zusaetzlich_im_unterverteiler"), 0) self.assertEqual(hw.anzahl("unterverteiler_fuer_8_rsm_direct"), 0) self.assertEqual(hw.anzahl("korrektur_8_rsm_direct_zusaetzlich_im_unterverteiler"), 0) self.assertEqual(hw.anzahl("busverteiler_6_rsm_direct"), 0) self.assertEqual(hw.anzahl("korrektur_6_rsm_zusaetzlich_im_busverteiler"), 0) self.assertEqual(hw.anzahl("busverteiler_8_rsm_direct"), 0) self.assertEqual(hw.anzahl("korrektur_8_rsm_zusaetzlich_im_busverteiler"), 0) self.assertEqual(hw.anzahl("antrieb_unidirektional_halbleiter"), 4) self.assertEqual(hw.anzahl("antrieb_bidirektional_halbleiter"), 44) self.assertEqual(hw.anzahl("antrieb_unidirektional_schuetz"), 0) self.assertEqual(hw.anzahl("antrieb_bidirektional_schuetz"), 0) self.assertEqual(hw.anzahl("motorschutzschalter"), 0) self.assertEqual(hw.anzahl("wendeschuetzschaltung"), 0) self.assertEqual(hw.anzahl("frequenzumrichter"), 0) self.assertEqual(hw.anzahl("bedienstation_1fach_kpl"), 14) self.assertEqual(hw.anzahl("bedienst_2fach_wechs_bcd_10f"), 0) self.assertEqual(hw.anzahl("bedienstation_2fach_kpl"), 10) self.assertEqual(hw.anzahl("halter_bedientableau_2fach"), 10) self.assertEqual(hw.anzahl("bedienstation_3fach_kpl"), 0) self.assertEqual(hw.anzahl("halter_bedientableau_3fach"), 0) self.assertEqual(hw.anzahl("bedienstation_4fach_kpl"), 0) self.assertEqual(hw.anzahl("halter_bedientableau_4fach"), 0) self.assertEqual(hw.anzahl("bedienstation_6fach_kpl"), 0) self.assertEqual(hw.anzahl("halter_bedienstation_6fach"), 0) self.assertEqual(hw.anzahl("drucktaster_automatische_umfahrung"), 0) self.assertEqual(hw.anzahl("halter_fuer_drucktaster"), 0) self.assertEqual(hw.anzahl("ET200_SP"), 1) self.assertEqual(hw.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"), 7) self.assertEqual(hw.anzahl("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"), 0) self.assertEqual(hw.anzahl("et200_sp_eingangskarte_8_de"), 31) self.assertEqual(hw.anzahl("korrektur_et200_sp_eingangskarte_8_de"), 0) self.assertEqual(hw.anzahl("et200_sp_eingangskarte_16_de"), 0) self.assertEqual(hw.anzahl("et200_sp_eingangskarte_8_do"), 33) self.assertEqual(hw.anzahl("korrektur_et200_sp_eingangskarte_8_do"), 0) self.assertEqual(hw.anzahl("et200_sp_eingangskarte_16_do"), 0) self.assertEqual(hw.anzahl("et200_sp_base_unit_neue_last_mit_potKlemmen"), 14) self.assertEqual(hw.anzahl("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"), 0) self.assertEqual(hw.anzahl("et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen"), 50) self.assertEqual(hw.anzahl("et200_sp_base_unit_neue_last"), 0) self.assertEqual(hw.anzahl("korrektur_et200_sp_base_unit_neue_last"), -14) self.assertEqual(hw.anzahl("et200_sp_base_unit_links_gebrueckt"), 0) self.assertEqual(hw.anzahl("korrektur_et200_sp_base_unit_links_gebrueckt"), 0) self.assertEqual(hw.anzahl("SLIO"), 0) self.assertEqual(hw.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"), 0) self.assertEqual(hw.anzahl("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"), 0) self.assertEqual(hw.anzahl("slio_eingangskarte_4_de"), 0) self.assertEqual(hw.anzahl("korrektur_slio_eingangskarte_4_de"), 0) self.assertEqual(hw.anzahl("slio_eingangskarte_8_de"), 0) self.assertEqual(hw.anzahl("korrektur_slio_eingangskarte_8_de"), 0) self.assertEqual(hw.anzahl("slio_ausgangskarte_4_do"), 0) self.assertEqual(hw.anzahl("korrektur_slio_ausgangskarte_4_do"), 0) self.assertEqual(hw.anzahl("slio_ausgangskarte_8_do"), 0) self.assertEqual(hw.anzahl("korrektur_slio_ausgangskarte_8_do"), 0) self.assertEqual(hw.anzahl("slio_power_modul"), 0) self.assertEqual(hw.anzahl("korrektur_slio_power_modul"), 0) self.assertEqual(hw.anzahl("slio_4_x_dc_24v_4_x_dc_0v"), 0) self.assertEqual(hw.anzahl("korrektur_slio_4_x_dc_24v_4_x_dc_0v"), 0) self.assertEqual(hw.anzahl("slio_8_x_dc_24v"), 0) self.assertEqual(hw.anzahl("slio_8_x_dc_0v"), 0) self.assertEqual(hw.anzahl("korrektur_slio_8_x_dc_0v"), 0) self.assertEqual(hw.anzahl("movimot_fu_mit_anschaltung"), 0) self.assertEqual(hw.anzahl("sensor_optisch_traverse"), 68) self.assertEqual(hw.anzahl("sensorhalter_ohne_sensor"), 0) self.assertEqual(hw.anzahl("reflexionslichtschranke_rsm_direct"), 0) self.assertEqual(hw.anzahl("stoppersensor_induktiv_mit_halter"), 4) self.assertEqual(hw.anzahl("sensor_spulenpruefung_voll_leer"), 0) self.assertEqual(hw.anzahl("seilzugschalter"), 0) self.assertEqual(hw.anzahl("seil_fuer_seilzugschalter"), 0) self.assertEqual(hw.anzahl("blitzleuchte"), 6) self.assertEqual(hw.anzahl("spulenumsetzstation"), 0) self.assertEqual(hw.anzahl("sensorkabel_je_20m"), 78) self.assertEqual(hw.anzahl("stopper_weichenkabel_je_5m"), 67) self.assertEqual(hw.anzahl("motorkabel_je_30m"), 48) self.assertEqual(hw.anzahl("kabelpritschen_leitern_200_60"), 348) self.assertEqual(hw.anzahl("kabelpritsche_rsm_100_60"), 0) self.assertEqual(hw.anzahl("kabelpritsche_rsm_50_35"), 0) self.assertEqual(hw.anzahl("klemmkasten_rsm"), 2) self.assertEqual(hw.anzahl("klemmkasten_direct_in_rsm"), 0) self.assertEqual(hw.anzahl("erdung"), 29) self.assertEqual(hw.anzahl("kleinteile_rohre_schellen_kabelbinder_ect"), 1.5) self.assertEqual(hw.anzahl("kabel_fuer_klemmkasten_und_bts_60m"), 20) self.assertEqual(hw.anzahl("kabel_fuer_1fach_bts_zug_wechseln"), 14) self.assertEqual(hw.anzahl("zuleitung_75_m_unterverteiler_4x4mm2_400vac"), 5) self.assertEqual(hw.anzahl("zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"), 0) self.assertEqual(hw.anzahl("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"), -5) self.assertEqual(hw.anzahl("zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"), 5) self.assertEqual(hw.anzahl("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"), 0) self.assertEqual(hw.anzahl("zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm"), 0) self.assertEqual(hw.anzahl("zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm"), 2) self.assertEqual(hw.anzahl("profinetkabel"), 6) self.assertEqual(hw.anzahl("korrektur_profinetkabel"), 0) self.assertEqual(hw.anzahl("schnittstellen_8x1mm2_30m"), 4) self.assertEqual(hw.summe_vorort(), 20415.6) self.assertAlmostEqual(hw.summe_gesamt(), 47667.04) self.assertEqual(hw.summe_in_LL(), 27251.44) self.assertEqual(hw.summe_h_zeiten_hardwareplanung(), 167.0) self.assertEqual(hw.summe_h_unterverteiler_e_werkstatt(), 94.0) def test_emo(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":0, "Turm_Anzahl_Wendlungen":0, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_EAS = { "schaltschrank":1 } eas = rek.EA(Anzahl_EAS, mg) Anzahl_HW = { "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 1, "sps_simatic_s7_1515_2": 1, "et200_sp_ea_ebene":1, "netzwerk_fernwartung":1, "anlagenrechner":1, "unterverteiler_fuer_2flyer":2, "unterverteiler_fuer_puffer":1, "korrektur_5_rsm_zusaetzlich_im_unterverteiler":-1, "korrektur_10_rsm_zusaetzlich_im_unterverteiler":-2, "ET200_SP":1, "et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen", # MATERIAL VOR ORT "kabelpritschen_leitern_200_60":348, "kleinteile_rohre_schellen_kabelbinder_ect":1.5, "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc_or_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" } hw = rek.HW(Anzahl_HW, mg, eas) emo = rek.EMO(eas, hw, mg) self.assertAlmostEqual(emo.dauer_emo_h(), 241) self.assertAlmostEqual(emo.dauer_emo_h_incl_mehrauwand(), 265.1) def test_dienstleistung(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":0, "Turm_Anzahl_Wendlungen":0, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, "Doppelstreckenantieb_Korrektur":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_EAS = { "schaltschrank":1 } eas = rek.EA(Anzahl_EAS, mg) Anzahl_HW = { "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 1, "sps_simatic_s7_1515_2": 1, "et200_sp_ea_ebene":1, "netzwerk_fernwartung":1, "anlagenrechner":1, "unterverteiler_fuer_2flyer":2, "unterverteiler_fuer_puffer":1, "korrektur_5_rsm_zusaetzlich_im_unterverteiler":-1, "korrektur_10_rsm_zusaetzlich_im_unterverteiler":-2, "ET200_SP":1, "et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen", # MATERIAL VOR ORT "kabelpritschen_leitern_200_60":348, "kleinteile_rohre_schellen_kabelbinder_ect":1.5, "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc_or_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" } hw = rek.HW(Anzahl_HW, mg, eas) Anzahl_DL = { "Bedienerhandbuch": 16, "SPS_Doku": 15, } dl = rek.Dienstleistung(Anzahl_DL, hw) self.assertEqual(dl.stunden_diensleistung_hardwareplanung(), 225.1) self.assertEqual(dl.stunden_elektrowerkstatt(), 196.83333333333333333333333333) self.assertEqual(dl.summe_stunden_dienstleistung_in_landsberg(), 421.9333333333333333333) self.assertEqual(dl.get_hours_of("Pflichtenheft_Autom_Schnittstellen"), 0) self.assertEqual(dl.get_hours_of("Erstellung_Steuerungslayout"), 41.75) self.assertEqual(dl.get_hours_of("Schaltplanerstellung_incl_Korrekturen"), 100.2) self.assertEqual(dl.get_hours_of("Projektkoordination"), 25.05) self.assertEqual(dl.get_hours_of("Materialdispo"), 33.4) self.assertEqual(dl.get_hours_of("Abstimmung_mit_E_Werkstatt"), 8.35) self.assertEqual(dl.get_hours_of("Erstellen_E_Montageunterlagen"), 8.35) 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"), 94) self.assertEqual(dl.get_hours_of("Klemmkastenbau_je_2h"), 4) self.assertEqual(dl.get_hours_of("Bedientableaubau"), 10.833333333333333) self.assertEqual(dl.get_hours_of("Vormontage_im_Haus"), 0) def test_anschlussleistung(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":0, "Turm_Anzahl_Wendlungen":0, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, "Doppelstreckenantrieb_Korrektur":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_AL ={} al = rek.Anschlussl(Anzahl_AL, mg) self.assertEqual(al._ANZAHL.get("Anzahl_Motor"), 48) self.assertAlmostEqual(al._ANZAHL.get("Summe_Strom_Motor"), 26.4) self.assertAlmostEqual(al._ANZAHL.get("Summe_Strom_Motor_SPS_Peripherie"), 29.4) self.assertAlmostEqual(al._ANZAHL.get("GZF"), 16.2) self.assertAlmostEqual(al._ANZAHL.get("Res"), 1.62) self.assertAlmostEqual(al._ANZAHL.get("Gesamtstrom"), 17.82) self.assertAlmostEqual(al._Anschlussspannung, 400) self.assertAlmostEqual(al._ANZAHL.get("Leistung"), 12.345696) self.assertAlmostEqual(al._ANZAHL.get("Gesamtanschlussleistung"), 13) def test_ergebnis(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":0, "Turm_Anzahl_Wendlungen":0, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, "Doppelstreckenantrieb_Korrektur":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_EAS = { "schaltschrank":1 } eas = rek.EA(Anzahl_EAS, mg) Anzahl_HW = { "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 1, "sps_simatic_s7_1515_2": 1, "et200_sp_ea_ebene":1, "netzwerk_fernwartung":1, "anlagenrechner":1, "unterverteiler_fuer_2flyer":2, "unterverteiler_fuer_puffer":1, "korrektur_5_rsm_zusaetzlich_im_unterverteiler":-1, "korrektur_10_rsm_zusaetzlich_im_unterverteiler":-2, "ET200_SP":1, "et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen", # MATERIAL VOR ORT "kabelpritschen_leitern_200_60":348, "kleinteile_rohre_schellen_kabelbinder_ect":1.5, "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc_or_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" } hw = rek.HW(Anzahl_HW, mg, eas) emo = rek.EMO(eas, hw, mg) Anzahl_DL = { "Bedienerhandbuch": 16, "SPS_Doku": 15, } dl = rek.Dienstleistung(Anzahl_DL, hw) Anzahl_Ergebnis = { "SPS_Programmierung":150, "SPS_Inbetriebsetzung":130 } erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo) self.assertAlmostEqual(erg.get_cost_of("E_Werkstatt"), 6298.6666666666667) self.assertEqual(erg.get_cost_of("Schaltschrankbau_extern_Mehrkosten"), 0) self.assertEqual(erg.get_cost_of("Dienstleistung_in_LL"), 10129.5) self.assertEqual(erg.get_cost_of("Pflichtenheft"), 0) self.assertEqual(erg.get_cost_of("SPS_Programmierung"), 11250) self.assertEqual(erg.get_cost_of("PC_Programmierung_Visualisierung"), 3375) self.assertEqual(erg.get_cost_of("Montage_elektrisch"), 9543.6) self.assertAlmostEqual(erg.get_cost_of("Inbetriebnahmetest_Hardware_durch_Montage"), 954.36) self.assertEqual(erg.get_cost_of("SPS_Inbetriebsetzung"), 9750) self.assertEqual(erg.get_cost_of("PC_Inbetriebsetzung"), 0) self.assertEqual(erg.get_cost_of("Inbetriebnahmeunterstützung_durch_Montage"), 4680) self.assertEqual(erg.get_cost_of("Dokumentation"), 560) self.assertEqual(erg.get_cost_of("Bedienungsanleitung_Emmert"), 1125) self.assertEqual(erg.get_cost_of("Schulung_vor_Ort_beim_Kunden"), 0) self.assertEqual(erg.get_cost_of("Abnahme"), 0) self.assertEqual(erg.get_cost_of("SPS_Anlagenbetreuung"), 0) self.assertEqual(erg.get_cost_of("PC_Anlagenbetreuung"), 0) self.assertEqual(erg.get_cost_of("Anlagenbetreuung_durch_Montage"), 0) self.assertAlmostEqual(erg.summary_costs(hw).get("GESAMT"), 105333.17) summary = erg.summary_costs(hw) df = pd.DataFrame.from_dict(data=summary, orient='index', columns=['Aufwand']) df.to_excel("output.xlsx", sheet_name="Kostenaufstellung") def test_turm(self): Anzahl_MG = { "SYSTEM": "FA", "RSM":14, "Flyer":4, "Flyer_Puffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0, "Neuenhauser-Putzmaschine":0, "Neuenhauser-Putzmaschine_Vorpuffer":0, "Neuenhauser-Putzmaschine_Nachpuffer":0, "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, "Puffer":1, "Anzahl_der_Pufferstrecken_pro_Puffer":5, "Begegnungsstrecke_Bypass":2, "Turm":1, "Turm_Anzahl_Wendlungen":5, } rsm_direct_eingabe = {} rsm_fa_eingabe = { "Flex_A_Premium":False, # braucht man das noch? "Getriebe_in_der_Mitte":False, # braucht man das noch? "RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch? "Sensor_optisch_Traverse_zusätzlich":6, "Bedientableau_1fach_Korrektur":0, "Bedientableau_2fach_Korrektur":4, "Weiche_Korrektur":4, "RRA_bi_Korrektur":0, "RRA_bi_auf_Haupstrecke":10, "RRA_uni_Begegnung":4, "gemeinsame_Wendung":0, "Mit_Drucktaster_Korrektur":0, "Meldelampe_Überstrom_Korrektur":0, "Hauptschalter_Ein-Meldung_Korrektur":0, "Werma_Rundumleuchte_Störung_Korrektur":0, "klemmkasten_rsm":2, } 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_2fach":0, "Bedientableau_2fach_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, #"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll_leer":0, #"Bedientableau_2fach":0, "Bedientableau_2fach_Korrektur":0, #"Interface_Putzmaschine":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_PM_bipolar":0, #"RA_uni_abhebbar":0, "RA_uni_abhebbar_Korrektur":0, #"RA_uni_ohne_SPS_Ansteuerung":0, #"RA_uni_abhebbar_unger_Sch":0, #"Doppelstreckenantrieb":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, } flyer_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer":0, # äquivalent zu 'Anzahl' #"Anzahl_Schienen:":0, #"Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur":0, #"Sensor_induktiv_Spulenalter_Zug_positionierung":0, #"Bedientableau_2fach":0, #"Interface_Doffer":0, #"Weiche":0, "Weiche_Korrektur":0, #"Weiche_nach_Flyer_bipolar":0, "Dreifachweiche":0, #"Wechsel":0, "Wechsel_Korrektur":0, #"RA_bi_ohne_SPS-Ansteuerung":0, #"RA_bi_abhebbar":0, "RA_bi_abhebbar_Korrektur":0, "RA_bi":4, #"Doppelstreckenantrieb":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, } verbindungsstrecken_w_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Sensor_optisch_Traverse":0, "Bedientableau_1fach":0, "Bedientableau_2fach":0, "Bedientableau_14fach":0, "Weiche":0, "Dreifachweiche":0, "Kreuzungsweiche":1, "Werma_Rundumleuchte_Störung":0, "RA_uni":0, "RA_uni_ohne_SPS_Ansteuerung":0, "RA_bi":0, "RA_bi_ohne_SPS-Ansteuerung":0, "Doppelstreckenantrieb":0 } puffer_eingabe = { # auskommentiert => kein Übergabeparameter, wird in Klasse berechnet # "Anzahl":0, # "Puffer":0, #äquivalent zu Anzahl # "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken # "Anzahl_Staustrecken":0, # "Sensor_optisch_Traverse":0, "Sensor_optisch_Traverse_Korrektur": 1, # "Weiche":0, "Weiche_Korrektur": 0, "RA_bi_ungerade_Schiene": 2, # "Doppelstreckenantrieb":0, "Doppelstreckenantrieb_Korrektur":0, # "Meldelampe_Überstrom":0, "Meldelampe_Überstrom_Korrektur": 0, # "Hauptschalter_Ein_Meldung":0, "Hauptschalter_Ein-Meldung_Korrektur": 0, } turm_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Turm":0, #äquivalent zu Anzahl #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken #"Anzahl_Staustrecken":0, #"Sensor_optisch_Traverse":0, #"Weiche":0, #"RA_bi":0, "RA_bi_Korrektur":0, #"RA_bi_ohne_SPS":0, "RA_bi_ohne_SPS_Korrektur":0, #"Bedientableau_2fach":0, } mg = rek.MG(Anzahl_MG, rsm_direct=rsm_direct_eingabe, rsm_fa=rsm_fa_eingabe, flyer_f40=flyer_f40_eingabe, neuenhauser=neuenhauser_eingabe, flyer=flyer_eingabe, verbindungsstrecken_w=verbindungsstrecken_w_eingabe, puffer=puffer_eingabe, turm=turm_eingabe) Anzahl_EAS = { "schaltschrank":1 } eas = rek.EA(Anzahl_EAS, mg) Anzahl_HW = { "schaltschrankgehaeuse_b1x1200+1x800_zubehoer": 1, "sps_simatic_s7_1515_2": 1, "et200_sp_ea_ebene":1, "netzwerk_fernwartung":1, "anlagenrechner":1, "unterverteiler_fuer_2flyer":2, "unterverteiler_fuer_puffer":1, "korrektur_5_rsm_zusaetzlich_im_unterverteiler":-1, "korrektur_10_rsm_zusaetzlich_im_unterverteiler":-2, "ET200_SP":1, "et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen", # MATERIAL VOR ORT "kabelpritschen_leitern_200_60":348, "kleinteile_rohre_schellen_kabelbinder_ect":1.5, "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc_or_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc" } hw = rek.HW(Anzahl_HW, mg, eas) emo = rek.EMO(eas, hw, mg) Anzahl_DL = { "Bedienerhandbuch": 16, "SPS_Doku": 15, } dl = rek.Dienstleistung(Anzahl_DL, hw) Anzahl_Ergebnis = { "SPS_Programmierung":150, "SPS_Inbetriebsetzung":130 } erg = rek.Ergebnis(Anzahl_Ergebnis, hw, dl, emo) self.assertEqual(mg.get_value_of_object("turm", "Anzahl_Staustrecken"), 5) self.assertEqual(mg.get_value_of_object("turm", "Sensor_optisch_Traverse"), 5) self.assertEqual(mg.get_value_of_object("turm", "Weiche"), 3) self.assertEqual(mg.get_value_of_object("turm", "RA_bi"), 2) self.assertEqual(mg.get_value_of_object("turm", "RA_bi_ohne_SPS"), 10) self.assertEqual(mg.get_value_of_object("turm", "Bedientableau_2fach"), 2) self.assertEqual(mg.zusammenfassung().get("Bedientableau_2fach"), 12) self.assertEqual(hw.summe_vorort(), 21705.6) self.assertAlmostEqual(hw.summe_in_LL(), 27466.7) self.assertAlmostEqual(erg.get_sum_of_costs(hw), 107610.946666666666667) def test_Unittests(): unittest.main() if __name__ == '__main__': test_Unittests()