=== FB 1128: VP_OmniFahren  [STL] ===
INTERFACE:
  Input:
  Output:
  InOut:
  Static:
    Schleuse_3121 : "MHMOmniSchleuse"
    Schleuse_3123 : "MHMOmniSchleuse"
    Schleuse_3244 : "MHMOmniSchleuse_Plus"
    Weiche_3245 : "MHMOmniWeiche_Plus"
    Trolleys_starten : Struct
      Flanke : Bool
      Wartezeit_aktiv : Bool
      Timer_Wartenzeit : Int
    Einfahrt_VP : Struct
      3121_stop : Bool
      3123_stop : Bool
      3121_Ziel : Int
      3123_Ziel : Int
    Ausfahrt_VP : Struct
      3244_stop : Bool
      3244_Ziel : Word
  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
    PS_aktivieren : Bool
  Constant:

--- NW 1: Systemzeug ---
// VollPuffer-Bereich:
      A      "DOutbound_Bereich".A01_UH07.AnlageEin
      =      Schleuse_3121.Dyn.Sk.Auto_akt
      =      Schleuse_3123.Dyn.Sk.Auto_akt
      =      Schleuse_3244.Dyn.Sk.Auto_akt
      =      Weiche_3245.Dyn.Status.Auto_akt

      AN     "DOutbound_Bereich".A01_UC071.BereichErr
      =      Schleuse_3121.Dyn.Sk.Bereich_ok
      =      Schleuse_3123.Dyn.Sk.Bereich_ok
      =      Schleuse_3244.Dyn.Sk.Bereich_ok
      =      Weiche_3245.Dyn.Status.Bereich_ok


--- NW 2: Störungen quittieren UZ7102 ---
      A      "DOutbound_Bereich".A01_UZ7102.StOk_aktiv
      O      "DOutbound_Bereich".A01_UC071.StOk_aktiv
      O      "DOutbound_Bereich".A01_UH07.StOk_aktiv
      =      ErrQuit


--- NW 3: Schleuse 3121 ---
CALL FB "None" ,  (Schleusen_Nr:=3121, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3127", B_InSchleuse:="BG3121", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0144", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3121", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW500, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0144.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0144.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0144.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0144.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)   // weiterfahrt über Sorter-Sep | weiterfahrt über Sorter-Sep

      AN     Schleuse_3121.Dyn.Status.Reset_aktiv
      JC     NoR3121

      L      DINT#0
      T      "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX
      L      0
      T      "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel
      T      "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel

NoR3121: NOP 0


--- NW 4: Schleuse 3123 ---
CALL FB "None" ,  (Schleusen_Nr:=3123, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3243", B_InSchleuse:="BG3123", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0152", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3123", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW502, Antrieb_Schleuse_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_Schleuse_start:="DVP_Antriebe".MA0152.Stat.A_start, Antrieb_Schleuse_stop:="DVP_Antriebe".MA0152.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVP_Antriebe".MA0152.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)   // weiterfahrt über Sorter-Sep | weiterfahrt über Sorter-Sep

      AN     Schleuse_3123.Dyn.Status.Reset_aktiv
      JC     NoR3123

      L      DINT#0
      T      "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX
      L      0
      T      "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel
      T      "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel

NoR3123: NOP 0


--- NW 5: Störungen anzeigen UZ7102 ---
      A      ErrAnz
      R      ErrAnz
      S      "DOutbound_Bereich".A01_UZ7102.StOk_blinken
      S      "DOutbound_Bereich".A01_UC071.StOk_blinken
      S      "DOutbound_Bereich".A01_UH07.StOk_blinken


--- NW 6: Störungen quittieren UZ7105 ---
      A      "DOutbound_Bereich".A01_UZ7105.StOk_aktiv
      O      "DOutbound_Bereich".A01_UC071.StOk_aktiv
      O      "DOutbound_Bereich".A01_UH07.StOk_aktiv
      =      ErrQuit


--- NW 7: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) ---
      A      "MB3244"
      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      "MB3244"                                        // Schleuse offen
      AN     "MA0150"                                        // 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 8: Schleuse 3244 ---
      SET
      R      PS_aktivieren

      AN     Trolleys_starten.Wartezeit_aktiv
      =      Fahren_Ok

CALL FB "None" ,  (Schleusen_Nr:=3244, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3242", B_InSchleuse:="BG3244", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0150", Antrieb_plus_aktiv:="MA0152", Schleuse_geöffnet:="MB3244", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVP_Zylinder".Schleuse_3244.Stat.Ast, Error:=DB708.DBW516, Antrieb_Schleuse_vor:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_Schleuse_start:="DVP_Antriebe".MA0150.Stat.A_start, Antrieb_Schleuse_stop:="DVP_Antriebe".MA0150.Stat.Stop_vor, Antrieb_Schleuse_PS:=PS_aktivieren, Antrieb_plus_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_plus_start:="DVP_Antriebe".MA0152.Stat.A_start, hStOk:=ErrAnz)   // Über Weiche +1 | Ziel-FC

      A      PS_aktivieren
      L      s5t#40s
      OnDelay "T28"

      A      "T28"
      =      "DVP_Antriebe".MA0150.Stat.A_PS


--- NW 9: Weiche 3245 ---
      A      "MA0150"
      A      "MA0152"
      =      Antrieb_aktiv
      SET
      R      Antrieb_vor
      R      Antrieb_stop

CALL FB "None" ,  (Weichen_Nr:=3245, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG3246", B_Ziel_abzweig:="BG3243", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0151", Antrieb_Abzweig_aktiv:="MA0152", Weiche_ist_AST:="MB3245", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DVP_Zylinder".Weiche_3245.Stat.Ast, Error:=DB708.DBW518, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Weiche_gerade_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DVP_Antriebe".MA0152.Stat.Stop_vor, hStOk:=ErrAnz)

      A      Antrieb_vor
      A(
      AN     "MB3245"                                        // Weiche gerade
      AN     "DVP_Sensoren".Stau_BG3246.Stat.B_Akt
      O
      A      "MB3245"                                        // Weiche auf Abzweig
      AN     "DVP_Sensoren".Stau_BG3243.Stat.B_Akt
      )
      S      "DVP_Antriebe".MA0150.Stat.A_vor

      A      Antrieb_vor
      S      "DVP_Antriebe".MA0152.Stat.A_vor
      S      "DVP_Antriebe".MA0150.Stat.A_start
      S      "DVP_Antriebe".MA0152.Stat.A_start

      A      Antrieb_stop
      S      "DVP_Antriebe".MA0150.Stat.Stop_vor
// /      S     "DVP_Antriebe".MA0152.Stat.Stop_vor  //Sonst Blockade


--- NW 10: Störungen anzeigen UZ7105 ---
      A      ErrAnz
      R      ErrAnz
      S      "DOutbound_Bereich".A01_UZ7105.StOk_blinken
      S      "DOutbound_Bereich".A01_UC071.StOk_blinken
      S      "DOutbound_Bereich".A01_UH07.StOk_blinken


--- NW 11: Ende ---
      BE

