=== FC 5181: LP_Ziel_FC  [STL] ===
INTERFACE:
  Input:
  Output:
  InOut:
  Temp:
    Ziel_hex : Word
    Ziel_int : Int
    Zielebene : Word
    Error : Byte
    Position : Int
    Lager_DB : Int
    Lager_DW : Int
    AR1Zeiger : DWord                                   // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
    AR1Start : DInt                                     // Startwert mit Offset 0
    SSDW : Int
    EndZiel : Word
    Variante : Int
    AbrufID : DInt
    Fahrlisten_TrolleyID : DInt
    Fahrlisten_AbrufID : DInt
    Fahrlisten_Lager : Int
    Trolley_unbekannt : Bool                            // Trolley ist nicht in DL
    Express_Abruf : Bool
  Constant:
  Return:
    Ret_Val : Void

--- NW 1: Rückmeldung ---
      SET                                                    // Rückmeldungen erst mal resetten
      R      "M180.6"                                        // Weiterfahrt von Ziel-FC erlaubt


--- NW 2: Schleuse 3305: Weiterfahren erlaubt ? (Sorter LP) ---
      L      "MW190"
      L      3305                                            // Aufruf von Schleuse 3305 ?
      <>I                                                    // Nein!
      JC     X3305E

      A      "MB3305"
      BEC

// Leer-Puffer ermitteln:
CALL FC "Leerpuffer to Rein-Lager ermitteln" (Puffer:=Ziel_hex)

// Ziel = Leer-Lager?
      L      Ziel_hex
      L      16#f000
      AW
      L      16#A000                                         // Ziel = Leer-Lager ?
      ==I                                                    // Ja!
      JC     LagerOk_3305

      BEU                                                    // Kein Lager frei!

LagerOk_3305: L      Ziel_hex
      L      16#FF
      AW
      BTI                                                    // Damit Int 1-10 als Ziel !
      T      Ziel_int

// Check, ob Ziel-Lager Inilauf aktiv hat:
      T      "MW220"

CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position)   // Eintrag lesen

      L      "MB199"
      L      2#1111111                                       // Bit 7 ausblenden
      AW
      L      0                                               // Fehler vorhanden?
      <>I                                                    // Ja
      JC     Egal

      L      "MW224"
      T      Lager_DB
      L      "MW226"
      T      Lager_DW
      ITD
      T      AR1Start                                        // Startwert mit Offset 0

      L      AR1Start                                        // Startwert mit Offset 0
      +      DINT#70                                         // Offset Status (Bit 7: Inilauf)
      SLD    3
      L      7                                               // Damit DBX_Bit 7
      OD
      T      AR1Zeiger                                       // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)

      OPN    DB[Lager_DB]                                    // Lager-DB öffnen

      A      DBX [AR1Zeiger]                                 // Lager hat Inilauf aktiv
      BEC                                                    // Sonst kann der Inilauf nie beendet werden!

Egal: L      Ziel_int
      T      "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel
      T      "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel

// Pseudo-IDX übergeben:
      L      "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX  // IDX
      L      DINT#0                                          // Daten schon erzeugt?
      <>D                                                    // Ja!
      BEC

      L      "DLP_Sorter".Pseudo_IDX                         // Da kein Leser verbaut
      L      dint#1
      +D
      T      "DLP_Sorter".Pseudo_IDX
      T      "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX  // IDX

      CLR                                                    // Wird über MSorterRein (FB5423/5) gestartet!
      S      "M180.6"                                        // Weiterfahrt ist erlaubt

      BEU

X3305E: NOP 0


--- NW 3: Ende ---
      BE

