FB_EcCoeReadBTN

Mit dem Funktionsbaustein FB_EcCoeReadBTN kann per SDO(Service Daten Objekt)-Zugriff die BTN aus dem Objektverzeichnis eines EtherCAT-Slaves ausgelesen werden. Dazu muss der Slave eine Mailbox besitzen und das "CANopen over EtherCAT (CoE)"-Protokoll unterstützen unterstützen und das Objektverzeichnis muss ein Objekt 0xF083 mit der BTN enthalten.
 Eingänge
VAR_INPUT
    sNetId     : T_AmsNetId; 
    nSlaveAddr : UINT; 
    bExecute   : BOOL;
    tTimeout   : TIME := DEFAULT_ADS_TIMEOUT; 
END_VARName  | Typ  | Beschreibung  | 
|---|---|---|
sNetId  | T_AmsNetId  | String, der die AMS-Netzwerkkennung des EtherCAT-Master-Gerätes enthält. (Typ: T_AmsNetId)  | 
nSlaveAddr  | UINT  | Feste Adresse des EtherCAT-Slaves, an den das SDO-Upload-Kommando geschickt werden soll.  | 
bExecute  | BOOL  | Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.  | 
tTimeout  | TIME  | Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf.  | 
 Ausgänge
VAR_OUTPUT
    bBusy  : BOOL;
    bError : BOOL;
    nErrId : UDINT;
    sBTN   : STRING(9)
END_VARName  | Typ  | Beschreibung  | 
|---|---|---|
bBusy  | BOOL  | Dieser Ausgang wird bei der Aktivierung des Funktionsbausteins gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.  | 
bError  | BOOL  | Dieser Ausgang wird gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde, wenn bei der Übertragung des Kommandos ein Fehler auftritt.  | 
nErrId  | UDINT  | Liefert bei einem gesetzten bError-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehls.  | 
sBTN  | STRING  | Dieser Ausgang enthält bei fehlerfreiem Durchlauf die BTN des EtherCAT Slaves, nachdem der bBusy-Ausgang zurückgesetzt wurde, z.B. „0002agdw“.  | 
Beispiel für eine Implementierung in ST
PROGRAM TEST_ EcCoEReadBtn
VAR
    fbCoEBTN   : FB_EcCoEReadBtn;
    sNetId     : T_AmsNetId := '172.16.2.131.2.1';
    bExecute   : BOOL := TRUE;
    nSlaveAddr : UINT := 1006;
    sCoEBTN    : STRING;
    bError     : BOOL;
    nErrId     : UDINT;
END_VAR
fbCoEBTN(sNetId:= sNetID, nSlaveAddr:= nPort, bExecute:= bExecute, tTimeout:= T#5S);
IF NOT fbCoEBTN.bBusy THEN
     bExecute := FALSE;
     IF NOT fbCoEBTN.bError THEN
          sCoEBTN := fbCoEBTN.sBTN;
     END_IF
     fbCoEBTN(bExecute:= bExecute);
END_IF Voraussetzungen
Entwicklungsumgebung  | Zielplattform  | Einzubindende SPS- Bibliotheken  | 
|---|---|---|
TwinCAT v3.1.0  | PC oder CX (x86, x64, Arm®)  | Tc2_EtherCAT  |