FUNCTION "VPtoEP_Draussen_FC" : Void
TITLE = Draussen-FC: VollPuffer
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : AE
FAMILY : Module
NAME : Draussen
//SCL-Portierung des AWL-Bausteins FC2182 "VPtoEP_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 2182 in MHMOmniSchleuse).
//
//Der indirekte Dispatch (AWL: "L MW190 / L 4443 / NE_I / JC X4443E") ist als CASE
//ueber die Schleusen-Nr ausgefuehrt. Es existiert nur ein Zweig (Schleuse 4443).
//Die Merker-Schnittstelle (MW190 vom Aufrufer gesetzt) bleibt erhalten.
//
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
//  - AWL "BEU" (Bausteinende) im getroffenen Zweig ist als RETURN abgebildet.
//  - MW190 (Word-Merker) wird per WORD_TO_INT gegen die Int-Schleusen-Nr 4443
//    verglichen; Weichen_Ziel (Word) wird direkt gegen W#16#4461 verglichen.
//  - Keine funktionale Abweichung erwartet; reine Struktur-Portierung.

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

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

      4443:   // Schleuse 4443 (Vor ByPass zum LP): Ausgefahren?
         // Evtl. erkannten Sack loeschen:
         "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt := FALSE;

         // Abzweig? (AWL: L Weichen_Ziel / L 16#4461 / NE_I / JC EP)
         IF "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel = W#16#4461 THEN
            // Trolley faehrt zum LP:
            // Trolleydaten in DB1000 loeschen, da zum LP faehrt und danach kein Leser mehr!
            "Trolleydaten_löschen"(
               Gesamt_Trolley_DL := 1000,
               TrolleyID         := "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse);
            // Bei Partner (Schleuse 4466) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
            "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Sk.Akt_Schritt := 0;
            RETURN;   // AWL: BEU (Bausteinende)
         ELSE
            // EP: Trolleydaten in DB1000 aendern
            "Trolleydaten_ändern"(
               Gesamt_Trolley_DL := 1000,
               TrolleyID         := "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse,
               Endziel           := W#16#E000,       // Entnahmepuffer
               ShopGroup         := DINT#0);
         END_IF;

      ELSE
         ;   // MW190 <> 4443 -> nichts tun (AWL: JC X4443E ans Bausteinende)
   END_CASE;
END_FUNCTION
