74 lines
2.8 KiB
Plaintext
74 lines
2.8 KiB
Plaintext
FUNCTION "HWtoAMRZielFC" : Void
|
|
TITLE = Ziel-FC: HW>AMR
|
|
{ S7_Optimized_Access := 'FALSE' }
|
|
AUTHOR : AE
|
|
FAMILY : Module
|
|
NAME : Ziel
|
|
VERSION : 0.1
|
|
//SCL-Portierung des AWL-Bausteins FC181 "HWtoAMRZielFC" (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 nur den Merker M180.6 (Freigabe Weiterfahrt) setzt,
|
|
//gibt es keine echte Registerabhaengigkeit -> die Option entfaellt bei der
|
|
//SCL-Fassung, der Baustein ist damit direkt aus SCL aufrufbar (CASE 181 in
|
|
//MHMOmniSchleuse).
|
|
//
|
|
//Der indirekte Dispatch (AWL: je Netzwerk "L MW190 / L <Schleuse> / NE_I / JC")
|
|
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Im Original wird nach einem
|
|
//Treffer die Weiterfahrt freigegeben und der Baustein sofort verlassen (BEU);
|
|
//da MW190 nur einen Wert hat, ist der CASE dazu aequivalent. Die Merker-
|
|
//Schnittstelle (MW190 vom Aufrufer gesetzt, M180.6 Rueckmeldung) bleibt erhalten.
|
|
//
|
|
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
|
|
// - Der TIA-Bausteinname enthaelt kein '>' (XML <Name>=HWtoAMRZielFC), obwohl der
|
|
// Bausteintitel "Ziel-FC: HW>AMR" lautet. Der Aufruf in MHMOmniSchleuse.scl ist
|
|
// "HWtoAMRZielFC"() -> die Funktion heisst hier ebenso HWtoAMRZielFC (kein '>').
|
|
// - MW190 wird als WORD_TO_INT(MW190) gegen die dezimalen Schleusen-Nrn verglichen
|
|
// (im AWL "L MW190 / L <n> / NE_I", n als Int-Konstante 3004 bzw. 3565).
|
|
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-Laenge <= 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 (noch nicht erlaubt)
|
|
|
|
// AWL: UC FC181 dispatcht ueber MW190 (Schleusen-Nr, vom Aufrufer gesetzt).
|
|
// Je Treffer wird die Weiterfahrt freigegeben (S M180.6) und der Baustein
|
|
// im Original per BEU verlassen.
|
|
CASE WORD_TO_INT("MW190") OF
|
|
|
|
3004: // NW2 - Schleuse 3004: (BST 3)
|
|
"M180.6" := TRUE; // Weiterfahrt ist erlaubt
|
|
|
|
3565: // NW3 - Schleuse 3565: (BST 4)
|
|
"M180.6" := TRUE; // Weiterfahrt ist erlaubt
|
|
|
|
ELSE
|
|
; // unbekannte Schleusen-Nr -> keine Weiterfahrt-Freigabe
|
|
END_CASE;
|
|
|
|
END_FUNCTION
|
|
|