FB_CIP_DATA_TABLE_RDWR
Das Lesen und Schreiben von Variablen von TwinCAT aus geschieht über einen Funktionsbaustein der Bestandteil der Tc2_EthernetIP ist.
Der Funktionsbaustein FB_CIP_DATA_TABLE_RDWR kann für das Lesen sowie für das Schreiben verwendet werden.
VAR_INPUT
VAR_INPUT
sNetId : T_AmsNetID;
sIPv4Addr : T_IPv4Addr;
bExecute : BOOL;
bDataTableWrite : BOOL;
sSrcElementName : WORD;
sDstElementName : WORD;
nNumberOfElements : POINTER TO BYTE;
nLocalIndex : WORD;
nRemoteIndex : DWORD;
nSessionTimeoutMSec : DWORD
nCmdTimeoutMSec : DWORD;
bRackComm : BOOL;
nPort : BYTE;
nSlot : BYTE;
END_VAR
sNetId: AMSNetId des TwinCAT EtherNet/IP Scanners über den der Befehl laufen soll
sIPv4Addr: IP Adresse der Ziel CPU
bExecute. Positive Flanke startet den Befehl
bDataTableWrite: Bei FALSE wird ein DataTableRead gemacht, bei TRUE ein DataTableWrite
sSrcElementName: String für den Source Name
sDstElementName: String für den Ziel Namen
nNumberOfElements: Anzahl der Elemente
nLocalIndex: Bei ARRAYs ist der Start Index zu setzen ab welchem ARRAY Index die Daten genommen werden sollen (lokales System)
nRemoteIndex: Bei ARRAYs ist der Start Index zu setzen ab welchem ARRAY Index die Daten genommen werden sollen (remote System)
nSessionTimeoutMSec: TimeOut für die Session, Default 30 sec
nCmdTimeoutMSec: TimeOut für das Kommando, Default 7,5 sec
bRackComm: TRUE wenn es sich um eine modulare CPU handelt, also eine CPU mit einem Rack Aufbau zum Beispiel eine CompactLogix
nPort: Port Nummer der CPU (normalerweise 1)
nSlot: Slot Nummer wenn die CPU nicht auf Slot 0 steckt
VAR_OUTPUT
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
END_VAR
bBusy; Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt. Während Busy = TRUE wird an den Eingängen kein neuer Befehl angenommen.
bError: Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.
nErrId: Liefert bei einem gesetzten bError-Ausgang eine Fehlernummer.
Beispiel
Test-Code entfernen Falls Sie bereits die Kommunikation von AB zu Beckhoff getestet haben, sollten Sie die Funktionsaufrufe zum DataTable Read/Write aus dem AB Projekt entfernen |
VAR
FB_CIP_DATA_TABLE_RDWR: FB_CIP_DATA_TABLE_RDWR;
SourceName: STRING := 'Test';
DestName: STRING := 'ETHIP.Test';
END_VAR
FB_CIP_DATA_TABLE_RDWR(
sNetId:='5.18.71.214.4.1' ,
sIPv4Addr:='192.168.1.220' ,
bExecute:=TRUE ,
bDataTableWrite:= ,
sSrcElementName:=(SourceName) ,
sDstElementName:=(DestName) ,
nNumberOfElements:=1 ,
nLocalIndex:= ,
nRemoteIndex:= ,
nSessionTimeoutMSec:= ,
nCmdTimeoutMSec:= ,
bRackComm:=TRUE ,
nPort:= ,
nSlot:= ,
bBusy=> ,
bError=> ,
nErrId=> );
IF NOT FB_CIP_DATA_TABLE_RDWR.bBusy THEN
FB_CIP_DATA_TABLE_RDWR(bExecute:=FALSE);
Error:=F_GET_ETHERNETIP_ERROR_HELPSTRING(FB_CIP_DATA_TABLE_RDWR.nErrId;
END_IF