Files
HundM_awl/SCL-Export/=A01+UH06-KF00/HWtoOB_OmniFahren.scl
T

193 lines
14 KiB
Plaintext

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