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.
Eingänge
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
Name | Typ | Beschreibung |
---|---|---|
sNetId | T_AmsNetID | AMSNetId des TwinCAT EtherNet/IP™ Scanners über den der Befehl laufen soll |
sIPv4Addr | T_IPv4Addr | IP-Adresse der Ziel-CPU. |
bExecute | BOOL | Positive Flanke startet den Befehl. |
bDataTableWrite | BOOL | Bei FALSE wird ein DataTableRead gemacht, bei TRUE ein DataTableWrite. |
sSrcElementName | WORD | String für den Source-Namen. |
sDstElementName | WORD | String für den Zielnamen. |
nNumberOfElements | POINTER OF BYTE | Anzahl der Elemente |
nLocalIndex | WORD | Bei ARRAYs ist der Start Index zu setzen ab welchem ARRAY-Index die Daten genommen werden sollen (lokales System). |
nRemoteIndex | DWORD | Bei ARRAYs ist der Start Index zu setzen ab welchem ARRAY-Index die Daten genommen werden sollen (Remote System). |
nSessionTimeoutMSec | DWORD | TimeOut für die Session, Default 30 sec. |
nCmdTimeoutMSec | DWORD | TimeOut für das Kommando, Default 7,5 sec. |
bRackComm | BOOL | TRUE wenn es sich um eine modulare CPU handelt, also eine CPU mit einem Rack Aufbau zum Beispiel eine CompactLogix . |
nPort | BYTE | Portnummer der CPU (normalerweise 1). |
nSlot | BYTE | Slot-Nummer wenn die CPU nicht auf Slot 0 steckt . |
Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | 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 | BOOL | Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde. |
nErrId | UDINT | 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';
Error: STRING;
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_TEXT (FB_CIP_DATA_TABLE_RDWR.nErrId);
END_IF