Files
Rieter-EKalk/test_jayjay.py
T

2200 lines
102 KiB
Python

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_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()