193 lines
14 KiB
Plaintext
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
|