FUNCTION "VP_Draussen_FC" : Void
TITLE = Draussen-FC: VollPuffer
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : AE
FAMILY : Module
NAME : Draussen
//SCL-Portierung des AWL-Bausteins FC1182 "VP_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. BEU je Zweig = nach dem CASE
//folgt nur noch das Bausteinende, daher keine weitere Aktion noetig.
//
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
//  - Vor den CALL-Aufrufen standen im AWL reine Akku-Ladebefehle ohne Transfer
//    (NW2: L MD182 / L ...Rec_IDX; NW3: L MD182 / L ...Trolley_ShopGroup).
//    Diese "toten" Ladungen hatten keine Wirkung (Parameter werden am CALL
//    vollstaendig explizit versorgt) und entfallen.
//  - NW3 enthielt "SET" gefolgt von einem auskommentierten "R M83.1"
//    (LineComment "/ R \"M83.1\""). Ohne aktive Anweisung bleibt SET wirkungslos
//    und entfaellt.

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

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

      3121:   // NW2: Schleuse 3121 (Sorter VP_A von KontrollPlatz): Ausgefahren?
         "Reservierung_in_Puffer_eintragen"(
            TrolleyID         := "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX,
            Ziel              := "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel,
            ShopGroup         := "MD182",
            Gesamt_Trolley_DL := 1000);
         // Daten in Sep 3121 loeschen:
         "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX       := DINT#0;   // IDX
         "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel := 0;
         // Bei Partner (Schleuse 3123) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
         "DVP_OmniFahren".Schleuse_3123.Dyn.Sk.Akt_Schritt      := 0;
         "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX       := DINT#0;   // IDX
         "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel := 0;

      3123:   // NW3: Schleuse 3123 (Sorter VP_A von RueckfuehrStrecke): Ausgefahren?
         "Reservierung_in_Puffer_eintragen"(
            TrolleyID         := "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX,
            Ziel              := "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel,
            ShopGroup         := "MD182",
            Gesamt_Trolley_DL := 1000);
         // Daten in Sep 3123 loeschen:
         "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX       := DINT#0;   // IDX
         "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel := 0;
         // Bei Partner (Schleuse 3121) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
         "DVP_OmniFahren".Schleuse_3121.Dyn.Sk.Akt_Schritt      := 0;
         "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX       := DINT#0;   // IDX
         "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel := 0;

      ELSE
         ;   // unbekannte Schleusen-Nr -> nichts tun (AWL: JC ans Netzwerkende)
   END_CASE;
END_FUNCTION
