FUNCTION "Arbeitsplatz_Draussen_FC" : Void
TITLE = Draussen-FC: AMR Arbeitsplaetze
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : AE
FAMILY : Module
NAME : Draussen
//SCL-Portierung des AWL-Bausteins FC1182 "Arbeitsplatz_Draussen_FC" (verhaltensgleich).
//
//Der Baustein hatte im AWL-Original die Bausteineigenschaft "Parameterversorgung
//ueber Register" (ParameterPassing) aktiv und konnte daher nur per UC/CC aus AWL
//aufgerufen werden. Da der Baustein ausschliesslich den globalen Merker MW190
//(Schleusen-Nr) liest und die Zielbausteine voll qualifiziert aufruft, gibt es
//keine echte Registerabhaengigkeit -> die Option entfaellt bei der SCL-Fassung,
//der Baustein ist damit direkt aus SCL aufrufbar (CASE 1182 in MHMOmniSchleuse).
//
//Der indirekte Dispatch (AWL: je Netzwerk "L MW190 / L <Schleuse> / NE_I / JC")
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Die Merker-Schnittstelle
//(MW190 vom Aufrufer gesetzt) bleibt erhalten.
//
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
//  - Standort fuer Schleuse 3481 war im Original die Wort-Typkonstante "w#3481";
//    hier als W#16#3481 uebernommen. Wert pruefen!
   VAR_TEMP
      Position : Int;
      WeichenZiel : Int;
   END_VAR

BEGIN
   // NW1: Rueckmeldungen erst mal resetten (Weiterfahrt von Ziel-FC erlaubt)
   "M180.6" := FALSE;

   // AWL: UC FC1182 dispatcht ueber MW190 (Schleusen-Nr, vom Aufrufer gesetzt)
   CASE WORD_TO_INT("MW190") OF

      3481:   // Schleuse 3481: Ausgefahren? (Einfahrt 180 Grad-ByPass)
         // Trolley am Arbeitsplatz reservieren:
         "Reservierung_in_Arbeitsplatz_eintragen"(
            TrolleyID        := "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse,
            Ziel             := "DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel,
            Standort         := W#16#3481,
            Gesamt_Trolley_DL := 1000);
         // Trolley an Arbeitsplatz uebergeben:
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse,
            Ziel             := "DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#B300,
            Gesamt_Trolley_DL := 1000);

      3241:   // Schleuse 3241: Ausgefahren? (Einfahrt PS5)
         // Trolley am Arbeitsplatz reservieren:
         "Reservierung_in_Arbeitsplatz_eintragen"(
            TrolleyID        := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            Standort         := W#16#3250,
            Gesamt_Trolley_DL := 1000);
         // Trolley an Arbeitsplatz uebergeben:
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#A500,
            Gesamt_Trolley_DL := 1000);

      3271:   // Schleuse 3271: Ausgefahren? (Einfahrt PS4)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#A400,
            Gesamt_Trolley_DL := 1000);

      3293:   // Schleuse 3293: Ausgefahren? (Einfahrt PS3)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#A300,
            Gesamt_Trolley_DL := 1000);

      3331:   // Schleuse 3331: Ausgefahren? (Einfahrt PS2)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#A200,
            Gesamt_Trolley_DL := 1000);

      3353:   // Schleuse 3353: Ausgefahren? (Einfahrt PS1)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#A100,
            Gesamt_Trolley_DL := 1000);

      3390:   // Schleuse 3390: Ausgefahren? (Einfahrt MPS3)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#B300,
            Gesamt_Trolley_DL := 1000);

      3421:   // Schleuse 3421: Ausgefahren? (Einfahrt MPS2)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#B200,
            Gesamt_Trolley_DL := 1000);

      3450:   // Schleuse 3450: Ausgefahren? (Einfahrt MPS1)
         "Trolley_in_Arbeitsplatz_eingefahren"(
            TrolleyID        := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
            Ziel             := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
            AusfahrZiel      := W#16#B100,
            Gesamt_Trolley_DL := 1000);
         // Gerade? Also zum OB-Bereich? (AWL: L Weichen_Ziel / L 16#3451 / NE_I / BEC)
         IF "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Weichen_Ziel = W#16#3451 THEN
            // Trolleydaten in DB1000 loeschen, da in AMR faehrt und danach kein Leser mehr!
            "Trolleydaten_löschen"(
               Gesamt_Trolley_DL := 1000,
               TrolleyID         := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse);
         END_IF;

      3455:   // Schleuse 3455: Ausgefahren? (Platz1 MPS1)
         // Trolleydaten in DB1000 loeschen, da in AMR faehrt und danach kein Leser mehr!
         "Trolleydaten_löschen"(
            Gesamt_Trolley_DL := 1000,
            TrolleyID         := "DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse);

      3461:   // Schleuse 3461: Ausgefahren? (Platz2 MPS1)
         "Trolleydaten_löschen"(
            Gesamt_Trolley_DL := 1000,
            TrolleyID         := "DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse);

      3465:   // Schleuse 3465: Ausgefahren? (Platz3 MPS1)
         "Trolleydaten_löschen"(
            Gesamt_Trolley_DL := 1000,
            TrolleyID         := "DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse);

      ELSE
         ;   // unbekannte Schleusen-Nr -> nichts tun
   END_CASE;
END_FUNCTION
