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