entweder oder bei Klemmen und Unterverteilern ergänzt; versch. Motor-Arten ergänzt

This commit is contained in:
2023-03-06 11:33:46 +01:00
parent 355a17852a
commit ef0567c4ea
2 changed files with 2571 additions and 21 deletions
File diff suppressed because one or more lines are too long
+83 -21
View File
@@ -2,6 +2,9 @@ import unittest
import test_jayjay
import math
import json
JSON_IDENT = 5
class MG():
@@ -1235,11 +1238,12 @@ class HW():
"korrektur_et200_sp_eingangskarte_8_do":0,
"et200_sp_eingangskarte_16_do":0,
# "et200_sp_base_unit_neue_last_mit_potKlemmen":0,
"et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last":"et200_sp_base_unit_neue_last_mit_potKlemmen",###
"korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen":0,
# "et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen":0,
# "et200_sp_base_unit_neue_last":0,
"korrektur_et200_sp_base_unit_neue_last":-15, ### dann ist die anzahl aber bei -1!
# "et200_sp_base_unit_links_gebrueckt":0, ### gesamtkosten müssten doch eigtl bei 11 sein oder?
"korrektur_et200_sp_base_unit_neue_last":-15,
# "et200_sp_base_unit_links_gebrueckt":0,
"korrektur_et200_sp_base_unit_links_gebrueckt":0,
"SLIO":0,
@@ -1285,7 +1289,7 @@ class HW():
# "kabel_fuer_klemmkasten_und_bts_60m":0,
# "kabel_fuer_1fach_bts_zug_wechseln":0,
# "zuleitung_75_m_unterverteiler_4x4mm2_400vac":0,
# "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0, ### anzahl ist -1
# "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0,
"korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":-6,
# "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":0,
"korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc": 0,
@@ -1345,7 +1349,7 @@ class HW():
"unterverteiler_fuer_12_rsm_direct": 8258, # 790820302
# korrektur_12_rsm_zusaetzlich_im_unterverteiler
"unterverteiler_fuer_8_rsm_direct": 6736, # 790820301 ### immer 800 abgezogen?
"unterverteiler_fuer_8_rsm_direct": 6736, # 790820301
# korrektur_8_rsm_zusaetzlich_im_unterverteiler
"busverteiler_6_rsm_direct": 1747.53, # 790801002
@@ -1737,19 +1741,28 @@ class HW():
self._anzahl["korrektur_et200_sp_eingangskarte_8_do"] = self.mengen.get("korrektur_et200_sp_eingangskarte_8_do", 0)
self._anzahl["et200_sp_eingangskarte_16_do"] = anzahl.get("et200_sp_eingangskarte_16_do", 0)
self._anzahl["et200_sp_base_unit_neue_last_mit_potKlemmen"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) * 2 +
anzahl.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0))
self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0)
anzahl.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0)) ### entweder oder und bei dem das nicht verwendet wird wird im korrekturfaktor "et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45" * 2 abgezogen
if self.mengen.get("et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last" == "et200_sp_base_unit_neue_last"):
self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0)
self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0) -\
anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2
elif self.mengen.get("et200_sp_base_unit_neue_last_mit_potKlemmen_or_et200_sp_base_unit_neue_last" == "et200_sp_base_unit_neue_last_mit_potKlemmen"):
self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0) -\
anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2
self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0)
else:
self._anzahl["korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen", 0)
self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0)
self._anzahl["et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen"] = anzahl.get("ET200_SP", 0) * (math.ceil((anzahl.get("et200_sp_eingangskarte_8_de", 0) +
anzahl.get("et200_sp_eingangskarte_8_do", 0))) -
anzahl.get("et200_sp_base_unit_neue_last_mit_potKlemmen", 0))
self._anzahl["korrektur_et200_sp_base_unit_neue_last"] = self.mengen.get("korrektur_et200_sp_base_unit_neue_last", 0)
self._anzahl["et200_sp_base_unit_neue_last"] = anzahl.get("ET200_SP", 0) * (anzahl.get("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0) * 2 +
anzahl.get("korrektur_et200_sp_base_unit_neue_last", 0))
self._anzahl["et200_sp_base_unit_links_gebrueckt"] = anzahl.get("ET200_SP", 0) * (math.ceil((anzahl.get("et200_sp_eingangskarte_16_de", 0) +
anzahl.get("et200_sp_eingangskarte_16_do", 0))) -
anzahl.get("et200_sp_base_unit_neue_last", 0) +
anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0))
anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0))
self._anzahl["korrektur_et200_sp_base_unit_links_gebrueckt"] = self.mengen.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0)
self._anzahl["SLIO"] = self.mengen.get("SLIO", 0)
@@ -1908,7 +1921,7 @@ class HW():
anzahl.get("bedienstation_4fach_kpl", 0) +\
anzahl.get("bedienstation_6fach_kpl", 0)
self._anzahl["kabel_fuer_1fach_bts_zug_wechseln"] = anzahl.get("bedienstation_1fach_kpl", 0)
self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = self.mengen.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0)
self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = self.mengen.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) ###entweder oder
self._anzahl["zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) +\
anzahl.get("unterverteiler_fuer_1flyer", 0) +\
anzahl.get("unterverteiler_fuer_2flyer", 0) +\
@@ -1921,7 +1934,7 @@ class HW():
anzahl.get("unterverteiler_fuer_12_rsm_direct", 0) +\
anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\
anzahl.get("busverteiler_8_rsm_direct", 0) +\
anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0)
anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0) ### entweder oder bei dem, das nicht vcerwendet wird ist der korrakturfaktor self._anzahl["zuleitung_75_m_unterverteiler_4x4mm2_400vac"]
self._anzahl["zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) +\
anzahl.get("unterverteiler_fuer_1flyer", 0) +\
anzahl.get("unterverteiler_fuer_2flyer", 0) +\
@@ -2375,14 +2388,31 @@ class EMO():
def dauer_emo_incl_mehrauwand(self):
return (self.dauer_emo() * (1 + self._mehraufwand))
class Anschlussl():
class Anschlussl(): ### stimmt das so?
antrieb_cos_phi = {
0.09:0.77,
0.12:0.77,
0.18:0.77,
0.37:0.7,
0.55:0.77,
0.75:0.73,
1.1:0.81
}
antrieb_strom = {
0.09:0.4,
0.12:0.55,
0.18:0.75,
0.37:1.24,
0.55:1.62,
0.75:1.75,
1.1:2.55
}
mengen = {
#auskommentiert, was später berechnet wird
#"Anschlussspannung":400, #Volt
"Motor_Art":0.12, #kilo Watt ### dasselbe wie Antrieb? und eigtl regelmäßig oder immer anders?
"Motor_Art":0.12, #kilo Watt
#"Anzahl_Motor":48,
"Antrieb":0.12, #kilo Watt
"Strom_Motor":0.55, #Ampere
#"Strom_Motor":0.55, #Ampere
#"Summe_Strom_Motor":26.4,
#"cos_phi":0.77,
#"Versorgung_SPS_und_Peripherie":3, #Ampere
@@ -2401,7 +2431,7 @@ class Anschlussl():
self._GZE_Faktor = 0.5
self._Res_Faktor = 0.1
self._Anschlussspannung = 400
self._cos_phi = 0.77 ### wird nicht verwendet
self._cos_phi = self.antrieb_cos_phi.get(self.mengen.get("Motor_Art")) ### wird nicht verwendet, Leistungsfaktor
self._x_Wurzel_3 = 1.732
self._Versorgung_SPS_und_Peripherie = 3
self._ANZAHL = anzahl
@@ -2412,7 +2442,7 @@ class Anschlussl():
mg.zusammenfassung().get("RA_bi_ohne_SPS-Ansteuerung", 0) +\
mg.zusammenfassung().get("RA_bi_abhebbar", 0) +\
mg.zusammenfassung().get("Doppelstreckenantrieb", 0)
self._ANZAHL["Summe_Strom_Motor"] = self.mengen.get("Strom_Motor") *\
self._ANZAHL["Summe_Strom_Motor"] = self.antrieb_strom.get(self.mengen.get("Motor_Art")) *\
anzahl.get("Anzahl_Motor")
self._ANZAHL["Summe_Strom_Motor_SPS_Peripherie"] = anzahl.get("Summe_Strom_Motor") +\
self._Versorgung_SPS_und_Peripherie
@@ -2443,7 +2473,7 @@ class Anschlussl():
if PS > 1 or PS < 0:
raise Exception("Falsche Spanne")
self._Res_Faktor = PS
class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt?
class Ergebnis():
preis_kostenart_h = {
"E_Werkstatt": 32,
"Schaltschrankbau_extern_Mehrkosten": 0, #Wenn Schaltschrankbau extern die Mehrkosten eintragen Standard = 18 € Hier wird nur die Diverenz zwischen Kosten intern(32€) und dem externen Kosten eingetragen. Beispiel: extern = 50€ intern 32 € = Wert: 18€
@@ -2551,7 +2581,7 @@ class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt?
def get_cost_of(self, partname):
return (self._anzahl.get(partname) * self.preis_kostenart_h.get(partname))
def summary_costs(self, hw):
summary = {}
summary = {}
keys_costs = {
"E_Werkstatt",
"Schaltschrankbau_extern_Mehrkosten",
@@ -2575,10 +2605,40 @@ class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt?
for k in keys_costs:
cost = self._anzahl[k] * self.preis_kostenart_h[k]
summary.update({k: round(cost, 2)})
summary.update({"Installationsmaterial_vor_Ort": round(hw.summe_vorort(), 2)})
summary.update({"Material_in_LL": round(hw.summe_in_LL(), 2)})
summary.update({"GESAMT": round(self.get_sum_of_costs(hw), 2)})
print(summary)
return summary
#def deckblatt(self):
# keys_sivas = (
# ("E_Werkstatt","10"),
# ("Schaltschrankbau_extern_Mehrkosten","121"),
# ("Dienstleistung_in_LL","43"),
# ("Pflichtenheft","40"),
# ("SPS_Programmierung","46/100"),
# ("PC_Programmierung_Visualisierung","49/110"),
# ("Montage_elektrisch","25"),
# ("Inbetriebnahmetest_Hardware_durch_Montage","26"),
# ("SPS_Inbetriebsetzung","47/101"),
# ("PC_Inbetriebsetzung","49"),
# ("Inbetriebnahmeunterstützung_durch_Montage","26"),
# ("Dokumentation","65"),
# ("Bedienungsanleitung_Emmert","65"),
# ("Schulung_vor_Ort_beim_Kunden","26"),
# ("Abnahme","26"),
# ("SPS_Anlagenbetreuung","46"),
# ("PC_Anlagenbetreuung","49"),
# ("Anlagenbetreuung_durch_Montage","26")
# )
#for row in keys_sivas: ###ergänzen
#summary.setdefault(row[0],[]).append(row[1])
#siv = keys_sivas.get(k)
#summary.append(siv)
#df = pd.DataFrame.from_dict(data=summary, orient='index', columns=['Kostenart', 'Aufwand'])
#df.to_excel("output.xlsx", sheet_name="Kostenaufstellung")
class TestObjectMethods(unittest.TestCase):
@@ -4142,9 +4202,11 @@ class TestObjectMethods(unittest.TestCase):
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.assertEqual(erg.get_sum_of_costs(hw), 104833.16666666666)
erg.summary_costs(hw)
self.assertAlmostEqual(erg.get_sum_of_costs(hw), 104833.16666666666)
summary = erg.summary_costs(hw) ### soll ich pro Register noch eine Möglichkeit ergänzen, manuell Kosten abzuziehen? Bei Jayjay zb in der HW waren es 800€ weniger als zu erwarten
# df = pd.DataFrame.from_dict(data=summary, orient='index', columns=['Aufwand'])
# df.to_excel("output.xlsx", sheet_name="Kostenaufstellung")
def test_Unittests():
unittest.main()