=== FC 3181: EP_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
    Error.Bit : 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 4503: Weiterfahren erlaubt ? (Sorter EP) ---
      L      "MW190"
      L      4503                                            // Aufruf von Schleuse 4503 ?
      <>I                                                    // Nein!
      JC     X4503E

      L      "EP_TravelFIFO".Travel_FIFO_BG4527.FIFO.ANZAHL
      L      0                                               // Daten noch im Travel-FIFO?
      <>I                                                    // Ja !
      O      "MB4503"                                        // Trolley fährt schon
      BEC

      A      "SGes".Ohne_PC_Fahren                           // Also Ziel simulieren
      JC     Sim

// Telegramm schon gesendet?
      AN     "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet
      JC     T4503

SimOk: CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:="MW194", Int_Wert:=Ziel_int)

// Ziel-Überprüfung auf voll:
      L      Ziel_int
      L      1
      ==I
      AN     "DEP_Sensoren".Stau_EP1.Stat.B_Akt
      JC     ZielOk

      CAC
      L      2
      ==I
      AN     "DEP_Sensoren".Stau_EP2.Stat.B_Akt
      JC     ZielOk

      CAC
      L      3
      ==I
      AN     "DEP_Sensoren".Stau_EP3.Stat.B_Akt
      JC     ZielOk

      CAC
      L      4
      ==I
      AN     "DEP_Sensoren".Stau_EP4.Stat.B_Akt
      JC     ZielOk

      A      "10s-Impuls"                                    // Nach 10s
      R      "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet // Erneute Anfrage

      BEU                                                    // Warten, da Ziel unklar oder voll

ZielOk: L      Ziel_int
      +      200
      T      "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel
      T      "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel

// Scanner-IDX übergeben:
      L      "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse
      T      "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX  // IDX

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

      BEU

// GOHDReqM an Host senden:
T4503: L      "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse
      L      0                                               // Barcode bekannt?
      ==D                                                    // Nein!
      BEC                                                    // Warten!

// Pufferstatus (Stau) ermitteln:
      A      "DEP_Sensoren".Stau_EP1.Stat.B_Akt
      =      "Daten_für_SendFIFO"."Status_2_Bit[0]"
      A      "DEP_Sensoren".Stau_EP2.Stat.B_Akt
      =      "Daten_für_SendFIFO"."Status_2_Bit[1]"
      A      "DEP_Sensoren".Stau_EP3.Stat.B_Akt
      =      "Daten_für_SendFIFO"."Status_2_Bit[2]"
      A      "DEP_Sensoren".Stau_EP4.Stat.B_Akt
      =      "Daten_für_SendFIFO"."Status_2_Bit[3]"

CALL FB "Daten_in_SendFIFO_speichern" ,  (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse, StationsNr:=4503, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit")

      AN     "Error.Bit"
      S      "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet

      BEU

// /Zum Testen bei Inbetriebnahme ohne PC:
Sim:  A      "DEP_Sensoren".Stau_EP1.Stat.B_Akt
      S      "DEP_OmniFahren".EP_1_voll
      L      16#1                                            // /Tests mit Puffer 1
      AN     "DEP_OmniFahren".EP_1_voll
      JC     StartSim

      A      "DEP_Sensoren".Stau_EP2.Stat.B_Akt
      S      "DEP_OmniFahren".EP_2_voll
      L      16#2                                            // /Tests mit Puffer 2
      AN     "DEP_OmniFahren".EP_2_voll
      JC     StartSim

      A      "DEP_Sensoren".Stau_EP3.Stat.B_Akt
      S      "DEP_OmniFahren".EP_3_voll
      L      16#3                                            // /Tests mit Puffer 3
      AN     "DEP_OmniFahren".EP_3_voll
      JC     StartSim

      A      "DEP_Sensoren".Stau_EP4.Stat.B_Akt
      S      "DEP_OmniFahren".EP_4_voll
      L      16#4                                            // /Tests mit Puffer 4
      AN     "DEP_OmniFahren".EP_4_voll
      JC     StartSim

      SET
      R      "DEP_OmniFahren".EP_1_voll
      R      "DEP_OmniFahren".EP_2_voll
      R      "DEP_OmniFahren".EP_3_voll
      R      "DEP_OmniFahren".EP_4_voll

      BEU

StartSim: T      "MW194"

      JU     SimOk

X4503E: NOP 0


--- NW 3: Ende ---
      BE

