=== FB 180: MSorter_Uebergabe  [STL] ===
INTERFACE:
  Input:
    Uebergabe_Nr : Int                                  // Aufruf für Übergabe
    KorrekturFaktor : Real                              // Korrektur-Faktor wegen Kettenlängung
    ErrQuit : Bool                                      // Ablaufstörung quittieren
    Antrieb_aktiv : Bool                                // Kreisel-Antrieb aktiv
  Output:
    Error : Word                                        // Störungen übergeben
  InOut:
    Antrieb_start : Bool                                // Kreiselantrieb starten
    Antrieb_stoppen : Bool                              // Kreiselantrieb stoppen
    hStOk : Bool                                        // Anzeige Start n. Störung aktivieren
  Static:
    SAVE : Struct
      Last_Sort_ID : Int
      Res : Array[1..3] of Int                          // Reserve
    Para : Struct                                       // Parameter
      Uebergabe_DL_DB : Int                             // Einsprung Weichen-Datenliste-DB
      Uebergabe_DL_DW : Int                             // Einsprung Weichen-Datenliste-DW
      Res1 : Array[1..3] of Int                         // Reserve
    Uebergabe : "UDLUebergabe"                          // Fahrbereichs Daten
    Dyn : Struct                                        // Dynamische Daten fürs Einfahren
      Status : Struct                                   // Status
        BT_Daten_vorhanden : Bool                       // Daten für Travel-FIFO vorhanden
        Reset : Bool := TRUE                            // Reset Einfahrseite starten
      Rueckmld : Struct
        RET_VAL_BLKMOV_Uebergabe : Int                  // Rückmeldung nach BLKMOV-Aufruf
        RET_VAL_DL_Weichen : Byte                       // Rückmeldung nach DatenOut-Aufruf
        RET_VAL_Sortliste_Out : Byte                    // Rückmeldung nach Sortdaten-Out-Aufruf
        RET_VAL_TravelFIFO_In : Byte                    // Rückmeldung nach Travel-FIFO-In-Aufruf
        RET_VAL_SendFIFO : Byte                         // Rückmeldung nach SendPC_FIFO-Aufruf
      Error : "UErrUebergabe"
      Ink_Wert : DInt                                   // Aktueller Inkrementalwert
      Max_Wert : DInt                                   // Maximal erlaubter Zählwert
      Lauf_Flag : Bool                                  // Zähl-Lauf mit Flag ist aktiv
      Flag_Lauf_fertig : Bool                           // Flag-Lauf wurde beendet
      Ohne_Lauf_fertig : Bool                           // Ohne Flag-Lauf wurde beendet
      Hauptstrang_Flag : Bool                           // Flag zum Weiche schalten (vom Hauptstrang)
      FIFO_Flag : Bool                                  // Flag zum Weiche schalten (von Rein-FIFO)
      Save_Flag : Bool                                  // Flag zum Daten in Sortliste speichern
      Last_Flag : Bool                                  // Flag des letzten durchfahrenden Teils
      Hauptstrang_Ink : DInt                            // Inkremente zum Weiche schalten (vom Hauptstrang)
      Hauptstrang_Sortliste : Int                       // Sortliste aus welcher Hauptstrangdaten sind
      Hauptstrang_Search_Ink : DInt                     // Inkremente zum Daten auslesen (Start-Ink)
      Hauptstrang_Pos : Int                             // Aktuelle Position der Daten in Datenliste
      Last_Ink : DInt                                   // Inkremente des letzten durchfahrenden Teils
      Last_IDX : DInt := -1                             // IDX des letzten durchfahrenden Teils
      Last_Ziel : Int := -1                             // Ziel des letzten durchfahrenden Teils
      Save_Ink : DInt                                   // Inkremente zum Daten in Sortliste speichern
      Res1 : Array[1..6] of Int                         // Reserve
    Daten : "UBT_Daten"
  Temp:
    Quelle : Any                                        // Zeiger, wo Rein-Daten sind
    Ziel : Any                                          // Zeiger, FIFO-Stelle
    Del : Bool                                          // Nur Sortdaten löschen
    FC86_Para : Word                                    // Parameter-Übergabe
    Hauptstrang_Ink : DInt                              // Inkremente zum Weiche schalten (vom Hauptstrang)
    Parameter : Word                                    // Parameter
    Freigabe : Int
    DatenDB : Int                                       // DB öffnen
  Constant:

--- NW 1: Parameter-Übergabe ---
      L      Uebergabe_Nr                                    // Aufruf-Parameter (für Baustein beobachten)

      L      "MW178"                                         // Einsprung Übergabe-DL
      T      Para.Uebergabe_DL_DB
      L      0
      T      Para.Uebergabe_DL_DW


--- NW 2: Gesamt: Out-Bits zum Zurücksetzen ---
      SET


--- NW 3: 
 ---
      AN     Dyn.Status.Reset
      JC     En06

// Dyn.Daten löschen:
      SET
      R      Dyn.Status.Reset
      R      Dyn.Hauptstrang_Flag
      R      Dyn.FIFO_Flag
      R      Dyn.Save_Flag
      R      Dyn.Last_Flag

      L      0
      T      Dyn.Hauptstrang_Ink
      T      Dyn.Hauptstrang_Search_Ink
      T      Dyn.Last_Ink
      T      Dyn.Save_Ink

      L      0
      T      Dyn.Hauptstrang_Sortliste
      T      Dyn.Last_IDX
      T      Dyn.Last_Ziel

// Rückmeldungen löschen:
      L      0
      T      Dyn.Rueckmld.RET_VAL_TravelFIFO_In

// Störungen löschen:
      SET
      R      Dyn.Error.Uebergabe_DL
      R      Dyn.Error.Undef_Uebergabe
      R      Dyn.Error.BLKMov
      R      Dyn.Error.Haupstrang_DL
      R      Dyn.Error.Keine_HSDaten
      R      Dyn.Error.Travel_FIFO_ERR
      R      Dyn.Error.Travel_FIFO_voll
      R      Dyn.Error.Frei07
      R      Dyn.Error.Frei10
      R      Dyn.Error.Frei11
      R      Dyn.Error.Frei12
      R      Dyn.Error.Frei13
      R      Dyn.Error.Frei14
      R      Dyn.Error.Send_FIFO_fehlerhaft
      R      Dyn.Error.Send_FIFO_voll
      R      Dyn.Error.Reset_aktiv                           // Reset ist aktiv

      L      0                                               // Damit statische Werte neu aus Datenbank geholt werden !
      T      Uebergabe.Uebergabe_Nr                          // Nummer der Übergabe

      BEU

En06: NOP 0


--- NW 4: Störungen nach Außen übergeben ---
      L      0
      T      "MW200"

      A      Dyn.Error.Uebergabe_DL                          // Weichen-Datenliste fehlerhaft
      =      "M200.0"
      A      Dyn.Error.Undef_Uebergabe                       // undefinierte Weiche
      =      "M200.1"
      A      Dyn.Error.BLKMov                                // Fehler bei Block kopieren
      =      "M200.2"
      A      Dyn.Error.Haupstrang_DL                         // Haupstrang-Datenliste fehlerhaft
      =      "M200.3"
      A      Dyn.Error.Keine_HSDaten                         // Keine Hauptstrang-Daten mehr vorhanden
      =      "M200.4"
      A      Dyn.Error.Travel_FIFO_ERR                       // Rein-FIFO fehlerhaft
      =      "M200.5"
      A      Dyn.Error.Travel_FIFO_voll                      // Keine Rein-Daten mehr vorhanden
      =      "M200.6"
      A      Dyn.Error.Frei07
      =      "M200.7"
      A      Dyn.Error.Frei10
      =      "M201.0"
      A      Dyn.Error.Frei11
      =      "M201.1"
      A      Dyn.Error.Frei12
      =      "M201.2"
      A      Dyn.Error.Frei13
      =      "M201.3"
      A      Dyn.Error.Frei14
      =      "M201.4"
      A      Dyn.Error.Send_FIFO_fehlerhaft
      =      "M201.5"
      A      Dyn.Error.Send_FIFO_voll
      =      "M201.5"
      CLR                                                    // Reset ist aktiv (gibts nicht!)
      =      Dyn.Error.Reset_aktiv
      =      "M201.7"

      L      "MW200"
      T      Error                                           // Schnittstelle nach Außen

// Antrieb stoppen:
      A(
      O      Dyn.Error.Travel_FIFO_ERR                       // Daten-Übergabe fand nicht statt -> Antrieb stoppen)
      O      Dyn.Error.Travel_FIFO_voll                      // Daten-Übergabe fand nicht statt -> Antrieb stoppen)
      )
      AN     ErrQuit
      S      Antrieb_stoppen                                 // Kreiselantrieb stoppen

// Anzeige Start n. Störung aktivieren:
      A      Dyn.Error.Travel_FIFO_ERR                       // Daten-Übergabe fand nicht statt -> Antrieb stoppen)
      O      Dyn.Error.Travel_FIFO_voll                      // Daten-Übergabe fand nicht statt -> Antrieb stoppen)
      S      hStOk


--- NW 5: Statische Übergabe-Parameter holen ---
      L      Uebergabe.Uebergabe_Nr                          // Nummer der Übergabe
      L      Uebergabe_Nr                                    // Aufruf-Parameter
      ==I                                                    // Identisch ?
      R      Dyn.Error.Uebergabe_DL                          // Weichendatenbank fehlerhaft
      R      Dyn.Error.Undef_Uebergabe                       // undefinierte Weiche
      JC     en06_Mig                                        // Ja !

      T      "MW200"                                         // Search-Daten

CALL FC "DatenOut" (SSDB:=Para.Uebergabe_DL_DB, SSDW:=Para.Uebergabe_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196")

      L      "MB199"
      T      Dyn.Rueckmld.RET_VAL_DL_Weichen                 // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL)

      JBI    G_Ok

      A      "M199.0"
      =      Dyn.Error.Uebergabe_DL                          // Weichendatenbank fehlerhaft
      BEC

      SET
      S      Dyn.Error.Undef_Uebergabe                       // undefinierte Weiche

      BEU

// Kennung + Datenbytes
G_Ok: SET
      R      Dyn.Error.Uebergabe_DL                          // Weichendatenbank fehlerhaft
      R      Dyn.Error.Undef_Uebergabe                       // undefinierte Weiche

      L      16#1004                                         // Kennung 10 + Word=04
      T      LW0                                             // Any-Kennung, Datentyp
      L      40                                              // Datenwords speichern
      T      LW2                                             // Wiederholungen

// Quelle-Pointer erzeugen:
      L      0                                               // Bei Merker = 0 !
      T      LW4                                             // DB_Nummer
      L      220                                             // Adresse
      SLD    3
      L      16#8300_0000                                    // Kennung: Merker
      OD
      T      LD6                                             // Kennung, Adresse

CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Uebergabe, DSTBLK:=Uebergabe)   // Datenliste-Daten speichern | #Ziel

      L      Dyn.Rueckmld.RET_VAL_BLKMOV_Uebergabe           // Rückmeldung
      L      0                                               // Fehler vorhanden ?
      <>I                                                    // Ja !
      =      Dyn.Error.BLKMov                                // Error bei Block kopieren
      BEC

      L      Uebergabe.Uebergabe_Typ                         // Übergabentyp = 180 (Übergabe)
      L      180                                             // Dieser Aufruf-FB ?
      ==I                                                    // Ja !
      JC     en06_Mig

      SET
      S      Dyn.Error.Undef_Uebergabe                       // undefinierte Weiche

      L      0                                               // Übergabe ungültig !
      T      Uebergabe.Uebergabe_Nr                          // Nummer der Übergabe

      BEU

en06_Mig: NOP 0


--- NW 6: Daten des Inkremental-Gebers holen / Zeit-Inkremente ---
      L      Uebergabe.Ink_DB                                // DB-Nr des Inkremental-Geber
      L      0                                               // angegeben ?
      <=I                                                    // Nein !
      JC     w040

      CAC
      T      "MW200"
      OPN    DB["MW200"]                                     // Zähler-DB öffnen
      L      DBD80
      T      Dyn.Ink_Wert
      L      DBD76
      T      Dyn.Max_Wert
      A      DBX74.3
      =      Dyn.Lauf_Flag
      A      DBX74.4
      =      Dyn.Flag_Lauf_fertig
      A      DBX74.5
      =      Dyn.Ohne_Lauf_fertig

      JU     en04

// Zeit-Inkremente erzeugen:
w040: AN     Antrieb_aktiv
      JC     w041

      L      "MW4"                                           // 10ms-Takte
      ITD
      L      Dyn.Ink_Wert
      +D                                                     // Aktueller Zählerwert +100ms-Takte
      T      Dyn.Ink_Wert

w041: L      10000                                           // Festwert: 10000 (100s)
      T      Dyn.Max_Wert

      L      Dyn.Ink_Wert                                    // Aktueller Zählerwert
      L      Dyn.Max_Wert                                    // Max. Wert erreicht ?
      <=D                                                    // Nein !
      R      Dyn.Ohne_Lauf_fertig                            // Ohne Flag-Lauf wurde beendet
      R      Dyn.Flag_Lauf_fertig                            // Flag-Lauf wurde beendet
      JC     en04

      -D                                                     // Restwert als Startwert nehmen !
      T      Dyn.Ink_Wert

      AN     Dyn.Lauf_Flag                                   // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
      =      Dyn.Ohne_Lauf_fertig                            // Ohne Flag-Lauf wurde beendet
      A      Dyn.Lauf_Flag                                   // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
      =      Dyn.Flag_Lauf_fertig                            // Flag-Lauf wurde beendet

      AN     Dyn.Lauf_Flag                                   // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
      =      Dyn.Lauf_Flag

en04: NOP 0


--- NW 7: 
 ---
      AN     ErrQuit
// /      CLR                               ///09.09.18, da Störung ohnehin nicht behebbar
      JC     En07                                            // /Am 21.12.18 aufgrund vom Kundenwunsch wieder wie früher

      SET
      R      Dyn.Status.Reset

// Störungen löschen:
      SET
      R      Dyn.Error.Keine_HSDaten
      R      Dyn.Error.Travel_FIFO_ERR
      R      Dyn.Error.Travel_FIFO_voll

En07: NOP 0


--- NW 8: Übergabepunkt aufgrund von Hauptstrangdaten suchen ---
      L      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)
      L      0                                               // schon bekannt ?
      >D                                                     // Ja !
      JC     Nw09

      L      Uebergabe.Hauptstrang_DL_DB                     // Sortlisten-DB für diese Weiche (Hauptstrang)
      L      0                                               // Sinnvolle Angabe ?
      <=I                                                    // Nein !
      O(
      L      Uebergabe.Hauptstrang_DL_DW                     // Sortlisten-DW für diese Weiche (Hauptstrang)
      L      0                                               // Sinnvolle Angabe ?
      <I                                                     // Nein !
      )
      JC     w076

// Nach neuen Daten suchen:
      AN     "Weiche_NewData"                                // Im Weichenbereich nach neuen Daten suchen
      JC     w076

      L      Dyn.Ink_Wert                                    // Aktueller Inkrementalwert
      L      Uebergabe.Off_Ink                               // Inkremente zum Weiche schalten
      >D                                                     // Gleiches Flag/Flag wie Inkgeber zum Suchen
      JC     w071

// Anders Flag/Liste wie Inkgeber zum Suchen:
      L      Uebergabe.Hauptstrang_DL_DB

      A      Dyn.Lauf_Flag                                   // Inkgeber schon mit Lauf-Flag
      JC     w070

      +      1

w070: T      Dyn.Hauptstrang_Sortliste                       // Sortliste aus welcher Hauptstrangdaten sind

      JU     w073

// Gleiches Flag/Liste wie Inkgeber zum Suchen:
w071: L      Uebergabe.Hauptstrang_DL_DB

      AN     Dyn.Lauf_Flag                                   // Inkgebeer ohne Lauf-Flag
      JC     w072

      +      1

w072: T      Dyn.Hauptstrang_Sortliste                       // Sortliste aus welcher Hauptstrangdaten sind

// Hauptstrang Sortliste nach Position -1 durchsuchen:
w073: CALL FC "DatenFindOffsetSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Uebergabe.Hauptstrang_DL_DW, PARA:=WORD#16#0B01, SEARCHDATEN:=Uebergabe.Position_minus, RE_VAL:="MB199", OUTDATEN:=Daten, Position:="MW196")   // nach 11.DW (letzte Position) suchen

      L      "MB199"
      T      Dyn.Rueckmld.RET_VAL_Sortliste_Out

      A      "M199.7"                                        // Datensatz ist vorhanden
      R      Dyn.Error.Haupstrang_DL                         // Sortliste fehlerhaft
      JC     w074

      A      "M199.6"                                        // Datensatz ist nicht vorhanden
      R      Dyn.Error.Haupstrang_DL                         // Sortliste fehlerhaft
      JC     Xn08                                            // Warten, da noch keine Daten vorhanden

      SET
      S      Dyn.Error.Haupstrang_DL                         // Sortliste fehlerhaft

w076: L      0                                               // Keine Daten auf Hauptstrang vorhanden
      T      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)

      JU     Xn08

// Search-Ink speichern:
w074: L      Daten.Start_Ink                                 // Stamm-Daten speichern
      T      Dyn.Hauptstrang_Search_Ink                      // Inkremente zum Daten auslesen (Start-Ink)

// Hauptstrang-Schaltdaten errechnen/speichern:
// Kettenlängungs-Korrektur:
      L      KorrekturFaktor                                 // Korrektur-Faktor wegen Kettenlängung
      L      0.95                                            // sinnvoller Wert ? (maximal 5% Abweichung erlaubt)
      >=R                                                    // Ja !
      A(
      CAC
      L      1.05
      <=R
      )
      JC     w075

      L      1.0                                             // dann ohne Korrektur !
      T      KorrekturFaktor                                 // Korrektur-Faktor wegen Kettenlängung

// Schaltdaten errechnen:
w075: A      Daten.Start_Flag                                // Lauf-Flag bei Start-Inkremente
      =      Dyn.Hauptstrang_Flag                            // Flag zum Weiche schalten (vom Hauptstrang)

      L      Uebergabe.Off_Ink                               // Inkremente zum Weiche schalten
      DTR
      L      KorrekturFaktor                                 // Korrektur-Faktor wegen Kettenlängung
      *R
      RND
      L      Daten.Start_Ink                                 // Daten aus Sortliste dazuaddieren
      +D
      T      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)
      L      Dyn.Max_Wert                                    // Maximal erlaubter Zählwert
      >D
      JCN    Xn08

      -D                                                     // Restwert übernehmen
      T      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)

      AN     Daten.Start_Flag                                // Lauf-Flag bei Start-Inkremente (invertieren)
      =      Dyn.Hauptstrang_Flag                            // Flag zum Weiche schalten (vom Hauptstrang)


--- NW 9: Hauptstrangdaten auslesen ---
Nw09: L      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)
      L      0                                               // angegeben ?
      ==D                                                    // Nein !
      JC     Xn08

      <D                                                     // Negativ !
      JC     w08E

      A      Dyn.Hauptstrang_Flag                            // Flag zum Weiche schalten (vom Hauptstrang)
      A      Dyn.Flag_Lauf_fertig                            // Flag-Lauf wurde beendet
      O
      AN     Dyn.Hauptstrang_Flag                            // Flag zum Weiche schalten (vom Hauptstrang)
      A      Dyn.Ohne_Lauf_fertig                            // Flag-Lauf wurde beendet
      JC     w080                                            // beim Ende des Lauf sind Inkremente uninteressant

      A      Dyn.Hauptstrang_Flag                            // Flag zum Weiche schalten (vom Hauptstrang)
      A      Dyn.Lauf_Flag                                   // Zähl-Lauf mit Flag ist aktiv
      O
      AN     Dyn.Hauptstrang_Flag                            // Flag zum Weiche schalten (vom Hauptstrang)
      AN     Dyn.Lauf_Flag                                   // Zähl-Lauf mit Flag ist aktiv
      JCN    Xn08

// Daten speichern:
w080: L      Dyn.Ink_Wert                                    // Aktuelle Inkrementalwert
      L      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)
      <D
      JC     Xn08

// Fahrendes Teil auslesen:
CALL FC "DatenOut" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Uebergabe.Hauptstrang_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=Dyn.Hauptstrang_Search_Ink, RE_VAL:="MB199", OUTDATEN:=Daten, Position:=Dyn.Hauptstrang_Pos)   // Inkremente zum Daten auslesen (Start-Ink) | Aktuelle Position der Daten in Datenliste

      L      "MB199"
      T      Dyn.Rueckmld.RET_VAL_Sortliste_Out

      A      "M199.7"                                        // Datensatz ist vorhanden
      S      Dyn.Status.BT_Daten_vorhanden                   // Daten für Travel-FIFO vorhanden
      JC     w081

      L      Uebergabe.Hauptstrang_DL_DB
      T      DatenDB
      OPN    DB[DatenDB]

      SET
      S      Dyn.Error.Keine_HSDaten                         // Keine Hauptstrang-Daten mehr vorhanden
      JU     Xn08

// Fahrendes Teil speichern: (für Übergabe an Travel-FIFO)
w081: L      Daten.Sort_Info.Teil_IDX                        // BM-IDX (wird bei Auslagerung gemeldet)
      T      Dyn.Last_IDX                                    // IDX des letzten durchfahrenden Teils
      L      Daten.Sort_Info.Teil_Ziel
      T      Dyn.Last_Ziel
      L      Daten.Sort_Info.Sort_ID
      T      SAVE.Last_Sort_ID

// Daten aus Sortliste löschen
      L      Dyn.Hauptstrang_Pos                             // Aktuelle Position der Daten in Datenliste
      L      16#0E00                                         // 0EYY: DS YY löschen
      OW
      T      FC86_Para

CALL FC "DatenOutSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Uebergabe.Hauptstrang_DL_DW, PARA:=FC86_Para, OUTDATEN:=Daten, RE_VAL:="MB199")   // DS YY löschen


--- NW 10: Daten sofort an Travel-FIFO+1 übergeben ---
// Daten an Travel-FIFO plus übergeben?:
Xn08: A      Dyn.Status.BT_Daten_vorhanden                   // Daten für Travel-FIFO vorhanden
      JCN    en08

// Daten für Eintrag vorbereiten:
      L      Dyn.Ink_Wert                                    // Aktueller Inkrementalwert
      T      Dyn.Last_Ink                                    // Inkremente des letzten durchfahrenden Teils
      T      "MD210"                                         // Start-Ink (für Rückkontrolle)

      L      0
      T      "MW214"

      A      Dyn.Lauf_Flag                                   // Zähl-Lauf mit Flag ist aktiv
      =      Dyn.Last_Flag                                   // Flag des letzten durchfahrenden Teils
      =      "M214.0"

      L      Dyn.Last_IDX                                    // IDX des letzten durchfahrenden Teils
      T      "MD216"

      L      Dyn.Last_Ziel
      T      "MW220"

      L      SAVE.Last_Sort_ID
      T      "MW222"

      L      0                                               // Restliche Daten löschen
      T      "MW224"
      T      "MW226"
      T      "MW228"
      T      "MW230"

// /FIFO resetten, damit Daten geschrieben werden können!:
CALL FC "FifoReset" (SSDB:=Uebergabe.Travel_FIFO_DB_plus, SSDW:=Uebergabe.Travel_FIFO_DW_plus, PARA:=WORD#16#0000, RE_VAL:="MB199")   // / | normaler FIFO

CALL FC "FifoIn" (SSDB:=Uebergabe.Travel_FIFO_DB_plus, SSDW:=Uebergabe.Travel_FIFO_DW_plus, PARA:=WORD#16#0000, INDATEN:=P#M210.0, RE_VAL:="MB199")   // Daten speichern

      L      "MB199"
      T      Dyn.Rueckmld.RET_VAL_TravelFIFO_In

      JBI    w8Ok

      A      "M199.2"
      S      Dyn.Error.Travel_FIFO_voll                      // Daten-Übergabe fand nicht statt -> Antrieb stoppen)
      JC     en08

      SET
      S      Dyn.Error.Travel_FIFO_ERR                       // Daten-Übergabe fand nicht statt -> Antrieb stoppen)

      JU     en08

w8Ok: SET
      R      Dyn.Status.BT_Daten_vorhanden                   // Daten für Travel-FIFO vorhanden

w08E: L      0
      T      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)

en08: NOP 0


--- NW 11: Antrieb einschalten ---
      L      Dyn.Hauptstrang_Ink                             // Inkremente zum Weiche schalten (vom Hauptstrang)
      L      0                                               // schon bekannt ?
      >D                                                     // Ja !
      S      Antrieb_start                                   // Kreiselantrieb starten


--- NW 12: Ende ---
      BE

