=== FB 2128: HWtoOB_OmniFahren  [STL] ===
INTERFACE:
  Input:
  Output:
  InOut:
  Static:
    Schleuse_3546 : "MHMOmniSchleuse"
    Bereich_3550 : "MHMOmniBereich_Plus"
    Schleuse_3552 : "MHMOmniSchleuse"
    Bereich_3016 : "MHMOmniBereich_Plus"
    Schleuse_3014 : "MHMOmniSchleuse"
    Schleuse_3012 : "MHMOmniSchleuse"
    Schleuse_3010 : "MHMOmniSchleuse_Plus"
    Schleuse_3070 : "MHMOmniSchleuse"
    Schleuse_3073 : "MHMOmniSchleuse_Plus"
    Trolleys_starten : Struct
      Flanke : Bool
      Wartezeit_aktiv : Bool
      Timer_Wartenzeit : Int
  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
  Constant:

--- NW 1: Systemzeug ---
// HW>OB-Bereich:
      A      "DAMR_Bereich".A01_UH06.AnlageEin
      =      Schleuse_3546.Dyn.Sk.Auto_akt
      =      Bereich_3550.Dyn.Sk.Auto_akt
      =      Schleuse_3552.Dyn.Sk.Auto_akt
      =      Bereich_3016.Dyn.Sk.Auto_akt
      =      Schleuse_3014.Dyn.Sk.Auto_akt
      =      Schleuse_3012.Dyn.Sk.Auto_akt
      =      Schleuse_3010.Dyn.Sk.Auto_akt
      =      Schleuse_3070.Dyn.Sk.Auto_akt
      =      Schleuse_3073.Dyn.Sk.Auto_akt

      AN     "DAMR_Bereich".A01_UH06_Halle4.BereichErr
      =      Schleuse_3546.Dyn.Sk.Bereich_ok
      =      Bereich_3550.Dyn.Sk.Bereich_ok
      =      Schleuse_3552.Dyn.Sk.Bereich_ok
      =      Bereich_3016.Dyn.Sk.Bereich_ok
      =      Schleuse_3014.Dyn.Sk.Bereich_ok
      AN     "DAMR_Bereich".A01_UC061.BereichErr
      =      Schleuse_3012.Dyn.Sk.Bereich_ok
      =      Schleuse_3010.Dyn.Sk.Bereich_ok
      =      Schleuse_3070.Dyn.Sk.Bereich_ok
      =      Schleuse_3073.Dyn.Sk.Bereich_ok


--- NW 2: Störungen quittieren UZ0620 ---
      A      "DAMR_Bereich".A01_UZ0620.StOk_aktiv
      O      "DAMR_Bereich".A01_UH06.StOk_aktiv
      =      ErrQuit


--- NW 3: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) ---
      A      "MB3546"
      Rise   Trolleys_starten.Flanke
      S      Trolleys_starten.Wartezeit_aktiv
      JCN    Warten                                          // Negierter Sprung

      L      15                                              // Wartezeit in Sekunden
      T      Trolleys_starten.Timer_Wartenzeit

Warten: AN     Trolleys_starten.Wartezeit_aktiv
      O
      A      "MB3546"                                        // Schleuse offen
      AN     "MA0113"                                        // Aber Trolley fährt nicht
      ON     "1s-Impuls"
      JC     Wait

      L      Trolleys_starten.Timer_Wartenzeit
      +      -1
      T      Trolleys_starten.Timer_Wartenzeit
      L      0
      >I
      JC     Wait

      SET
      R      Trolleys_starten.Wartezeit_aktiv

Wait: NOP 0


--- NW 4: Schleuse 3546 (hinter BST 4) ---
      A      "BG3570"
      O      "BG3544"
      =      B_vor_Schleuse

      AN     Trolleys_starten.Wartezeit_aktiv
      =      Start_ok

CALL FB "None" ,  (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, Antrieb_plus_start:=?, hStOk:=ErrAnz)



--- NW 5: Bereich 3550 ---
      A      "BG3545"
      A      "MB3546"
      =      B_vor_Schleuse

CALL FB "None" ,  (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", RestZeit_Bereich_plus:=?, 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)


--- NW 6: Schleuse 3552 ---
CALL FB "None" ,  (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, Antrieb_plus_start:=?, hStOk:=ErrAnz)


--- NW 7: Bereich 3016 ---
      A      "BG3554"
      A      "MB3552"
      =      B_vor_Schleuse

CALL FB "None" ,  (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, RestZeit_Bereich_plus:=?, 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_plus_start:=?, Antrieb_minus_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, hStOk:=ErrAnz)   // Ohne Antrieb


--- NW 8: Schleuse 3014 (vor BST 3) ---
      AN     "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm
      AN     "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm
      AN     "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen
      AN     "6_HMI_Err_UH06_AMR".System."BST3_Störung"
      A      Schleuse_3012.Dyn.Sk.Bereich_ok
      =      Fahren_Ok

      A      "DHWtoOB_Sensoren".Stau_BG3013.Stat.B_Akt
      =      Stau_raus

CALL FB "None" ,  (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", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3014.Stat.Ast, Error:=DB608.DBW210, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, hStOk:=ErrAnz)   // ohne Antrieb | Ohne Antrieb


--- NW 9: Störungen anzeigen UZ0620 ---
      A      ErrAnz
      R      ErrAnz
      S      "DAMR_Bereich".A01_UZ0620.StOk_blinken
      S      "DAMR_Bereich".A01_UH06.StOk_blinken


--- NW 10: Störungen quittieren UZ6101 ---
      A      "DAMR_Bereich".A01_UC061.StOk_aktiv
      O      "DAMR_Bereich".A01_UH06.StOk_aktiv
      =      ErrQuit


--- NW 11: Schleuse 3012 (hinter BST 3) ---
CALL FB "None" ,  (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", RestZeit_Bereich_plus:=?, 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:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)   // wie oben



--- NW 12: Schleuse 3010  ---
CALL FB "None" ,  (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", RestZeit_Bereich_plus:=?, 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)



--- NW 13: Schleuse 3070  ---
CALL FB "None" ,  (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", RestZeit_Bereich_plus:=?, 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)



--- NW 14: Schleuse 3073 (Übergabe an Outbound / UH07) ---
// Schnittstelle von Outbound: (Verarbeitung s.u.)
      A      "DSchnittstelle_zu_Outbound".From_UH07.MA0200_aktiv

      A      "DSchnittstelle_zu_Outbound".From_UH07.MA0200_kein_Stau

// Pro Zyklus neu erzeugen:
      SET
      R      "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor
      R      "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start

CALL FB "None" ,  (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", RestZeit_Bereich_plus:=?, 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)

// Schnittstelle zu Outbound: (Verarbeitung s.o.)
      A      "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor

      A      "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start
      CLR


--- NW 15: Störungen anzeigen UZ6101 ---
      A      ErrAnz
      R      ErrAnz
      S      "DAMR_Bereich".A01_UC061.StOk_blinken
      S      "DAMR_Bereich".A01_UH06.StOk_blinken


--- NW 16: Ende ---
      BE

