Files

215 lines
14 KiB
Plaintext

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