Compare commits

..

10 Commits

113 changed files with 14973 additions and 12 deletions
+44
View File
@@ -0,0 +1,44 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Projektübersicht
**HundM_awl** ist eine Werkzeugsammlung rund um SPS-AWL/SCL: Aus TIA-XML-Exporten wird
AWL erzeugt, AWL wird nach SCL konvertiert, parametriert und optimiert. Die Projektordner
`=A01+UH06-KF00/` und `=A01+UH07-KF00/` enthalten anlagenbezogene Daten.
## Projektstruktur
```text
HundM_awl/
├── bin/ # Batch-Skripte (Konvertierung, venv, Setup)
├── lib/ # Python-Quellcode
├── SCL-Export/ # SCL-Ausgaben
├── =A01+UH06-KF00/ # Anlagen-/Kennzeichen-bezogene Daten
├── =A01+UH07-KF00/ # Anlagen-/Kennzeichen-bezogene Daten
├── cfg/ # Konfiguration
├── data/ # Daten
├── doc/ # Dokumentation
├── log/ # Log-Dateien
└── tests/ # Tests
```
## Kernmodule (lib/)
- `stlxml2awl.py` — TIA-XML-Export → AWL
- `awl2scl.py` — AWL → SCL
- `paramize.py` — Parametrierung
- `sclopt.py` — SCL-Optimierung
## Skripte (bin/)
- `xmls2awl.bat` — XML → AWL
- `awl2scl.bat` / `awl2scl_deep.bat` — AWL → SCL (Standard / tief)
- `setenv.bat`, `install_py.bat`, `activate_venv.bat`, `get_cmd.bat` — Umgebung/venv
## Setup
```cmd
bin\install_py.bat
```
@@ -0,0 +1,45 @@
FUNCTION "AMRZeiger_ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
AMR_X : Word; // AMR zum Beeinflussen
MW224 : Word; // war "MW224"
MW226 : Word; // war "MW226"
END_VAR
VAR_OUTPUT
AMR_DB : Int;
AMR_DW : Int;
Error : Bool;
g_6_HMI_Err_UH06_AMR : Word; // war "6_HMI_Err_UH06_AMR"
MW200 : Word; // war "MW200"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Position : Int;
END_VAR
BEGIN
REGION Zeiger für AMR_X ermitteln
#MW200 := #AMR_X;
// Einsprung AMR ermitteln:
"DatenOut"(SSDB := 276, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M200.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // Eintrag lesen
#g_6_HMI_Err_UH06_AMR.Logistik.DB276_Err := (#MB199 AND 2#1111111) <> 0;
#Error := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
#AMR_DB := #MW224;
#AMR_DW := #MW226;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,108 @@
FUNCTION_BLOCK "AMR_TrolleyVersorgung"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3481 : Word; // war "BG3481"
DMPS1_OmniFahren : Word; // war "DMPS1_OmniFahren"
DMPS2_OmniFahren : Word; // war "DMPS2_OmniFahren"
DMPS3_OmniFahren : Word; // war "DMPS3_OmniFahren"
DPS1_OmniFahren : Word; // war "DPS1_OmniFahren"
DPS2_OmniFahren : Word; // war "DPS2_OmniFahren"
DPS3_OmniFahren : Word; // war "DPS3_OmniFahren"
DPS4_OmniFahren : Word; // war "DPS4_OmniFahren"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MB3481 : Byte; // war "MB3481"
END_VAR
VAR_OUTPUT
Arbeitsplatz : Word;
END_VAR
VAR
Last_Arbeitsplatz : Word;
END_VAR
VAR_TEMP
ArbeitsPlatz_zum_Versorgen : Word;
Freiplätze_Arbeitsplatz : Int;
END_VAR
BEGIN
REGION Initialisierung
#ArbeitsPlatz_zum_Versorgen := 0;
#Freiplätze_Arbeitsplatz := 0;
END_REGION
REGION Arbeitsplatz PS5 mit größtem Bedarf?
IF #DPS5_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DPS5_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#A500;
END_IF;
END_REGION
REGION Arbeitsplatz PS4 mit größtem Bedarf?
IF #DPS4_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DPS4_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#A400;
END_IF;
END_REGION
REGION Arbeitsplatz PS3 mit größtem Bedarf?
IF #DPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#A300;
END_IF;
END_REGION
REGION Arbeitsplatz PS2 mit größtem Bedarf?
IF #DPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#A200;
END_IF;
END_REGION
REGION Arbeitsplatz PS1 mit größtem Bedarf?
IF #DPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#A100;
END_IF;
END_REGION
REGION Versorgung von MPS von Schleuse 3481 sichergestellt?
IF #BG3481 OR #MB3481 THEN GOTO Fertig; END_IF;
END_REGION
REGION Arbeitsplatz MPS3 mit größtem Bedarf?
IF #DMPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DMPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#B300;
END_IF;
END_REGION
REGION Arbeitsplatz MPS2 mit größtem Bedarf?
IF #DMPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DMPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#B200;
END_IF;
END_REGION
REGION Arbeitsplatz MPS1 mit größtem Bedarf?
IF #DMPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze > #Freiplätze_Arbeitsplatz THEN
#Freiplätze_Arbeitsplatz := #DMPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;
#ArbeitsPlatz_zum_Versorgen := 16#B100;
END_IF;
END_REGION
REGION Arbeitsplatz übergeben
#Arbeitsplatz := #ArbeitsPlatz_zum_Versorgen;
#Last_Arbeitsplatz := #ArbeitsPlatz_zum_Versorgen;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,81 @@
FUNCTION_BLOCK "Abführung_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_6_HMI_Err_UH06_AMR : Word; // war "6_HMI_Err_UH06_AMR"
DHWtoOB_OmniFahren : Word; // war "DHWtoOB_OmniFahren"
DHWtoOB_Sensoren : Word; // war "DHWtoOB_Sensoren"
END_VAR
VAR_IN_OUT
BG3540 : Word; // war "BG3540"
BG3541 : Word; // war "BG3541"
BG3542 : Word; // war "BG3542"
BG3543 : Word; // war "BG3543"
BG3570 : Word; // war "BG3570"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DHWtoOB_Antriebe : Word; // war "DHWtoOB_Antriebe"
MA0112 : Bool; // war "MA0112"
MA0113 : Bool; // war "MA0113"
MB3540 : Byte; // war "MB3540"
MB3543 : Byte; // war "MB3543"
END_VAR
VAR
Schleuse_3540 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3543 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3540.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3543.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3540.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_3543.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Schleuse hinter MPS1
#Schleuse_3540(Schleusen_Nr := 3540, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3541, B_InSchleuse := #BG3540, B_AusSchleuse := #BG3542, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_BG3542.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0112, Antrieb_plus_aktiv := #MA0112, Schleuse_geöffnet := #MB3540, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_3540.Stat.Ast, Error := %DB608.DBW350, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse vor BST 4
#Fahren_Ok := (((NOT (#g_6_HMI_Err_UH06_AMR.System.Gesamt_Feueralarm) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST4_Feueralarm)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST4_Geschlossen)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST4_Störung)) AND #DHWtoOB_OmniFahren.Schleuse_3546.Dyn.Sk.Bereich_ok; // / UN #Trolleys_starten.Wartezeit_aktiv //Neu: Vor AFS runter
#Stau_raus := #DHWtoOB_Sensoren.Stau_BG3570.Stat.B_Akt OR #DHWtoOB_Sensoren.Stau_BG3544.Stat.B_Akt;
#Schleuse_3543(Schleusen_Nr := 3543, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3542, B_InSchleuse := #BG3543, B_AusSchleuse := #BG3570, B_Stau_raus := #Stau_raus, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := #MA0112, Antrieb_plus_aktiv := #MA0113, Schleuse_geöffnet := #MB3543, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_3543.Stat.Ast, Error := %DB608.DBW352, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_PS, Antrieb_plus_vor := #DHWtoOB_Antriebe.MA0113.Stat.A_vor, Antrieb_plus_start := #DHWtoOB_Antriebe.MA0113.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,93 @@
FUNCTION "Arbeitsplätze" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
SGes : Word; // war "SGes"
END_VAR
VAR_OUTPUT
DMPS1_OmniFahren : Word; // war "DMPS1_OmniFahren"
DMPS2_OmniFahren : Word; // war "DMPS2_OmniFahren"
DMPS3_OmniFahren : Word; // war "DMPS3_OmniFahren"
DPS1_OmniFahren : Word; // war "DPS1_OmniFahren"
DPS2_OmniFahren : Word; // war "DPS2_OmniFahren"
DPS3_OmniFahren : Word; // war "DPS3_OmniFahren"
DPS4_OmniFahren : Word; // war "DPS4_OmniFahren"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
END_VAR
BEGIN
REGION Ohne PC sind alle ABPs aktiviert
IF #SGes.Ohne_PC_Fahren THEN
#DPS5_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DPS4_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DMPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DMPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
#DMPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert := TRUE;
END_IF;
END_REGION
REGION Sensoren
"DArbeitsplätze_Sensoren"();
END_REGION
REGION Simulation zum Ausfahren aus AMRs
"Simulation_AMR_Trolley_starten"();
END_REGION
REGION Zuführung
"DZuführung_OmniFahren"();
END_REGION
REGION Pickstation 5
"DPS5_OmniFahren"();
END_REGION
REGION Pickstation 4
"DPS4_OmniFahren"();
END_REGION
REGION Pickstation 3
"DPS3_OmniFahren"();
END_REGION
REGION Pickstation 2
"DPS2_OmniFahren"();
END_REGION
REGION Pickstation 1
"DPS1_OmniFahren"();
END_REGION
REGION MultiPurposestation 3
"DMPS3_OmniFahren"();
END_REGION
REGION MultiPurposestation 2
"DMPS2_OmniFahren"();
END_REGION
REGION MultiPurposestation 1
"DMPS1_OmniFahren"();
END_REGION
REGION Abführung
"DAbführung_OmniFahren"();
END_REGION
REGION Last
"DArbeitsplätze_Zylinder"();
"DArbeitsplätze_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,426 @@
FUNCTION_BLOCK "Arbeitsplätze_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG3242 : Word; // war "BG3242"
BG3244 : Word; // war "BG3244"
BG3245 : Word; // war "BG3245"
BG3251 : Word; // war "BG3251"
BG3255 : Word; // war "BG3255"
BG3260 : Word; // war "BG3260"
BG3263 : Word; // war "BG3263"
BG3264 : Word; // war "BG3264"
BG3270 : Word; // war "BG3270"
BG3272 : Word; // war "BG3272"
BG3275 : Word; // war "BG3275"
BG3281 : Word; // war "BG3281"
BG3285 : Word; // war "BG3285"
BG3290 : Word; // war "BG3290"
BG3294 : Word; // war "BG3294"
BG3302 : Word; // war "BG3302"
BG3305 : Word; // war "BG3305"
BG3311 : Word; // war "BG3311"
BG3315 : Word; // war "BG3315"
BG3320 : Word; // war "BG3320"
BG3322 : Word; // war "BG3322"
BG3330 : Word; // war "BG3330"
BG3332 : Word; // war "BG3332"
BG3335 : Word; // war "BG3335"
BG3341 : Word; // war "BG3341"
BG3345 : Word; // war "BG3345"
BG3350 : Word; // war "BG3350"
BG3361 : Word; // war "BG3361"
BG3362 : Word; // war "BG3362"
BG3365 : Word; // war "BG3365"
BG3371 : Word; // war "BG3371"
BG3375 : Word; // war "BG3375"
BG3380 : Word; // war "BG3380"
BG3381 : Word; // war "BG3381"
BG3384 : Word; // war "BG3384"
BG3391 : Word; // war "BG3391"
BG3392 : Word; // war "BG3392"
BG3395 : Word; // war "BG3395"
BG3401 : Word; // war "BG3401"
BG3405 : Word; // war "BG3405"
BG3410 : Word; // war "BG3410"
BG3414 : Word; // war "BG3414"
BG3422 : Word; // war "BG3422"
BG3425 : Word; // war "BG3425"
BG3431 : Word; // war "BG3431"
BG3435 : Word; // war "BG3435"
BG3440 : Word; // war "BG3440"
BG3444 : Word; // war "BG3444"
BG3445 : Word; // war "BG3445"
BG3447 : Word; // war "BG3447"
BG3451 : Word; // war "BG3451"
BG3452 : Word; // war "BG3452"
BG3455 : Word; // war "BG3455"
BG3457 : Word; // war "BG3457"
BG3461 : Word; // war "BG3461"
BG3465 : Word; // war "BG3465"
BG3470 : Word; // war "BG3470"
BG3483 : Word; // war "BG3483"
BG3484 : Word; // war "BG3484"
BG3486 : Word; // war "BG3486"
BG3541 : Word; // war "BG3541"
BG3542 : Word; // war "BG3542"
BG3566 : Word; // war "BG3566"
BG3567 : Word; // war "BG3567"
MA0094 : Bool; // war "MA0094"
END_VAR
VAR
Stau_BG3566 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3567 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3457 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3447 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3483 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3484 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3486 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3244 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3542 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_Einfahrt_PS5 : "MSensoren";
Stau_nach_Einfahrt_PS5 : "MSensoren";
Stau_Platz1_PS5 : "MSensoren";
Stau_Platz2_PS5 : "MSensoren";
Stau_Platz3_PS5 : "MSensoren";
Stau_Ausfahrt_PS5 : "MSensoren";
Stau_nach_Ausfahrt_PS5 : "MSensoren";
Stau_Einfahrt_PS4 : "MSensoren";
Stau_nach_Einfahrt_PS4 : "MSensoren";
Stau_Platz1_PS4 : "MSensoren";
Stau_Platz2_PS4 : "MSensoren";
Stau_Platz3_PS4 : "MSensoren";
Stau_Ausfahrt_PS4 : "MSensoren";
Stau_nach_Ausfahrt_PS4 : "MSensoren";
Stau_Einfahrt_PS3 : "MSensoren";
Stau_nach_Einfahrt_PS3 : "MSensoren";
Stau_Platz1_PS3 : "MSensoren";
Stau_Platz2_PS3 : "MSensoren";
Stau_Platz3_PS3 : "MSensoren";
Stau_Ausfahrt_PS3 : "MSensoren";
Stau_nach_Ausfahrt_PS3 : "MSensoren";
Stau_Einfahrt_PS2 : "MSensoren";
Stau_nach_Einfahrt_PS2 : "MSensoren";
Stau_Platz1_PS2 : "MSensoren";
Stau_Platz2_PS2 : "MSensoren";
Stau_Platz3_PS2 : "MSensoren";
Stau_Ausfahrt_PS2 : "MSensoren";
Stau_nach_Ausfahrt_PS2 : "MSensoren";
Stau_Einfahrt_PS1 : "MSensoren";
Stau_nach_Einfahrt_PS1 : "MSensoren";
An_BG3383 : "MSensoren"; // Am Sensor Ende MA0203
Stau_Platz1_PS1 : "MSensoren";
Stau_Platz2_PS1 : "MSensoren";
Stau_Platz3_PS1 : "MSensoren";
Stau_Ausfahrt_PS1 : "MSensoren";
Stau_nach_Ausfahrt_PS1 : "MSensoren";
Stau_Einfahrt_MPS3 : "MSensoren";
Stau_nach_Einfahrt_MPS3 : "MSensoren";
Stau_Platz1_MPS3 : "MSensoren";
Stau_Platz2_MPS3 : "MSensoren";
Stau_Platz3_MPS3 : "MSensoren";
Stau_Ausfahrt_MPS3 : "MSensoren";
Stau_nach_Ausfahrt_MPS3 : "MSensoren";
Stau_Einfahrt_MPS2 : "MSensoren";
Stau_nach_Einfahrt_MPS2 : "MSensoren";
Stau_Platz1_MPS2 : "MSensoren";
Stau_Platz2_MPS2 : "MSensoren";
Stau_Platz3_MPS2 : "MSensoren";
Stau_Ausfahrt_MPS2 : "MSensoren";
Stau_nach_Ausfahrt_MPS2 : "MSensoren";
Stau_Einfahrt_MPS1 : "MSensoren";
Stau_nach_Einfahrt_MPS1 : "MSensoren";
Stau_Platz1_MPS1 : "MSensoren";
Stau_Platz2_MPS1 : "MSensoren";
Stau_Platz3_MPS1 : "MSensoren";
Stau_Ausfahrt_MPS1 : "MSensoren";
Stau_nach_Ausfahrt_MPS1 : "MSensoren";
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau am Sensor BG3566
#Stau_BG3566(ESensor := #BG3566, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3567
#Stau_BG3567(ESensor := #BG3567, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3457
#Stau_BG3457(ESensor := #BG3457, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3447
#Stau_BG3447(ESensor := #BG3447, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3483
#Stau_BG3483(ESensor := #BG3483, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3484
#Stau_BG3484(ESensor := #BG3484, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3486
#Stau_BG3486(ESensor := #BG3486, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3244
#Stau_BG3244(ESensor := #BG3244, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor BG3542
#Stau_BG3542(ESensor := #BG3542, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt PS5
#Stau_Einfahrt_PS5(ESensor := #BG3242, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt PS5
#Stau_nach_Einfahrt_PS5(ESensor := #BG3264, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 PS5
#Stau_Platz1_PS5(ESensor := #BG3245, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 PS5
#Stau_Platz2_PS5(ESensor := #BG3251, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 PS5
#Stau_Platz3_PS5(ESensor := #BG3255, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt PS5
#Stau_Ausfahrt_PS5(ESensor := #BG3260, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt PS5
#Stau_nach_Ausfahrt_PS5(ESensor := #BG3263, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt PS4
#Stau_Einfahrt_PS4(ESensor := #BG3272, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt PS4
#Stau_nach_Einfahrt_PS4(ESensor := #BG3270, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 PS4
#Stau_Platz1_PS4(ESensor := #BG3275, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 PS4
#Stau_Platz2_PS4(ESensor := #BG3281, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 PS4
#Stau_Platz3_PS4(ESensor := #BG3285, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt PS4
#Stau_Ausfahrt_PS4(ESensor := #BG3290, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt PS4
#Stau_nach_Ausfahrt_PS4(ESensor := #BG3294, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt PS3
#Stau_Einfahrt_PS3(ESensor := #BG3302, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt PS3
#Stau_nach_Einfahrt_PS3(ESensor := #BG3294, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 PS3
#Stau_Platz1_PS3(ESensor := #BG3305, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 PS3
#Stau_Platz2_PS3(ESensor := #BG3311, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 PS3
#Stau_Platz3_PS3(ESensor := #BG3315, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt PS3
#Stau_Ausfahrt_PS3(ESensor := #BG3320, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt PS3
#Stau_nach_Ausfahrt_PS3(ESensor := #BG3322, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt PS2
#Stau_Einfahrt_PS2(ESensor := #BG3332, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt PS2
#Stau_nach_Einfahrt_PS2(ESensor := #BG3330, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 PS2
#Stau_Platz1_PS2(ESensor := #BG3335, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 PS2
#Stau_Platz2_PS2(ESensor := #BG3341, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 PS2
#Stau_Platz3_PS2(ESensor := #BG3345, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt PS2
#Stau_Ausfahrt_PS2(ESensor := #BG3350, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt PS2
#Stau_nach_Ausfahrt_PS2(ESensor := #BG3361, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt PS1
#Stau_Einfahrt_PS1(ESensor := #BG3362, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt PS1
#Stau_nach_Einfahrt_PS1(ESensor := #BG3361, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Am Sensor Separator 3383
#An_BG3383(ESensor := #BG3381, T_Ein := 1, T_Aus := 50, tein_aktiv := TRUE, taus_aktiv := #MA0094); // Sensoren entprellen
END_REGION
REGION Stau Platz1 PS1
#Stau_Platz1_PS1(ESensor := #BG3365, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 PS1
#Stau_Platz2_PS1(ESensor := #BG3371, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 PS1
#Stau_Platz3_PS1(ESensor := #BG3375, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt PS1
#Stau_Ausfahrt_PS1(ESensor := #BG3380, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt PS1
#Stau_nach_Ausfahrt_PS1(ESensor := #BG3384, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt MPS3
#Stau_Einfahrt_MPS3(ESensor := #BG3392, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt MPS3
#Stau_nach_Einfahrt_MPS3(ESensor := #BG3391, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 MPS3
#Stau_Platz1_MPS3(ESensor := #BG3395, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 MPS3
#Stau_Platz2_MPS3(ESensor := #BG3401, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 MPS3
#Stau_Platz3_MPS3(ESensor := #BG3405, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt MPS3
#Stau_Ausfahrt_MPS3(ESensor := #BG3410, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt MPS3
#Stau_nach_Ausfahrt_MPS3(ESensor := #BG3414, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt MPS2
#Stau_Einfahrt_MPS2(ESensor := #BG3422, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt MPS2
#Stau_nach_Einfahrt_MPS2(ESensor := #BG3445, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 MPS2
#Stau_Platz1_MPS2(ESensor := #BG3425, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 MPS2
#Stau_Platz2_MPS2(ESensor := #BG3431, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 MPS2
#Stau_Platz3_MPS2(ESensor := #BG3435, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt MPS2
#Stau_Ausfahrt_MPS2(ESensor := #BG3440, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt MPS2
#Stau_nach_Ausfahrt_MPS2(ESensor := #BG3444, T_Ein := 1, T_Aus := 10, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Einfahrt MPS1
#Stau_Einfahrt_MPS1(ESensor := #BG3452, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach_Einfahrt MPS1
#Stau_nach_Einfahrt_MPS1(ESensor := #BG3451, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz1 MPS1
#Stau_Platz1_MPS1(ESensor := #BG3455, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz2 MPS1
#Stau_Platz2_MPS1(ESensor := #BG3461, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Platz3 MPS1
#Stau_Platz3_MPS1(ESensor := #BG3465, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Ausfahrt MPS1
#Stau_Ausfahrt_MPS1(ESensor := #BG3470, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau nach Ausfahrt MPS1
#Stau_nach_Ausfahrt_MPS1(ESensor := #BG3541, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,687 @@
FUNCTION_BLOCK "Arbeitsplätze_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DAMR_Bereich : Word; // war "DAMR_Bereich"
END_VAR
VAR_IN_OUT
MB3241 : Byte; // war "MB3241"
MB3242 : Byte; // war "MB3242"
MB3243 : Byte; // war "MB3243"
MB3244 : Byte; // war "MB3244"
MB3245 : Byte; // war "MB3245"
MB3250 : Byte; // war "MB3250"
MB3251 : Byte; // war "MB3251"
MB3255 : Byte; // war "MB3255"
MB3256 : Byte; // war "MB3256"
MB3260 : Byte; // war "MB3260"
MB3262 : Byte; // war "MB3262"
MB3263 : Byte; // war "MB3263"
MB3265 : Byte; // war "MB3265"
MB3271 : Byte; // war "MB3271"
MB3272 : Byte; // war "MB3272"
MB3273 : Byte; // war "MB3273"
MB3274 : Byte; // war "MB3274"
MB3275 : Byte; // war "MB3275"
MB3280 : Byte; // war "MB3280"
MB3281 : Byte; // war "MB3281"
MB3285 : Byte; // war "MB3285"
MB3286 : Byte; // war "MB3286"
MB3290 : Byte; // war "MB3290"
MB3291 : Byte; // war "MB3291"
MB3292 : Byte; // war "MB3292"
MB3293 : Byte; // war "MB3293"
MB3302 : Byte; // war "MB3302"
MB3303 : Byte; // war "MB3303"
MB3304 : Byte; // war "MB3304"
MB3305 : Byte; // war "MB3305"
MB3310 : Byte; // war "MB3310"
MB3311 : Byte; // war "MB3311"
MB3315 : Byte; // war "MB3315"
MB3316 : Byte; // war "MB3316"
MB3320 : Byte; // war "MB3320"
MB3321 : Byte; // war "MB3321"
MB3322 : Byte; // war "MB3322"
MB3323 : Byte; // war "MB3323"
MB3331 : Byte; // war "MB3331"
MB3332 : Byte; // war "MB3332"
MB3333 : Byte; // war "MB3333"
MB3334 : Byte; // war "MB3334"
MB3335 : Byte; // war "MB3335"
MB3340 : Byte; // war "MB3340"
MB3341 : Byte; // war "MB3341"
MB3345 : Byte; // war "MB3345"
MB3346 : Byte; // war "MB3346"
MB3350 : Byte; // war "MB3350"
MB3351 : Byte; // war "MB3351"
MB3352 : Byte; // war "MB3352"
MB3353 : Byte; // war "MB3353"
MB3361 : Byte; // war "MB3361"
MB3362 : Byte; // war "MB3362"
MB3363 : Byte; // war "MB3363"
MB3364 : Byte; // war "MB3364"
MB3365 : Byte; // war "MB3365"
MB3370 : Byte; // war "MB3370"
MB3371 : Byte; // war "MB3371"
MB3375 : Byte; // war "MB3375"
MB3376 : Byte; // war "MB3376"
MB3380 : Byte; // war "MB3380"
MB3381 : Byte; // war "MB3381"
MB3382 : Byte; // war "MB3382"
MB3383 : Byte; // war "MB3383"
MB3390 : Byte; // war "MB3390"
MB3392 : Byte; // war "MB3392"
MB3393 : Byte; // war "MB3393"
MB3394 : Byte; // war "MB3394"
MB3395 : Byte; // war "MB3395"
MB3400 : Byte; // war "MB3400"
MB3401 : Byte; // war "MB3401"
MB3405 : Byte; // war "MB3405"
MB3406 : Byte; // war "MB3406"
MB3410 : Byte; // war "MB3410"
MB3411 : Byte; // war "MB3411"
MB3412 : Byte; // war "MB3412"
MB3413 : Byte; // war "MB3413"
MB3421 : Byte; // war "MB3421"
MB3422 : Byte; // war "MB3422"
MB3423 : Byte; // war "MB3423"
MB3424 : Byte; // war "MB3424"
MB3425 : Byte; // war "MB3425"
MB3430 : Byte; // war "MB3430"
MB3431 : Byte; // war "MB3431"
MB3435 : Byte; // war "MB3435"
MB3436 : Byte; // war "MB3436"
MB3440 : Byte; // war "MB3440"
MB3441 : Byte; // war "MB3441"
MB3442 : Byte; // war "MB3442"
MB3443 : Byte; // war "MB3443"
MB3450 : Byte; // war "MB3450"
MB3452 : Byte; // war "MB3452"
MB3453 : Byte; // war "MB3453"
MB3454 : Byte; // war "MB3454"
MB3455 : Byte; // war "MB3455"
MB3456 : Byte; // war "MB3456"
MB3460 : Byte; // war "MB3460"
MB3461 : Byte; // war "MB3461"
MB3465 : Byte; // war "MB3465"
MB3466 : Byte; // war "MB3466"
MB3470 : Byte; // war "MB3470"
MB3471 : Byte; // war "MB3471"
MB3472 : Byte; // war "MB3472"
MB3473 : Byte; // war "MB3473"
MB3481 : Byte; // war "MB3481"
MB3482 : Byte; // war "MB3482"
MB3487 : Byte; // war "MB3487"
MB3540 : Byte; // war "MB3540"
MB3543 : Byte; // war "MB3543"
END_VAR
VAR
Schleuse_3456 : "MZylinder"; //
Schleuse_3481 : "MZylinder"; //
Weiche_3482 : "MZylinder"; //
Weiche_3361 : "MZylinder"; //
Schleuse_3487 : "MZylinder"; //
Schleuse_Vor_Einfahrt_PS5 : "MZylinder"; //
Weiche_Einfahrt_PS5 : "MZylinder"; //
Schleuse_Vorstau_PS5 : "MZylinder";
Weiche_zu_Platz1_PS5 : "MZylinder"; //
Weiche_zu_Platz2_PS5 : "MZylinder";
Schleuse_Platz1_PS5 : "MZylinder";
Schleuse_Platz2_PS5 : "MZylinder";
Schleuse_Platz3_PS5 : "MZylinder";
Weiche_von_Platz1_PS5 : "MZylinder"; //
Weiche_von_Platz2_PS5 : "MZylinder";
Schleuse_Ausfahrt_PS5 : "MZylinder"; //
Schleuse_Vor_Ausfahrt_PS5 : "MZylinder"; //
Weiche_Ausfahrt_PS5 : "MZylinder"; //
Schleuse_Vor_Einfahrt_PS4 : "MZylinder"; //
Weiche_Einfahrt_PS4 : "MZylinder"; //
Schleuse_Vorstau_PS4 : "MZylinder";
Weiche_zu_Platz1_PS4 : "MZylinder"; //
Weiche_zu_Platz2_PS4 : "MZylinder";
Schleuse_Platz1_PS4 : "MZylinder";
Schleuse_Platz2_PS4 : "MZylinder";
Schleuse_Platz3_PS4 : "MZylinder";
Weiche_von_Platz1_PS4 : "MZylinder"; //
Weiche_von_Platz2_PS4 : "MZylinder";
Schleuse_Ausfahrt_PS4 : "MZylinder"; //
Weiche_Ausfahrt_PS4 : "MZylinder"; //
Schleuse_Vor_Einfahrt_PS3 : "MZylinder"; //
Weiche_Einfahrt_PS3 : "MZylinder"; //
Schleuse_Vorstau_PS3 : "MZylinder";
Weiche_zu_Platz1_PS3 : "MZylinder"; //
Weiche_zu_Platz2_PS3 : "MZylinder";
Schleuse_Platz1_PS3 : "MZylinder";
Schleuse_Platz2_PS3 : "MZylinder";
Schleuse_Platz3_PS3 : "MZylinder";
Weiche_von_Platz1_PS3 : "MZylinder"; //
Weiche_von_Platz2_PS3 : "MZylinder";
Schleuse_Ausfahrt_PS3 : "MZylinder"; //
Schleuse_Vor_Ausfahrt_PS3 : "MZylinder"; //
Weiche_Ausfahrt_PS3 : "MZylinder"; //
Schleuse_Vor_Einfahrt_PS2 : "MZylinder"; //
Weiche_Einfahrt_PS2 : "MZylinder"; //
Schleuse_Vorstau_PS2 : "MZylinder";
Weiche_zu_Platz1_PS2 : "MZylinder"; //
Weiche_zu_Platz2_PS2 : "MZylinder";
Schleuse_Platz1_PS2 : "MZylinder";
Schleuse_Platz2_PS2 : "MZylinder";
Schleuse_Platz3_PS2 : "MZylinder";
Weiche_von_Platz1_PS2 : "MZylinder"; //
Weiche_von_Platz2_PS2 : "MZylinder";
Schleuse_Ausfahrt_PS2 : "MZylinder"; //
Weiche_Ausfahrt_PS2 : "MZylinder"; //
Schleuse_Vor_Einfahrt_PS1 : "MZylinder"; //
Weiche_Einfahrt_PS1 : "MZylinder"; //
Schleuse_Vorstau_PS1 : "MZylinder";
Weiche_zu_Platz1_PS1 : "MZylinder"; //
Weiche_zu_Platz2_PS1 : "MZylinder";
Schleuse_Platz1_PS1 : "MZylinder";
Schleuse_Platz2_PS1 : "MZylinder";
Schleuse_Platz3_PS1 : "MZylinder";
Weiche_von_Platz1_PS1 : "MZylinder"; //
Weiche_von_Platz2_PS1 : "MZylinder";
Schleuse_Ausfahrt_PS1 : "MZylinder"; //
Schleuse_Vor_Ausfahrt_PS1 : "MZylinder"; //
Weiche_Ausfahrt_PS1 : "MZylinder"; //
Schleuse_Vor_Einfahrt_MPS3 : "MZylinder"; //
Weiche_Einfahrt_MPS3 : "MZylinder"; //
Schleuse_Vorstau_MPS3 : "MZylinder";
Weiche_zu_Platz1_MPS3 : "MZylinder"; //
Weiche_zu_Platz2_MPS3 : "MZylinder";
Schleuse_Platz1_MPS3 : "MZylinder";
Schleuse_Platz2_MPS3 : "MZylinder";
Schleuse_Platz3_MPS3 : "MZylinder";
Weiche_von_Platz1_MPS3 : "MZylinder"; //
Weiche_von_Platz2_MPS3 : "MZylinder";
Schleuse_Ausfahrt_MPS3 : "MZylinder"; //
Schleuse_Vor_Ausfahrt_MPS3 : "MZylinder"; //
Weiche_Ausfahrt_MPS3 : "MZylinder"; //
Schleuse_Vor_Einfahrt_MPS2 : "MZylinder"; //
Weiche_Einfahrt_MPS2 : "MZylinder"; //
Schleuse_Vorstau_MPS2 : "MZylinder";
Weiche_zu_Platz1_MPS2 : "MZylinder"; //
Weiche_zu_Platz2_MPS2 : "MZylinder";
Schleuse_Platz1_MPS2 : "MZylinder";
Schleuse_Platz2_MPS2 : "MZylinder";
Schleuse_Platz3_MPS2 : "MZylinder";
Weiche_von_Platz1_MPS2 : "MZylinder"; //
Weiche_von_Platz2_MPS2 : "MZylinder";
Schleuse_Ausfahrt_MPS2 : "MZylinder"; //
Schleuse_Vor_Ausfahrt_MPS2 : "MZylinder"; //
Weiche_Ausfahrt_MPS2 : "MZylinder"; //
Schleuse_Vor_Einfahrt_MPS1 : "MZylinder"; //
Weiche_Einfahrt_MPS1 : "MZylinder"; //
Schleuse_Vorstau_MPS1 : "MZylinder";
Weiche_zu_Platz1_MPS1 : "MZylinder"; //
Weiche_zu_Platz2_MPS1 : "MZylinder";
Schleuse_Platz1_MPS1 : "MZylinder";
Schleuse_Platz2_MPS1 : "MZylinder";
Schleuse_Platz3_MPS1 : "MZylinder";
Weiche_von_Platz1_MPS1 : "MZylinder"; //
Weiche_von_Platz2_MPS1 : "MZylinder";
Schleuse_Ausfahrt_MPS1 : "MZylinder"; //
Schleuse_Vor_Ausfahrt_MPS1 : "MZylinder"; //
Weiche_Ausfahrt_MPS1 : "MZylinder"; //
Schleuse_3540 : "MZylinder"; //
Schleuse_3543 : "MZylinder"; //
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UH06 / A01
#Auto := #DAMR_Bereich.A01_UH06.Automatik;
IF #DAMR_Bereich.A01_UH06.BereichErr THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_3456
#Schleuse_3456(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3456);
END_REGION
REGION Schleuse_3481
#Schleuse_3481(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3481);
END_REGION
REGION Weiche_3482
#Weiche_3482(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3482);
END_REGION
REGION Weiche_3361
#Weiche_3361(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3361);
END_REGION
REGION Schleuse_3487
#Schleuse_3487(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3487);
END_REGION
REGION Schleuse_vor_Einfahrt_PS5
#Schleuse_Vor_Einfahrt_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3241);
END_REGION
REGION Weiche_zu_PS5
#Weiche_Einfahrt_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3242);
END_REGION
REGION Schleuse_Vorstau_PS5
#Schleuse_Vorstau_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3243);
END_REGION
REGION Weiche_PS5_zu_Platz1
#Weiche_zu_Platz1_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3244);
END_REGION
REGION Weiche_PS5_zu_Platz2
#Weiche_zu_Platz2_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3250);
END_REGION
REGION Schleuse_PS5_Platz1
#Schleuse_Platz1_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3245);
END_REGION
REGION Schleuse_PS5_Platz2
#Schleuse_Platz2_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3251);
END_REGION
REGION Schleuse_PS5_Platz3
#Schleuse_Platz3_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3255);
END_REGION
REGION Weiche_PS5_von_Platz1
#Weiche_von_Platz1_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3260);
END_REGION
REGION Weiche_PS5_von_Platz2
#Weiche_von_Platz2_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3256);
END_REGION
REGION Schleuse_PS5_raus
#Schleuse_Ausfahrt_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3262);
END_REGION
REGION Schleuse_vor_Ausfahrt_PS5
#Schleuse_Vor_Ausfahrt_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3265);
END_REGION
REGION Weiche_von_PS5
#Weiche_Ausfahrt_PS5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3263);
END_REGION
REGION Schleuse_vor_Einfahrt_PS4
#Schleuse_Vor_Einfahrt_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3271);
END_REGION
REGION Weiche_zu_PS4
#Weiche_Einfahrt_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3272);
END_REGION
REGION Schleuse_Vorstau_PS4
#Schleuse_Vorstau_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3273);
END_REGION
REGION Weiche_PS4_zu_Platz1
#Weiche_zu_Platz1_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3274);
END_REGION
REGION Weiche_PS4_zu_Platz2
#Weiche_zu_Platz2_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3280);
END_REGION
REGION Schleuse_PS4_Platz1
#Schleuse_Platz1_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3275);
END_REGION
REGION Schleuse_PS4_Platz2
#Schleuse_Platz2_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3281);
END_REGION
REGION Schleuse_PS4_Platz3
#Schleuse_Platz3_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3285);
END_REGION
REGION Weiche_PS4_von_Platz1
#Weiche_von_Platz1_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3290);
END_REGION
REGION Weiche_PS4_von_Platz2
#Weiche_von_Platz2_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3286);
END_REGION
REGION Schleuse_PS4_raus
#Schleuse_Ausfahrt_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3291);
END_REGION
REGION Weiche_von_PS4
#Weiche_Ausfahrt_PS4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3292);
END_REGION
REGION Schleuse_vor_Einfahrt_PS3
#Schleuse_Vor_Einfahrt_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3293);
END_REGION
REGION Weiche_zu_PS3
#Weiche_Einfahrt_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3302);
END_REGION
REGION Schleuse_Vorstau_PS3
#Schleuse_Vorstau_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3303);
END_REGION
REGION Weiche_PS3_zu_Platz1
#Weiche_zu_Platz1_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3304);
END_REGION
REGION Weiche_PS3_zu_Platz2
#Weiche_zu_Platz2_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3310);
END_REGION
REGION Schleuse_PS3_Platz1
#Schleuse_Platz1_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3305);
END_REGION
REGION Schleuse_PS3_Platz2
#Schleuse_Platz2_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3311);
END_REGION
REGION Schleuse_PS3_Platz3
#Schleuse_Platz3_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3315);
END_REGION
REGION Weiche_PS3_von_Platz1
#Weiche_von_Platz1_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3320);
END_REGION
REGION Weiche_PS3_von_Platz2
#Weiche_von_Platz2_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3316);
END_REGION
REGION Schleuse_PS3_raus
#Schleuse_Ausfahrt_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3321);
END_REGION
REGION Schleuse_vor_Ausfahrt_PS3
#Schleuse_Vor_Ausfahrt_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3323);
END_REGION
REGION Weiche_von_PS3
#Weiche_Ausfahrt_PS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3322);
END_REGION
REGION Schleuse_vor_Einfahrt_PS2
#Schleuse_Vor_Einfahrt_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3331);
END_REGION
REGION Weiche_zu_PS2
#Weiche_Einfahrt_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3332);
END_REGION
REGION Schleuse_Vorstau_PS2
#Schleuse_Vorstau_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3333);
END_REGION
REGION Weiche_PS2_zu_Platz1
#Weiche_zu_Platz1_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3334);
END_REGION
REGION Weiche_PS2_zu_Platz2
#Weiche_zu_Platz2_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3340);
END_REGION
REGION Schleuse_PS2_Platz1
#Schleuse_Platz1_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3335);
END_REGION
REGION Schleuse_PS2_Platz2
#Schleuse_Platz2_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3341);
END_REGION
REGION Schleuse_PS2_Platz3
#Schleuse_Platz3_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3345);
END_REGION
REGION Weiche_PS2_von_Platz1
#Weiche_von_Platz1_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3350);
END_REGION
REGION Weiche_PS2_von_Platz2
#Weiche_von_Platz2_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3346);
END_REGION
REGION Schleuse_PS2_raus
#Schleuse_Ausfahrt_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3351);
END_REGION
REGION Weiche_von_PS2
#Weiche_Ausfahrt_PS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3352);
END_REGION
REGION Schleuse_vor_Einfahrt_PS1
#Schleuse_Vor_Einfahrt_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3353);
END_REGION
REGION Weiche_zu_PS1
#Weiche_Einfahrt_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3362);
END_REGION
REGION Schleuse_Vorstau_PS1
#Schleuse_Vorstau_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3363);
END_REGION
REGION Weiche_PS1_zu_Platz1
#Weiche_zu_Platz1_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3364);
END_REGION
REGION Weiche_PS1_zu_Platz2
#Weiche_zu_Platz2_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3370);
END_REGION
REGION Schleuse_PS1_Platz1
#Schleuse_Platz1_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3365);
END_REGION
REGION Schleuse_PS1_Platz2
#Schleuse_Platz2_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3371);
END_REGION
REGION Schleuse_PS1_Platz3
#Schleuse_Platz3_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3375);
END_REGION
REGION Weiche_PS1_von_Platz1
#Weiche_von_Platz1_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3380);
END_REGION
REGION Weiche_PS1_von_Platz2
#Weiche_von_Platz2_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3376);
END_REGION
REGION Schleuse_PS1_raus
#Schleuse_Ausfahrt_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3381);
END_REGION
REGION Schleuse_vor_Ausfahrt_PS1
#Schleuse_Vor_Ausfahrt_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3383);
END_REGION
REGION Weiche_von_PS1
#Weiche_Ausfahrt_PS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3382);
END_REGION
REGION Schleuse_vor_Einfahrt_MPS3
#Schleuse_Vor_Einfahrt_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3390);
END_REGION
REGION Weiche_zu_MPS3
#Weiche_Einfahrt_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3392);
END_REGION
REGION Schleuse_Vorstau_MPS3
#Schleuse_Vorstau_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3393);
END_REGION
REGION Weiche_MPS3_zu_Platz1
#Weiche_zu_Platz1_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3394);
END_REGION
REGION Weiche_MPS3_zu_Platz2
#Weiche_zu_Platz2_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3400);
END_REGION
REGION Schleuse_MPS3_Platz1
#Schleuse_Platz1_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3395);
END_REGION
REGION Schleuse_MPS3_Platz2
#Schleuse_Platz2_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3401);
END_REGION
REGION Schleuse_MPS3_Platz3
#Schleuse_Platz3_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3405);
END_REGION
REGION Weiche_MPS3_von_Platz1
#Weiche_von_Platz1_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3410);
END_REGION
REGION Weiche_MPS3_von_Platz2
#Weiche_von_Platz2_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3406);
END_REGION
REGION Schleuse_MPS3_raus
#Schleuse_Ausfahrt_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3411);
END_REGION
REGION Schleuse_vor_Ausfahrt_MPS3
#Schleuse_Vor_Ausfahrt_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3413);
END_REGION
REGION Weiche_von_MPS3
#Weiche_Ausfahrt_MPS3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3412);
END_REGION
REGION Schleuse_vor_Einfahrt_MPS2
#Schleuse_Vor_Einfahrt_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3421);
END_REGION
REGION Weiche_zu_MPS2
#Weiche_Einfahrt_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3422);
END_REGION
REGION Schleuse_Vorstau_MPS2
#Schleuse_Vorstau_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3423);
END_REGION
REGION Weiche_MPS2_zu_Platz1
#Weiche_zu_Platz1_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3424);
END_REGION
REGION Weiche_MPS2_zu_Platz2
#Weiche_zu_Platz2_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3430);
END_REGION
REGION Schleuse_MPS2_Platz1
#Schleuse_Platz1_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3425);
END_REGION
REGION Schleuse_MPS2_Platz2
#Schleuse_Platz2_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3431);
END_REGION
REGION Schleuse_MPS2_Platz3
#Schleuse_Platz3_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3435);
END_REGION
REGION Weiche_MPS2_von_Platz1
#Weiche_von_Platz1_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3440);
END_REGION
REGION Weiche_MPS2_von_Platz2
#Weiche_von_Platz2_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3436);
END_REGION
REGION Schleuse_MPS2_raus
#Schleuse_Ausfahrt_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3441);
END_REGION
REGION Schleuse_vor_Ausfahrt_MPS2
#Schleuse_Vor_Ausfahrt_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3443);
END_REGION
REGION Weiche_von_MPS2
#Weiche_Ausfahrt_MPS2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3442);
END_REGION
REGION Schleuse_vor_Einfahrt_MPS1
#Schleuse_Vor_Einfahrt_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3450);
END_REGION
REGION Weiche_zu_MPS1
#Weiche_Einfahrt_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3452);
END_REGION
REGION Schleuse_Vorstau_MPS1
#Schleuse_Vorstau_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3453);
END_REGION
REGION Weiche_MPS1_zu_Platz1
#Weiche_zu_Platz1_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3454);
END_REGION
REGION Weiche_MPS1_zu_Platz2
#Weiche_zu_Platz2_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3460);
END_REGION
REGION Schleuse_MPS1_Platz1
#Schleuse_Platz1_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3455);
END_REGION
REGION Schleuse_MPS1_Platz2
#Schleuse_Platz2_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3461);
END_REGION
REGION Schleuse_MPS1_Platz3
#Schleuse_Platz3_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3465);
END_REGION
REGION Weiche_MPS1_von_Platz1
#Weiche_von_Platz1_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3470);
END_REGION
REGION Weiche_MPS1_von_Platz2
#Weiche_von_Platz2_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3466);
END_REGION
REGION Schleuse_MPS1_raus
#Schleuse_Ausfahrt_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3471);
END_REGION
REGION Schleuse_vor_Ausfahrt_MPS1
#Schleuse_Vor_Ausfahrt_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3473);
END_REGION
REGION Weiche_von_MPS1
#Weiche_Ausfahrt_MPS1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3472);
END_REGION
REGION Schleuse_3456
#Schleuse_3540(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3540);
END_REGION
REGION Schleuse_3543
#Schleuse_3543(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3543);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,44 @@
FUNCTION "BCD (4stellig)_to_INT" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BCD_Wert : Word;
END_VAR
VAR_OUTPUT
Int_Wert : Int;
END_VAR
VAR_TEMP
BCD_Vergleich : Word;
Multiplikator : Int;
END_VAR
BEGIN
REGION Rückmeldung
#Int_Wert := 0;
#Multiplikator := 1;
END_REGION
REGION BCD-Wert wandeln
#BCD_Vergleich := #BCD_Wert;
#Int_Wert := ((#BCD_Wert AND 16#000F) * #Multiplikator) + #Int_Wert;
#Multiplikator := #Multiplikator * 16;
#BCD_Vergleich := SHR(IN := #BCD_Vergleich, N := 4);
#Int_Wert := ((SHR(IN := #BCD_Vergleich, N := 4) AND 16#000F) * #Multiplikator) + #Int_Wert;
#Multiplikator := #Multiplikator * 16;
#BCD_Vergleich := SHR(IN := #BCD_Vergleich, N := 4);
#Int_Wert := ((SHR(IN := #BCD_Vergleich, N := 4) AND 16#000F) * #Multiplikator) + #Int_Wert;
#Multiplikator := #Multiplikator * 16;
#BCD_Vergleich := SHR(IN := #BCD_Vergleich, N := 4);
#Int_Wert := ((SHR(IN := #BCD_Vergleich, N := 4) AND 16#000F) * #Multiplikator) + #Int_Wert;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,54 @@
FUNCTION "DL_Einsprung" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Bereich_DL : Int; // Nur für Stammdaten =1!
ID : Int;
MW224 : Word; // war "MW224"
MW226 : Word; // war "MW226"
END_VAR
VAR_OUTPUT
Dyn.DB : Int;
AR_Start : DInt;
Error : Bool;
Dyn_DB : Bool; // war "Dyn.DB"
MW200 : Word; // war "MW200"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
MW196 : Word; // war "MW196"
END_VAR
BEGIN
REGION Inittialisierung
#Dyn_DB := 0;
#AR_Start := 0;
#Error := TRUE;
END_REGION
REGION ID suchen
#MW200 := #ID;
"DatenOut"(SSDB := #Bereich_DL, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M200.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #MW196); // Eintrag lesen
#Error := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
END_REGION
REGION Daten übergeben
#Dyn_DB := #MW224;
IF #MW224 <= 0 THEN
#Error := TRUE;
RETURN;
END_IF;
#AR_Start := INT_TO_DINT(#MW226);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,30 @@
FUNCTION_BLOCK "Daten_Host_senden"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Port1_SendFIFO : Word; // war "Port1_SendFIFO"
END_VAR
VAR_OUTPUT
g_6_HMI_Err_UH06_AMR : Word; // war "6_HMI_Err_UH06_AMR"
END_VAR
VAR
Port1_senden { S7_SetPoint := 'False'} : "Port1_Daten_senden";
END_VAR
BEGIN
REGION Daten über Port 1 senden
#Port1_senden();
IF #Port1_SendFIFO.ANZAHL > 70 THEN #g_6_HMI_Err_UH06_AMR.Kommunikation.SendFIFO_Port1 := TRUE; END_IF;
IF #Port1_SendFIFO.ANZAHL < 40 THEN #g_6_HMI_Err_UH06_AMR.Kommunikation.SendFIFO_Port1 := FALSE; END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,30 @@
FUNCTION_BLOCK "Daten_von_Host_empfangen"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
M8999_0 : Bool; // war "M8999.0"
MW196 : Word; // war "MW196"
END_VAR
VAR
Port1_empfangen { S7_SetPoint := 'False'} : "Port1_Daten_empfangen";
END_VAR
BEGIN
REGION Testdaten übergeben
IF #M8999_0 THEN #M8999_0 := FALSE; END_IF;
IF #M8999_0 THEN "DBMOV"(QuellDB := 8999, QuellDW := 0, ZielDB := 9001, ZielDW := 0, Anzahl_DW := 15, RE_VAL := #MW196); END_IF;
END_REGION
REGION Daten über Port 1 empfangen
#Port1_empfangen();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,54 @@
FUNCTION "HWtoAMRZielFC" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
MW190 : Word; // war "MW190"
END_VAR
VAR_OUTPUT
M180_6 : Bool; // war "M180.6"
END_VAR
VAR_TEMP
Ziel_hex : Word;
Ziel_int : Int;
Zielebene : Word;
Error : Byte;
Position : Int;
Lager_DB : Int;
Lager_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
SSDW : Int;
EndZiel : Word;
Variante : Int;
AbrufID : DInt;
Fahrlisten_TrolleyID : DInt;
Fahrlisten_AbrufID : DInt;
Fahrlisten_Lager : Int;
Trolley_unbekannt : Bool; // Trolley ist nicht in DL
Express_Abruf : Bool;
END_VAR
BEGIN
REGION Rückmeldung
#M180_6 := FALSE;
END_REGION
REGION CASE #MW190
CASE #MW190 OF
3004: // Schleuse 3004: (BST 3)
#M180_6 := TRUE;
3565: // Schleuse 3565: (BST 4)
#M180_6 := TRUE;
END_CASE;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,19 @@
FUNCTION "HWtoAMR_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DHWtoAMR_Sensoren"();
"DHWtoAMR_OmniFahren"();
"DHWtoAMR_Zylinder"();
"DHWtoAMR_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,214 @@
FUNCTION_BLOCK "HWtoAMR_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_6_HMI_Err_UH06_AMR : Word; // war "6_HMI_Err_UH06_AMR"
END_VAR
VAR_IN_OUT
BG3000 : Word; // war "BG3000"
BG3001 : Word; // war "BG3001"
BG3002 : Word; // war "BG3002"
BG3004 : Word; // war "BG3004"
BG3005 : Word; // war "BG3005"
BG3006 : Word; // war "BG3006"
BG3017 : Word; // war "BG3017"
BG3061 : Word; // war "BG3061"
BG3062 : Word; // war "BG3062"
BG3063 : Word; // war "BG3063"
BG3555 : Word; // war "BG3555"
BG3556 : Word; // war "BG3556"
BG3557 : Word; // war "BG3557"
BG3561 : Word; // war "BG3561"
BG3562 : Word; // war "BG3562"
BG3563 : Word; // war "BG3563"
BG3564 : Word; // war "BG3564"
BG3565 : Word; // war "BG3565"
BG3566 : Word; // war "BG3566"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DHWtoAMR_Antriebe : Word; // war "DHWtoAMR_Antriebe"
DHWtoAMR_Sensoren : Word; // war "DHWtoAMR_Sensoren"
DHWtoAMR_Zylinder : Word; // war "DHWtoAMR_Zylinder"
DSchnittstelle_zu_Outbound : Word; // war "DSchnittstelle_zu_Outbound"
MA0061 : Bool; // war "MA0061"
MA0116 : Bool; // war "MA0116"
MA0130 : Bool; // war "MA0130"
MA0131 : Bool; // war "MA0131"
MA0203 : Bool; // war "MA0203"
MA0204 : Bool; // war "MA0204"
MA0205 : Bool; // war "MA0205"
MB3000 : Byte; // war "MB3000"
MB3004 : Byte; // war "MB3004"
MB3005 : Byte; // war "MB3005"
MB3061 : Byte; // war "MB3061"
MB3562 : Byte; // war "MB3562"
MB3565 : Byte; // war "MB3565"
END_VAR
VAR
Frei200 { S7_SetPoint := 'True'} : Array[1..100] of Int;
Schleuse_3061 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_3005 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3004 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3000 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3555 : "MHMOmniBereich_Plus";
Schleuse_3562 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3556 : "MHMOmniBereich_Plus";
Schleuse_3565 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Übergang_3063 : "MHMÜbergang_ohne_Schleuse_AMR";
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3061.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3005.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3004.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3000.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Bereich_3555.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3562.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Bereich_3556.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3565.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3061.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
#Schleuse_3005.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
#Schleuse_3004.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
#Schleuse_3000.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Bereich_3555.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Schleuse_3562.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Bereich_3556.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Schleuse_3565.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
END_REGION
REGION Störungen quittieren UZ6104
#ErrQuit := (#DAMR_Bereich.A01_UZ6104.StOk_aktiv OR #DAMR_Bereich.A01_UC061.StOk_aktiv) OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Übergang 3063 (Übernahme von Outbound / UH07)
IF #DSchnittstelle_zu_Outbound.From_UH07.MA0203_A_start THEN #DHWtoAMR_Antriebe.MA0203.Stat.A_start := TRUE; END_IF;
IF #DSchnittstelle_zu_Outbound.From_UH07.MA0203_A_vor THEN #DHWtoAMR_Antriebe.MA0203.Stat.A_vor := TRUE; END_IF;
#B_vor_Schleuse := #DSchnittstelle_zu_Outbound.From_UH07.MA0203_A_start OR #DSchnittstelle_zu_Outbound.From_UH07.MA0203_A_vor;
#DSchnittstelle_zu_Outbound.To_UH07.MA0203_aktiv := #MA0203;
#DSchnittstelle_zu_Outbound.To_UH07.MA0203_kein_Stau := (#Schleuse_3061.Dyn.Sk.Bereich_ok AND #Schleuse_3061.Dyn.Sk.Auto_akt) AND NOT (#Übergang_3063.Am_Übergang.Stat.B_Akt);
#Übergang_3063(ErrQuit := #ErrQuit, B_Am_Übergang := #BG3063, B_Stau_Antrieb_plus := #DHWtoAMR_Sensoren.Stau_BG3062.Stat.B_Akt, Antrieb_aktiv := #MA0203, Antrieb_plus_aktiv := #MA0204, Antrieb_vor := #DHWtoAMR_Antriebe.MA0203.Stat.A_vor, Antrieb_start := #DHWtoAMR_Antriebe.MA0203.Stat.A_start, Antrieb_stop := #DHWtoAMR_Antriebe.MA0203.Stat.Stop_vor, Antrieb_plus_vor := #DHWtoAMR_Antriebe.MA0204.Stat.A_vor, Antrieb_plus_start := #DHWtoAMR_Antriebe.MA0204.Stat.A_start);
END_REGION
REGION Störungen anzeigen UZ6104
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ6104.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UC061.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ6102
#ErrQuit := (#DAMR_Bereich.A01_UZ6102.StOk_aktiv OR #DAMR_Bereich.A01_UC061.StOk_aktiv) OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Schleuse 3061
#Schleuse_3061(Schleusen_Nr := 3061, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3062, B_InSchleuse := #BG3061, B_Zähl := #BG3006, B_Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3006.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0204, Antrieb_plus_aktiv := #MA0205, Schleuse_geöffnet := #MB3061, Y_Schleuse_Auf := #DHWtoAMR_Zylinder.Schleuse_3061.Stat.Ast, Error := %DB608.DBW212, Antrieb_Schleuse_vor := #DHWtoAMR_Antriebe.MA0204.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoAMR_Antriebe.MA0204.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoAMR_Antriebe.MA0204.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoAMR_Antriebe.MA0204.Stat.A_PS, Antrieb_plus_vor := #DHWtoAMR_Antriebe.MA0205.Stat.A_vor, Antrieb_plus_start := #DHWtoAMR_Antriebe.MA0205.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ6102
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ6102.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UC061.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ6102/6101
#ErrQuit := (#DAMR_Bereich.A01_UZ6102.StOk_aktiv OR #DAMR_Bereich.A01_UC061.StOk_aktiv) OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Schleuse 3005
#Schleuse_3005(Schleusen_Nr := 3005, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3006, B_InSchleuse := #BG3005, B_AusSchleuse := #BG3017, B_Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3017.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0205, Schleuse_geöffnet := #MB3005, Y_Schleuse_Auf := #DHWtoAMR_Zylinder.Schleuse_3005.Stat.Ast, Error := %DB608.DBW204, Antrieb_Schleuse_vor := #DHWtoAMR_Antriebe.MA0205.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoAMR_Antriebe.MA0205.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoAMR_Antriebe.MA0205.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoAMR_Antriebe.MA0205.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // da schon oben verwendet | da schon oben verwendet
END_REGION
REGION Störungen anzeigen UZ6102/6101
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ6102.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UC061.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ6101
#ErrQuit := #DAMR_Bereich.A01_UC061.StOk_aktiv OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Schleuse 3004 (vor BST 3)
#Fahren_Ok := (((NOT (#g_6_HMI_Err_UH06_AMR.System.Gesamt_Feueralarm) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST3_Feueralarm)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST3_Geschlossen)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST3_Störung)) AND #Schleuse_3000.Dyn.Sk.Bereich_ok;
#Schleuse_3004(Schleusen_Nr := 3004, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3017, B_InSchleuse := #BG3004, B_AusSchleuse := #BG3002, B_Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3002.Stat.B_Akt, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := #MA0205, Schleuse_geöffnet := #MB3004, Y_Schleuse_Auf := #DHWtoAMR_Zylinder.Schleuse_3004.Stat.Ast, Error := %DB608.DBW202, Antrieb_Schleuse_vor := #DHWtoAMR_Antriebe.MA0205.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoAMR_Antriebe.MA0205.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoAMR_Antriebe.MA0205.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoAMR_Antriebe.MA0205.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Kein Antrieb
END_REGION
REGION Störungen anzeigen UZ6101
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UC061.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ0620
#ErrQuit := #DAMR_Bereich.A01_UZ0620.StOk_aktiv OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Schleuse 3000
#Schleuse_3000(Schleusen_Nr := 3000, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3002, B_InSchleuse := #BG3000, B_AusSchleuse := #BG3001, B_Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3001.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0130, Schleuse_geöffnet := #MB3000, RestZeit_Bereich_plus := #Bereich_3555.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoAMR_Zylinder.Schleuse_3000.Stat.Ast, Error := %DB608.DBW200, Antrieb_Schleuse_vor := , Antrieb_plus_vor := #Bereich_3555.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz); // Kein Antrieb
END_REGION
REGION Bereich 3555
#B_vor_Schleuse := #BG3001 AND #MB3000;
#Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3561.Stat.B_Akt OR #DHWtoAMR_Sensoren.Stau_BG3557.Stat.B_Akt;
#Bereich_3555(Bereichs_Nr := 3555, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3555, B_Zähl := #BG3557, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0130, Antrieb_plus_aktiv := #MA0131, Antrieb_Bereich_vor := #DHWtoAMR_Antriebe.MA0130.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoAMR_Antriebe.MA0130.Stat.Stop_vor, Error := %DB608.DBW172, Antrieb_Bereich_start := #DHWtoAMR_Antriebe.MA0130.Stat.A_start, Antrieb_plus_vor := #DHWtoAMR_Antriebe.MA0131.Stat.A_vor, Antrieb_plus_start := #DHWtoAMR_Antriebe.MA0131.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3562
#Schleuse_3562(Schleusen_Nr := 3562, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3561, B_InSchleuse := #BG3562, B_AusSchleuse := #BG3563, B_Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3563.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0131, Antrieb_plus_aktiv := #MA0116, Schleuse_geöffnet := #MB3562, RestZeit_Bereich_plus := #Bereich_3556.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoAMR_Zylinder.Schleuse_3562.Stat.Ast, Error := %DB608.DBW358, Antrieb_Schleuse_vor := #DHWtoAMR_Antriebe.MA0131.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoAMR_Antriebe.MA0131.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoAMR_Antriebe.MA0131.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoAMR_Antriebe.MA0131.Stat.A_PS, Antrieb_plus_vor := #Bereich_3556.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Bereich 3556
#B_vor_Schleuse := #BG3563 AND #MB3562;
#Bereich_3556(Bereichs_Nr := 3556, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3556, B_Zähl := #BG3564, B_Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3564.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0116, Antrieb_plus_aktiv := 1, Antrieb_Bereich_vor := #DHWtoAMR_Antriebe.MA0116.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoAMR_Antriebe.MA0116.Stat.Stop_vor, Error := %DB608.DBW174, Antrieb_Bereich_start := #DHWtoAMR_Antriebe.MA0116.Stat.A_start, Antrieb_plus_vor := , Antrieb_minus_vor := #DHWtoAMR_Antriebe.MA0131.Stat.A_vor, hStOk := #ErrAnz); // Ohne Antrieb
END_REGION
REGION Schleuse 3565 (vor BST 4)
#Fahren_Ok := ((NOT (#g_6_HMI_Err_UH06_AMR.System.Gesamt_Feueralarm) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST4_Feueralarm)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST4_Geschlossen)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST4_Störung);
#Stau_raus := #DHWtoAMR_Sensoren.Stau_BG3566.Stat.B_Akt OR #DHWtoAMR_Sensoren.Stau_BG3567.Stat.B_Akt;
#Schleuse_3565(Schleusen_Nr := 3565, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3564, B_InSchleuse := #BG3565, B_AusSchleuse := #BG3566, B_Stau_raus := #Stau_raus, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0061, Schleuse_geöffnet := #MB3565, Y_Schleuse_Auf := #DHWtoAMR_Zylinder.Schleuse_3565.Stat.Ast, Error := %DB608.DBW360, Antrieb_Schleuse_vor := , Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0061.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0061.Stat.A_start, hStOk := #ErrAnz); // ohne Antrieb | Ohne Antrieb
END_REGION
REGION Störungen anzeigen UZ0620
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0620.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,102 @@
FUNCTION_BLOCK "HWtoAMR_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG3001 : Word; // war "BG3001"
BG3002 : Word; // war "BG3002"
BG3006 : Word; // war "BG3006"
BG3017 : Word; // war "BG3017"
BG3062 : Word; // war "BG3062"
BG3065 : Word; // war "BG3065"
BG3561 : Word; // war "BG3561"
BG3563 : Word; // war "BG3563"
BG3564 : Word; // war "BG3564"
BG3566 : Word; // war "BG3566"
BG3567 : Word; // war "BG3567"
END_VAR
VAR
An_BG3065 : "MSensoren"; // Stau am Sensor Einfahrt MA0203
Stau_BG3062 : "MSensoren"; // Stau am Sensor Einfahrt MA0204
Stau_BG3006 : "MSensoren"; // Stau am Sensor Einfahrt MA0205
Stau_BG3017 : "MSensoren"; // Stau am Sensor Mitte MA0205
Stau_BG3002 : "MSensoren"; // Stau hinter BST 3
Stau_BG3001 : "MSensoren"; // Stau hinter BST 3
Stau_BG3561 : "MSensoren"; // Stau am Sensor Einfahrt MA0060
Stau_BG3557 : "MSensoren"; // Stau am Sensor Einfahrt MA0060
Stau_BG3563 : "MSensoren"; // Stau am Sensor Einfahrt MA0116
Stau_BG3564 : "MSensoren"; // Stau am Sensor Gefälle vor BST 4
Stau_BG3566 : "MSensoren"; // Stau am Sensor Gefälle nach BST 4
Stau_BG3567 : "MSensoren"; // Stau am Sensor Einfahrt MA0061
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION An Sensor Einfahrt MA0203
#An_BG3065(ESensor := #BG3065, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0204
#Stau_BG3062(ESensor := #BG3062, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0205
#Stau_BG3006(ESensor := #BG3006, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0205
#Stau_BG3017(ESensor := #BG3017, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau hinter BST 3
#Stau_BG3002(ESensor := #BG3002, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau hinter BST 3
#Stau_BG3001(ESensor := #BG3001, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0060
#Stau_BG3561(ESensor := #BG3561, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0131
#Stau_BG3557(ESensor := #BG3561, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0116
#Stau_BG3563(ESensor := #BG3563, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Gefälle vor BST4
#Stau_BG3564(ESensor := #BG3564, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Gefälle nach BST4
#Stau_BG3566(ESensor := #BG3566, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0061
#Stau_BG3567(ESensor := #BG3567, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,74 @@
FUNCTION_BLOCK "HWtoAMR_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DAMR_Bereich : Word; // war "DAMR_Bereich"
END_VAR
VAR_IN_OUT
MB3000 : Byte; // war "MB3000"
MB3004 : Byte; // war "MB3004"
MB3005 : Byte; // war "MB3005"
MB3061 : Byte; // war "MB3061"
MB3562 : Byte; // war "MB3562"
MB3565 : Byte; // war "MB3565"
END_VAR
VAR
Schleuse_3061 : "MZylinder"; //
Schleuse_3005 : "MZylinder";
Schleuse_3004 : "MZylinder";
Schleuse_3000 : "MZylinder";
Schleuse_3562 : "MZylinder";
Schleuse_3565 : "MZylinder"; //
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC061/A01
#Auto := #DAMR_Bereich.A01_UH06.Automatik AND NOT (#DAMR_Bereich.A01_UH06.Handbetrieb);
IF ((#DAMR_Bereich.A01_UC061.BereichErr OR #DAMR_Bereich.A01_UZ6102.Area_Stop) OR #DAMR_Bereich.A01_UZ6103.Area_Stop) OR #DAMR_Bereich.A01_UZ6104.Area_Stop THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_3061
#Schleuse_3061(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3061);
END_REGION
REGION Schleuse_3005
#Schleuse_3005(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3005);
END_REGION
REGION Schleuse_3004
#Schleuse_3004(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3004);
END_REGION
REGION Übergabe des Bereichstatus System UH06 / A01
#Auto := #DAMR_Bereich.A01_UH06.Automatik AND NOT (#DAMR_Bereich.A01_UH06.Handbetrieb);
IF #DAMR_Bereich.A01_UH06_Halle4.BereichErr THEN GOTO Next2; END_IF;
END_REGION
REGION Schleuse_3000
#Schleuse_3000(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3000);
END_REGION
REGION Schleuse_3562
#Schleuse_3562(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3562);
END_REGION
REGION Schleuse_3565
#Schleuse_3565(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3565);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,19 @@
FUNCTION "HWtoOB_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DHWtoOB_Sensoren"();
"DHWtoOB_OmniFahren"();
"DHWtoOB_Zylinder"();
"DHWtoOB_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,192 @@
FUNCTION_BLOCK "HWtoOB_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_1s_Impuls : Word; // war "1s-Impuls"
g_6_HMI_Err_UH06_AMR : Word; // war "6_HMI_Err_UH06_AMR"
BG3544 : Word; // war "BG3544"
BG3570 : Word; // war "BG3570"
END_VAR
VAR_IN_OUT
BG3010 : Word; // war "BG3010"
BG3011 : Word; // war "BG3011"
BG3012 : Word; // war "BG3012"
BG3013 : Word; // war "BG3013"
BG3014 : Word; // war "BG3014"
BG3015 : Word; // war "BG3015"
BG3016 : Word; // war "BG3016"
BG3066 : Word; // war "BG3066"
BG3070 : Word; // war "BG3070"
BG3071 : Word; // war "BG3071"
BG3073 : Word; // war "BG3073"
BG3545 : Word; // war "BG3545"
BG3546 : Word; // war "BG3546"
BG3550 : Word; // war "BG3550"
BG3551 : Word; // war "BG3551"
BG3552 : Word; // war "BG3552"
BG3554 : Word; // war "BG3554"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DHWtoOB_Antriebe : Word; // war "DHWtoOB_Antriebe"
DHWtoOB_Sensoren : Word; // war "DHWtoOB_Sensoren"
DHWtoOB_Zylinder : Word; // war "DHWtoOB_Zylinder"
DSchnittstelle_zu_Outbound : Word; // war "DSchnittstelle_zu_Outbound"
MA0113 : Bool; // war "MA0113"
MA0114 : Bool; // war "MA0114"
MA0115 : Bool; // war "MA0115"
MA0117 : Bool; // war "MA0117"
MA0200 : Bool; // war "MA0200"
MA0201 : Bool; // war "MA0201"
MA0202 : Bool; // war "MA0202"
MB3010 : Byte; // war "MB3010"
MB3012 : Byte; // war "MB3012"
MB3014 : Byte; // war "MB3014"
MB3070 : Byte; // war "MB3070"
MB3073 : Byte; // war "MB3073"
MB3546 : Byte; // war "MB3546"
MB3552 : Byte; // war "MB3552"
END_VAR
VAR
Schleuse_3546 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3550 : "MHMOmniBereich_Plus";
Schleuse_3552 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3016 : "MHMOmniBereich_Plus";
Schleuse_3014 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3012 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3010 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_3070 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3073 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Trolleys_starten : Struct
Flanke : Bool;
Wartezeit_aktiv : Bool;
Timer_Wartenzeit { S7_SetPoint := 'True'} : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
tGen1_Flanke : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3546.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Bereich_3550.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3552.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Bereich_3016.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3014.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3012.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3010.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3070.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3073.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_3546.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Bereich_3550.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Schleuse_3552.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Bereich_3016.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Schleuse_3014.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06_Halle4.BereichErr);
#Schleuse_3012.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
#Schleuse_3010.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
#Schleuse_3070.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
#Schleuse_3073.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UC061.BereichErr);
END_REGION
REGION Störungen quittieren UZ0620
#ErrQuit := #DAMR_Bereich.A01_UZ0620.StOk_aktiv OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung)
#tGen1_Flanke := #MB3546 AND NOT #Trolleys_starten.Flanke;
#Trolleys_starten.Flanke := #MB3546;
IF #tGen1_Flanke THEN #Trolleys_starten.Wartezeit_aktiv := TRUE; END_IF;
IF #tGen1_Flanke THEN #Trolleys_starten.Timer_Wartenzeit := 15; END_IF;
IF NOT (#Trolleys_starten.Wartezeit_aktiv) OR ((#MB3546 AND NOT (#MA0113)) OR NOT (#g_1s_Impuls)) THEN GOTO Wait; END_IF;
#Trolleys_starten.Timer_Wartenzeit := #Trolleys_starten.Timer_Wartenzeit + -1;
IF (#Trolleys_starten.Timer_Wartenzeit + -1) > 0 THEN GOTO Wait; END_IF;
#Trolleys_starten.Wartezeit_aktiv := FALSE;
Wait: ;
END_REGION
REGION Schleuse 3546 (hinter BST 4)
#B_vor_Schleuse := #BG3570 OR #BG3544;
#Start_ok := NOT (#Trolleys_starten.Wartezeit_aktiv);
#Schleuse_3546(Schleusen_Nr := 3546, ErrQuit := #ErrQuit, B_VorSchleuse := #B_vor_Schleuse, B_InSchleuse := #BG3546, B_AusSchleuse := #BG3545, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3545.Stat.B_Akt, Start_Ok := #Start_ok, Antrieb_Schleuse_aktiv := #MA0113, Antrieb_plus_aktiv := #MA0114, Schleuse_geöffnet := #MB3546, RestZeit_Bereich_plus := #Bereich_3550.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3546.Stat.Ast, Error := %DB608.DBW354, Antrieb_Schleuse_vor := #DHWtoOB_Antriebe.MA0113.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoOB_Antriebe.MA0113.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoOB_Antriebe.MA0113.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoOB_Antriebe.MA0113.Stat.A_PS, Antrieb_plus_vor := #Bereich_3550.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Bereich 3550
#B_vor_Schleuse := #BG3545 AND #MB3546;
#Bereich_3550(Bereichs_Nr := 3550, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3550, B_Zähl := #BG3551, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3551.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0114, Antrieb_plus_aktiv := #MA0115, Antrieb_Bereich_vor := #DHWtoOB_Antriebe.MA0114.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoOB_Antriebe.MA0114.Stat.Stop_vor, Error := %DB608.DBW170, Antrieb_Bereich_start := #DHWtoOB_Antriebe.MA0114.Stat.A_start, Antrieb_plus_vor := #DHWtoOB_Antriebe.MA0115.Stat.A_vor, Antrieb_plus_start := #DHWtoOB_Antriebe.MA0115.Stat.A_start, Antrieb_minus_vor := #DHWtoOB_Antriebe.MA0113.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3552
#Schleuse_3552(Schleusen_Nr := 3552, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3551, B_InSchleuse := #BG3552, B_AusSchleuse := #BG3554, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3554.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0115, Antrieb_plus_aktiv := #MA0117, Schleuse_geöffnet := #MB3552, RestZeit_Bereich_plus := #Bereich_3016.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3552.Stat.Ast, Error := %DB608.DBW356, Antrieb_Schleuse_vor := #DHWtoOB_Antriebe.MA0115.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoOB_Antriebe.MA0115.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoOB_Antriebe.MA0115.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoOB_Antriebe.MA0115.Stat.A_PS, Antrieb_plus_vor := #Bereich_3016.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Bereich 3016
#B_vor_Schleuse := #BG3554 AND #MB3552;
#Bereich_3016(Bereichs_Nr := 3016, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3016, B_Zähl := #BG3015, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3015.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0117, Antrieb_plus_aktiv := 1, Antrieb_Bereich_vor := #DHWtoOB_Antriebe.MA0117.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoOB_Antriebe.MA0117.Stat.Stop_vor, Error := %DB608.DBW154, Antrieb_Bereich_start := #DHWtoOB_Antriebe.MA0117.Stat.A_start, Antrieb_plus_vor := , Antrieb_minus_vor := #DHWtoOB_Antriebe.MA0115.Stat.A_vor, hStOk := #ErrAnz); // Ohne Antrieb
END_REGION
REGION Schleuse 3014 (vor BST 3)
#Fahren_Ok := (((NOT (#g_6_HMI_Err_UH06_AMR.System.Gesamt_Feueralarm) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST3_Feueralarm)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST3_Geschlossen)) AND NOT (#g_6_HMI_Err_UH06_AMR.System.BST3_Störung)) AND #Schleuse_3012.Dyn.Sk.Bereich_ok;
#Stau_raus := #DHWtoOB_Sensoren.Stau_BG3013.Stat.B_Akt;
#Schleuse_3014(Schleusen_Nr := 3014, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3015, B_InSchleuse := #BG3014, B_AusSchleuse := #BG3013, B_Stau_raus := #Stau_raus, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0200, Schleuse_geöffnet := #MB3014, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3014.Stat.Ast, Error := %DB608.DBW210, Antrieb_Schleuse_vor := , Antrieb_plus_vor := #DHWtoOB_Antriebe.MA0200.Stat.A_vor, Antrieb_plus_start := #DHWtoOB_Antriebe.MA0200.Stat.A_start, hStOk := #ErrAnz); // ohne Antrieb | Ohne Antrieb
END_REGION
REGION Störungen anzeigen UZ0620
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0620.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ6101
#ErrQuit := #DAMR_Bereich.A01_UC061.StOk_aktiv OR #DAMR_Bereich.A01_UH06.StOk_aktiv;
END_REGION
REGION Schleuse 3012 (hinter BST 3)
#Schleuse_3012(Schleusen_Nr := 3012, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3013, B_InSchleuse := #BG3012, B_AusSchleuse := #BG3011, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3011.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0200, Antrieb_plus_aktiv := #MA0200, Schleuse_geöffnet := #MB3012, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3012.Stat.Ast, Error := %DB608.DBW208, Antrieb_Schleuse_vor := #DHWtoOB_Antriebe.MA0200.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoOB_Antriebe.MA0200.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoOB_Antriebe.MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoOB_Antriebe.MA0200.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // wie oben
END_REGION
REGION Schleuse 3010
#Schleuse_3010(Schleusen_Nr := 3010, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3011, B_InSchleuse := #BG3010, B_Zähl := #BG3071, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3071.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0200, Antrieb_plus_aktiv := #MA0201, Schleuse_geöffnet := #MB3010, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3010.Stat.Ast, Error := %DB608.DBW206, Antrieb_Schleuse_vor := #DHWtoOB_Antriebe.MA0200.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoOB_Antriebe.MA0200.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoOB_Antriebe.MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoOB_Antriebe.MA0200.Stat.A_PS, Antrieb_plus_vor := #DHWtoOB_Antriebe.MA0201.Stat.A_vor, Antrieb_plus_start := #DHWtoOB_Antriebe.MA0201.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3070
#Schleuse_3070(Schleusen_Nr := 3070, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3071, B_InSchleuse := #BG3070, B_AusSchleuse := #BG3066, B_Stau_raus := #DHWtoOB_Sensoren.Stau_BG3066.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0201, Antrieb_plus_aktiv := #MA0202, Schleuse_geöffnet := #MB3070, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3070.Stat.Ast, Error := %DB608.DBW214, Antrieb_Schleuse_vor := #DHWtoOB_Antriebe.MA0201.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoOB_Antriebe.MA0201.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoOB_Antriebe.MA0201.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoOB_Antriebe.MA0201.Stat.A_PS, Antrieb_plus_vor := #DHWtoOB_Antriebe.MA0202.Stat.A_vor, Antrieb_plus_start := #DHWtoOB_Antriebe.MA0202.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3073 (Übergabe an Outbound / UH07)
#DSchnittstelle_zu_Outbound.To_UH07.MA0200_A_vor := FALSE;
#DSchnittstelle_zu_Outbound.To_UH07.MA0200_A_start := FALSE;
#Schleuse_3073(Schleusen_Nr := 3073, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3066, B_InSchleuse := #BG3073, B_Zähl := #DSchnittstelle_zu_Outbound.From_UH07.BG3724_aktiv, B_Stau_raus := 0, Start_Ok := #DSchnittstelle_zu_Outbound.From_UH07.MA0200_kein_Stau, Antrieb_Schleuse_aktiv := #MA0202, Antrieb_plus_aktiv := #DSchnittstelle_zu_Outbound.From_UH07.MA0200_aktiv, Schleuse_geöffnet := #MB3073, Y_Schleuse_Auf := #DHWtoOB_Zylinder.Schleuse_3073.Stat.Ast, Error := %DB608.DBW362, Antrieb_Schleuse_vor := #DHWtoOB_Antriebe.MA0202.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoOB_Antriebe.MA0202.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoOB_Antriebe.MA0202.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoOB_Antriebe.MA0202.Stat.A_PS, Antrieb_plus_vor := #DSchnittstelle_zu_Outbound.To_UH07.MA0200_A_vor, Antrieb_plus_start := #DSchnittstelle_zu_Outbound.To_UH07.MA0200_A_start, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ6101
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UC061.StOk_blinken := TRUE;
#DAMR_Bereich.A01_UH06.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,103 @@
FUNCTION_BLOCK "HWtoOB_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG3011 : Word; // war "BG3011"
BG3013 : Word; // war "BG3013"
BG3015 : Word; // war "BG3015"
BG3066 : Word; // war "BG3066"
BG3071 : Word; // war "BG3071"
BG3544 : Word; // war "BG3544"
BG3545 : Word; // war "BG3545"
BG3551 : Word; // war "BG3551"
BG3552 : Word; // war "BG3552"
BG3554 : Word; // war "BG3554"
BG3570 : Word; // war "BG3570"
MA0114 : Bool; // war "MA0114"
MA0115 : Bool; // war "MA0115"
MA0117 : Bool; // war "MA0117"
MA0200 : Bool; // war "MA0200"
MA0201 : Bool; // war "MA0201"
MA0202 : Bool; // war "MA0202"
END_VAR
VAR
Stau_BG3570 : "MSensoren"; // Stau vor Schleuse 3540
Stau_BG3544 : "MSensoren"; // Stau am Sensor Gefälle nach BST 4
Stau_BG3545 : "MSensoren"; // Stau am Sensor Einfahrt MA0114
Stau_BG3551 : "MSensoren"; // Stau am Sensor Einfahrt MA0115
Stau_BG3552 : "MSensoren"; // Stau am Sensor Einfahrt MA0115
Stau_BG3554 : "MSensoren"; // Stau am Sensor Einfahrt MA0117
Stau_BG3015 : "MSensoren"; // Stau am Sensor Gefälle vor BST 3
Stau_BG3013 : "MSensoren"; // Stau am Sensor Gefälle nach BST 3
Stau_BG3011 : "MSensoren"; // Stau vor Schleuse 3010
Stau_BG3071 : "MSensoren"; // Stau vor Schleuse 3070
Stau_BG3066 : "MSensoren"; // Stau am Sensor Einfahrt MA0202
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau vor Schleuse 3570
#Stau_BG3570(ESensor := #BG3570, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Gefälle nach BST 4
#Stau_BG3544(ESensor := #BG3544, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := 1); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0114
#Stau_BG3545(ESensor := #BG3545, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0114); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0115
#Stau_BG3551(ESensor := #BG3551, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0115); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Ende MA0115
#Stau_BG3552(ESensor := #BG3552, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0115); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0117
#Stau_BG3554(ESensor := #BG3554, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0117); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Gefälle vor BST 3
#Stau_BG3015(ESensor := #BG3015, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := 1); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Gefälle nach BST 3
#Stau_BG3013(ESensor := #BG3013, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := 1); // Sensoren entprellen
END_REGION
REGION Stau vor Schleuse 3010
#Stau_BG3011(ESensor := #BG3011, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0200); // Sensoren entprellen
END_REGION
REGION Stau vor Schleuse 3070
#Stau_BG3071(ESensor := #BG3071, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0201); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0202
#Stau_BG3066(ESensor := #BG3066, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #MA0202); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,81 @@
FUNCTION_BLOCK "HWtoOB_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DAMR_Bereich : Word; // war "DAMR_Bereich"
END_VAR
VAR_IN_OUT
MB3010 : Byte; // war "MB3010"
MB3012 : Byte; // war "MB3012"
MB3014 : Byte; // war "MB3014"
MB3070 : Byte; // war "MB3070"
MB3073 : Byte; // war "MB3073"
MB3546 : Byte; // war "MB3546"
MB3552 : Byte; // war "MB3552"
END_VAR
VAR
Schleuse_3546 : "MZylinder"; //
Schleuse_3552 : "MZylinder";
Schleuse_3014 : "MZylinder";
Schleuse_3012 : "MZylinder";
Schleuse_3010 : "MZylinder";
Schleuse_3070 : "MZylinder"; //
Schleuse_3073 : "MZylinder"; //
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UH06 / A01
#Auto := #DAMR_Bereich.A01_UH06.Automatik AND NOT (#DAMR_Bereich.A01_UH06.Handbetrieb);
IF #DAMR_Bereich.A01_UH06_Halle4.BereichErr THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_3546
#Schleuse_3546(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3546);
END_REGION
REGION Schleuse_3552
#Schleuse_3552(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3552);
END_REGION
REGION Schleuse_3014
#Schleuse_3014(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3014);
END_REGION
REGION Übergabe des Bereichstatus System UC061/A01
#Auto := #DAMR_Bereich.A01_UH06.Automatik AND NOT (#DAMR_Bereich.A01_UH06.Handbetrieb);
#Hand := FALSE;
IF ((#DAMR_Bereich.A01_UC061.BereichErr OR #DAMR_Bereich.A01_UZ6102.Area_Stop) OR #DAMR_Bereich.A01_UZ6103.Area_Stop) OR #DAMR_Bereich.A01_UZ6104.Area_Stop THEN GOTO Next2; END_IF;
END_REGION
REGION Schleuse_3012
#Schleuse_3012(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3012);
END_REGION
REGION Schleuse_3010
#Schleuse_3010(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3010);
END_REGION
REGION Schleuse_3070
#Schleuse_3070(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3070);
END_REGION
REGION Schleuse_3073
#Schleuse_3073(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3073);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,60 @@
FUNCTION "LeerTrolley to AMR-Platz ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Erlaubter_Bereich : Word; // 0=Alles ok, A000=nur PS, B000=nur MPS ok
M198_7 : Bool; // war "M198.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
AMR_Platz : Word; // AMR-Platz ermitteln
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
MW196 : Word; // war "MW196"
END_VAR
VAR_TEMP
DLDB : Int;
Para : Word;
END_VAR
BEGIN
REGION Initialisierung
#AMR_Platz := 16#0;
#DLDB := 1112;
END_REGION
REGION Werden 12->1 Trolley(s) benötigt?
NextDL: ;
#Para := 16#F100;
"DatenOut"(SSDB := #DLDB, SSDW := 0, PARA := #Para, SEARCHDATEN := P#M200.0, RE_VAL := #MB198, OUTDATEN := P#M220.0, Position := #MW196);
IF #M198_7 THEN GOTO Check; END_IF;
// Nächst kleiner benötigte Stückzahl:
#DLDB := #DLDB + -1;
IF (#DLDB + -1) >= 1101 THEN GOTO NextDL; END_IF;
RETURN;
END_REGION
REGION Check, ob Bereich ok
IF #Erlaubter_Bereich = 16#0 THEN GOTO AMR; END_IF;
IF ((#MW220 AND 16#F000) = #Erlaubter_Bereich) AND (#MW220 <> 16#0) THEN GOTO AMR; END_IF;
// Nächsetn Eintrag lesen:
#Para := 16#FF00;
GOTO Next;
END_REGION
REGION Puffer aufbereiten
#AMR_Platz := #MW220;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,87 @@
FUNCTION_BLOCK "MAusfahrPrio_ABP"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG_Haupt_Schleuse : Bool; // Trolley ist in Schleuse auf Hauptstrecke
Haupt_Schleuse_geöffnet : Bool; // Schleuse hat geöffnet
BG_ABP_Schleuse : Bool; // Trolley ist in Schleuse von ABP-Einfahrt
ABP_Schleuse_geöffnet : Bool; // Schleuse hat geöffnet
Aktive_ABP : Int;
g_1s_Impuls : Word; // war "1s-Impuls"
OUT_Haupt_Schleuse_starten : Bool; // war "OUT.Haupt_Schleuse_starten"
Out_ABP_Schleuse_starten : Bool; // war "Out.ABP_Schleuse_starten"
END_VAR
VAR
"OUT.Haupt_Schleuse_starten" : Bool;
"Out.ABP_Schleuse_starten" : Bool;
Dyn : Struct
Anzahl_Haupt : Int;
Wartezeit : Int;
END_STRUCT;
END_VAR
VAR_TEMP
Check_ok : Bool;
Partner : Int;
END_VAR
BEGIN
REGION Haupt-Schleuse ist gestartet
IF #Haupt_Schleuse_geöffnet AND ##OUT_Haupt_Schleuse_starten THEN ##OUT_Haupt_Schleuse_starten := FALSE; END_IF;
IF NOT (#Haupt_Schleuse_geöffnet AND ##OUT_Haupt_Schleuse_starten) THEN GOTO En01; END_IF;
#Dyn.Anzahl_Haupt := #Dyn.Anzahl_Haupt + 1;
IF (#Dyn.Anzahl_Haupt + 1) <= 8 THEN GOTO En01; END_IF;
#Dyn.Anzahl_Haupt := 8;
En01: ;
END_REGION
REGION ABP-Schleuse ist gestartet
IF #ABP_Schleuse_geöffnet AND ##Out_ABP_Schleuse_starten THEN ##Out_ABP_Schleuse_starten := FALSE; END_IF;
IF #ABP_Schleuse_geöffnet AND ##Out_ABP_Schleuse_starten THEN #Dyn.Anzahl_Haupt := 0; END_IF;
END_REGION
REGION Wartezeit, wenn beide Schleusen geschlossen
IF NOT (#Haupt_Schleuse_geöffnet) AND NOT (#ABP_Schleuse_geöffnet) THEN
#Dyn.Wartezeit := 0;
#Check_ok := FALSE;
GOTO En03;
END_IF;
IF NOT (#g_1s_Impuls) THEN GOTO En03; END_IF;
#Dyn.Wartezeit := #Dyn.Wartezeit + 1;
IF (#Dyn.Wartezeit + 1) >= 5 THEN #Check_ok := TRUE; END_IF;
IF (#Dyn.Wartezeit + 1) < 5 THEN GOTO En03; END_IF;
#Dyn.Wartezeit := 5;
En03: ;
END_REGION
REGION Check, wer dran ist
IF NOT (#BG_Haupt_Schleuse) THEN ##OUT_Haupt_Schleuse_starten := FALSE; END_IF;
IF NOT (#BG_ABP_Schleuse) THEN ##Out_ABP_Schleuse_starten := FALSE; END_IF;
IF (##OUT_Haupt_Schleuse_starten AND #BG_Haupt_Schleuse) OR (((##Out_ABP_Schleuse_starten AND #BG_ABP_Schleuse) OR #Haupt_Schleuse_geöffnet) OR #ABP_Schleuse_geöffnet) THEN RETURN; END_IF;
#Partner := #Aktive_ABP + -1;
IF ((#Aktive_ABP + -1) <= 0) AND #BG_ABP_Schleuse THEN
##Out_ABP_Schleuse_starten := TRUE;
RETURN;
END_IF;
IF (#Dyn.Anzahl_Haupt < #Partner) AND #BG_Haupt_Schleuse THEN
##OUT_Haupt_Schleuse_starten := TRUE;
RETURN;
END_IF;
IF NOT (#Check_ok) THEN RETURN; END_IF;
IF #BG_ABP_Schleuse THEN
##Out_ABP_Schleuse_starten := TRUE;
RETURN;
END_IF;
IF #BG_Haupt_Schleuse THEN ##OUT_Haupt_Schleuse_starten := TRUE; END_IF;
RETURN;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+106
View File
@@ -0,0 +1,106 @@
FUNCTION_BLOCK "MBlinken"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Impulsdauer : Bool; // Impulsdauer
Error_1 : Bool;
Error_2 : Bool;
Error_3 : Bool;
Error_4 : Bool;
Error_5 : Bool;
Error_6 : Bool;
Error_7 : Bool;
Error_8 : Bool;
Error_9 : Bool;
Error_10 : Bool;
END_VAR
VAR_OUTPUT
hAnzeige : Bool; // Anzeige
END_VAR
VAR
Flanke_Ausschalttakt : Bool;
Kein_Blinken : Bool;
Ausschalttakte : Int; // Betriebsbereit ist ausgeschaltet
END_VAR
VAR_TEMP
tGen1_Flanke : Bool;
END_VAR
BEGIN
REGION Anzeige bei Error 1-10 1-10 mal blinken lassen
IF ((((((((NOT (#Error_1) AND NOT (#Error_2)) AND NOT (#Error_3)) AND NOT (#Error_4)) AND NOT (#Error_5)) AND NOT (#Error_6)) AND NOT (#Error_7)) AND NOT (#Error_8)) AND NOT (#Error_9)) AND NOT (#Error_10) THEN
#hAnzeige := FALSE;
#Flanke_Ausschalttakt := FALSE;
#Kein_Blinken := FALSE;
GOTO NoAn;
END_IF;
#hAnzeige := #Impulsdauer AND NOT (#Kein_Blinken);
#tGen1_Flanke := NOT (#Impulsdauer) AND #Flanke_Ausschalttakt;
#Flanke_Ausschalttakt := #Impulsdauer;
IF #tGen1_Flanke THEN #Ausschalttakte := #Ausschalttakte + 1; END_IF;
IF (#Ausschalttakte >= 2) AND #Kein_Blinken THEN
#Kein_Blinken := FALSE;
GOTO NoAn;
END_IF;
IF #Kein_Blinken THEN GOTO En01; END_IF;
IF (#Ausschalttakte >= 1) AND #Error_1 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 2) AND #Error_2 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 3) AND #Error_3 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 4) AND #Error_4 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 5) AND #Error_5 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 6) AND #Error_6 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 7) AND #Error_7 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 8) AND #Error_8 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 9) AND #Error_9 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 10) AND #Error_10 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF #Ausschalttakte > 10 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
GOTO En01;
NoAn: ;
#Ausschalttakte := 0;
En01: ;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,79 @@
FUNCTION_BLOCK "MHMÜbergang_ohne_Schleuse_AMR"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ErrQuit : Bool;
B_Anfang : Bool;
B_Am_Übergang : Bool;
B_Stau_Antrieb_plus : Bool;
Antrieb_aktiv : Bool;
Antrieb_plus_aktiv : Bool;
END_VAR
VAR_IN_OUT
Antrieb_vor : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Antrieb_plus_vor : Bool;
Antrieb_plus_start : Bool;
END_VAR
VAR
Am_Übergang { S7_SetPoint := 'False'} : "MSensoren";
Stau_Antrieb_plus : "MSensoren";
Stau_B_Anfang : "MSensoren";
END_VAR
VAR_TEMP
Antrieb : Bool;
Antrieb_gestoppt : Bool;
END_VAR
BEGIN
REGION Antrieb ansteuern
#Antrieb_gestoppt := FALSE;
IF #B_Anfang OR #ErrQuit THEN #Antrieb_start := TRUE; END_IF;
IF (#B_Anfang AND NOT (#Stau_B_Anfang.Stat.B_Akt)) OR #ErrQuit THEN #Antrieb_vor := TRUE; END_IF;
IF NOT (#Am_Übergang.Stat.B_Akt) THEN GOTO Nix; END_IF;
IF NOT (#Am_Übergang.Stat.B_Akt) AND #Stau_Antrieb_plus.Stat.B_Akt THEN
#Antrieb_stop := TRUE;
#Antrieb_gestoppt := TRUE;
GOTO Nix;
END_IF;
IF NOT (#Stau_Antrieb_plus.Stat.B_Akt) THEN #Antrieb_plus_vor := TRUE; END_IF;
#Antrieb_plus_start := TRUE;
IF NOT (#Antrieb_plus_aktiv) THEN
#Antrieb_stop := TRUE;
#Antrieb_gestoppt := TRUE;
GOTO Nix;
END_IF;
#Antrieb_vor := TRUE;
Nix: ;
END_REGION
REGION Antrieb plus zusätzlich ansteuern
IF #B_Stau_Antrieb_plus OR #ErrQuit THEN #Antrieb_plus_start := TRUE; END_IF;
IF FALSE THEN #Antrieb_plus_vor := TRUE; END_IF;
END_REGION
REGION Stau B_Anfang
#Stau_B_Anfang(ESensor := #B_Anfang, T_Ein := 1, T_Aus := 100, tein_aktiv := #Antrieb_aktiv, taus_aktiv := 1);
END_REGION
REGION Trolley ist am Übergang
#Antrieb := (#Antrieb_aktiv AND #Antrieb_plus_aktiv) AND NOT (#Antrieb_gestoppt);
#Am_Übergang(ESensor := #B_Am_Übergang, T_Ein := 1, T_Aus := 100, tein_aktiv := 1, taus_aktiv := #Antrieb);
END_REGION
REGION Stau im Förderer plus
#Stau_Antrieb_plus(ESensor := #B_Stau_Antrieb_plus, T_Ein := 100, T_Aus := 50, tein_aktiv := 1, taus_aktiv := 1);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,175 @@
FUNCTION_BLOCK "MPS1_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
PF0056 : Word; // war "PF0056"
PF3444 : Word; // war "PF3444"
END_VAR
VAR_IN_OUT
BG3444 : Word; // war "BG3444"
BG3450 : Word; // war "BG3450"
BG3451 : Word; // war "BG3451"
BG3452 : Word; // war "BG3452"
BG3453 : Word; // war "BG3453"
BG3455 : Word; // war "BG3455"
BG3461 : Word; // war "BG3461"
BG3465 : Word; // war "BG3465"
BG3470 : Word; // war "BG3470"
BG3471 : Word; // war "BG3471"
BG3473 : Word; // war "BG3473"
BG3541 : Word; // war "BG3541"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0106 : Bool; // war "MA0106"
MA0107 : Bool; // war "MA0107"
MA0110 : Bool; // war "MA0110"
MA0111 : Bool; // war "MA0111"
MA0112 : Bool; // war "MA0112"
MB3450 : Byte; // war "MB3450"
MB3452 : Byte; // war "MB3452"
MB3453 : Byte; // war "MB3453"
MB3455 : Byte; // war "MB3455"
MB3461 : Byte; // war "MB3461"
MB3465 : Byte; // war "MB3465"
MB3471 : Byte; // war "MB3471"
MB3473 : Byte; // war "MB3473"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Schleuse_vor_Ausfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0601.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0601.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0112.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3450, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3444, B_InSchleuse := #BG3450, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0112, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3450, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_MPS1.Stat.Ast, Error := %DB608.DBW326, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3452, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Einfahrt_MPS1.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_MPS1.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0112, Antrieb_Gerade_aktiv := #MA0112, Antrieb_Abzweig_aktiv := #MA0106, Weiche_ist_AST := #MB3452, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_MPS1.Stat.Ast, Error := %DB608.DBW328, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0112.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#B100, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3453, B_an_Platz_1 := #BG3455, B_an_Platz_2 := #BG3461, B_an_Platz_3 := #BG3465, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_MPS1.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3471, Y_Vorstau := #MB3453, Y_Platz_1 := #MB3455, Y_Platz_2 := #MB3461, Y_Platz_3 := #MB3465, Antrieb_Vorstau_aktiv := #MA0106, Antrieb_Nachstau_1_aktiv := #MA0107, Antrieb_Nachstau_2_aktiv := #MA0111, Antrieb_Nachstau_3_aktiv := #MA0110, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_MPS1.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_MPS1.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_MPS1.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_MPS1.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS1".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS1".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW110, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0056 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3444 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3453, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3452, B_InSchleuse := #BG3453, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0106, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3453, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_MPS1.Stat.Ast, Error := %DB608.DBW330, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS1".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3455, ErrQuit := #ErrQuit, B_InSchleuse := #BG3455, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0107, Schleuse_geöffnet := #MB3455, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_MPS1.Stat.Ast, Error := %DB608.DBW332, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS1".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3461, ErrQuit := #ErrQuit, B_InSchleuse := #BG3461, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0111, Schleuse_geöffnet := #MB3461, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_MPS1.Stat.Ast, Error := %DB608.DBW334, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS1".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3465, ErrQuit := #ErrQuit, B_InSchleuse := #BG3465, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0110, Schleuse_geöffnet := #MB3465, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_MPS1.Stat.Ast, Error := %DB608.DBW336, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#Schleuse_Ausfahrt(Schleusen_Nr := 3471, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3470, B_InSchleuse := #BG3471, B_AusSchleuse := #BG3541, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_MPS1.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0110, Antrieb_plus_aktiv := #MA0112, Schleuse_geöffnet := #MB3471, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_MPS1.Stat.Ast, Error := %DB608.DBW338, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS1".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, hStOk := #ErrAnz);
IF #MB3471 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_MPS1.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Schleuse Hauptstrecke vor Ausfahrt
#Schleuse_vor_Ausfahrt(Schleusen_Nr := 3473, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3451, B_InSchleuse := #BG3473, B_AusSchleuse := #BG3541, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_MPS1.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0112, Antrieb_plus_aktiv := #MA0112, Schleuse_geöffnet := #MB3473, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Ausfahrt_MPS1.Stat.Ast, Error := %DB608.DBW340, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_PS, hStOk := #ErrAnz);
IF #MB3473 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_MPS1.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3473, Haupt_Schleuse_geöffnet := #MB3473, BG_ABP_Schleuse := #BG3471, ABP_Schleuse_geöffnet := #MB3471, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0601.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,177 @@
FUNCTION_BLOCK "MPS2_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
PF0054 : Word; // war "PF0054"
PF3420 : Word; // war "PF3420"
END_VAR
VAR_IN_OUT
BG3414 : Word; // war "BG3414"
BG3421 : Word; // war "BG3421"
BG3422 : Word; // war "BG3422"
BG3423 : Word; // war "BG3423"
BG3425 : Word; // war "BG3425"
BG3431 : Word; // war "BG3431"
BG3435 : Word; // war "BG3435"
BG3440 : Word; // war "BG3440"
BG3441 : Word; // war "BG3441"
BG3443 : Word; // war "BG3443"
BG3444 : Word; // war "BG3444"
BG3445 : Word; // war "BG3445"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0101 : Bool; // war "MA0101"
MA0102 : Bool; // war "MA0102"
MA0103 : Bool; // war "MA0103"
MA0104 : Bool; // war "MA0104"
MA0105 : Bool; // war "MA0105"
MA0112 : Bool; // war "MA0112"
MB3421 : Byte; // war "MB3421"
MB3422 : Byte; // war "MB3422"
MB3423 : Byte; // war "MB3423"
MB3425 : Byte; // war "MB3425"
MB3431 : Byte; // war "MB3431"
MB3435 : Byte; // war "MB3435"
MB3441 : Byte; // war "MB3441"
MB3443 : Byte; // war "MB3443"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Schleuse_vor_Ausfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0602.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0602.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0105.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0112.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3421, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3414, B_InSchleuse := #BG3421, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0105, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3421, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_MPS2.Stat.Ast, Error := %DB608.DBW310, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3422, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Einfahrt_MPS2.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_MPS2.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0105, Antrieb_Gerade_aktiv := #MA0105, Antrieb_Abzweig_aktiv := #MA0101, Weiche_ist_AST := #MB3422, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_MPS2.Stat.Ast, Error := %DB608.DBW312, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0105.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#B200, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3423, B_an_Platz_1 := #BG3425, B_an_Platz_2 := #BG3431, B_an_Platz_3 := #BG3435, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_MPS2.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3441, Y_Vorstau := #MB3423, Y_Platz_1 := #MB3425, Y_Platz_2 := #MB3431, Y_Platz_3 := #MB3435, Antrieb_Vorstau_aktiv := #MA0101, Antrieb_Nachstau_1_aktiv := #MA0102, Antrieb_Nachstau_2_aktiv := #MA0103, Antrieb_Nachstau_3_aktiv := #MA0104, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_MPS2.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_MPS2.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_MPS2.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_MPS2.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS2".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS2".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW112, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0054 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3420 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3423, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3422, B_InSchleuse := #BG3423, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0101, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3423, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_MPS2.Stat.Ast, Error := %DB608.DBW314, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS2".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3425, ErrQuit := #ErrQuit, B_InSchleuse := #BG3425, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0102, Schleuse_geöffnet := #MB3425, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_MPS2.Stat.Ast, Error := %DB608.DBW316, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS2".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3431, ErrQuit := #ErrQuit, B_InSchleuse := #BG3431, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0103, Schleuse_geöffnet := #MB3431, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_MPS2.Stat.Ast, Error := %DB608.DBW318, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS2".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3435, ErrQuit := #ErrQuit, B_InSchleuse := #BG3435, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0104, Schleuse_geöffnet := #MB3435, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_MPS2.Stat.Ast, Error := %DB608.DBW320, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#Schleuse_Ausfahrt(Schleusen_Nr := 3441, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3440, B_InSchleuse := #BG3441, B_AusSchleuse := #BG3444, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_MPS2.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0104, Antrieb_plus_aktiv := #MA0112, Schleuse_geöffnet := #MB3441, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_MPS2.Stat.Ast, Error := %DB608.DBW322, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS2".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, hStOk := #ErrAnz);
IF #MB3441 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_MPS2.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Schleuse Hauptstrecke vor Ausfahrt
#Schleuse_vor_Ausfahrt(Schleusen_Nr := 3443, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3445, B_InSchleuse := #BG3443, B_AusSchleuse := #BG3444, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_MPS2.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0105, Antrieb_plus_aktiv := #MA0112, Schleuse_geöffnet := #MB3443, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Ausfahrt_MPS2.Stat.Ast, Error := %DB608.DBW324, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0112.Stat.A_start, hStOk := #ErrAnz);
IF #MB3443 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_MPS2.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3443, Haupt_Schleuse_geöffnet := #MB3443, BG_ABP_Schleuse := #BG3441, ABP_Schleuse_geöffnet := #MB3441, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0602.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,175 @@
FUNCTION_BLOCK "MPS3_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
PF0052 : Word; // war "PF0052"
PF3384 : Word; // war "PF3384"
END_VAR
VAR_IN_OUT
BG3384 : Word; // war "BG3384"
BG3390 : Word; // war "BG3390"
BG3391 : Word; // war "BG3391"
BG3392 : Word; // war "BG3392"
BG3393 : Word; // war "BG3393"
BG3395 : Word; // war "BG3395"
BG3401 : Word; // war "BG3401"
BG3405 : Word; // war "BG3405"
BG3410 : Word; // war "BG3410"
BG3411 : Word; // war "BG3411"
BG3413 : Word; // war "BG3413"
BG3414 : Word; // war "BG3414"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0095 : Bool; // war "MA0095"
MA0096 : Bool; // war "MA0096"
MA0097 : Bool; // war "MA0097"
MA0100 : Bool; // war "MA0100"
MA0105 : Bool; // war "MA0105"
MB3390 : Byte; // war "MB3390"
MB3392 : Byte; // war "MB3392"
MB3393 : Byte; // war "MB3393"
MB3395 : Byte; // war "MB3395"
MB3401 : Byte; // war "MB3401"
MB3405 : Byte; // war "MB3405"
MB3411 : Byte; // war "MB3411"
MB3413 : Byte; // war "MB3413"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Schleuse_vor_Ausfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0603.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0603.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0105.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3390, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3384, B_InSchleuse := #BG3390, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0105, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3390, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_MPS3.Stat.Ast, Error := %DB608.DBW294, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3392, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Einfahrt_MPS3.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_MPS3.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0105, Antrieb_Gerade_aktiv := #MA0105, Antrieb_Abzweig_aktiv := #MA0095, Weiche_ist_AST := #MB3392, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_MPS3.Stat.Ast, Error := %DB608.DBW296, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0105.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#B300, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3393, B_an_Platz_1 := #BG3395, B_an_Platz_2 := #BG3401, B_an_Platz_3 := #BG3405, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_MPS3.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3411, Y_Vorstau := #MB3393, Y_Platz_1 := #MB3395, Y_Platz_2 := #MB3401, Y_Platz_3 := #MB3405, Antrieb_Vorstau_aktiv := #MA0095, Antrieb_Nachstau_1_aktiv := #MA0096, Antrieb_Nachstau_2_aktiv := #MA0097, Antrieb_Nachstau_3_aktiv := #MA0100, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_MPS3.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_MPS3.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_MPS3.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_MPS3.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS3".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS3".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW114, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0052 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3384 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3393, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3392, B_InSchleuse := #BG3393, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0095, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3393, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_MPS3.Stat.Ast, Error := %DB608.DBW298, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_MPS3".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3395, ErrQuit := #ErrQuit, B_InSchleuse := #BG3395, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0096, Schleuse_geöffnet := #MB3395, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_MPS3.Stat.Ast, Error := %DB608.DBW300, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_MPS3".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3401, ErrQuit := #ErrQuit, B_InSchleuse := #BG3401, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0097, Schleuse_geöffnet := #MB3401, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_MPS3.Stat.Ast, Error := %DB608.DBW302, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_MPS3".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3405, ErrQuit := #ErrQuit, B_InSchleuse := #BG3405, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0100, Schleuse_geöffnet := #MB3405, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_MPS3.Stat.Ast, Error := %DB608.DBW304, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#Schleuse_Ausfahrt(Schleusen_Nr := 3411, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3410, B_InSchleuse := #BG3411, B_AusSchleuse := #BG3414, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_MPS3.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0100, Antrieb_plus_aktiv := #MA0105, Schleuse_geöffnet := #MB3411, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_MPS3.Stat.Ast, Error := %DB608.DBW306, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_MPS3".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, hStOk := #ErrAnz);
IF #MB3411 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_MPS3.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Schleuse Hauptstrecke vor Ausfahrt
#Schleuse_vor_Ausfahrt(Schleusen_Nr := 3413, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3391, B_InSchleuse := #BG3413, B_AusSchleuse := #BG3414, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_MPS3.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0105, Antrieb_plus_aktiv := #MA0105, Schleuse_geöffnet := #MB3413, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Ausfahrt_MPS3.Stat.Ast, Error := %DB608.DBW308, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // s.o. | s.o.
IF #MB3413 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_MPS3.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3413, Haupt_Schleuse_geöffnet := #MB3413, BG_ABP_Schleuse := #BG3411, ABP_Schleuse_geöffnet := #MB3411, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0603.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+56
View File
@@ -0,0 +1,56 @@
FUNCTION_BLOCK "MSensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ESensor { ExternalWritable := 'False'} : Bool; // Eingang des zu überwachenden Sensors
T_Ein { ExternalWritable := 'False'} : Int := 1; // Einschaltzeitverzögerung (*100ms)
T_Aus { ExternalWritable := 'False'} : Int := 5; // Ausschaltzeitverzögerung (*100ms)
tein_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Einschaltzeit aktivieren
taus_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Ausschaltzeit aktivieren
g_100ms_Impuls : Word; // war "100ms-Impuls"
MW2 : Word; // war "MW2"
END_VAR
VAR
Stat { ExternalWritable := 'False'} : "USensor_Ein_Aus"; // Status des Endschalters
END_VAR
BEGIN
REGION Zeitwert löschen
IF NOT ((#ESensor AND #Stat.B_Akt) OR (NOT (#ESensor) AND NOT (#Stat.B_Akt))) THEN GOTO Nw02; END_IF;
#Stat.T_Zelle := 0;
RETURN;
END_REGION
REGION Einschaltzeit abgelaufen ?
IF #Stat.T_Ein_Akt = 9999 THEN #Stat.T_Ein_Akt := #T_Ein; END_IF;
IF #Stat.B_Akt THEN GOTO Nw03; END_IF;
IF #Stat.T_Zelle >= #Stat.T_Ein_Akt THEN
#Stat.B_Akt := TRUE;
GOTO tdel;
END_IF;
GOTO Nw04;
END_REGION
REGION Ausschaltzeit abgelaufen ?
IF #Stat.T_Aus_Akt = 9999 THEN #Stat.T_Aus_Akt := #T_Aus; END_IF;
IF NOT (#Stat.B_Akt) THEN GOTO Nw04; END_IF;
IF #Stat.T_Zelle >= #Stat.T_Aus_Akt THEN
#Stat.B_Akt := FALSE;
GOTO tdel;
END_IF;
END_REGION
REGION Zeit läuft
IF (NOT (#g_100ms_Impuls) OR (NOT (#Stat.B_Akt) AND NOT (#tein_aktiv))) OR (#Stat.B_Akt AND NOT (#taus_aktiv)) THEN RETURN; END_IF;
#Stat.T_Zelle := #Stat.T_Zelle + #MW2;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,241 @@
FUNCTION_BLOCK "PS1_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3323 : Word; // war "BG3323"
BG3361 : Word; // war "BG3361"
MA0062 : Bool; // war "MA0062"
MA0094 : Bool; // war "MA0094"
MB3351 : Byte; // war "MB3351"
MB3361 : Byte; // war "MB3361"
MB3481 : Byte; // war "MB3481"
MB3482 : Byte; // war "MB3482"
END_VAR
VAR_OUTPUT
DPS2_OmniFahren : Word; // war "DPS2_OmniFahren"
PF0050 : Word; // war "PF0050"
PF3360 : Word; // war "PF3360"
END_VAR
VAR_IN_OUT
BG3330 : Word; // war "BG3330"
BG3353 : Word; // war "BG3353"
BG3362 : Word; // war "BG3362"
BG3363 : Word; // war "BG3363"
BG3365 : Word; // war "BG3365"
BG3371 : Word; // war "BG3371"
BG3375 : Word; // war "BG3375"
BG3380 : Word; // war "BG3380"
BG3381 : Word; // war "BG3381"
BG3383 : Word; // war "BG3383"
BG3384 : Word; // war "BG3384"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0087 : Bool; // war "MA0087"
MA0090 : Bool; // war "MA0090"
MA0091 : Bool; // war "MA0091"
MA0092 : Bool; // war "MA0092"
MA0093 : Bool; // war "MA0093"
MA0105 : Bool; // war "MA0105"
MB3353 : Byte; // war "MB3353"
MB3362 : Byte; // war "MB3362"
MB3363 : Byte; // war "MB3363"
MB3365 : Byte; // war "MB3365"
MB3371 : Byte; // war "MB3371"
MB3375 : Byte; // war "MB3375"
MB3381 : Byte; // war "MB3381"
MB3383 : Byte; // war "MB3383"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Schleuse_vor_Ausfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_vor : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0611.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0611.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_PS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_PS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0094.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0105.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3353, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3330, B_InSchleuse := #BG3353, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0087, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3353, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_PS1.Stat.Ast, Error := %DB608.DBW276, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
IF #MB3353 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS2.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Einfahrt.Dyn.Status.Trolley_draussen THEN
#DPS2_OmniFahren.Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE;
#DPS2_OmniFahren.Vorfahrt_Ausfahrweiche."WeicheByPass_von_Haupt-Sep_belegt" := FALSE;
END_IF;
END_REGION
REGION Weiche Einfahrt
#Antrieb_vor := FALSE;
#Antrieb_start := FALSE;
#Antrieb_stop := FALSE;
#Antrieb_aktiv := (#MA0094 AND #MA0087) AND #MA0062;
#Weiche_Einfahrt(Weichen_Nr := 3362, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS2.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_PS1.Stat.B_Akt, Antrieb_Weiche_aktiv := #Antrieb_aktiv, Antrieb_Gerade_aktiv := #MA0087, Antrieb_Abzweig_aktiv := #MA0090, Weiche_ist_AST := #MB3362, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_PS1.Stat.Ast, Error := %DB608.DBW280, Antrieb_Weiche_vor := #Antrieb_vor, Antrieb_Weiche_stop := #Antrieb_stop, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
IF #Antrieb_vor THEN
#DArbeitspl_tze_Antriebe.MA0094.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0094.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.A_start := TRUE;
END_IF;
IF #Antrieb_start THEN
#DArbeitspl_tze_Antriebe.MA0094.Stat.Stop_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.Stop_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.Stop_vor := TRUE;
END_IF;
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#A100, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3363, B_an_Platz_1 := #BG3365, B_an_Platz_2 := #BG3371, B_an_Platz_3 := #BG3375, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_PS1.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3381, Y_Vorstau := #MB3363, Y_Platz_1 := #MB3365, Y_Platz_2 := #MB3371, Y_Platz_3 := #MB3375, Antrieb_Vorstau_aktiv := #MA0090, Antrieb_Nachstau_1_aktiv := #MA0091, Antrieb_Nachstau_2_aktiv := #MA0092, Antrieb_Nachstau_3_aktiv := #MA0093, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_PS1.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_PS1.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_PS1.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_PS1.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS1".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS1".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW100, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0050 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3360 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3363, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3362, B_InSchleuse := #BG3363, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0090, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3363, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_PS1.Stat.Ast, Error := %DB608.DBW282, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS1".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3365, ErrQuit := #ErrQuit, B_InSchleuse := #BG3365, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0091, Schleuse_geöffnet := #MB3365, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_PS1.Stat.Ast, Error := %DB608.DBW284, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS1".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3371, ErrQuit := #ErrQuit, B_InSchleuse := #BG3371, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0092, Schleuse_geöffnet := #MB3371, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_PS1.Stat.Ast, Error := %DB608.DBW286, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS1".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3375, ErrQuit := #ErrQuit, B_InSchleuse := #BG3375, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0093, Schleuse_geöffnet := #MB3375, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_PS1.Stat.Ast, Error := %DB608.DBW288, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#Schleuse_Ausfahrt(Schleusen_Nr := 3381, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3380, B_InSchleuse := #BG3381, B_AusSchleuse := #BG3384, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS1.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0093, Antrieb_plus_aktiv := #MA0105, Schleuse_geöffnet := #MB3381, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_PS1.Stat.Ast, Error := %DB608.DBW290, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS1".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, hStOk := #ErrAnz);
IF #MB3381 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS1.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Schleuse Hauptstrecke vor Ausfahrt
IF #MB3351 OR #MB3353 THEN #DArbeitspl_tze_Zylinder.Weiche_3361.Stat.Ast := FALSE; END_IF;
IF #MB3481 AND #MB3482 THEN #DArbeitspl_tze_Zylinder.Weiche_3361.Stat.Ast := TRUE; END_IF;
IF (#Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_fährt_in_Schleuse AND NOT (#BG3323)) AND NOT (#MB3361) THEN #DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor := TRUE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_fährt_in_Schleuse AND NOT (#BG3323) THEN
#DArbeitspl_tze_Antriebe.MA0062.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor := TRUE;
END_IF;
IF #DArbeitspl_tze_Sensoren.An_BG3383.Stat.B_Akt AND NOT (#BG3383) THEN #DArbeitspl_tze_Antriebe.MA0094.Stat.A_vor := TRUE; END_IF;
#B_aktiv := (((#MB3481 AND #MB3482) OR #MB3351) OR #MB3353) OR #BG3361;
#Antrieb_vor := FALSE;
#Antrieb_start := FALSE;
#Antrieb_stop := FALSE;
#Antrieb_aktiv := (#MA0094 AND #MA0087) AND #MA0062;
#Schleuse_vor_Ausfahrt(Schleusen_Nr := 3383, ErrQuit := #ErrQuit, B_VorSchleuse := #B_aktiv, B_InSchleuse := #BG3383, B_AusSchleuse := #BG3384, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS1.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #Antrieb_aktiv, Antrieb_plus_aktiv := #MA0105, Schleuse_geöffnet := #MB3383, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Ausfahrt_PS1.Stat.Ast, Error := %DB608.DBW292, Antrieb_Schleuse_vor := #Antrieb_vor, Antrieb_Schleuse_start := #Antrieb_start, Antrieb_Schleuse_stop := #Antrieb_stop, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0094.Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0105.Stat.A_start, hStOk := #ErrAnz);
IF #Antrieb_vor THEN
#DArbeitspl_tze_Antriebe.MA0094.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.A_vor := TRUE;
END_IF;
IF #Antrieb_start THEN
#DArbeitspl_tze_Antriebe.MA0094.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.A_start := TRUE;
END_IF;
IF #Antrieb_stop THEN
#DArbeitspl_tze_Antriebe.MA0094.Stat.Stop_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.Stop_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0062.Stat.Stop_vor := TRUE;
END_IF;
IF #MB3383 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS1.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3383, Haupt_Schleuse_geöffnet := #MB3383, BG_ABP_Schleuse := #BG3381, ABP_Schleuse_geöffnet := #MB3381, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0611.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,173 @@
FUNCTION_BLOCK "PS2_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3361 : Word; // war "BG3361"
BG3362 : Word; // war "BG3362"
DZuf_hrung_OmniFahren : Word; // war "DZuführung_OmniFahren"
END_VAR
VAR_OUTPUT
PF0046 : Word; // war "PF0046"
PF3324 : Word; // war "PF3324"
END_VAR
VAR_IN_OUT
BG3322 : Word; // war "BG3322"
BG3331 : Word; // war "BG3331"
BG3332 : Word; // war "BG3332"
BG3333 : Word; // war "BG3333"
BG3335 : Word; // war "BG3335"
BG3341 : Word; // war "BG3341"
BG3345 : Word; // war "BG3345"
BG3350 : Word; // war "BG3350"
BG3351 : Word; // war "BG3351"
BG3353 : Word; // war "BG3353"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0083 : Bool; // war "MA0083"
MA0084 : Bool; // war "MA0084"
MA0085 : Bool; // war "MA0085"
MA0086 : Bool; // war "MA0086"
MA0087 : Bool; // war "MA0087"
MB3331 : Byte; // war "MB3331"
MB3332 : Byte; // war "MB3332"
MB3333 : Byte; // war "MB3333"
MB3335 : Byte; // war "MB3335"
MB3341 : Byte; // war "MB3341"
MB3345 : Byte; // war "MB3345"
MB3351 : Byte; // war "MB3351"
MB3353 : Byte; // war "MB3353"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"WeicheByPass_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
"Weiche_von_ByPass-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0612.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0612.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_PS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_PS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3331, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3322, B_InSchleuse := #BG3331, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0087, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3331, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_PS2.Stat.Ast, Error := %DB608.DBW262, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3332, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Einfahrt_PS2.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_PS2.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0087, Antrieb_Gerade_aktiv := #MA0087, Antrieb_Abzweig_aktiv := #MA0083, Weiche_ist_AST := #MB3332, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_PS2.Stat.Ast, Error := %DB608.DBW264, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0087.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#A200, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3333, B_an_Platz_1 := #BG3335, B_an_Platz_2 := #BG3341, B_an_Platz_3 := #BG3345, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_PS2.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3351, Y_Vorstau := #MB3333, Y_Platz_1 := #MB3335, Y_Platz_2 := #MB3341, Y_Platz_3 := #MB3345, Antrieb_Vorstau_aktiv := #MA0083, Antrieb_Nachstau_1_aktiv := #MA0084, Antrieb_Nachstau_2_aktiv := #MA0085, Antrieb_Nachstau_3_aktiv := #MA0086, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_PS2.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_PS2.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_PS2.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_PS2.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS2".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS2".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW102, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0046 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3324 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3333, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3332, B_InSchleuse := #BG3333, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0083, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3333, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_PS2.Stat.Ast, Error := %DB608.DBW266, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS2".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3335, ErrQuit := #ErrQuit, B_InSchleuse := #BG3335, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0084, Schleuse_geöffnet := #MB3335, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_PS2.Stat.Ast, Error := %DB608.DBW268, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS2".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3341, ErrQuit := #ErrQuit, B_InSchleuse := #BG3341, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0085, Schleuse_geöffnet := #MB3341, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_PS2.Stat.Ast, Error := %DB608.DBW270, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS2".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3345, ErrQuit := #ErrQuit, B_InSchleuse := #BG3345, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0086, Schleuse_geöffnet := #MB3345, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_PS2.Stat.Ast, Error := %DB608.DBW272, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#B_AusSchleuse := (#BG3362 AND #DZuf_hrung_OmniFahren.Alle_ABPs_anfahren) OR (#BG3361 AND NOT (#DZuf_hrung_OmniFahren.Alle_ABPs_anfahren));
#Schleuse_Ausfahrt(Schleusen_Nr := 3351, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3350, B_InSchleuse := #BG3351, B_AusSchleuse := #B_AusSchleuse, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS2.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0086, Antrieb_plus_aktiv := #MA0087, Schleuse_geöffnet := #MB3351, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_PS2.Stat.Ast, Error := %DB608.DBW274, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS2".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_start, hStOk := #ErrAnz);
IF #MB3351 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS2.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3353, Haupt_Schleuse_geöffnet := #MB3353, BG_ABP_Schleuse := #BG3351, ABP_Schleuse_geöffnet := #MB3351, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0612.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,204 @@
FUNCTION_BLOCK "PS3_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3331 : Word; // war "BG3331"
MB3322 : Byte; // war "MB3322"
END_VAR
VAR_OUTPUT
DPS4_OmniFahren : Word; // war "DPS4_OmniFahren"
PF0044 : Word; // war "PF0044"
PF3300 : Word; // war "PF3300"
END_VAR
VAR_IN_OUT
BG3270 : Word; // war "BG3270"
BG3293 : Word; // war "BG3293"
BG3294 : Word; // war "BG3294"
BG3302 : Word; // war "BG3302"
BG3303 : Word; // war "BG3303"
BG3305 : Word; // war "BG3305"
BG3311 : Word; // war "BG3311"
BG3315 : Word; // war "BG3315"
BG3320 : Word; // war "BG3320"
BG3321 : Word; // war "BG3321"
BG3322 : Word; // war "BG3322"
BG3323 : Word; // war "BG3323"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0076 : Bool; // war "MA0076"
MA0077 : Bool; // war "MA0077"
MA0080 : Bool; // war "MA0080"
MA0081 : Bool; // war "MA0081"
MA0082 : Bool; // war "MA0082"
MA0087 : Bool; // war "MA0087"
MB3293 : Byte; // war "MB3293"
MB3302 : Byte; // war "MB3302"
MB3303 : Byte; // war "MB3303"
MB3305 : Byte; // war "MB3305"
MB3311 : Byte; // war "MB3311"
MB3315 : Byte; // war "MB3315"
MB3321 : Byte; // war "MB3321"
MB3323 : Byte; // war "MB3323"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Schleuse_vor_Ausfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_vor : Bool;
Antrieb_start : Bool;
Antrieb_PS : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0613.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0613.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_PS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_PS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0082.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3293, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3270, B_InSchleuse := #BG3293, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0082, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3293, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_PS3.Stat.Ast, Error := %DB608.DBW246, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
IF #MB3293 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS4.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Einfahrt.Dyn.Status.Trolley_draussen THEN #DPS4_OmniFahren.Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3302, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS4.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_PS3.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0082, Antrieb_Gerade_aktiv := #MA0082, Antrieb_Abzweig_aktiv := #MA0076, Weiche_ist_AST := #MB3302, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_PS3.Stat.Ast, Error := %DB608.DBW248, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#A300, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3303, B_an_Platz_1 := #BG3305, B_an_Platz_2 := #BG3311, B_an_Platz_3 := #BG3315, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_PS3.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3321, Y_Vorstau := #MB3303, Y_Platz_1 := #MB3305, Y_Platz_2 := #MB3311, Y_Platz_3 := #MB3315, Antrieb_Vorstau_aktiv := #MA0076, Antrieb_Nachstau_1_aktiv := #MA0077, Antrieb_Nachstau_2_aktiv := #MA0080, Antrieb_Nachstau_3_aktiv := #MA0081, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_PS3.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_PS3.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_PS3.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_PS3.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS3".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS3".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW104, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0044 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3300 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3303, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3302, B_InSchleuse := #BG3303, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0076, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3303, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_PS3.Stat.Ast, Error := %DB608.DBW250, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS3".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3305, ErrQuit := #ErrQuit, B_InSchleuse := #BG3305, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0077, Schleuse_geöffnet := #MB3305, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_PS3.Stat.Ast, Error := %DB608.DBW252, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS3".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3311, ErrQuit := #ErrQuit, B_InSchleuse := #BG3311, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0080, Schleuse_geöffnet := #MB3311, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_PS3.Stat.Ast, Error := %DB608.DBW254, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS3".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3315, ErrQuit := #ErrQuit, B_InSchleuse := #BG3315, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0081, Schleuse_geöffnet := #MB3315, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_PS3.Stat.Ast, Error := %DB608.DBW256, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#Schleuse_Ausfahrt(Schleusen_Nr := 3321, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3320, B_InSchleuse := #BG3321, B_AusSchleuse := #BG3322, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS3.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0081, Antrieb_plus_aktiv := #MA0087, Schleuse_geöffnet := #MB3321, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_PS3.Stat.Ast, Error := %DB608.DBW258, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0087.Stat.A_start, hStOk := #ErrAnz);
IF #MB3321 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS3.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
IF (#MB3322 AND #BG3322) AND NOT (#BG3331) THEN #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS3".Stat.A_vor := TRUE; END_IF;
END_REGION
REGION Schleuse Hauptstrecke vor Ausfahrt
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_fährt_in_Schleuse AND NOT (#BG3323) THEN #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor := TRUE; END_IF;
#Antrieb_vor := FALSE;
#Antrieb_start := FALSE;
#Antrieb_PS := FALSE;
#Schleuse_vor_Ausfahrt(Schleusen_Nr := 3323, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3294, B_InSchleuse := #BG3323, B_AusSchleuse := #BG3322, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS3.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0087, Antrieb_plus_aktiv := #MA0087, Schleuse_geöffnet := #MB3323, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Ausfahrt_PS3.Stat.Ast, Error := %DB608.DBW260, Antrieb_Schleuse_vor := #Antrieb_vor, Antrieb_Schleuse_start := #Antrieb_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS := #Antrieb_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // s.o. | s.o.
IF #Antrieb_vor THEN
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_vor := TRUE;
#DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor := TRUE;
END_IF;
IF #Antrieb_start THEN
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0082.Stat.A_start := TRUE;
END_IF;
IF #Antrieb_PS THEN
#DArbeitspl_tze_Antriebe.MA0087.Stat.A_PS := TRUE;
#DArbeitspl_tze_Antriebe.MA0082.Stat.A_PS := TRUE;
END_IF;
IF #MB3323 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS3.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3323, Haupt_Schleuse_geöffnet := #MB3323, BG_ABP_Schleuse := #BG3321, ABP_Schleuse_geöffnet := #MB3321, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0613.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,171 @@
FUNCTION_BLOCK "PS4_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3294 : Word; // war "BG3294"
BG3302 : Word; // war "BG3302"
DZuf_hrung_OmniFahren : Word; // war "DZuführung_OmniFahren"
END_VAR
VAR_OUTPUT
PF0042 : Word; // war "PF0042"
PF3270 : Word; // war "PF3270"
END_VAR
VAR_IN_OUT
BG3263 : Word; // war "BG3263"
BG3271 : Word; // war "BG3271"
BG3272 : Word; // war "BG3272"
BG3273 : Word; // war "BG3273"
BG3275 : Word; // war "BG3275"
BG3281 : Word; // war "BG3281"
BG3285 : Word; // war "BG3285"
BG3290 : Word; // war "BG3290"
BG3291 : Word; // war "BG3291"
BG3293 : Word; // war "BG3293"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
DPS5_OmniFahren : Word; // war "DPS5_OmniFahren"
MA0072 : Bool; // war "MA0072"
MA0073 : Bool; // war "MA0073"
MA0074 : Bool; // war "MA0074"
MA0075 : Bool; // war "MA0075"
MA0082 : Bool; // war "MA0082"
MB3271 : Byte; // war "MB3271"
MB3272 : Byte; // war "MB3272"
MB3273 : Byte; // war "MB3273"
MB3275 : Byte; // war "MB3275"
MB3281 : Byte; // war "MB3281"
MB3285 : Byte; // war "MB3285"
MB3291 : Byte; // war "MB3291"
MB3293 : Byte; // war "MB3293"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0614.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0614.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_PS4".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_PS4".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0082.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3271, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3263, B_InSchleuse := #BG3271, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0082, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3271, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_PS4.Stat.Ast, Error := %DB608.DBW232, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3272, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Einfahrt_PS4.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_PS4.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0082, Antrieb_Gerade_aktiv := #MA0082, Antrieb_Abzweig_aktiv := #MA0072, Weiche_ist_AST := #MB3272, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_PS4.Stat.Ast, Error := %DB608.DBW234, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#A400, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3273, B_an_Platz_1 := #BG3275, B_an_Platz_2 := #BG3281, B_an_Platz_3 := #BG3285, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_PS4.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3291, Y_Vorstau := #MB3273, Y_Platz_1 := #MB3275, Y_Platz_2 := #MB3281, Y_Platz_3 := #MB3285, Antrieb_Vorstau_aktiv := #MA0072, Antrieb_Nachstau_1_aktiv := #MA0073, Antrieb_Nachstau_2_aktiv := #MA0074, Antrieb_Nachstau_3_aktiv := #MA0075, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_PS4.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_PS4.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_PS4.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_PS4.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS4".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS4".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW106, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0042 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3270 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3273, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3272, B_InSchleuse := #BG3273, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0072, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3273, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_PS4.Stat.Ast, Error := %DB608.DBW236, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS4".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3275, ErrQuit := #ErrQuit, B_InSchleuse := #BG3275, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0073, Schleuse_geöffnet := #MB3275, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_PS4.Stat.Ast, Error := %DB608.DBW238, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS4".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3281, ErrQuit := #ErrQuit, B_InSchleuse := #BG3281, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0074, Schleuse_geöffnet := #MB3281, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_PS4.Stat.Ast, Error := %DB608.DBW240, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS4".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3285, ErrQuit := #ErrQuit, B_InSchleuse := #BG3285, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0075, Schleuse_geöffnet := #MB3285, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_PS4.Stat.Ast, Error := %DB608.DBW242, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#B_AusSchleuse := (#BG3302 AND #DZuf_hrung_OmniFahren.Alle_ABPs_anfahren) OR (#BG3294 AND NOT (#DZuf_hrung_OmniFahren.Alle_ABPs_anfahren));
#Schleuse_Ausfahrt(Schleusen_Nr := 3291, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3290, B_InSchleuse := #BG3291, B_AusSchleuse := #B_AusSchleuse, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS4.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0075, Antrieb_plus_aktiv := #MA0082, Schleuse_geöffnet := #MB3291, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_PS4.Stat.Ast, Error := %DB608.DBW244, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS4".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_start, hStOk := #ErrAnz);
IF #MB3291 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS4.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3293, Haupt_Schleuse_geöffnet := #MB3293, BG_ABP_Schleuse := #BG3291, ABP_Schleuse_geöffnet := #MB3291, Aktive_ABP := #DPS5_OmniFahren.Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0614.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,197 @@
FUNCTION_BLOCK "PS5_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DMPS1_OmniFahren : Word; // war "DMPS1_OmniFahren"
DMPS2_OmniFahren : Word; // war "DMPS2_OmniFahren"
DMPS3_OmniFahren : Word; // war "DMPS3_OmniFahren"
DPS1_OmniFahren : Word; // war "DPS1_OmniFahren"
DPS2_OmniFahren : Word; // war "DPS2_OmniFahren"
DPS3_OmniFahren : Word; // war "DPS3_OmniFahren"
DPS4_OmniFahren : Word; // war "DPS4_OmniFahren"
END_VAR
VAR_OUTPUT
PF0040 : Word; // war "PF0040"
PF3240 : Word; // war "PF3240"
END_VAR
VAR_IN_OUT
BG3241 : Word; // war "BG3241"
BG3242 : Word; // war "BG3242"
BG3243 : Word; // war "BG3243"
BG3244 : Word; // war "BG3244"
BG3245 : Word; // war "BG3245"
BG3251 : Word; // war "BG3251"
BG3255 : Word; // war "BG3255"
BG3260 : Word; // war "BG3260"
BG3262 : Word; // war "BG3262"
BG3263 : Word; // war "BG3263"
BG3264 : Word; // war "BG3264"
BG3265 : Word; // war "BG3265"
DAMR_Bereich : Word; // war "DAMR_Bereich"
DArbeitspl_tze_Antriebe : Word; // war "DArbeitsplätze_Antriebe"
DArbeitspl_tze_Sensoren : Word; // war "DArbeitsplätze_Sensoren"
DArbeitspl_tze_Zylinder : Word; // war "DArbeitsplätze_Zylinder"
MA0066 : Bool; // war "MA0066"
MA0067 : Bool; // war "MA0067"
MA0070 : Bool; // war "MA0070"
MA0071 : Bool; // war "MA0071"
MA0082 : Bool; // war "MA0082"
MB3241 : Byte; // war "MB3241"
MB3242 : Byte; // war "MB3242"
MB3243 : Byte; // war "MB3243"
MB3245 : Byte; // war "MB3245"
MB3251 : Byte; // war "MB3251"
MB3255 : Byte; // war "MB3255"
MB3262 : Byte; // war "MB3262"
MB3265 : Byte; // war "MB3265"
END_VAR
VAR
Schleuse_vor_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Weiche_Einfahrt { S7_SetPoint := 'False'} : "MHMOmniWeiche";
Schleuse_Vorstau { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Sks_Arbeitsplatz { S7_SetPoint := 'False'} : "MHM_Arbeitsplatz";
Schleuse_Platz_1 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_2 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Platz_3 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_Ausfahrt : "MHMOmniSchleuse";
Schleuse_vor_Ausfahrt { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Prio_Ausfahrt { S7_SetPoint := 'False'} : "MAusfahrPrio_ABP";
Vorfahrt_Ausfahrweiche : Struct
"Weiche_von_Haupt-Sep_belegt" : Bool;
"Weiche_von_Ausfahr-Sep_belegt" : Bool;
Haupstrecke_gefahren : Int;
AMR_gefahren : Int;
END_STRUCT;
Aktivierte_ABPs : Int;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_AusSchleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Weiche_Einfahrt.Dyn.Status.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Vorstau.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_1.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_2.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Platz_3.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt := #DAMR_Bereich.A01_UH06.AnlageEin;
#Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Weiche_Einfahrt.Dyn.Status.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Vorstau.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_1.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_2.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Platz_3.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
#Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok := NOT (#DAMR_Bereich.A01_UH06.BereichErr);
END_REGION
REGION Störungen quittieren
#ErrQuit := #DAMR_Bereich.A01_UZ0615.StOk_aktiv;
IF #DAMR_Bereich.A01_UZ0615.StOk_aktiv THEN
#DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau1_PS5".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Nachstau2_PS5".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.A_start := TRUE;
#DArbeitspl_tze_Antriebe.MA0082.Stat.A_start := TRUE;
END_IF;
END_REGION
REGION Schleuse vor Einfahrt
#Schleuse_vor_Einfahrt(Schleusen_Nr := 3241, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3244, B_InSchleuse := #BG3241, B_AusSchleuse := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0082, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3241, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Einfahrt_PS5.Stat.Ast, Error := %DB608.DBW216, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_PS, hStOk := #ErrAnz); // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
END_REGION
REGION Weiche Einfahrt
#Weiche_Einfahrt(Weichen_Nr := 3242, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #DArbeitspl_tze_Sensoren.Stau_nach_Einfahrt_PS5.Stat.B_Akt, B_Ziel_abzweig := #DArbeitspl_tze_Sensoren.Stau_Einfahrt_PS5.Stat.B_Akt, Antrieb_Weiche_aktiv := #MA0082, Antrieb_Gerade_aktiv := #MA0082, Antrieb_Abzweig_aktiv := #MA0066, Weiche_ist_AST := #MB3242, Y_Weiche_abzweig := #DArbeitspl_tze_Zylinder.Weiche_Einfahrt_PS5.Stat.Ast, Error := %DB608.DBW218, Antrieb_Weiche_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Weiche_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.Stop_vor, hStOk := #ErrAnz); // s.o. | s.o.
END_REGION
REGION Schrittketten Arbeitsplätze ver-/entsorgen
#Sks_Arbeitsplatz(Arbeitsplatz_Nr := 16#A500, ErrQuit := #ErrQuit, B_In_Schleuse_Vorstau := #BG3243, B_an_Platz_1 := #BG3245, B_an_Platz_2 := #BG3251, B_an_Platz_3 := #BG3255, B_Nachstau_Einfahrt := #DArbeitspl_tze_Sensoren.Stau_Ausfahrt_PS5.Stat.B_Akt, B_Nachstau_Ausfahrt := #BG3262, Y_Vorstau := #MB3243, Y_Platz_1 := #MB3245, Y_Platz_2 := #MB3251, Y_Platz_3 := #MB3255, Antrieb_Vorstau_aktiv := #MA0066, Antrieb_Nachstau_1_aktiv := #MA0067, Antrieb_Nachstau_2_aktiv := #MA0070, Antrieb_Nachstau_3_aktiv := #MA0071, Y_Weiche_zu_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz1_PS5.Stat.Ast, Y_Weiche_zu_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_zu_Platz2_PS5.Stat.Ast, Y_Weiche_von_Platz_1 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz1_PS5.Stat.Ast, Y_Weiche_von_Platz_2 := #DArbeitspl_tze_Zylinder.Weiche_von_Platz2_PS5.Stat.Ast, Antrieb_Nachstau_1_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS5".Stat.A_vor, Antrieb_Nachstau_2_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS5".Stat.A_vor, Trolley_hat_ABS_erreicht := #Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse := #Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper := #Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper := #Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper := #Schleuse_Platz_3.Dyn.Sk.Reset, Error := %DB608.DBW108, Antrieb_Vorstau_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Nachstau_3_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.A_vor, hStOk := #ErrAnz); // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
#PF0040 := #DAMR_Bereich.A01_UH06.AnlageEin AND #Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert;
#PF3240 := #Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige;
END_REGION
REGION Schleuse Vorstau
#Schleuse_Vorstau(Schleusen_Nr := 3243, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3242, B_InSchleuse := #BG3243, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0066, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB3243, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vorstau_PS5.Stat.Ast, Error := %DB608.DBW220, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Einfahrt_PS5".Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse Platz 1
#Schleuse_Platz_1(Schleusen_Nr := 3245, ErrQuit := #ErrQuit, B_InSchleuse := #BG3245, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0067, Schleuse_geöffnet := #MB3245, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz1_PS5.Stat.Ast, Error := %DB608.DBW222, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau1_PS5".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_1.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren := #Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 2
#Schleuse_Platz_2(Schleusen_Nr := 3251, ErrQuit := #ErrQuit, B_InSchleuse := #BG3251, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0070, Schleuse_geöffnet := #MB3251, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz2_PS5.Stat.Ast, Error := %DB608.DBW224, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Nachstau2_PS5".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_2.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren := #Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Platz 3
#Schleuse_Platz_3(Schleusen_Nr := 3255, ErrQuit := #ErrQuit, B_InSchleuse := #BG3255, Start_Ok := 1, Antrieb_Schleuse_aktiv := 1, Antrieb_plus_aktiv := #MA0071, Schleuse_geöffnet := #MB3255, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Platz3_PS5.Stat.Ast, Error := %DB608.DBW226, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.A_vor, hStOk := #ErrAnz);
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen := TRUE; END_IF;
IF #Schleuse_Platz_3.Dyn.Status.Trolley_draussen THEN #Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren := #Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren; END_IF;
END_REGION
REGION Schleuse Ausfahrt
#Schleuse_Ausfahrt(Schleusen_Nr := 3262, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3260, B_InSchleuse := #BG3262, B_AusSchleuse := #BG3263, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS5.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0071, Antrieb_plus_aktiv := #MA0082, Schleuse_geöffnet := #MB3262, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Ausfahrt_PS5.Stat.Ast, Error := %DB608.DBW228, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe."MA _Ausfahrt_PS5".Stat.A_PS, Antrieb_plus_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_plus_start := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_start, hStOk := #ErrAnz);
IF #MB3262 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS5.Stat.Ast := TRUE; END_IF;
IF #Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Schleuse Hauptstrecke vor Ausfahrt
#Schleuse_vor_Ausfahrt(Schleusen_Nr := 3265, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3264, B_InSchleuse := #BG3265, B_AusSchleuse := #BG3263, B_Stau_raus := #DArbeitspl_tze_Sensoren.Stau_nach_Ausfahrt_PS5.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0082, Antrieb_plus_aktiv := #MA0082, Schleuse_geöffnet := #MB3265, Y_Schleuse_Auf := #DArbeitspl_tze_Zylinder.Schleuse_Vor_Ausfahrt_PS5.Stat.Ast, Error := %DB608.DBW230, Antrieb_Schleuse_vor := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_vor, Antrieb_Schleuse_start := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_start, Antrieb_Schleuse_stop := #DArbeitspl_tze_Antriebe.MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS := #DArbeitspl_tze_Antriebe.MA0082.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // s.o. | s.o.
IF #MB3265 THEN #DArbeitspl_tze_Zylinder.Weiche_Ausfahrt_PS5.Stat.Ast := FALSE; END_IF;
IF #Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen THEN #Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" := FALSE; END_IF;
END_REGION
REGION Aktive Arbeitsplätze ermitteln (gilt für alle Prios)
#Aktivierte_ABPs := 0;
IF #Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DPS4_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DMPS3_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DMPS2_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
IF #DMPS1_OmniFahren.Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt THEN #Aktivierte_ABPs := #Aktivierte_ABPs + 1; END_IF;
END_REGION
REGION Ausfahr-Priorität
#Prio_Ausfahrt(BG_Haupt_Schleuse := #BG3265, Haupt_Schleuse_geöffnet := #MB3265, BG_ABP_Schleuse := #BG3262, ABP_Schleuse_geöffnet := #MB3262, Aktive_ABP := #Aktivierte_ABPs);
END_REGION
REGION Störungen anzeigen
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DAMR_Bereich.A01_UZ0615.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+36
View File
@@ -0,0 +1,36 @@
ORGANIZATION_BLOCK "Startup"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
DAMR_Bereich : Word; // war "DAMR_Bereich"
SGes : Word; // war "SGes"
END_VAR
BEGIN
REGION Neustart
#SGes.Neustart := TRUE;
#DAMR_Bereich.A01_UH06.Not_Aus.UH06 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0601 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0602 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0603 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0611 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0612 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0613 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0614 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0615 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0621 := FALSE;
#DAMR_Bereich.A01_UH06.Not_Aus.UZ0622 := FALSE;
#DAMR_Bereich.A01_UH06_Halle4.Not_Aus.UZ0620 := FALSE;
#DAMR_Bereich.A01_UC061.Not_Aus.UZ6102 := FALSE;
#DAMR_Bereich.A01_UC061.Not_Aus.UZ6103 := FALSE;
#DAMR_Bereich.A01_UC061.Not_Aus.UZ6104 := FALSE;
END_REGION
REGION Ende
RETURN;
END_REGION
END_ORGANIZATION_BLOCK
@@ -0,0 +1,47 @@
FUNCTION "Trolley_DL_Check_ID" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
TrolleyID : DInt;
TrolleyDL_OutDaten : Word; // war "TrolleyDL_OutDaten"
END_VAR
VAR_OUTPUT
Check_EndZiel : Word; // Ziel
Check_ZwischenZiel : Word; // Für Weiche,...
Check_Variante : Int; // Variante auf Trolley
Check_Standort : Word; // Standort (Puffer, Heber, unterwegs)
Check_ShopGroup : DInt;
Err : Bool;
MD220 : DWord; // war "MD220"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
MW196 : Word; // war "MW196"
END_VAR
BEGIN
REGION Trolley auslesen
#MD220 := #TrolleyID;
"DatenOut"(SSDB := 1000, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := DB1011.DBX0.0, Position := #MW196); // Eintrag lesen
#Err := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
END_REGION
REGION Relevante Daten übergeben
#Check_EndZiel := #TrolleyDL_OutDaten.OUTDaten.EndZiel;
#Check_ZwischenZiel := #TrolleyDL_OutDaten.OUTDaten.ZwischenZiel;
#Check_Variante := #TrolleyDL_OutDaten.OUTDaten.ShopGroup;
#Check_Standort := #TrolleyDL_OutDaten.OUTDaten.Standort;
#Check_ShopGroup := #TrolleyDL_OutDaten.OUTDaten.ShopGroup;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,36 @@
FUNCTION "Trolleydaten_löschen" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
END_VAR
VAR_OUTPUT
TrolleyDL_SearchDaten : Word; // war "TrolleyDL_SearchDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
MW200 : Word; // war "MW200"
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Trolleydaten auslesen und verändern
#TrolleyDL_SearchDaten.SEARCHDaten.TrolleyID := #TrolleyID;
"DatenOut"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, PARA := 16#E100, SEARCHDATEN := %DB1012.DBX0.0, RE_VAL := #MB198, Position := #MW200, OUTDATEN := %DB1011.DBX0.0); // Eintrag lesen + austragen
RETURN;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,51 @@
FUNCTION "Trolleydaten_neu_anlegen" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
Endziel : Word;
ShopGroup : DInt;
END_VAR
VAR_OUTPUT
TrolleyDL_INDaten : Word; // war "TrolleyDL_INDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
END_VAR
VAR_TEMP
Lager_DB : Int;
Lager_DW : Int;
SSDW : Int;
Position : Int;
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Erst mal alte Daten löschen
"Trolleydaten_löschen"(MB198 => "MB198", MW200 => "MW200", TrolleyDL_SearchDaten => "TrolleyDL_SearchDaten");
END_REGION
REGION Trolleydaten speichern
#TrolleyDL_INDaten.INDaten.TrolleyID := #TrolleyID;
#TrolleyDL_INDaten.INDaten.EndZiel := #Endziel;
#TrolleyDL_INDaten.INDaten.ShopGroup := #ShopGroup;
#TrolleyDL_INDaten.INDaten.ZwischenZiel := 0;
#TrolleyDL_INDaten.INDaten.Standort := 0;
"DatenIn"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, INDATEN := %DB1010.DBX0.0, RE_VAL := #MB198); // Daten in Datenbank schreiben:
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,43 @@
FUNCTION "Trolleydaten_ändern" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
Endziel : Word;
ShopGroup : DInt;
END_VAR
VAR_OUTPUT
TrolleyDL_OutDaten : Word; // war "TrolleyDL_OutDaten"
TrolleyDL_SearchDaten : Word; // war "TrolleyDL_SearchDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
MW200 : Word; // war "MW200"
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Trolleydaten auslesen und verändern
#TrolleyDL_SearchDaten.SEARCHDaten.TrolleyID := #TrolleyID;
"DatenOut"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, PARA := 16#0000, SEARCHDATEN := %DB1012.DBX0.0, RE_VAL := #MB198, Position := #MW200, OUTDATEN := %DB1011.DBX0.0); // Eintrag lesen
IF #MB198 <> 2#10000000 THEN RETURN; END_IF;
IF #Endziel <> -1 THEN #TrolleyDL_OutDaten.OUTDaten.EndZiel := #Endziel; END_IF;
IF #ShopGroup <> -1 THEN #TrolleyDL_OutDaten.OUTDaten.ShopGroup := #ShopGroup; END_IF;
"DatenIn"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, INDATEN := %DB1011.DBX0.0, RE_VAL := #MB198);
RETURN;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,24 @@
FUNCTION "Wandel_FC_für_DB1000" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
MD94 : DWord; // war "MD94"
END_VAR
VAR_OUTPUT
MW92 : Word; // war "MW92"
END_VAR
BEGIN
REGION Wandeln der Daten
#MW92 := #MD94 + -6040000;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,44 @@
FUNCTION "BCD (4stellig)_to_INT" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BCD_Wert : Word;
END_VAR
VAR_OUTPUT
Int_Wert : Int;
END_VAR
VAR_TEMP
BCD_Vergleich : Word;
Multiplikator : Int;
END_VAR
BEGIN
REGION Rückmeldung
#Int_Wert := 0;
#Multiplikator := 1;
END_REGION
REGION BCD-Wert wandeln
#BCD_Vergleich := #BCD_Wert;
#Int_Wert := ((#BCD_Wert AND 16#000F) * #Multiplikator) + #Int_Wert;
#Multiplikator := #Multiplikator * 16;
#BCD_Vergleich := SHR(IN := #BCD_Vergleich, N := 4);
#Int_Wert := ((SHR(IN := #BCD_Vergleich, N := 4) AND 16#000F) * #Multiplikator) + #Int_Wert;
#Multiplikator := #Multiplikator * 16;
#BCD_Vergleich := SHR(IN := #BCD_Vergleich, N := 4);
#Int_Wert := ((SHR(IN := #BCD_Vergleich, N := 4) AND 16#000F) * #Multiplikator) + #Int_Wert;
#Multiplikator := #Multiplikator * 16;
#BCD_Vergleich := SHR(IN := #BCD_Vergleich, N := 4);
#Int_Wert := ((SHR(IN := #BCD_Vergleich, N := 4) AND 16#000F) * #Multiplikator) + #Int_Wert;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,53 @@
FUNCTION "DL_Einsprung" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Bereich_DL : Int; // Nur für Stammdaten =1!
ID : Int;
MW224 : Word; // war "MW224"
MW226 : Word; // war "MW226"
END_VAR
VAR_OUTPUT
"Dyn.DB" : Int;
AR_Start : DInt;
Error : Bool;
MW200 : Word; // war "MW200"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
MW196 : Word; // war "MW196"
END_VAR
BEGIN
REGION Inittialisierung
#"Dyn.DB" := 0;
#AR_Start := 0;
#Error := TRUE;
END_REGION
REGION ID suchen
#MW200 := #ID;
"DatenOut"(SSDB := #Bereich_DL, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M200.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #MW196); // Eintrag lesen
#Error := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
END_REGION
REGION Daten übergeben
#"Dyn.DB" := #MW224;
IF #MW224 <= 0 THEN
#Error := TRUE;
RETURN;
END_IF;
#AR_Start := INT_TO_DINT(#MW226);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,39 @@
FUNCTION_BLOCK "Daten_Host_senden"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Port1_SendFIFO : Word; // war "Port1_SendFIFO"
Port2_SendFIFO : Word; // war "Port2_SendFIFO"
SF0002 : Word; // war "SF0002"
END_VAR
VAR_OUTPUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
END_VAR
VAR
Port1_senden { S7_SetPoint := 'False'} : "Port1_Daten_senden";
Port2_senden { S7_SetPoint := 'False'} : "Port2_Daten_senden";
END_VAR
BEGIN
REGION Daten über Port 1 senden
#Port1_senden();
IF #Port1_SendFIFO.ANZAHL > 70 THEN #g_7_HMI_Err_UH07_OB.Kommunikation.SendFIFO_Port1 := TRUE; END_IF;
IF (#Port1_SendFIFO.ANZAHL < 40) AND #SF0002 THEN #g_7_HMI_Err_UH07_OB.Kommunikation.SendFIFO_Port1 := FALSE; END_IF;
END_REGION
REGION Daten über Port 2 senden
#Port2_senden();
IF #Port2_SendFIFO.ANZAHL > 70 THEN #g_7_HMI_Err_UH07_OB.Kommunikation.SendFIFO_Port2 := TRUE; END_IF;
IF (#Port2_SendFIFO.ANZAHL < 40) AND #SF0002 THEN #g_7_HMI_Err_UH07_OB.Kommunikation.SendFIFO_Port2 := FALSE; END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,35 @@
FUNCTION_BLOCK "Daten_von_Host_empfangen"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
M8999_0 : Bool; // war "M8999.0"
MW196 : Word; // war "MW196"
END_VAR
VAR
Port1_empfangen { S7_SetPoint := 'False'} : "Port1_Daten_empfangen";
Port2_empfangen { S7_SetPoint := 'False'} : "Port2_Daten_empfangen";
END_VAR
BEGIN
REGION Testdaten übergeben
IF #M8999_0 THEN #M8999_0 := FALSE; END_IF;
IF #M8999_0 THEN "DBMOV"(QuellDB := 8999, QuellDW := 0, ZielDB := 9001, ZielDW := 0, Anzahl_DW := 15, RE_VAL := #MW196); END_IF;
END_REGION
REGION Daten über Port 1 empfangen
#Port1_empfangen();
END_REGION
REGION Daten über Port 2 empfangen
#Port2_empfangen();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+20
View File
@@ -0,0 +1,20 @@
FUNCTION "EP_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DEP_Sensoren"();
"DEP_OmniFahren"();
"DEntnahmePufferStrecken"();
"DEP_Sorter"();
"DEP_Zylinder"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,75 @@
FUNCTION_BLOCK "EP_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
DEP_Sorter : Word; // war "DEP_Sorter"
END_VAR
VAR_IN_OUT
BG4502 : Word; // war "BG4502"
BG4503 : Word; // war "BG4503"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
DVPtoEP_Antriebe : Word; // war "DVPtoEP_Antriebe"
MA0325 : Bool; // war "MA0325"
MB4503 : Byte; // war "MB4503"
END_VAR
VAR
Schleuse_4503 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
EP_1_voll { S7_SetPoint := 'True'} : Bool;
EP_2_voll { S7_SetPoint := 'True'} : Bool;
EP_3_voll { S7_SetPoint := 'True'} : Bool;
EP_4_voll { S7_SetPoint := 'True'} : Bool;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_4503.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4503.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
END_REGION
REGION Störungen quittieren UZ7402
#ErrQuit := (#DOutbound_Bereich.A01_UZ7402.StOk_aktiv OR #DOutbound_Bereich.A01_UC074.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 4503
#Schleuse_4503(Schleusen_Nr := 4503, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4502, B_InSchleuse := #BG4503, B_AusSchleuse := , Antrieb_Schleuse_aktiv := #MA0325, Schleuse_geöffnet := #MB4503, Error := %DB708.DBW564, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0325.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0325.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0325.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0325.Stat.A_PS, hStOk := #ErrAnz); // weiterfahrt über Sorter-Sep
IF #Schleuse_4503.Dyn.Status.Reset_aktiv THEN
#DEP_Sorter.Sorter_MB4503.Dyn.Scanner.Rec_IDX := 0;
#DEP_Sorter.Sorter_MB4503.Separator.Default_Ziel := 0;
#DEP_Sorter.Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel := 0;
END_IF;
END_REGION
REGION Störungen anzeigen UZ7402
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7402.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC074.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+55
View File
@@ -0,0 +1,55 @@
FUNCTION_BLOCK "EP_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG4504 : Word; // war "BG4504"
BG4505 : Word; // war "BG4505"
BG4506 : Word; // war "BG4506"
BG4507 : Word; // war "BG4507"
END_VAR
VAR
Stau_EP1 : "MSensoren";
Stau_EP2 : "MSensoren";
Stau_EP3 : "MSensoren";
Stau_EP4 : "MSensoren";
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau EntnahmePuffer
#Stau_EP1(ESensor := #BG4504, T_Ein := 100, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau EntnahmePuffer
#Stau_EP2(ESensor := #BG4505, T_Ein := 100, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau EntnahmePuffer
#Stau_EP3(ESensor := #BG4506, T_Ein := 100, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau EntnahmePuffer
#Stau_EP4(ESensor := #BG4507, T_Ein := 100, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+108
View File
@@ -0,0 +1,108 @@
FUNCTION "EP_Ziel_FC" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_10s_Impuls : Word; // war "10s-Impuls"
DEP_Sensoren : Word; // war "DEP_Sensoren"
EP_TravelFIFO : Bool; // war "EP_TravelFIFO"
Error_Bit : Bool; // war "Error.Bit"
MB4503 : Byte; // war "MB4503"
MW190 : Word; // war "MW190"
SGes : Word; // war "SGes"
END_VAR
VAR_OUTPUT
DEP_Sorter : Word; // war "DEP_Sorter"
Daten_f_r_SendFIFO : Word; // war "Daten_für_SendFIFO"
M180_6 : Bool; // war "M180.6"
END_VAR
VAR_IN_OUT
DEP_OmniFahren : Word; // war "DEP_OmniFahren"
MB199 : Byte; // war "MB199"
MW194 : Word; // war "MW194"
END_VAR
VAR_TEMP
Ziel_hex : Word;
Ziel_int : Int;
Zielebene : Word;
Error : Byte;
Position : Int;
Lager_DB : Int;
Lager_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
SSDW : Int;
EndZiel : Word;
Variante : Int;
AbrufID : DInt;
Fahrlisten_TrolleyID : DInt;
Fahrlisten_AbrufID : DInt;
Fahrlisten_Lager : Int;
Trolley_unbekannt : Bool; // Trolley ist nicht in DL
Express_Abruf : Bool;
"Error.Bit" : Bool;
END_VAR
BEGIN
REGION Rückmeldung
#M180_6 := FALSE;
END_REGION
REGION Schleuse 4503: Weiterfahren erlaubt ? (Sorter EP)
IF #MW190 <> 4503 THEN GOTO X4503E; END_IF;
IF (#EP_TravelFIFO.Travel_FIFO_BG4527.FIFO.ANZAHL <> 0) OR #MB4503 THEN RETURN; END_IF;
IF #SGes.Ohne_PC_Fahren THEN GOTO Sim; END_IF;
IF #SGes.Ohne_PC_Fahren AND NOT (#DEP_OmniFahren.Schleuse_4503.Status2.Telegramm_gesendet) THEN GOTO T4503; END_IF;
SimOk: ;
"BCD (4stellig)_to_INT"(BCD_Wert := #MW194, Int_Wert := #Ziel_int);
IF (#Ziel_int = 1) AND NOT (#DEP_Sensoren.Stau_EP1.Stat.B_Akt) THEN GOTO ZielOk; END_IF;
IF (#Ziel_int = 2) AND NOT (#DEP_Sensoren.Stau_EP2.Stat.B_Akt) THEN GOTO ZielOk; END_IF;
IF (#Ziel_int = 3) AND NOT (#DEP_Sensoren.Stau_EP3.Stat.B_Akt) THEN GOTO ZielOk; END_IF;
IF (#Ziel_int = 4) AND NOT (#DEP_Sensoren.Stau_EP4.Stat.B_Akt) THEN GOTO ZielOk; END_IF;
IF ((#Ziel_int = 4) AND NOT (#DEP_Sensoren.Stau_EP4.Stat.B_Akt)) AND #g_10s_Impuls THEN #DEP_OmniFahren.Schleuse_4503.Status2.Telegramm_gesendet := FALSE; END_IF;
RETURN;
ZielOk: ;
#DEP_Sorter.Sorter_MB4503.Separator.Default_Ziel := #Ziel_int + 200;
#DEP_Sorter.Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel := #Ziel_int + 200;
#DEP_Sorter.Sorter_MB4503.Dyn.Scanner.Rec_IDX := #DEP_OmniFahren.Schleuse_4503.Dyn.TrolleyID_Schleuse;
IF FALSE THEN #M180_6 := TRUE; END_IF;
RETURN;
T4503: ;
IF #DEP_OmniFahren.Schleuse_4503.Dyn.TrolleyID_Schleuse = 0 THEN RETURN; END_IF;
#Daten_f_r_SendFIFO."Status_2_Bit[0]" := #DEP_Sensoren.Stau_EP1.Stat.B_Akt;
#Daten_f_r_SendFIFO."Status_2_Bit[1]" := #DEP_Sensoren.Stau_EP2.Stat.B_Akt;
#Daten_f_r_SendFIFO."Status_2_Bit[2]" := #DEP_Sensoren.Stau_EP3.Stat.B_Akt;
#Daten_f_r_SendFIFO."Status_2_Bit[3]" := #DEP_Sensoren.Stau_EP4.Stat.B_Akt;
"Daten_für_SendFIFO"("TelegrammKennung[1]" := 'G', "TelegrammKennung[2]" := 'O', "TelegrammKennung[3]" := 'H', "TelegrammKennung[4]" := 'D', "TelegrammKennung[5]" := 'R', "TelegrammKennung[6]" := 'e', "TelegrammKennung[7]" := 'q', "TelegrammKennung[8]" := 'M', TrolleyID := #DEP_OmniFahren.Schleuse_4503.Dyn.TrolleyID_Schleuse, StationsNr := 4503, Port := 2, Ret_Val_FIFO_IN := #MB199, Error := ##Error_Bit);
IF NOT (##Error_Bit) THEN #DEP_OmniFahren.Schleuse_4503.Status2.Telegramm_gesendet := TRUE; END_IF;
RETURN;
Sim: ;
IF #DEP_Sensoren.Stau_EP1.Stat.B_Akt THEN #DEP_OmniFahren.EP_1_voll := TRUE; END_IF;
IF NOT (#DEP_OmniFahren.EP_1_voll) THEN GOTO StartSim; END_IF;
IF NOT (#DEP_OmniFahren.EP_1_voll) AND #DEP_Sensoren.Stau_EP2.Stat.B_Akt THEN #DEP_OmniFahren.EP_2_voll := TRUE; END_IF;
IF NOT (#DEP_OmniFahren.EP_2_voll) THEN GOTO StartSim; END_IF;
IF NOT (#DEP_OmniFahren.EP_2_voll) AND #DEP_Sensoren.Stau_EP3.Stat.B_Akt THEN #DEP_OmniFahren.EP_3_voll := TRUE; END_IF;
IF NOT (#DEP_OmniFahren.EP_3_voll) THEN GOTO StartSim; END_IF;
IF NOT (#DEP_OmniFahren.EP_3_voll) AND #DEP_Sensoren.Stau_EP4.Stat.B_Akt THEN #DEP_OmniFahren.EP_4_voll := TRUE; END_IF;
IF NOT (#DEP_OmniFahren.EP_4_voll) THEN GOTO StartSim; END_IF;
#DEP_OmniFahren.EP_1_voll := FALSE;
#DEP_OmniFahren.EP_2_voll := FALSE;
#DEP_OmniFahren.EP_3_voll := FALSE;
#DEP_OmniFahren.EP_4_voll := FALSE;
RETURN;
StartSim: ;
#MW194 := 16#4;
GOTO SimOk;
X4503E: ;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
+63
View File
@@ -0,0 +1,63 @@
FUNCTION_BLOCK "EP_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
VAR_IN_OUT
MB4503 : Byte; // war "MB4503"
MB4504 : Byte; // war "MB4504"
MB4505 : Byte; // war "MB4505"
MB4506 : Byte; // war "MB4506"
END_VAR
VAR
Sorter_4503 : "MZylinder"; //
Weiche_EP1 : "MZylinder"; //
Weiche_EP2 : "MZylinder";
Weiche_EP3 : "MZylinder";
Weiche_EP4 : "MZylinder";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC074/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UC074.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_4503
#Sorter_4503(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4503);
END_REGION
REGION Weiche_EP1
#Weiche_EP1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4504);
END_REGION
REGION Weiche_EP2
#Weiche_EP2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4505);
END_REGION
REGION Weiche_EP3
#Weiche_EP3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4506);
END_REGION
REGION Weiche_EP4
#Weiche_EP4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,126 @@
FUNCTION_BLOCK "EPtoLP_Antriebe"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
T194 : Word; // war "T194"
T197 : Word; // war "T197"
END_VAR
VAR_IN_OUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
FC0062 : Word; // war "FC0062"
FC0063 : Word; // war "FC0063"
FC0064 : Word; // war "FC0064"
FC0326 : Word; // war "FC0326"
FC0327 : Word; // war "FC0327"
FC0330 : Word; // war "FC0330"
FC0331 : Word; // war "FC0331"
FC0332 : Word; // war "FC0332"
FC0333 : Word; // war "FC0333"
MA0062 : Bool; // war "MA0062"
MA0063 : Bool; // war "MA0063"
MA0064 : Bool; // war "MA0064"
MA0326 : Bool; // war "MA0326"
MA0327 : Bool; // war "MA0327"
MA0330 : Bool; // war "MA0330"
MA0331 : Bool; // war "MA0331"
MA0332 : Bool; // war "MA0332"
MA0333 : Bool; // war "MA0333"
END_VAR
VAR
MA0326 : "MAntrieb_PowerSave";
MA0327 : "MAntrieb_PowerSave";
MA0330 : "MAntrieb_PowerSave";
MA0331 : "MAntrieb_PowerSave";
MA0332 : "MAntrieb_PowerSave";
MA0333 : "MAntrieb_PowerSave";
MA0062 : "MAntrieb_PowerSave";
MA0063 : "MAntrieb_PowerSave";
MA0064 : "MAntrieb_PowerSave";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik Linie ist aktiv
Hand : Bool; // Hand Linie ist aktiv
BereichErr : Bool; // Bereichsstörung -> Antrieb stoppen
QKontroll : Bool; // Frequenzumrichter schon 3s Netz EIN
FuKontroll : Bool; // Frequenzumrichter schon 3s Netz EIN
Quit : Bool; // Motorschutz-Störung quittieren
Qok : Bool; // Motorschutz ok
Jog1 : Bool; // Geschwindigkeit 1
Jog2 : Bool; // Geschwindigkeit 2
Betrieb : Bool; // Betriebsart aktiv
FC105_RET : Word; // Returnwert von FC105
Antrieb1 : Bool; // Antrieb dazuschalten
Antrieb2 : Bool; // Antrieb dazuschalten
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC074/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#Hand := FALSE;
#BereichErr := #DOutbound_Bereich.A01_UC074.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#QKontroll := #T194;
#FuKontroll := #T194;
#Quit := #DOutbound_Bereich.A01_UC074.StOk_aktiv;
END_REGION
REGION MA0326
#MA0326(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0326, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0326, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0326);
END_REGION
REGION MA0327
#MA0327(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0327, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0327, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0327);
END_REGION
REGION MA0330
#MA0330(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0330, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0330, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0330);
END_REGION
REGION MA0331
#MA0331(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0331, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0331, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0331);
END_REGION
REGION MA0332
#MA0332(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0332, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0332, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0332);
END_REGION
REGION MA0333
#MA0333(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0333, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0333, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0333);
END_REGION
REGION Übergabe des Bereichstatus System UH07/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#Hand := FALSE;
#BereichErr := #DOutbound_Bereich.A01_UH07.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#QKontroll := #T197;
#FuKontroll := #T197;
#Quit := #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION MA0062
#MA0062(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0062, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0062, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0062);
END_REGION
REGION MA0063
#MA0063(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0063, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0063, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0063);
END_REGION
REGION MA0064
#MA0064(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0064, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0064, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0064);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,19 @@
FUNCTION "EPtoLP_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DEPtoLP_Sensoren"();
"DEPtoLP_OmniFahren"();
"DEPtoLP_Zylinder"();
"DEPtoLP_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,299 @@
FUNCTION_BLOCK "EPtoLP_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_1s_Impuls : Word; // war "1s-Impuls"
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
MB4445 : Byte; // war "MB4445"
MB4457 : Byte; // war "MB4457"
END_VAR
VAR_IN_OUT
BG3303 : Word; // war "BG3303"
BG3304 : Word; // war "BG3304"
BG3367 : Word; // war "BG3367"
BG3370 : Word; // war "BG3370"
BG3372 : Word; // war "BG3372"
BG3373 : Word; // war "BG3373"
BG3377 : Word; // war "BG3377"
BG4455 : Word; // war "BG4455"
BG4456 : Word; // war "BG4456"
BG4457 : Word; // war "BG4457"
BG4460 : Word; // war "BG4460"
BG4461 : Word; // war "BG4461"
BG4462 : Word; // war "BG4462"
BG4463 : Word; // war "BG4463"
BG4464 : Word; // war "BG4464"
BG4465 : Word; // war "BG4465"
BG4466 : Word; // war "BG4466"
BG4467 : Word; // war "BG4467"
BG4511 : Word; // war "BG4511"
BG4512 : Word; // war "BG4512"
BG4513 : Word; // war "BG4513"
BG4514 : Word; // war "BG4514"
BG4515 : Word; // war "BG4515"
BG4516 : Word; // war "BG4516"
BG4517 : Word; // war "BG4517"
BG4520 : Word; // war "BG4520"
BG4521 : Word; // war "BG4521"
BG4522 : Word; // war "BG4522"
BG4531 : Word; // war "BG4531"
BG4532 : Word; // war "BG4532"
DEPtoLP_Antriebe : Word; // war "DEPtoLP_Antriebe"
DEPtoLP_Sensoren : Word; // war "DEPtoLP_Sensoren"
DEPtoLP_Zylinder : Word; // war "DEPtoLP_Zylinder"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
MA0062 : Bool; // war "MA0062"
MA0063 : Bool; // war "MA0063"
MA0064 : Bool; // war "MA0064"
MA0326 : Bool; // war "MA0326"
MA0327 : Bool; // war "MA0327"
MA0330 : Bool; // war "MA0330"
MA0331 : Bool; // war "MA0331"
MA0332 : Bool; // war "MA0332"
MA0333 : Bool; // war "MA0333"
MB3303 : Byte; // war "MB3303"
MB3370 : Byte; // war "MB3370"
MB4462 : Byte; // war "MB4462"
MB4463 : Byte; // war "MB4463"
MB4466 : Byte; // war "MB4466"
MB4512 : Byte; // war "MB4512"
MB4516 : Byte; // war "MB4516"
MB4520 : Byte; // war "MB4520"
MB4522 : Byte; // war "MB4522"
MB4532 : Byte; // war "MB4532"
END_VAR
VAR
Schleuse_4512 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_4532 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_4516 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_4520 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_4456 : "MHMOmniBereich_Plus";
Schleuse_4466 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_4462 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Bereich_4465 : "MHMOmniBereich_Plus";
Schleuse_3370 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3373 : "MHMOmniBereich_Plus";
Schleuse_3303 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_4522 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_4463 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Übergang_4514 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
Trolleys_starten : Struct
Flanke : Bool;
Wartezeit_aktiv : Bool;
Timer_Wartenzeit { S7_SetPoint := 'True'} : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
tGen1_Flanke : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_4512.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4532.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4516.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4522.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4520.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4456.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4466.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4462.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4463.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4465.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3370.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_3373.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3303.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4512.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4532.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4516.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4522.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4520.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Bereich_4456.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4466.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4462.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4463.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Bereich_4465.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_3370.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Bereich_3373.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_3303.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
END_REGION
REGION Störungen quittieren UZ7402/7403
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7402.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7403.StOk_aktiv) OR #DOutbound_Bereich.A01_UC074.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 4512
#Schleuse_4512(Schleusen_Nr := 4512, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4511, B_InSchleuse := #BG4512, B_Zähl := #BG4531, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4531.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0326, Schleuse_geöffnet := #MB4512, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4512.Stat.Ast, Error := %DB708.DBW576, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0326.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0326.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0326.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0326.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Identisch
END_REGION
REGION Schleuse 4532
#Stau_raus := #DEPtoLP_Sensoren.Stau_BG4513.Stat.B_Akt; // / O "DEP>LP_Sensoren".Stau_BG4515.Stat.B_Akt
#Schleuse_4532(Schleusen_Nr := 4532, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4531, B_InSchleuse := #BG4532, B_Zähl := #BG4513, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0326, Antrieb_plus_aktiv := #MA0326, Schleuse_geöffnet := #MB4532, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4532.Stat.Ast, Error := %DB708.DBW578, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0326.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0326.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0326.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0326.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION MA0326 / Übergang 4514
#Übergang_4514(ErrQuit := #ErrQuit, B_Anfang := #BG4513, B_Am_Übergang := #BG4514, B_Stau_Antrieb_plus := #BG4515, Antrieb_aktiv := #MA0326, Antrieb_plus_aktiv := #MA0327, Antrieb_vor := #DEPtoLP_Antriebe.MA0326.Stat.A_vor, Antrieb_start := #DEPtoLP_Antriebe.MA0326.Stat.A_start, Antrieb_stop := #DEPtoLP_Antriebe.MA0326.Stat.A_PS, Antrieb_plus_vor := #DEPtoLP_Antriebe.MA0327.Stat.A_vor, Antrieb_plus_start := #DEPtoLP_Antriebe.MA0327.Stat.A_start);
END_REGION
REGION Schleuse 4516
#Schleuse_4516(Schleusen_Nr := 4516, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4515, B_InSchleuse := #BG4516, B_AusSchleuse := #BG4517, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4517.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0327, Antrieb_plus_aktiv := #MA0327, Schleuse_geöffnet := #MB4516, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4516.Stat.Ast, Error := %DB708.DBW566, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0327.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0327.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0327.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Identisch
END_REGION
REGION Schleuse 4522
#Schleuse_4522(Schleusen_Nr := 4522, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4517, B_InSchleuse := #BG4522, B_AusSchleuse := #BG4521, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4521.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0327, Antrieb_plus_aktiv := #MA0327, Schleuse_geöffnet := #MB4522, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4522.Stat.Ast, Error := %DB708.DBW582, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0327.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0327.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0327.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Identisch
END_REGION
REGION Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung)
#tGen1_Flanke := #MB4520 AND NOT #Trolleys_starten.Flanke;
#Trolleys_starten.Flanke := #MB4520;
IF #tGen1_Flanke THEN #Trolleys_starten.Wartezeit_aktiv := TRUE; END_IF;
IF #tGen1_Flanke THEN #Trolleys_starten.Timer_Wartenzeit := 15; END_IF;
IF NOT (#Trolleys_starten.Wartezeit_aktiv) OR ((#MB4520 AND NOT (#MA0327)) OR NOT (#g_1s_Impuls)) THEN GOTO Wait; END_IF;
#Trolleys_starten.Timer_Wartenzeit := #Trolleys_starten.Timer_Wartenzeit + -1;
IF (#Trolleys_starten.Timer_Wartenzeit + -1) > 0 THEN GOTO Wait; END_IF;
#Trolleys_starten.Wartezeit_aktiv := FALSE;
Wait: ;
END_REGION
REGION Schleuse 4520
#Fahren_Ok := NOT (#Trolleys_starten.Wartezeit_aktiv);
#B_vor_Schleuse := #BG4517 OR #BG4521;
#Schleuse_4520(Schleusen_Nr := 4520, ErrQuit := #ErrQuit, B_VorSchleuse := #B_vor_Schleuse, B_InSchleuse := #BG4520, B_AusSchleuse := #BG4455, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4455.Stat.B_Akt, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := #MA0327, Antrieb_plus_aktiv := #MA0330, Schleuse_geöffnet := #MB4520, RestZeit_Bereich_plus := #Bereich_4456.Dyn.Restzeit, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4520.Stat.Ast, Error := %DB708.DBW568, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0327.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0327.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0327.Stat.A_PS, Antrieb_plus_vor := #Bereich_4456.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7402/7403
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7402.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7403.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC074.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7402/7401
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7402.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7401.StOk_aktiv) OR #DOutbound_Bereich.A01_UC074.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 4456
#B_vor_Schleuse := #MB4520 AND #BG4455;
#Stau_raus := #DEPtoLP_Sensoren.Stau_BG4457.Stat.B_Akt OR #DEPtoLP_Sensoren.Stau_BG4467.Stat.B_Akt;
#Bereich_4456(Bereichs_Nr := 4456, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG4456, B_Zähl := #BG4467, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0330, Antrieb_plus_aktiv := #MA0331, Antrieb_Bereich_vor := #DEPtoLP_Antriebe.MA0330.Stat.A_vor, Antrieb_Bereich_stop := #DEPtoLP_Antriebe.MA0330.Stat.Stop_vor, Error := %DB708.DBW478, Antrieb_Bereich_start := #DEPtoLP_Antriebe.MA0330.Stat.A_start, Antrieb_plus_vor := #DEPtoLP_Antriebe.MA0331.Stat.A_vor, Antrieb_plus_start := #DEPtoLP_Antriebe.MA0331.Stat.A_start, Antrieb_minus_vor := #DEPtoLP_Antriebe.MA0327.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7402/7401
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7402.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7401.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC074.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7401
#ErrQuit := (#DOutbound_Bereich.A01_UZ7401.StOk_aktiv OR #DOutbound_Bereich.A01_UC074.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 4466
#Start_ok := NOT (#MB4445) AND NOT (#MB4457);
#Schleuse_4466(Schleusen_Nr := 4466, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4457, B_InSchleuse := #BG4466, B_Zähl := #BG4461, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4461.Stat.B_Akt, Start_Ok := #Start_ok, Antrieb_Schleuse_aktiv := #MA0331, Antrieb_plus_aktiv := #MA0332, Schleuse_geöffnet := #MB4466, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4466.Stat.Ast, Error := %DB708.DBW562, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0331.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0331.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0331.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0331.Stat.A_PS, Antrieb_plus_vor := #DEPtoLP_Antriebe.MA0332.Stat.A_vor, Antrieb_plus_start := #DEPtoLP_Antriebe.MA0332.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 4462
#Schleuse_4462(Schleusen_Nr := 4462, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4461, B_InSchleuse := #BG4462, B_Zähl := #BG4460, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4460.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0332, Schleuse_geöffnet := #MB4462, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4462.Stat.Ast, Error := %DB708.DBW560, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0332.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0332.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0332.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0332.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 4463
#Schleuse_4463(Schleusen_Nr := 4463, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4460, B_InSchleuse := #BG4463, B_AusSchleuse := #BG4464, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG4464.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0332, Antrieb_plus_aktiv := #MA0333, Schleuse_geöffnet := #MB4463, RestZeit_Bereich_plus := #Bereich_4465.Dyn.Restzeit, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_4463.Stat.Ast, Error := %DB708.DBW584, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0332.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0332.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0332.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0332.Stat.A_PS, Antrieb_plus_vor := #Bereich_4465.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Bereich 4465 (vor BST 1)
#Fahren_Ok := ((((NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle3) AND NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle4)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST1_Feueralarm)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST1_Geschlossen)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST1_Störung)) AND #Schleuse_3370.Dyn.Sk.Bereich_ok;
#Bereich_4465(Bereichs_Nr := 4465, ErrQuit := #ErrQuit, B_BereichsAnfang := #BG4464, B_BereichsEnde := #BG4465, B_Zähl := #BG3367, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG3367.Stat.B_Akt, Start_Ok := #Fahren_Ok, Antrieb_Bereich_aktiv := #MA0333, Antrieb_plus_aktiv := #MA0062, Antrieb_Bereich_vor := #DEPtoLP_Antriebe.MA0333.Stat.A_vor, Antrieb_Bereich_stop := #DEPtoLP_Antriebe.MA0333.Stat.Stop_vor, Error := %DB708.DBW480, Antrieb_Bereich_start := #DEPtoLP_Antriebe.MA0333.Stat.A_start, Antrieb_plus_vor := #DEPtoLP_Antriebe.MA0062.Stat.A_vor, Antrieb_plus_start := #DEPtoLP_Antriebe.MA0062.Stat.A_start, Antrieb_minus_vor := #DEPtoLP_Antriebe.MA0332.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7401
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7401.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC074.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ0701
#ErrQuit := #DOutbound_Bereich.A01_UZ0701.StOk_aktiv OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3370 (hinter BST 1)
IF #Bereich_4465.Dyn.Status.Trolley_fährt_aus OR (#DEPtoLP_Sensoren.Stau_BG3367.Stat.B_Akt AND NOT (#BG3370)) THEN #DEPtoLP_Antriebe.MA0062.Stat.A_vor := TRUE; END_IF;
#Stau_raus := (#DEPtoLP_Sensoren.Stau_BG3371.Stat.B_Akt OR #DEPtoLP_Sensoren.Stau_BG3372.Stat.B_Akt) OR #DEPtoLP_Sensoren.Stau_BG3377.Stat.B_Akt;
#Schleuse_3370(Schleusen_Nr := 3370, ErrQuit := #ErrQuit, B_VorSchleuse := #DEPtoLP_Sensoren.Stau_BG3367.Stat.B_Akt, B_InSchleuse := #BG3370, B_AusSchleuse := #BG3372, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0062, Antrieb_plus_aktiv := #MA0063, Schleuse_geöffnet := #MB3370, RestZeit_Bereich_plus := #Bereich_3373.Dyn.Restzeit, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_3370.Stat.Ast, Error := %DB708.DBW532, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0062.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0062.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0062.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0062.Stat.A_PS, Antrieb_plus_vor := #Bereich_3373.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ0701
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0701.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ0701/0702
#ErrQuit := (#DOutbound_Bereich.A01_UZ0701.StOk_aktiv OR #DOutbound_Bereich.A01_UZ0702.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 3373 (Runter ins EG)
#B_vor_Schleuse := #MB3370 AND #BG3372;
#Stau_raus := #DEPtoLP_Sensoren.Stau_BG3376.Stat.B_Akt OR #DEPtoLP_Sensoren.Stau_BG3377.Stat.B_Akt;
#Bereich_3373(Bereichs_Nr := 3373, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3373, B_Zähl := #BG3377, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0063, Antrieb_plus_aktiv := #MA0064, Antrieb_Bereich_vor := #DEPtoLP_Antriebe.MA0063.Stat.A_vor, Antrieb_Bereich_stop := #DEPtoLP_Antriebe.MA0063.Stat.Stop_vor, Error := %DB708.DBW456, Antrieb_Bereich_start := #DEPtoLP_Antriebe.MA0063.Stat.A_start, Antrieb_plus_vor := #DEPtoLP_Antriebe.MA0064.Stat.A_vor, Antrieb_plus_start := #DEPtoLP_Antriebe.MA0064.Stat.A_start, Antrieb_minus_vor := #DEPtoLP_Antriebe.MA0062.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ0701/0702
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0701.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ0702.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ0702
#ErrQuit := #DOutbound_Bereich.A01_UZ0702.StOk_aktiv OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3303
#Schleuse_3303(Schleusen_Nr := 3303, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3377, B_InSchleuse := #BG3303, B_AusSchleuse := #BG3304, B_Stau_raus := #DEPtoLP_Sensoren.Stau_BG3304.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0064, Antrieb_plus_aktiv := #MA0064, Schleuse_geöffnet := #MB3303, Y_Schleuse_Auf := #DEPtoLP_Zylinder.Schleuse_3303.Stat.Ast, Error := %DB708.DBW522, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0064.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0064.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0064.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // wie oben
END_REGION
REGION Störungen anzeigen UZ0702
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0702.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,133 @@
FUNCTION_BLOCK "EPtoLP_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG3304 : Word; // war "BG3304"
BG3367 : Word; // war "BG3367"
BG3371 : Word; // war "BG3371"
BG3372 : Word; // war "BG3372"
BG3376 : Word; // war "BG3376"
BG3377 : Word; // war "BG3377"
BG4455 : Word; // war "BG4455"
BG4457 : Word; // war "BG4457"
BG4460 : Word; // war "BG4460"
BG4461 : Word; // war "BG4461"
BG4464 : Word; // war "BG4464"
BG4467 : Word; // war "BG4467"
BG4513 : Word; // war "BG4513"
BG4515 : Word; // war "BG4515"
BG4517 : Word; // war "BG4517"
BG4521 : Word; // war "BG4521"
BG4531 : Word; // war "BG4531"
END_VAR
VAR
Stau_BG4531 : "MSensoren"; // Stau am Sensor Einfahrt MA0326
Stau_BG4513 : "MSensoren"; // Stau am Sensor Mitte MA0326
Stau_BG4515 : "MSensoren"; // Stau am Sensor Einfahrt MA0327
Stau_BG4517 : "MSensoren"; // Stau am Sensor Mitte MA0327
Stau_BG4521 : "MSensoren"; // Stau am Sensor Ende MA0327
Stau_BG4455 : "MSensoren"; // Stau am Sensor Einfahrt MA0330
Stau_BG4457 : "MSensoren"; // Stau am Sensor Einfahrt MA0331
Stau_BG4467 : "MSensoren"; // Stau am Sensor Mitte MA0331
Stau_BG4461 : "MSensoren"; // Stau am Sensor Einfahrt MA0332
Stau_BG4460 : "MSensoren"; // Stau am Sensor Mitte MA0332
Stau_BG4464 : "MSensoren"; // Stau am Sensor Einfahrt MA0330
Stau_BG3367 : "MSensoren"; // Stau am hinter BST 1
Stau_BG3371 : "MSensoren"; // Stau am Sensor Einfahrt MA0063
Stau_BG3372 : "MSensoren"; // Stau am Sensor Einfahrt MA0063
Stau_BG3376 : "MSensoren"; // Stau am Sensor Einfahrt MA0064
Stau_BG3377 : "MSensoren"; // Stau am Sensor Mitte MA0064
Stau_BG3304 : "MSensoren"; // Stau am Sensor vor Schleuse MB3305
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau am Sensor nach Schleuse 4512
#Stau_BG4531(ESensor := #BG4531, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor nach Schleuse 4532
#Stau_BG4513(ESensor := #BG4513, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0327
#Stau_BG4515(ESensor := #BG4515, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0327
#Stau_BG4517(ESensor := #BG4517, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Ende MA0327
#Stau_BG4521(ESensor := #BG4521, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0330
#Stau_BG4455(ESensor := #BG4455, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0331
#Stau_BG4457(ESensor := #BG4457, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0331
#Stau_BG4467(ESensor := #BG4467, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0332
#Stau_BG4461(ESensor := #BG4461, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Ende MA0332
#Stau_BG4460(ESensor := #BG4460, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Anfang MA0333
#Stau_BG4464(ESensor := #BG4464, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor hinter BST1
#Stau_BG3367(ESensor := #BG3367, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor vor MA0063
#Stau_BG3371(ESensor := #BG3371, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Anfang MA0063
#Stau_BG3372(ESensor := #BG3372, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0064
#Stau_BG3376(ESensor := #BG3376, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0064
#Stau_BG3377(ESensor := #BG3377, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0064 (vor Schleuse 3305)
#Stau_BG3304(ESensor := #BG3304, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,99 @@
FUNCTION_BLOCK "EPtoLP_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
VAR_IN_OUT
MB3303 : Byte; // war "MB3303"
MB3370 : Byte; // war "MB3370"
MB4462 : Byte; // war "MB4462"
MB4463 : Byte; // war "MB4463"
MB4466 : Byte; // war "MB4466"
MB4512 : Byte; // war "MB4512"
MB4516 : Byte; // war "MB4516"
MB4520 : Byte; // war "MB4520"
MB4522 : Byte; // war "MB4522"
MB4532 : Byte; // war "MB4532"
END_VAR
VAR
Schleuse_4512 : "MZylinder"; //
Schleuse_4532 : "MZylinder";
Schleuse_4516 : "MZylinder"; //
Schleuse_4522 : "MZylinder"; //
Schleuse_4520 : "MZylinder";
Schleuse_4466 : "MZylinder";
Schleuse_4462 : "MZylinder";
Schleuse_4463 : "MZylinder";
Schleuse_3370 : "MZylinder";
Schleuse_3303 : "MZylinder";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC074/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UC074.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_4512
#Schleuse_4512(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4512);
END_REGION
REGION Schleuse_4532
#Schleuse_4532(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4532);
END_REGION
REGION Schleuse_4516
#Schleuse_4516(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4516);
END_REGION
REGION Schleuse_4522
#Schleuse_4522(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4522);
END_REGION
REGION Schleuse_4520
#Schleuse_4520(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4520);
END_REGION
REGION Schleuse_4466
#Schleuse_4466(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4466);
END_REGION
REGION Schleuse_4462
#Schleuse_4462(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4462);
END_REGION
REGION Übergabe des Bereichstatus System UH07/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UH07.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next1; END_IF;
END_REGION
REGION Schleuse_4463
#Schleuse_4463(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4463);
END_REGION
REGION Schleuse_3370
#Schleuse_3370(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3370);
END_REGION
REGION Schleuse_3303
#Schleuse_3303(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3303);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,65 @@
FUNCTION_BLOCK "EntnahmePufferStrecken"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG4504 : Word; // war "BG4504"
BG4505 : Word; // war "BG4505"
BG4506 : Word; // war "BG4506"
BG4507 : Word; // war "BG4507"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
END_VAR
VAR
EntnahmePuffer_01 : "MHMEntnahmepuffer"; // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende
EntnahmePuffer_02 : "MHMEntnahmepuffer"; // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende
EntnahmePuffer_03 : "MHMEntnahmepuffer"; // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende
EntnahmePuffer_04 : "MHMEntnahmepuffer"; // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Antrieb : Bool;
Stau : Bool;
Start_Ok : Bool;
SorterReset : Bool;
A_Err : Char;
B_Err : Char;
C_Err : Char;
D_Err : Char;
END_VAR
BEGIN
REGION Störung quittieren UZ7402
#ErrQuit := #DOutbound_Bereich.A01_UZ7402.StOk_aktiv;
END_REGION
REGION EntnahmePuffer 01
#ErrAnz := FALSE;
#EntnahmePuffer_01(EntnahmePuffer_Nr := 201, B_LeerpufferEinfahrt := #BG4504, Error := %DB708.DBW164, hStOk := #ErrAnz);
END_REGION
REGION EntnahmePuffer 02
#EntnahmePuffer_02(EntnahmePuffer_Nr := 202, B_LeerpufferEinfahrt := #BG4505, Error := %DB708.DBW166, hStOk := #ErrAnz);
END_REGION
REGION EntnahmePuffer 03
#EntnahmePuffer_03(EntnahmePuffer_Nr := 203, B_LeerpufferEinfahrt := #BG4506, Error := %DB708.DBW168, hStOk := #ErrAnz);
END_REGION
REGION EntnahmePuffer 04
#EntnahmePuffer_04(EntnahmePuffer_Nr := 204, B_LeerpufferEinfahrt := #BG4507, Error := %DB708.DBW170, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7402
IF #ErrAnz THEN #DOutbound_Bereich.A01_UZ7402.StOk_blinken := TRUE; END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,19 @@
FUNCTION "HWtoOB_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DHWtoVP_Sensoren"();
"DHWtoVP_OmniFahren"();
"DHWtoVP_Zylinder"();
"DHWtoVP_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,352 @@
FUNCTION_BLOCK "HWtoVP_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3133 : Word; // war "BG3133"
DI0246 : Word; // war "DI0246"
DI0247 : Word; // war "DI0247"
MB4210 : Byte; // war "MB4210"
MB4223 : Byte; // war "MB4223"
END_VAR
VAR_OUTPUT
DQ0246 : Word; // war "DQ0246"
DQ0247 : Word; // war "DQ0247"
PF0136 : Word; // war "PF0136"
END_VAR
VAR_IN_OUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
BG3127 : Word; // war "BG3127"
BG3130 : Word; // war "BG3130"
BG3131 : Word; // war "BG3131"
BG3132 : Word; // war "BG3132"
BG3134 : Word; // war "BG3134"
BG3135 : Word; // war "BG3135"
BG3136 : Word; // war "BG3136"
BG3141 : Word; // war "BG3141"
BG3142 : Word; // war "BG3142"
BG3143 : Word; // war "BG3143"
BG3144 : Word; // war "BG3144"
BG3145 : Word; // war "BG3145"
BG3724 : Word; // war "BG3724"
BG3725 : Word; // war "BG3725"
BG3730 : Word; // war "BG3730"
BG3731 : Word; // war "BG3731"
BG4200 : Word; // war "BG4200"
BG4201 : Word; // war "BG4201"
BG4202 : Word; // war "BG4202"
BG4203 : Word; // war "BG4203"
BG4204 : Word; // war "BG4204"
BG4205 : Word; // war "BG4205"
BG4206 : Word; // war "BG4206"
BG4207 : Word; // war "BG4207"
BG4211 : Word; // war "BG4211"
BG4212 : Word; // war "BG4212"
BG4213 : Word; // war "BG4213"
BG4214 : Word; // war "BG4214"
BG4215 : Word; // war "BG4215"
BG4216 : Word; // war "BG4216"
BG4217 : Word; // war "BG4217"
DHWtoVP_Antriebe : Word; // war "DHWtoVP_Antriebe"
DHWtoVP_Sensoren : Word; // war "DHWtoVP_Sensoren"
DHWtoVP_Zylinder : Word; // war "DHWtoVP_Zylinder"
DLPtoHW_Antriebe : Word; // war "DLPtoHW_Antriebe"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
DSchnittstelle_zu_AMR : Word; // war "DSchnittstelle_zu_AMR"
MA0140 : Bool; // war "MA0140"
MA0141 : Bool; // war "MA0141"
MA0142 : Bool; // war "MA0142"
MA0143 : Bool; // war "MA0143"
MA0144 : Bool; // war "MA0144"
MA0200 : Bool; // war "MA0200"
MA0201 : Bool; // war "MA0201"
MA0260 : Bool; // war "MA0260"
MA0261 : Bool; // war "MA0261"
MA0262 : Bool; // war "MA0262"
MA0263 : Bool; // war "MA0263"
MA0264 : Bool; // war "MA0264"
MB3131 : Byte; // war "MB3131"
MB3134 : Byte; // war "MB3134"
MB3136 : Byte; // war "MB3136"
MB3140 : Byte; // war "MB3140"
MB3141 : Byte; // war "MB3141"
MB3143 : Byte; // war "MB3143"
MB3725 : Byte; // war "MB3725"
MB4200 : Byte; // war "MB4200"
MB4207 : Byte; // war "MB4207"
MB4212 : Byte; // war "MB4212"
MB4214 : Byte; // war "MB4214"
MB4217 : Byte; // war "MB4217"
END_VAR
VAR
Schleuse_3725 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3731 : "MHMOmniBereich_Plus";
Schleuse_4200 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_4203 : "MHMOmniBereich_Plus";
Schleuse_4207 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_4212 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_4214 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3145 : "MHMOmniBereich_Plus";
Schleuse_3143 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_3141 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Weiche_3140 : "MHMOmniWeiche_Plus";
Schleuse_3131 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3134 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3136 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_4217 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Übergang_4205 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
Test_RFID : Struct
Flanke : Bool;
Stop_Wegen_Test : Bool;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_vor : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3725.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_3731.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4200.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4203.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4217.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4207.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4212.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4214.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_3145.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3143.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3141.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Weiche_3140.Dyn.Status.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3131.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3134.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3136.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3725.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC072.BereichErr);
#Bereich_3731.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC072.BereichErr);
#Schleuse_4200.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Bereich_4203.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Schleuse_4217.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Schleuse_4207.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Schleuse_4212.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Schleuse_4214.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Bereich_3145.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Schleuse_3143.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Schleuse_3141.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Weiche_3140.Dyn.Status.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Schleuse_3131.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Schleuse_3134.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Schleuse_3136.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
END_REGION
REGION Störungen quittieren UZ7202
#ErrQuit := (#DOutbound_Bereich.A01_UZ7202.StOk_aktiv OR #DOutbound_Bereich.A01_UC072.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3725 (vor AFS)
IF #DSchnittstelle_zu_AMR.From_UH06.MA0200_A_vor THEN #DHWtoVP_Antriebe.MA0200.Stat.A_vor := TRUE; END_IF;
IF #DSchnittstelle_zu_AMR.From_UH06.MA0200_A_start THEN #DHWtoVP_Antriebe.MA0200.Stat.A_start := TRUE; END_IF;
#DSchnittstelle_zu_AMR.To_UH06.MA0200_kein_Stau := (#Schleuse_3725.Dyn.Sk.Bereich_ok AND #Schleuse_3725.Dyn.Sk.Auto_akt) AND NOT (#DHWtoVP_Sensoren.Stau_BG3724.Stat.B_Akt);
#DSchnittstelle_zu_AMR.To_UH06.MA0200_aktiv := #MA0200;
#DSchnittstelle_zu_AMR.To_UH06.BG3724_aktiv := #BG3724;
#Schleuse_3725(Schleusen_Nr := 3725, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3724, B_InSchleuse := #BG3725, B_AusSchleuse := #BG3730, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG3730.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0200, Antrieb_plus_aktiv := #MA0201, Schleuse_geöffnet := #MB3725, RestZeit_Bereich_plus := #Bereich_3731.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_3725.Stat.Ast, Error := %DB708.DBW536, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0200.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0200.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0200.Stat.A_PS, Antrieb_plus_vor := #Bereich_3731.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Bereich 3731 (vor BST 2)
#Fahren_Ok := ((((NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle3) AND NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle4)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST2_Feueralarm)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST2_Geschlossen)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST2_Störung)) AND #Schleuse_4200.Dyn.Sk.Bereich_ok;
#B_vor_Schleuse := #BG3730 AND #MB3725;
#Stau_raus := #DHWtoVP_Sensoren.Stau_BG4201.Stat.B_Akt;
#Bereich_3731(Bereichs_Nr := 3731, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3731, B_Zähl := #BG4201, B_Stau_raus := #Stau_raus, Start_Ok := #Fahren_Ok, Antrieb_Bereich_aktiv := #MA0201, Antrieb_plus_aktiv := #MA0260, Antrieb_Bereich_vor := #DHWtoVP_Antriebe.MA0201.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoVP_Antriebe.MA0201.Stat.Stop_vor, Error := %DB708.DBW458, Antrieb_Bereich_start := #DHWtoVP_Antriebe.MA0201.Stat.A_start, Antrieb_plus_vor := #DHWtoVP_Antriebe.MA0260.Stat.A_vor, Antrieb_plus_start := #DHWtoVP_Antriebe.MA0260.Stat.A_start, Antrieb_minus_vor := #DHWtoVP_Antriebe.MA0200.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7202
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7202.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC072.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7202/7302
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7202.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7302.StOk_aktiv) OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 4200 (hinter BST 2)
#Schleuse_4200(Schleusen_Nr := 4200, ErrQuit := #ErrQuit, B_InSchleuse := #BG4200, B_AusSchleuse := #BG4202, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG4202.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0260, Antrieb_plus_aktiv := #MA0261, Schleuse_geöffnet := #MB4200, RestZeit_Bereich_plus := #Bereich_4203.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_4200.Stat.Ast, Error := %DB708.DBW538, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0260.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0260.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0260.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0260.Stat.A_PS, Antrieb_plus_vor := #Bereich_4203.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Bereich 4203
#B_vor_Schleuse := #BG4202 AND #MB4200;
#Stau_raus := #DHWtoVP_Sensoren.Stau_BG4204.Stat.B_Akt OR #DHWtoVP_Sensoren.Stau_BG4206.Stat.B_Akt;
#Bereich_4203(Bereichs_Nr := 4203, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG4203, B_Zähl := #BG4204, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0261, Antrieb_plus_aktiv := #MA0262, Antrieb_Bereich_vor := #DHWtoVP_Antriebe.MA0261.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoVP_Antriebe.MA0261.Stat.Stop_vor, Error := %DB708.DBW464, Antrieb_Bereich_start := #DHWtoVP_Antriebe.MA0261.Stat.A_start, Antrieb_plus_vor := #DHWtoVP_Antriebe.MA0262.Stat.A_vor, Antrieb_plus_start := #DHWtoVP_Antriebe.MA0262.Stat.A_start, Antrieb_minus_vor := #DHWtoVP_Antriebe.MA0260.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7202/7302
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7202.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7302.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7302/7303
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7302.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7303.StOk_aktiv) OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION MA0262 / Übergang 4205
#Übergang_4205(ErrQuit := #ErrQuit, B_Anfang := #BG4204, B_Am_Übergang := #BG4205, B_Stau_Antrieb_plus := #BG4206, Antrieb_aktiv := #MA0262, Antrieb_plus_aktiv := #MA0263, Antrieb_vor := #DHWtoVP_Antriebe.MA0262.Stat.A_vor, Antrieb_start := #DHWtoVP_Antriebe.MA0262.Stat.A_start, Antrieb_stop := #DHWtoVP_Antriebe.MA0262.Stat.A_PS, Antrieb_plus_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, Antrieb_plus_start := #DHWtoVP_Antriebe.MA0263.Stat.A_start);
END_REGION
REGION Schleuse 4217 (Vor RFID-Gate)
#Start_ok := #DI0246 OR #DI0247; // / UN #Test_RFID.Stop_Wegen_Test
#g_7_HMI_Err_UH07_OB.RFID_Gate.Gate_nicht_bereit := (#BG4217 AND NOT (#MB4217)) AND NOT (#Start_ok);
#g_7_HMI_Err_UH07_OB.RFID_Gate.Gate_ByPAss := #DI0247;
#Schleuse_4217(Schleusen_Nr := 4217, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4206, B_InSchleuse := #BG4217, B_Zähl := #BG4216, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG4216.Stat.B_Akt, Start_Ok := #Start_ok, Antrieb_Schleuse_aktiv := #MA0263, Antrieb_plus_aktiv := #MA0263, Schleuse_geöffnet := #MB4217, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_4217.Stat.Ast, Error := %DB708.DBW580, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0263.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0263.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // da schon oben verwendet | da schon oben verwendet
#DQ0246 := #Schleuse_4217.Dyn.Sk.Bereich_ok;
#DQ0247 := #MB4217;
END_REGION
REGION Schleuse 4207 (Plus)
#Stau_raus := #DHWtoVP_Sensoren.Stau_BG4210.Stat.B_Akt OR #DHWtoVP_Sensoren.Stau_BG4211.Stat.B_Akt;
#Start_ok := NOT (#MB4223) AND NOT (#MB4210);
#Schleuse_4207(Schleusen_Nr := 4207, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4216, B_InSchleuse := #BG4207, B_Zähl := #BG4211, B_Stau_raus := #Stau_raus, Start_Ok := #Start_ok, Antrieb_Schleuse_aktiv := #MA0263, Antrieb_plus_aktiv := #MA0264, Schleuse_geöffnet := #MB4207, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_4207.Stat.Ast, Error := %DB708.DBW540, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0263.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0263.Stat.A_PS, Antrieb_plus_vor := #DLPtoHW_Antriebe.MA0264.Stat.A_vor, Antrieb_plus_start := #DLPtoHW_Antriebe.MA0264.Stat.A_start, hStOk := #ErrAnz);
IF #MA0263 AND ((#Schleuse_4207.Dyn.Raus_Trolleys > 0) OR #BG4211) THEN #DLPtoHW_Antriebe.MA0264.Stat.A_vor := TRUE; END_IF;
END_REGION
REGION Störungen anzeigen UZ7302/7303
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7302.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7303.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7303
#ErrQuit := (#DOutbound_Bereich.A01_UZ7303.StOk_aktiv OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 4212
#Schleuse_4212(Schleusen_Nr := 4212, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4211, B_InSchleuse := #BG4212, B_AusSchleuse := #BG4213, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG4213.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0263, Antrieb_plus_aktiv := #MA0263, Schleuse_geöffnet := #MB4212, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_4212.Stat.Ast, Error := %DB708.DBW542, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0263.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0263.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // da schon oben verwendet | da schon oben verwendet
END_REGION
REGION Schleuse 4214
#Schleuse_4214(Schleusen_Nr := 4214, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4213, B_InSchleuse := #BG4214, B_AusSchleuse := #BG4215, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG4215.Stat.B_Akt, Start_Ok := #Bereich_3145.Dyn.Sk.Bereich_ok, Antrieb_Schleuse_aktiv := #MA0263, Antrieb_plus_aktiv := #MA0140, Schleuse_geöffnet := #MB4214, RestZeit_Bereich_plus := #Bereich_3145.Dyn.Restzeit, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_4214.Stat.Ast, Error := %DB708.DBW544, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0263.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0263.Stat.A_PS, Antrieb_plus_vor := #Bereich_3145.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7303
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7303.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7303/7101
#ErrQuit := (((#DOutbound_Bereich.A01_UZ7303.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7101.StOk_aktiv) OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UC071.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 3145
#B_vor_Schleuse := #BG4215 AND #MB4214;
#Bereich_3145(Bereichs_Nr := 3145, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3145, B_Zähl := #BG3144, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG3144.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0140, Antrieb_plus_aktiv := #MA0141, Antrieb_Bereich_vor := #DHWtoVP_Antriebe.MA0140.Stat.A_vor, Antrieb_Bereich_stop := #DHWtoVP_Antriebe.MA0140.Stat.Stop_vor, Error := %DB708.DBW450, Antrieb_Bereich_start := #DHWtoVP_Antriebe.MA0140.Stat.A_start, Antrieb_plus_vor := #DHWtoVP_Antriebe.MA0141.Stat.A_vor, Antrieb_plus_start := #DHWtoVP_Antriebe.MA0141.Stat.A_start, Antrieb_minus_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7303/7101
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7303.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7101.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC071.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7101/7102
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7101.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7102.StOk_aktiv) OR #DOutbound_Bereich.A01_UC071.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3143
#Schleuse_3143(Schleusen_Nr := 3143, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3144, B_InSchleuse := #BG3143, B_Zähl := #BG3142, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG3142.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0141, Antrieb_plus_aktiv := #MA0141, Schleuse_geöffnet := #MB3143, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_3143.Stat.Ast, Error := %DB708.DBW514, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0141.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0141.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0141.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0141.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3141 (vor Weiche zum KontrollPlatz)
#Start_ok := NOT (#MB3136);
#Schleuse_3141(Schleusen_Nr := 3141, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3142, B_InSchleuse := #BG3141, B_Zähl := , B_Stau_raus := , Start_Ok := #Start_ok, Antrieb_Schleuse_aktiv := #MA0141, Antrieb_plus_aktiv := #MA0141, Schleuse_geöffnet := #MB3141, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_3141.Stat.Ast, Error := %DB708.DBW512, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0141.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0141.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0141.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0141.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // über Weiche | über Ziel-FC | über Weiche | über Weiche
IF #MB3141 THEN #DHWtoVP_Zylinder.Weiche_3137.Stat.Ast := FALSE; END_IF;
END_REGION
REGION Weiche 3140 (zum Kontrollplatz)
#Antrieb_vor := FALSE;
#Antrieb_stop := FALSE;
#Antrieb_aktiv := #MA0141 AND #MA0143;
#Weiche_3140(Weichen_Nr := 3140, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #BG3127, B_Ziel_abzweig := #BG3130, Antrieb_Weiche_aktiv := #Antrieb_aktiv, Antrieb_Gerade_aktiv := #MA0144, Antrieb_Abzweig_aktiv := #MA0142, Weiche_ist_AST := #MB3140, Y_Weiche_abzweig := #DHWtoVP_Zylinder.Weiche_3140.Stat.Ast, Error := %DB708.DBW510, Antrieb_Weiche_vor := #Antrieb_vor, Antrieb_Weiche_stop := #Antrieb_stop, Antrieb_Weiche_gerade_vor := #DHWtoVP_Antriebe.MA0144.Stat.A_vor, Antrieb_Weiche_gerade_stop := #DHWtoVP_Antriebe.MA0144.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor := #DHWtoVP_Antriebe.MA0142.Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DHWtoVP_Antriebe.MA0142.Stat.Stop_vor, hStOk := #ErrAnz);
IF #Antrieb_vor THEN
#DHWtoVP_Antriebe.MA0141.Stat.A_vor := TRUE;
#DHWtoVP_Antriebe.MA0143.Stat.A_vor := TRUE;
END_IF;
IF #Antrieb_stop THEN
#DHWtoVP_Antriebe.MA0141.Stat.Stop_vor := TRUE;
#DHWtoVP_Antriebe.MA0142.Stat.Stop_vor := TRUE;
END_IF;
IF FALSE THEN
#DHWtoVP_Antriebe.MA0141.Stat.Stop_vor := TRUE;
#DHWtoVP_Antriebe.MA0142.Stat.Stop_vor := TRUE;
#DHWtoVP_Antriebe.MA0144.Stat.Stop_vor := TRUE;
END_IF;
END_REGION
REGION Schleuse 3131(vor Kontrollplatz)
#Stau_raus := #DHWtoVP_Sensoren.Stau_BG3132.Stat.B_Akt OR #DHWtoVP_Sensoren.Stau_BG3133.Stat.B_Akt;
#Schleuse_3131(Schleusen_Nr := 3131, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3130, B_InSchleuse := #BG3131, B_AusSchleuse := #BG3132, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0142, Antrieb_plus_aktiv := #MA0142, Schleuse_geöffnet := #MB3131, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_3131.Stat.Ast, Error := %DB708.DBW504, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0142.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0142.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0142.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0142.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3134 (Kontrollplatz)
#B_vor_Schleuse := (#BG3133 AND NOT (#BG3134)) OR #BG3132;
IF #Schleuse_3134.Dyn.Sk.Akt_Schritt <> 12 THEN #PF0136 := FALSE; END_IF;
#Schleuse_3134(Schleusen_Nr := 3134, ErrQuit := #ErrQuit, B_VorSchleuse := #B_vor_Schleuse, B_InSchleuse := #BG3134, B_AusSchleuse := #BG3135, B_Stau_raus := #DHWtoVP_Sensoren.Stau_BG3135.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0142, Antrieb_plus_aktiv := #MA0143, Schleuse_geöffnet := #MB3134, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_3134.Stat.Ast, Error := %DB708.DBW506, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0142.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0142.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0142.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0142.Stat.A_PS, Antrieb_plus_vor := #DHWtoVP_Antriebe.MA0143.Stat.A_vor, Antrieb_plus_start := #DHWtoVP_Antriebe.MA0143.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3136 (vor Weiche aus KontrollPlatz)
IF #BG3135 AND (NOT (#Schleuse_3136.Dyn.Error.Err_Stau_Einfahrt) OR NOT (#BG3136)) THEN #DHWtoVP_Antriebe.MA0143.Stat.A_vor := TRUE; END_IF;
#Start_ok := NOT (#MB3141);
#Schleuse_3136(Schleusen_Nr := 3136, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3135, B_InSchleuse := #BG3136, B_Zähl := , B_Stau_raus := , Start_Ok := #Start_ok, Antrieb_Schleuse_aktiv := #MA0143, Antrieb_plus_aktiv := #MA0141, Schleuse_geöffnet := #MB3136, Y_Schleuse_Auf := #DHWtoVP_Zylinder.Schleuse_3136.Stat.Ast, Error := %DB708.DBW508, Antrieb_Schleuse_vor := #DHWtoVP_Antriebe.MA0143.Stat.A_vor, Antrieb_Schleuse_start := #DHWtoVP_Antriebe.MA0143.Stat.A_start, Antrieb_Schleuse_stop := #DHWtoVP_Antriebe.MA0143.Stat.Stop_vor, Antrieb_Schleuse_PS := #DHWtoVP_Antriebe.MA0143.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // über Weiche | über Ziel-FC | über Weiche | über Weiche
IF #MB3136 THEN #DHWtoVP_Zylinder.Weiche_3137.Stat.Ast := TRUE; END_IF;
END_REGION
REGION Störungen anzeigen UZ7101/7102
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7101.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7102.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC071.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,139 @@
FUNCTION_BLOCK "HWtoVP_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG3127 : Word; // war "BG3127"
BG3130 : Word; // war "BG3130"
BG3132 : Word; // war "BG3132"
BG3133 : Word; // war "BG3133"
BG3135 : Word; // war "BG3135"
BG3142 : Word; // war "BG3142"
BG3144 : Word; // war "BG3144"
BG3724 : Word; // war "BG3724"
BG3730 : Word; // war "BG3730"
BG4201 : Word; // war "BG4201"
BG4202 : Word; // war "BG4202"
BG4204 : Word; // war "BG4204"
BG4206 : Word; // war "BG4206"
BG4210 : Word; // war "BG4210"
BG4211 : Word; // war "BG4211"
BG4213 : Word; // war "BG4213"
BG4215 : Word; // war "BG4215"
BG4216 : Word; // war "BG4216"
END_VAR
VAR
Stau_BG3730 : "MSensoren"; // Stau am Sensor Einfahrt MA0201
Stau_BG4202 : "MSensoren"; // Stau am Sensor Einfahrt MA0261
Stau_BG4204 : "MSensoren"; // Stau am Sensor Einfahrt MA0262
Stau_BG4206 : "MSensoren"; // Stau am Sensor Einfahrt MA0263
Stau_BG4210 : "MSensoren"; // Stau am Sensor Weiche MB4210
Stau_BG4211 : "MSensoren"; // Stau am Sensor Weiche MB4210
Stau_BG4213 : "MSensoren"; // Stau am Sensor
Stau_BG4215 : "MSensoren"; // Stau am Sensor Einfahrt MA140
Stau_BG3144 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3144
Stau_BG3142 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3142
Stau_BG3130 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3130
Stau_BG3127 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3127
Stau_BG3132 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3132
Stau_BG3133 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3132
Stau_BG3135 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3135
Stau_BG4216 : "MSensoren"; // Stau am Sensor Einfahrt MA140
Stau_BG3724 : "MSensoren"; // Stau am Sensor Einfahrt MA200
Stau_BG4201 : "MSensoren"; // Stau am Sensor hinter BST2
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau am Sensor Einfahrt MA0201
#Stau_BG3730(ESensor := #BG3730, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0261
#Stau_BG4202(ESensor := #BG4202, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0262
#Stau_BG4204(ESensor := #BG4204, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0263
#Stau_BG4206(ESensor := #BG4206, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor vor Weiche MB4210
#Stau_BG4210(ESensor := #BG4210, T_Ein := 80, T_Aus := 101, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor nach Weiche MB4210
#Stau_BG4211(ESensor := #BG4211, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Weiche MB4213
#Stau_BG4213(ESensor := #BG4213, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0140
#Stau_BG4215(ESensor := #BG4215, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3144
#Stau_BG3144(ESensor := #BG3144, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3142
#Stau_BG3142(ESensor := #BG3142, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #True); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3130
#Stau_BG3130(ESensor := #BG3130, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #True); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3127
#Stau_BG3127(ESensor := #BG3127, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3132
#Stau_BG3132(ESensor := #BG3132, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3133
#Stau_BG3133(ESensor := #BG3133, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse3135
#Stau_BG3135(ESensor := #BG3135, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt Schleuse4207
#Stau_BG4216(ESensor := #BG4216, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0200
#Stau_BG3724(ESensor := #BG3724, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor hinter BST2
#Stau_BG4201(ESensor := #BG4201, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,122 @@
FUNCTION_BLOCK "HWtoVP_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
VAR_IN_OUT
MB3131 : Byte; // war "MB3131"
MB3134 : Byte; // war "MB3134"
MB3136 : Byte; // war "MB3136"
MB3137 : Byte; // war "MB3137"
MB3140 : Byte; // war "MB3140"
MB3141 : Byte; // war "MB3141"
MB3143 : Byte; // war "MB3143"
MB3725 : Byte; // war "MB3725"
MB4200 : Byte; // war "MB4200"
MB4207 : Byte; // war "MB4207"
MB4212 : Byte; // war "MB4212"
MB4214 : Byte; // war "MB4214"
MB4217 : Byte; // war "MB4217"
END_VAR
VAR
Schleuse_3725 : "MZylinder"; //
Schleuse_4200 : "MZylinder";
Schleuse_4207 : "MZylinder";
Schleuse_4212 : "MZylinder";
Schleuse_4214 : "MZylinder";
Schleuse_3143 : "MZylinder"; //
Schleuse_3141 : "MZylinder"; //
Weiche_3137 : "MZylinder"; //
Weiche_3140 : "MZylinder"; //
Schleuse_3131 : "MZylinder"; //
Schleuse_3134 : "MZylinder"; //
Schleuse_3136 : "MZylinder"; //
Schleuse_4217 : "MZylinder"; //
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC072/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF ((#DOutbound_Bereich.A01_UC072.BereichErr OR #DOutbound_Bereich.A01_UZ7201.Area_Stop) OR #DOutbound_Bereich.A01_UZ7202.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_3725
#Schleuse_3725(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3725);
END_REGION
REGION Übergabe des Bereichstatus System UC073/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UC073.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next2; END_IF;
END_REGION
REGION Schleuse_4200
#Schleuse_4200(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4200);
END_REGION
REGION Schleuse_4207
#Schleuse_4207(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4207);
END_REGION
REGION Schleuse_4212
#Schleuse_4212(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4212);
END_REGION
REGION Schleuse_4214
#Schleuse_4214(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4214);
END_REGION
REGION Übergabe des Bereichstatus System UC071/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF (#DOutbound_Bereich.A01_UC071.BereichErr OR #DOutbound_Bereich.A01_UZ7102.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next3; END_IF;
END_REGION
REGION Schleuse_3143
#Schleuse_3143(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3143);
END_REGION
REGION Schleuse_3141
#Schleuse_3141(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3141);
END_REGION
REGION Weiche_3137
#Weiche_3137(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3137);
END_REGION
REGION Weiche_3140
#Weiche_3140(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3140);
END_REGION
REGION Schleuse_3131
#Schleuse_3131(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3131);
END_REGION
REGION Schleuse_3134
#Schleuse_3134(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3134);
END_REGION
REGION Schleuse_3136
#Schleuse_3136(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3136);
END_REGION
REGION Schleuse_4217
#Schleuse_4217(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4217);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,40 @@
FUNCTION "INT_to_BCD (4stellig)" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Int_Wert : Int;
END_VAR
VAR_OUTPUT
BCD_Wert : Word;
END_VAR
VAR_TEMP
Rest : Int;
Ergebnis : Int;
END_VAR
BEGIN
REGION Rückmeldung
#BCD_Wert := 0;
END_REGION
REGION Int-Wert ok ?
IF #Int_Wert < 0 THEN RETURN; END_IF;
IF #Int_Wert > 9999 THEN RETURN; END_IF;
END_REGION
REGION INT-Wert wandeln
%LD0 := #Int_Wert / 10;
#BCD_Wert := SHL(IN := INT_TO_BCD16(#Ergebnis), N := 4);
#BCD_Wert := INT_TO_BCD16(#Rest) OR #BCD_Wert;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
+24
View File
@@ -0,0 +1,24 @@
FUNCTION "LP_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Durchfahr- / Saugmodus
END_REGION
REGION Baustein-Aufrufe
"DLP_Sensoren"();
"DLP_OmniFahren"();
"DLeerPufferStrecken"();
"DLP_Sorter"();
"DLP_Auslagern"();
"DLP_Zylinder"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,70 @@
FUNCTION_BLOCK "LP_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
DLP_Sorter : Word; // war "DLP_Sorter"
END_VAR
VAR_IN_OUT
BG3304 : Word; // war "BG3304"
BG3305 : Word; // war "BG3305"
DEPtoLP_Antriebe : Word; // war "DEPtoLP_Antriebe"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
MA0064 : Bool; // war "MA0064"
MB3305 : Byte; // war "MB3305"
END_VAR
VAR
Schleuse_3305 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3305.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3305.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
END_REGION
REGION Störungen quittieren UZ0702
#ErrQuit := #DOutbound_Bereich.A01_UZ0702.StOk_aktiv OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3305
#Schleuse_3305(Schleusen_Nr := 3305, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3304, B_InSchleuse := #BG3305, B_AusSchleuse := , Antrieb_Schleuse_aktiv := #MA0064, Schleuse_geöffnet := #MB3305, Error := %DB708.DBW524, Antrieb_Schleuse_vor := #DEPtoLP_Antriebe.MA0064.Stat.A_vor, Antrieb_Schleuse_start := #DEPtoLP_Antriebe.MA0064.Stat.A_start, Antrieb_Schleuse_stop := #DEPtoLP_Antriebe.MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS := #DEPtoLP_Antriebe.MA0064.Stat.A_PS, hStOk := #ErrAnz); // weiterfahrt über Sorter-Sep
IF #Schleuse_3305.Dyn.Status.Reset_aktiv THEN
#DLP_Sorter.Sorter_MB3305.Dyn.Scanner.Rec_IDX := 0;
#DLP_Sorter.Sorter_MB3305.Separator.Default_Ziel := 0;
#DLP_Sorter.Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel := 0;
END_IF;
END_REGION
REGION Störungen anzeigen UZ0702
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0702.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+103
View File
@@ -0,0 +1,103 @@
FUNCTION_BLOCK "LP_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
BG3307 : Word; // war "BG3307"
BG3310 : Word; // war "BG3310"
BG3311 : Word; // war "BG3311"
BG3312 : Word; // war "BG3312"
BG3313 : Word; // war "BG3313"
BG3314 : Word; // war "BG3314"
BG3315 : Word; // war "BG3315"
BG3316 : Word; // war "BG3316"
BG3317 : Word; // war "BG3317"
BG3320 : Word; // war "BG3320"
BG3322 : Word; // war "BG3322"
BG3327 : Word; // war "BG3327"
END_VAR
VAR
Stau_LP1 : "MSensoren";
Stau_LP2 : "MSensoren";
Stau_LP3 : "MSensoren";
Stau_LP4 : "MSensoren";
Stau_LP5 : "MSensoren";
Stau_LP6 : "MSensoren";
Stau_LP7 : "MSensoren";
Stau_LP8 : "MSensoren";
Stau_LP9 : "MSensoren";
Stau_LP10 : "MSensoren";
Stau_BG3322 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
Stau_BG3327 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau LeerPuffer
#Stau_LP1(ESensor := #BG3320, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP2(ESensor := #BG3317, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP3(ESensor := #BG3316, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP4(ESensor := #BG3315, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP5(ESensor := #BG3314, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP6(ESensor := #BG3313, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP7(ESensor := #BG3312, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP8(ESensor := #BG3311, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP9(ESensor := #BG3310, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau LeerPuffer
#Stau_LP10(ESensor := #BG3307, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor vor Beladung
#Stau_BG3322(ESensor := #BG3322, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Steigung vor Beladung
#Stau_BG3327(ESensor := #BG3327, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+159
View File
@@ -0,0 +1,159 @@
FUNCTION_BLOCK "LP_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
VAR_IN_OUT
MB3305 : Byte; // war "MB3305"
MB3310 : Byte; // war "MB3310"
MB3311 : Byte; // war "MB3311"
MB3312 : Byte; // war "MB3312"
MB3313 : Byte; // war "MB3313"
MB3314 : Byte; // war "MB3314"
MB3315 : Byte; // war "MB3315"
MB3316 : Byte; // war "MB3316"
MB3317 : Byte; // war "MB3317"
MB3320 : Byte; // war "MB3320"
MB3330 : Byte; // war "MB3330"
MB3331 : Byte; // war "MB3331"
MB3332 : Byte; // war "MB3332"
MB3333 : Byte; // war "MB3333"
MB3334 : Byte; // war "MB3334"
MB3335 : Byte; // war "MB3335"
MB3336 : Byte; // war "MB3336"
MB3337 : Byte; // war "MB3337"
MB3340 : Byte; // war "MB3340"
MB3341 : Byte; // war "MB3341"
END_VAR
VAR
Sorter_3305 : "MZylinder"; //
Weiche_LP1 : "MZylinder"; //
Weiche_LP2 : "MZylinder";
Weiche_LP3 : "MZylinder";
Weiche_LP4 : "MZylinder";
Weiche_LP5 : "MZylinder";
Weiche_LP6 : "MZylinder";
Weiche_LP7 : "MZylinder";
Weiche_LP8 : "MZylinder";
Weiche_LP9 : "MZylinder";
Weiche_LP10 : "MZylinder";
Schleuse_Ausfahrt_LP1 : "MZylinder"; //
Schleuse_Ausfahrt_LP2 : "MZylinder";
Schleuse_Ausfahrt_LP3 : "MZylinder";
Schleuse_Ausfahrt_LP4 : "MZylinder";
Schleuse_Ausfahrt_LP5 : "MZylinder";
Schleuse_Ausfahrt_LP6 : "MZylinder";
Schleuse_Ausfahrt_LP7 : "MZylinder";
Schleuse_Ausfahrt_LP8 : "MZylinder";
Schleuse_Ausfahrt_LP9 : "MZylinder";
Schleuse_Ausfahrt_LP10 : "MZylinder";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UH07/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UH07.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_3305
#Sorter_3305(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3305);
END_REGION
REGION Weiche_LP1
#Weiche_LP1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3320);
END_REGION
REGION Weiche_LP2
#Weiche_LP2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3317);
END_REGION
REGION Weiche_LP3
#Weiche_LP3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3316);
END_REGION
REGION Weiche_LP4
#Weiche_LP4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3315);
END_REGION
REGION Weiche_LP5
#Weiche_LP5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3314);
END_REGION
REGION Weiche_LP6
#Weiche_LP6(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3313);
END_REGION
REGION Weiche_LP7
#Weiche_LP7(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3312);
END_REGION
REGION Weiche_LP8
#Weiche_LP8(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3311);
END_REGION
REGION Weiche_LP9
#Weiche_LP9(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3310);
END_REGION
REGION Weiche_LP10
#Weiche_LP10(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5);
END_REGION
REGION Schleuse_Ausfahrt_LP1
#Schleuse_Ausfahrt_LP1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3341);
END_REGION
REGION Schleuse_Ausfahrt_LP2
#Schleuse_Ausfahrt_LP2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3340);
END_REGION
REGION Schleuse_Ausfahrt_LP3
#Schleuse_Ausfahrt_LP3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3337);
END_REGION
REGION Schleuse_Ausfahrt_LP4
#Schleuse_Ausfahrt_LP4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3336);
END_REGION
REGION Schleuse_Ausfahrt_LP5
#Schleuse_Ausfahrt_LP5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3335);
END_REGION
REGION Schleuse_Ausfahrt_LP6
#Schleuse_Ausfahrt_LP6(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3334);
END_REGION
REGION Schleuse_Ausfahrt_LP7
#Schleuse_Ausfahrt_LP7(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3333);
END_REGION
REGION Schleuse_Ausfahrt_LP8
#Schleuse_Ausfahrt_LP8(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3332);
END_REGION
REGION Schleuse_Ausfahrt_LP9
#Schleuse_Ausfahrt_LP9(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3331);
END_REGION
REGION Schleuse_Ausfahrt_LP10
#Schleuse_Ausfahrt_LP10(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3330);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,136 @@
FUNCTION_BLOCK "LPtoHW_Antriebe"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
T192 : Word; // war "T192"
T193 : Word; // war "T193"
T197 : Word; // war "T197"
END_VAR
VAR_IN_OUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
FC0065 : Word; // war "FC0065"
FC0066 : Word; // war "FC0066"
FC0202 : Word; // war "FC0202"
FC0203 : Word; // war "FC0203"
FC0264 : Word; // war "FC0264"
FC0265 : Word; // war "FC0265"
FC0266 : Word; // war "FC0266"
FC0267 : Word; // war "FC0267"
FC0270 : Word; // war "FC0270"
MA0065 : Bool; // war "MA0065"
MA0066 : Bool; // war "MA0066"
MA0202 : Bool; // war "MA0202"
MA0203 : Bool; // war "MA0203"
MA0264 : Bool; // war "MA0264"
MA0265 : Bool; // war "MA0265"
MA0266 : Bool; // war "MA0266"
MA0267 : Bool; // war "MA0267"
MA0270 : Bool; // war "MA0270"
END_VAR
VAR
MA0065 : "MAntrieb_PowerSave";
MA0066 : "MAntrieb_PowerSave";
MA0264 : "MAntrieb_PowerSave";
MA0265 : "MAntrieb_PowerSave";
MA0266 : "MAntrieb_PowerSave";
MA0267 : "MAntrieb_PowerSave";
MA0270 : "MAntrieb_PowerSave";
MA0202 : "MAntrieb_PowerSave";
MA0203 : "MAntrieb_PowerSave";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik Linie ist aktiv
Hand : Bool; // Hand Linie ist aktiv
BereichErr : Bool; // Bereichsstörung -> Antrieb stoppen
QKontroll : Bool; // Frequenzumrichter schon 3s Netz EIN
FuKontroll : Bool; // Frequenzumrichter schon 3s Netz EIN
Quit : Bool; // Motorschutz-Störung quittieren
Qok : Bool; // Motorschutz ok
Jog1 : Bool; // Geschwindigkeit 1
Jog2 : Bool; // Geschwindigkeit 2
Betrieb : Bool; // Betriebsart aktiv
FC105_RET : Word; // Returnwert von FC105
Antrieb1 : Bool; // Antrieb dazuschalten
Antrieb2 : Bool; // Antrieb dazuschalten
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UH07/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#Hand := FALSE;
#BereichErr := #DOutbound_Bereich.A01_UH07.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#QKontroll := #T197;
#FuKontroll := #T197;
#Quit := #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION MA0065
#MA0065(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0065, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0065, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0065);
END_REGION
REGION MA0066
#MA0066(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0066, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0066, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0066);
END_REGION
REGION Übergabe des Bereichstatus System UC073/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#Hand := FALSE;
#BereichErr := #DOutbound_Bereich.A01_UC073.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#QKontroll := #T193;
#FuKontroll := #T193;
#Quit := #DOutbound_Bereich.A01_UC073.StOk_aktiv;
END_REGION
REGION MA0264
#MA0264(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0264, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0264, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0264);
END_REGION
REGION MA0265
#MA0265(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0265, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, T_Nachlauf := 90, Antriebvor := #MA0265, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0265);
END_REGION
REGION MA0266
#MA0266(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0266, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0266, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0266);
END_REGION
REGION MA0267
#MA0267(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0267, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0267, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0267);
END_REGION
REGION MA0270
#MA0270(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0270, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0270, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0270);
END_REGION
REGION Übergabe des Bereichstatus System UC072/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#Hand := FALSE;
#BereichErr := ((#DOutbound_Bereich.A01_UC072.BereichErr OR #DOutbound_Bereich.A01_UZ7201.Area_Stop) OR #DOutbound_Bereich.A01_UZ7202.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#QKontroll := #T192;
#FuKontroll := #T192;
#Quit := #DOutbound_Bereich.A01_UC072.StOk_aktiv;
END_REGION
REGION MA0202
#MA0202(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0202, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0202, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0202);
END_REGION
REGION MA0203
#MA0203(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr, Q := #FC0203, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0203, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0203);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,19 @@
FUNCTION "LPtoHW_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DLPtoHW_Sensoren"();
"DLPtoHW_OmniFahren"();
"DLPtoHW_Zylinder"();
"DLPtoHW_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,332 @@
FUNCTION_BLOCK "LPtoHW_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_1s_Impuls : Word; // war "1s-Impuls"
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
Clock_5Hz : Word; // war "Clock_5Hz"
DLeerPufferStrecken : Word; // war "DLeerPufferStrecken"
END_VAR
VAR_OUTPUT
PF0033 : Word; // war "PF0033"
PF0044 : Word; // war "PF0044"
PF0046 : Word; // war "PF0046"
END_VAR
VAR_IN_OUT
BG3322 : Word; // war "BG3322"
BG3323 : Word; // war "BG3323"
BG3325 : Word; // war "BG3325"
BG3326 : Word; // war "BG3326"
BG3342 : Word; // war "BG3342"
BG3343 : Word; // war "BG3343"
BG3344 : Word; // war "BG3344"
BG3345 : Word; // war "BG3345"
BG3720 : Word; // war "BG3720"
BG3721 : Word; // war "BG3721"
BG3722 : Word; // war "BG3722"
BG3723 : Word; // war "BG3723"
BG3732 : Word; // war "BG3732"
BG4211 : Word; // war "BG4211"
BG4220 : Word; // war "BG4220"
BG4221 : Word; // war "BG4221"
BG4224 : Word; // war "BG4224"
BG4225 : Word; // war "BG4225"
BG4226 : Word; // war "BG4226"
BG4227 : Word; // war "BG4227"
BG4231 : Word; // war "BG4231"
BG4232 : Word; // war "BG4232"
BG4233 : Word; // war "BG4233"
BG4235 : Word; // war "BG4235"
BG4236 : Word; // war "BG4236"
DHWtoVP_Antriebe : Word; // war "DHWtoVP_Antriebe"
DLPtoHW_Antriebe : Word; // war "DLPtoHW_Antriebe"
DLPtoHW_Sensoren : Word; // war "DLPtoHW_Sensoren"
DLPtoHW_Zylinder : Word; // war "DLPtoHW_Zylinder"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
DSchnittstelle_zu_AMR : Word; // war "DSchnittstelle_zu_AMR"
MA0065 : Bool; // war "MA0065"
MA0066 : Bool; // war "MA0066"
MA0202 : Bool; // war "MA0202"
MA0203 : Bool; // war "MA0203"
MA0263 : Bool; // war "MA0263"
MA0264 : Bool; // war "MA0264"
MA0265 : Bool; // war "MA0265"
MA0266 : Bool; // war "MA0266"
MA0267 : Bool; // war "MA0267"
MA0270 : Bool; // war "MA0270"
MB3323 : Byte; // war "MB3323"
MB3325 : Byte; // war "MB3325"
MB3342 : Byte; // war "MB3342"
MB3345 : Byte; // war "MB3345"
MB3722 : Byte; // war "MB3722"
MB4221 : Byte; // war "MB4221"
MB4223 : Byte; // war "MB4223"
MB4227 : Byte; // war "MB4227"
MB4235 : Byte; // war "MB4235"
END_VAR
VAR
Schleuse_3342 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3323 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3325 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Bereich_4236 : "MHMOmniBereich_Plus";
Schleuse_4221 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Weiche_4223 : "MHMOmniWeiche_Plus";
Schleuse_4227 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_4232 : "MHMOmniBereich_Plus";
Schleuse_4235 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3732 : "MHMOmniBereich_Plus";
Schleuse_3722 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_3345 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Übergang_4225 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
Trolleys_starten : Struct
Flanke : Bool;
Wartezeit_aktiv : Bool;
Timer_Wartenzeit { S7_SetPoint := 'True'} : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_vor : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
tGen1_Flanke : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3342.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3323.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3345.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3325.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4236.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4221.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Weiche_4223.Dyn.Status.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4227.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4232.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4235.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_3732.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3722.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3342.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_3323.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_3345.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_3325.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Bereich_4236.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_4221.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Weiche_4223.Dyn.Status.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Schleuse_4227.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Bereich_4232.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Schleuse_4235.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC073.BereichErr);
#Bereich_3732.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC072.BereichErr);
#Schleuse_3722.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC072.BereichErr);
END_REGION
REGION Störungen quittieren UZ0703
#ErrQuit := #DOutbound_Bereich.A01_UZ0703.StOk_aktiv OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3342 (Vor BeladePlatz)
#Stau_raus := #DLPtoHW_Sensoren.An_BG3323.Stat.B_Akt;
#B_nach_Schleuse := #DLPtoHW_Sensoren.An_BG3323.Stat.B_Akt;
#Schleuse_3342(Schleusen_Nr := 3342, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3322, B_InSchleuse := #BG3342, B_AusSchleuse := #B_nach_Schleuse, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0065, Antrieb_plus_aktiv := #MA0065, Schleuse_geöffnet := #MB3342, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_3342.Stat.Ast, Error := %DB708.DBW572, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0065.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0065.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0065.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Identisch
END_REGION
REGION Schleuse 3323 (BeladePlatz)
#PF0046 := #DOutbound_Bereich.A01_UH07.AnlageEin AND ((#DLeerPufferStrecken.DurchfahrModus.Aktiv AND #Clock_5Hz) OR NOT (#DLeerPufferStrecken.DurchfahrModus.Aktiv)); // Beladung bereit bei Dauerlicht
IF #Schleuse_3323.Dyn.Sk.Akt_Schritt <> 12 THEN
#PF0033 := FALSE;
#PF0044 := FALSE;
END_IF;
#Schleuse_3323(Schleusen_Nr := 3323, ErrQuit := #ErrQuit, B_VorSchleuse := #MB3342, B_InSchleuse := #BG3323, B_AusSchleuse := #BG3343, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG3343.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0065, Schleuse_geöffnet := #MB3323, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_3323.Stat.Ast, Error := %DB708.DBW526, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0065.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0065.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0065.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 3345 (Hinter BeladePlatz)
#Schleuse_3345(Schleusen_Nr := 3345, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3343, B_InSchleuse := #BG3345, B_AusSchleuse := #BG3344, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG3344.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0065, Schleuse_geöffnet := #MB3345, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_3345.Stat.Ast, Error := %DB708.DBW586, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0065.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0065.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0065.Stat.A_PS, hStOk := #ErrAnz);
END_REGION
REGION Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung)
#tGen1_Flanke := #MB3325 AND NOT #Trolleys_starten.Flanke;
#Trolleys_starten.Flanke := #MB3325;
IF #tGen1_Flanke THEN #Trolleys_starten.Wartezeit_aktiv := TRUE; END_IF;
IF #tGen1_Flanke THEN #Trolleys_starten.Timer_Wartenzeit := 15; END_IF;
IF NOT (#Trolleys_starten.Wartezeit_aktiv) OR ((#MB3325 AND NOT (#MA0065)) OR NOT (#g_1s_Impuls)) THEN GOTO Wait; END_IF;
#Trolleys_starten.Timer_Wartenzeit := #Trolleys_starten.Timer_Wartenzeit + -1;
IF (#Trolleys_starten.Timer_Wartenzeit + -1) > 0 THEN GOTO Wait; END_IF;
#Trolleys_starten.Wartezeit_aktiv := FALSE;
Wait: ;
END_REGION
REGION Schleuse 3325
#Fahren_Ok := NOT (#Trolleys_starten.Wartezeit_aktiv);
#B_vor_Schleuse := #BG3343 OR #BG3344;
#Schleuse_3325(Schleusen_Nr := 3325, ErrQuit := #ErrQuit, B_VorSchleuse := #B_vor_Schleuse, B_InSchleuse := #BG3325, B_Zähl := #BG3326, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG3326.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0065, Antrieb_plus_aktiv := #MA0066, Schleuse_geöffnet := #MB3325, RestZeit_Bereich_plus := #Bereich_4236.Dyn.Restzeit, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_3325.Stat.Ast, Error := %DB708.DBW574, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0065.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0065.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0065.Stat.A_PS, Antrieb_plus_vor := #Bereich_4236.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ0703
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0703.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ0703/7303
#ErrQuit := (#DOutbound_Bereich.A01_UZ0703.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7303.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 4236
#B_vor_Schleuse := #BG3326 AND #MB3325;
#Fahren_Ok := #Schleuse_4221.Dyn.Sk.Bereich_ok AND NOT (#BG4221);
#Bereich_4236(Bereichs_Nr := 4236, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG4236, B_Zähl := #BG4220, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG4220.Stat.B_Akt, Start_Ok := #Schleuse_4221.Dyn.Sk.Bereich_ok, Antrieb_Bereich_aktiv := #MA0066, Antrieb_plus_aktiv := #MA0264, Antrieb_Bereich_vor := #DLPtoHW_Antriebe.MA0066.Stat.A_vor, Antrieb_Bereich_stop := #DLPtoHW_Antriebe.MA0066.Stat.Stop_vor, Error := %DB708.DBW472, Antrieb_Bereich_start := #DLPtoHW_Antriebe.MA0066.Stat.A_start, Antrieb_plus_vor := #DLPtoHW_Antriebe.MA0264.Stat.A_vor, Antrieb_plus_start := #DLPtoHW_Antriebe.MA0264.Stat.A_start, Antrieb_minus_vor := #DLPtoHW_Antriebe.MA0065.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ0703/7303
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0703.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7303.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7303
#ErrQuit := (#DOutbound_Bereich.A01_UZ7303.StOk_aktiv OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 4221 (vor ByPass)
#Schleuse_4221(Schleusen_Nr := 4221, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4220, B_InSchleuse := #BG4221, B_Zähl := , B_Stau_raus := , Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0264, Antrieb_plus_aktiv := 1, Schleuse_geöffnet := #MB4221, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_4221.Stat.Ast, Error := %DB708.DBW550, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0264.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0264.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0264.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0264.Stat.A_PS, Antrieb_plus_vor := , Antrieb_plus_start := , hStOk := #ErrAnz); // über Weiche | über Weiche | über Weiche | über Weiche
END_REGION
REGION Weiche 4223 (ByPass zu VP)
#Antrieb_vor := FALSE;
#Antrieb_stop := FALSE;
#Antrieb_aktiv := #MA0264 AND #MA0265;
#Weiche_4223(Weichen_Nr := 4223, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #BG4224, B_Ziel_abzweig := #BG4211, Antrieb_Weiche_aktiv := #Antrieb_aktiv, Antrieb_Gerade_aktiv := #MA0265, Antrieb_Abzweig_aktiv := #MA0263, Weiche_ist_AST := #MB4223, Y_Weiche_abzweig := #DLPtoHW_Zylinder.Weiche_4223.Stat.Ast, Error := %DB708.DBW546, Antrieb_Weiche_vor := #Antrieb_vor, Antrieb_Weiche_stop := #Antrieb_stop, Antrieb_Weiche_gerade_vor := , Antrieb_Weiche_gerade_stop := , Antrieb_Weiche_abzweig_vor := #DHWtoVP_Antriebe.MA0263.Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DHWtoVP_Antriebe.MA0263.Stat.Stop_vor, hStOk := #ErrAnz); // schon gesetzt | schon gesetzt
IF #Antrieb_vor THEN
#DLPtoHW_Antriebe.MA0264.Stat.A_vor := TRUE;
#DLPtoHW_Antriebe.MA0265.Stat.A_vor := TRUE;
END_IF;
IF #Antrieb_stop THEN
#DLPtoHW_Antriebe.MA0264.Stat.Stop_vor := TRUE;
#DLPtoHW_Antriebe.MA0265.Stat.Stop_vor := TRUE;
END_IF;
IF #Weiche_4223.Dyn.Status.Weiche_frei THEN #DLPtoHW_Zylinder.Weiche_4223.Stat.Ast := FALSE; END_IF;
END_REGION
REGION Störungen anzeigen UZ7303
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7303.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7303/7302
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7303.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7302.StOk_aktiv) OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION MA0265 / Übergang 4225
#Übergang_4225(ErrQuit := #ErrQuit, B_Anfang := #BG4224, B_Am_Übergang := #BG4225, B_Stau_Antrieb_plus := #BG4226, Antrieb_aktiv := #MA0265, Antrieb_plus_aktiv := #MA0266, Antrieb_vor := #DLPtoHW_Antriebe.MA0265.Stat.A_vor, Antrieb_start := #DLPtoHW_Antriebe.MA0265.Stat.A_start, Antrieb_stop := #DLPtoHW_Antriebe.MA0265.Stat.A_PS, Antrieb_plus_vor := #DLPtoHW_Antriebe.MA0266.Stat.A_vor, Antrieb_plus_start := #DLPtoHW_Antriebe.MA0266.Stat.A_start);
END_REGION
REGION Schleuse 4227
#Schleuse_4227(Schleusen_Nr := 4227, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4225, B_InSchleuse := #BG4227, B_AusSchleuse := #BG4231, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG4231.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0266, Antrieb_plus_aktiv := #MA0267, Schleuse_geöffnet := #MB4227, RestZeit_Bereich_plus := #Bereich_4232.Dyn.Restzeit, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_4227.Stat.Ast, Error := %DB708.DBW548, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0266.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0266.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0266.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0266.Stat.A_PS, Antrieb_plus_vor := #Bereich_4232.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7303/7302
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7303.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7302.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7302
#ErrQuit := (#DOutbound_Bereich.A01_UZ7302.StOk_aktiv OR #DOutbound_Bereich.A01_UC073.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 4232
#B_vor_Schleuse := #BG4231 AND #MB4227;
#Stau_raus := #DLPtoHW_Sensoren.Stau_BG4233.Stat.B_Akt OR #DLPtoHW_Sensoren.Stau_BG4234.Stat.B_Akt;
#Bereich_4232(Bereichs_Nr := 4232, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG4232, B_Zähl := #BG4233, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0267, Antrieb_plus_aktiv := #MA0270, Antrieb_Bereich_vor := #DLPtoHW_Antriebe.MA0267.Stat.A_vor, Antrieb_Bereich_stop := #DLPtoHW_Antriebe.MA0267.Stat.Stop_vor, Error := %DB708.DBW470, Antrieb_Bereich_start := #DLPtoHW_Antriebe.MA0267.Stat.A_start, Antrieb_plus_vor := #DLPtoHW_Antriebe.MA0270.Stat.A_vor, Antrieb_plus_start := #DLPtoHW_Antriebe.MA0270.Stat.A_start, Antrieb_minus_vor := #DLPtoHW_Antriebe.MA0266.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 4235 (vor BST 2)
#Fahren_Ok := ((((NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle3) AND NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle4)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST2_Feueralarm)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST2_Geschlossen)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST2_Störung)) AND #Bereich_3732.Dyn.Sk.Bereich_ok;
#Schleuse_4235(Schleusen_Nr := 4235, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4233, B_InSchleuse := #BG4235, B_AusSchleuse := #BG3720, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG3720.Stat.B_Akt, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := #MA0270, Antrieb_plus_aktiv := #MA0202, Schleuse_geöffnet := #MB4235, RestZeit_Bereich_plus := #Bereich_3732.Dyn.Restzeit, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_4235.Stat.Ast, Error := %DB708.DBW552, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0270.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0270.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0270.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0270.Stat.A_PS, Antrieb_plus_vor := #Bereich_3732.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7302
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7302.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC073.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7202
#ErrQuit := (#DOutbound_Bereich.A01_UZ7202.StOk_aktiv OR #DOutbound_Bereich.A01_UC072.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 3732 (hinter BST 2)
#B_vor_Schleuse := #BG3720 AND #MB4235;
#Bereich_3732(Bereichs_Nr := 3732, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3732, B_Zähl := #BG3721, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG3721.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0202, Antrieb_plus_aktiv := #MA0203, Antrieb_Bereich_vor := #DLPtoHW_Antriebe.MA0202.Stat.A_vor, Antrieb_Bereich_stop := #DLPtoHW_Antriebe.MA0202.Stat.Stop_vor, Error := %DB708.DBW460, Antrieb_Bereich_start := #DLPtoHW_Antriebe.MA0202.Stat.A_start, Antrieb_plus_vor := #DLPtoHW_Antriebe.MA0203.Stat.A_vor, Antrieb_plus_start := #DLPtoHW_Antriebe.MA0203.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7202
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7202.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC072.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7202/7201
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7202.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7201.StOk_aktiv) OR #DOutbound_Bereich.A01_UC072.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3722 (Übergabe an AMR / UH06)
#DSchnittstelle_zu_AMR.To_UH06.MA0203_A_vor := FALSE;
#DSchnittstelle_zu_AMR.To_UH06.MA0203_A_start := FALSE;
#Schleuse_3722(Schleusen_Nr := 3722, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3721, B_InSchleuse := #BG3722, B_Zähl := #BG3723, B_Stau_raus := #DLPtoHW_Sensoren.Stau_BG3723.Stat.B_Akt, Start_Ok := #DSchnittstelle_zu_AMR.From_UH06.MA0203_kein_Stau, Antrieb_Schleuse_aktiv := #MA0203, Antrieb_plus_aktiv := #DSchnittstelle_zu_AMR.From_UH06.MA0203_aktiv, Schleuse_geöffnet := #MB3722, Y_Schleuse_Auf := #DLPtoHW_Zylinder.Schleuse_3722.Stat.Ast, Error := %DB708.DBW534, Antrieb_Schleuse_vor := #DLPtoHW_Antriebe.MA0203.Stat.A_vor, Antrieb_Schleuse_start := #DLPtoHW_Antriebe.MA0203.Stat.A_start, Antrieb_Schleuse_stop := #DLPtoHW_Antriebe.MA0203.Stat.Stop_vor, Antrieb_Schleuse_PS := #DLPtoHW_Antriebe.MA0203.Stat.A_PS, Antrieb_plus_vor := #DSchnittstelle_zu_AMR.To_UH06.MA0203_A_vor, Antrieb_plus_start := #DSchnittstelle_zu_AMR.To_UH06.MA0203_A_start, hStOk := #ErrAnz);
IF #DLPtoHW_Sensoren.Fährt_zu_UH06.Stat.B_Akt THEN
#DSchnittstelle_zu_AMR.To_UH06.MA0203_A_vor := TRUE;
#DSchnittstelle_zu_AMR.To_UH06.MA0203_A_start := TRUE;
#DLPtoHW_Antriebe.MA0203.Stat.A_vor := TRUE;
END_IF;
END_REGION
REGION Störungen anzeigen UZ7202/7201
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7202.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7201.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC072.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,158 @@
FUNCTION_BLOCK "LPtoHW_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG3323 : Word; // war "BG3323"
BG4221 : Word; // war "BG4221"
DSchnittstelle_zu_AMR : Word; // war "DSchnittstelle_zu_AMR"
MA0203 : Bool; // war "MA0203"
MA0264 : Bool; // war "MA0264"
MB3323 : Byte; // war "MB3323"
MB3722 : Byte; // war "MB3722"
END_VAR
VAR_OUTPUT
DLPtoHW_Sensoren : Word; // war "DLPtoHW_Sensoren"
END_VAR
VAR_IN_OUT
BG3324 : Word; // war "BG3324"
BG3326 : Word; // war "BG3326"
BG3343 : Word; // war "BG3343"
BG3344 : Word; // war "BG3344"
BG3720 : Word; // war "BG3720"
BG3721 : Word; // war "BG3721"
BG3723 : Word; // war "BG3723"
BG4220 : Word; // war "BG4220"
BG4222 : Word; // war "BG4222"
BG4224 : Word; // war "BG4224"
BG4226 : Word; // war "BG4226"
BG4231 : Word; // war "BG4231"
BG4233 : Word; // war "BG4233"
BG4234 : Word; // war "BG4234"
MA0065 : Bool; // war "MA0065"
MB4221 : Byte; // war "MB4221"
END_VAR
VAR
An_BG3323 : "MSensoren"; // Trolley am Sensor BG3323
Sack_BG3324 : "MSensoren"; // Sack erkannt
Stau_BG3343 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
An_BG3343 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
Stau_BG3344 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
An_BG3344 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
Stau_BG3326 : "MSensoren"; // Stau am Sensor Einfahrt MA0066
Stau_BG4220 : "MSensoren"; // Stau am Sensor Einfahrt MA0264
Sack_BG4222 : "MSensoren"; // Sack erkannt
Stau_BG4224 : "MSensoren"; // Stau am Sensor Einfahrt MA0265
Stau_BG4226 : "MSensoren"; // Stau am Sensor Einfahrt MA0266
Stau_BG4231 : "MSensoren"; // Stau am Sensor Einfahrt MA0267
Stau_BG4233 : "MSensoren"; // Stau am Sensor Einfahrt MA0270
Stau_BG4234 : "MSensoren"; // Stau am Sensor Mitte MA0270
Stau_BG3720 : "MSensoren"; // Stau am Sensor hinter BST2
Stau_BG3721 : "MSensoren"; // Stau am Sensor Einfahrt MA0203
Stau_BG3723 : "MSensoren"; // Stau am Sensor Ausfahrt MB3722
Fährt_zu_UH06 : "MSensoren";
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Trolley in Schleuse 3323 erkannt (Beladung)
#ESensor := #BG3323 AND NOT (#MB3323);
#An_BG3323(ESensor := #ESensor, T_Ein := 1, T_Aus := 300, tein_aktiv := 1, taus_aktiv := 1); // Falls Trolley entnommen wurde
IF #MB3323 AND #MA0065 THEN #DLPtoHW_Sensoren.An_BG3323.Stat.B_Akt := FALSE; END_IF;
END_REGION
REGION Sack in Schleuse 3323 erkannt (Beladung)
#Aktiv := NOT (#MB3323) AND (#MA0065 OR #BG3323);
#Sack_BG3324(ESensor := #BG3324, T_Ein := 10, T_Aus := 0, tein_aktiv := #Aktiv, taus_aktiv := 1);
END_REGION
REGION Stau am Sensor nach Beladung
#Stau_BG3343(ESensor := #BG3343, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Trolley am Sensor nach Beladung
#An_BG3343(ESensor := #BG3343, T_Ein := 1, T_Aus := 200, tein_aktiv := TRUE, taus_aktiv := #MA0065); // Sensoren entprellen
END_REGION
REGION Stau am Sensor nach Beladung
#Stau_BG3344(ESensor := #BG3344, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Trolley am Sensor nach Beladung
#An_BG3344(ESensor := #BG3344, T_Ein := 1, T_Aus := 200, tein_aktiv := TRUE, taus_aktiv := #MA0065); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0066
#Stau_BG3326(ESensor := #BG3326, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0264
#Aktiv := NOT (#BG4221);
#Stau_BG4220(ESensor := #BG4220, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := #Aktiv); // Trolley wieder aus Schleuse 4221
END_REGION
REGION Sack in Schleuse 4221 erkannt (Vor ByPass zu VP)
#Aktiv := NOT (#MB4221) AND (#MA0264 OR #BG4221);
#Sack_BG4222(ESensor := #BG4222, T_Ein := 1, T_Aus := 11, tein_aktiv := #Aktiv, taus_aktiv := #MB4221);
END_REGION
REGION Stau am Sensor Einfahrt MA0265
#Stau_BG4224(ESensor := #BG4224, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0266
#Stau_BG4226(ESensor := #BG4226, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0267
#Stau_BG4231(ESensor := #BG4231, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA021
#Stau_BG4233(ESensor := #BG4233, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA021
#Stau_BG4234(ESensor := #BG4234, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor hinter BST2
#Stau_BG3720(ESensor := #BG3720, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0203
#Stau_BG3721(ESensor := #BG3721, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Ausfahrt MB3722
#Stau_BG3723(ESensor := #BG3723, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Fährt zu UH06
#ESensor := #MB3722 OR #BG3723;
#Aktiv := #MA0203 AND #DSchnittstelle_zu_AMR.From_UH06.MA0203_aktiv;
#Fährt_zu_UH06(ESensor := #ESensor, T_Ein := 1, T_Aus := 300, tein_aktiv := TRUE, taus_aktiv := #Aktiv); // 30s Nachlauf
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,109 @@
FUNCTION_BLOCK "LPtoHW_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
VAR_OUTPUT
MB4210 : Byte; // war "MB4210"
END_VAR
VAR_IN_OUT
MB3323 : Byte; // war "MB3323"
MB3324 : Byte; // war "MB3324"
MB3325 : Byte; // war "MB3325"
MB3342 : Byte; // war "MB3342"
MB3345 : Byte; // war "MB3345"
MB3722 : Byte; // war "MB3722"
MB4221 : Byte; // war "MB4221"
MB4223 : Byte; // war "MB4223"
MB4227 : Byte; // war "MB4227"
MB4235 : Byte; // war "MB4235"
END_VAR
VAR
Schleuse_3342 : "MZylinder"; //
Schleuse_3323 : "MZylinder"; //
Schleuse_3345 : "MZylinder"; //
Schleuse_3325 : "MZylinder"; //
Schleuse_4221 : "MZylinder";
Weiche_4223 : "MZylinder"; //
Schleuse_4227 : "MZylinder"; //
Schleuse_4235 : "MZylinder"; //
Schleuse_3722 : "MZylinder"; //
Stopper_3324 : "MZylinder"; //
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UH07/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UH07.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_3342
#Schleuse_3342(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3342);
END_REGION
REGION Schleuse_3323
#Schleuse_3323(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3323);
END_REGION
REGION Schleuse_3345
#Schleuse_3345(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3345);
END_REGION
REGION Schleuse_3325
#Schleuse_3325(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3325);
END_REGION
REGION Stopper 3324
#Stopper_3324(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3324);
END_REGION
REGION Übergabe des Bereichstatus System UC073/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF #DOutbound_Bereich.A01_UC073.BereichErr AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next1; END_IF;
END_REGION
REGION Schleuse_4221
#Schleuse_4221(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4221);
END_REGION
REGION Weiche_4223
#Weiche_4223(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4223);
#MB4210 := #MB4223;
END_REGION
REGION Schleuse_4227
#Schleuse_4227(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4227);
END_REGION
REGION Schleuse_4235
#Schleuse_4235(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB4235);
END_REGION
REGION Übergabe des Bereichstatus System UC072/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
IF ((#DOutbound_Bereich.A01_UC072.BereichErr OR #DOutbound_Bereich.A01_UZ7201.Area_Stop) OR #DOutbound_Bereich.A01_UZ7202.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv) THEN GOTO Next2; END_IF;
END_REGION
REGION Schleuse_3722
#Schleuse_3722(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3722);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,45 @@
FUNCTION "Leerpuffer to Raus-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Int; // Puffer ermitteln
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Puffer_ShopGroup : Int;
Position : Int;
Schleife : Int; // Loopzähler
Puffer_Zähler : Int;
Puffer_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
END_VAR
BEGIN
REGION Aktiver Puffer zum Ausfahren
#Puffer := 0;
END_REGION
REGION Aktiven Puffer zum Auslagern suchen ?
"DatenOut"(SSDB := 502, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer Leerpuffer ausfahren | 1.Eintrag lesen
IF NOT (#M199_7) THEN RETURN; END_IF;
#Puffer := #MW220;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,48 @@
FUNCTION "Leerpuffer to Rein-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Word; // Puffer ermitteln
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Position : Int;
END_VAR
BEGIN
REGION Aktiver Puffer zum Einfahren
#Puffer := 16#0;
END_REGION
REGION Aktiven Puffer zum Einlagern suchen ?
"DatenOut"(SSDB := 501, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer Leerpuffer einfahren | 1.Eintrag lesen
IF #M199_7 THEN GOTO Puffer; END_IF;
END_REGION
REGION Leerer Puffer vorhanden?
"DatenOut"(SSDB := 500, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer leer | 1.Eintrag lesen
IF #M199_7 THEN GOTO Puffer; END_IF;
RETURN;
END_REGION
REGION Puffer aufbereiten
#Puffer := INT_TO_BCD16(#MW220) OR 16#A000;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,45 @@
FUNCTION "Leerpuffer_Raus-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Int; // Puffer ermitteln
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Puffer_ShopGroup : Int;
Position : Int;
Schleife : Int; // Loopzähler
Puffer_Zähler : Int;
Puffer_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
END_VAR
BEGIN
REGION Aktiver Puffer zum Ausfahren
#Puffer := 0;
END_REGION
REGION Aktiven Puffer zum Auslagern suchen ?
"DatenOut"(SSDB := 502, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer Leerpuffer ausfahren | 1.Eintrag lesen
IF NOT (#M199_7) THEN RETURN; END_IF;
#Puffer := #MW220;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,48 @@
FUNCTION "Leerpuffer_Rein-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Word; // Puffer ermitteln
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Position : Int;
END_VAR
BEGIN
REGION Aktiver Puffer zum Einfahren
#Puffer := 16#0;
END_REGION
REGION Aktiven Puffer zum Einlagern suchen ?
"DatenOut"(SSDB := 501, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer Leerpuffer einfahren | 1.Eintrag lesen
IF #M199_7 THEN GOTO Puffer; END_IF;
END_REGION
REGION Leerer Puffer vorhanden?
"DatenOut"(SSDB := 500, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer leer | 1.Eintrag lesen
IF #M199_7 THEN GOTO Puffer; END_IF;
RETURN;
END_REGION
REGION Puffer aufbereiten
#Puffer := INT_TO_BCD16(#MW220) OR 16#A000;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,65 @@
FUNCTION_BLOCK "MAusfahrFreigabe_neu"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Impuls : Bool; // Zähl-Impuls
Vorbei_1 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_2 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_3 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_4 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_5 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Inks_Vorbei_1 : Int; // Rest-Inks für diese Position
Inks_Vorbei_2 : Int; // Rest-Inks für diese Position
Inks_Vorbei_3 : Int; // Rest-Inks für diese Position
Inks_Vorbei_4 : Int; // Rest-Inks für diese Position
Inks_Vorbei_5 : Int; // Rest-Inks für diese Position
END_VAR
VAR_IN_OUT
Antrieb_ein : Bool; // Antrieb einschalten
END_VAR
VAR
Dyn : Struct
Rest_Inks : Int := 1; // BM noch unterwegs [Inks]
END_STRUCT;
END_VAR
VAR_TEMP
tAktiv : Int;
END_VAR
BEGIN
REGION Vorbei-Sensoren auswerten
IF #Vorbei_5 THEN GOTO Chek; END_IF;
IF #Vorbei_5 AND #Vorbei_4 THEN GOTO Chek; END_IF;
IF (#Vorbei_5 AND #Vorbei_4) AND #Vorbei_3 THEN GOTO Chek; END_IF;
IF ((#Vorbei_5 AND #Vorbei_4) AND #Vorbei_3) AND #Vorbei_2 THEN GOTO Chek; END_IF;
IF (((#Vorbei_5 AND #Vorbei_4) AND #Vorbei_3) AND #Vorbei_2) AND #Vorbei_1 THEN GOTO Chek; END_IF;
GOTO En02;
Chek: ;
IF #Inks_Vorbei_1 < #Dyn.Rest_Inks THEN GOTO En02; END_IF;
#Dyn.Rest_Inks := #Inks_Vorbei_1;
En02: ;
END_REGION
REGION Rest-Inks verändern
IF NOT (#Impuls) THEN GOTO En04; END_IF;
#Dyn.Rest_Inks := #Dyn.Rest_Inks + -1;
IF (#Dyn.Rest_Inks + -1) > 0 THEN GOTO En04; END_IF;
#Dyn.Rest_Inks := 1;
En04: ;
END_REGION
REGION Antrieb einschalten
IF #Dyn.Rest_Inks > 1 THEN #Antrieb_ein := TRUE; END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+106
View File
@@ -0,0 +1,106 @@
FUNCTION_BLOCK "MBlinken"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Impulsdauer : Bool; // Impulsdauer
Error_1 : Bool;
Error_2 : Bool;
Error_3 : Bool;
Error_4 : Bool;
Error_5 : Bool;
Error_6 : Bool;
Error_7 : Bool;
Error_8 : Bool;
Error_9 : Bool;
Error_10 : Bool;
END_VAR
VAR_OUTPUT
hAnzeige : Bool; // Anzeige
END_VAR
VAR
Flanke_Ausschalttakt : Bool;
Kein_Blinken : Bool;
Ausschalttakte : Int; // Betriebsbereit ist ausgeschaltet
END_VAR
VAR_TEMP
tGen1_Flanke : Bool;
END_VAR
BEGIN
REGION Anzeige bei Error 1-10 1-10 mal blinken lassen
IF ((((((((NOT (#Error_1) AND NOT (#Error_2)) AND NOT (#Error_3)) AND NOT (#Error_4)) AND NOT (#Error_5)) AND NOT (#Error_6)) AND NOT (#Error_7)) AND NOT (#Error_8)) AND NOT (#Error_9)) AND NOT (#Error_10) THEN
#hAnzeige := FALSE;
#Flanke_Ausschalttakt := FALSE;
#Kein_Blinken := FALSE;
GOTO NoAn;
END_IF;
#hAnzeige := #Impulsdauer AND NOT (#Kein_Blinken);
#tGen1_Flanke := NOT (#Impulsdauer) AND #Flanke_Ausschalttakt;
#Flanke_Ausschalttakt := #Impulsdauer;
IF #tGen1_Flanke THEN #Ausschalttakte := #Ausschalttakte + 1; END_IF;
IF (#Ausschalttakte >= 2) AND #Kein_Blinken THEN
#Kein_Blinken := FALSE;
GOTO NoAn;
END_IF;
IF #Kein_Blinken THEN GOTO En01; END_IF;
IF (#Ausschalttakte >= 1) AND #Error_1 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 2) AND #Error_2 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 3) AND #Error_3 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 4) AND #Error_4 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 5) AND #Error_5 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 6) AND #Error_6 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 7) AND #Error_7 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 8) AND #Error_8 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 9) AND #Error_9 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 10) AND #Error_10 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF #Ausschalttakte > 10 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
GOTO En01;
NoAn: ;
#Ausschalttakte := 0;
En01: ;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,76 @@
FUNCTION_BLOCK "MHMÜbergang_ohne_Schleuse"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ErrQuit : Bool;
B_Anfang : Bool;
B_Am_Übergang : Bool;
B_Stau_Antrieb_plus : Bool;
Antrieb_aktiv : Bool;
Antrieb_plus_aktiv : Bool;
END_VAR
VAR_IN_OUT
Antrieb_vor : Bool;
Antrieb_start : Bool;
Antrieb_stop : Bool;
Antrieb_plus_vor : Bool;
Antrieb_plus_start : Bool;
END_VAR
VAR
Am_Übergang { S7_SetPoint := 'False'} : "MSensoren";
Stau_Antrieb_plus : "MSensoren";
END_VAR
VAR_TEMP
Antrieb : Bool;
Antrieb_gestoppt : Bool;
END_VAR
BEGIN
REGION Antrieb ansteuern
#Antrieb_gestoppt := FALSE;
IF #ErrQuit OR #B_Anfang THEN
#Antrieb_start := TRUE;
#Antrieb_vor := TRUE;
END_IF;
IF NOT (#Am_Übergang.Stat.B_Akt) THEN GOTO Nix; END_IF;
IF NOT (#Am_Übergang.Stat.B_Akt) AND #Stau_Antrieb_plus.Stat.B_Akt THEN
#Antrieb_stop := TRUE;
#Antrieb_gestoppt := TRUE;
GOTO Nix;
END_IF;
IF NOT (#Stau_Antrieb_plus.Stat.B_Akt) THEN #Antrieb_plus_vor := TRUE; END_IF;
#Antrieb_plus_start := TRUE;
IF NOT (#Antrieb_plus_aktiv) THEN
#Antrieb_stop := TRUE;
#Antrieb_gestoppt := TRUE;
GOTO Nix;
END_IF;
#Antrieb_vor := TRUE;
Nix: ;
END_REGION
REGION Antrieb plus zusätzlich ansteuern
IF #B_Stau_Antrieb_plus OR #ErrQuit THEN #Antrieb_plus_start := TRUE; END_IF;
IF FALSE THEN #Antrieb_plus_vor := TRUE; END_IF;
END_REGION
REGION Trolley ist am Übergang
#Antrieb := (#Antrieb_aktiv AND #Antrieb_plus_aktiv) AND NOT (#Antrieb_gestoppt);
#Am_Übergang(ESensor := #B_Am_Übergang, T_Ein := 1, T_Aus := 50, tein_aktiv := 1, taus_aktiv := #Antrieb);
END_REGION
REGION Stau im Förderer plus
#Stau_Antrieb_plus(ESensor := #B_Stau_Antrieb_plus, T_Ein := 100, T_Aus := 50, tein_aktiv := 1, taus_aktiv := 1);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+56
View File
@@ -0,0 +1,56 @@
FUNCTION_BLOCK "MSensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ESensor { ExternalWritable := 'False'} : Bool; // Eingang des zu überwachenden Sensors
T_Ein { ExternalWritable := 'False'} : Int := 1; // Einschaltzeitverzögerung (*100ms)
T_Aus { ExternalWritable := 'False'} : Int := 5; // Ausschaltzeitverzögerung (*100ms)
tein_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Einschaltzeit aktivieren
taus_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Ausschaltzeit aktivieren
g_100ms_Impuls : Word; // war "100ms-Impuls"
MW2 : Word; // war "MW2"
END_VAR
VAR
Stat { ExternalWritable := 'False'} : "USensor_Ein_Aus"; // Status des Endschalters
END_VAR
BEGIN
REGION Zeitwert löschen
IF NOT ((#ESensor AND #Stat.B_Akt) OR (NOT (#ESensor) AND NOT (#Stat.B_Akt))) THEN GOTO Nw02; END_IF;
#Stat.T_Zelle := 0;
RETURN;
END_REGION
REGION Einschaltzeit abgelaufen ?
IF #Stat.T_Ein_Akt = 9999 THEN #Stat.T_Ein_Akt := #T_Ein; END_IF;
IF #Stat.B_Akt THEN GOTO Nw03; END_IF;
IF #Stat.T_Zelle >= #Stat.T_Ein_Akt THEN
#Stat.B_Akt := TRUE;
GOTO tdel;
END_IF;
GOTO Nw04;
END_REGION
REGION Ausschaltzeit abgelaufen ?
IF #Stat.T_Aus_Akt = 9999 THEN #Stat.T_Aus_Akt := #T_Aus; END_IF;
IF NOT (#Stat.B_Akt) THEN GOTO Nw04; END_IF;
IF #Stat.T_Zelle >= #Stat.T_Aus_Akt THEN
#Stat.B_Akt := FALSE;
GOTO tdel;
END_IF;
END_REGION
REGION Zeit läuft
IF (NOT (#g_100ms_Impuls) OR (NOT (#Stat.B_Akt) AND NOT (#tein_aktiv))) OR (#Stat.B_Akt AND NOT (#taus_aktiv)) THEN RETURN; END_IF;
#Stat.T_Zelle := #Stat.T_Zelle + #MW2;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,63 @@
FUNCTION "Port1_Telegramme_auswerten" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
SS_Port1_EmpfangsDaten : Word; // war "SS_Port1_EmpfangsDaten"
END_VAR
VAR_IN_OUT
MW196 : Word; // war "MW196"
END_VAR
VAR_TEMP
QuellDB : Any; // Zeiger, wo Empfangsdaten sind
ZielDB : Any; // Zeiger, wo Auswertesdaten sind
Teleg_Kennung_A : DWord;
Teleg_Kennung_B : DWord;
Teleg_Kennung_C : Word;
AMR_DB : Int;
AMR_DW : Int;
Error : Bool;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
PLC_ABP : Word;
END_VAR
BEGIN
REGION Telegrammkopf übergeben
RETURN;
// Kennung A:
#LB20 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[1];
#LB21 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[2];
#LB22 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[3];
#LB23 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[4];
// Kennung B:
#LB24 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[5];
#LB25 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[6];
#LB26 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[7];
#LB27 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[8];
// Kennung C:
#LB28 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[9];
#LB29 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[10];
END_REGION
REGION BReqM-Telegramm ? (VollPuffer auslagern)
IF #Teleg_Kennung_A <> 'BReq' THEN GOTO NoBREQM; END_IF;
IF #Teleg_Kennung_B <> 'M' THEN GOTO NoBREQM; END_IF;
// Gewollten Trolley markieren
RETURN;
NoBREQM: ;
END_REGION
REGION Unbekanntes Telegramm
"DBMOV"(QuellDB := 9001, QuellDW := 0, ZielDB := 9001, ZielDW := 30, Anzahl_DW := 15, RE_VAL := #MW196); // Letztes ???-Telegramm speichern
END_REGION
REGION Baustein Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,63 @@
FUNCTION "Port2_Telegramme_auswerten" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_IN_OUT
MW196 : Word; // war "MW196"
SS_Port2_EmpfangsDaten : Word; // war "SS_Port2_EmpfangsDaten"
END_VAR
VAR_TEMP
QuellDB : Any; // Zeiger, wo Empfangsdaten sind
ZielDB : Any; // Zeiger, wo Auswertesdaten sind
Teleg_Kennung_A : DWord;
Teleg_Kennung_B : DWord;
Teleg_Kennung_C : Word;
Schleusen_DB : Int;
Schleusen_DW : Int;
Error : Bool;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
PLC_ABP : Word;
EndZiel : Word;
END_VAR
BEGIN
REGION Telegrammkopf übergeben
// Kennung A:
#LB20 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[1];
#LB21 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[2];
#LB22 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[3];
#LB23 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[4];
// Kennung B:
#LB24 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[5];
#LB25 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[6];
#LB26 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[7];
#LB27 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[8];
// Kennung C:
#LB28 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[9];
#LB29 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[10];
END_REGION
REGION GOHDRespM-Telegramm ? (Entscheidungsreaktion)
IF #Teleg_Kennung_A <> 'GOHD' THEN GOTO NoGOHDRespM; END_IF;
IF #Teleg_Kennung_B <> 'Resp' THEN GOTO NoGOHDRespM; END_IF;
IF #Teleg_Kennung_C <> 'M$00' THEN GOTO NoGOHDRespM; END_IF;
// Neu: Eintrag in Trolley-DB:
"INT_to_BCD (4stellig)"(Int_Wert := #SS_Port2_EmpfangsDaten.Port2.Puffer_LinienNr, BCD_Wert := #EndZiel);
"Trolleydaten_ändern"(MB198 => "MB198", MW200 => "MW200", TrolleyDL_OutDaten => "TrolleyDL_OutDaten", TrolleyDL_SearchDaten => "TrolleyDL_SearchDaten");
RETURN;
NoGOHDRespM: ;
END_REGION
REGION Unbekanntes Telegramm
"DBMOV"(QuellDB := 9002, QuellDW := 0, ZielDB := 9002, ZielDW := 30, Anzahl_DW := 15, RE_VAL := #MW196); // Letztes ???-Telegramm speichern
END_REGION
REGION Baustein Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,46 @@
FUNCTION "PufferZeiger_ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Puffer_X : Int; // Puffer zum Auslagern
MW224 : Word; // war "MW224"
MW226 : Word; // war "MW226"
END_VAR
VAR_OUTPUT
Puffer_DB : Int;
Puffer_DW : Int;
Error : Bool;
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
MW200 : Word; // war "MW200"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Position : Int;
END_VAR
BEGIN
REGION Zeiger für Puffer_X ermitteln
#MW200 := #Puffer_X;
#Error := #Puffer_X = 0;
IF #Puffer_X = 0 THEN RETURN; END_IF;
"DatenOut"(SSDB := 275, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M200.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // Einsprung Puffer ermitteln: | Eintrag lesen
#g_7_HMI_Err_UH07_OB.Logistik.DB275_Err := (#MB199 AND 2#1111111) <> 0;
#Error := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
#Puffer_DB := #MW224;
#Puffer_DW := #MW226;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,77 @@
FUNCTION "Reservierung_in_Puffer_eintragen" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
TrolleyID : DInt;
Ziel : Int;
ShopGroup : DInt;
Gesamt_Trolley_DL : Int;
MW224 : Word; // war "MW224"
MW226 : Word; // war "MW226"
SGes : Word; // war "SGes"
END_VAR
VAR_OUTPUT
MD220 : DWord; // war "MD220"
MD224 : DWord; // war "MD224"
MW220 : Word; // war "MW220"
TrolleyDL_INDaten : Word; // war "TrolleyDL_INDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Lager_DB : Int;
Lager_DW : Int;
SSDW : Int;
Position : Int;
LeerPuffer : Bool;
VollPuffer : Bool;
END_VAR
BEGIN
REGION TrolleyID + Ziel bekannt -> Reservierung im Puffer
IF #TrolleyID = 0 THEN RETURN; END_IF;
IF #Ziel = 0 THEN RETURN; END_IF;
#LeerPuffer := (0 >= 1) AND (0 <= 10);
#VollPuffer := (0 >= 101) AND (0 <= 151);
#MW220 := #Ziel;
"DatenOut"(SSDB := 275, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // Eintrag lesen
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
#Lager_DB := #MW224;
#Lager_DW := #MW226;
#MD220 := #TrolleyID;
#MD224 := #ShopGroup;
#SSDW := #Lager_DW + 200;
"DatenIn"(SSDB := #Lager_DB, SSDW := #SSDW, INDATEN := P#M220.0, RE_VAL := #MB198);
END_REGION
REGION BC in Trolley-DL eintragen
IF #Gesamt_Trolley_DL = 0 THEN RETURN; END_IF;
#TrolleyDL_INDaten.INDaten.TrolleyID := #TrolleyID;
#TrolleyDL_INDaten.INDaten.EndZiel := #Ziel;
#TrolleyDL_INDaten.INDaten.ShopGroup := #ShopGroup;
IF #LeerPuffer THEN GOTO Standort; END_IF;
IF #LeerPuffer AND #VollPuffer THEN GOTO Standort; END_IF;
Standort: ;
#TrolleyDL_INDaten.INDaten.Standort := 16#0;
#TrolleyDL_INDaten.INDaten.LastTime.Jahr := #SGes.DATE_TIME.Jahr;
#TrolleyDL_INDaten.INDaten.LastTime.Monat := #SGes.DATE_TIME.Monat;
#TrolleyDL_INDaten.INDaten.LastTime.Tag := #SGes.DATE_TIME.Tag;
#TrolleyDL_INDaten.INDaten.LastTime.Stunde := #SGes.DATE_TIME.Stunde;
#TrolleyDL_INDaten.INDaten.LastTime.Minute := #SGes.DATE_TIME.Minute;
#TrolleyDL_INDaten.INDaten.LastTime.Sekunde := #SGes.DATE_TIME.Sekunde;
"DatenIn"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, INDATEN := %DB1010.DBX0.0, RE_VAL := #MB198); // Daten in Datenbank schreiben:
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,51 @@
FUNCTION "Save_CARR_Gesendet" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Kennung_1 : Char;
Kennung_2 : Char;
Kennung_3 : Char;
Kennung_4 : Char;
FIFO_DB : Int; // FIFO-Ringspeicher
Teil_IDX : Int; // BT/MT-IDX (wird bei Auslagerung gemeldet)
Teil_Ziel : Int; // BT/MT bei diesem Abwurf-Ziel ausfahren/entladen
Sort_ID : Int; // Sortier-Info (Sort-ID, mit welcher Fahrt gestartet wurde)
END_VAR
VAR_OUTPUT
MW220 : Word; // war "MW220"
MW222 : Word; // war "MW222"
MW224 : Word; // war "MW224"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
BEGIN
REGION Kennung CARR ?
IF #Kennung_1 <> 'C' THEN RETURN; END_IF;
IF #Kennung_2 <> 'A' THEN RETURN; END_IF;
IF #Kennung_3 <> 'R' THEN RETURN; END_IF;
IF #Kennung_4 <> 'R' THEN RETURN; END_IF;
END_REGION
REGION Daten aufbereiten
#MW220 := #Teil_IDX;
#MW222 := #Teil_Ziel;
#MW224 := #Sort_ID;
END_REGION
REGION Daten speichern
"FifoOut"(SSDB := #FIFO_DB, SSDW := 0, PARA := 16#E100, OUTDATEN := P#M200.0, RE_VAL := #MB199); // da Ringspeicher nächster Eintrag lesen + austragen
"FifoIn"(SSDB := #FIFO_DB, SSDW := 0, PARA := 16#0000, INDATEN := P#M220.0, RE_VAL := #MB199);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
+37
View File
@@ -0,0 +1,37 @@
FUNCTION "Save_Ziel" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
FIFO_DB : Int; // FIFO-Ringspeicher
Teil_IDX : Int; // BT/MT-IDX (wird bei Auslagerung gemeldet)
Teil_Ziel : Int; // BT/MT bei diesem Abwurf-Ziel ausfahren/entladen
END_VAR
VAR_OUTPUT
MW220 : Word; // war "MW220"
MW222 : Word; // war "MW222"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
BEGIN
REGION Daten aufbereiten
#MW220 := #Teil_IDX;
#MW222 := #Teil_Ziel;
END_REGION
REGION Daten speichern
"FifoOut"(SSDB := #FIFO_DB, SSDW := 0, PARA := 16#E100, OUTDATEN := P#M200.0, RE_VAL := #MB199); // da Ringspeicher nächster Eintrag lesen + austragen
"FifoIn"(SSDB := #FIFO_DB, SSDW := 0, PARA := 16#0000, INDATEN := P#M220.0, RE_VAL := #MB199);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,42 @@
FUNCTION "SchleusenZeiger_ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Schleuse_X : Int; // Schleuse zum Beeinflussen
MW224 : Word; // war "MW224"
MW226 : Word; // war "MW226"
END_VAR
VAR_OUTPUT
Schleusen_DB : Int;
Schleusen_DW : Int;
Error : Bool;
MW200 : Word; // war "MW200"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Position : Int;
END_VAR
BEGIN
REGION Zeiger für Schleuse_X ermitteln
#MW200 := #Schleuse_X;
"DatenOut"(SSDB := 274, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M200.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // Einsprung Schleuse ermitteln: | Eintrag lesen
#Error := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
#Schleusen_DB := #MW224;
#Schleusen_DW := #MW226;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,49 @@
FUNCTION "ShopGroup to Raus-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ShopGroup : DInt; // Aufgrunf dieser ShopGroup
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Int; // Puffer ermitteln
MD220 : DWord; // war "MD220"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Puffer_ShopGroup : Int;
Position : Int;
Schleife : Int; // Loopzähler
Puffer_Zähler : Int;
Puffer_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
END_VAR
BEGIN
REGION Aktiver Puffer für diese ShopGroup zum Abrufen
#Puffer := 0;
#MD220 := #ShopGroup;
IF #ShopGroup = 0 THEN RETURN; END_IF;
END_REGION
REGION Puffer mit dieser ShopGroup zum Abrufen aktiv?
"DatenOut"(SSDB := 102, SSDW := 0, PARA := 16#0202, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer ShopGroupn abrufen | Eintrag lesen (ab 2.DW)
IF NOT (#M199_7) THEN RETURN; END_IF;
#Puffer := #MW220;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,49 @@
FUNCTION "ShopGroup_Raus-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ShopGroup : DInt; // Aufgrunf dieser ShopGroup
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Int; // Puffer ermitteln
MD220 : DWord; // war "MD220"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Puffer_ShopGroup : Int;
Position : Int;
Schleife : Int; // Loopzähler
Puffer_Zähler : Int;
Puffer_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
END_VAR
BEGIN
REGION Aktiver Puffer für diese ShopGroup zum Abrufen
#Puffer := 0;
#MD220 := #ShopGroup;
IF #ShopGroup = 0 THEN RETURN; END_IF;
END_REGION
REGION Puffer mit dieser ShopGroup zum Abrufen aktiv?
"DatenOut"(SSDB := 102, SSDW := 0, PARA := 16#0202, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer ShopGroupn abrufen | Eintrag lesen (ab 2.DW)
IF NOT (#M199_7) THEN RETURN; END_IF;
#Puffer := #MW220;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,52 @@
FUNCTION "ShopGroup_Rein-Lager ermitteln" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
ShopGroup : DInt; // Aufgrunf dieser ShopGroup
M199_7 : Bool; // war "M199.7"
MW220 : Word; // war "MW220"
END_VAR
VAR_OUTPUT
Puffer : Word; // Puffer ermitteln
MD220 : DWord; // war "MD220"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
END_VAR
VAR_TEMP
Position : Int;
END_VAR
BEGIN
REGION Aktives Puffer für diese ShopGroup zum Einfahren
#Puffer := 16#0;
#MD220 := #ShopGroup;
IF (#ShopGroup < 0) AND (#ShopGroup <> -1) THEN RETURN; END_IF;
END_REGION
REGION Puffer mit dieser ShopGroup schon zum Einlagern aktiv?
"DatenOut"(SSDB := 101, SSDW := 0, PARA := 16#0202, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer ShopGroup einfahren | Eintrag lesen (ab 2.DW)
IF #M199_7 THEN GOTO Puffer; END_IF;
END_REGION
REGION Leeres Puffer vorhanden?
"DatenOut"(SSDB := 100, SSDW := 0, PARA := 16#F100, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := P#M220.0, Position := #Position); // DL Puffer leer | 1.Eintrag lesen
IF #M199_7 THEN GOTO Puffer; END_IF;
RETURN;
END_REGION
REGION Puffer aufbereiten
#Puffer := INT_TO_BCD16(#MW220) OR 16#B000;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
+44
View File
@@ -0,0 +1,44 @@
ORGANIZATION_BLOCK "Startup"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_OUTPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
BEGIN
REGION Neustart
#DOutbound_Bereich.A01_UH07.AnlageEin := FALSE;
#SGes.Neustart := TRUE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UH07 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UC071 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UC073 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ0701 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ0702 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ0703 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7101 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7102 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7103 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7104 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7105 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7106 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7107 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7301 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7302 := FALSE;
#DOutbound_Bereich.A01_UH07.Not_Aus.UZ7303 := FALSE;
#DOutbound_Bereich.A01_UC072.Not_Aus.UC072 := FALSE;
#DOutbound_Bereich.A01_UC072.Not_Aus.UZ7201 := FALSE;
#DOutbound_Bereich.A01_UC072.Not_Aus.UZ7202 := FALSE;
#DOutbound_Bereich.A01_UC074.Not_Aus.UC074 := FALSE;
#DOutbound_Bereich.A01_UC074.Not_Aus.UZ7401 := FALSE;
#DOutbound_Bereich.A01_UC074.Not_Aus.UZ7402 := FALSE;
END_REGION
REGION Ende
RETURN;
END_REGION
END_ORGANIZATION_BLOCK
@@ -0,0 +1,50 @@
FUNCTION "Trolley_DL_Check_ID" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
TrolleyDL_OutDaten : Word; // war "TrolleyDL_OutDaten"
END_VAR
VAR_OUTPUT
Check_EndZiel : Word; // Ziel
Check_ZwischenZiel : Word; // Für Weiche,...
Check_ShopGroup : DInt; // Shop-Gruppe
Check_Standort : Word; // Standort (Puffer, unterwegs)
Err : Bool;
MD220 : DWord; // war "MD220"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
MW196 : Word; // war "MW196"
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Trolley auslesen
#MD220 := #TrolleyID;
"DatenOut"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := %DB1011.DBX0.0, Position := #MW196); // Eintrag lesen
#Err := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
END_REGION
REGION Relevante Daten übergeben
#Check_EndZiel := #TrolleyDL_OutDaten.OUTDaten.EndZiel;
#Check_ZwischenZiel := #TrolleyDL_OutDaten.OUTDaten.ZwischenZiel;
#Check_ShopGroup := #TrolleyDL_OutDaten.OUTDaten.ShopGroup;
#Check_Standort := #TrolleyDL_OutDaten.OUTDaten.Standort;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,64 @@
FUNCTION "Trolley_DL_Neue_Pos" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
Position : Word;
ShopGroup : DInt;
SGes : Word; // war "SGes"
END_VAR
VAR_OUTPUT
Err : Bool;
MD220 : DWord; // war "MD220"
TrolleyDL_OutDaten : Word; // war "TrolleyDL_OutDaten"
END_VAR
VAR_IN_OUT
MB199 : Byte; // war "MB199"
MW196 : Word; // war "MW196"
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Trolley auslesen
#MD220 := #TrolleyID;
"DatenOut"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, PARA := 16#0000, SEARCHDATEN := P#M220.0, RE_VAL := #MB199, OUTDATEN := %DB1011.DBX0.0, Position := #MW196); // Eintrag lesen
#Err := (#MB199 AND 2#1111111) <> 0;
IF (#MB199 AND 2#1111111) <> 0 THEN RETURN; END_IF;
END_REGION
REGION Zeit übegeben
#TrolleyDL_OutDaten.OUTDaten.TrolleyID := #TrolleyID;
#TrolleyDL_OutDaten.OUTDaten.LastTime.Jahr := #SGes.DATE_TIME.Jahr;
#TrolleyDL_OutDaten.OUTDaten.LastTime.Monat := #SGes.DATE_TIME.Monat;
#TrolleyDL_OutDaten.OUTDaten.LastTime.Tag := #SGes.DATE_TIME.Tag;
#TrolleyDL_OutDaten.OUTDaten.LastTime.Stunde := #SGes.DATE_TIME.Stunde;
#TrolleyDL_OutDaten.OUTDaten.LastTime.Minute := #SGes.DATE_TIME.Minute;
#TrolleyDL_OutDaten.OUTDaten.LastTime.Sekunde := #SGes.DATE_TIME.Sekunde;
END_REGION
REGION Neue Position übergeben
IF #Position <> 0 THEN #TrolleyDL_OutDaten.OUTDaten.Standort := #Position; END_IF;
END_REGION
REGION ShopGroup übergeben ? (bei 0 nichts ändern!)
IF #ShopGroup <> 0 THEN #TrolleyDL_OutDaten.OUTDaten.ShopGroup := #ShopGroup; END_IF;
END_REGION
REGION Daten schreiben
"DatenIn"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, INDATEN := %DB1011.DBX0.0, RE_VAL := #MB199);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,36 @@
FUNCTION "Trolleydaten_löschen" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
END_VAR
VAR_OUTPUT
TrolleyDL_SearchDaten : Word; // war "TrolleyDL_SearchDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
MW200 : Word; // war "MW200"
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Trolleydaten auslesen und verändern
#TrolleyDL_SearchDaten.SEARCHDaten.TrolleyID := #TrolleyID;
"DatenOut"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, PARA := 16#E100, SEARCHDATEN := %DB1012.DBX0.0, RE_VAL := #MB198, OUTDATEN := %DB1011.DBX0.0, Position := #MW200); // Eintrag lesen + austragen
RETURN;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,51 @@
FUNCTION "Trolleydaten_neu_anlegen" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
Endziel : Word;
ShopGroup : DInt;
END_VAR
VAR_OUTPUT
TrolleyDL_INDaten : Word; // war "TrolleyDL_INDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
END_VAR
VAR_TEMP
Lager_DB : Int;
Lager_DW : Int;
SSDW : Int;
Position : Int;
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Erst mal alte Daten löschen
"Trolleydaten_löschen"(MB198 => "MB198", MW200 => "MW200", TrolleyDL_SearchDaten => "TrolleyDL_SearchDaten");
END_REGION
REGION Trolleydaten speichern
#TrolleyDL_INDaten.INDaten.TrolleyID := #TrolleyID;
#TrolleyDL_INDaten.INDaten.EndZiel := #Endziel;
#TrolleyDL_INDaten.INDaten.ShopGroup := #ShopGroup;
#TrolleyDL_INDaten.INDaten.ZwischenZiel := 0;
#TrolleyDL_INDaten.INDaten.Standort := 0;
"DatenIn"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, INDATEN := %DB1010.DBX0.0, RE_VAL := #MB198); // Daten in Datenbank schreiben:
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,43 @@
FUNCTION "Trolleydaten_ändern" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Gesamt_Trolley_DL : Int;
TrolleyID : DInt;
Endziel : Word;
ShopGroup : DInt;
END_VAR
VAR_OUTPUT
TrolleyDL_OutDaten : Word; // war "TrolleyDL_OutDaten"
TrolleyDL_SearchDaten : Word; // war "TrolleyDL_SearchDaten"
END_VAR
VAR_IN_OUT
MB198 : Byte; // war "MB198"
MW200 : Word; // war "MW200"
END_VAR
BEGIN
REGION GesamtTrolly-DL angegeben?
IF #Gesamt_Trolley_DL <= 0 THEN RETURN; END_IF;
END_REGION
REGION Trolleydaten auslesen und verändern
#TrolleyDL_SearchDaten.SEARCHDaten.TrolleyID := #TrolleyID;
"DatenOut"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, PARA := 16#0000, SEARCHDATEN := %DB1012.DBX0.0, RE_VAL := #MB198, OUTDATEN := %DB1011.DBX0.0, Position := #MW200); // Eintrag lesen
IF #MB198 <> 2#10000000 THEN RETURN; END_IF;
IF #Endziel <> -1 THEN #TrolleyDL_OutDaten.OUTDaten.EndZiel := #Endziel; END_IF;
IF #ShopGroup <> -1 THEN #TrolleyDL_OutDaten.OUTDaten.ShopGroup := #ShopGroup; END_IF;
"DatenIn"(SSDB := #Gesamt_Trolley_DL, SSDW := 0, INDATEN := %DB1011.DBX0.0, RE_VAL := #MB198);
RETURN;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
+94
View File
@@ -0,0 +1,94 @@
FUNCTION_BLOCK "VP_Antriebe"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
T191 : Word; // war "T191"
END_VAR
VAR_IN_OUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
FC0145 : Word; // war "FC0145"
FC0146 : Word; // war "FC0146"
FC0147 : Word; // war "FC0147"
FC0150 : Word; // war "FC0150"
FC0152 : Word; // war "FC0152"
MA0145 : Bool; // war "MA0145"
MA0146 : Bool; // war "MA0146"
MA0147 : Bool; // war "MA0147"
MA0150 : Bool; // war "MA0150"
MA0152 : Bool; // war "MA0152"
END_VAR
VAR
MA0145 : "MAntrieb_PowerSave";
MA0146 : "MAntrieb_PowerSave";
MA0147 : "MAntrieb_PowerSave";
MA0150 : "MAntrieb_PowerSave";
MA0152 : "MAntrieb_PowerSave";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik Linie ist aktiv
Hand : Bool; // Hand Linie ist aktiv
BereichErr : Bool; // Bereichsstörung -> Antrieb stoppen
QKontroll : Bool; // Frequenzumrichter schon 3s Netz EIN
FuKontroll : Bool; // Frequenzumrichter schon 3s Netz EIN
Quit : Bool; // Motorschutz-Störung quittieren
Qok : Bool; // Motorschutz ok
Jog1 : Bool; // Geschwindigkeit 1
Jog2 : Bool; // Geschwindigkeit 2
Betrieb : Bool; // Betriebsart aktiv
FC105_RET : Word; // Returnwert von FC105
Antrieb1 : Bool; // Antrieb dazuschalten
Antrieb2 : Bool; // Antrieb dazuschalten
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
BereichErr_Zusatz_7102 : Bool; // Bereichsstörung -> Antrieb stoppen
BereichErr_Zusatz_7104 : Bool; // Bereichsstörung -> Antrieb stoppen
BereichErr_Zusatz_7102_7104 : Bool; // Bereichsstörung -> Antrieb stoppen
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC071/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#Hand := FALSE;
#BereichErr := #DOutbound_Bereich.A01_UC071.BereichErr;
#BereichErr_Zusatz_7102 := (#BereichErr OR #DOutbound_Bereich.A01_UZ7102.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#BereichErr_Zusatz_7104 := (#BereichErr OR #DOutbound_Bereich.A01_UZ7104.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#BereichErr_Zusatz_7102_7104 := ((#BereichErr OR #BereichErr_Zusatz_7102) OR #BereichErr_Zusatz_7104) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#QKontroll := #T191;
#FuKontroll := #T191;
#Quit := #DOutbound_Bereich.A01_UC071.StOk_aktiv;
END_REGION
REGION MA0145
#MA0145(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr_Zusatz_7102, Q := #FC0145, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0145, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0145);
END_REGION
REGION MA0146
#MA0146(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr_Zusatz_7102, Q := #FC0146, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0146, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0146);
END_REGION
REGION MA0147
#MA0147(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr_Zusatz_7104, Q := #FC0147, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0147, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0147);
END_REGION
REGION MA0150
#MA0150(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr_Zusatz_7104, Q := #FC0150, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0150, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0150);
END_REGION
REGION MA0152
#MA0152(Automatik := #Auto, Handbetrieb := #Hand, BereichErr := #BereichErr_Zusatz_7102_7104, Q := #FC0152, Ptc := TRUE, QKontroll := #QKontroll, ErrQuit := #Quit, Antriebvor := #MA0152, QErr := #g_7_HMI_Err_UH07_OB.QErr.MA0152);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,99 @@
FUNCTION_BLOCK "VP_Auslagern"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DVP_Sensoren : Word; // war "DVP_Sensoren"
MB3207 : Byte; // war "MB3207"
MB3210 : Byte; // war "MB3210"
MB3211 : Byte; // war "MB3211"
MB3212 : Byte; // war "MB3212"
MB3213 : Byte; // war "MB3213"
MB3214 : Byte; // war "MB3214"
MB3215 : Byte; // war "MB3215"
END_VAR
VAR_IN_OUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
BG3181 : Word; // war "BG3181"
BG3182 : Word; // war "BG3182"
BG3183 : Word; // war "BG3183"
BG3184 : Word; // war "BG3184"
BG3185 : Word; // war "BG3185"
BG3240 : Word; // war "BG3240"
BG3241 : Word; // war "BG3241"
BG3480 : Word; // war "BG3480"
BG3481 : Word; // war "BG3481"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
DVP_Antriebe : Word; // war "DVP_Antriebe"
MA0147 : Bool; // war "MA0147"
MA0150 : Bool; // war "MA0150"
END_VAR
VAR
Ausfahren_Ok_B : "MAusfahrFreigabe_neu";
Impuls_MB3480 : "MImpulsGeber";
Ausfahren_Ok_A : "MAusfahrFreigabe_neu";
Impuls_MB3185 : "MImpulsGeber";
Simulation_Auslagern : Struct
Auslagern_aktiv : Bool;
Wartezeit : Int;
Vollpuffer_Check : Int;
Vollpuffer_Aktiv : Int;
Last_Check : Int;
Position : Int;
END_STRUCT;
END_VAR
VAR_TEMP
ErrQuit : Bool;
Antrieb : Bool;
Impuls : Bool;
Lager_X : Int;
Lager_DB : Int;
Lager_DW : Int;
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt; // Startwert mit Offset 0
END_VAR
BEGIN
REGION Inkremente B über Zahnrad-Sensor
#ErrQuit := #DOutbound_Bereich.A01_UZ7107.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7104.StOk_aktiv;
#Impuls_MB3480(B_Zaehlen := #BG3480, Antrieb_aktiv := #MA0147, Quit := #ErrQuit, Signal := #Impuls, Err_Kein_Signal := #g_7_HMI_Err_UH07_OB.Impulsgeber_3480.Kein_Signal, Err_Signal_zu_lang := #g_7_HMI_Err_UH07_OB.Impulsgeber_3480.Signal_zu_lang);
IF (#g_7_HMI_Err_UH07_OB.Impulsgeber_3480.Kein_Signal OR #g_7_HMI_Err_UH07_OB.Impulsgeber_3480.Signal_zu_lang) AND NOT (#ErrQuit) THEN #DVP_Antriebe.MA0147.Stat.Stop_vor := TRUE; END_IF;
IF #g_7_HMI_Err_UH07_OB.Impulsgeber_3480.Kein_Signal OR #g_7_HMI_Err_UH07_OB.Impulsgeber_3480.Signal_zu_lang THEN
#DOutbound_Bereich.A01_UZ7107.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7104.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ausfahr-Steuerung B
#Ausfahren_Ok_B(Impuls := #Impuls, Vorbei_1 := #BG3183, Vorbei_2 := #BG3182, Vorbei_3 := #BG3181, Vorbei_4 := #BG3481, Inks_Vorbei_1 := 12, Inks_Vorbei_2 := 158, Inks_Vorbei_3 := 353, Inks_Vorbei_4 := 509, Antrieb_ein := #DVP_Antriebe.MA0147.Stat.A_start);
END_REGION
REGION Lager-Raus-Antrieb B stoppen
IF #BG3183 AND ((((((((((#MB3207 OR #MB3210) OR #MB3211) OR #MB3212) OR #MB3213) OR #MB3214) OR #MB3215) OR #DVP_Sensoren.Stau_BG3184.Stat.B_Akt) OR #DVP_Sensoren.Stau_BG3240.Stat.B_Akt) OR #DVP_Sensoren.Stau_BG3241.Stat.B_Akt) OR #DVP_Sensoren.Stau_BG3242.Stat.B_Akt) THEN #DVP_Antriebe.MA0147.Stat.Stop_vor := TRUE; END_IF;
END_REGION
REGION Inkremente A über Zahnrad-Sensor
#ErrQuit := (#DOutbound_Bereich.A01_UZ7104.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7105.StOk_aktiv) OR #DOutbound_Bereich.A01_UC071.StOk_aktiv;
#Impuls_MB3185(B_Zaehlen := #BG3185, Antrieb_aktiv := #MA0150, Quit := #ErrQuit, Signal := #Impuls, Err_Kein_Signal := #g_7_HMI_Err_UH07_OB.Impulsgeber_3185.Kein_Signal, Err_Signal_zu_lang := #g_7_HMI_Err_UH07_OB.Impulsgeber_3185.Signal_zu_lang);
IF (#g_7_HMI_Err_UH07_OB.Impulsgeber_3185.Kein_Signal OR #g_7_HMI_Err_UH07_OB.Impulsgeber_3185.Signal_zu_lang) AND NOT (#ErrQuit) THEN #DVP_Antriebe.MA0150.Stat.Stop_vor := TRUE; END_IF;
IF #g_7_HMI_Err_UH07_OB.Impulsgeber_3185.Kein_Signal OR #g_7_HMI_Err_UH07_OB.Impulsgeber_3185.Signal_zu_lang THEN
#DOutbound_Bereich.A01_UZ7104.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7105.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC071.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ausfahr-Steuerung A
#Ausfahren_Ok_A(Impuls := #Impuls, Vorbei_1 := #BG3241, Vorbei_2 := #BG3240, Vorbei_3 := #BG3184, Vorbei_4 := #BG3183, Inks_Vorbei_1 := 146, Inks_Vorbei_2 := 331, Inks_Vorbei_3 := 489, Inks_Vorbei_4 := 482, Inks_Vorbei_5 := 630, Antrieb_ein := #DVP_Antriebe.MA0150.Stat.A_start);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+24
View File
@@ -0,0 +1,24 @@
FUNCTION "VP_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DVP_Sensoren"();
"DVP_OmniFahren"();
"DVollPufferStrecken_A"();
"DVollPufferStrecken_B"();
"DVP_Sorter_A"();
"DVP_Sorter_B"();
"DVP_Auslagern"();
"DVP_Zylinder"();
"DVP_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
+459
View File
@@ -0,0 +1,459 @@
FUNCTION_BLOCK "VP_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
MA0152 : Bool; // war "MA0152"
END_VAR
VAR_IN_OUT
BG3001 : Word; // war "BG3001"
BG3002 : Word; // war "BG3002"
BG3003 : Word; // war "BG3003"
BG3005 : Word; // war "BG3005"
BG3006 : Word; // war "BG3006"
BG3007 : Word; // war "BG3007"
BG3010 : Word; // war "BG3010"
BG3011 : Word; // war "BG3011"
BG3012 : Word; // war "BG3012"
BG3013 : Word; // war "BG3013"
BG3014 : Word; // war "BG3014"
BG3015 : Word; // war "BG3015"
BG3016 : Word; // war "BG3016"
BG3017 : Word; // war "BG3017"
BG3020 : Word; // war "BG3020"
BG3021 : Word; // war "BG3021"
BG3022 : Word; // war "BG3022"
BG3023 : Word; // war "BG3023"
BG3024 : Word; // war "BG3024"
BG3025 : Word; // war "BG3025"
BG3026 : Word; // war "BG3026"
BG3027 : Word; // war "BG3027"
BG3060 : Word; // war "BG3060"
BG3061 : Word; // war "BG3061"
BG3062 : Word; // war "BG3062"
BG3063 : Word; // war "BG3063"
BG3064 : Word; // war "BG3064"
BG3065 : Word; // war "BG3065"
BG3066 : Word; // war "BG3066"
BG3067 : Word; // war "BG3067"
BG3070 : Word; // war "BG3070"
BG3071 : Word; // war "BG3071"
BG3072 : Word; // war "BG3072"
BG3073 : Word; // war "BG3073"
BG3074 : Word; // war "BG3074"
BG3075 : Word; // war "BG3075"
BG3076 : Word; // war "BG3076"
BG3077 : Word; // war "BG3077"
BG3080 : Word; // war "BG3080"
BG3081 : Word; // war "BG3081"
BG3082 : Word; // war "BG3082"
BG3083 : Word; // war "BG3083"
BG3084 : Word; // war "BG3084"
BG3085 : Word; // war "BG3085"
BG3086 : Word; // war "BG3086"
BG3087 : Word; // war "BG3087"
BG3120 : Word; // war "BG3120"
BG3181 : Word; // war "BG3181"
BG3182 : Word; // war "BG3182"
BG3183 : Word; // war "BG3183"
BG3184 : Word; // war "BG3184"
BG3241 : Word; // war "BG3241"
BG3242 : Word; // war "BG3242"
BG3243 : Word; // war "BG3243"
BG3246 : Word; // war "BG3246"
BG3420 : Word; // war "BG3420"
BG3423 : Word; // war "BG3423"
BG3424 : Word; // war "BG3424"
BG3425 : Word; // war "BG3425"
BG3426 : Word; // war "BG3426"
BG3427 : Word; // war "BG3427"
BG3430 : Word; // war "BG3430"
BG3431 : Word; // war "BG3431"
BG3432 : Word; // war "BG3432"
BG3433 : Word; // war "BG3433"
BG3434 : Word; // war "BG3434"
BG3435 : Word; // war "BG3435"
BG3481 : Word; // war "BG3481"
MA0145 : Bool; // war "MA0145"
MA0146 : Bool; // war "MA0146"
MA0147 : Bool; // war "MA0147"
MA0150 : Bool; // war "MA0150"
END_VAR
VAR
Stau_VP1 : "MSensoren";
Stau_VP2 : "MSensoren";
Stau_VP3 : "MSensoren";
Stau_VP4 : "MSensoren";
Stau_VP5 : "MSensoren";
Stau_VP6 : "MSensoren";
Stau_VP7 : "MSensoren";
Stau_VP8 : "MSensoren";
Stau_VP9 : "MSensoren";
Stau_VP10 : "MSensoren";
Stau_VP11 : "MSensoren";
Stau_VP12 : "MSensoren";
Stau_VP13 : "MSensoren";
Stau_VP14 : "MSensoren";
Stau_VP15 : "MSensoren";
Stau_VP16 : "MSensoren";
Stau_VP17 : "MSensoren";
Stau_VP18 : "MSensoren";
Stau_VP19 : "MSensoren";
Stau_VP20 : "MSensoren";
Stau_VP21 : "MSensoren";
Stau_VP22 : "MSensoren";
Stau_VP23 : "MSensoren";
Stau_VP24 : "MSensoren";
Stau_VP25 : "MSensoren";
Stau_VP26 : "MSensoren";
Stau_VP27 : "MSensoren";
Stau_VP28 : "MSensoren";
Stau_VP29 : "MSensoren";
Stau_VP30 : "MSensoren";
Stau_VP31 : "MSensoren";
Stau_VP32 : "MSensoren";
Stau_VP33 : "MSensoren";
Stau_VP34 : "MSensoren";
Stau_VP35 : "MSensoren";
Stau_VP36 : "MSensoren";
Stau_VP37 : "MSensoren";
Stau_VP38 : "MSensoren";
Stau_VP39 : "MSensoren";
Stau_VP40 : "MSensoren";
Stau_VP41 : "MSensoren";
Stau_VP42 : "MSensoren";
Stau_VP43 : "MSensoren";
Stau_VP44 : "MSensoren";
Stau_VP45 : "MSensoren";
Stau_VP46 : "MSensoren";
Stau_VP47 : "MSensoren";
Stau_VP48 : "MSensoren";
Stau_VP49 : "MSensoren";
Stau_VP50 : "MSensoren";
Stau_VP51 : "MSensoren";
Stau_BG3062 : "MSensoren";
Stau_BG3061 : "MSensoren";
Stau_BG3060 : "MSensoren";
Stau_BG3003 : "MSensoren";
Stau_BG3002 : "MSensoren";
Stau_BG3001 : "MSensoren";
Stau_BG3420 : "MSensoren";
Stau_BG3481 : "MSensoren";
Stau_BG3181 : "MSensoren";
Stau_BG3182 : "MSensoren";
Stau_BG3183 : "MSensoren";
Stau_BG3184 : "MSensoren";
Stau_BG3240 : "MSensoren";
Stau_BG3241 : "MSensoren";
Stau_BG3242 : "MSensoren";
Stau_BG3243 : "MSensoren";
Stau_BG3246 : "MSensoren";
An_BG3120 : "MSensoren";
An_BG3003 : "MSensoren";
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau VollPuffer
#Stau_VP1(ESensor := #BG3087, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP2(ESensor := #BG3086, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP3(ESensor := #BG3085, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP4(ESensor := #BG3084, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP5(ESensor := #BG3083, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP6(ESensor := #BG3082, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP7(ESensor := #BG3081, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP8(ESensor := #BG3080, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP9(ESensor := #BG3077, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP10(ESensor := #BG3076, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP11(ESensor := #BG3075, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP12(ESensor := #BG3074, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP13(ESensor := #BG3073, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP14(ESensor := #BG3072, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP15(ESensor := #BG3071, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP16(ESensor := #BG3070, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP17(ESensor := #BG3067, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP18(ESensor := #BG3066, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP19(ESensor := #BG3065, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP20(ESensor := #BG3064, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP21(ESensor := #BG3063, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP22(ESensor := #BG3027, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP23(ESensor := #BG3026, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP24(ESensor := #BG3025, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP25(ESensor := #BG3024, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP26(ESensor := #BG3023, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP27(ESensor := #BG3022, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP28(ESensor := #BG3021, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP29(ESensor := #BG3020, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP30(ESensor := #BG3017, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP31(ESensor := #BG3016, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP32(ESensor := #BG3015, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP33(ESensor := #BG3014, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP34(ESensor := #BG3013, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP35(ESensor := #BG3012, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP36(ESensor := #BG3011, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP37(ESensor := #BG3010, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP38(ESensor := #BG3007, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP39(ESensor := #BG3006, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP40(ESensor := #BG3005, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP41(ESensor := #BG3435, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP42(ESensor := #BG3434, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP43(ESensor := #BG3433, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP44(ESensor := #BG3432, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP45(ESensor := #BG3431, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP46(ESensor := #BG3430, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP47(ESensor := #BG3427, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP48(ESensor := #BG3426, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP49(ESensor := #BG3425, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP50(ESensor := #BG3424, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau VollPuffer
#Stau_VP51(ESensor := #BG3423, T_Ein := 01, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Sorter Rein A
#Stau_BG3062(ESensor := #BG3062, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0145, taus_aktiv := TRUE);
END_REGION
REGION Stau Sorter Rein A
#Stau_BG3061(ESensor := #BG3061, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0145, taus_aktiv := TRUE);
END_REGION
REGION Stau Sorter Rein A
#Stau_BG3060(ESensor := #BG3060, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0145, taus_aktiv := TRUE);
END_REGION
REGION Stau Sorter Rein B
#Stau_BG3003(ESensor := #BG3003, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0146, taus_aktiv := TRUE);
END_REGION
REGION Stau Sorter Rein B
#Stau_BG3002(ESensor := #BG3002, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0146, taus_aktiv := TRUE);
END_REGION
REGION Stau Sorter Rein B
#Stau_BG3001(ESensor := #BG3001, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0146, taus_aktiv := TRUE);
END_REGION
REGION Stau Sorter Rein B
#Stau_BG3420(ESensor := #BG3420, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0146, taus_aktiv := TRUE);
END_REGION
REGION Stau Puffer Raus B
#Stau_BG3481(ESensor := #BG3481, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0147, taus_aktiv := TRUE);
END_REGION
REGION Stau Puffer Raus B
#Stau_BG3181(ESensor := #BG3181, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0147, taus_aktiv := TRUE);
END_REGION
REGION Stau Puffer Raus B
#Stau_BG3182(ESensor := #BG3182, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0147, taus_aktiv := TRUE);
END_REGION
REGION Stau Puffer Raus B
#Stau_BG3183(ESensor := #BG3183, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0147, taus_aktiv := TRUE);
END_REGION
REGION Stau Puffer Raus A
#Stau_BG3184(ESensor := #BG3184, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0150, taus_aktiv := TRUE);
END_REGION
REGION Stau Puffer Raus A
#Stau_BG3240(ESensor := #BG3184, T_Ein := 80, T_Aus := 11, tein_aktiv := #MA0150, taus_aktiv := TRUE);
END_REGION
REGION Stau Fahrstrecke
#Stau_BG3241(ESensor := #BG3241, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Fahrstrecke
#Stau_BG3242(ESensor := #BG3242, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Fahrstrecke
#Stau_BG3243(ESensor := #BG3243, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau Fahrstrecke
#Stau_BG3246(ESensor := #BG3246, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Am SynchronPunkt Sorter A
#Antrieb := #MA0152 AND #MA0145;
#An_BG3120(ESensor := #BG3120, T_Ein := 01, T_Aus := 100, tein_aktiv := TRUE, taus_aktiv := #Antrieb);
END_REGION
REGION An der Übergabe Sorter A / B
#Antrieb := #MA0145 AND #MA0146;
#An_BG3003(ESensor := #BG3003, T_Ein := 01, T_Aus := 100, tein_aktiv := TRUE, taus_aktiv := #Antrieb);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
+999
View File
@@ -0,0 +1,999 @@
FUNCTION_BLOCK "VP_Zylinder"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
SGes : Word; // war "SGes"
END_VAR
VAR_IN_OUT
MB3005 : Byte; // war "MB3005"
MB3006 : Byte; // war "MB3006"
MB3007 : Byte; // war "MB3007"
MB3010 : Byte; // war "MB3010"
MB3011 : Byte; // war "MB3011"
MB3012 : Byte; // war "MB3012"
MB3013 : Byte; // war "MB3013"
MB3014 : Byte; // war "MB3014"
MB3015 : Byte; // war "MB3015"
MB3016 : Byte; // war "MB3016"
MB3017 : Byte; // war "MB3017"
MB3020 : Byte; // war "MB3020"
MB3021 : Byte; // war "MB3021"
MB3022 : Byte; // war "MB3022"
MB3023 : Byte; // war "MB3023"
MB3024 : Byte; // war "MB3024"
MB3025 : Byte; // war "MB3025"
MB3026 : Byte; // war "MB3026"
MB3027 : Byte; // war "MB3027"
MB3030 : Byte; // war "MB3030"
MB3031 : Byte; // war "MB3031"
MB3032 : Byte; // war "MB3032"
MB3033 : Byte; // war "MB3033"
MB3034 : Byte; // war "MB3034"
MB3035 : Byte; // war "MB3035"
MB3036 : Byte; // war "MB3036"
MB3037 : Byte; // war "MB3037"
MB3040 : Byte; // war "MB3040"
MB3041 : Byte; // war "MB3041"
MB3042 : Byte; // war "MB3042"
MB3043 : Byte; // war "MB3043"
MB3044 : Byte; // war "MB3044"
MB3045 : Byte; // war "MB3045"
MB3046 : Byte; // war "MB3046"
MB3047 : Byte; // war "MB3047"
MB3050 : Byte; // war "MB3050"
MB3051 : Byte; // war "MB3051"
MB3052 : Byte; // war "MB3052"
MB3063 : Byte; // war "MB3063"
MB3064 : Byte; // war "MB3064"
MB3065 : Byte; // war "MB3065"
MB3066 : Byte; // war "MB3066"
MB3067 : Byte; // war "MB3067"
MB3070 : Byte; // war "MB3070"
MB3071 : Byte; // war "MB3071"
MB3072 : Byte; // war "MB3072"
MB3073 : Byte; // war "MB3073"
MB3074 : Byte; // war "MB3074"
MB3075 : Byte; // war "MB3075"
MB3076 : Byte; // war "MB3076"
MB3077 : Byte; // war "MB3077"
MB3080 : Byte; // war "MB3080"
MB3081 : Byte; // war "MB3081"
MB3082 : Byte; // war "MB3082"
MB3083 : Byte; // war "MB3083"
MB3084 : Byte; // war "MB3084"
MB3085 : Byte; // war "MB3085"
MB3086 : Byte; // war "MB3086"
MB3087 : Byte; // war "MB3087"
MB3090 : Byte; // war "MB3090"
MB3091 : Byte; // war "MB3091"
MB3092 : Byte; // war "MB3092"
MB3093 : Byte; // war "MB3093"
MB3094 : Byte; // war "MB3094"
MB3095 : Byte; // war "MB3095"
MB3096 : Byte; // war "MB3096"
MB3097 : Byte; // war "MB3097"
MB3100 : Byte; // war "MB3100"
MB3101 : Byte; // war "MB3101"
MB3102 : Byte; // war "MB3102"
MB3103 : Byte; // war "MB3103"
MB3104 : Byte; // war "MB3104"
MB3105 : Byte; // war "MB3105"
MB3106 : Byte; // war "MB3106"
MB3107 : Byte; // war "MB3107"
MB3110 : Byte; // war "MB3110"
MB3111 : Byte; // war "MB3111"
MB3112 : Byte; // war "MB3112"
MB3113 : Byte; // war "MB3113"
MB3114 : Byte; // war "MB3114"
MB3120 : Byte; // war "MB3120"
MB3121 : Byte; // war "MB3121"
MB3123 : Byte; // war "MB3123"
MB3190 : Byte; // war "MB3190"
MB3191 : Byte; // war "MB3191"
MB3192 : Byte; // war "MB3192"
MB3193 : Byte; // war "MB3193"
MB3194 : Byte; // war "MB3194"
MB3195 : Byte; // war "MB3195"
MB3196 : Byte; // war "MB3196"
MB3197 : Byte; // war "MB3197"
MB3200 : Byte; // war "MB3200"
MB3201 : Byte; // war "MB3201"
MB3202 : Byte; // war "MB3202"
MB3203 : Byte; // war "MB3203"
MB3204 : Byte; // war "MB3204"
MB3205 : Byte; // war "MB3205"
MB3206 : Byte; // war "MB3206"
MB3207 : Byte; // war "MB3207"
MB3210 : Byte; // war "MB3210"
MB3211 : Byte; // war "MB3211"
MB3212 : Byte; // war "MB3212"
MB3213 : Byte; // war "MB3213"
MB3214 : Byte; // war "MB3214"
MB3215 : Byte; // war "MB3215"
MB3244 : Byte; // war "MB3244"
MB3245 : Byte; // war "MB3245"
MB3252 : Byte; // war "MB3252"
MB3253 : Byte; // war "MB3253"
MB3254 : Byte; // war "MB3254"
MB3255 : Byte; // war "MB3255"
MB3256 : Byte; // war "MB3256"
MB3257 : Byte; // war "MB3257"
MB3260 : Byte; // war "MB3260"
MB3261 : Byte; // war "MB3261"
MB3262 : Byte; // war "MB3262"
MB3263 : Byte; // war "MB3263"
MB3264 : Byte; // war "MB3264"
MB3265 : Byte; // war "MB3265"
MB3266 : Byte; // war "MB3266"
MB3267 : Byte; // war "MB3267"
MB3270 : Byte; // war "MB3270"
MB3271 : Byte; // war "MB3271"
MB3272 : Byte; // war "MB3272"
MB3273 : Byte; // war "MB3273"
MB3424 : Byte; // war "MB3424"
MB3425 : Byte; // war "MB3425"
MB3426 : Byte; // war "MB3426"
MB3427 : Byte; // war "MB3427"
MB3430 : Byte; // war "MB3430"
MB3431 : Byte; // war "MB3431"
MB3432 : Byte; // war "MB3432"
MB3433 : Byte; // war "MB3433"
MB3434 : Byte; // war "MB3434"
MB3435 : Byte; // war "MB3435"
MB3450 : Byte; // war "MB3450"
MB3451 : Byte; // war "MB3451"
MB3452 : Byte; // war "MB3452"
MB3453 : Byte; // war "MB3453"
MB3454 : Byte; // war "MB3454"
MB3455 : Byte; // war "MB3455"
MB3456 : Byte; // war "MB3456"
MB3457 : Byte; // war "MB3457"
MB3460 : Byte; // war "MB3460"
MB3461 : Byte; // war "MB3461"
MB3462 : Byte; // war "MB3462"
MB3482 : Byte; // war "MB3482"
MB3483 : Byte; // war "MB3483"
MB3484 : Byte; // war "MB3484"
MB3485 : Byte; // war "MB3485"
MB3486 : Byte; // war "MB3486"
MB3487 : Byte; // war "MB3487"
MB3490 : Byte; // war "MB3490"
MB3491 : Byte; // war "MB3491"
MB3492 : Byte; // war "MB3492"
MB3493 : Byte; // war "MB3493"
MB3494 : Byte; // war "MB3494"
END_VAR
VAR
Sorter_3121 : "MZylinder"; //
Sorter_3123 : "MZylinder"; //
Weiche_3120 : "MZylinder"; //
Schleuse_3244 : "MZylinder"; //
Weiche_3245 : "MZylinder"; //
Weiche_VP1 : "MZylinder"; //
Weiche_VP2 : "MZylinder";
Weiche_VP3 : "MZylinder";
Weiche_VP4 : "MZylinder";
Weiche_VP5 : "MZylinder";
Weiche_VP6 : "MZylinder";
Weiche_VP7 : "MZylinder";
Weiche_VP8 : "MZylinder";
Weiche_VP9 : "MZylinder";
Weiche_VP10 : "MZylinder";
Weiche_VP11 : "MZylinder";
Weiche_VP12 : "MZylinder";
Weiche_VP13 : "MZylinder";
Weiche_VP14 : "MZylinder";
Weiche_VP15 : "MZylinder";
Weiche_VP16 : "MZylinder";
Weiche_VP17 : "MZylinder";
Weiche_VP18 : "MZylinder";
Weiche_VP19 : "MZylinder";
Weiche_VP20 : "MZylinder";
Weiche_VP21 : "MZylinder";
Weiche_VP22 : "MZylinder";
Weiche_VP23 : "MZylinder";
Weiche_VP24 : "MZylinder";
Weiche_VP25 : "MZylinder";
Weiche_VP26 : "MZylinder";
Weiche_VP27 : "MZylinder";
Weiche_VP28 : "MZylinder";
Weiche_VP29 : "MZylinder";
Weiche_VP30 : "MZylinder";
Weiche_VP31 : "MZylinder";
Weiche_VP32 : "MZylinder";
Weiche_VP33 : "MZylinder";
Weiche_VP34 : "MZylinder";
Weiche_VP35 : "MZylinder";
Weiche_VP36 : "MZylinder";
Weiche_VP37 : "MZylinder";
Weiche_VP38 : "MZylinder";
Weiche_VP39 : "MZylinder";
Weiche_VP40 : "MZylinder";
Weiche_VP41 : "MZylinder";
Weiche_VP42 : "MZylinder";
Weiche_VP43 : "MZylinder";
Weiche_VP44 : "MZylinder";
Weiche_VP45 : "MZylinder";
Weiche_VP46 : "MZylinder";
Weiche_VP47 : "MZylinder";
Weiche_VP48 : "MZylinder";
Weiche_VP49 : "MZylinder";
Weiche_VP50 : "MZylinder";
Weiche_VP51 : "MZylinder";
Schleuse_Mitte_VP1 : "MZylinder"; //
Schleuse_Mitte_VP2 : "MZylinder";
Schleuse_Mitte_VP3 : "MZylinder";
Schleuse_Mitte_VP4 : "MZylinder";
Schleuse_Mitte_VP5 : "MZylinder";
Schleuse_Mitte_VP6 : "MZylinder";
Schleuse_Mitte_VP7 : "MZylinder";
Schleuse_Mitte_VP8 : "MZylinder";
Schleuse_Mitte_VP9 : "MZylinder";
Schleuse_Mitte_VP10 : "MZylinder";
Schleuse_Mitte_VP11 : "MZylinder";
Schleuse_Mitte_VP12 : "MZylinder";
Schleuse_Mitte_VP13 : "MZylinder";
Schleuse_Mitte_VP14 : "MZylinder";
Schleuse_Mitte_VP15 : "MZylinder";
Schleuse_Mitte_VP16 : "MZylinder";
Schleuse_Mitte_VP17 : "MZylinder";
Schleuse_Mitte_VP18 : "MZylinder";
Schleuse_Mitte_VP19 : "MZylinder";
Schleuse_Mitte_VP20 : "MZylinder";
Schleuse_Mitte_VP21 : "MZylinder";
Schleuse_Mitte_VP22 : "MZylinder";
Schleuse_Mitte_VP23 : "MZylinder";
Schleuse_Mitte_VP24 : "MZylinder";
Schleuse_Mitte_VP25 : "MZylinder";
Schleuse_Mitte_VP26 : "MZylinder";
Schleuse_Mitte_VP27 : "MZylinder";
Schleuse_Mitte_VP28 : "MZylinder";
Schleuse_Mitte_VP29 : "MZylinder";
Schleuse_Mitte_VP30 : "MZylinder";
Schleuse_Mitte_VP31 : "MZylinder";
Schleuse_Mitte_VP32 : "MZylinder";
Schleuse_Mitte_VP33 : "MZylinder";
Schleuse_Mitte_VP34 : "MZylinder";
Schleuse_Mitte_VP35 : "MZylinder";
Schleuse_Mitte_VP36 : "MZylinder";
Schleuse_Mitte_VP37 : "MZylinder";
Schleuse_Mitte_VP38 : "MZylinder";
Schleuse_Mitte_VP39 : "MZylinder";
Schleuse_Mitte_VP40 : "MZylinder";
Schleuse_Mitte_VP41 : "MZylinder";
Schleuse_Mitte_VP42 : "MZylinder";
Schleuse_Mitte_VP43 : "MZylinder";
Schleuse_Mitte_VP44 : "MZylinder";
Schleuse_Mitte_VP45 : "MZylinder";
Schleuse_Mitte_VP46 : "MZylinder";
Schleuse_Mitte_VP47 : "MZylinder";
Schleuse_Mitte_VP48 : "MZylinder";
Schleuse_Mitte_VP49 : "MZylinder";
Schleuse_Mitte_VP50 : "MZylinder";
Schleuse_Mitte_VP51 : "MZylinder";
Schleuse_Ausfahrt_VP1 : "MZylinder"; //
Schleuse_Ausfahrt_VP2 : "MZylinder";
Schleuse_Ausfahrt_VP3 : "MZylinder";
Schleuse_Ausfahrt_VP4 : "MZylinder";
Schleuse_Ausfahrt_VP5 : "MZylinder";
Schleuse_Ausfahrt_VP6 : "MZylinder";
Schleuse_Ausfahrt_VP7 : "MZylinder";
Schleuse_Ausfahrt_VP8 : "MZylinder";
Schleuse_Ausfahrt_VP9 : "MZylinder";
Schleuse_Ausfahrt_VP10 : "MZylinder";
Schleuse_Ausfahrt_VP11 : "MZylinder";
Schleuse_Ausfahrt_VP12 : "MZylinder";
Schleuse_Ausfahrt_VP13 : "MZylinder";
Schleuse_Ausfahrt_VP14 : "MZylinder";
Schleuse_Ausfahrt_VP15 : "MZylinder";
Schleuse_Ausfahrt_VP16 : "MZylinder";
Schleuse_Ausfahrt_VP17 : "MZylinder";
Schleuse_Ausfahrt_VP18 : "MZylinder";
Schleuse_Ausfahrt_VP19 : "MZylinder";
Schleuse_Ausfahrt_VP20 : "MZylinder";
Schleuse_Ausfahrt_VP21 : "MZylinder";
Schleuse_Ausfahrt_VP22 : "MZylinder";
Schleuse_Ausfahrt_VP23 : "MZylinder";
Schleuse_Ausfahrt_VP24 : "MZylinder";
Schleuse_Ausfahrt_VP25 : "MZylinder";
Schleuse_Ausfahrt_VP26 : "MZylinder";
Schleuse_Ausfahrt_VP27 : "MZylinder";
Schleuse_Ausfahrt_VP28 : "MZylinder";
Schleuse_Ausfahrt_VP29 : "MZylinder";
Schleuse_Ausfahrt_VP30 : "MZylinder";
Schleuse_Ausfahrt_VP31 : "MZylinder";
Schleuse_Ausfahrt_VP32 : "MZylinder";
Schleuse_Ausfahrt_VP33 : "MZylinder";
Schleuse_Ausfahrt_VP34 : "MZylinder";
Schleuse_Ausfahrt_VP35 : "MZylinder";
Schleuse_Ausfahrt_VP36 : "MZylinder";
Schleuse_Ausfahrt_VP37 : "MZylinder";
Schleuse_Ausfahrt_VP38 : "MZylinder";
Schleuse_Ausfahrt_VP39 : "MZylinder";
Schleuse_Ausfahrt_VP40 : "MZylinder";
Schleuse_Ausfahrt_VP41 : "MZylinder";
Schleuse_Ausfahrt_VP42 : "MZylinder";
Schleuse_Ausfahrt_VP43 : "MZylinder";
Schleuse_Ausfahrt_VP44 : "MZylinder";
Schleuse_Ausfahrt_VP45 : "MZylinder";
Schleuse_Ausfahrt_VP46 : "MZylinder";
Schleuse_Ausfahrt_VP47 : "MZylinder";
Schleuse_Ausfahrt_VP48 : "MZylinder";
Schleuse_Ausfahrt_VP49 : "MZylinder";
Schleuse_Ausfahrt_VP50 : "MZylinder";
Schleuse_Ausfahrt_VP51 : "MZylinder";
END_VAR
VAR_TEMP
Auto : Bool; // Automatik ist aktiv
Hand : Bool; // Hand ist aktiv
ZylAst : Bool; // Zylinder ansteuern
BereichErr_Zusatz_7102 : Bool; // Bereichsstörung -> Antrieb stoppen
BereichErr_Zusatz_7104 : Bool; // Bereichsstörung -> Antrieb stoppen
BereichErr_Zusatz_7102_7104 : Bool; // Bereichsstörung -> Antrieb stoppen
END_VAR
BEGIN
REGION Übergabe des Bereichstatus System UC071/A01
#Auto := #DOutbound_Bereich.A01_UH07.Automatik AND NOT (#DOutbound_Bereich.A01_UH07.Handbetrieb);
#BereichErr_Zusatz_7102 := (#DOutbound_Bereich.A01_UC071.BereichErr OR #DOutbound_Bereich.A01_UZ7102.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#BereichErr_Zusatz_7104 := (#DOutbound_Bereich.A01_UC071.BereichErr OR #DOutbound_Bereich.A01_UZ7104.Area_Stop) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
#BereichErr_Zusatz_7102_7104 := ((#DOutbound_Bereich.A01_UC071.BereichErr OR #BereichErr_Zusatz_7102) OR #BereichErr_Zusatz_7104) AND NOT (#SGes.Simulation_ohne_HW_aktiv);
IF #DOutbound_Bereich.A01_UC071.BereichErr THEN GOTO Next; END_IF;
END_REGION
REGION Übergabe Area-Stop 7102
IF #BereichErr_Zusatz_7102 THEN GOTO Next1; END_IF;
END_REGION
REGION Schleuse_3121
#Sorter_3121(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3121);
END_REGION
REGION Schleuse_3123
#Sorter_3123(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3123);
END_REGION
REGION Weiche_3120
#Weiche_3120(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3120);
END_REGION
REGION Weiche_VP1
#Weiche_VP1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3087);
END_REGION
REGION Weiche_VP2
#Weiche_VP2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3086);
END_REGION
REGION Weiche_VP3
#Weiche_VP3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3085);
END_REGION
REGION Weiche_VP4
#Weiche_VP4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3084);
END_REGION
REGION Weiche_VP5
#Weiche_VP5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3083);
END_REGION
REGION Weiche_VP6
#Weiche_VP6(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3082);
END_REGION
REGION Weiche_VP7
#Weiche_VP7(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3081);
END_REGION
REGION Weiche_VP8
#Weiche_VP8(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3080);
END_REGION
REGION Weiche_VP9
#Weiche_VP9(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3077);
END_REGION
REGION Weiche_VP10
#Weiche_VP10(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3076);
END_REGION
REGION Weiche_VP11
#Weiche_VP11(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3075);
END_REGION
REGION Weiche_VP12
#Weiche_VP12(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3074);
END_REGION
REGION Weiche_VP13
#Weiche_VP13(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3073);
END_REGION
REGION Weiche_VP14
#Weiche_VP14(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3072);
END_REGION
REGION Weiche_VP15
#Weiche_VP15(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3071);
END_REGION
REGION Weiche_VP16
#Weiche_VP16(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3070);
END_REGION
REGION Weiche_VP17
#Weiche_VP17(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3067);
END_REGION
REGION Weiche_VP18
#Weiche_VP18(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3066);
END_REGION
REGION Weiche_VP19
#Weiche_VP19(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3065);
END_REGION
REGION Weiche_VP20
#Weiche_VP20(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3064);
END_REGION
REGION Weiche_VP21
#Weiche_VP21(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3063);
END_REGION
REGION Weiche_VP22
#Weiche_VP22(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3027);
END_REGION
REGION Weiche_VP23
#Weiche_VP23(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3026);
END_REGION
REGION Weiche_VP24
#Weiche_VP24(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3025);
END_REGION
REGION Weiche_VP25
#Weiche_VP25(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3024);
END_REGION
REGION Weiche_VP26
#Weiche_VP26(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3023);
END_REGION
REGION Weiche_VP27
#Weiche_VP27(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3022);
END_REGION
REGION Weiche_VP28
#Weiche_VP28(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3021);
END_REGION
REGION Weiche_VP29
#Weiche_VP29(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3020);
END_REGION
REGION Weiche_VP30
#Weiche_VP30(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3017);
END_REGION
REGION Weiche_VP31
#Weiche_VP31(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3016);
END_REGION
REGION Weiche_VP32
#Weiche_VP32(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3015);
END_REGION
REGION Weiche_VP33
#Weiche_VP33(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3014);
END_REGION
REGION Weiche_VP34
#Weiche_VP34(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3013);
END_REGION
REGION Weiche_VP35
#Weiche_VP35(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3012);
END_REGION
REGION Weiche_VP36
#Weiche_VP36(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3011);
END_REGION
REGION Weiche_VP37
#Weiche_VP37(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3010);
END_REGION
REGION Weiche_VP38
#Weiche_VP38(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3007);
END_REGION
REGION Weiche_VP39
#Weiche_VP39(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3006);
END_REGION
REGION Weiche_VP40
#Weiche_VP40(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3005);
END_REGION
REGION Weiche_VP41
#Weiche_VP41(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3435);
END_REGION
REGION Weiche_VP42
#Weiche_VP42(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3434);
END_REGION
REGION Weiche_VP43
#Weiche_VP43(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3433);
END_REGION
REGION Weiche_VP44
#Weiche_VP44(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3432);
END_REGION
REGION Weiche_VP45
#Weiche_VP45(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3431);
END_REGION
REGION Weiche_VP46
#Weiche_VP46(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3430);
END_REGION
REGION Weiche_VP47
#Weiche_VP47(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3427);
END_REGION
REGION Weiche_VP48
#Weiche_VP48(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3426);
END_REGION
REGION Weiche_VP49
#Weiche_VP49(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3425);
END_REGION
REGION Weiche_VP50
#Weiche_VP50(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3424);
END_REGION
REGION Weiche_VP51
#Weiche_VP51(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := ); // "MB3423"
END_REGION
REGION Übergabe Area-Stop 7102_7104
IF #BereichErr_Zusatz_7102_7104 THEN GOTO Next2; END_IF;
END_REGION
REGION Schleuse_Mitte_VP1
#Schleuse_Mitte_VP1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3114);
END_REGION
REGION Schleuse_Mitte_VP2
#Schleuse_Mitte_VP2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3113);
END_REGION
REGION Schleuse_Mitte_VP3
#Schleuse_Mitte_VP3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3112);
END_REGION
REGION Schleuse_Mitte_VP4
#Schleuse_Mitte_VP4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3111);
END_REGION
REGION Schleuse_Mitte_VP5
#Schleuse_Mitte_VP5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3110);
END_REGION
REGION Schleuse_Mitte_VP6
#Schleuse_Mitte_VP6(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3107);
END_REGION
REGION Schleuse_Mitte_VP7
#Schleuse_Mitte_VP7(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3106);
END_REGION
REGION Schleuse_Mitte_VP8
#Schleuse_Mitte_VP8(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3105);
END_REGION
REGION Schleuse_Mitte_VP9
#Schleuse_Mitte_VP9(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3104);
END_REGION
REGION Schleuse_Mitte_VP10
#Schleuse_Mitte_VP10(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3103);
END_REGION
REGION Schleuse_Mitte_VP11
#Schleuse_Mitte_VP11(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3102);
END_REGION
REGION Schleuse_Mitte_VP12
#Schleuse_Mitte_VP12(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3101);
END_REGION
REGION Schleuse_Mitte_VP13
#Schleuse_Mitte_VP13(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3100);
END_REGION
REGION Schleuse_Mitte_VP14
#Schleuse_Mitte_VP14(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3097);
END_REGION
REGION Schleuse_Mitte_VP15
#Schleuse_Mitte_VP15(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3096);
END_REGION
REGION Schleuse_Mitte_VP16
#Schleuse_Mitte_VP16(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3095);
END_REGION
REGION Schleuse_Mitte_VP17
#Schleuse_Mitte_VP17(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3094);
END_REGION
REGION Schleuse_Mitte_VP18
#Schleuse_Mitte_VP18(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3093);
END_REGION
REGION Schleuse_Mitte_VP19
#Schleuse_Mitte_VP19(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3092);
END_REGION
REGION Schleuse_Mitte_VP20
#Schleuse_Mitte_VP20(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3091);
END_REGION
REGION Schleuse_Mitte_VP21
#Schleuse_Mitte_VP21(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3090);
END_REGION
REGION Schleuse_Mitte_VP22
#Schleuse_Mitte_VP22(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3052);
END_REGION
REGION Schleuse_Mitte_VP23
#Schleuse_Mitte_VP23(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3051);
END_REGION
REGION Schleuse_Mitte_VP24
#Schleuse_Mitte_VP24(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3050);
END_REGION
REGION Schleuse_Mitte_VP25
#Schleuse_Mitte_VP25(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3047);
END_REGION
REGION Schleuse_Mitte_VP26
#Schleuse_Mitte_VP26(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3046);
END_REGION
REGION Schleuse_Mitte_VP27
#Schleuse_Mitte_VP27(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3045);
END_REGION
REGION Schleuse_Mitte_VP28
#Schleuse_Mitte_VP28(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3044);
END_REGION
REGION Schleuse_Mitte_VP29
#Schleuse_Mitte_VP29(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3043);
END_REGION
REGION Schleuse_Mitte_VP30
#Schleuse_Mitte_VP30(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3042);
END_REGION
REGION Schleuse_Mitte_VP31
#Schleuse_Mitte_VP31(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3041);
END_REGION
REGION Schleuse_Mitte_VP32
#Schleuse_Mitte_VP32(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3040);
END_REGION
REGION Schleuse_Mitte_VP33
#Schleuse_Mitte_VP33(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3037);
END_REGION
REGION Schleuse_Mitte_VP34
#Schleuse_Mitte_VP34(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3036);
END_REGION
REGION Schleuse_Mitte_VP35
#Schleuse_Mitte_VP35(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3035);
END_REGION
REGION Schleuse_Mitte_VP36
#Schleuse_Mitte_VP36(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3034);
END_REGION
REGION Schleuse_Mitte_VP37
#Schleuse_Mitte_VP37(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3033);
END_REGION
REGION Schleuse_Mitte_VP38
#Schleuse_Mitte_VP38(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3032);
END_REGION
REGION Schleuse_Mitte_VP39
#Schleuse_Mitte_VP39(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3031);
END_REGION
REGION Schleuse_Mitte_VP40
#Schleuse_Mitte_VP40(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3030);
END_REGION
REGION Schleuse_Mitte_VP41
#Schleuse_Mitte_VP41(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3462);
END_REGION
REGION Schleuse_Mitte_VP42
#Schleuse_Mitte_VP42(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3461);
END_REGION
REGION Schleuse_Mitte_VP43
#Schleuse_Mitte_VP43(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3460);
END_REGION
REGION Schleuse_Mitte_VP44
#Schleuse_Mitte_VP44(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3457);
END_REGION
REGION Schleuse_Mitte_VP45
#Schleuse_Mitte_VP45(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3456);
END_REGION
REGION Schleuse_Mitte_VP46
#Schleuse_Mitte_VP46(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3455);
END_REGION
REGION Schleuse_Mitte_VP47
#Schleuse_Mitte_VP47(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3454);
END_REGION
REGION Schleuse_Mitte_VP48
#Schleuse_Mitte_VP48(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3453);
END_REGION
REGION Schleuse_Mitte_VP49
#Schleuse_Mitte_VP49(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3452);
END_REGION
REGION Schleuse_Mitte_VP50
#Schleuse_Mitte_VP50(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3451);
END_REGION
REGION Schleuse_Mitte_VP51
#Schleuse_Mitte_VP51(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3450);
END_REGION
REGION Übergabe Area-Stop 7104
IF #BereichErr_Zusatz_7104 THEN GOTO Next; END_IF;
END_REGION
REGION Schleuse_Ausfahrt_VP1
#Schleuse_Ausfahrt_VP1(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3273);
END_REGION
REGION Schleuse_Ausfahrt_VP2
#Schleuse_Ausfahrt_VP2(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3272);
END_REGION
REGION Schleuse_Ausfahrt_VP3
#Schleuse_Ausfahrt_VP3(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3271);
END_REGION
REGION Schleuse_Ausfahrt_VP4
#Schleuse_Ausfahrt_VP4(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3270);
END_REGION
REGION Schleuse_Ausfahrt_VP5
#Schleuse_Ausfahrt_VP5(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3267);
END_REGION
REGION Schleuse_Ausfahrt_VP6
#Schleuse_Ausfahrt_VP6(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3266);
END_REGION
REGION Schleuse_Ausfahrt_VP7
#Schleuse_Ausfahrt_VP7(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3265);
END_REGION
REGION Schleuse_Ausfahrt_VP8
#Schleuse_Ausfahrt_VP8(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3264);
END_REGION
REGION Schleuse_Ausfahrt_VP9
#Schleuse_Ausfahrt_VP9(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3263);
END_REGION
REGION Schleuse_Ausfahrt_VP10
#Schleuse_Ausfahrt_VP10(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3262);
END_REGION
REGION Schleuse_Ausfahrt_VP11
#Schleuse_Ausfahrt_VP11(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3261);
END_REGION
REGION Schleuse_Ausfahrt_VP12
#Schleuse_Ausfahrt_VP12(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3260);
END_REGION
REGION Schleuse_Ausfahrt_VP13
#Schleuse_Ausfahrt_VP13(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3257);
END_REGION
REGION Schleuse_Ausfahrt_VP14
#Schleuse_Ausfahrt_VP14(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3256);
END_REGION
REGION Schleuse_Ausfahrt_VP15
#Schleuse_Ausfahrt_VP15(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3255);
END_REGION
REGION Schleuse_Ausfahrt_VP16
#Schleuse_Ausfahrt_VP16(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3254);
END_REGION
REGION Schleuse_Ausfahrt_VP17
#Schleuse_Ausfahrt_VP17(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3253);
END_REGION
REGION Schleuse_Ausfahrt_VP18
#Schleuse_Ausfahrt_VP18(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3252);
END_REGION
REGION Schleuse_Ausfahrt_VP19
#Schleuse_Ausfahrt_VP19(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3215);
END_REGION
REGION Schleuse_Ausfahrt_VP20
#Schleuse_Ausfahrt_VP20(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3214);
END_REGION
REGION Schleuse_Ausfahrt_VP21
#Schleuse_Ausfahrt_VP21(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3213);
END_REGION
REGION Schleuse_Ausfahrt_VP22
#Schleuse_Ausfahrt_VP22(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3212);
END_REGION
REGION Schleuse_Ausfahrt_VP23
#Schleuse_Ausfahrt_VP23(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3211);
END_REGION
REGION Schleuse_Ausfahrt_VP24
#Schleuse_Ausfahrt_VP24(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3210);
END_REGION
REGION Schleuse_Ausfahrt_VP25
#Schleuse_Ausfahrt_VP25(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3207);
END_REGION
REGION Schleuse_Ausfahrt_VP26
#Schleuse_Ausfahrt_VP26(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3206);
END_REGION
REGION Schleuse_Ausfahrt_VP27
#Schleuse_Ausfahrt_VP27(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3205);
END_REGION
REGION Schleuse_Ausfahrt_VP28
#Schleuse_Ausfahrt_VP28(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3204);
END_REGION
REGION Schleuse_Ausfahrt_VP29
#Schleuse_Ausfahrt_VP29(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3203);
END_REGION
REGION Schleuse_Ausfahrt_VP30
#Schleuse_Ausfahrt_VP30(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3202);
END_REGION
REGION Schleuse_Ausfahrt_VP31
#Schleuse_Ausfahrt_VP31(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3201);
END_REGION
REGION Schleuse_Ausfahrt_VP32
#Schleuse_Ausfahrt_VP32(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3200);
END_REGION
REGION Schleuse_Ausfahrt_VP33
#Schleuse_Ausfahrt_VP33(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3197);
END_REGION
REGION Schleuse_Ausfahrt_VP34
#Schleuse_Ausfahrt_VP34(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3196);
END_REGION
REGION Schleuse_Ausfahrt_VP35
#Schleuse_Ausfahrt_VP35(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3195);
END_REGION
REGION Schleuse_Ausfahrt_VP36
#Schleuse_Ausfahrt_VP36(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3194);
END_REGION
REGION Schleuse_Ausfahrt_VP37
#Schleuse_Ausfahrt_VP37(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3193);
END_REGION
REGION Schleuse_Ausfahrt_VP38
#Schleuse_Ausfahrt_VP38(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3192);
END_REGION
REGION Schleuse_Ausfahrt_VP39
#Schleuse_Ausfahrt_VP39(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3191);
END_REGION
REGION Schleuse_Ausfahrt_VP40
#Schleuse_Ausfahrt_VP40(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3190);
END_REGION
REGION Schleuse_Ausfahrt_VP41
#Schleuse_Ausfahrt_VP41(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3494);
END_REGION
REGION Schleuse_Ausfahrt_VP42
#Schleuse_Ausfahrt_VP42(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3493);
END_REGION
REGION Schleuse_Ausfahrt_VP43
#Schleuse_Ausfahrt_VP43(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3492);
END_REGION
REGION Schleuse_Ausfahrt_VP44
#Schleuse_Ausfahrt_VP44(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3491);
END_REGION
REGION Schleuse_Ausfahrt_VP45
#Schleuse_Ausfahrt_VP45(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3490);
END_REGION
REGION Schleuse_Ausfahrt_VP46
#Schleuse_Ausfahrt_VP46(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3487);
END_REGION
REGION Schleuse_Ausfahrt_VP47
#Schleuse_Ausfahrt_VP47(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3486);
END_REGION
REGION Schleuse_Ausfahrt_VP48
#Schleuse_Ausfahrt_VP48(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3485);
END_REGION
REGION Schleuse_Ausfahrt_VP49
#Schleuse_Ausfahrt_VP49(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3484);
END_REGION
REGION Schleuse_Ausfahrt_VP50
#Schleuse_Ausfahrt_VP50(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3483);
END_REGION
REGION Schleuse_Ausfahrt_VP51
#Schleuse_Ausfahrt_VP51(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3482);
END_REGION
REGION Schleuse_3244
#Schleuse_3244(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3244);
END_REGION
REGION Weiche_3245
#Weiche_3245(Automatik := #Auto, Handbetrieb := FALSE, T_Ast := 0, T_Gst := 5, ZylAst := #MB3245);
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,19 @@
FUNCTION "VPtoEP_Bereich" : Void
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
BEGIN
REGION Baustein-Aufrufe
"DVPtoEP_Sensoren"();
"DVPtoEP_OmniFahren"();
"DVPtoEP_Zylinder"();
"DVPtoEP_Antriebe"();
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION
@@ -0,0 +1,252 @@
FUNCTION_BLOCK "VPtoEP_OmniFahren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
g_7_HMI_Err_UH07_OB : Word; // war "7_HMI_Err_UH07_OB"
BG4453 : Word; // war "BG4453"
BG4530 : Word; // war "BG4530"
MA0332 : Bool; // war "MA0332"
END_VAR
VAR_IN_OUT
BG3246 : Word; // war "BG3246"
BG3247 : Word; // war "BG3247"
BG3251 : Word; // war "BG3251"
BG3274 : Word; // war "BG3274"
BG3275 : Word; // war "BG3275"
BG3361 : Word; // war "BG3361"
BG3362 : Word; // war "BG3362"
BG3363 : Word; // war "BG3363"
BG3364 : Word; // war "BG3364"
BG3366 : Word; // war "BG3366"
BG4440 : Word; // war "BG4440"
BG4441 : Word; // war "BG4441"
BG4442 : Word; // war "BG4442"
BG4443 : Word; // war "BG4443"
BG4447 : Word; // war "BG4447"
BG4450 : Word; // war "BG4450"
BG4451 : Word; // war "BG4451"
BG4454 : Word; // war "BG4454"
BG4461 : Word; // war "BG4461"
BG4500 : Word; // war "BG4500"
BG4501 : Word; // war "BG4501"
BG4502 : Word; // war "BG4502"
DEPtoLP_Antriebe : Word; // war "DEPtoLP_Antriebe"
DOutbound_Bereich : Word; // war "DOutbound_Bereich"
DVPtoEP_Antriebe : Word; // war "DVPtoEP_Antriebe"
DVPtoEP_Sensoren : Word; // war "DVPtoEP_Sensoren"
DVPtoEP_Zylinder : Word; // war "DVPtoEP_Zylinder"
MA0060 : Bool; // war "MA0060"
MA0061 : Bool; // war "MA0061"
MA0151 : Bool; // war "MA0151"
MA0320 : Bool; // war "MA0320"
MA0321 : Bool; // war "MA0321"
MA0322 : Bool; // war "MA0322"
MA0323 : Bool; // war "MA0323"
MA0324 : Bool; // war "MA0324"
MA0325 : Bool; // war "MA0325"
MA0331 : Bool; // war "MA0331"
MB3247 : Byte; // war "MB3247"
MB3275 : Byte; // war "MB3275"
MB3363 : Byte; // war "MB3363"
MB3366 : Byte; // war "MB3366"
MB4443 : Byte; // war "MB4443"
MB4445 : Byte; // war "MB4445"
MB4450 : Byte; // war "MB4450"
END_VAR
VAR
Schleuse_3247 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Schleuse_3275 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_3361 : "MHMOmniBereich_Plus";
Schleuse_3363 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Schleuse_3366 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
Bereich_4441 : "MHMOmniBereich_Plus";
Schleuse_4443 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Weiche_4445 : "MHMOmniWeiche_Plus";
Schleuse_4450 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
Bereich_4454 : "MHMOmniBereich_Plus";
Übergang_4501 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
END_VAR
VAR_TEMP
ErrQuit : Bool;
ErrAnz : Bool;
Stau_raus : Bool;
Start_ok : Bool;
B_aktiv : Bool;
B_vor_Schleuse : Bool;
B_nach_Schleuse : Bool;
Antrieb_aktiv : Bool;
Antrieb_vor : Bool;
Antrieb_stop : Bool;
Fahren_Ok : Bool;
Antrieb_nicht_stoppen : Bool;
END_VAR
BEGIN
REGION Systemzeug
#Schleuse_3247.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3275.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_3361.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3363.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3366.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4441.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4443.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Weiche_4445.Dyn.Status.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_4450.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Bereich_4454.Dyn.Sk.Auto_akt := #DOutbound_Bereich.A01_UH07.AnlageEin;
#Schleuse_3247.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Schleuse_3275.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC071.BereichErr);
#Bereich_3361.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_3363.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Schleuse_3366.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UH07.BereichErr);
#Bereich_4441.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4443.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Weiche_4445.Dyn.Status.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Schleuse_4450.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
#Bereich_4454.Dyn.Sk.Bereich_ok := NOT (#DOutbound_Bereich.A01_UC074.BereichErr);
END_REGION
REGION Störungen quittieren UZ7105
#ErrQuit := (#DOutbound_Bereich.A01_UZ7105.StOk_aktiv OR #DOutbound_Bereich.A01_UC071.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3247
#Schleuse_3247(Schleusen_Nr := 3247, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3246, B_InSchleuse := #BG3247, B_Zähl := #BG3251, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG3251.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0151, Antrieb_plus_aktiv := #MA0151, Schleuse_geöffnet := #MB3247, Y_Schleuse_Auf := #DVPtoEP_Zylinder.Schleuse_3247.Stat.Ast, Error := %DB708.DBW520, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0151.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0151.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0151.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0151.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Identisch
END_REGION
REGION Schleuse 3275
#Schleuse_3275(Schleusen_Nr := 3275, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3251, B_InSchleuse := #BG3275, B_AusSchleuse := #BG3274, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG3274.Stat.B_Akt, Start_Ok := #Bereich_3361.Dyn.Sk.Bereich_ok, Antrieb_Schleuse_aktiv := #MA0151, Antrieb_plus_aktiv := #MA0060, Schleuse_geöffnet := #MB3275, RestZeit_Bereich_plus := #Bereich_3361.Dyn.Restzeit, Y_Schleuse_Auf := #DVPtoEP_Zylinder.Schleuse_3275.Stat.Ast, Error := %DB708.DBW570, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0151.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0151.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0151.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0151.Stat.A_PS, Antrieb_plus_vor := #Bereich_3361.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7105
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7105.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC071.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7105/0701
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7105.StOk_aktiv OR #DOutbound_Bereich.A01_UZ0701.StOk_aktiv) OR #DOutbound_Bereich.A01_UC071.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 3361
#B_vor_Schleuse := #BG3274 AND #MB3275;
#Bereich_3361(Bereichs_Nr := 3361, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG3361, B_Zähl := #BG3362, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG3362.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0060, Antrieb_plus_aktiv := #MA0061, Antrieb_Bereich_vor := #DVPtoEP_Antriebe.MA0060.Stat.A_vor, Antrieb_Bereich_stop := #DVPtoEP_Antriebe.MA0060.Stat.Stop_vor, Error := %DB708.DBW454, Antrieb_Bereich_start := #DVPtoEP_Antriebe.MA0060.Stat.A_start, Antrieb_plus_vor := #DVPtoEP_Antriebe.MA0061.Stat.A_vor, Antrieb_plus_start := #DVPtoEP_Antriebe.MA0061.Stat.A_start, Antrieb_minus_vor := #DVPtoEP_Antriebe.MA0151.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ7105/0701
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7105.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ0701.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC071.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ0701
#ErrQuit := #DOutbound_Bereich.A01_UZ0701.StOk_aktiv OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Schleuse 3363
#Schleuse_3363(Schleusen_Nr := 3363, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3362, B_InSchleuse := #BG3363, B_AusSchleuse := #BG3364, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG3364.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0061, Antrieb_plus_aktiv := #MA0061, Schleuse_geöffnet := #MB3363, Y_Schleuse_Auf := #DVPtoEP_Zylinder.Schleuse_3363.Stat.Ast, Error := %DB708.DBW528, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0061.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0061.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0061.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // Identisch
END_REGION
REGION Schleuse 3366 (vor BST 1)
#Fahren_Ok := ((((NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle3) AND NOT (#g_7_HMI_Err_UH07_OB.System.Gesamt_Feueralarm_Halle4)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST1_Feueralarm)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST1_Geschlossen)) AND NOT (#g_7_HMI_Err_UH07_OB.System.BST1_Störung)) AND #Bereich_4441.Dyn.Sk.Bereich_ok;
#Schleuse_3366(Schleusen_Nr := 3366, ErrQuit := #ErrQuit, B_VorSchleuse := #BG3364, B_InSchleuse := #BG3366, B_AusSchleuse := #BG4440, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG4440.Stat.B_Akt, Start_Ok := #Fahren_Ok, Antrieb_Schleuse_aktiv := #MA0061, Antrieb_plus_aktiv := #MA0320, Schleuse_geöffnet := #MB3366, RestZeit_Bereich_plus := #Bereich_4441.Dyn.Restzeit, Y_Schleuse_Auf := #DVPtoEP_Zylinder.Schleuse_3366.Stat.Ast, Error := %DB708.DBW530, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0061.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0061.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0061.Stat.A_PS, Antrieb_plus_vor := #Bereich_4441.Dyn.Status.Trolley_kommt_in_Bereich, hStOk := #ErrAnz);
END_REGION
REGION Störungen anzeigen UZ0701
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ0701.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7401
#ErrQuit := (#DOutbound_Bereich.A01_UZ7401.StOk_aktiv OR #DOutbound_Bereich.A01_UC074.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 4441 (hinter BST 1)
IF #DVPtoEP_Sensoren.Stau_BG4440.Stat.B_Akt THEN #DVPtoEP_Antriebe.MA0320.Stat.A_start := TRUE; END_IF;
#B_vor_Schleuse := #BG4440 AND #MB3366;
#Bereich_4441(Bereichs_Nr := 4441, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG4441, B_Zähl := #BG4442, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG4442.Stat.B_Akt, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0320, Antrieb_plus_aktiv := #MA0321, Antrieb_Bereich_vor := #DVPtoEP_Antriebe.MA0320.Stat.A_vor, Antrieb_Bereich_stop := #DVPtoEP_Antriebe.MA0320.Stat.Stop_vor, Error := %DB708.DBW474, Antrieb_Bereich_start := #DVPtoEP_Antriebe.MA0320.Stat.A_start, Antrieb_plus_vor := #DVPtoEP_Antriebe.MA0321.Stat.A_vor, Antrieb_plus_start := #DVPtoEP_Antriebe.MA0321.Stat.A_start, hStOk := #ErrAnz);
END_REGION
REGION Schleuse 4443
#Schleuse_4443(Schleusen_Nr := 4443, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4442, B_InSchleuse := #BG4443, B_Zähl := , B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG4445.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0321, Antrieb_plus_aktiv := , Schleuse_geöffnet := #MB4443, Y_Schleuse_Auf := #DVPtoEP_Zylinder.Schleuse_4443.Stat.Ast, Error := %DB708.DBW554, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0321.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0321.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0321.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0321.Stat.A_PS, Antrieb_plus_vor := , hStOk := #ErrAnz); // über Weiche | über Weiche | über Weiche
END_REGION
REGION Weiche 4445
#Antrieb_aktiv := #MA0321 AND #MA0332;
#Antrieb_vor := FALSE;
#Antrieb_stop := FALSE;
#Weiche_4445(Weichen_Nr := 4445, ErrQuit := #ErrQuit, Fahren_Ok := 1, B_Ziel_gerade := #BG4447, B_Ziel_abzweig := #BG4461, Antrieb_Weiche_aktiv := #Antrieb_aktiv, Antrieb_Gerade_aktiv := #MA0322, Antrieb_Abzweig_aktiv := #MA0331, Weiche_ist_AST := #MB4445, Y_Weiche_abzweig := #DVPtoEP_Zylinder.Weiche_4445.Stat.Ast, Error := %DB708.DBW556, Antrieb_Weiche_vor := #Antrieb_vor, Antrieb_Weiche_stop := #Antrieb_stop, Antrieb_Weiche_gerade_vor := #DVPtoEP_Antriebe.MA0322.Stat.A_vor, Antrieb_Weiche_gerade_stop := #DVPtoEP_Antriebe.MA0322.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor := #DEPtoLP_Antriebe.MA0331.Stat.A_vor, Antrieb_Weiche_abzweig_stop := #DEPtoLP_Antriebe.MA0331.Stat.Stop_vor, hStOk := #ErrAnz); // da 2 Antriebe notwendig
IF #Antrieb_vor THEN
#DVPtoEP_Antriebe.MA0321.Stat.A_vor := TRUE;
#DEPtoLP_Antriebe.MA0332.Stat.A_vor := TRUE;
#DVPtoEP_Antriebe.MA0321.Stat.A_start := TRUE;
#DEPtoLP_Antriebe.MA0332.Stat.A_start := TRUE;
END_IF;
IF #Antrieb_stop THEN #DVPtoEP_Antriebe.MA0321.Stat.Stop_vor := TRUE; END_IF;
IF #Antrieb_stop AND #MB4445 THEN #DEPtoLP_Antriebe.MA0332.Stat.Stop_vor := TRUE; END_IF;
IF #Weiche_4445.Dyn.Status.Weiche_frei THEN #DVPtoEP_Zylinder.Weiche_4445.Stat.Ast := FALSE; END_IF;
END_REGION
REGION Schleuse 4450
#Antrieb_vor := FALSE;
#Schleuse_4450(Schleusen_Nr := 4450, ErrQuit := #ErrQuit, B_VorSchleuse := #BG4447, B_InSchleuse := #BG4450, B_Zähl := #BG4451, B_Stau_raus := #DVPtoEP_Sensoren.Stau_BG4451.Stat.B_Akt, Start_Ok := 1, Antrieb_Schleuse_aktiv := #MA0322, Antrieb_plus_aktiv := #MA0323, Schleuse_geöffnet := #MB4450, RestZeit_Bereich_plus := #Bereich_4454.Dyn.Restzeit, Y_Schleuse_Auf := #DVPtoEP_Zylinder.Schleuse_4450.Stat.Ast, Error := %DB708.DBW558, Antrieb_Schleuse_vor := #DVPtoEP_Antriebe.MA0322.Stat.A_vor, Antrieb_Schleuse_start := #DVPtoEP_Antriebe.MA0322.Stat.A_start, Antrieb_Schleuse_stop := #DVPtoEP_Antriebe.MA0322.Stat.Stop_vor, Antrieb_Schleuse_PS := #DVPtoEP_Antriebe.MA0322.Stat.A_PS, Antrieb_plus_vor := #Antrieb_vor, hStOk := #ErrAnz);
IF #Antrieb_vor THEN
#DVPtoEP_Antriebe.MA0322.Stat.A_vor := TRUE;
#Bereich_4454.Dyn.Status.Trolley_kommt_in_Bereich := TRUE;
END_IF;
END_REGION
REGION Störungen anzeigen UZ7401
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7401.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC074.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Störungen quittieren UZ7401/7402
#ErrQuit := ((#DOutbound_Bereich.A01_UZ7401.StOk_aktiv OR #DOutbound_Bereich.A01_UZ7402.StOk_aktiv) OR #DOutbound_Bereich.A01_UC074.StOk_aktiv) OR #DOutbound_Bereich.A01_UH07.StOk_aktiv;
END_REGION
REGION Bereich 4454
#B_vor_Schleuse := #BG4453 AND #MB4450;
#Stau_raus := (#DVPtoEP_Sensoren.Stau_BG4500.Stat.B_Akt OR #DVPtoEP_Sensoren.Stau_BG4530.Stat.B_Akt) OR #DVPtoEP_Sensoren.Stau_BG4502.Stat.B_Akt;
#Bereich_4454(Bereichs_Nr := 4454, ErrQuit := #ErrQuit, B_BereichsAnfang := #B_vor_Schleuse, B_BereichsEnde := #BG4454, B_Zähl := #BG4500, B_Stau_raus := #Stau_raus, Start_Ok := 1, Antrieb_Bereich_aktiv := #MA0323, Antrieb_plus_aktiv := #MA0324, Antrieb_Bereich_vor := #DVPtoEP_Antriebe.MA0323.Stat.A_vor, Antrieb_Bereich_stop := #DVPtoEP_Antriebe.MA0323.Stat.Stop_vor, Error := %DB708.DBW476, Antrieb_Bereich_start := #DVPtoEP_Antriebe.MA0323.Stat.A_start, Antrieb_plus_vor := #DVPtoEP_Antriebe.MA0324.Stat.A_vor, Antrieb_plus_start := #DVPtoEP_Antriebe.MA0324.Stat.A_start, Antrieb_minus_vor := #DVPtoEP_Antriebe.MA0322.Stat.A_vor, hStOk := #ErrAnz);
END_REGION
REGION MA0324 / Übergang 4501
#B_vor_Schleuse := #BG4500 OR #BG4530;
#Übergang_4501(ErrQuit := #ErrQuit, B_Anfang := #B_vor_Schleuse, B_Am_Übergang := #BG4501, B_Stau_Antrieb_plus := #BG4502, Antrieb_aktiv := #MA0324, Antrieb_plus_aktiv := #MA0325, Antrieb_vor := #DVPtoEP_Antriebe.MA0324.Stat.A_vor, Antrieb_start := #DVPtoEP_Antriebe.MA0324.Stat.A_start, Antrieb_stop := #DVPtoEP_Antriebe.MA0324.Stat.A_PS, Antrieb_plus_vor := #DVPtoEP_Antriebe.MA0325.Stat.A_vor, Antrieb_plus_start := #DVPtoEP_Antriebe.MA0325.Stat.A_start);
END_REGION
REGION Störungen anzeigen UZ7401/7402
IF #ErrAnz THEN
#ErrAnz := FALSE;
#DOutbound_Bereich.A01_UZ7401.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UZ7402.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UC074.StOk_blinken := TRUE;
#DOutbound_Bereich.A01_UH07.StOk_blinken := TRUE;
END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,128 @@
FUNCTION_BLOCK "VPtoEP_Sensoren"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
BG4443 : Word; // war "BG4443"
MA0321 : Bool; // war "MA0321"
END_VAR
VAR_IN_OUT
BG3246 : Word; // war "BG3246"
BG3251 : Word; // war "BG3251"
BG3274 : Word; // war "BG3274"
BG3362 : Word; // war "BG3362"
BG3364 : Word; // war "BG3364"
BG4440 : Word; // war "BG4440"
BG4442 : Word; // war "BG4442"
BG4444 : Word; // war "BG4444"
BG4445 : Word; // war "BG4445"
BG4447 : Word; // war "BG4447"
BG4451 : Word; // war "BG4451"
BG4453 : Word; // war "BG4453"
BG4500 : Word; // war "BG4500"
BG4502 : Word; // war "BG4502"
BG4530 : Word; // war "BG4530"
MB4443 : Byte; // war "MB4443"
END_VAR
VAR
Stau_BG3246 : "MSensoren"; // Stau am Sensor Einfahrt MA0151
Stau_BG3251 : "MSensoren"; // Stau am Sensor Mitte MA0151
Stau_BG3274 : "MSensoren"; // Stau am Sensor Einfahrt MA0060
Stau_BG3362 : "MSensoren"; // Stau am Sensor Einfahrt MA0061
Stau_BG3364 : "MSensoren"; // Stau am Sensor Mitte MA0061
Stau_BG4440 : "MSensoren"; // Stau am Sensor nach BST1
Stau_BG4442 : "MSensoren"; // Stau am Sensor Einfahrt MA321
Sack_BG4444 : "MSensoren"; // Sack erkannt
Stau_BG4445 : "MSensoren"; // Stau am Sensor Mitte MA321
Stau_BG4447 : "MSensoren"; // Stau am Sensor hinter Weiche4445
Stau_BG4451 : "MSensoren"; // Stau am Sensor Ausfahrt Schleuse4450
Stau_BG4453 : "MSensoren"; // Stau am Sensor Einfahrt MA0323
Stau_BG4500 : "MSensoren"; // Stau am Sensor Einfahrt MA0324
Stau_BG4530 : "MSensoren"; // Stau am Sensor Mitte MA0324
Stau_BG4502 : "MSensoren"; // Stau am Sensor Einfahrt MA0325
END_VAR
VAR_TEMP
T_Ein : Int; // Vorgabe Einschaltverzögerung
T_Aus : Int; // Zwischenspeicher Ausschaltverzögerung
F1 : Bool; // Geschwindigkeit 1 aktiviert
F2 : Bool; // Geschwindigkeit 2 aktiviert
F3 : Bool; // Geschwindigkeit 3 aktiviert
ESensor : Bool; // Sensoren
Antrieb : Bool;
VReal : Real; // GeschwindigkeitinReal
Zeit : Int; // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool; // Zeit aktivieren
END_VAR
BEGIN
REGION Stau am Sensor Einfahrt MA0151
#Stau_BG3246(ESensor := #BG3246, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0151
#Stau_BG3251(ESensor := #BG3251, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0060
#Stau_BG3274(ESensor := #BG3274, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0061
#Stau_BG3362(ESensor := #BG3362, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0061
#Stau_BG3364(ESensor := #BG3364, T_Ein := 80, T_Aus := 21, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor hinter BST1
#Stau_BG4440(ESensor := #BG4440, T_Ein := 1, T_Aus := 30, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0321
#Stau_BG4442(ESensor := #BG4442, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Sack in Schleuse 4221 erkannt (Vor ByPass zu VP)
#Aktiv := NOT (#MB4443) AND (#MA0321 OR #BG4443);
#Sack_BG4444(ESensor := #BG4444, T_Ein := 1, T_Aus := 11, tein_aktiv := #Aktiv, taus_aktiv := #MB4443);
END_REGION
REGION Stau am Sensor Mitte MA0321
#Stau_BG4445(ESensor := #BG4445, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor hinter Weiche4445
#Stau_BG4447(ESensor := #BG4447, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Ausfahrt Schleuse4450
#Stau_BG4451(ESensor := #BG4451, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0323
#Stau_BG4453(ESensor := #BG4453, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0324
#Stau_BG4500(ESensor := #BG4500, T_Ein := 1, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Mitte MA0324
#Stau_BG4530(ESensor := #BG4530, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Stau am Sensor Einfahrt MA0325
#Stau_BG4502(ESensor := #BG4502, T_Ein := 80, T_Aus := 11, tein_aktiv := TRUE, taus_aktiv := TRUE); // Sensoren entprellen
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK

Some files were not shown because too many files have changed in this diff Show More