Compare commits

..

50 Commits

Author SHA1 Message Date
m.stangl 5701a2f5a0 tfk hinzugefügt 2023-08-16 17:19:05 +02:00
m.stangl 6ada3b48b4 Readme ergänzt 2023-07-18 14:00:19 +02:00
m.stangl 0f9ba338d4 Doku ergänzt 2023-07-18 13:56:05 +02:00
m.stangl b1d7c011c6 Endung in der .bat war noch falsch 2023-07-18 13:18:22 +02:00
m.stangl 0f61d73628 dateien auf die richtigen Aufrufe reduziert 2023-07-18 13:16:02 +02:00
m.stangl ee8989ff5f Beispiel für JayJay als .json oder als .xlsx Berechnung dazu 2023-07-18 13:14:42 +02:00
m.stangl d93e2b6c28 shell mit umgebungsvariablen dazu 2023-07-18 13:03:38 +02:00
m.stangl 6350ddf850 Ausgabe welche Config neu geschrieben wird hinzugefügt 2023-07-18 13:03:06 +02:00
m.stangl 844aedc02b json export gebaut. Weitere Ausgaben wie EMO hinzugefügt 2023-06-29 14:31:43 +02:00
m.stangl 7b4c761656 Mengenrüst als Ergebnis raus 2023-06-28 17:09:58 +02:00
m.stangl 66aa17a470 Ergebnisse mit mehreren Tabs rausgeschrieben 2023-06-20 16:06:34 +02:00
m.stangl 264b62681b Config mit den neuen PReisen aus Sivas für das jayjay gebaut. 2023-06-06 17:20:06 +02:00
m.stangl 2eeac20acd python files verschoben 2023-06-06 16:35:41 +02:00
m.stangl 193fa1d277 Dienstleistung und Ergebnis Sektion dazu gemacht 2023-06-06 15:55:05 +02:00
m.stangl 44a565aa11 Blöcke EAS und HW in die Eingabedatei hinzu 2023-06-06 15:41:34 +02:00
m.stangl 523d7ae097 Config Extrakt auch per .bat aufrufbar 2023-05-31 17:30:26 +02:00
m.stangl 3a0c1ed964 Ausgabe soll im Work Ordner landen 2023-05-31 17:27:10 +02:00
m.stangl 1f0e4137f2 Struktur des Programmes umgebaut, so dass Umgebungsvariablen verwendet werden. Configs werden vor Objekterzeugung geladen und in den Objekten gesetzt 2023-05-31 16:56:42 +02:00
m.stangl 4e70f5a600 Faktoren für Sensorkabel und Stopper aus den Längen in den Datenblätter aus SIVAS ergänzt 2023-05-31 09:14:45 +02:00
m.stangl f4e507b2a2 Multiplikation der Kabelpreise mit Ihren verwendeten Längen 2023-05-16 18:15:35 +02:00
m.stangl 4d011f2ebd Sektionüberschriften besser als Parameter übergeben 2023-05-16 17:38:54 +02:00
m.stangl 1d655e471e zusätzliche Faktoren für die Kabel eingeführt 2023-05-16 17:31:09 +02:00
m.stangl 2ff0e8b01d Zuordnung der Teilennummern auch als .cfg benannt 2023-05-16 16:56:29 +02:00
m.stangl 245592f215 Config Datei mit den PReisen aus Sivas heisst jetzt Sivas_Daten.cfg 2023-05-16 16:46:42 +02:00
m.stangl 4c64ee7f18 Session mit M. Schellhammer. Entfernung der nicht benötigten Keys 2023-04-27 16:26:26 +02:00
m.stangl cda9a6713d Typen in den Parametern ergänzt. pandas Aufruf in Abfrage_Sivas geändert. Configs verschoenert, da parser sonst nicht richtig arbeitete 2023-04-26 17:14:52 +02:00
m.stangl efdb57fd52 Teilenummern von M. Schellhammer dazu eingetragen 2023-04-06 14:54:09 +02:00
ljedlitschka 4dc8125155 begonnene Sivas-Nummerzuweisung der Bauteile, denen in der Excel-Liste keine Sivas-Nummern zugeordnet sind 2023-03-15 17:14:06 +01:00
ljedlitschka 3e497f94b8 Zuordnung Bauteile und ihre Sivas-Nummern 2023-03-15 17:03:53 +01:00
ljedlitschka 8d15e21a08 config Datei mit Stückpreisen, Zeiteinheiten.... 2023-03-15 17:02:14 +01:00
ljedlitschka 3140a15d8a faktoren Sivas Nummern begonnen 2023-03-15 17:00:37 +01:00
ljedlitschka be776feee4 Einfluss Korrekturfaktoren ergänzt 2023-03-15 15:51:53 +01:00
ljedlitschka c1ae3b680c Code Kommentare angefangen 2023-03-15 15:50:52 +01:00
ljedlitschka cd5514f96b readme Programmbeschreibung ergänzt 2023-03-15 15:50:15 +01:00
ljedlitschka c0023e4652 unittests auskommentiert um Turm Varianten zu testen 2023-03-13 16:42:52 +01:00
ljedlitschka 86ba921420 Programm für die einfache Erstellung der config aus dem Export von Sivas-Preisen 2023-03-13 16:40:05 +01:00
ljedlitschka a04f467b3f fixes turm_Wendlungen 2023-03-13 16:38:50 +01:00
ljedlitschka 29c09edde5 cfg-Datei für Preise und Arbeitszeiten Hardware wird eingelesen und überschreibt default Werte 2023-03-13 16:37:56 +01:00
ljedlitschka e51a8feb95 tests ausgelagert, cfg datei angelegt 2023-03-08 17:17:33 +01:00
ljedlitschka ef0567c4ea entweder oder bei Klemmen und Unterverteilern ergänzt; versch. Motor-Arten ergänzt 2023-03-06 11:33:46 +01:00
ljedlitschka 355a17852a Ausgabe dictionary 2023-02-28 13:19:29 +01:00
ljedlitschka ed23eda4ca bedingung zuleitung ergänzt 2023-02-27 17:46:27 +01:00
ljedlitschka 65b6118655 class ergebnis vollständig; Reserveregulierungen ergänzt 2023-02-27 17:45:13 +01:00
ljedlitschka 66128322eb läuft; Kostensumme fehlen noch 2 Parameter 2023-02-20 17:16:50 +01:00
ljedlitschka 9de8163704 Eingabewerte alle überprüft, Formeln bis flyer f40 2023-02-20 17:06:13 +01:00
ljedlitschka 8254be59dc Überprüfen 2023-02-13 10:00:53 +01:00
ljedlitschka 7b0c86bd39 test HW und Anschlussleistung ergänzt, Objekt Item deleted 2023-02-09 09:16:38 +01:00
ljedlitschka 56fe2e9b46 weiterentwicklung hardware (zeiten) und dienstleistung 2023-02-02 17:19:26 +01:00
ljedlitschka 90ec5d091e Überarbeitung Preise hw mit neuer Exceldatei, hw mengen und init ergänzt mit Exceldatei, Dienstleistung angefangen zu überarbeiten und ergänzen 2023-01-31 18:02:59 +01:00
ljedlitschka 6cddbf8066 vgl von jayjay mit dem Mengengerüst der ExCel_Datei und dem unit-test 2023-01-23 16:24:39 +01:00
26 changed files with 13961 additions and 3312 deletions
+2 -1
View File
@@ -16,7 +16,6 @@ dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
@@ -114,6 +113,7 @@ celerybeat.pid
*.sage.py
# Environments
.idea
.env
.venv
env/
@@ -157,3 +157,4 @@ cython_debug/
# rieter ekalk json outputs
json_mengengeruest.json
zusammenfassung_mengengeruest.json
*.xlsx
Binary file not shown.
+16
View File
@@ -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
}
]
}
+2 -1
View File
@@ -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
+102 -1
View File
@@ -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
```
+101
View File
@@ -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
+2
View File
@@ -0,0 +1,2 @@
call ecalc_setenv.bat
python %ECALC_LIB%\calc_site.py %*
+4
View File
@@ -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
+3
View File
@@ -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
+2
View File
@@ -0,0 +1,2 @@
call ecalc_setenv.bat
start
+10
View File
@@ -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
+3
View File
@@ -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
+2
View File
@@ -0,0 +1,2 @@
call ecalc_setenv.bat
python %ECALC_LIB%\Abfrage_Sivas.py %*
+274
View File
@@ -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
+254
View File
@@ -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
+147
View File
@@ -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
+171
View File
@@ -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)
+463
View File
@@ -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')
+2768
View File
File diff suppressed because it is too large Load Diff
+2199
View File
File diff suppressed because it is too large Load Diff
+4014
View File
File diff suppressed because it is too large Load Diff
-3309
View File
File diff suppressed because it is too large Load Diff
+175
View File
@@ -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
View File
@@ -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