FB_CIP_DATA_TABLE_RDWR

FB_CIP_DATA_TABLE_RDWR 1:

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

FB_CIP_DATA_TABLE_RDWR 2:

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