Drive-Referenz ST_DriveRef
Auf den Antrieb wird über eine Drive-Referenz zugegriffen. Bibliotheksintern wird dafür die Struktur ST_DriveRef aus der Tc2_EtherCAT Bibliothek mit der NetID als String verwendet. Da auf I/O-Ebene die NetID üblicherweise als Bytearray vorliegt, wird zusätzlich eine Struktur ST_PlcDriveRef, auch aus der Tc2_EtherCAT Bibliothek, mit der NetID als Bytearray zur Verfügung gestellt. Die beiden Strukturen müssen ineinander überführt werden.
Struktur ST_PlcDriveRef
TYPE ST_PlcDriveRef :
STRUCT
aNetId : T_AmsNetIdArr; (* AmsNetId (array[0..5] of bytes) of the EtherCAT master device.*)
nSlaveAddr : UINT; (* Address of the slave device.*)
nDriveNo : BYTE; (* Drive number*)
nDriveType : BYTE; (* Drive type*)
END_STRUCT
END_TYPE
Struktur ST_DriveRef
TYPE ST_DriveRef :
STRUCT
sNetId : T_AmsNetId; (* AmsNetId (string(23)) of the EtherCAT master device.*)
nSlaveAddr : UINT; (* Address of the slave device.*)
nDriveNo : BYTE; (* Drive number*)
nDriveType : BYTE; (* Drive type*)
END_STRUCT
END_TYPE
Mapping der Antriebsreferenz in die SPS
Die Antriebsreferenz kann im System Manager in die SPS gemappt werden. Lokieren Sie dazu eine Instanz der Struktur ST_PlcDriveRef als AT %I*. Verlinken Sie anschließend aNetID auf netId, nSlaveAddr auf port und nDriveNo auf Chn0 (A) bzw. Chn1 (B). Bei mehrkanaligen Antrieben beziehen sich beide Kanäle auf dieselbe netId und port-Nummer, da es sich um einen EtherCAT-Slave handelt.
Überführung ST_PlcDriveRef und ST_DriveRef
Die Bausteine der Bibliothek Tc2_Drive verwenden eine Instanz der Struktur ST_DriveRef. Im Unterschied zu der Struktur ST_PlcDriveRef wird die NetID als T_AmsNetId erwartet (also als STRING(23)). Zum Wandeln des Bytearrays verwenden Sie die Funktion F_CreateAmsNetId() der PLC Lib Tc2_System.
stDriveRef.sNetId := F_CreateAmsNetId(stPlcDriveRef.aNetId);
stDriveRef.nSlaveAddr := stPlcDriveRef.nSlaveAddr;
stDriveRef.nDriveNo := stPlcDriveRef.nDriveNo;
stDriveRef.nDriveType := stPlcDriveRef.nDriveType;