=== FC 6: Trolley_in_Arbeitsplatz_eingefahren  [STL] ===
INTERFACE:
  Input:
    TrolleyID : DInt
    Ziel : Word
    AusfahrZiel : Word
    Gesamt_Trolley_DL : Int
  Output:
  InOut:
  Temp:
    ABP_DB : Int
    ABP_DW : Int
    AR1Zeiger : DWord                                   // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
    AR1Start : DInt                                     // Startwert mit Offset 0
    Position : Int
  Constant:
  Return:
    Ret_Val : Void

--- NW 1: Ziel = AusfahrZiel -> Einfahrt an ABP melden ---
      L      Ziel
      T      "MW220"
      L      16#0                                            // Sinnvolles Ziel ?
      ==I                                                    // Nein!
      BEC

      CAC                                                    // Trolley-Ziel
      L      AusfahrZiel                                     // Bei diesem Ziel ausfahren?
      <>I                                                    // Nicht identisch!
      BEC

// Arbeitsplatz checken:
CALL FC "DatenOut" (SSDB:=276, 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
      BEC

      L      "MW224"
      T      ABP_DB
      L      "MW226"
      T      ABP_DW

      L      ABP_DW
      ITD
      T      AR1Start                                        // Startwert mit Offset 0

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

// Trolley fährt ein:
      OPN    DB[ABP_DB]                                      // ABP-DB öffnen

      SET
      =      DBX [AR1Zeiger]                                 // Trolley ist eingefahren


--- NW 2: TrolleyID + Standort in Trolley-DL eintragen ---
      L      TrolleyID
      L      0
      ==I
      BEC

      L      Gesamt_Trolley_DL
      L      0                                               // Liste angegeben?
      ==I                                                    // Nein!
      BEC

      L      TrolleyID
      T      "TrolleyDL_INDaten".INDaten.TrolleyID
      L      16#0                                            // Ziel löschen
      T      "TrolleyDL_INDaten".INDaten.EndZiel
      L      DINT#0
      T      "TrolleyDL_INDaten".INDaten.ShopGroup

// Standort:
      L      AusfahrZiel
      T      "TrolleyDL_INDaten".INDaten.Standort

// Startzeit:
      L      "SGes".DATE_TIME.Jahr
      T      "TrolleyDL_INDaten".INDaten.LastTime.Jahr
      L      "SGes".DATE_TIME.Monat
      T      "TrolleyDL_INDaten".INDaten.LastTime.Monat
      L      "SGes".DATE_TIME.Tag
      T      "TrolleyDL_INDaten".INDaten.LastTime.Tag
      L      "SGes".DATE_TIME.Stunde
      T      "TrolleyDL_INDaten".INDaten.LastTime.Stunde
      L      "SGes".DATE_TIME.Minute
      T      "TrolleyDL_INDaten".INDaten.LastTime.Minute
      L      "SGes".DATE_TIME.Sekunde
      T      "TrolleyDL_INDaten".INDaten.LastTime.Sekunde

// Daten in Datenbank schreiben:
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198")


--- NW 3: Ende ---
      BE

