Compare commits
34 Commits
c0023e4652
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5701a2f5a0 | |||
| 6ada3b48b4 | |||
| 0f9ba338d4 | |||
| b1d7c011c6 | |||
| 0f61d73628 | |||
| ee8989ff5f | |||
| d93e2b6c28 | |||
| 6350ddf850 | |||
| 844aedc02b | |||
| 7b4c761656 | |||
| 66aa17a470 | |||
| 264b62681b | |||
| 2eeac20acd | |||
| 193fa1d277 | |||
| 44a565aa11 | |||
| 523d7ae097 | |||
| 3a0c1ed964 | |||
| 1f0e4137f2 | |||
| 4e70f5a600 | |||
| f4e507b2a2 | |||
| 4d011f2ebd | |||
| 1d655e471e | |||
| 2ff0e8b01d | |||
| 245592f215 | |||
| 4c64ee7f18 | |||
| cda9a6713d | |||
| efdb57fd52 | |||
| 4dc8125155 | |||
| 3e497f94b8 | |||
| 8d15e21a08 | |||
| 3140a15d8a | |||
| be776feee4 | |||
| c1ae3b680c | |||
| cd5514f96b |
@@ -16,7 +16,6 @@ dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
|
||||
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
|
||||
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python-Modul",
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
|
||||
"justMyCode": true
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+2
-1
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"python.formatting.provider": "yapf"
|
||||
"python.formatting.provider": "yapf",
|
||||
"python.analysis.typeCheckingMode": "off"
|
||||
}
|
||||
+301
-1
File diff suppressed because one or more lines are too long
@@ -1,3 +1,104 @@
|
||||
# Rieter-EKalk
|
||||
|
||||
Umsetzung der Excel-Datei von Herrn Schellhammer und Boes in Python
|
||||
## Installation
|
||||
|
||||
Am einfachsten erhält man das Programm auf seinem Rechner, indem man dieses Repository per git client auf den lokalen Rechner klont.
|
||||
Anschliessend in den **/bin** Unterordner wechseln und die Umgebungsvariable ECALC in der *ecalc_setenv.bat* so modifizieren, dass der Pfad dort aufgeführt ist, an dem der Ordner nach dem clonen entstanden ist.
|
||||
|
||||
Angenommen ich clone das Projekt Rieter-Ekalk in meinen **Dokumente** Ordner in den den Unterordner **Rieter-Ekalk**, lautet der Pfad dann
|
||||
|
||||
```bat
|
||||
set ECALC=C:\Users\<MeinWindowsUsername>\Documents\Rieter\Rieter-EKalk
|
||||
```
|
||||
Anschliessend kann man das Programm durch einen Doppelklick auf eine der Batch JayJay.bat Dateien gestartet werden.
|
||||
|
||||
|
||||
## Aufruf des Programmes
|
||||
|
||||
Das Programm arbeitet nach dem **EVA** Prinzip, also **E**ingabe **V**erarbeitung **A**usgabe.
|
||||
Es gibt keine Oberfläche. Alle Eingaben werden in eine Textdatei geschrieben, welche vom Programm eingelesen und verarbeitet wird. Anschliessend werden die Ergebnisse in dem Wunschformat ausgegeben. Möglich ist eine Form von Ergebnisse als .xlsx oder als .json Datei.
|
||||
|
||||
Excel ist natürlich Standard. Zum Vergleich zweier unterschiedlicher Preise empfiehlt sich die Verwendung des json formats.
|
||||
|
||||
Will man z.B. die Kosten des Projekts Jayjay berechnen, müssen alle Angaben zu diesem Projekt in eine Textdatei nach dem Vorbild der Datei jayjay.cfg geschrieben werden. Diese Datei muss sich im **work** Ordner befinden.
|
||||
Anschliessend macht man einen **Doppelklick** auf ecalc_cmd.bat und erhält eine schwarze Dos Shell.
|
||||
Ein Aufruf des Programmes erfolgt über das Tippen des Befehle in dieser Shell:
|
||||
|
||||
```bat
|
||||
ecalc --infile=jayjay.cfg
|
||||
```
|
||||
Anschliessend sieht man, dass eine Ausgabe im Unterordner work entstanden ist. Per default entsteht eine *Excel Datei* **jayjay.xlsx** und ein *json file* **jayjay.json**.
|
||||
|
||||
|
||||
Die Json Datei ist eine Textdatei (mit einem beliebigen Editor wie z.B. notepad öffnen) mit allen Preisen zum jeweiligen Projekt.
|
||||
|
||||
```json
|
||||
{
|
||||
"ergebnisse": {
|
||||
"Installationsmaterial_vor_Ort": 20103.6,
|
||||
"Material_in_LL": 27363.44,
|
||||
"Schulung_vor_Ort_beim_Kunden": 0.0,
|
||||
"SPS_Anlagenbetreuung": 0.0,
|
||||
"Inbetriebnahmetest_Hardware_durch_Montage": 0.0,
|
||||
"Bedienungsanleitung_Emmert": 1125.0,
|
||||
"Dienstleistung_in_LL": 10129.5,
|
||||
"Pflichtenheft": 0.0,
|
||||
"Montage_elektrisch": 9424.8,
|
||||
"Abnahme": 0.0,
|
||||
"SPS_Programmierung": 11250.0,
|
||||
"SPS_Inbetriebsetzung": 9750.0,
|
||||
"PC_Inbetriebsetzung": 0.0,
|
||||
"PC_Anlagenbetreuung": 0.0,
|
||||
"PC_Programmierung_Visualisierung": 3375.0,
|
||||
"Schaltschrankbau_extern_Mehrkosten": 0.0,
|
||||
"Anlagenbetreuung_durch_Montage": 0.0,
|
||||
"Inbetriebnahmeunterstützung_durch_Montage": 4680.0,
|
||||
"E_Werkstatt": 6298.67,
|
||||
"Dokumentation": 560.0,
|
||||
"GESAMT": 104060.01
|
||||
},
|
||||
```
|
||||
|
||||
Da man normalerweise nicht gerne Befehle in einer Shell tippt, kann man diese Befehle auch in einer .bat Datei ausschreiben. Vor allem, wenn man bei der Auslegung einer Anlage diese Berechnung öfter ausführt.
|
||||
Die folgenden Zeilen rufen das Programm zweimal auf. Einmal mit der Standard Configurations Datei **Sivas_Daten.cfg**, und ein zweites mal mit der Configurations Datei **newer_prices.cfg** mit erneuerten Hardwarepreisen.
|
||||
|
||||
```.bat
|
||||
call ecalc_setenv.bat
|
||||
python %ECALC_LIB%\calc_site.py --infile=jayjay.cfg --xlsx=JayJay_old.xlsx
|
||||
python %ECALC_LIB%\calc_site.py --infile=jayjay.cfg --xlsx=JayJay_new.xlsx --config=newer_prices.cfg
|
||||
```
|
||||
|
||||
Die ersten Ergebnisse landen in der Excel Datei JayJay_old, die Berechnung mit den neueren Preisen in der Datie JayJay_new
|
||||
|
||||
## Aktualisierung der Preise aus der Sivas Datenbank
|
||||
|
||||
Da die Preise sich über die Zeit des Projektes ändern, gibt es im **bin** Ordner das Hilfspgrogramm **newSivasConfigExtract.bat**. Ein Doppelklickt schreibt eine neue Config Datei im Work Ordner mit allen neuen Preise der Teile, welche in dem Programm benötigt werden.
|
||||
|
||||
Für die Erneuerung der Config Datei *Sivas_Daten.cfg* muss zuerst ein Export aus dem Materialstammdaten von Sivas vorgenommen werden.
|
||||
|
||||
Nach dem Export aus Sivas, muss der Nutzer die neu entstandene Datei **grid_export.xlsx** in den **/cfg** Ordner dieses Programmes kopieren. Dann sollte der Nutzer die Datei auf die Spalten *"Teilenummer", "Bezeichnung1", "Laufende Materialkosten"* reduzieren, damit das Programm schneller läuft.
|
||||
|
||||
Der Doppelklick auf **newSivasConfigExtract.bat** schreibt dann im **/work** Ordner eine **neue .cfg Datei** mit den neuen Preisen.
|
||||
Diese sollte man dann unter einem eigenen Namen in den **/cfg** Ordner kopieren, so dass man diesen Stand der Preise für eine Berechnung mit dem Schalter --config verwenden kann.
|
||||
|
||||
## Libraries und Programmdateien
|
||||
|
||||
|
||||
*rieter_ekalk.py* : Umsetzung der Excel-Datei von Herrn Schellhammer und Boes in Python
|
||||
|
||||
*Abfrage_Sivas.py* : liest die aktuellen Preise der Bauteile aus einem Sivas_Export.xlsx aus und erzeugt eine config-Datei (Sivas_Abgleich.cfg) für einen Programmlauf mit den wahren Preisen
|
||||
|
||||
Bsp. für eine config-Datei mit den Sivas-Preisen in €:
|
||||
```ini
|
||||
[HW_Einzelpreise]
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 9490.23
|
||||
schaltschrankgehaeuse_b1x1200_plus_1x800_zubehoer = 10862.85
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 2237.25
|
||||
speicherkarte_fuer_sps_512_kb = 172.5
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 3957.0
|
||||
speicherkarte_fuer_sps2_mb = 246.0
|
||||
sps_simatic_s7_1515_2 = 2162.35
|
||||
sps_simatic_s7_1517_3 = 4328.65
|
||||
sps_et200_1512sp = 705.75
|
||||
```
|
||||
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
[HW_Einzelpreise]
|
||||
schaltschrankgehaeuse_b1x800_zubehoer = 2877.85
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4972.14
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 5994.88
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 2237.25
|
||||
speicherkarte_fuer_sps_512_kb = 172.5
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 3957.0
|
||||
speicherkarte_fuer_sps2_mb = 246.0
|
||||
sps_simatic_s7_1515_2 = 2150.8
|
||||
sps_simatic_s7_1517_3 = 4305.55
|
||||
sps_simatic_s7_1518_4 = 5892.0
|
||||
sps_et200_1512sp = 705.75
|
||||
memory_card_2_gb = 515.9
|
||||
et200_sp_ea_ebene = 417.48
|
||||
netzwerk_fernwartung = 678.15
|
||||
abgang_400v = 213.35
|
||||
abgang_24_v = 99.41
|
||||
anlagenrechner = 1427.05
|
||||
anlagenrechner_ohne_bildschirm = 1269.8367055018189
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 968.0
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 326.0
|
||||
netzwerk_display_adapter_lindy = 481.98
|
||||
zusaetzlicher_bildschirm = 170.0
|
||||
unterverteiler_fuer_1neuenhauser_pm = 701.05
|
||||
unterverteiler_fuer_1flyer = 1634.74
|
||||
unterverteiler_fuer_2flyer = 2324.64
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine = 701.05
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine = 701.05
|
||||
unterverteiler_fuer_puffer = 2180.42
|
||||
unterverteiler_fuer_5_rsm_fa = 2601.27
|
||||
unterverteiler_fuer_10_rsm_fa = 2180.42
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar = 3059.28
|
||||
unterverteiler_fuer_4_rsm_direct = 5897.51
|
||||
unterverteiler_fuer_12_rsm_direct = 9125.58
|
||||
unterverteiler_fuer_8_rsm_direct = 7330.96
|
||||
busverteiler_6_rsm_direct = 1746.36
|
||||
busverteiler_8_rsm_direct = 2052.26
|
||||
antrieb_unidirektional_halbleiter = 71.39
|
||||
antrieb_bidirektional_halbleiter = 76.2256573006879
|
||||
antrieb_unidirektional_schuetz = 68.5
|
||||
antrieb_bidirektional_schuetz = 123.18
|
||||
motorschutzschalter = 37.77
|
||||
wendeschuetzschaltung = 27.25
|
||||
bedienstation_1fach_kpl = 38.52
|
||||
bedienst_2fach_wechs_bcd_10f = 94.87
|
||||
bedienstation_2fach_kpl = 67.48290909090909
|
||||
halter_bedientableau_2fach = 34.84
|
||||
bedienstation_3fach_kpl = 88.32432432432432
|
||||
halter_bedientableau_3fach = 23.99
|
||||
bedienstation_4fach_kpl = 102.50559670781892
|
||||
halter_bedientableau_4fach = 30.49
|
||||
bedienstation_6fach_kpl = 91.33
|
||||
halter_bedientableau_6fach = 26.19
|
||||
drucktaster_automatische_umfahrung = 46.57
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45 = 198.9
|
||||
et200_sp_eingangskarte_8_de = 31.59
|
||||
et200_sp_eingangskarte_16_de = 57.1
|
||||
et200_sp_eingangskarte_8_do = 43.22
|
||||
et200_sp_eingangskarte_16_do = 66.3
|
||||
et200_sp_base_unit_neue_last_mit_potklemmen = 21.09
|
||||
et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen = 13.39
|
||||
et200_sp_base_unit_neue_last = 16.621860966339366
|
||||
et200_sp_base_unit_links_gebrueckt = 9.815854569787543
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_slio = 164.20142857142858
|
||||
slio_eingangskarte_4_de = 23.915
|
||||
slio_eingangskarte_8_de = 31.68
|
||||
slio_ausgangskarte_4_do = 31.59
|
||||
slio_ausgangskarte_8_do = 31.59
|
||||
slio_power_modul = 21.09
|
||||
slio_4_x_dc_24v_4_x_dc_0v = 13.39
|
||||
slio_8_x_dc_24v = 16.621860966339366
|
||||
slio_8_x_dc_0v = 9.815854569787543
|
||||
sensor_optisch_traverse = 29.41
|
||||
reflexionslichtschranke_rsm_direct = 44.88
|
||||
stoppersensor_induktiv_mit_halter = 38.08
|
||||
sensor_spulenpruefung_voll_leer = 345.6954020423345
|
||||
seilzugschalter = 223.74
|
||||
seil_fuer_seilzugschalter = 0.299
|
||||
blitzleuchte = 64.29
|
||||
sensorkabel_je_20m = 6.4712
|
||||
stopper_weichenkabel_je_5m = 1.5406000000000002
|
||||
motorkabel_je_30m = 21.212410173633465
|
||||
kabelpritschen_leitern_200_60 = 7.859553174017099
|
||||
kabelpritsche_rsm_100_60 = 5.95
|
||||
kabelpritsche_rsm_50_35 = 6.1
|
||||
klemmkasten_rsm = 142.96
|
||||
klemmkasten_direct_in_rsm = 93.67
|
||||
zuleitung_75_m_unterverteiler_4x4mm2_400vac = 149.959130518692
|
||||
zuleitung_75_m_unterverteiler_12x4mm2_24_vdc = 414.68625
|
||||
zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc = 414.68625
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm = 124.1031862745098
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm = 88.5401
|
||||
profinetkabel = 44.4
|
||||
schnittstellen_8x1mm2_30m = 33.07799374121692
|
||||
|
||||
[Preise durch Sivas nicht ermittelbar]
|
||||
erdung = ----
|
||||
kleinteile_rohre_schellen_kabelbinder_ect = ----
|
||||
kabel_fuer_klemmkasten_und_bts_60m = ----
|
||||
kabel_fuer_1fach_bts_zug_wechseln = ----
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
[Preise durch Sivas nicht ermittelbar]
|
||||
schaltschrankgehaeuse_b1x800_zubehoer = ----
|
||||
sps_simatic_s7_1518_4 = 6ES7518-4AP00-0AB0 ### Siemens Bestellnummer Artikel nicht in Sivas geführt
|
||||
abgang_400v = ---- ### 703000192 + 703000201 + 703001022 * 2 + 700004301 * 3 + 700004304 + 700004207 + 700004053 + 700004042 + 700004035
|
||||
abgang_24_v = ---- ### 400009208 + 705002010 + 700004053 + 700004042 + 700004035 * 2 + 700004301 * 10 + 700004304 * 2 + 700004207
|
||||
netzwerk_display_adapter_lindy = ---- ### 790011002
|
||||
zusaetzlicher_bildschirm = ---- ### 711003028
|
||||
antrieb_unidirektional_halbleiter = ---- ### 703001070
|
||||
antrieb_bidirektional_halbleiter = ---- ### 703001075
|
||||
antrieb_unidirektional_schuetz = ---- ### 703001049
|
||||
antrieb_bidirektional_schuetz = ---- ### 703001058
|
||||
motorschutzschalter = ---- ### 703001007
|
||||
wendeschuetzschaltung = ---- ### 703001026 * 2 + 703001029
|
||||
frequenzumrichter = ---- ### nicht mehr verwendet
|
||||
bedienstation_1fach_kpl = ---- ### 790002022
|
||||
drucktaster_automatische_umfahrung = ---- ### 400102435
|
||||
halter_fuer_drucktaster = ---- ### fällt raus rsm fa mit drucktaster * 4 statt * 8
|
||||
movimot_fu_mit_anschaltung = ---- ### fällt raus
|
||||
sensorhalter_ohne_sensor = 827072xxx ### fällt raus
|
||||
seilzugschalter = ---- ### 827336009 rsm fa seilzugschalter wenn deckblatt d5 ja *1 nicht mehr *2
|
||||
seil_fuer_seilzugschalter = ---- ### 719001012 pro maschinenlänge doppelte länge(dann muss die Maschinenlänge aber noch angegeben werden)
|
||||
spulenumsetzstation = ---- ### fällt raus
|
||||
sensorkabel_je_20m = 722001xxx ### 722001022 (je 40m)
|
||||
stopper_weichenkabel_je_5m = 722001xxx ### 722001040 (je 50m)
|
||||
motorkabel_je_30m = ---- ### 725000015 (1 m)
|
||||
kabelpritschen_leitern_200_60 = ----
|
||||
klemmkasten_rsm = ----
|
||||
erdung = ----
|
||||
kleinteile_rohre_schellen_kabelbinder_ect = ----
|
||||
kabel_fuer_klemmkasten_und_bts_60m = ----
|
||||
kabel_fuer_1fach_bts_zug_wechseln = ----
|
||||
profinetkabel = 726001xxx
|
||||
@@ -0,0 +1,2 @@
|
||||
call ecalc_setenv.bat
|
||||
python %ECALC_LIB%\calc_site.py %*
|
||||
@@ -0,0 +1,4 @@
|
||||
call ecalc_setenv.bat
|
||||
REM nun vergleich als .json files
|
||||
python %ECALC_LIB%\calc_site.py --infile=jayjay.cfg --json=JayJay_old.json
|
||||
python %ECALC_LIB%\calc_site.py --infile=jayjay.cfg --config=Sivas_Daten_jayjay.cfg --json=JayJay_new.json
|
||||
@@ -0,0 +1,3 @@
|
||||
call ecalc_setenv.bat
|
||||
python %ECALC_LIB%\calc_site.py --infile=jayjay.cfg --xlsx=JayJay_old.xlsx
|
||||
python %ECALC_LIB%\calc_site.py --infile=jayjay.cfg --config=Sivas_Daten_jayjay.cfg --xlsx=JayJay_new.xlsx
|
||||
@@ -0,0 +1,2 @@
|
||||
call ecalc_setenv.bat
|
||||
start
|
||||
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
set ECALC=C:\Users\m.stangl\Documents\02-Verbesserungen\06-Rieter-Kalkulationen\Rieter-EKalk
|
||||
set ECALC_BIN=%ECALC%\bin
|
||||
set ECALC_WORK=%ECALC%\work
|
||||
set ECALC_CFG=%ECALC%\cfg
|
||||
set ECALC_LIB=%ECALC%\lib
|
||||
|
||||
set PATH=%ECALC%\bin;%PATH%
|
||||
REM PYTHON_INCLUDE_DIR
|
||||
REM PYTHON_LIBRARY
|
||||
@@ -0,0 +1,3 @@
|
||||
call ecalc_setenv.bat
|
||||
python %ECALC_LIB%\calc_site.py --infile=a_tfk.cfg --xlsx=ATFK_old.xlsx
|
||||
python %ECALC_LIB%\calc_site.py --infile=a_tfk.cfg --config=Sivas_Daten_jayjay.cfg --xlsx=ATFK_new.xlsx
|
||||
@@ -0,0 +1,2 @@
|
||||
call ecalc_setenv.bat
|
||||
python %ECALC_LIB%\Abfrage_Sivas.py %*
|
||||
@@ -0,0 +1,274 @@
|
||||
# HARDWARE
|
||||
|
||||
[HW_Einzelpreise]
|
||||
# Schaltschrank Einzelpreis
|
||||
schaltschrankgehaeuse_b1x800_zubehoer = 2000 #
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4663.45 # 790821101
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 5720.94 # 790821102
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 2237.25 # 708003004
|
||||
speicherkarte_fuer_sps_512_kb = 172.5 # 708003012
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 3957 # 708003007
|
||||
speicherkarte_fuer_sps2_mb = 246 # 708003027
|
||||
sps_simatic_s7_1515_2 = 2173.9 # 790008100
|
||||
sps_simatic_s7_1517_3 = 3827.8 # 790008101
|
||||
sps_simatic_s7_1518_4 = 5892 # 6ES7518-4AP00-0AB0
|
||||
sps_et200_1512sp = 705.75 # 709000003
|
||||
memory_card_2_gb = 515.9 # 708015094
|
||||
et200_sp_ea_ebene = 0 # 790009001
|
||||
netzwerk_fernwartung = 750 # 790011001
|
||||
abgang_400v = 250 # ----
|
||||
abgang_24_v = 250 # ----
|
||||
anlagenrechner = 1657 # 790011000
|
||||
anlagenrechner_ohne_bildschirm = 1487 # 1x 711003025 PC; 1x 711003026 Filter; 1x 711003111Softnet; 1x711003049 UPS
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 1200 # 400009058
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 350 # 400009057
|
||||
netzwerk_display_adapter_lindy = 650 #
|
||||
zusaetzlicher_bildschirm = 1100 #
|
||||
unterverteiler_fuer_1neuenhauser_pm = 1000 # 790820210
|
||||
unterverteiler_fuer_1flyer = 1000 # 790820207_A
|
||||
unterverteiler_fuer_2flyer = 1000 # 790820209_A
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine = 1000 # 790820210
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine = 1000 # 790820210
|
||||
unterverteiler_fuer_puffer = 1000 # 790820210_F
|
||||
unterverteiler_fuer_5_rsm_fa = 1000 # 790820210_D
|
||||
unterverteiler_fuer_10_rsm_fa = 1000 # 790820210_F
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar = 1000 # 790820209_C
|
||||
unterverteiler_fuer_4_rsm_direct = 5584 # 790820300
|
||||
unterverteiler_fuer_12_rsm_direct = 8258 # 790820302
|
||||
unterverteiler_fuer_8_rsm_direct = 6736 # 790820301
|
||||
busverteiler_6_rsm_direct = 1747.53 # 790801002
|
||||
busverteiler_8_rsm_direct = 2052.26 # 790801001
|
||||
antrieb_unidirektional_halbleiter = 90
|
||||
antrieb_bidirektional_halbleiter = 105
|
||||
antrieb_unidirektional_schuetz = 0
|
||||
antrieb_bidirektional_schuetz = 0
|
||||
motorschutzschalter = 0
|
||||
wendeschuetzschaltung = 75
|
||||
frequenzumrichter = 250
|
||||
bedienstation_1fach_kpl = 59
|
||||
bedienst_2fach_wechs_bcd_10f = 105 # 790002024
|
||||
bedienstation_2fach_kpl = 65.63 # 790000020
|
||||
halter_bedientableau_2fach = 42 # 825304006
|
||||
bedienstation_3fach_kpl = 99 # 790000040
|
||||
halter_bedientableau_3fach = 46 # 825304007
|
||||
bedienstation_4fach_kpl = 121 # 790000045
|
||||
halter_bedientableau_4fach = 52 # 825304003
|
||||
bedienstation_6fach_kpl = 145.8 # 790000033
|
||||
halter_bedientableau_6fach = 56 # 825304002
|
||||
drucktaster_automatische_umfahrung = 28
|
||||
halter_fuer_drucktaster = 33
|
||||
|
||||
# ET200_SP
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45 = 198.90 # 709000006
|
||||
et200_sp_eingangskarte_8_de = 35 # 709000021
|
||||
et200_sp_eingangskarte_16_de = 58 # 709000022
|
||||
et200_sp_eingangskarte_8_do = 46 # 709000031_A
|
||||
et200_sp_eingangskarte_16_do = 66.30 # 709000032
|
||||
et200_sp_base_unit_neue_last_mit_potKlemmen = 23 # 709000014
|
||||
et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen = 15 # 709000015
|
||||
et200_sp_base_unit_neue_last = 19 # 709000011
|
||||
et200_sp_base_unit_links_gebrueckt = 11 # 709000010
|
||||
|
||||
# SLIO
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO = 175 # 709000500
|
||||
slio_eingangskarte_4_de = 31 # 709000510
|
||||
slio_eingangskarte_8_de = 38 # 709000511
|
||||
slio_ausgangskarte_4_do = 39 # 709000021
|
||||
slio_ausgangskarte_8_do = 46 # 709000021
|
||||
slio_power_modul = 18.22 # 709000014
|
||||
slio_4_x_dc_24v_4_x_dc_0v = 18 # 709000015
|
||||
slio_8_x_dc_24v = 18 # 709000011
|
||||
slio_8_x_dc_0v = 13 # 709000010
|
||||
|
||||
# MATERIAL VOR ORT
|
||||
movimot_fu_mit_anschaltung = 550
|
||||
sensor_optisch_traverse = 27 # 827072200
|
||||
sensorhalter_ohne_sensor = 8 # 827072xxx
|
||||
reflexionslichtschranke_rsm_direct = 45 # 827072207
|
||||
stoppersensor_induktiv_mit_halter = 63 # 827072205
|
||||
sensor_spulenpruefung_voll_leer = 126 # 827072204 + 721000041
|
||||
seilzugschalter = 150
|
||||
seil_fuer_seilzugschalter = 0.40
|
||||
blitzleuchte = 72 # 790000006
|
||||
spulenumsetzstation = 0
|
||||
# Angabe im Sivas je 40m
|
||||
sensorkabel_je_20m = 25 # 722001xxx
|
||||
# Angabe im Sivas je 50m
|
||||
stopper_weichenkabel_je_5m = 20 # 722001xxx
|
||||
# Angabe im Sivas je 50m
|
||||
motorkabel_je_30m = 26
|
||||
kabelpritschen_leitern_200_60 = 15
|
||||
kabelpritsche_rsm_100_60 = 12 # 715000020
|
||||
kabelpritsche_rsm_50_35 = 9 # 715003010
|
||||
klemmkasten_rsm = 120
|
||||
klemmkasten_direct_in_rsm = 122 # 790000703
|
||||
erdung = 13
|
||||
kleinteile_rohre_schellen_kabelbinder_ect = 750
|
||||
kabel_fuer_klemmkasten_und_bts_60m = 145
|
||||
kabel_fuer_1fach_bts_zug_wechseln = 50
|
||||
zuleitung_75_m_unterverteiler_4x4mm2_400vac = 146 # 725000050
|
||||
zuleitung_75_m_unterverteiler_12x4mm2_24_vdc = 450 # 725000057
|
||||
zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc = 280 # 725000057
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm = 145 # 725000007
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm = 136 # 725000004
|
||||
profinetkabel = 42 # 726001xxx
|
||||
schnittstellen_8x1mm2_30m = 35.4 # 725000019
|
||||
|
||||
[HW_Zeiten Hardwareplanung]
|
||||
# pro Einheit in min
|
||||
schaltschrankgehaeuse_b1x1200_zubehoer = 4200
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4200
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 4800
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps_512_kb = 0
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps2_mb = 0
|
||||
sps_simatic_s7_1515_2 = 0
|
||||
sps_simatic_s7_1517_3 = 0
|
||||
sps_simatic_s7_1518_4 = 0
|
||||
sps_et200_1512sp = 0
|
||||
memory_card_2_gb = 0
|
||||
et200_sp_ea_ebene =60
|
||||
netzwerk_fernwartung =0
|
||||
abgang_400v =60
|
||||
abgang_24_v =60
|
||||
anlagenrechner =0
|
||||
anlagenrechner_ohne_bildschirm = 0
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 60
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 0
|
||||
netzwerk_display_adapter_lindy = 30
|
||||
zusaetzlicher_bildschirm =0
|
||||
schaltschrank =0
|
||||
unterverteiler_fuer_1neuenhauser_pm =1200
|
||||
unterverteiler_fuer_1flyer =720
|
||||
unterverteiler_fuer_2flyer =1020
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine =810
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine =1110
|
||||
unterverteiler_fuer_puffer =1200
|
||||
unterverteiler_fuer_5_rsm_fa =960
|
||||
unterverteiler_fuer_10_rsm_fa =1020
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar =1200
|
||||
unterverteiler_fuer_4_rsm_direct =3000
|
||||
unterverteiler_fuer_12_rsm_direct =4800
|
||||
unterverteiler_fuer_8_rsm_direct =3900
|
||||
busverteiler_6_rsm_direct =600
|
||||
busverteiler_8_rsm_direct =960
|
||||
|
||||
[HW_Zeiten Elektro-Werkstatt]
|
||||
# pro Einheit in min
|
||||
schaltschrankgehaeuse_b1x1200_zubehoer = 2400
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4800
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 5160
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps_512_kb = 0
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps2_mb = 0
|
||||
sps_simatic_s7_1515_2 = 0
|
||||
sps_simatic_s7_1517_3 = 0
|
||||
sps_simatic_s7_1518_4 = 0
|
||||
sps_et200_1512sp = 0
|
||||
memory_card_2_gb = 0
|
||||
et200_sp_ea_ebene =120
|
||||
netzwerk_fernwartung =0
|
||||
abgang_400v =90
|
||||
abgang_24_v =90
|
||||
anlagenrechner =0
|
||||
anlagenrechner_ohne_bildschirm = 0
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 240
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 0
|
||||
netzwerk_display_adapter_lindy = 120
|
||||
zusaetzlicher_bildschirm =0
|
||||
schaltschrank =0
|
||||
unterverteiler_fuer_1neuenhauser_pm =1200
|
||||
unterverteiler_fuer_1flyer =1020
|
||||
unterverteiler_fuer_2flyer =1200
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine =1140
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine =1200
|
||||
unterverteiler_fuer_puffer =1200
|
||||
unterverteiler_fuer_5_rsm_fa =1020
|
||||
unterverteiler_fuer_10_rsm_fa =1140
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar =1500
|
||||
unterverteiler_fuer_4_rsm_direct =3600
|
||||
unterverteiler_fuer_12_rsm_direct =4800
|
||||
unterverteiler_fuer_8_rsm_direct =4200
|
||||
busverteiler_6_rsm_direct =480
|
||||
busverteiler_8_rsm_direct =480
|
||||
antrieb_unidirektional_halbleiter =10
|
||||
antrieb_bidirektional_halbleiter =10
|
||||
antrieb_unidirektional_schuetz =0
|
||||
antrieb_bidirektional_schuetz =0
|
||||
motorschutzschalter =0
|
||||
wendeschuetzschaltung =0
|
||||
frequenzumrichter =0
|
||||
bedienstation_1fach_kpl =25
|
||||
bedienst_2fach_wechs_bcd_10f =90
|
||||
bedienstation_2fach_kpl =30
|
||||
halter_bedientableau_2fach =30
|
||||
bedienstation_3fach_kpl =25
|
||||
halter_bedientableau_3fach =30
|
||||
bedienstation_4fach_kpl =30
|
||||
halter_bedientableau_4fach =30
|
||||
bedienstation_6fach_kpl =45
|
||||
halter_bedienstation_6fach =30
|
||||
drucktaster_automatische_umfahrung =15
|
||||
halter_fuer_drucktaster =0
|
||||
|
||||
# ELEKTROMONTAGE
|
||||
[Elektro-Montagezeiten]
|
||||
Schaltschrank_aufstellen = 6.0 #(h/St)
|
||||
Unterverteiler_montieren = 3.0 #(h/St)
|
||||
Pritsche_montieren_umbauen_demontieren = 6.0 #(m/h)
|
||||
Pritsche_in_RSM_montieren = 21.0
|
||||
Motor_verdrahten_und_anschliessen = 0.9 #(h/Motor)
|
||||
Tableau_befestigen_und_anschliessen = 0.75 #(h/St)
|
||||
Schnittstelle_Flyer_Putzmaschine = 1.5 #(h/St)
|
||||
Sensoren_montieren = 0.45 #(h/St)
|
||||
Seilzugschalter_installieren = 4.0 #(h/St)
|
||||
Blitzleuchte_installieren = 0.5 #(h/St)
|
||||
Weiche_Stopper_anschliessen = 0.35 #(h/St)
|
||||
Erdung = 0.5 #(h)
|
||||
|
||||
# ANSCHLUSSLEISTUNG
|
||||
|
||||
# Key ist die Leistung des jeweiligen Motors [kW]. Value ist der Leistungsfaktor
|
||||
[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
|
||||
|
||||
# Key ist die Leistung des jeweiligen Motors [kW]. Value ist der Strom [A]
|
||||
[Antriebsstrom]
|
||||
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
|
||||
|
||||
# ERGEBNIS
|
||||
#[€/h] der jeweiligen Kostenart
|
||||
[Kosten pro h]
|
||||
E_Werkstatt = 32
|
||||
# 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€
|
||||
Schaltschrankbau_extern_Mehrkosten = 0
|
||||
Dienstleistung_in_LL = 45
|
||||
Pflichtenheft = 60
|
||||
SPS_Programmierung = 75
|
||||
PC_Programmierung_Visualisierung = 75
|
||||
Montage_elektrisch = 36
|
||||
Inbetriebnahmetest_Hardware_durch_Montage = 36
|
||||
SPS_Inbetriebsetzung = 75
|
||||
PC_Inbetriebsetzung = 75
|
||||
Inbetriebnahmeunterstützung_durch_Montage = 36
|
||||
Dokumentation = 35
|
||||
Bedienungsanleitung_Emmert = 75
|
||||
Schulung_vor_Ort_beim_Kunden = 36
|
||||
Abnahme = 36
|
||||
SPS_Anlagenbetreuung = 75
|
||||
PC_Anlagenbetreuung = 60
|
||||
Anlagenbetreuung_durch_Montage = 36
|
||||
@@ -0,0 +1,254 @@
|
||||
[HW_Einzelpreise]
|
||||
abgang_24_v = 99.41
|
||||
abgang_400v = 213.35
|
||||
anlagenrechner = 1427.05
|
||||
anlagenrechner_ohne_bildschirm = 1269.8367055018189
|
||||
antrieb_bidirektional_halbleiter = 76.2256573006879
|
||||
antrieb_bidirektional_schuetz = 123.18
|
||||
antrieb_unidirektional_halbleiter = 71.39
|
||||
antrieb_unidirektional_schuetz = 68.5
|
||||
bedienst_2fach_wechs_bcd_10f = 94.87
|
||||
bedienstation_1fach_kpl = 38.52
|
||||
bedienstation_2fach_kpl = 67.48290909090909
|
||||
bedienstation_3fach_kpl = 88.32432432432432
|
||||
bedienstation_4fach_kpl = 102.50559670781892
|
||||
bedienstation_6fach_kpl = 91.33
|
||||
blitzleuchte = 64.29
|
||||
busverteiler_6_rsm_direct = 1746.36
|
||||
busverteiler_8_rsm_direct = 2052.26
|
||||
drucktaster_automatische_umfahrung = 46.57
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45 = 198.9
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_slio = 164.20142857142858
|
||||
et200_sp_base_unit_links_gebrueckt = 9.815854569787543
|
||||
et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen = 13.39
|
||||
et200_sp_base_unit_neue_last = 16.621860966339366
|
||||
et200_sp_base_unit_neue_last_mit_potklemmen = 21.09
|
||||
et200_sp_ea_ebene = 417.48
|
||||
et200_sp_eingangskarte_16_de = 57.1
|
||||
et200_sp_eingangskarte_16_do = 66.3
|
||||
et200_sp_eingangskarte_8_de = 31.59
|
||||
et200_sp_eingangskarte_8_do = 43.22
|
||||
halter_bedientableau_2fach = 34.84
|
||||
halter_bedientableau_3fach = 23.99
|
||||
halter_bedientableau_4fach = 30.49
|
||||
halter_bedientableau_6fach = 26.19
|
||||
kabelpritsche_rsm_100_60 = 5.95
|
||||
kabelpritsche_rsm_50_35 = 6.1
|
||||
kabelpritschen_leitern_200_60 = 7.859553174017099
|
||||
klemmkasten_direct_in_rsm = 93.67
|
||||
klemmkasten_rsm = 142.96
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 326.0
|
||||
memory_card_2_gb = 515.9
|
||||
motorkabel_je_30m = 21.212410173633465
|
||||
motorschutzschalter = 37.77
|
||||
netzwerk_display_adapter_lindy = 481.98
|
||||
netzwerk_fernwartung = 678.15
|
||||
profinetkabel = 44.4
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 968.0
|
||||
reflexionslichtschranke_rsm_direct = 44.88
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 5994.88
|
||||
schaltschrankgehaeuse_b1x800_zubehoer = 2877.85
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4972.14
|
||||
schnittstellen_8x1mm2_30m = 33.07799374121692
|
||||
seil_fuer_seilzugschalter = 0.299
|
||||
seilzugschalter = 223.74
|
||||
sensor_optisch_traverse = 29.41
|
||||
sensor_spulenpruefung_voll_leer = 345.6954020423345
|
||||
sensorkabel_je_20m = 6.4712
|
||||
slio_4_x_dc_24v_4_x_dc_0v = 13.39
|
||||
slio_8_x_dc_0v = 9.815854569787543
|
||||
slio_8_x_dc_24v = 16.621860966339366
|
||||
slio_ausgangskarte_4_do = 31.59
|
||||
slio_ausgangskarte_8_do = 31.59
|
||||
slio_eingangskarte_4_de = 23.915
|
||||
slio_eingangskarte_8_de = 31.68
|
||||
slio_power_modul = 21.09
|
||||
speicherkarte_fuer_sps_512_kb = 172.5
|
||||
speicherkarte_fuer_sps2_mb = 246.0
|
||||
sps_et200_1512sp = 705.75
|
||||
sps_simatic_s7_1515_2 = 2150.8
|
||||
sps_simatic_s7_1517_3 = 4305.55
|
||||
sps_simatic_s7_1518_4 = 5892.0
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 2237.25
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 3957.0
|
||||
stopper_weichenkabel_je_5m = 1.5406000000000002
|
||||
stoppersensor_induktiv_mit_halter = 38.08
|
||||
unterverteiler_fuer_10_rsm_fa = 2180.42
|
||||
unterverteiler_fuer_12_rsm_direct = 9125.58
|
||||
unterverteiler_fuer_1flyer = 1634.74
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine = 701.05
|
||||
unterverteiler_fuer_1neuenhauser_pm = 701.05
|
||||
unterverteiler_fuer_2flyer = 2324.64
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine = 701.05
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar = 3059.28
|
||||
unterverteiler_fuer_4_rsm_direct = 5897.51
|
||||
unterverteiler_fuer_5_rsm_fa = 2601.27
|
||||
unterverteiler_fuer_8_rsm_direct = 7330.96
|
||||
unterverteiler_fuer_puffer = 2180.42
|
||||
wendeschuetzschaltung = 27.25
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm = 88.5401
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm = 124.1031862745098
|
||||
zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc = 414.68625
|
||||
zuleitung_75_m_unterverteiler_12x4mm2_24_vdc = 414.68625
|
||||
zuleitung_75_m_unterverteiler_4x4mm2_400vac = 149.959130518692
|
||||
zusaetzlicher_bildschirm = 170.0
|
||||
|
||||
|
||||
[HW_Zeiten Hardwareplanung]
|
||||
# pro Einheit in min
|
||||
schaltschrankgehaeuse_b1x1200_zubehoer = 4200
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4200
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 4800
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps_512_kb = 0
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps2_mb = 0
|
||||
sps_simatic_s7_1515_2 = 0
|
||||
sps_simatic_s7_1517_3 = 0
|
||||
sps_simatic_s7_1518_4 = 0
|
||||
sps_et200_1512sp = 0
|
||||
memory_card_2_gb = 0
|
||||
et200_sp_ea_ebene =60
|
||||
netzwerk_fernwartung =0
|
||||
abgang_400v =60
|
||||
abgang_24_v =60
|
||||
anlagenrechner =0
|
||||
anlagenrechner_ohne_bildschirm = 0
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 60
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 0
|
||||
netzwerk_display_adapter_lindy = 30
|
||||
zusaetzlicher_bildschirm =0
|
||||
schaltschrank =0
|
||||
unterverteiler_fuer_1neuenhauser_pm =1200
|
||||
unterverteiler_fuer_1flyer =720
|
||||
unterverteiler_fuer_2flyer =1020
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine =810
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine =1110
|
||||
unterverteiler_fuer_puffer =1200
|
||||
unterverteiler_fuer_5_rsm_fa =960
|
||||
unterverteiler_fuer_10_rsm_fa =1020
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar =1200
|
||||
unterverteiler_fuer_4_rsm_direct =3000
|
||||
unterverteiler_fuer_12_rsm_direct =4800
|
||||
unterverteiler_fuer_8_rsm_direct =3900
|
||||
busverteiler_6_rsm_direct =600
|
||||
busverteiler_8_rsm_direct =960
|
||||
|
||||
[HW_Zeiten Elektro-Werkstatt]
|
||||
# pro Einheit in min
|
||||
schaltschrankgehaeuse_b1x1200_zubehoer = 2400
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 4800
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 5160
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps_512_kb = 0
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 0
|
||||
speicherkarte_fuer_sps2_mb = 0
|
||||
sps_simatic_s7_1515_2 = 0
|
||||
sps_simatic_s7_1517_3 = 0
|
||||
sps_simatic_s7_1518_4 = 0
|
||||
sps_et200_1512sp = 0
|
||||
memory_card_2_gb = 0
|
||||
et200_sp_ea_ebene =120
|
||||
netzwerk_fernwartung =0
|
||||
abgang_400v =90
|
||||
abgang_24_v =90
|
||||
anlagenrechner =0
|
||||
anlagenrechner_ohne_bildschirm = 0
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 240
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 0
|
||||
netzwerk_display_adapter_lindy = 120
|
||||
zusaetzlicher_bildschirm =0
|
||||
schaltschrank =0
|
||||
unterverteiler_fuer_1neuenhauser_pm =1200
|
||||
unterverteiler_fuer_1flyer =1020
|
||||
unterverteiler_fuer_2flyer =1200
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine =1140
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine =1200
|
||||
unterverteiler_fuer_puffer =1200
|
||||
unterverteiler_fuer_5_rsm_fa =1020
|
||||
unterverteiler_fuer_10_rsm_fa =1140
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar =1500
|
||||
unterverteiler_fuer_4_rsm_direct =3600
|
||||
unterverteiler_fuer_12_rsm_direct =4800
|
||||
unterverteiler_fuer_8_rsm_direct =4200
|
||||
busverteiler_6_rsm_direct =480
|
||||
busverteiler_8_rsm_direct =480
|
||||
antrieb_unidirektional_halbleiter =10
|
||||
antrieb_bidirektional_halbleiter =10
|
||||
antrieb_unidirektional_schuetz =0
|
||||
antrieb_bidirektional_schuetz =0
|
||||
motorschutzschalter =0
|
||||
wendeschuetzschaltung =0
|
||||
frequenzumrichter =0
|
||||
bedienstation_1fach_kpl =25
|
||||
bedienst_2fach_wechs_bcd_10f =90
|
||||
bedienstation_2fach_kpl =30
|
||||
halter_bedientableau_2fach =30
|
||||
bedienstation_3fach_kpl =25
|
||||
halter_bedientableau_3fach =30
|
||||
bedienstation_4fach_kpl =30
|
||||
halter_bedientableau_4fach =30
|
||||
bedienstation_6fach_kpl =45
|
||||
halter_bedienstation_6fach =30
|
||||
drucktaster_automatische_umfahrung =15
|
||||
halter_fuer_drucktaster =0
|
||||
|
||||
# ELEKTROMONTAGE
|
||||
[Elektro-Montagezeiten]
|
||||
Schaltschrank_aufstellen = 6.0 #(h/St)
|
||||
Unterverteiler_montieren = 3.0 #(h/St)
|
||||
Pritsche_montieren_umbauen_demontieren = 6.0 #(m/h)
|
||||
Pritsche_in_RSM_montieren = 21.0
|
||||
Motor_verdrahten_und_anschliessen = 0.9 #(h/Motor)
|
||||
Tableau_befestigen_und_anschliessen = 0.75 #(h/St)
|
||||
Schnittstelle_Flyer_Putzmaschine = 1.5 #(h/St)
|
||||
Sensoren_montieren = 0.45 #(h/St)
|
||||
Seilzugschalter_installieren = 4.0 #(h/St)
|
||||
Blitzleuchte_installieren = 0.5 #(h/St)
|
||||
Weiche_Stopper_anschliessen = 0.35 #(h/St)
|
||||
Erdung = 0.5 #(h)
|
||||
|
||||
# ANSCHLUSSLEISTUNG
|
||||
|
||||
# Key ist die Leistung des jeweiligen Motors [kW]. Value ist der Leistungsfaktor
|
||||
[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
|
||||
|
||||
# Key ist die Leistung des jeweiligen Motors [kW]. Value ist der Strom [A]
|
||||
[Antriebsstrom]
|
||||
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
|
||||
|
||||
# ERGEBNIS
|
||||
#[€/h] der jeweiligen Kostenart
|
||||
[Kosten pro h]
|
||||
E_Werkstatt = 32
|
||||
# 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€
|
||||
Schaltschrankbau_extern_Mehrkosten = 0
|
||||
Dienstleistung_in_LL = 45
|
||||
Pflichtenheft = 60
|
||||
SPS_Programmierung = 75
|
||||
PC_Programmierung_Visualisierung = 75
|
||||
Montage_elektrisch = 36
|
||||
Inbetriebnahmetest_Hardware_durch_Montage = 36
|
||||
SPS_Inbetriebsetzung = 75
|
||||
PC_Inbetriebsetzung = 75
|
||||
Inbetriebnahmeunterstützung_durch_Montage = 36
|
||||
Dokumentation = 35
|
||||
Bedienungsanleitung_Emmert = 75
|
||||
Schulung_vor_Ort_beim_Kunden = 36
|
||||
Abnahme = 36
|
||||
SPS_Anlagenbetreuung = 75
|
||||
PC_Anlagenbetreuung = 60
|
||||
Anlagenbetreuung_durch_Montage = 36
|
||||
@@ -0,0 +1,147 @@
|
||||
[HW_Einzelpreise]
|
||||
# Schaltschrank Einzelpreis
|
||||
schaltschrankgehaeuse_b1x800_zubehoer = 790821100
|
||||
schaltschrankgehaeuse_b2x800_zubehoer = 790821101
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer = 790821102
|
||||
sps_simatic_s7_cpu315_2_pn_dp = 708003004
|
||||
speicherkarte_fuer_sps_512_kb = 708003012
|
||||
sps_simatic_s7_cpu317_2_pn_dp = 708003007
|
||||
speicherkarte_fuer_sps2_mb = 708003027
|
||||
sps_simatic_s7_1515_2 = 790008100
|
||||
sps_simatic_s7_1517_3 = 790008101
|
||||
sps_simatic_s7_1518_4 = 708015006
|
||||
sps_et200_1512sp = 709000003
|
||||
memory_card_2_gb = 708015094
|
||||
et200_sp_ea_ebene = 790009001
|
||||
netzwerk_fernwartung = 790011001
|
||||
abgang_400v= 790003001
|
||||
#abgang_400v= 790003002
|
||||
abgang_24_v = 790004001
|
||||
anlagenrechner = 790011000
|
||||
anlagenrechner_ohne_bildschirm = 711003025 + 711003026 + 711003111 + 711003049
|
||||
pulteinbau_monitor_srline_rflat_24fhd = 400009058
|
||||
kurzhubtastatur_kbt06_mit_touchpad_uslayout = 400009057
|
||||
netzwerk_display_adapter_lindy = 790011002
|
||||
zusaetzlicher_bildschirm = 711003028
|
||||
|
||||
unterverteiler_fuer_1neuenhauser_pm = 790820210
|
||||
unterverteiler_fuer_1flyer = 790820207_A
|
||||
unterverteiler_fuer_2flyer = 790820209_A
|
||||
unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine = 790820210
|
||||
unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine = 790820210
|
||||
unterverteiler_fuer_puffer = 790820210_F
|
||||
|
||||
unterverteiler_fuer_5_rsm_fa = 790820210_D
|
||||
|
||||
unterverteiler_fuer_10_rsm_fa = 790820210_F
|
||||
|
||||
unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar = 790820209_C
|
||||
|
||||
unterverteiler_fuer_4_rsm_direct = 790820300
|
||||
|
||||
unterverteiler_fuer_12_rsm_direct = 790820302
|
||||
|
||||
unterverteiler_fuer_8_rsm_direct = 790820301
|
||||
|
||||
busverteiler_6_rsm_direct = 790801002
|
||||
|
||||
busverteiler_8_rsm_direct = 790801001
|
||||
|
||||
antrieb_unidirektional_halbleiter = 703001070
|
||||
antrieb_bidirektional_halbleiter = 703001075
|
||||
antrieb_unidirektional_schuetz = 703001049
|
||||
antrieb_bidirektional_schuetz = 703001059
|
||||
motorschutzschalter = 703001007
|
||||
wendeschuetzschaltung = 703001026
|
||||
|
||||
|
||||
bedienstation_1fach_kpl = 790002022
|
||||
bedienst_2fach_wechs_bcd_10f = 790002024
|
||||
bedienstation_2fach_kpl = 790000020
|
||||
halter_bedientableau_2fach = 825304006
|
||||
bedienstation_3fach_kpl = 790000040
|
||||
halter_bedientableau_3fach = 825304007
|
||||
bedienstation_4fach_kpl = 790000045
|
||||
halter_bedientableau_4fach = 825304003
|
||||
bedienstation_6fach_kpl = 790000033
|
||||
halter_bedientableau_6fach = 825304002
|
||||
drucktaster_automatische_umfahrung = 400102435
|
||||
|
||||
# ET200_SP
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45 = 709000006
|
||||
et200_sp_eingangskarte_8_de = 709000021
|
||||
et200_sp_eingangskarte_16_de = 709000022_A
|
||||
et200_sp_eingangskarte_8_do = 709000031_A
|
||||
et200_sp_eingangskarte_16_do = 709000032_A
|
||||
et200_sp_base_unit_neue_last_mit_potKlemmen = 709000014
|
||||
et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen = 709000015
|
||||
et200_sp_base_unit_neue_last = 709000011
|
||||
et200_sp_base_unit_links_gebrueckt = 709000010
|
||||
|
||||
# SLIO
|
||||
et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO = 709000500
|
||||
slio_eingangskarte_4_de = 709000510
|
||||
slio_eingangskarte_8_de = 709000511
|
||||
slio_ausgangskarte_4_do = 709000021
|
||||
slio_ausgangskarte_8_do = 709000021
|
||||
slio_power_modul = 709000014
|
||||
slio_4_x_dc_24v_4_x_dc_0v = 709000015
|
||||
slio_8_x_dc_24v = 709000011
|
||||
slio_8_x_dc_0v = 709000010
|
||||
|
||||
# MATERIAL VOR ORT
|
||||
sensor_optisch_traverse = 827072200
|
||||
reflexionslichtschranke_rsm_direct = 827072207
|
||||
stoppersensor_induktiv_mit_halter = 827072205
|
||||
sensor_spulenpruefung_voll_leer = 827072204 + 721000041
|
||||
# rsm fa seilzugschalter wenn deckblatt d5 ja *1 nicht mehr *2
|
||||
seilzugschalter = 827336009
|
||||
# pro maschinenlänge doppelte länge(dann muss die Maschinenlänge aber noch angegeben werden)
|
||||
seil_fuer_seilzugschalter = 719001012
|
||||
blitzleuchte = 790000006
|
||||
sensorkabel_je_20m = 722001022
|
||||
stopper_weichenkabel_je_5m = 722001040
|
||||
motorkabel_je_30m = 725000015
|
||||
kabelpritschen_leitern_200_60 = 715000061
|
||||
kabelpritsche_rsm_100_60 = 715000020
|
||||
kabelpritsche_rsm_50_35 = 715003010
|
||||
klemmkasten_rsm = 790000700
|
||||
klemmkasten_direct_in_rsm = 790000703
|
||||
erdung = ----
|
||||
kleinteile_rohre_schellen_kabelbinder_ect = ----
|
||||
kabel_fuer_klemmkasten_und_bts_60m = ----
|
||||
kabel_fuer_1fach_bts_zug_wechseln = ----
|
||||
zuleitung_75_m_unterverteiler_4x4mm2_400vac = 725000050
|
||||
zuleitung_75_m_unterverteiler_12x4mm2_24_vdc = 725000057
|
||||
zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc = 725000057
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm = 725000007
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm = 725000004
|
||||
profinetkabel = 726001053
|
||||
schnittstellen_8x1mm2_30m = 725000019
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#WENDEKOMBIBAUSATZ = 703001029
|
||||
#kabelpritschen_leitern_200_60 = ----
|
||||
#klemmkasten_rsm = ----
|
||||
#erdung = ----
|
||||
#kleinteile_rohre_schellen_kabelbinder_ect = ----
|
||||
#kabel_fuer_klemmkasten_und_bts_60m = ----
|
||||
#kabel_fuer_1fach_bts_zug_wechseln = ----
|
||||
|
||||
|
||||
[Faktoren]
|
||||
# wenn SIVAS Meterpreise gespeichert hat, muss man die Preise für die Variable
|
||||
# nach dem Auslesen entsprechend mit der Länge multiplizieren
|
||||
motorkabel_je_30m=30
|
||||
zuleitung_75_m_unterverteiler_4x4mm2_400vac = 75
|
||||
zuleitung_75_m_unterverteiler_12x4mm2_24_vdc = 75
|
||||
zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc = 75
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm = 55
|
||||
zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm = 55
|
||||
schnittstellen_8x1mm2_30m = 30
|
||||
sensorkabel_je_20m = 0.5
|
||||
stopper_weichenkabel_je_5m = 0.1
|
||||
@@ -1 +0,0 @@
|
||||
{"Bedienelemente_Steuerschrank": 1, "bedienstation_einfach_Zug_Wechseln": 14, "bedienstation_automatische_Umfahrung": 0, "bedienstation_zweifach_Wechs_BCD_10f": 0, "bedienstation_zweifach_Not_Aus_Reset": 10, "bedienst_dreifach": 0, "bedienst_vierfach": 0, "bedienst_sechsfach": 0, "EAs_Unterverteiler_direct": 0, "Sensor_Traversenabfrage_optisch": 68, "Reflexionslichtschranke_RSM_DIRECT": 0, "Sensor induktiv Flyer+PM": 4, "Seilzugschalter": 0, "Weiche": 35, "Weiche_nach_PM_bipolar": 0, "gemeinsame_Weichenrueckstellung": 0, "Dreifach_Weiche_DIRECT": 0, "Kreuzungsweiche": 1, "Stopper": 0, "RA_unidirektional": 4, "RA_unidirektional_abhebbar": 0, "RA_unidirektional_mit_gemeinsamer_Wendung": 0, "RA_unidirektional_ohne_SPS_Ansteuerung": 0, "RA_bidirektional": 30, "RA_bidirektional_abhebbar": 4, "RA_bidirektional_abhebbar_gemeinsWend": 0, "RA_bidirektional_ohne_SPS_Ansteuerung": 4, "RA_in_RSM_bidirektional": 0, "Doppelstreckenantrieb": 6, "Doppelstreckenantriebgemeinsame_Wendung": 0, "gemeinsame_Wendung": 0, "Frequenzumrichter": 0, "Ventil_RA_3_2_abhebbar": 4, "Ventil_Doppelstreckenantrieb_5_2_abhebbar": 6, "Blitzleuchte_Stoerung": 6, "Schnittstelle_Flyer_ElectroJet": 4, "Schnittstelle_Putzmaschine_Neuhauser": 0, "FEldbux_UV_EinAusgang": 7, "Spulenumsetzstation": 0}
|
||||
@@ -1,36 +0,0 @@
|
||||
import json
|
||||
import math
|
||||
|
||||
anzahl = dict()
|
||||
anzahl["et200_sp_ea_ebene"] = 1
|
||||
anzahl["schaltschrank"] = 1
|
||||
# a = 5 * math.ceil((anzahl.get("et200_sp_ea_ebene", 0) * anzahl.get("schaltschrank", 0) * 4 ))
|
||||
a = (math.ceil((anzahl.get("et200_sp_ea_ebene", 0) * \
|
||||
anzahl.get("schaltschrank", 0) * 4 + \
|
||||
anzahl.get("unterverteiler_fuer_1neuenhauser_pm", 0) * 6 + \
|
||||
anzahl.get("unterverteiler_fuer_1flyer", 0) * 4 + \
|
||||
anzahl.get("unterverteiler_fuer_2flyer", 0) * 6 + \
|
||||
anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0) * 5 + \
|
||||
anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0) * 5 + \
|
||||
anzahl.get("unterverteiler_fuer_puffer", 0) * 7 + \
|
||||
anzahl.get("unterverteiler_fuer_5_rsm_fa", 0) * 4 + \
|
||||
anzahl.get("unterverteiler_fuer_10_rsm_fa", 0) * 6 + \
|
||||
anzahl.get("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar", 0) * 9 / 1.5)) + \
|
||||
anzahl.get("korrektur_et200_sp_eingangskarte_8_do", 0))
|
||||
|
||||
|
||||
|
||||
# details = {'Name': "Bob",
|
||||
# 'Age' :28}
|
||||
|
||||
# with open('convert.txt', 'w') as convert_file:
|
||||
# convert_file.write(json.dumps(details))
|
||||
|
||||
# https://www.geeksforgeeks.org/write-a-dictionary-to-a-file-in-python/
|
||||
# Michael Stangl13:56
|
||||
# cat a.txt | sort > a_neu.txt
|
||||
|
||||
|
||||
|
||||
# Fragen:
|
||||
# EAs Bedienstation automatische umfahrung in excel
|
||||
@@ -1,40 +0,0 @@
|
||||
Bedienst._2_fach_ Wechs._+_BCD_10f. _ DIR. 0
|
||||
Bedienstation_1_fach_Not_Aus
|
||||
Bedienstation_1_fach_Zug_wechseln 14
|
||||
Bedienstation_2_fach_ Not_Aus_Reset 10
|
||||
Bedienstation_3_fach 0
|
||||
Bedienstation_4_fach 0
|
||||
Bedienstation_6_fach 0
|
||||
Blitzleuchte_Störung 6
|
||||
Doppelstreckenantrieb 6
|
||||
Doppelstreckenantriebgemeinsame_Wendung 0
|
||||
Dreifach_Weiche 0
|
||||
Drucktaster_automatische_Umfahrung 0
|
||||
E/As_Unterverteiler_DIRECT 0
|
||||
Feldbus_UV_Ein_/Ausgang 7
|
||||
Frequenzumrichter 0
|
||||
gemeinsame_Weichenrückstellung 0
|
||||
gemeinsame_Wendung 0
|
||||
Kreuzungsweiche 1
|
||||
RA_in_RSM;_bidirektional;_1_gemeinsame_Wendung_je_Seite;_je_Antrieb_ein_Motorschutzschalter 0
|
||||
RA_bidirektional 30
|
||||
RA_bidirektional_abhebbar 4
|
||||
RA_bidirektional_abhebbar_gemeins._Wend. 0
|
||||
RA_bidirektional;_ohne_SPS_Ansteuerung 4
|
||||
RA_unidirektional 4
|
||||
RA_unidirektional_abhebbar_ohne_SPS_Ansteuerung 0
|
||||
RA_unidirektional_mit_gemeinsamer_Wendung 0
|
||||
RA_unidirektional_abhebbar 0
|
||||
Reflexionslichtschranke_RSM_ DIRECT 0
|
||||
Schnittstelle_Flyer_ Electro_Jet 4
|
||||
Schnittstelle_Putzmaschine_ Electro_Jet
|
||||
Schnittstelle_Putzmaschine_ Neuenhauser 0
|
||||
Seilzugschalter 0
|
||||
Sensor_Traversenabfrage_optisch 68
|
||||
Sensor_induktiv_ Flyer+PM 4
|
||||
Spulenumsetzstation 0
|
||||
Stopper 0
|
||||
Ventil_Doppelstreckenantrieb_ 5/2 _abhebbar 6
|
||||
Ventil_RA_ 3/2 _abhebbar 4
|
||||
Weiche 35
|
||||
Weiche_nach_PM_ bipolar 0
|
||||
@@ -1,27 +1,28 @@
|
||||
import pandas as pd
|
||||
import configparser
|
||||
import os.path
|
||||
import argparse
|
||||
|
||||
"""
|
||||
Erstellung einer Excel-Datei mit aktuellen Preisen aus Sivas ist leicht möglich.
|
||||
Diese soll in einer config-Datei für die Berechnung der rieter-eKalkulation verwendet werden.
|
||||
Den Parametern der rieter_ekalk werden die entsprechenden Sivas-Nummern zugewiesen, und damit die aktuellen Preise.
|
||||
Diese Zuordnung von Parametern und ihren aktuellen Preisen wird wieder in eine config-Datei geschrieben, die mit den Preisen der Daten_cfg.txt-Datei abzugleichen ist, auf die rieter_ekalk zugreift.
|
||||
Diese Zuordnung von Parametern und ihren aktuellen Preisen wird wieder in eine config-Datei geschrieben, die mit den Preisen der Sivas_Daten.cfg-Datei abzugleichen ist, auf die rieter_ekalk zugreift.
|
||||
"""
|
||||
|
||||
class Kosten():
|
||||
"""
|
||||
Liest die Sivas-Excel-Liste ein und schreibt eine neue config Datei mit den aktuellen Preisen der in rieter-ekalk verwendeten Sivas-IDs.
|
||||
"""
|
||||
def __init__(self, pathNew="Zuordnung_Teilenummern.txt", pathOld="Daten_cfg.txt", sivasData="grid_export.xlsx"):
|
||||
|
||||
def __init__(self, pathNew="Zuordnung_Teilenummern.cfg", pathOld="Sivas_Daten.cfg", sivasData="grid_export.xlsx"):
|
||||
"""
|
||||
:param pathNew: cfg-Datei, die den Bauteilen ihre Sivas-Nummern zuweist z.B. "schaltschrankgehaeuse_b2x800_zubehoer = 790821101"
|
||||
:param pathOld: cfg-Datei, die in rieter_ekalk verwendet wird und den Bauteilen Preise zuweist z.B. "schaltschrankgehaeuse_b2x800_zubehoer = 4663.45"
|
||||
:param sivasData: Excel-Datei mit Sivas-Nummern und entsprechenden Preisen, Überschrift: Teilenummer, Herstellkosten
|
||||
:param sivasData: Excel-Datei mit Sivas-Nummern und entsprechenden Preisen, Überschrift: Teilenummer, Laufende Materialkosten
|
||||
"""
|
||||
df = pd.read_excel(sivasData, header=0, index_col="Teilenummer")
|
||||
tab = df.drop(columns=["Bezeichnung1"])
|
||||
self._kosten = tab.to_dict()
|
||||
df = pd.read_excel(sivasData, header=0, index_col=0, usecols=["Teilenummer", "Laufende Materialkosten" ])
|
||||
self._kosten = df.to_dict()
|
||||
|
||||
self._given = True
|
||||
if os.path.exists(pathNew):
|
||||
@@ -33,7 +34,10 @@ class Kosten():
|
||||
|
||||
self._default = configparser.ConfigParser(inline_comment_prefixes="#")
|
||||
self._default.read_file(open(pathOld))
|
||||
|
||||
|
||||
# wird verwendet, um die Werte der alten config zu speichern
|
||||
self._HW_Einzelpreise = None
|
||||
|
||||
def exists(self):
|
||||
return self._given
|
||||
|
||||
@@ -43,14 +47,17 @@ class Kosten():
|
||||
|
||||
:param not_found_keys: Dict von Bauteilen, denen eine Nummer zugeordnet ist, die in Sivas nicht existiert z.B. {'schaltschrankgehaeuse_b1x800_zubehoer': '----'}
|
||||
"""
|
||||
faktoren = self.getZuordnungTeilenummernAsDict("Faktoren")
|
||||
newDict = {}
|
||||
for key, val in self.getZuordnungTeilenummernAsDict().items():
|
||||
for key, val in self.getZuordnungTeilenummernAsDict("HW_Einzelpreise").items():
|
||||
number = val.strip()
|
||||
self.getPriceFromNumber(key, number, newDict, not_found_keys)
|
||||
if "+" in number:
|
||||
del not_found_keys[key]
|
||||
split_sivas_ids = number.split('+')
|
||||
self.getPriceFromAddedNumbers(key, split_sivas_ids, newDict, not_found_keys)
|
||||
if key in faktoren:
|
||||
newDict[key] *= float(faktoren[key])
|
||||
|
||||
return newDict
|
||||
|
||||
@@ -68,8 +75,8 @@ class Kosten():
|
||||
for summand in split_sivas_ids:
|
||||
summand = summand.strip()
|
||||
# summand: einzelner Summand z.B. '827072204'
|
||||
if summand in self._kosten["Herstellkosten"]:
|
||||
cost = self._kosten["Herstellkosten"][summand]
|
||||
if summand in self._kosten["Laufende Materialkosten"]:
|
||||
cost = self._kosten["Laufende Materialkosten"][summand]
|
||||
# cost: Einzelpreis eines Summanden [€]
|
||||
if type(cost) is type(int) or type(float):
|
||||
price += cost
|
||||
@@ -89,21 +96,21 @@ class Kosten():
|
||||
:param newDict: z.B. {'schaltschrankgehaeuse_b2x800_zubehoer':9490.23, ...}
|
||||
:param not_found_keys: Dict von Bauteilen, denen eine Nummer zugeordnet ist, die in Sivas nicht existiert z.B. {'schaltschrankgehaeuse_b1x800_zubehoer': '----'}
|
||||
"""
|
||||
if number in self._kosten["Herstellkosten"]:
|
||||
price = self._kosten["Herstellkosten"][number]
|
||||
if number in self._kosten["Laufende Materialkosten"]:
|
||||
price = self._kosten["Laufende Materialkosten"][number]
|
||||
if price is int or float:
|
||||
newDict.update({key: price})
|
||||
else:
|
||||
not_found_keys.update({key:number})
|
||||
def getDefaultDictAsFloat(self):
|
||||
def getDefaultDictAsFloat(self, section_name):
|
||||
res = dict()
|
||||
for key, val in self._default.items("HW_Einzelpreise"):
|
||||
for key, val in self._default.items(section_name):
|
||||
res[key] = float(val)
|
||||
return res
|
||||
|
||||
def getZuordnungTeilenummernAsDict(self):
|
||||
def getZuordnungTeilenummernAsDict(self, section_name):
|
||||
res = dict()
|
||||
for key, val in self._zuordnung.items("HW_Einzelpreise"):
|
||||
for key, val in self._zuordnung.items(section_name):
|
||||
res[key] = val
|
||||
return res
|
||||
|
||||
@@ -111,11 +118,54 @@ class Kosten():
|
||||
config = configparser.ConfigParser()
|
||||
config["HW_Einzelpreise"] = latest_costs
|
||||
config["Preise durch Sivas nicht ermittelbar"] = not_found_in_sivas
|
||||
print("writing new config file", name)
|
||||
with open(name, 'w') as configfile:
|
||||
config.write(configfile)
|
||||
|
||||
costs = Kosten()
|
||||
not_found_in_sivas = dict()
|
||||
latest_costs = costs.getNewPricesAsDict(not_found_in_sivas)
|
||||
costs.writeNewConfig('Sivas_Abgleich.cfg')
|
||||
def writePriceIncrements(self, name='Preis_Increments.xlsx'):
|
||||
not_found_in_sivas = dict()
|
||||
latest_costs = self.getNewPricesAsDict(not_found_in_sivas)
|
||||
sivas_numbers = list()
|
||||
old_prices = list()
|
||||
new_prices = list()
|
||||
for sivas_number in latest_costs.keys():
|
||||
sivas_numbers.append(sivas_number)
|
||||
old_prices.append(self.getDefaultDictAsFloat("HW_Einzelpreise").get(sivas_number))
|
||||
new_prices.append(latest_costs.get(sivas_number))
|
||||
data = {"Sivas-Nummern":sivas_numbers, "Alte Preise":old_prices, "Neue Preise":new_prices}
|
||||
df = pd.DataFrame.from_dict(data)
|
||||
print("write price increments", name)
|
||||
df.to_excel(name, sheet_name="Preisänderungen", index_label="Sivas-Nummern")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='calculation of a system according to Bös', prog='ecalc')
|
||||
parser.add_argument('-o', '--outfile', action='store', help='name of the output excel file', default="Preis_Increments.xlsx")
|
||||
|
||||
args = parser.parse_args()
|
||||
base = os.environ.get('ECALC_CFG')
|
||||
zuordCfgFilePath = os.path.join(base, "Zuordnung_Teilenummern.cfg")
|
||||
sivasCfgFilePath = os.path.join(base, "Sivas_Daten.cfg")
|
||||
gridExportFilePath = os.path.join(base, "grid_export.xlsx")
|
||||
|
||||
|
||||
if not os.path.exists(zuordCfgFilePath):
|
||||
print("no Zuordnung_Teilenummern.cfg in ECALC_CFG")
|
||||
if not os.path.exists(sivasCfgFilePath):
|
||||
print("no Sivas_Daten.cfg in ECALC_CFG")
|
||||
if not os.path.exists(gridExportFilePath):
|
||||
print("no grid_export.xlsx with prices from SIVAS in ECALC_CFG")
|
||||
|
||||
# lies die alten config und die Excel-Liste mit den Sivas-Daten
|
||||
costs = Kosten(zuordCfgFilePath, sivasCfgFilePath, gridExportFilePath)
|
||||
not_found_in_sivas = dict()
|
||||
latest_costs = costs.getNewPricesAsDict(not_found_in_sivas)
|
||||
# schreibe die neue config mit den aktuellen Preisen
|
||||
outCfg = os.path.join(os.environ.get('ECALC_WORK'), "Sivas_Abgleich.cfg")
|
||||
costs.writeNewConfig(outCfg)
|
||||
|
||||
# schreibe die Preisänderungen in eine Excel-Datei
|
||||
outPath = os.path.join(os.environ.get('ECALC_WORK'), args.outfile)
|
||||
costs.writePriceIncrements(outPath)
|
||||
@@ -0,0 +1,463 @@
|
||||
import rieter_ekalk as rek
|
||||
import pandas as pd
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import configparser
|
||||
|
||||
|
||||
order_dienstleistungen = [
|
||||
"Pflichtenheft_Autom_Schnittstellen",
|
||||
|
||||
"Erstellung_Steuerungslayout",
|
||||
"Schaltplanerstellung_incl_Korrekturen",
|
||||
"Projektkoordination",
|
||||
"Materialdispo",
|
||||
"Abstimmung_mit_E_Werkstatt",
|
||||
"Erstellen_E_Montageunterlagen",
|
||||
|
||||
"PC_Installation",
|
||||
"Oberfläche_Simulation",
|
||||
"SPS_Test_im_Haus_Simulation",
|
||||
"Bedienerhandbuch",
|
||||
"SPS_Doku",
|
||||
"PC_Doku",
|
||||
"Summe_Dienstleistungen_Hardwareplanung",
|
||||
|
||||
"Schaltschrankbau",
|
||||
"Unterverteilerbau",
|
||||
"Klemmkastenbau_je_2h",
|
||||
"Bedientableaubau",
|
||||
"Vormontage_im_Haus",
|
||||
"Summe_Dienstleistungen_Elektrowerkstatt",
|
||||
|
||||
"Summe_Dienstleistungen_in_LL",
|
||||
]
|
||||
order_ergebnisse = [
|
||||
"E_Werkstatt",
|
||||
"Schaltschrankbau_extern_Mehrkosten",
|
||||
"Dienstleistung_in_LL",
|
||||
"Pflichtenheft",
|
||||
"SPS_Programmierung",
|
||||
"PC_Programmierung_Visualisierung",
|
||||
"Montage_elektrisch",
|
||||
"Inbetriebnahmetest_Hardware_durch_Montage",
|
||||
"SPS_Inbetriebsetzung",
|
||||
"PC_Inbetriebsetzung",
|
||||
"Inbetriebnahmeunterstützung_durch_Montage",
|
||||
"Dokumentation",
|
||||
"Bedienungsanleitung_Emmert",
|
||||
"Schulung_vor_Ort_beim_Kunden",
|
||||
"Abnahme",
|
||||
"SPS_Anlagenbetreuung",
|
||||
"PC_Anlagenbetreuung",
|
||||
"Anlagenbetreuung_durch_Montage",
|
||||
"GESAMT",
|
||||
]
|
||||
order_hardware = [
|
||||
"schaltschrankgehaeuse_b1x1200_zubehoer",
|
||||
"schaltschrankgehaeuse_b2x800_zubehoer",
|
||||
"schaltschrankgehaeuse_b1x1200+1x800_zubehoer",
|
||||
"sps_simatic_s7_cpu315_2_pn_dp",
|
||||
"speicherkarte_fuer_sps_512_kb",
|
||||
"sps_simatic_s7_cpu317_2_pn_dp",
|
||||
"speicherkarte_fuer_sps2_mb",
|
||||
"sps_simatic_s7_1515_2",
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
"abgang_400v",
|
||||
"abgang_24_v",
|
||||
"anlagenrechner",
|
||||
"anlagenrechner_ohne_bildschirm",
|
||||
"pulteinbau_monitor_srline_rflat_24fhd",
|
||||
"kurzhubtastatur_kbt06_mit_touchpad_uslayout",
|
||||
"netzwerk_display_adapter_lindy",
|
||||
"zusaetzlicher_bildschirm",
|
||||
"schaltschrank",
|
||||
"unterverteiler_fuer_1neuenhauser_pm",
|
||||
"unterverteiler_fuer_1flyer",
|
||||
"unterverteiler_fuer_2flyer",
|
||||
"unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine",
|
||||
"unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine",
|
||||
"unterverteiler_fuer_puffer",
|
||||
"unterverteiler_fuer_5_rsm_fa",
|
||||
"korrektur_5_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_10_rsm_fa",
|
||||
"korrektur_10_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar",
|
||||
"korrektur_3_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_4_rsm_direct",
|
||||
"korrektur_4_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_12_rsm_direct",
|
||||
"korrektur_12_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_8_rsm_direct",
|
||||
"korrektur_8_rsm_direct_zusaetzlich_im_unterverteiler",
|
||||
"busverteiler_6_rsm_direct",
|
||||
"korrektur_6_rsm_zusaetzlich_im_busverteiler",
|
||||
"busverteiler_8_rsm_direct",
|
||||
"korrektur_8_rsm_zusaetzlich_im_busverteiler",
|
||||
"antrieb_unidirektional_halbleiter",
|
||||
"antrieb_bidirektional_halbleiter",
|
||||
"antrieb_unidirektional_schuetz",
|
||||
"antrieb_bidirektional_schuetz",
|
||||
"motorschutzschalter",
|
||||
"wendeschuetzschaltung",
|
||||
"frequenzumrichter",
|
||||
"bedienstation_1fach_kpl",
|
||||
"bedienst_2fach_wechs_bcd_10f",
|
||||
"bedienstation_2fach_kpl",
|
||||
"halter_bedientableau_2fach",
|
||||
"bedienstation_3fach_kpl",
|
||||
"halter_bedientableau_3fach",
|
||||
"bedienstation_4fach_kpl",
|
||||
"halter_bedientableau_4fach",
|
||||
"bedienstation_6fach_kpl",
|
||||
"halter_bedienstation_6fach",
|
||||
"drucktaster_automatische_umfahrung",
|
||||
"halter_fuer_drucktaster",
|
||||
"ET200_SP",
|
||||
"et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45",
|
||||
"korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45",
|
||||
"et200_sp_eingangskarte_8_de",
|
||||
"korrektur_et200_sp_eingangskarte_8_de",
|
||||
"et200_sp_eingangskarte_16_de",
|
||||
"et200_sp_eingangskarte_8_do",
|
||||
"korrektur_et200_sp_eingangskarte_8_do",
|
||||
"et200_sp_eingangskarte_16_do",
|
||||
"et200_sp_base_unit_neue_last_mit_potKlemmen",
|
||||
"korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen",
|
||||
"et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen",
|
||||
"et200_sp_base_unit_neue_last",
|
||||
"korrektur_et200_sp_base_unit_neue_last",
|
||||
"et200_sp_base_unit_links_gebrueckt",
|
||||
"korrektur_et200_sp_base_unit_links_gebrueckt",
|
||||
"SLIO",
|
||||
"et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO",
|
||||
"korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO",
|
||||
"slio_eingangskarte_4_de",
|
||||
"korrektur_slio_eingangskarte_4_de",
|
||||
"slio_eingangskarte_8_de",
|
||||
"korrektur_slio_eingangskarte_8_de",
|
||||
"slio_ausgangskarte_4_do",
|
||||
"korrektur_slio_ausgangskarte_4_do",
|
||||
"slio_ausgangskarte_8_do",
|
||||
"korrektur_slio_ausgangskarte_8_do",
|
||||
"slio_power_modul",
|
||||
"korrektur_slio_power_modul",
|
||||
"slio_4_x_dc_24v_4_x_dc_0v",
|
||||
"korrektur_slio_4_x_dc_24v_4_x_dc_0v",
|
||||
"slio_8_x_dc_24v",
|
||||
"slio_8_x_dc_0v",
|
||||
"korrektur_slio_8_x_dc_0v",
|
||||
"movimot_fu_mit_anschaltung",
|
||||
"sensor_optisch_traverse",
|
||||
"sensorhalter_ohne_sensor",
|
||||
"reflexionslichtschranke_rsm_direct",
|
||||
"stoppersensor_induktiv_mit_halter",
|
||||
"sensor_spulenpruefung_voll_leer",
|
||||
"seilzugschalter",
|
||||
"seil_fuer_seilzugschalter",
|
||||
"blitzleuchte",
|
||||
"spulenumsetzstation",
|
||||
"sensorkabel_je_20m",
|
||||
"stopper_weichenkabel_je_5m",
|
||||
"motorkabel_je_30m",
|
||||
"kabelpritschen_leitern_200_60",
|
||||
"kabelpritsche_rsm_100_60",
|
||||
"kabelpritsche_rsm_50_35",
|
||||
"klemmkasten_rsm",
|
||||
"klemmkasten_direct_in_rsm",
|
||||
"erdung",
|
||||
"kleinteile_rohre_schellen_kabelbinder_ect",
|
||||
"kabel_fuer_klemmkasten_und_bts_60m",
|
||||
"kabel_fuer_1fach_bts_zug_wechseln",
|
||||
"zuleitung_75_m_unterverteiler_4x4mm2_400vac",
|
||||
"zuleitung_75_m_unterverteiler_12x4mm2_24_vdc",
|
||||
"korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc",
|
||||
"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc",
|
||||
"korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc",
|
||||
"zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm",
|
||||
"zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm",
|
||||
"profinetkabel",
|
||||
"korrektur_profinetkabel",
|
||||
"schnittstellen_8x1mm2_30m",
|
||||
"Summe_Landsberg",
|
||||
"Summe_vorOrt",
|
||||
"Summe_gesamt",
|
||||
]
|
||||
order_eas = [
|
||||
'bedienstation_1fach_Not_Aus',
|
||||
'bedienstation_einfach_Zug_Wechseln',
|
||||
'bedienstation_automatische_Umfahrung',
|
||||
'bedienstation_zweifach_Wechs_BCD_10f',
|
||||
'bedienstation_zweifach_Not_Aus_Reset',
|
||||
'bedienst_dreifach',
|
||||
'bedienst_vierfach',
|
||||
'bedienst_sechsfach',
|
||||
'EAs_Unterverteiler_direct',
|
||||
|
||||
'Sensor_Traversenabfrage_optisch',
|
||||
'Reflexionslichtschranke_RSM_DIRECT',
|
||||
'Sensor induktiv Flyer+PM',
|
||||
'Seilzugschalter',
|
||||
|
||||
'Weiche',
|
||||
'Weiche_nach_PM_bipolar',
|
||||
'gemeinsame_Weichenrueckstellung',
|
||||
'Dreifach_Weiche_DIRECT',
|
||||
'Kreuzungsweiche',
|
||||
'Stopper',
|
||||
'Ventil_RA_3_2_abhebbar',
|
||||
'Ventil_Doppelstreckenantrieb_5_2_abhebbar',
|
||||
'Blitzleuchte_Stoerung',
|
||||
|
||||
'Schnittstelle_Flyer_ElectroJet',
|
||||
'Schnittstelle_Putzmaschine_Neuhauser',
|
||||
'FEldbux_UV_EinAusgang',
|
||||
|
||||
'Spulenumsetzstation',
|
||||
|
||||
'RA_unidirektional',
|
||||
'RA_unidirektional_abhebbar',
|
||||
'RA_unidirektional_mit_gemeinsamer_Wendung',
|
||||
'RA_unidirektional_ohne_SPS_Ansteuerung',
|
||||
'RA_bidirektional',
|
||||
'RA_bidirektional_abhebbar',
|
||||
'RA_bidirektional_abhebbar_gemeinsWend',
|
||||
'RA_bidirektional_ohne_SPS_Ansteuerung',
|
||||
'RA_in_RSM_bidirektional',
|
||||
'Doppelstreckenantrieb',
|
||||
'Doppelstreckenantriebgemeinsame_Wendung',
|
||||
'gemeinsame_Wendung',
|
||||
'Frequenzumrichter',
|
||||
|
||||
'Summe Komponenten',
|
||||
'Summe Komponenten inkcl. Reserve',
|
||||
]
|
||||
order_emo = [
|
||||
'Schaltschrank_aufstellen',
|
||||
'Unterverteiler_montieren',
|
||||
'Pritsche_montieren_umbauen_demontieren',
|
||||
'Pritsche_in_RSM_montieren',
|
||||
'Motor_verdrahten_und_anschliessen',
|
||||
'Tableau_befestigen_und_anschliessen',
|
||||
'Schnittstelle_Flyer_Putzmaschine',
|
||||
'Sensoren_montieren',
|
||||
'Seilzugschalter_installieren',
|
||||
'Blitzleuchte_installieren',
|
||||
'Weiche_Stopper_anschliessen',
|
||||
'Erdung',
|
||||
'Summe',
|
||||
'Summe inkl. Mehraufwand',
|
||||
]
|
||||
class cfg():
|
||||
"""
|
||||
Liest die config-Datei ein, in der Stückpreise und Zeiteinheiten pro Bauteil wie in der rieter_ekalk Excel-Datei verwendet angegeben sind, und schreibt sie in ein Dictionary.
|
||||
"""
|
||||
def __init__(self, path="Sivas_Daten.cfg"):
|
||||
"""
|
||||
:param path: Die config-Datei, in der Stückpreise und Zeiteinheiten der jeweiligen Bauteile aufgelistet sind z.B.[HW_Einzelpreise]
|
||||
# Schaltschrank Einzelpreis
|
||||
schaltschrankgehaeuse_b1x800_zubehoer = 2000
|
||||
"""
|
||||
self._hasConfig = True
|
||||
if os.path.exists(path):
|
||||
self._cfg = configparser.ConfigParser(inline_comment_prefixes="#")
|
||||
self._cfg.optionxform = str
|
||||
self._cfg.read_file(open(path))
|
||||
else:
|
||||
self._hasConfig = False
|
||||
self._cfg = None
|
||||
|
||||
def exists(self):
|
||||
return self._hasConfig
|
||||
|
||||
def isfloat(self, num):
|
||||
try:
|
||||
float(num)
|
||||
return True
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
def getTypedDict(self, section:str):
|
||||
"""
|
||||
Schreibt die Zuordnungen von Bauteil:Stückpreis/Zeiteinheit (je nach gewählter Überschrift) aus der config-Datei in ein Dictionary.
|
||||
:param section: Überschrift in der config-Datei z.B. "HW_Einzelpreise"
|
||||
"""
|
||||
if section not in self._cfg.sections():
|
||||
return dict()
|
||||
res = dict()
|
||||
for key, val in self._cfg.items(section):
|
||||
if val.lower() in ['true']:
|
||||
res[key] =True
|
||||
elif val.lower() in ['false']:
|
||||
res[key] =False
|
||||
elif val.startswith("-"):
|
||||
res[key] = float(val)
|
||||
elif self.isfloat(val):
|
||||
res[key] = float(val)
|
||||
else:
|
||||
res[key] = val
|
||||
return res
|
||||
|
||||
def to_dicts(eas:rek.EA, hw:rek.HW, emo:rek.EMO, dl:rek.Dienstleistung, erg:rek.Ergebnis):
|
||||
dEas = eas.getSEAs(order_eas)
|
||||
dEas['Summe Komponenten'] = [eas.gesamt_E(), eas.gesamt_A()]
|
||||
dEas['Summe Komponenten inkcl. Reserve'] = [eas.gesamt_E_incl_reserve(), eas.gesamt_A_incl_reserve()]
|
||||
|
||||
dhardware = hw.to_dict()
|
||||
hoursEMO = emo.to_dict()
|
||||
dDienstleistung = dl.to_dict()
|
||||
|
||||
dSummary = erg.summary_costs(hw)
|
||||
return (dEas, dhardware, hoursEMO, dDienstleistung, dSummary)
|
||||
|
||||
def to_json(eas:rek.EA, hw:rek.HW, emo:rek.EMO, dl:rek.Dienstleistung, erg:rek.Ergebnis, outfile):
|
||||
(dEas, hardware, hoursEMO, dienstleistung, ergebnisse) = to_dicts(eas, hw, emo, dl, erg)
|
||||
dOut = {
|
||||
'ergebnisse': ergebnisse,
|
||||
'hardware': hardware,
|
||||
'eas': dEas,
|
||||
'dienstleistung': dienstleistung,
|
||||
'emo': hoursEMO,
|
||||
}
|
||||
with open(outfile, 'w', encoding ='utf8') as json_file:
|
||||
json.dump(dOut, json_file, ensure_ascii=False, indent=2)
|
||||
|
||||
def to_excel(eas:rek.EA, hw:rek.HW, emo:rek.EMO, dl:rek.Dienstleistung, erg:rek.Ergebnis, outfile):
|
||||
|
||||
(dEas, hardware, hoursEMO, dienstleistung, ergebnisse) = to_dicts(eas, hw, emo, dl, erg)
|
||||
|
||||
df_temp = pd.DataFrame.from_dict(data=dEas, orient='index', columns=['S.E', 'S.A'])
|
||||
df_eas = pd.DataFrame(data=df_temp, index=order_eas)
|
||||
|
||||
df_temp = pd.DataFrame.from_dict(data=hardware, orient='index', columns=['Strück'])
|
||||
df_hardware = pd.DataFrame(data=df_temp, index=order_hardware)
|
||||
|
||||
df_temp = pd.DataFrame.from_dict(data=hoursEMO, orient='index', columns=['Aufwand [h]'])
|
||||
df_emo = pd.DataFrame(data=df_temp, index=order_emo)
|
||||
|
||||
df_temp = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Aufwand [h]'])
|
||||
df_dienst = pd.DataFrame(data=df_temp, index=order_dienstleistungen)
|
||||
|
||||
df_temp = pd.DataFrame.from_dict(data=ergebnisse, orient='index', columns=['Aufwand [€]'])
|
||||
df_aufwand = pd.DataFrame(data=df_temp, index=order_ergebnisse)
|
||||
|
||||
#df = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Dienstleistungen'])
|
||||
|
||||
with pd.ExcelWriter(outfile) as writer:
|
||||
df_aufwand.to_excel(writer, sheet_name='Kostenaufstellung')
|
||||
df_hardware.to_excel(writer, sheet_name='Hardware')
|
||||
df_dienst.to_excel(writer, sheet_name='Dienstleistungen')
|
||||
df_eas.to_excel(writer, sheet_name='EAs')
|
||||
df_emo.to_excel(writer, sheet_name='EMO')
|
||||
# TODO Mengengerüst, ev. Anschlussleistung und Ausgangsstrom
|
||||
|
||||
def run_calc(infile, SivasConfig):
|
||||
|
||||
|
||||
infileCfg = cfg(infile)
|
||||
|
||||
Anzahl_MG = infileCfg.getTypedDict("allgemein")
|
||||
rsm_direct_eingabe = infileCfg.getTypedDict("rsm_direct")
|
||||
rsm_fa_eingabe = infileCfg.getTypedDict("rsm_fa")
|
||||
flyer_f40_eingabe = infileCfg.getTypedDict("flyer_f40")
|
||||
neuenhauser_eingabe = infileCfg.getTypedDict("neuenhauser")
|
||||
flyer_eingabe = infileCfg.getTypedDict("flyer")
|
||||
verbindungsstrecken_w_eingabe = infileCfg.getTypedDict("verbindungsstrecken_w")
|
||||
puffer_eingabe = infileCfg.getTypedDict("puffer")
|
||||
turm_eingabe = infileCfg.getTypedDict("turm")
|
||||
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)
|
||||
|
||||
|
||||
anStr = SivasConfig.getTypedDict("Antriebsstrom")
|
||||
cosPhi = SivasConfig.getTypedDict("cos phi")
|
||||
al = rek.Anschlussl(anStr, cosPhi)
|
||||
Anzahl_AL ={}
|
||||
al.calc(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)
|
||||
|
||||
Anzahl_EAS = infileCfg.getTypedDict("EAS")
|
||||
eas = rek.EA(Anzahl_EAS, mg)
|
||||
|
||||
hwep = SivasConfig.getTypedDict("HW_Einzelpreise")
|
||||
hwhp = SivasConfig.getTypedDict("HW_Zeiten Hardwareplanung")
|
||||
hwzew = SivasConfig.getTypedDict("HW_Zeiten Elektro-Werkstatt")
|
||||
|
||||
Anzahl_HW = infileCfg.getTypedDict("HW")
|
||||
hw = rek.HW(hwep, hwhp, hwzew)
|
||||
hw.calc(Anzahl_HW, mg, eas)
|
||||
|
||||
emoz = SivasConfig.getTypedDict("ElektSro-Montagezeiten")
|
||||
emo = rek.EMO(emoz)
|
||||
emo.calc(eas, hw, mg)
|
||||
|
||||
Anzahl_DL = infileCfg.getTypedDict("DL")
|
||||
dl = rek.Dienstleistung(Anzahl_DL, hw)
|
||||
|
||||
Anzahl_Ergebnis = infileCfg.getTypedDict("Ergebnis")
|
||||
kph = SivasConfig.getTypedDict("Kosten pro h")
|
||||
erg = rek.Ergebnis(kph)
|
||||
erg.calc(Anzahl_Ergebnis, hw, dl, emo)
|
||||
|
||||
return (eas, hw, emo, dl, erg)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='calculation of a system according to Bös', prog='ecalc')
|
||||
parser.add_argument('-i', '--infile', action='store', help='name of the input file', default="jayjay.cfg")
|
||||
parser.add_argument('-x', '--xlsx', action='store', help='name of the output .xlsx file. If none given, name of the input file is used.')
|
||||
parser.add_argument('-c', '--config', action='store', help='name of the config file inside of cfg folder to use. Default is Sivas_Daten.cfg', default="Sivas_Daten.cfg")
|
||||
parser.add_argument('-j', '--json', action='store', help='name of the json file as output. If none given, name of the input file is used. ')
|
||||
|
||||
args = parser.parse_args()
|
||||
sivasCfgFilePath = os.path.join(os.environ.get('ECALC_CFG'), args.config)
|
||||
RieterConfig = cfg(sivasCfgFilePath)
|
||||
|
||||
inFilePath = os.path.join(os.environ.get('ECALC_WORK'), args.infile)
|
||||
if os.path.isfile(inFilePath):
|
||||
(fname, ext) = os.path.splitext(args.infile)
|
||||
(eas, hw, emo, dl, erg) = run_calc(inFilePath, RieterConfig)
|
||||
if args.xlsx:
|
||||
xlsPath = os.path.join(os.environ.get('ECALC_WORK'), args.xlsx)
|
||||
else:
|
||||
xlsPath = os.path.join(os.environ.get('ECALC_WORK'), fname + '.xlsx')
|
||||
to_excel(eas, hw, emo, dl, erg, xlsPath)
|
||||
if args.json:
|
||||
jsonPath = os.path.join(os.environ.get('ECALC_WORK'), args.json)
|
||||
else:
|
||||
jsonPath = os.path.join(os.environ.get('ECALC_WORK'), fname + '.json')
|
||||
to_json(eas, hw, emo, dl, erg, jsonPath)
|
||||
|
||||
else:
|
||||
print("no such file in ECALC_WORK")
|
||||
# os.environ.get('ECALC_BIN')
|
||||
# os.environ.get('ECALC_WORK')
|
||||
# os.environ.get('ECALC_CFG')
|
||||
# os.environ.get('ECALC_LIB')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,30 +1,6 @@
|
||||
import math
|
||||
import json
|
||||
import configparser
|
||||
import os.path
|
||||
|
||||
JSON_IDENT = 5
|
||||
|
||||
|
||||
class cfg():
|
||||
def __init__(self, path="Daten_cfg.txt"):
|
||||
self._hasConfig = True
|
||||
if os.path.exists(path):
|
||||
self._cfg = configparser.ConfigParser(inline_comment_prefixes="#")
|
||||
self._cfg.read_file(open(path))
|
||||
else:
|
||||
self._hasConfig = False
|
||||
self._cfg = None
|
||||
|
||||
def exists(self):
|
||||
return self._hasConfig
|
||||
|
||||
def getDictAsFloat(self, section):
|
||||
res = dict()
|
||||
for key, val in self._cfg.items(section):
|
||||
res[key] = float(val)
|
||||
return res
|
||||
RieterConfig = cfg()
|
||||
|
||||
class MG():
|
||||
def __init__(self, deckblatt:dict, **kwargs):
|
||||
@@ -171,9 +147,17 @@ class MG():
|
||||
|
||||
|
||||
def get_deckblatt_value(self, key):
|
||||
"""
|
||||
Gibt eingegebenen Wert des Eingabeparameters zurück.
|
||||
:param key: Name eines Eingabeparameters im Deckblatt z.B. "Begegnungsstrecke_Bypass"
|
||||
"""
|
||||
return self._deckblatt.get(key, 0)
|
||||
|
||||
def get_value_of_object(self, objectname, key):
|
||||
def get_value_of_object(self, objectname:str, key:str):
|
||||
"""
|
||||
:param objectname: Name der Klasse, zu der das Bauteil gehört, dessen Wert man wissen will z.B. "puffer"
|
||||
:param key: Name des Bauteils, dessen Wert ermittelt werden soll z.B. "Sensor_optisch_Traverse"
|
||||
"""
|
||||
# Deckblatt
|
||||
if (objectname.lower() == "deckblatt"):
|
||||
return self._deckblatt.get(key)
|
||||
@@ -906,7 +890,7 @@ class Puffer():
|
||||
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
|
||||
self._Mengen["Hauptschalter_Ein_Meldung"] = self._Puffer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
|
||||
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
|
||||
def anzahl(self, partname, defaultv = 0):
|
||||
def anzahl(self, partname:str, defaultv = 0):
|
||||
return self._Mengen.get(partname, defaultv)
|
||||
# Turm
|
||||
class Turm():
|
||||
@@ -941,7 +925,6 @@ class Turm():
|
||||
def anzahl(self, partname, defaultv = 0):
|
||||
return self._Mengen.get(partname, defaultv)
|
||||
|
||||
|
||||
class EA():
|
||||
|
||||
stueckzahl = {
|
||||
@@ -1126,7 +1109,13 @@ class EA():
|
||||
return self.EAs[partname][1]
|
||||
def anzahl(self, partname, defaultv = 0):
|
||||
return self._Anzahl.get(partname, defaultv)
|
||||
|
||||
def getSEAs(self, partnames:list):
|
||||
res = dict()
|
||||
for partname in partnames:
|
||||
if partname not in self.EAs:
|
||||
continue
|
||||
res[partname] = [self.get_SE(partname), self.get_SA(partname)]
|
||||
return res
|
||||
def get_SE(self, partname):
|
||||
num_of_e = self.getE(partname)
|
||||
zahl = self.anzahl(partname)
|
||||
@@ -1173,7 +1162,6 @@ class EA():
|
||||
SiemensS7_32DA_incl_reserve = math.ceil(self.gesamt_A_incl_reserve()/32)
|
||||
return (SiemensS7_32DE_incl_reserve, SiemensS7_32DA_incl_reserve)
|
||||
|
||||
|
||||
class HW():
|
||||
#TODO "bedienstation_1fach_Not_Aus" keine Anzahl manuelle eingabe aber dann noch bezüge in mengengerüst und hardware; muss noch eingepflegt werden
|
||||
mengen = {
|
||||
@@ -1189,7 +1177,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 0,
|
||||
"sps_simatic_s7_1518_4": 0,
|
||||
"sps_et200_1512sp": 0,
|
||||
#"memory_card_256_mb": 0
|
||||
#"memory_card_2_gb": 0
|
||||
"et200_sp_ea_ebene":1,
|
||||
"netzwerk_fernwartung":1,
|
||||
@@ -1343,7 +1330,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 3827.8, # 790008101
|
||||
"sps_simatic_s7_1518_4": 5892, # 6ES7518-4AP00-0AB0
|
||||
"sps_et200_1512sp": 705.75, # 709000003
|
||||
"memory_card_256_mb": 0, # 708015093
|
||||
"memory_card_2_gb": 515.9, # 708015094
|
||||
"et200_sp_ea_ebene": 0, # 790009001
|
||||
"netzwerk_fernwartung": 750, # 790011001
|
||||
@@ -1468,8 +1454,8 @@ class HW():
|
||||
"schnittstellen_8x1mm2_30m": 35.4, # 725000019
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
ep.update(RieterConfig.getDictAsFloat("HW_Einzelpreise"))
|
||||
# if RieterConfig.exists():
|
||||
# ep.update(RieterConfig.getDictAsFloat("HW_Einzelpreise"))
|
||||
# Zeit pro Einheit in min
|
||||
zpe_dienstl_hardwareplanung = {
|
||||
"schaltschrankgehaeuse_b1x1200_zubehoer": 4200,
|
||||
@@ -1483,7 +1469,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 0,
|
||||
"sps_simatic_s7_1518_4": 0,
|
||||
"sps_et200_1512sp": 0,
|
||||
"memory_card_256_mb": 0,
|
||||
"memory_card_2_gb": 0,
|
||||
"et200_sp_ea_ebene":60,
|
||||
"netzwerk_fernwartung":0,
|
||||
@@ -1512,8 +1497,8 @@ class HW():
|
||||
"busverteiler_8_rsm_direct":960
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
zpe_dienstl_hardwareplanung.update(RieterConfig.getDictAsFloat("HW_Zeiten Hardwareplanung"))
|
||||
# if RieterConfig.exists():
|
||||
# zpe_dienstl_hardwareplanung.update(RieterConfig.getDictAsFloat("HW_Zeiten Hardwareplanung"))
|
||||
zpe_e_werkstatt = {
|
||||
"schaltschrankgehaeuse_b1x1200_zubehoer": 2400,
|
||||
"schaltschrankgehaeuse_b2x800_zubehoer": 4800,
|
||||
@@ -1526,7 +1511,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 0,
|
||||
"sps_simatic_s7_1518_4": 0,
|
||||
"sps_et200_1512sp": 0,
|
||||
"memory_card_256_mb": 0,
|
||||
"memory_card_2_gb": 0,
|
||||
"et200_sp_ea_ebene":120,
|
||||
"netzwerk_fernwartung":0,
|
||||
@@ -1574,8 +1558,8 @@ class HW():
|
||||
"halter_fuer_drucktaster":0,
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
zpe_e_werkstatt.update(RieterConfig.getDictAsFloat("HW_Zeiten Elektro-Werkstatt"))
|
||||
# if RieterConfig.exists():
|
||||
# zpe_e_werkstatt.update(RieterConfig.getDictAsFloat("HW_Zeiten Elektro-Werkstatt"))
|
||||
Keys_of_Vor_Ort = [
|
||||
"movimot_fu_mit_anschaltung",
|
||||
"sensor_optisch_traverse",
|
||||
@@ -1620,7 +1604,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_256_mb",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
@@ -1633,49 +1616,87 @@ class HW():
|
||||
"netzwerk_display_adapter_lindy",
|
||||
"zusaetzlicher_bildschirm"
|
||||
]
|
||||
def __init__(self, anzahl:dict, mg: type[MG], eas: type[EA]):
|
||||
def __init__(self, hwep=None, hwhp=None, hwew=None):
|
||||
if hwep:
|
||||
self.set_config_data("HW_Einzelpreise", hwep)
|
||||
if hwhp:
|
||||
self.set_config_data("HW_Zeiten Hardwareplanung", hwhp)
|
||||
if hwew:
|
||||
self.set_config_data("HW_Zeiten Elektro-Werkstatt", hwew)
|
||||
|
||||
def anzahl_set(self, numbers:dict):
|
||||
self._anzahl["schaltschrankgehaeuse_b1x1200_zubehoer"] = numbers.get("schaltschrankgehaeuse_b1x1200_zubehoer", 0)
|
||||
self._anzahl["schaltschrankgehaeuse_b2x800_zubehoer"] = numbers.get("schaltschrankgehaeuse_b2x800_zubehoer", 0)
|
||||
self._anzahl["schaltschrankgehaeuse_b1x1200+1x800_zubehoer"] = numbers.get("schaltschrankgehaeuse_b1x1200+1x800_zubehoer", 0)
|
||||
self._anzahl["sps_simatic_s7_cpu315_2_pn_dp"] = numbers.get("sps_simatic_s7_cpu315_2_pn_dp", 0)
|
||||
self._anzahl["speicherkarte_fuer_sps_512_kb"] = numbers.get("speicherkarte_fuer_sps_512_kb", 0)
|
||||
self._anzahl["sps_simatic_s7_cpu317_2_pn_dp"] = numbers.get("sps_simatic_s7_cpu317_2_pn_dp", 0)
|
||||
self._anzahl["speicherkarte_fuer_sps2_mb"] = numbers.get("speicherkarte_fuer_sps2_mb", 0)
|
||||
self._anzahl["sps_simatic_s7_1515_2"] = numbers.get("sps_simatic_s7_1515_2", 0)
|
||||
self._anzahl["sps_simatic_s7_1517_3"] = numbers.get("sps_simatic_s7_1517_3", 0)
|
||||
self._anzahl["sps_simatic_s7_1518_4"] = numbers.get("sps_simatic_s7_1518_4", 0)
|
||||
self._anzahl["sps_et200_1512sp"] = numbers.get("sps_et200_1512sp", 0)
|
||||
self._anzahl["et200_sp_ea_ebene"] = numbers.get("et200_sp_ea_ebene", 0)
|
||||
self._anzahl["netzwerk_fernwartung"] = numbers.get("netzwerk_fernwartung", 0)
|
||||
self._anzahl["abgang_400v"] = numbers.get("abgang_400v", 0)
|
||||
self._anzahl["abgang_24_v"] = numbers.get("abgang_24_v", 0)
|
||||
self._anzahl["anlagenrechner"] = numbers.get("anlagenrechner", 0)
|
||||
self._anzahl["anlagenrechner_ohne_bildschirm"] = numbers.get("anlagenrechner_ohne_bildschirm", 0)
|
||||
self._anzahl["pulteinbau_monitor_srline_rflat_24fhd"] = numbers.get("pulteinbau_monitor_srline_rflat_24fhd", 0)
|
||||
self._anzahl["kurzhubtastatur_kbt06_mit_touchpad_uslayout"] = numbers.get("kurzhubtastatur_kbt06_mit_touchpad_uslayout", 0)
|
||||
self._anzahl["netzwerk_display_adapter_lindy"] = numbers.get("netzwerk_display_adapter_lindy", 0)
|
||||
self._anzahl["zusaetzlicher_bildschirm"] = numbers.get("zusaetzlicher_bildschirm", 0)
|
||||
|
||||
|
||||
self._anzahl["unterverteiler_fuer_1flyer"] = numbers.get("unterverteiler_fuer_1flyer", 0)
|
||||
self._anzahl["unterverteiler_fuer_2flyer"] = numbers.get("unterverteiler_fuer_2flyer", 0)
|
||||
self._anzahl["unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"] = numbers.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0)
|
||||
self._anzahl["unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"] = numbers.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0)
|
||||
self._anzahl["unterverteiler_fuer_puffer"] = numbers.get("unterverteiler_fuer_puffer", 0)
|
||||
self._anzahl["korrektur_5_rsm_zusaetzlich_im_unterverteiler"] = numbers.get("korrektur_5_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["korrektur_10_rsm_zusaetzlich_im_unterverteiler"] = numbers.get("korrektur_10_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
|
||||
self._anzahl["unterverteiler_fuer_4_rsm_direct"] = numbers.get("unterverteiler_fuer_4_rsm_direct", 0)
|
||||
self._anzahl["korrektur_4_rsm_zusaetzlich_im_unterverteiler"] = numbers.get("korrektur_4_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["korrektur_12_rsm_zusaetzlich_im_unterverteiler"] = numbers.get("korrektur_12_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
|
||||
self._anzahl["unterverteiler_fuer_8_rsm_direct"] = numbers.get("unterverteiler_fuer_8_rsm_direct", 0)
|
||||
self._anzahl["korrektur_8_rsm_zusaetzlich_im_unterverteiler"] = numbers.get("korrektur_8_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["korrektur_6_rsm_zusaetzlich_im_busverteiler"] = numbers.get("korrektur_6_rsm_zusaetzlich_im_busverteiler", 0)
|
||||
self._anzahl["korrektur_8_rsm_zusaetzlich_im_busverteiler"] = numbers.get("korrektur_8_rsm_zusaetzlich_im_busverteiler", 0)
|
||||
|
||||
self._anzahl["ET200_SP"] = numbers.get("ET200_SP", 0)
|
||||
self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = numbers.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0)
|
||||
self._anzahl["korrektur_et200_sp_eingangskarte_8_de"] = numbers.get("korrektur_et200_sp_eingangskarte_8_de", 0)
|
||||
|
||||
self._anzahl["et200_sp_eingangskarte_16_de"] = numbers.get("et200_sp_eingangskarte_16_de", 0)
|
||||
|
||||
self._anzahl["korrektur_et200_sp_eingangskarte_8_do"] = numbers.get("korrektur_et200_sp_eingangskarte_8_do", 0)
|
||||
|
||||
self._anzahl["korrektur_et200_sp_base_unit_links_gebrueckt"] = numbers.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0)
|
||||
self._anzahl["SLIO"] = numbers.get("SLIO", 0)
|
||||
|
||||
self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"] = numbers.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO", 0)
|
||||
self._anzahl["korrektur_slio_eingangskarte_4_de"] = numbers.get("korrektur_slio_eingangskarte_4_de", 0)
|
||||
self._anzahl["korrektur_slio_eingangskarte_8_de"] = numbers.get("korrektur_slio_eingangskarte_8_de", 0)
|
||||
self._anzahl["korrektur_slio_ausgangskarte_4_do"] = numbers.get("korrektur_slio_ausgangskarte_4_do", 0)
|
||||
self._anzahl["korrektur_slio_ausgangskarte_8_do"] = numbers.get("korrektur_slio_ausgangskarte_8_do", 0)
|
||||
self._anzahl["korrektur_slio_power_modul"] = numbers.get("korrektur_slio_power_modul", 0)
|
||||
self._anzahl["korrektur_slio_4_x_dc_24v_4_x_dc_0v"] = numbers.get("korrektur_slio_4_x_dc_24v_4_x_dc_0v", 0)
|
||||
self._anzahl["slio_8_x_dc_24v"] = numbers.get("slio_8_x_dc_0v", 0)
|
||||
self._anzahl["korrektur_slio_8_x_dc_0v"] = numbers.get("korrektur_slio_8_x_dc_0v", 0)
|
||||
|
||||
def calc(self, anzahl:dict, mg: type[MG], eas: type[EA]):
|
||||
self._anzahl = self.mengen
|
||||
|
||||
self._anzahl["schaltschrankgehaeuse_b1x1200_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x1200_zubehoer", 0)
|
||||
self._anzahl["schaltschrankgehaeuse_b2x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b2x800_zubehoer", 0)
|
||||
self._anzahl["schaltschrankgehaeuse_b1x1200+1x800_zubehoer"] = anzahl.get("schaltschrankgehaeuse_b1x1200+1x800_zubehoer", 0)
|
||||
self._anzahl["sps_simatic_s7_cpu315_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu315_2_pn_dp", 0)
|
||||
self._anzahl["speicherkarte_fuer_sps_512_kb"] = anzahl.get("speicherkarte_fuer_sps_512_kb", 0)
|
||||
self._anzahl["sps_simatic_s7_cpu317_2_pn_dp"] = anzahl.get("sps_simatic_s7_cpu317_2_pn_dp", 0)
|
||||
self._anzahl["speicherkarte_fuer_sps2_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb", 0)
|
||||
self._anzahl["sps_simatic_s7_1515_2"] = anzahl.get("sps_simatic_s7_1515_2", 0)
|
||||
self._anzahl["sps_simatic_s7_1517_3"] = anzahl.get("sps_simatic_s7_1517_3", 0)
|
||||
self._anzahl["sps_simatic_s7_1518_4"] = anzahl.get("sps_simatic_s7_1518_4", 0)
|
||||
self._anzahl["sps_et200_1512sp"] = anzahl.get("sps_et200_1512sp", 0)
|
||||
self.anzahl_set(anzahl)
|
||||
|
||||
self._anzahl["memory_card_256_mb"] = self.anzahl("speicherkarte_fuer_sps2_mb") + \
|
||||
self.anzahl("sps_simatic_s7_1515_2") + \
|
||||
self.anzahl("sps_simatic_s7_1517_3") + \
|
||||
self.anzahl("sps_simatic_s7_1518_4")
|
||||
|
||||
self._anzahl["memory_card_2_gb"] = self.anzahl("sps_simatic_s7_1518_4")
|
||||
|
||||
self._anzahl["et200_sp_ea_ebene"] = anzahl.get("et200_sp_ea_ebene", 0)
|
||||
self._anzahl["netzwerk_fernwartung"] = anzahl.get("netzwerk_fernwartung", 0)
|
||||
self._anzahl["abgang_400v"] = anzahl.get("abgang_400v", 0)
|
||||
self._anzahl["abgang_24_v"] = anzahl.get("abgang_24_v", 0)
|
||||
self._anzahl["anlagenrechner"] = anzahl.get("anlagenrechner", 0)
|
||||
self._anzahl["anlagenrechner_ohne_bildschirm"] = anzahl.get("anlagenrechner_ohne_bildschirm", 0)
|
||||
self._anzahl["pulteinbau_monitor_srline_rflat_24fhd"] = anzahl.get("pulteinbau_monitor_srline_rflat_24fhd", 0)
|
||||
self._anzahl["kurzhubtastatur_kbt06_mit_touchpad_uslayout"] = anzahl.get("kurzhubtastatur_kbt06_mit_touchpad_uslayout", 0)
|
||||
self._anzahl["netzwerk_display_adapter_lindy"] = anzahl.get("netzwerk_display_adapter_lindy", 0)
|
||||
self._anzahl["zusaetzlicher_bildschirm"] = anzahl.get("zusaetzlicher_bildschirm", 0)
|
||||
self._anzahl["schaltschrank"] = eas.stueckzahl.get("Bedienelemente_Steuerschrank")
|
||||
self._anzahl["unterverteiler_fuer_1neuenhauser_pm"] = mg.get_deckblatt_value("Neuenhauser-Putzmaschine")
|
||||
|
||||
self._anzahl["unterverteiler_fuer_1flyer"] = anzahl.get("unterverteiler_fuer_1flyer", 0)
|
||||
self._anzahl["unterverteiler_fuer_2flyer"] = anzahl.get("unterverteiler_fuer_2flyer", 0)
|
||||
self._anzahl["unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine", 0)
|
||||
self._anzahl["unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine"] = anzahl.get("unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine", 0)
|
||||
self._anzahl["unterverteiler_fuer_puffer"] = anzahl.get("unterverteiler_fuer_puffer", 0)
|
||||
|
||||
self._anzahl["korrektur_5_rsm_zusaetzlich_im_unterverteiler"] = anzahl.get("korrektur_5_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["korrektur_10_rsm_zusaetzlich_im_unterverteiler"] = anzahl.get("korrektur_10_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["busverteiler_6_rsm_direct"] = math.ceil(mg.get_deckblatt_value("Anzahl") /6) + anzahl.get("korrektur_6_rsm_zusaetzlich_im_busverteiler", 0)
|
||||
self._anzahl["busverteiler_8_rsm_direct"] = math.ceil(mg.get_deckblatt_value("Anzahl") /8) + anzahl.get("korrektur_8_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["memory_card_2_gb"] = self.anzahl("sps_simatic_s7_1518_4")
|
||||
|
||||
if (mg.get_value_of_object("rsm_fa", "Flex_A_Premium") == False):
|
||||
num_rsms = mg.get_value_of_object("rsm_fa", "Anzahl_RSM")
|
||||
self._anzahl["unterverteiler_fuer_5_rsm_fa"] = math.ceil(num_rsms/5) + anzahl.get("korrektur_5_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
@@ -1686,17 +1707,9 @@ class HW():
|
||||
else:
|
||||
num_rsms = mg.get_value_of_object("rsm_fa", "Anzahl_RSM")
|
||||
self._anzahl["unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar"] = math.ceil(num_rsms/3)
|
||||
self._anzahl["unterverteiler_fuer_4_rsm_direct"] = anzahl.get("unterverteiler_fuer_4_rsm_direct", 0)
|
||||
self._anzahl["korrektur_4_rsm_zusaetzlich_im_unterverteiler"] = anzahl.get("korrektur_4_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["korrektur_12_rsm_zusaetzlich_im_unterverteiler"] = anzahl.get("korrektur_12_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["unterverteiler_fuer_12_rsm_direct"] = math.ceil(mg.get_deckblatt_value("Anzahl") / 12) +\
|
||||
anzahl.get("korrektur_12_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["unterverteiler_fuer_8_rsm_direct"] = anzahl.get("unterverteiler_fuer_8_rsm_direct", 0)
|
||||
self._anzahl["korrektur_8_rsm_zusaetzlich_im_unterverteiler"] = anzahl.get("korrektur_8_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
self._anzahl["busverteiler_6_rsm_direct"] = math.ceil(mg.get_deckblatt_value("Anzahl") /6) + anzahl.get("korrektur_6_rsm_zusaetzlich_im_busverteiler", 0)
|
||||
self._anzahl["korrektur_6_rsm_zusaetzlich_im_busverteiler"] = anzahl.get("korrektur_6_rsm_zusaetzlich_im_busverteiler", 0)
|
||||
self._anzahl["korrektur_8_rsm_zusaetzlich_im_busverteiler"] = anzahl.get("korrektur_8_rsm_zusaetzlich_im_busverteiler", 0)
|
||||
self._anzahl["busverteiler_8_rsm_direct"] = math.ceil(mg.get_deckblatt_value("Anzahl") /8) + anzahl.get("korrektur_8_rsm_zusaetzlich_im_unterverteiler", 0)
|
||||
|
||||
|
||||
self._anzahl["antrieb_unidirektional_halbleiter"] = \
|
||||
mg.zusammenfassung().get("RA_uni") +\
|
||||
@@ -1717,6 +1730,9 @@ class HW():
|
||||
mg.get_value_of_object("rsm_fa", "RRA_bi") +\
|
||||
mg.get_value_of_object("rsm_fa", "RRA_bi_ohne_SPS_Ansteuerung")
|
||||
|
||||
self._anzahl["drucktaster_automatische_umfahrung"] = mg.zusammenfassung().get("Drucktaster_automatische_Umfahrung", 0)
|
||||
|
||||
self._anzahl["schaltschrank"] = eas.stueckzahl.get("Bedienelemente_Steuerschrank")
|
||||
self._anzahl["frequenzumrichter"] = eas.anzahl("frequenzumrichter", 0)
|
||||
|
||||
# # summe_motorstarter
|
||||
@@ -1730,11 +1746,9 @@ class HW():
|
||||
self._anzahl["halter_bedientableau_4fach"] = self.anzahl("bedienstation_4fach_kpl")
|
||||
self._anzahl["bedienstation_6fach_kpl"] = eas.anzahl("bedienstation_6fach_kpl", 0)
|
||||
self._anzahl["halter_bedientableau_6fach"] = self.anzahl("bedienstation_6fach_kpl")
|
||||
self._anzahl["drucktaster_automatische_umfahrung"] = mg.zusammenfassung().get("Drucktaster_automatische_Umfahrung", 0)
|
||||
self._anzahl["halter_fuer_drucktaster"] = self.anzahl("drucktaster_automatische_umfahrung")
|
||||
# # summe_bedienstationen
|
||||
|
||||
self._anzahl["ET200_SP"] = anzahl.get("ET200_SP", 0)
|
||||
self._anzahl["et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = self.anzahl("ET200_SP") * (self.anzahl("et200_sp_ea_ebene") * 2 * self.anzahl("schaltschrank") +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") +\
|
||||
@@ -1746,8 +1760,6 @@ class HW():
|
||||
self.anzahl("unterverteiler_fuer_10_rsm_fa") +\
|
||||
self.anzahl("unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar") +\
|
||||
self.anzahl("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"))
|
||||
self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45"] = anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45", 0)
|
||||
self._anzahl["korrektur_et200_sp_eingangskarte_8_de"] = anzahl.get("korrektur_et200_sp_eingangskarte_8_de", 0)
|
||||
self._anzahl["et200_sp_eingangskarte_8_de"] = self.anzahl("ET200_SP") * (self.anzahl("et200_sp_ea_ebene") * self.anzahl("schaltschrank") * 3 +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") * 4 +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") * 3 +\
|
||||
@@ -1761,9 +1773,6 @@ class HW():
|
||||
self.anzahl("korrektur_et200_sp_eingangskarte_8_de") +\
|
||||
mg.zusammenfassung().get("Kreuzungsweiche"))
|
||||
|
||||
self._anzahl["et200_sp_eingangskarte_16_de"] = anzahl.get("et200_sp_eingangskarte_16_de", 0)
|
||||
|
||||
self._anzahl["korrektur_et200_sp_eingangskarte_8_do"] = anzahl.get("korrektur_et200_sp_eingangskarte_8_do", 0)
|
||||
self._anzahl["et200_sp_eingangskarte_8_do"] = \
|
||||
self.anzahl("ET200_SP") *\
|
||||
(math.ceil((self.anzahl("et200_sp_ea_ebene") *\
|
||||
@@ -1804,26 +1813,25 @@ class HW():
|
||||
|
||||
self._anzahl["et200_sp_base_unit_neue_last_mit_potKlemmen"] = self.anzahl("ET200_SP") * (self.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2 +
|
||||
self.anzahl("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"))
|
||||
et200_sp_base_unit_neue_last_mit_potKlemmen = self.anzahl("ET200_SP") * (self.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2 + self.anzahl("korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen"))
|
||||
self._anzahl["et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen"] = self.anzahl("ET200_SP", 0) * (math.ceil((self.anzahl("et200_sp_eingangskarte_8_de") +
|
||||
self.anzahl("et200_sp_eingangskarte_8_do"))) -
|
||||
self.anzahl("et200_sp_base_unit_neue_last_mit_potKlemmen"))
|
||||
|
||||
self._anzahl["et200_sp_base_unit_neue_last"] = self.anzahl("ET200_SP") * (self.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2 +
|
||||
self.anzahl("korrektur_et200_sp_base_unit_neue_last"))
|
||||
et200_sp_base_unit_neue_last = self.anzahl("ET200_SP") * (self.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45") * 2 + self.anzahl("korrektur_et200_sp_base_unit_neue_last"))
|
||||
|
||||
if self.anzahl("et200_sp_base_unit_neue_last") > 0 and self.anzahl("et200_sp_base_unit_neue_last_mit_potKlemmen") > 0:
|
||||
raise Exception("et200_sp_base_unit_neue_last und et200_sp_base_unit_neue_last_mit_potKlemmen sollten nicht beide verwendet werden")
|
||||
# TODO Markus fragen
|
||||
# if self.anzahl("et200_sp_base_unit_neue_last") > 0 and self.anzahl("et200_sp_base_unit_neue_last_mit_potKlemmen") > 0:
|
||||
# raise Exception("et200_sp_base_unit_neue_last und et200_sp_base_unit_neue_last_mit_potKlemmen sollten nicht beide verwendet werden")
|
||||
|
||||
self._anzahl["korrektur_et200_sp_base_unit_links_gebrueckt"] = anzahl.get("korrektur_et200_sp_base_unit_links_gebrueckt", 0)
|
||||
self._anzahl["et200_sp_base_unit_links_gebrueckt"] = self.anzahl("ET200_SP") * (math.ceil((self.anzahl("et200_sp_eingangskarte_16_de") +
|
||||
self.anzahl("et200_sp_eingangskarte_16_do"))) -
|
||||
self.anzahl("et200_sp_base_unit_neue_last") +
|
||||
self.anzahl("korrektur_et200_sp_base_unit_links_gebrueckt"))
|
||||
|
||||
|
||||
self._anzahl["SLIO"] = anzahl.get("SLIO", 0)
|
||||
|
||||
self._anzahl["korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"] = anzahl.get("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO", 0)
|
||||
self._anzahl["et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"] = self.anzahl("SLIO") * (self.anzahl("et200_sp_ea_ebene") +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") +\
|
||||
@@ -1841,7 +1849,6 @@ class HW():
|
||||
self.anzahl("busverteiler_8_rsm_direct") +\
|
||||
self.anzahl("korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO"))
|
||||
|
||||
self._anzahl["korrektur_slio_eingangskarte_4_de"] = anzahl.get("korrektur_slio_eingangskarte_4_de", 0)
|
||||
self._anzahl["slio_eingangskarte_4_de"] = self.anzahl("SLIO") * (self.anzahl("et200_sp_ea_ebene") * self.anzahl("schaltschrank") * 6 +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") * 8 +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") * 6 +\
|
||||
@@ -1857,7 +1864,6 @@ class HW():
|
||||
self.anzahl("busverteiler_8_rsm_direct") * 16 +\
|
||||
self.anzahl("korrektur_slio_eingangskarte_4_de"))
|
||||
|
||||
self._anzahl["korrektur_slio_eingangskarte_8_de"] = anzahl.get("korrektur_slio_eingangskarte_8_de", 0)
|
||||
self._anzahl["slio_eingangskarte_8_de"] = self.anzahl("SLIO") * (self.anzahl("et200_sp_ea_ebene") * self.anzahl("schaltschrank") * 3 +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") * 4 +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") * 3 +\
|
||||
@@ -1872,7 +1878,6 @@ class HW():
|
||||
self.anzahl("unterverteiler_fuer_8_rsm_direct") * 4 +\
|
||||
self.anzahl("busverteiler_8_rsm_direct") * 8 +\
|
||||
self.anzahl("korrektur_slio_eingangskarte_8_de", 0))
|
||||
self._anzahl["korrektur_slio_ausgangskarte_4_do"] = anzahl.get("korrektur_slio_ausgangskarte_4_do", 0)
|
||||
self._anzahl["slio_ausgangskarte_4_do"] = self.anzahl("SLIO") * (self.anzahl("et200_sp_ea_ebene") * self.anzahl("schaltschrank") * 4 +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") * 12 +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") * 7 +\
|
||||
@@ -1887,7 +1892,6 @@ class HW():
|
||||
self.anzahl("unterverteiler_fuer_8_rsm_direct") * 44 +\
|
||||
self.anzahl("busverteiler_8_rsm_direct") * 16 +\
|
||||
self.anzahl("korrektur_slio_ausgangskarte_4_do"))
|
||||
self._anzahl["korrektur_slio_ausgangskarte_8_do"] = anzahl.get("korrektur_slio_ausgangskarte_8_do", 0)
|
||||
self._anzahl["slio_ausgangskarte_8_do"] = self.anzahl("SLIO") * ((self.anzahl("et200_sp_ea_ebene") * self.anzahl("schaltschrank") * 4 +\
|
||||
self.anzahl("unterverteiler_fuer_1neuenhauser_pm") * 12 +\
|
||||
self.anzahl("unterverteiler_fuer_1flyer") * 8 +\
|
||||
@@ -1902,15 +1906,11 @@ class HW():
|
||||
self.anzahl("unterverteiler_fuer_8_rsm_direct") * 44 +\
|
||||
self.anzahl("busverteiler_8_rsm_direct") * 16) / 2 +\
|
||||
self.anzahl("korrektur_slio_ausgangskarte_8_do"))
|
||||
self._anzahl["korrektur_slio_power_modul"] = anzahl.get("korrektur_slio_power_modul", 0)
|
||||
self._anzahl["slio_power_modul"] = self.anzahl("SLIO") * (self.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO") * 1 +\
|
||||
self.anzahl("korrektur_slio_power_modul"))
|
||||
self._anzahl["korrektur_slio_4_x_dc_24v_4_x_dc_0v"] = anzahl.get("korrektur_slio_4_x_dc_24v_4_x_dc_0v", 0)
|
||||
self._anzahl["slio_4_x_dc_24v_4_x_dc_0v"] = self.anzahl("SLIO") * (math.ceil((self.anzahl("slio_eingangskarte_4_de") +
|
||||
self.anzahl("korrektur_slio_4_x_dc_24v_4_x_dc_0v"))))
|
||||
|
||||
self._anzahl["slio_8_x_dc_24v"] = anzahl.get("slio_8_x_dc_0v", 0)
|
||||
self._anzahl["korrektur_slio_8_x_dc_0v"] = anzahl.get("korrektur_slio_8_x_dc_0v", 0)
|
||||
self._anzahl["slio_power_modul"] = self.anzahl("SLIO") * (self.anzahl("et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO") * 1 +\
|
||||
self.anzahl("korrektur_slio_power_modul"))
|
||||
self._anzahl["slio_8_x_dc_0v"] = self.anzahl("SLIO") * ((self.anzahl("slio_eingangskarte_8_de") +
|
||||
(self.anzahl("slio_ausgangskarte_4_do") / 2)) * 1 +
|
||||
self.anzahl("korrektur_slio_8_x_dc_0v"))
|
||||
@@ -1998,11 +1998,12 @@ class HW():
|
||||
# self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0)
|
||||
self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = 0
|
||||
self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = 0
|
||||
|
||||
|
||||
|
||||
self._anzahl["zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] = self.anzahl("zuleitung_75_m_unterverteiler_4x4mm2_400vac") +\
|
||||
self.anzahl("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc")
|
||||
anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc", 0)
|
||||
self._anzahl["zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = self.anzahl("zuleitung_75_m_unterverteiler_4x4mm2_400vac") +\
|
||||
self.anzahl("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc")
|
||||
anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0)
|
||||
|
||||
if self._anzahl["zuleitung_75_m_unterverteiler_12x4mm2_24_vdc"] > 0 and self._anzahl["zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] > 0:
|
||||
raise Exception("zuleitung 12x4 und 12x2.5 sollten nicht beide verwendet werden")
|
||||
@@ -2036,15 +2037,26 @@ class HW():
|
||||
l.append(k)
|
||||
for item in l:
|
||||
del self._anzahl[item]
|
||||
with open('HW_Daten.txt', 'w') as convert_file:
|
||||
convert_file.write(json.dumps(self._anzahl))
|
||||
|
||||
# with open('HW_Daten.txt', 'w') as convert_file:
|
||||
# convert_file.write(json.dumps(self._anzahl))
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self._anzahl)
|
||||
|
||||
def set_config_data(self, section, newDict):
|
||||
if section == "HW_Einzelpreise":
|
||||
self.ep.update(newDict)
|
||||
if section == "HW_Zeiten Hardwareplanung":
|
||||
self.zpe_dienstl_hardwareplanung.update(newDict)
|
||||
if section == "HW_Zeiten Elektro-Werkstatt":
|
||||
self.zpe_e_werkstatt.update(newDict)
|
||||
|
||||
def anzahl(self, partname, default_val = 0):
|
||||
return self._anzahl.get(partname, default_val)
|
||||
|
||||
def get_anzahl(self):
|
||||
return self._anzahl
|
||||
|
||||
def summe_gesamt(self):
|
||||
"""
|
||||
:return: price sum of all given items within self._anzahl
|
||||
@@ -2165,7 +2177,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_256_mb",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
@@ -2199,7 +2210,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_256_mb",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
@@ -2223,6 +2233,14 @@ class HW():
|
||||
summe_h_schaltschrank_hardware = self.summe_h_schaltschrank_hardware()
|
||||
summe_h_unterverteiler_hardware = self.summe_h_unterverteiler_hardware()
|
||||
return (summe_h_schaltschrank_hardware + summe_h_unterverteiler_hardware)
|
||||
def to_dict(self):
|
||||
dhardware = self.get_anzahl()
|
||||
dhardware["Summe_vorOrt"] = self.summe_vorort()
|
||||
dhardware["Summe_Landsberg"] = self.summe_in_LL()
|
||||
dhardware["Zeiten_Hardwareplanung"] = self.summe_h_zeiten_hardwareplanung()
|
||||
dhardware["Zeiten_Unterverteiler_Werkstatt"] = self.summe_h_unterverteiler_e_werkstatt()
|
||||
dhardware["Summe_gesamt"] = self.summe_gesamt()
|
||||
return dhardware
|
||||
|
||||
class Dienstleistung():
|
||||
# Angaben in h
|
||||
@@ -2304,7 +2322,8 @@ class Dienstleistung():
|
||||
return self._Hours.get(partname, default_val)
|
||||
def get_hours_of(self, dlname):
|
||||
return self._Hours.get(dlname, 0)
|
||||
|
||||
def get_hours(self):
|
||||
return self._Hours
|
||||
def summe_stunden_dienstleistung_in_landsberg(self):
|
||||
"""returns hours necessary"""
|
||||
hours_necessary = self.stunden_diensleistung_hardwareplanung() +\
|
||||
@@ -2345,6 +2364,12 @@ class Dienstleistung():
|
||||
|
||||
def stunden_elektro_Landsberg(self):
|
||||
return 0
|
||||
def to_dict(self):
|
||||
dDienstleistung = self.get_hours()
|
||||
dDienstleistung["Summe_Dienstleistungen_Hardwareplanung"] = self.stunden_diensleistung_hardwareplanung()
|
||||
dDienstleistung["Summe_Dienstleistungen_Elektrowerkstatt"] = self.stunden_elektrowerkstatt()
|
||||
dDienstleistung["Summe_Dienstleistungen_in_LL"] = self.summe_stunden_dienstleistung_in_landsberg()
|
||||
return dDienstleistung
|
||||
|
||||
#EMO
|
||||
class EMO():
|
||||
@@ -2363,9 +2388,14 @@ class EMO():
|
||||
"Erdung": 0.5, #(h)
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
montagezeiten.update(RieterConfig.getDictAsFloat("Elektro-Montagezeiten"))
|
||||
def __init__(self, ea: type[EA], hw: type[HW], mg: type[MG]):
|
||||
# if RieterConfig.exists():
|
||||
# montagezeiten.update(RieterConfig.getDictAsFloat("Elektro-Montagezeiten"))
|
||||
def __init__(self, emoz=None):
|
||||
if emoz:
|
||||
self.set_config_data("Elektro-Montagezeiten", emoz)
|
||||
self._Mengen = {}
|
||||
|
||||
def calc(self, ea: type[EA], hw: type[HW], mg: type[MG]):
|
||||
#für jede Zeile (Eintrag im dict 'mengen') muss ein Wert übergeben werden, der aus den Klassen HW(), MG() oder EA() stammt
|
||||
self._mehraufwand = 0.1
|
||||
mengen = {
|
||||
@@ -2412,22 +2442,25 @@ class EMO():
|
||||
self._Mengen["Blitzleuchte_installieren"] = ea.anzahl("Blitzleuchte_Stoerung")
|
||||
self._Mengen["Weiche_Stopper_anschliessen"] = hw.anzahl("stopper_weichenkabel_je_5m")
|
||||
self._Mengen["Erdung"] = self._Mengen.get("Unterverteiler_montieren") * 10
|
||||
def set_config_data(self, section, newDict):
|
||||
if section == "Elektro-Montagezeiten":
|
||||
self.montagezeiten.update(newDict)
|
||||
def set_mehraufwand(self, PS):
|
||||
if PS > 1 or PS < 0:
|
||||
raise Exception("Falsche Spanne")
|
||||
self._mehraufwand = PS
|
||||
def dauer_emo_h(self):
|
||||
keys_tätigkeiten_1 = [
|
||||
"Unterverteiler_montieren",
|
||||
"Sensoren_montieren",
|
||||
"Seilzugschalter_installieren",
|
||||
"Blitzleuchte_installieren",
|
||||
"Weiche_Stopper_anschliessen",
|
||||
"Erdung",
|
||||
"Schaltschrank_aufstellen",
|
||||
"Motor_verdrahten_und_anschliessen",
|
||||
"Tableau_befestigen_und_anschliessen",
|
||||
"Schnittstelle_Flyer_Putzmaschine"
|
||||
"Unterverteiler_montieren",
|
||||
"Sensoren_montieren",
|
||||
"Seilzugschalter_installieren",
|
||||
"Blitzleuchte_installieren",
|
||||
"Weiche_Stopper_anschliessen",
|
||||
"Erdung",
|
||||
"Schaltschrank_aufstellen",
|
||||
"Motor_verdrahten_und_anschliessen",
|
||||
"Tableau_befestigen_und_anschliessen",
|
||||
"Schnittstelle_Flyer_Putzmaschine"
|
||||
]
|
||||
keys_1 = 0
|
||||
for k in keys_tätigkeiten_1:
|
||||
@@ -2442,11 +2475,38 @@ class EMO():
|
||||
for k in keys_tätigkeiten_2:
|
||||
dauer = self._Mengen.get(k) / self.montagezeiten.get(k)
|
||||
keys_2 += dauer
|
||||
|
||||
|
||||
return math.ceil((keys_1 + keys_2))
|
||||
def dauer_emo_h_incl_mehrauwand(self):
|
||||
return math.ceil((keys_1 + keys_2))
|
||||
def dauer_emo_h_incl_mehraufwand(self):
|
||||
return (self.dauer_emo_h() * (1 + self._mehraufwand))
|
||||
def get_dict_of_hours(self):
|
||||
res = dict()
|
||||
keys_tätigkeiten_1 = [
|
||||
"Unterverteiler_montieren",
|
||||
"Sensoren_montieren",
|
||||
"Seilzugschalter_installieren",
|
||||
"Blitzleuchte_installieren",
|
||||
"Weiche_Stopper_anschliessen",
|
||||
"Erdung",
|
||||
"Schaltschrank_aufstellen",
|
||||
"Motor_verdrahten_und_anschliessen",
|
||||
"Tableau_befestigen_und_anschliessen",
|
||||
"Schnittstelle_Flyer_Putzmaschine"
|
||||
]
|
||||
for k in keys_tätigkeiten_1:
|
||||
res[k] = self.montagezeiten.get(k) * self._Mengen.get(k)
|
||||
|
||||
keys_tätigkeiten_2 = [
|
||||
"Pritsche_montieren_umbauen_demontieren",
|
||||
"Pritsche_in_RSM_montieren"
|
||||
]
|
||||
for k in keys_tätigkeiten_2:
|
||||
res[k] = self._Mengen.get(k) / self.montagezeiten.get(k)
|
||||
return res
|
||||
def to_dict(self):
|
||||
hoursEMO = self.get_dict_of_hours()
|
||||
hoursEMO['Summe'] = self.dauer_emo_h()
|
||||
hoursEMO['Summe inkl. Mehraufwand'] = self.dauer_emo_h_incl_mehraufwand()
|
||||
return hoursEMO
|
||||
|
||||
class Anschlussl():
|
||||
"""
|
||||
@@ -2463,8 +2523,8 @@ class Anschlussl():
|
||||
1.1:0.81
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
antrieb_cos_phi.update(RieterConfig.getDictAsFloat("cos phi"))
|
||||
# if RieterConfig.exists():
|
||||
# antrieb_cos_phi.update(RieterConfig.getDictAsFloat("cos phi"))
|
||||
antrieb_strom = {
|
||||
0.09:0.4,
|
||||
0.12:0.55,
|
||||
@@ -2475,8 +2535,8 @@ class Anschlussl():
|
||||
1.1:2.55
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
antrieb_strom.update(RieterConfig.getDictAsFloat("Antriebsstrom"))
|
||||
# if RieterConfig.exists():
|
||||
# antrieb_strom.update(RieterConfig.getDictAsFloat("Antriebsstrom"))
|
||||
mengen = {
|
||||
#auskommentiert, was später berechnet wird
|
||||
#"Anschlussspannung":400, #Volt
|
||||
@@ -2497,7 +2557,12 @@ class Anschlussl():
|
||||
#leistung
|
||||
#gesamtanschlussleistung
|
||||
}
|
||||
def __init__(self, anzahl:dict, mg: type[MG]):
|
||||
def __init__(self, aStr=None, cosPhi=None):
|
||||
if aStr:
|
||||
self.set_config_data("Antriebsstrom", aStr)
|
||||
if cosPhi:
|
||||
self.set_config_data("cos phi", cosPhi)
|
||||
def calc(self, anzahl:dict, mg: type[MG]):
|
||||
self._ANZAHL = self.mengen
|
||||
anzahl = self.mengen ###vorerst
|
||||
self._GZE_Faktor = 0.5
|
||||
@@ -2529,6 +2594,11 @@ class Anschlussl():
|
||||
anzahl.get("Gesamtstrom", 0) *\
|
||||
self._x_Wurzel_3 / 1000
|
||||
self._ANZAHL["Gesamtanschlussleistung"] = math.ceil((self._ANZAHL.get("Leistung")))
|
||||
def set_config_data(self, section, newDict):
|
||||
if section == "Antriebsstrom":
|
||||
self.antrieb_strom.update(newDict)
|
||||
if section == "cos phi":
|
||||
self.antrieb_cos_phi.update(newDict)
|
||||
def set_Versorgung_SPS_und_Peripherie(self, Strom):
|
||||
self._Versorgung_SPS_und_Peripherie = Strom
|
||||
def set_x_Wurzel_3 (self, x):
|
||||
@@ -2568,8 +2638,8 @@ class Ergebnis():
|
||||
"Anlagenbetreuung_durch_Montage": 36
|
||||
}
|
||||
|
||||
if RieterConfig.exists():
|
||||
preis_kostenart_h.update(RieterConfig.getDictAsFloat("Kosten pro h"))
|
||||
# if RieterConfig.exists():
|
||||
# preis_kostenart_h.update(RieterConfig.getDictAsFloat("Kosten pro h"))
|
||||
eingaben_h = {
|
||||
"Pflichtenheft":0,
|
||||
"SPS_Programmierung":150,
|
||||
@@ -2581,12 +2651,16 @@ class Ergebnis():
|
||||
"PC_Anlagenbetreuung":0,
|
||||
"Anlagenbetreuung_durch_Montage":0
|
||||
}
|
||||
def __init__(self, anzahl_h:dict, hw: type[HW], dl: type[Dienstleistung], emo: type[EMO]):
|
||||
def __init__(self, kph=None):
|
||||
if kph:
|
||||
self.set_config_data("Kosten pro h", kph)
|
||||
def calc(self, anzahl_h:dict, hw: type[HW], dl: type[Dienstleistung], emo: type[EMO]):
|
||||
self._Anteil_Inbetriebnahmeunterstützung_durch_Montage = 1
|
||||
self._Anteil_PC_Visualisierung_an_SPS = 0.3
|
||||
self._Abweichung_softwareerstellung = 0
|
||||
self._Abweichung_dienstleistung_in_LL = 0
|
||||
self._anzahl = anzahl_h
|
||||
# TODO die folgende Zeile raus?
|
||||
self._anzahl = dict()
|
||||
self._anzahl["E_Werkstatt"] = dl.stunden_elektrowerkstatt()
|
||||
self._anzahl["Schaltschrankbau_extern_Mehrkosten"] = hw.get_h_of("unterverteiler_fuer_1neuenhauser_pm") +\
|
||||
hw.get_h_of("unterverteiler_fuer_1flyer") +\
|
||||
@@ -2600,7 +2674,7 @@ class Ergebnis():
|
||||
self._anzahl["Pflichtenheft"] = anzahl_h.get("Pflichtenheft", 0)
|
||||
self._anzahl["SPS_Programmierung"] = anzahl_h.get("SPS_Programmierung", 0) * (1 + self._Abweichung_softwareerstellung)
|
||||
self._anzahl["PC_Programmierung_Visualisierung"] = anzahl_h.get("SPS_Programmierung", 0) * self._Anteil_PC_Visualisierung_an_SPS
|
||||
self._anzahl["Montage_elektrisch"] = emo.dauer_emo_h_incl_mehrauwand()
|
||||
self._anzahl["Montage_elektrisch"] = emo.dauer_emo_h_incl_mehraufwand()
|
||||
self._anzahl["Inbetriebnahmetest_Hardware_durch_Montage"] = anzahl_h.get("Montage_elektrisch", 0) * 0.1
|
||||
self._anzahl["SPS_Inbetriebsetzung"] = anzahl_h.get("SPS_Inbetriebsetzung", 0)
|
||||
self._anzahl["PC_Inbetriebsetzung"] = anzahl_h.get("PC_Inbetriebsetzung", 0)
|
||||
@@ -2612,6 +2686,9 @@ class Ergebnis():
|
||||
self._anzahl["SPS_Anlagenbetreuung"] = anzahl_h.get("SPS_Anlagenbetreuung", 0)
|
||||
self._anzahl["PC_Anlagenbetreuung"] = anzahl_h.get("PC_Anlagenbetreuung", 0)
|
||||
self._anzahl["Anlagenbetreuung_durch_Montage"] = anzahl_h.get("Anlagenbetreuung_durch_Montage", 0)
|
||||
def set_config_data(self, section, newDict):
|
||||
if section == "Kosten pro h":
|
||||
self.preis_kostenart_h.update(newDict)
|
||||
def set_Abweichung_dienstleistung_in_LL(self, PS):
|
||||
if PS > 1 :
|
||||
raise Exception("Falsche Spanne")
|
||||
@@ -832,7 +832,6 @@ class TestObjectMethods(unittest.TestCase):
|
||||
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)
|
||||
@@ -1192,7 +1191,7 @@ class TestObjectMethods(unittest.TestCase):
|
||||
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)
|
||||
self.assertAlmostEqual(emo.dauer_emo_h_incl_mehraufwand(), 265.1)
|
||||
|
||||
def test_dienstleistung(self):
|
||||
Anzahl_MG = {
|
||||
@@ -1147,7 +1147,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 1,
|
||||
"sps_simatic_s7_1518_4": 0,
|
||||
"sps_et200_1512sp": 0,
|
||||
#"memory_card_256_mb": 0
|
||||
#"memory_card_2_gb": 0
|
||||
"et200_sp_ea_ebene":2,
|
||||
"netzwerk_fernwartung":1,
|
||||
@@ -1299,7 +1298,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 3828, # 790008101
|
||||
"sps_simatic_s7_1518_4": 5402, # 6ES7518-4AP00-0AB0
|
||||
"sps_et200_1512sp": 623, # 709000003
|
||||
"memory_card_256_mb": 250, # 708015093
|
||||
"memory_card_2_gb": 474, # 708015094
|
||||
"et200_sp_ea_ebene": 0, # 790009001
|
||||
"netzwerk_fernwartung": 750, # 790011001
|
||||
@@ -1436,7 +1434,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 0,
|
||||
"sps_simatic_s7_1518_4": 0,
|
||||
"sps_et200_1512sp": 0,
|
||||
"memory_card_256_mb": 0,
|
||||
"memory_card_2_gb": 0,
|
||||
"et200_sp_ea_ebene":60,
|
||||
"netzwerk_fernwartung":0,
|
||||
@@ -1476,7 +1473,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3": 0,
|
||||
"sps_simatic_s7_1518_4": 0,
|
||||
"sps_et200_1512sp": 0,
|
||||
"memory_card_256_mb": 0,
|
||||
"memory_card_2_gb": 0,
|
||||
"et200_sp_ea_ebene":120,
|
||||
"netzwerk_fernwartung":0,
|
||||
@@ -1567,7 +1563,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_256_mb",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
@@ -1594,11 +1589,6 @@ class HW():
|
||||
self._anzahl["sps_simatic_s7_1518_4"] = self.mengen.get("sps_simatic_s7_1518_4", 0)
|
||||
self._anzahl["sps_et200_1512sp"] = self.mengen.get("sps_et200_1512sp", 0)
|
||||
|
||||
self._anzahl["memory_card_256_mb"] = anzahl.get("speicherkarte_fuer_sps2_mb") + \
|
||||
anzahl.get("sps_simatic_s7_1515_2") + \
|
||||
anzahl.get("sps_simatic_s7_1517_3") + \
|
||||
anzahl.get("sps_simatic_s7_1518_4")
|
||||
|
||||
self._anzahl["memory_card_2_gb"] = anzahl.get("sps_simatic_s7_1518_4", 0)
|
||||
|
||||
self._anzahl["et200_sp_ea_ebene"] = self.mengen.get("et200_sp_ea_ebene", 0)
|
||||
@@ -2080,7 +2070,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_256_mb",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
@@ -2114,7 +2103,6 @@ class HW():
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_256_mb",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
@@ -2976,7 +2964,6 @@ class TestObjectMethods(unittest.TestCase):
|
||||
self.assertEqual(hw.anzahl("sps_simatic_s7_1517_3"), 1)
|
||||
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"), 2)
|
||||
self.assertEqual(hw.anzahl("netzwerk_fernwartung"), 1)
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
# Mengengerüst
|
||||
[allgemein]
|
||||
SYSTEM=fa
|
||||
RSM=25
|
||||
Flyer=7
|
||||
Flyer_Puffer=0
|
||||
Flyer_Electrojet_incl_intergrierte_Putzmaschine=0
|
||||
Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer=0
|
||||
Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer=0
|
||||
Neuenhauser-Putzmaschine=2
|
||||
Neuenhauser-Putzmaschine_Vorpuffer=4
|
||||
Neuenhauser-Putzmaschine_Nachpuffer=2
|
||||
Cason-Putzmaschine=0
|
||||
Cason-Putzmaschine_Vorpuffer=0
|
||||
Cason-Putzmaschine_Nachpuffer=0
|
||||
Puffer=0
|
||||
Anzahl_der_Pufferstrecken_pro_Puffer=1
|
||||
Begegnungsstrecke_Bypass=2
|
||||
Turm=0
|
||||
Turm_Anzahl_Wendlungen=0
|
||||
|
||||
[rsm_direct]
|
||||
#Bedientableau_2fach_Direct=
|
||||
#Bedientableau_2fach_Direct=
|
||||
#Lichtschranke_Traverse=
|
||||
|
||||
[rsm_fa]
|
||||
Flex_A_Premium=False
|
||||
Getriebe_in_der_Mitte=False
|
||||
RSM_Einfahrt_Ein_Beidseitig=False
|
||||
Sensor_optisch_Traverse_zusätzlich=3
|
||||
Bedientableau_1fach_Korrektur=0
|
||||
Bedientableau_2fach_Korrektur=-2
|
||||
Weiche_Korrektur=1
|
||||
RRA_bi_Korrektur=0
|
||||
RRA_bi_auf_Haupstrecke=3
|
||||
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=0
|
||||
|
||||
[flyer_f40]
|
||||
Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur=0
|
||||
Single_Line_Durchfahrt=False
|
||||
Nachpuffer=False
|
||||
Sensor_optisch_Traverse_Korrektur=0
|
||||
Sensor_induktiv_Spulenhalter_Korrektur=0
|
||||
Bedientableau_2fach_Korrektur=0
|
||||
Interface_Doffer_Korrektur=0
|
||||
Weiche_Korrektur=0
|
||||
Weiche_nach_Flyer_bipolar_Korrektur=0
|
||||
Dreifachweiche=0
|
||||
Wechsel=0
|
||||
Stopper=0
|
||||
RA_uni=0
|
||||
RA_uni_abhebbar_Korrektur=0
|
||||
RA_uni_ohne_SPS_Ansteuerung_Korrektur=0
|
||||
RRA_BI_abhebbar_Korrektur=0
|
||||
RRA_bi=0
|
||||
RRA_bi_ohne_SPS_Ansteuerung_Korrektur=0
|
||||
Doppelstreckenantrieb_Korrektur=0
|
||||
RA_bi_abhebbar_unger_Schiene=0
|
||||
Meldelampe_Überstrom_Korrektur=0
|
||||
Hauptschalter_Ein-Meldung_Korrektur=0
|
||||
Werma_Rundumleuchte_Störung_Korrektur=0
|
||||
|
||||
[neuenhauser]
|
||||
Sensor_optisch_Traverse_Korrektur=2
|
||||
Bedientableau_2fach_Korrektur=0
|
||||
Weiche_Korrektur=0
|
||||
RA_uni_abhebbar_Korrektur=0
|
||||
Meldelampe_Überstrom_Korrektur=0
|
||||
Hauptschalter_Ein-Meldung_Korrektur=-1
|
||||
Werma_Rundumleuchte_Störung_Korrektur=-1
|
||||
|
||||
[flyer]
|
||||
Sensor_optisch_Traverse_Korrektur=0
|
||||
Weiche_Korrektur=0
|
||||
Dreifachweiche=0
|
||||
Wechsel_Korrektur=0
|
||||
RA_bi_abhebbar_Korrektur=0
|
||||
RA_bi=4
|
||||
RA_bi_abhebbar_unger_Schiene=0
|
||||
Meldelampe_Überstrom_Korrektur=0
|
||||
Hauptschalter_Ein-Meldung_Korrektur=0
|
||||
Werma_Rundumleuchte_Störung_Korrektur=0
|
||||
|
||||
[verbindungsstrecken_w]
|
||||
Bedientableau_1fach=0
|
||||
Bedientableau_2fach=0
|
||||
Bedientableau_14fach=0
|
||||
Weiche=0
|
||||
Dreifachweiche=0
|
||||
Kreuzungsweiche=0
|
||||
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]
|
||||
Sensor_optisch_Traverse_Korrektur= 0
|
||||
Weiche_Korrektur= 0
|
||||
RA_bi_ungerade_Schiene= 0
|
||||
Meldelampe_Überstrom_Korrektur= 0
|
||||
Hauptschalter_Ein-Meldung_Korrektur= 0
|
||||
|
||||
[turm]
|
||||
RA_bi_Korrektur=0
|
||||
RA_bi_ohne_SPS_Korrektur=0
|
||||
|
||||
# Ein und Ausgaenge
|
||||
[EAS]
|
||||
schaltschrank=1
|
||||
#bedienst_dreifach=0
|
||||
#bedienst_vierfach=0
|
||||
#bedienst_sechsfach=0
|
||||
#gemeinsame_Weichenrueckstellung=0
|
||||
#RA_unidirektional_mit_gemeinsamer_Wendung= 0
|
||||
#RA_bidirektional_abhebbar_gemeinsWend= 0
|
||||
#RA_in_RSM_bidirektional= 0
|
||||
#Doppelstreckenantriebgemeinsame_Wendung= 0
|
||||
#gemeinsame_Wendung= 0
|
||||
#Frequenzumrichter= 0
|
||||
#Spulenumsetzstation=0
|
||||
|
||||
# Hardware
|
||||
[HW]
|
||||
schaltschrankgehaeuse_b1x1200+1x800_zubehoer=1
|
||||
sps_simatic_s7_1515_2=0
|
||||
sps_simatic_s7_1517_3=1
|
||||
sps_et200_1512sp=1
|
||||
et200_sp_ea_ebene=1
|
||||
netzwerk_fernwartung=1
|
||||
anlagenrechner=1
|
||||
unterverteiler_fuer_1flyer=1
|
||||
unterverteiler_fuer_2flyer=3
|
||||
unterverteiler_fuer_puffer=0
|
||||
korrektur_5_rsm_zusaetzlich_im_unterverteiler=0
|
||||
korrektur_10_rsm_zusaetzlich_im_unterverteiler=0
|
||||
ET200_SP=0
|
||||
#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=560
|
||||
kleinteile_rohre_schellen_kabelbinder_ect=1
|
||||
zuleitung_75_m_unterverteiler_12x4mm2_24_vdc_or_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc='zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc'
|
||||
#korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc=-5
|
||||
|
||||
# Dienstleistungen
|
||||
[DL]
|
||||
# Angaben in [h]
|
||||
Bedienerhandbuch= 4
|
||||
SPS_Doku=0
|
||||
#Oberfläche_Simulation=0
|
||||
#SPS_Test_im_Haus_Simulation=0
|
||||
#PC_Doku=0
|
||||
#Vormontage_im_Haus=0
|
||||
|
||||
[Ergebnis]
|
||||
#Pflichtenheft=0
|
||||
SPS_Programmierung=150
|
||||
SPS_Inbetriebsetzung=160
|
||||
#Montage_elektrisch=0
|
||||
#SPS_Inbetriebsetzung=0
|
||||
#PC_Inbetriebsetzung=0
|
||||
#Schulung_vor_Ort_beim_Kunden=0
|
||||
#Abnahme=0
|
||||
#SPS_Anlagenbetreuung=0
|
||||
#PC_Anlagenbetreuung=0
|
||||
#Anlagenbetreuung_durch_Montage=0
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
# Mengengerüst
|
||||
[allgemein]
|
||||
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]
|
||||
#Bedientableau_2fach_Direct=
|
||||
#Bedientableau_2fach_Direct=
|
||||
#Lichtschranke_Traverse=
|
||||
|
||||
[rsm_fa]
|
||||
Flex_A_Premium=False
|
||||
Getriebe_in_der_Mitte=False
|
||||
RSM_Einfahrt_Ein_Beidseitig=False
|
||||
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]
|
||||
Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur=0
|
||||
Single_Line_Durchfahrt=False
|
||||
Nachpuffer=False
|
||||
Sensor_optisch_Traverse_Korrektur=0
|
||||
Sensor_induktiv_Spulenhalter_Korrektur=0
|
||||
Bedientableau_2fach_Korrektur=0
|
||||
Interface_Doffer_Korrektur=0
|
||||
Weiche_Korrektur=0
|
||||
Weiche_nach_Flyer_bipolar_Korrektur=0
|
||||
Dreifachweiche=0
|
||||
Wechsel=0
|
||||
Stopper=0
|
||||
RA_uni=0
|
||||
RA_uni_abhebbar_Korrektur=0
|
||||
RA_uni_ohne_SPS_Ansteuerung_Korrektur=0
|
||||
RRA_BI_abhebbar_Korrektur=0
|
||||
RRA_bi=0
|
||||
RRA_bi_ohne_SPS_Ansteuerung_Korrektur=0
|
||||
Doppelstreckenantrieb_Korrektur=0
|
||||
RA_bi_abhebbar_unger_Schiene=0
|
||||
Meldelampe_Überstrom_Korrektur=0
|
||||
Hauptschalter_Ein-Meldung_Korrektur=0
|
||||
Werma_Rundumleuchte_Störung_Korrektur=0
|
||||
|
||||
[neuenhauser]
|
||||
Sensor_optisch_Traverse_Korrektur=0
|
||||
Bedientableau_2fach_Korrektur=0
|
||||
Weiche_Korrektur=0
|
||||
RA_uni_abhebbar_Korrektur=0
|
||||
Meldelampe_Überstrom_Korrektur=0
|
||||
Hauptschalter_Ein-Meldung_Korrektur=0
|
||||
Werma_Rundumleuchte_Störung_Korrektur=0
|
||||
|
||||
[flyer]
|
||||
Sensor_optisch_Traverse_Korrektur=0
|
||||
Weiche_Korrektur=0
|
||||
Dreifachweiche=0
|
||||
Wechsel_Korrektur=0
|
||||
RA_bi_abhebbar_Korrektur=0
|
||||
RA_bi=4
|
||||
RA_bi_abhebbar_unger_Schiene=0
|
||||
Meldelampe_Überstrom_Korrektur=0
|
||||
Hauptschalter_Ein-Meldung_Korrektur=0
|
||||
Werma_Rundumleuchte_Störung_Korrektur=0
|
||||
|
||||
[verbindungsstrecken_w]
|
||||
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]
|
||||
Sensor_optisch_Traverse_Korrektur= 1
|
||||
Weiche_Korrektur= 0
|
||||
RA_bi_ungerade_Schiene= 2
|
||||
Meldelampe_Überstrom_Korrektur= 0
|
||||
Hauptschalter_Ein-Meldung_Korrektur= 0
|
||||
|
||||
[turm]
|
||||
RA_bi_Korrektur=0
|
||||
RA_bi_ohne_SPS_Korrektur=0
|
||||
|
||||
# Ein und Ausgaenge
|
||||
[EAS]
|
||||
schaltschrank=1
|
||||
#bedienst_dreifach=0
|
||||
#bedienst_vierfach=0
|
||||
#bedienst_sechsfach=0
|
||||
#gemeinsame_Weichenrueckstellung=0
|
||||
#RA_unidirektional_mit_gemeinsamer_Wendung= 0
|
||||
#RA_bidirektional_abhebbar_gemeinsWend= 0
|
||||
#RA_in_RSM_bidirektional= 0
|
||||
#Doppelstreckenantriebgemeinsame_Wendung= 0
|
||||
#gemeinsame_Wendung= 0
|
||||
#Frequenzumrichter= 0
|
||||
#Spulenumsetzstation=0
|
||||
|
||||
# Hardware
|
||||
[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'
|
||||
korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc=-5
|
||||
|
||||
# Dienstleistungen
|
||||
[DL]
|
||||
# Angaben in [h]
|
||||
Bedienerhandbuch= 16
|
||||
SPS_Doku=15
|
||||
#Oberfläche_Simulation=0
|
||||
#SPS_Test_im_Haus_Simulation=0
|
||||
#PC_Doku=0
|
||||
#Vormontage_im_Haus=0
|
||||
|
||||
[Ergebnis]
|
||||
#Pflichtenheft=0
|
||||
SPS_Programmierung=150
|
||||
SPS_Inbetriebsetzung=130
|
||||
#Montage_elektrisch=0
|
||||
#SPS_Inbetriebsetzung=0
|
||||
#PC_Inbetriebsetzung=0
|
||||
#Schulung_vor_Ort_beim_Kunden=0
|
||||
#Abnahme=0
|
||||
#SPS_Anlagenbetreuung=0
|
||||
#PC_Anlagenbetreuung=0
|
||||
#Anlagenbetreuung_durch_Montage=0
|
||||
Reference in New Issue
Block a user