FUNCTION "HWtoOB_Ziel_FC" : Void
TITLE = Ziel-FC: HW>OB
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : AE
FAMILY : Module
NAME : Ziel
//SCL-Portierung des AWL-Bausteins FC2181 "HWtoOB_Ziel_FC" (verhaltensgleich).
//(Bausteintitel im AWL-Original: "Ziel-FC: HW>OB".)
//
//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 nur einen globalen Merker (M180.6) setzt/rueckstellt,
//gibt es keine echte Registerabhaengigkeit -> die Option entfaellt bei der
//SCL-Fassung, der Baustein ist damit direkt aus SCL aufrufbar
//(CASE 2181 in MHMOmniSchleuse).
//
//Der indirekte Dispatch (AWL: "L MW190 / L <Schleuse> / NE_I / JC <Ende>")
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Die Merker-Schnittstelle
//(MW190 vom Aufrufer gesetzt, M180.6 als Rueckmeldung) bleibt erhalten.
//
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
//  - Keine funktionalen Abweichungen. Der Baustein besitzt nur EINEN Dispatch-Zweig
//    (Schleuse 3014). Das AWL beendet diesen Zweig mit BEU (unbedingtes Bausteinende);
//    im SCL entspricht dies dem Ende des CASE-Zweiges (identisches Verhalten, da
//    danach im Original nur noch das Bausteinende BE folgt).
//  - Vergleich "L MW190 / L 3014 / NE_I" (Integer-Vergleich auf den Wort-Merker
//    MW190) ist als WORD_TO_INT("MW190") ausgefuehrt.
   VAR_TEMP
      Ziel_hex : Word;
      Ziel_int : Int;
      Zielebene : Word;
      Error : Byte;
      Position : Int;
      Lager_DB : Int;
      Lager_DW : Int;
      AR1Zeiger : DWord;   // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
      AR1Start : DInt;   // Startwert mit Offset 0
      SSDW : Int;
      EndZiel : Word;
      Variante : Int;
      AbrufID : DInt;
      Fahrlisten_TrolleyID : DInt;
      Fahrlisten_AbrufID : DInt;
      Fahrlisten_Lager : Int;
      Trolley_unbekannt : Bool;   // Trolley ist nicht in DL
      Express_Abruf : Bool;
   END_VAR

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

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

      3014:   // NW2 Schleuse 3014: (BST 3)
         "M180.6" := TRUE;   // Weiterfahrt ist erlaubt

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