61 lines
1.6 KiB
Plaintext
61 lines
1.6 KiB
Plaintext
FUNCTION "LeerTrolley to AMR-Platz ermitteln" : Void
|
|
{ S7_Optimized_Access := 'FALSE' }
|
|
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
|
|
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
|
|
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
|
|
|
|
VAR_INPUT
|
|
Erlaubter_Bereich : Word; // 0=Alles ok, A000=nur PS, B000=nur MPS ok
|
|
M198_7 : Bool; // war "M198.7"
|
|
MW220 : Word; // war "MW220"
|
|
END_VAR
|
|
|
|
VAR_OUTPUT
|
|
AMR_Platz : Word; // AMR-Platz ermitteln
|
|
END_VAR
|
|
|
|
VAR_IN_OUT
|
|
MB198 : Byte; // war "MB198"
|
|
MW196 : Word; // war "MW196"
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
DLDB : Int;
|
|
Para : Word;
|
|
END_VAR
|
|
|
|
BEGIN
|
|
REGION Initialisierung
|
|
#AMR_Platz := 16#0;
|
|
#DLDB := 1112;
|
|
END_REGION
|
|
|
|
REGION Werden 12->1 Trolley(s) benötigt?
|
|
NextDL: ;
|
|
#Para := 16#F100;
|
|
"DatenOut"(SSDB := #DLDB, SSDW := 0, PARA := #Para, SEARCHDATEN := P#M200.0, RE_VAL := #MB198, OUTDATEN := P#M220.0, Position := #MW196);
|
|
IF #M198_7 THEN GOTO Check; END_IF;
|
|
// Nächst kleiner benötigte Stückzahl:
|
|
#DLDB := #DLDB + -1;
|
|
IF (#DLDB + -1) >= 1101 THEN GOTO NextDL; END_IF;
|
|
RETURN;
|
|
END_REGION
|
|
|
|
REGION Check, ob Bereich ok
|
|
IF #Erlaubter_Bereich = 16#0 THEN GOTO AMR; END_IF;
|
|
IF ((#MW220 AND 16#F000) = #Erlaubter_Bereich) AND (#MW220 <> 16#0) THEN GOTO AMR; END_IF;
|
|
// Nächsetn Eintrag lesen:
|
|
#Para := 16#FF00;
|
|
GOTO Next;
|
|
END_REGION
|
|
|
|
REGION Puffer aufbereiten
|
|
#AMR_Platz := #MW220;
|
|
END_REGION
|
|
|
|
REGION Ende
|
|
RETURN;
|
|
END_REGION
|
|
|
|
END_FUNCTION
|