Compare commits
43 Commits
66128322eb
...
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 | |||
| c0023e4652 | |||
| 86ba921420 | |||
| a04f467b3f | |||
| 29c09edde5 | |||
| e51a8feb95 | |||
| ef0567c4ea | |||
| 355a17852a | |||
| ed23eda4ca | |||
| 65b6118655 |
@@ -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"
|
||||
}
|
||||
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
|
||||
@@ -0,0 +1,171 @@
|
||||
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 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.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, Laufende Materialkosten
|
||||
"""
|
||||
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):
|
||||
self._zuordnung = configparser.ConfigParser(inline_comment_prefixes="#")
|
||||
self._zuordnung.read_file(open(pathNew))
|
||||
else:
|
||||
self._given = False
|
||||
self._zuordnung = None
|
||||
|
||||
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
|
||||
|
||||
def getNewPricesAsDict(self, not_found_keys):
|
||||
"""
|
||||
Gibt die neuen Preise als Dict zurück.
|
||||
|
||||
: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("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
|
||||
|
||||
def getPriceFromAddedNumbers(self, key, split_sivas_ids, newDict, not_found_keys):
|
||||
"""
|
||||
Trägt die Zuordnung Bauteil:Gesamtpreis in das newDict Dictionary ein, wenn das Bauteil mehrere Sivas-Nummern beinhaltet.
|
||||
Ist die Nummer eines Summanden nicht in Sivas enthalten, wird er in das Dict "not_found_keys" eingetragen.
|
||||
|
||||
:param split_sivas_ids: Liste von Sivas IDs, die addiert werden z.B. [' 827072204', ' 721000041']
|
||||
:param key: Name z.B. "anlagenrechner_ohne_bildschirm"
|
||||
: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': '----'}
|
||||
"""
|
||||
price = 0
|
||||
for summand in split_sivas_ids:
|
||||
summand = summand.strip()
|
||||
# summand: einzelner Summand z.B. '827072204'
|
||||
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
|
||||
# price: Gesamtpreis
|
||||
newDict.update({key: price})
|
||||
else:
|
||||
not_found_keys.update({key:summand})
|
||||
|
||||
|
||||
def getPriceFromNumber(self, key, number, newDict, not_found_keys):
|
||||
"""
|
||||
Trägt die Zuordnung Bauteil:Gesamtpreis in das newDict Dictionary ein, wenn das Bauteil eine Sivas-Nummer beinhaltet.
|
||||
In Sivas nicht existierende Nummern werden in das Dict "not_found_keys" zurückgegeben.
|
||||
|
||||
:param key: Name z.B. "anlagenrechner_ohne_bildschirm"
|
||||
:param number: Sivas Nummer zum key z.B. '827072204'
|
||||
: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["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, section_name):
|
||||
res = dict()
|
||||
for key, val in self._default.items(section_name):
|
||||
res[key] = float(val)
|
||||
return res
|
||||
|
||||
def getZuordnungTeilenummernAsDict(self, section_name):
|
||||
res = dict()
|
||||
for key, val in self._zuordnung.items(section_name):
|
||||
res[key] = val
|
||||
return res
|
||||
|
||||
def writeNewConfig(self, name='Sivas_Abgleich.cfg'):
|
||||
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)
|
||||
|
||||
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')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+708
-2023
File diff suppressed because it is too large
Load Diff
+2199
File diff suppressed because it is too large
Load Diff
@@ -507,7 +507,7 @@ class RSM_FA():
|
||||
self._Mengen["Mit_Drucktaster"] = 0
|
||||
self._Mengen["Mit_Drucktaster_Korrektur"] = anzahl.get("Mit_Drucktaster_Korrektur",0)
|
||||
self._Mengen["Meldelampe_Überstrom"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/3) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
|
||||
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) ###f bei jayjay durch 10 statt 3... generelle änderung oder immer manuell?
|
||||
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
|
||||
self._Mengen["Hauptschalter_Ein_Meldung"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/3) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
|
||||
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
|
||||
self._Mengen["Werma_Rundumleuchte_Störung"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/10) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
|
||||
@@ -588,7 +588,7 @@ class Flyer_F40_EJet_inc_Putz():
|
||||
sensorfaktor_nachpuffer = 5
|
||||
self._Mengen["Sensor_optisch_Traverse"] = self._Flyer_Anzahl * (self._Mengen.get("Anzahl_Schienen", 0) + sensorfaktor_nachpuffer) + anzahl.get("Dreifachweiche", 0) * 2 + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
|
||||
self._Mengen["Sensor_optisch_Traverse_Korrektur"] = self.mengen.get("Sensor_optisch_Traverse_Korrektur", 0)
|
||||
self._Mengen["Sensor_induktiv_Spulenhalter"] = self._Flyer_Anzahl * 1 + anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0) ###f bei jayjay * 2
|
||||
self._Mengen["Sensor_induktiv_Spulenhalter"] = self._Flyer_Anzahl * 1 + anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
|
||||
self._Mengen["Sensor_induktiv_Spulenhalter_Korrektur"] = self.mengen.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
|
||||
self._Mengen["Bedientableau_2fach"] = self._Flyer_Anzahl + anzahl.get("Bedientableau_2fach_Korrektur", 0)
|
||||
self._Mengen["Bedientableau_2fach_Korrektur"] = self.mengen.get("Bedientableau_2fach_Korrektur", 0)
|
||||
@@ -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,
|
||||
@@ -1274,7 +1273,7 @@ class HW():
|
||||
# "kabel_fuer_klemmkasten_und_bts_60m":0,
|
||||
# "kabel_fuer_1fach_bts_zug_wechseln":0,
|
||||
# "zuleitung_75_m_unterverteiler_4x4mm2_400vac":0,
|
||||
# "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0, ###m entweder "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc" oder "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"
|
||||
# "zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0,
|
||||
"korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc":0,
|
||||
# "zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc":0,
|
||||
"korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc": 0,
|
||||
@@ -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,
|
||||
@@ -1556,7 +1552,7 @@ class HW():
|
||||
"schnittstellen_8x1mm2_30m"
|
||||
]
|
||||
Keys_of_Schaltschrank = [
|
||||
"schaltschrankgehaeuse_b1x1200_zubehoer", ###f bezug zu anzahl schaltschrank?
|
||||
"schaltschrankgehaeuse_b1x1200_zubehoer",
|
||||
"schaltschrankgehaeuse_b2x800_zubehoer",
|
||||
"schaltschrankgehaeuse_b1x1200+1x800_zubehoer",
|
||||
"sps_simatic_s7_cpu315_2_pn_dp",
|
||||
@@ -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)
|
||||
@@ -1924,6 +1914,8 @@ class HW():
|
||||
anzahl.get("unterverteiler_fuer_8_rsm_direct", 0) +\
|
||||
anzahl.get("busverteiler_8_rsm_direct", 0) +\
|
||||
anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0)
|
||||
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("12x4 and 12x2.5 mustn't be used simultanously")
|
||||
self._anzahl["korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc"] = anzahl.get("korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc", 0)
|
||||
if 'direct' in mg.get_deckblatt_value("SYSTEM"):
|
||||
self._anzahl["zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm"] = mg.get_deckblatt_value("RSM")
|
||||
@@ -2078,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",
|
||||
@@ -2112,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",
|
||||
@@ -2139,7 +2129,7 @@ class HW():
|
||||
|
||||
class Dienstleistung():
|
||||
# Angaben in h
|
||||
mengen = { ###m unauskommentierte alle nur bedingt änderbar
|
||||
mengen = {
|
||||
"Pflichtenheft_Autom_Schnittstellen": 0,
|
||||
|
||||
## Hardwareplanung
|
||||
@@ -2364,7 +2354,7 @@ class Anschlussl():
|
||||
"Antrieb":0.12, #kilo Watt
|
||||
"Strom_Motor":0.55, #Ampere
|
||||
#"Summe_Strom_Motor":26.4,
|
||||
"cos_phi":0.77, ###m fester Wert
|
||||
"cos_phi":0.77,
|
||||
"Versorgung_SPS_und_Peripherie":3, #Ampere
|
||||
#"Summe_Strom_Motot_SPS_Peripherie":29.4, #Ampere
|
||||
#GZE
|
||||
@@ -2374,7 +2364,7 @@ class Anschlussl():
|
||||
#gesamtstrom
|
||||
#spannung
|
||||
#x strom
|
||||
"x_Wurzel_3":1.732 ###m fester Wert
|
||||
"x_Wurzel_3":1.732
|
||||
#leistung
|
||||
#gesamtanschlussleistung
|
||||
}
|
||||
@@ -2974,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)
|
||||
-332
@@ -1,332 +0,0 @@
|
||||
import rieter_ekalk as rek
|
||||
import unittest
|
||||
class TestObjectMethods(unittest.TestCase):
|
||||
def test_A_JayJay(self):
|
||||
# Anzahl der für das Projekt benutzten
|
||||
Anzahl_MG = {
|
||||
"SYSTEM": "FA",
|
||||
"RSM":14,
|
||||
"Flyer":4,
|
||||
"Flyer_Puffer":2,
|
||||
"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
|
||||
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":0,
|
||||
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":0,
|
||||
"Neuenhauser-Putzmaschine":0,
|
||||
"Neuenhauser-Putzmaschine_Vorpuffer":0,
|
||||
"Neuenhauser-Putzmaschine_Nachpuffer":0,
|
||||
"Cason-Putzmaschine":0,
|
||||
"Cason-Putzmaschine_Vorpuffer":0,
|
||||
"Cason-Putzmaschine_Nachpuffer":0,
|
||||
"Puffer":1,
|
||||
"Anzahl_der_Pufferstrecken_pro_Puffer":5,
|
||||
"Begegnungsstrecke_Bypass":2,
|
||||
"Turm":0,
|
||||
"Turm_Anzahl_Wendlungen":0,
|
||||
}
|
||||
|
||||
rsm_direct_eingabe = {
|
||||
}
|
||||
rsm_fa_eingabe = {
|
||||
"Flex_A_Premium":False, # braucht man das noch?
|
||||
"Getriebe_in_der_Mitte":False, # braucht man das noch?
|
||||
"RSM_Einfahrt_Ein_Beidseitig":False, # braucht man das noch?
|
||||
"Sensor_optisch_Traverse_zusätzlich":6,
|
||||
"Bedientableau_1fach_Korrektur":0,
|
||||
"Bedientableau_2fach_Korrektur":4,
|
||||
"Weiche_Korrektur":4,
|
||||
"RRA_bi_Korrektur":0,
|
||||
"RRA_bi_auf_Haupstrecke":10,
|
||||
"RRA_uni_Begegnung":4,
|
||||
"gemeinsame_Wendung":0,
|
||||
"Mit_Drucktaster_Korrektur":0,
|
||||
"Meldelampe_Überstrom_Korrektur":0,
|
||||
"Hauptschalter_Ein-Meldung_Korrektur":0,
|
||||
"Werma_Rundumleuchte_Störung_Korrektur":0,
|
||||
"klemmkasten_rsm":2,
|
||||
}
|
||||
flyer_f40_eingabe = {
|
||||
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
|
||||
#"Anzahl":0,
|
||||
#"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, #wird in deckblatt-Klasse berechnet
|
||||
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
|
||||
#"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
|
||||
#"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet
|
||||
#"Anzahl_Schienen":0,
|
||||
"Single_Line_Durchfahrt":False,
|
||||
"Nachpuffer":False,
|
||||
#"Sensor_optisch_Traverse":0,
|
||||
"Sensor_optisch_Traverse_Korrektur":0,
|
||||
#"Sensor_induktiv_Spulenhalter":0,
|
||||
"Sensor_induktiv_Spulenhalter_Korrektur":0,
|
||||
#"Bedientableau_2fach":0,
|
||||
"Bedientableau_2fach_Korrektur":0,
|
||||
#"Interface_Doffer":0,
|
||||
"Interface_Doffer_Korrektur":0,
|
||||
#"Weiche":0,
|
||||
"Weiche_Korrektur":0,
|
||||
#"Weiche_nach_Flyer_bipolar":0,
|
||||
"Weiche_nach_Flyer_bipolar_Korrektur":0,
|
||||
"Dreifachweiche":0,
|
||||
"Wechsel":0,
|
||||
"Stopper":0,
|
||||
"RA_uni":0,
|
||||
#"RA_uni_abhebbar":0,
|
||||
"RA_uni_abhebbar_Korrektur":0,
|
||||
#"RA_uni_ohne_SPS_Ansteuerung":0,
|
||||
"RA_uni_ohne_SPS_Ansteuerung_Korrektur":0,
|
||||
#"RRA_BI_abhebbar":0,
|
||||
"RRA_BI_abhebbar_Korrektur":0,
|
||||
"RRA_bi":0,
|
||||
#"RRA_bi_Korrektur":0,
|
||||
#"RRA_bi_ohne_SPS_Ansteuerung":0,
|
||||
"RRA_bi_ohne_SPS_Ansteuerung_Korrektur":0,
|
||||
#"Doppelstreckenantrieb":0,
|
||||
"Doppelstreckenantrieb_Korrektur":0,
|
||||
"RA_bi_abhebbar_unger_Schiene":0,
|
||||
#"Meldelampe_Überstrom":0,
|
||||
"Meldelampe_Überstrom_Korrektur":0,
|
||||
#"Hauptschalter_Ein_Meldung":0,
|
||||
"Hauptschalter_Ein-Meldung_Korrektur":0,
|
||||
#"Werma_Rundumleuchte_Störung":0,
|
||||
"Werma_Rundumleuchte_Störung_Korrektur":0,
|
||||
}
|
||||
neuenhauser_eingabe = {
|
||||
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
|
||||
#"Anzahl":0,
|
||||
#"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen
|
||||
#"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen
|
||||
#"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen
|
||||
#"Anzahl_Vorstaustrecken":0,
|
||||
#"Anzahl_Nachstaustrecken":0,
|
||||
#"Sensor_optisch_Traverse":0,
|
||||
"Sensor_optisch_Traverse_Korrektur":0,
|
||||
#"Sensorik_Zugpositionierung":0,
|
||||
#"Sensor_WT18_Spulenprüfung_voll_leer":0,
|
||||
#"Bedientableau_2fach":0,
|
||||
"Bedientableau_2fach_Korrektur":0,
|
||||
#"Interface_Putzmaschine":0,
|
||||
#"Weiche":0,
|
||||
"Weiche_Korrektur":0,
|
||||
#"Weiche_nach_PM_bipolar":0,
|
||||
#"RA_uni_abhebbar":0,
|
||||
"RA_uni_abhebbar_Korrektur":0,
|
||||
#"RA_uni_ohne_SPS_Ansteuerung":0,
|
||||
#"RA_uni_abhebbar_unger_Sch":0,
|
||||
#"Doppelstreckenantrieb":0,
|
||||
#"Meldelampe_Überstrom":0,
|
||||
"Meldelampe_Überstrom_Korrektur":0,
|
||||
#"Hauptschalter_Ein_Meldung":0,
|
||||
"Hauptschalter_Ein-Meldung_Korrektur":0,
|
||||
#"Werma_Rundumleuchte_Störung":0,
|
||||
"Werma_Rundumleuchte_Störung_Korrektur":0,
|
||||
}
|
||||
flyer_eingabe = {
|
||||
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
|
||||
#"Anzahl":0,
|
||||
#"Flyer":0, # äquivalent zu 'Anzahl'
|
||||
#"Anzahl_Schienen:":0,
|
||||
#"Sensor_optisch_Traverse":0,
|
||||
"Sensor_optisch_Traverse_Korrektur":0,
|
||||
#"Sensor_induktiv_Spulenalter_Zug_positionierung":0,
|
||||
#"Bedientableau_2fach":0,
|
||||
#"Interface_Doffer":0,
|
||||
#"Weiche":0,
|
||||
"Weiche_Korrektur":0,
|
||||
#"Weiche_nach_Flyer_bipolar":0,
|
||||
"Dreifachweiche":0,
|
||||
#"Wechsel":0,
|
||||
"Wechsel_Korrektur":0,
|
||||
#"RA_bi_ohne_SPS-Ansteuerung":0,
|
||||
#"RA_bi_abhebbar":0,
|
||||
"RA_bi_abhebbar_Korrektur":0,
|
||||
"RA_bi":4,
|
||||
#"Doppelstreckenantrieb":0,
|
||||
"RA_bi_abhebbar_unger_Schiene":0,
|
||||
#"Meldelampe_Überstrom":0,
|
||||
"Meldelampe_Überstrom_Korrektur":0,
|
||||
#"Hauptschalter_Ein_Meldung":0,
|
||||
"Hauptschalter_Ein-Meldung_Korrektur":0,
|
||||
#"Werma_Rundumleuchte_Störung":0,
|
||||
"Werma_Rundumleuchte_Störung_Korrektur":0,
|
||||
}
|
||||
verbindungsstrecken_w_eingabe = {
|
||||
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
|
||||
#"Sensor_optisch_Traverse":0,
|
||||
"Bedientableau_1fach":0,
|
||||
"Bedientableau_2fach":0,
|
||||
"Bedientableau_14fach":0,
|
||||
"Weiche":0,
|
||||
"Dreifachweiche":0,
|
||||
"Kreuzungsweiche":1,
|
||||
"Werma_Rundumleuchte_Störung":0,
|
||||
"RA_uni":0,
|
||||
"RA_uni_ohne_SPS_Ansteuerung":0,
|
||||
"RA_bi":0,
|
||||
"RA_bi_ohne_SPS-Ansteuerung":0,
|
||||
"Doppelstreckenantrieb":0
|
||||
}
|
||||
puffer_eingabe = {
|
||||
# auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
|
||||
# "Anzahl":0,
|
||||
# "Puffer":0, #äquivalent zu Anzahl
|
||||
# "Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
|
||||
# "Anzahl_Staustrecken":0,
|
||||
# "Sensor_optisch_Traverse":0,
|
||||
"Sensor_optisch_Traverse_Korrektur": 1,
|
||||
# "Weiche":0,
|
||||
"Weiche_Korrektur": 0,
|
||||
"RA_bi_ungerade_Schiene": 2,
|
||||
# "Doppelstreckenantrieb":0,
|
||||
# "Meldelampe_Überstrom":0,
|
||||
"Meldelampe_Überstrom_Korrektur": 0,
|
||||
# "Hauptschalter_Ein_Meldung":0,
|
||||
"Hauptschalter_Ein-Meldung_Korrektur": 0,
|
||||
}
|
||||
turm_eingabe = {
|
||||
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
|
||||
#"Anzahl":0,
|
||||
#"Turm":0, #äquivalent zu Anzahl
|
||||
#"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken
|
||||
#"Anzahl_Staustrecken":0,
|
||||
#"Sensor_optisch_Traverse":0,
|
||||
#"Weiche":0,
|
||||
#"RA_bi":0,
|
||||
"RA_bi_Korrektur":0,
|
||||
#"RA_bi_ohne_SPS":0,
|
||||
"RA_bi_ohne_SPS_Korrektur":0,
|
||||
#"Bedientableau_2fach":0,
|
||||
}
|
||||
mg = rek.MG(Anzahl_MG,
|
||||
rsm_direct=rsm_direct_eingabe,
|
||||
rsm_fa=rsm_fa_eingabe,
|
||||
flyer_f40=flyer_f40_eingabe,
|
||||
neuenhauser=neuenhauser_eingabe,
|
||||
flyer=flyer_eingabe,
|
||||
verbindungsstrecken_w=verbindungsstrecken_w_eingabe,
|
||||
puffer=puffer_eingabe,
|
||||
turm=turm_eingabe)
|
||||
|
||||
# check data of Mengengerüst
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Anzahl_RSM'), 14)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Flex_A_Premium'), False)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Getriebe_in_der_Mitte'), False)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'RSM_Einfahrt_Ein_Beidseitig'), False)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Sensor_optisch_Traverse'), 20)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Sensor_optisch_Traverse_zusätzlich'), 6)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_1fach'), 14)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_1fach_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_2fach'), 6)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Bedientableau_2fach_Korrektur'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Weiche'), 18)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Weiche_Korrektur'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi'), 24)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi_auf_Haupstrecke'), 10)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'RRA_bi_ohne_SPS_Ansteuerung'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'gemeinsame_Wendung'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Seilzugschalter'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Mit_Drucktaster'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Mit_Drucktaster_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Meldelampe_Überstrom'), 2)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Meldelampe_Überstrom_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Hauptschalter_Ein_Meldung'), 2)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Hauptschalter_Ein-Meldung_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Werma_Rundumleuchte_Störung'), 2)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'Werma_Rundumleuchte_Störung_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('rsm_fa', 'klemmkasten_rsm'), 2)
|
||||
|
||||
# check data of the flyer
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Anzahl'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Anzahl_Schienen'), 2)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Flyer'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Sensor_optisch_Traverse'), 28)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Sensor_optisch_Traverse_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Sensor_induktiv_Spulenalter_Zug_positionierung'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Bedientableau_2fach'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Interface_Doffer'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Weiche'), 8)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Weiche_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Weiche_nach_Flyer_bipolar'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Dreifachweiche'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Wechsel'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Wechsel_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_ohne_SPS-Ansteuerung'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_abhebbar'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_abhebbar_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Doppelstreckenantrieb'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'RA_bi_abhebbar_unger_Schiene'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Meldelampe_Überstrom'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Meldelampe_Überstrom_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Hauptschalter_Ein_Meldung'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Hauptschalter_Ein-Meldung_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Werma_Rundumleuchte_Störung'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('flyer_ejet', 'Werma_Rundumleuchte_Störung_Korrektur'), 0)
|
||||
|
||||
# Verbindungsstrecken Wechsel
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Sensor_optisch_Traverse'), 10)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Bedientableau_1fach'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Bedientableau_2fach'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Bedientableau_14fach'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Weiche'), 4)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Dreifachweiche'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Kreuzungsweiche'), 1)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Werma_Rundumleuchte_Störung'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_uni'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_uni_ohne_SPS_Ansteuerung'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_bi'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'RA_bi_ohne_SPS-Ansteuerung'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('verbindungsstrecken_wechsel', 'Doppelstreckenantrieb'), 0)
|
||||
|
||||
# Puffer
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Anzahl'), 1)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Anzahl_Staustrecken'), 5)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Sensor_optisch_Traverse'), 6)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Sensor_optisch_Traverse_Korrektur'), 1)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Weiche'), 5)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'RA_bi_ungerade_Schiene'), 2)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Weiche_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Doppelstreckenantrieb'), 2)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Meldelampe_Überstrom'), 1)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Meldelampe_Überstrom_Korrektur'), 0)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein_Meldung'), 1)
|
||||
self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein-Meldung_Korrektur'), 0)
|
||||
|
||||
zf = mg.zusammenfassung()
|
||||
#self.assertEqual(zf['Gesamtanzahl_Antriebe'], 44)
|
||||
self.assertEqual(zf['Sensor_optisch_Traverse'], 68)
|
||||
self.assertEqual(zf['Sensor_induktiv_Spulenalter_Zug_positionierung'], 4)
|
||||
self.assertEqual(zf['Sensor_Spulenprüfung_voll_leer'], 0)
|
||||
self.assertEqual(zf['Seilzugsschalter'], 0)
|
||||
self.assertEqual(zf['Drucktaster_automatische_Umfahrung'], 0)
|
||||
self.assertEqual(zf['Bedientableau_1fach'], 14)
|
||||
self.assertEqual(zf['Bedientableau_2fach'], 10)
|
||||
self.assertEqual(zf['Bedientableau_14fach'], 0)
|
||||
self.assertEqual(zf['Interface_Putzmaschine'], 0)
|
||||
self.assertEqual(zf['Interface_Doffer'], 4)
|
||||
self.assertEqual(zf['Weiche'], 35)
|
||||
self.assertEqual(zf['Dreifachweiche'], 0)
|
||||
self.assertEqual(zf['Wechsel'], 4)
|
||||
self.assertEqual(zf['Stopper'], 0)
|
||||
self.assertEqual(zf['Meldelampe_Überstrom'], 7)
|
||||
self.assertEqual(zf['Hauptschalter_Ein_Meldung'], 7)
|
||||
self.assertEqual(zf['Werma_Rundumleuchte_Störung'], 6)
|
||||
self.assertEqual(zf['Weiche_nach_PM_bipolar'], 0)
|
||||
self.assertEqual(zf['Kreuzungsweiche'], 1)
|
||||
self.assertEqual(zf['RA_uni'], 4)
|
||||
self.assertEqual(zf['RA_uni_abhebbar'], 0)
|
||||
self.assertEqual(zf['RA_uni_ohne_SPS_Ansteuerung'], 0)
|
||||
self.assertEqual(zf['RA_bi'], 30)
|
||||
self.assertEqual(zf['RA_bi_ohne_SPS-Ansteuerung'], 4)
|
||||
self.assertEqual(zf['RA_bi_abhebbar'], 4)
|
||||
self.assertEqual(zf['Doppelstreckenantrieb'], 6)
|
||||
self.assertEqual(zf['gemeinsame_Wendung'], 0)
|
||||
self.assertEqual(zf['klemmkasten_rsm'], 2)
|
||||
|
||||
|
||||
|
||||
def test_Unittests():
|
||||
unittest.main()
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_Unittests()
|
||||
+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