Liefert die Adresse einer Ein-/Ausgangsvariable mit Offset
Diese Funktion liefert die Adresse einer Variablen mit Offset am Ein-/Ausgang einer FP-Funktion.
Eingang
Dieser Pin muss am Ein-/Ausgang einer FP-Funktion angeschlossen sein, an dem der Typ INT, WORD zulässig ist.
Liefert 16-Bit-Offsetadresse der Ein-/Ausgangsvariablen
Ein-, Ausgangsvariable, von der die 16-Bit-Offsetadresse benötigt wird
Ausgang
Ausgangsvariable, von der die 16-Bit-Endadresse benötigt wird
Von der Variablen am Ein-/Ausgang Var wird am Ein-/Ausgang Adr die 16-Bit-Adresse erzeugt, die um den Wert am Ein-/Ausgang Offs erhöht ist. Dieser Ein- oder Ausgang muss unmittelbar an einem 16-Bit-Ein- oder -Ausgang einer FP-Funktion angeschlossen sein. Diese Funktion kann verwendet werden, um nur mit den Nutzdaten eines Strings d.h. nur mit den Zeichen ohne den String-Kopf zu operieren.
Nur für KOP- und FBS-Editoren: Wählen Sie im Fenster “Befehle” die Option “Eingangsbefehl” oder “Ausgangsbefehl”, um den erforderlichen Befehl in das Programmierfenster einzufügen.
In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR_EXTERNAL
ReceiveBuffer: ARRAY [0..15] OF WORD:=[16(0)];
END_VAR
VAR
Receive: BOOL:=FALSE;
ReceiveString: STRING[30]:='';
END_VAR
VAR CONSTANT
StringTotLenPos: INT:=0;
StringActLenPos: INT:=1;
StringHeaderSize: INT:=2;
END_VAR
VAR
@'': @'';
END_VAR
Wenn Receive gesetzt ist und das Empfangsendezeichen empfangen wurde, d.h. R9038 ist gesetzt worden, werden die im Buffer ReceiveBuffer über die serielle Schnittstelle empfangenen Zeichen in den Nutzdatenbereich des Strings ReceiveString kopiert In ReceiveBuffer[0] steht die Anzahl der empfangenen Zeichen, ab dann folgen die Zeichen des empfangenen Strings Deshalb kann ReceiveBuffer direkt in den Teilbereich des Strings ab der Position kopiert werden (siehe Allgemeine Hinweise: Datentyp STRING). Die Position des Buffers ReceiveBuffer muss in der globalen Variablenliste gemäß den Einstellungen in den Systemregistern 417 und 418 festgelegt werden (siehe Empfangspuffer für CPU einstellen).
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 10 ;
NETWORK_BODY
B(B_COIL,,sys_bIsComPort1ReceptionDone,7,1,9,3,);
B(B_CONTACT,,Receive,16,1,18,3,);
B(B_F,F10_BKMV!,Instance,20,0,28,5,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_VARIN,,ReceiveBuffer[0],18,2,20,4,);
B(B_VARIN,,ReceiveBuffer[15],18,3,20,5,);
B(B_F,Adr_Of_VarOffs_I!,Instance,20,6,29,10,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,StringActLenPos,18,8,20,10,);
B(B_VAROUT,,ReceiveString,29,7,31,9,);
L(1,2,7,2);
L(9,2,16,2);
L(18,2,20,2);
L(28,3,28,6);
L(20,6,28,6);
L(20,6,20,8);
L(1,0,1,10);
END_NETWORK_BODY
END_NET_WORK
END_BODY