alle automatisch konvertierten .scl eingecheckt
This commit is contained in:
@@ -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,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,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,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,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,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
|
||||||
@@ -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
|
||||||
@@ -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,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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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,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,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
|
||||||
@@ -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,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,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
|
||||||
@@ -29,21 +29,25 @@ FUNCTION "Port1_Telegramme_auswerten" : Void
|
|||||||
BEGIN
|
BEGIN
|
||||||
REGION Telegrammkopf übergeben
|
REGION Telegrammkopf übergeben
|
||||||
RETURN;
|
RETURN;
|
||||||
%LB20 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[1];
|
// Kennung A:
|
||||||
%LB21 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[2];
|
#LB20 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[1];
|
||||||
%LB22 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[3];
|
#LB21 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[2];
|
||||||
%LB23 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[4];
|
#LB22 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[3];
|
||||||
%LB24 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[5];
|
#LB23 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[4];
|
||||||
%LB25 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[6];
|
// Kennung B:
|
||||||
%LB26 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[7];
|
#LB24 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[5];
|
||||||
%LB27 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[8];
|
#LB25 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[6];
|
||||||
%LB28 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[9];
|
#LB26 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[7];
|
||||||
%LB29 := #SS_Port1_EmpfangsDaten.Port1.TelegrammKennung[10];
|
#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
|
END_REGION
|
||||||
|
|
||||||
REGION BReqM-Telegramm ? (VollPuffer auslagern)
|
REGION BReqM-Telegramm ? (VollPuffer auslagern)
|
||||||
IF #Teleg_Kennung_A <> 'BReq' THEN GOTO NoBREQM; END_IF;
|
IF #Teleg_Kennung_A <> 'BReq' THEN GOTO NoBREQM; END_IF;
|
||||||
IF #Teleg_Kennung_B <> 'M' THEN GOTO NoBREQM; END_IF;
|
IF #Teleg_Kennung_B <> 'M' THEN GOTO NoBREQM; END_IF;
|
||||||
|
// Gewollten Trolley markieren
|
||||||
RETURN;
|
RETURN;
|
||||||
NoBREQM: ;
|
NoBREQM: ;
|
||||||
END_REGION
|
END_REGION
|
||||||
|
|||||||
@@ -26,24 +26,28 @@ FUNCTION "Port2_Telegramme_auswerten" : Void
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
REGION Telegrammkopf übergeben
|
REGION Telegrammkopf übergeben
|
||||||
%LB20 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[1];
|
// Kennung A:
|
||||||
%LB21 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[2];
|
#LB20 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[1];
|
||||||
%LB22 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[3];
|
#LB21 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[2];
|
||||||
%LB23 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[4];
|
#LB22 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[3];
|
||||||
%LB24 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[5];
|
#LB23 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[4];
|
||||||
%LB25 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[6];
|
// Kennung B:
|
||||||
%LB26 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[7];
|
#LB24 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[5];
|
||||||
%LB27 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[8];
|
#LB25 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[6];
|
||||||
%LB28 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[9];
|
#LB26 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[7];
|
||||||
%LB29 := #SS_Port2_EmpfangsDaten.Port2.TelegrammKennung[10];
|
#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
|
END_REGION
|
||||||
|
|
||||||
REGION GOHDRespM-Telegramm ? (Entscheidungsreaktion)
|
REGION GOHDRespM-Telegramm ? (Entscheidungsreaktion)
|
||||||
IF #Teleg_Kennung_A <> 'GOHD' THEN GOTO NoGOHDRespM; END_IF;
|
IF #Teleg_Kennung_A <> 'GOHD' THEN GOTO NoGOHDRespM; END_IF;
|
||||||
IF #Teleg_Kennung_B <> 'Resp' 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;
|
IF #Teleg_Kennung_C <> 'M$00' THEN GOTO NoGOHDRespM; END_IF;
|
||||||
"INT_to_BCD (4stellig)"(Int_Wert := #SS_Port2_EmpfangsDaten.Port2.Puffer_LinienNr, BCD_Wert := #EndZiel); // Neu: Eintrag in Trolley-DB:
|
// Neu: Eintrag in Trolley-DB:
|
||||||
"Trolleydaten_ändern"(Gesamt_Trolley_DL := 1000, TrolleyID := #SS_Port2_EmpfangsDaten.Port2.TrolleyID, Endziel := #EndZiel, ShopGroup := #SS_Port2_EmpfangsDaten.Port2.StoreGroup);
|
"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;
|
RETURN;
|
||||||
NoGOHDRespM: ;
|
NoGOHDRespM: ;
|
||||||
END_REGION
|
END_REGION
|
||||||
|
|||||||
@@ -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,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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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,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
|
||||||
Reference in New Issue
Block a user