8.7. SubDevice specific objects
The SubDevice specific object structures are repeated for each SubDevice. The number of SubDevice specific objects follows the maximum bus SubDevice count configured through EC_T_INIT_MASTER_PARMS.dwMaxBusSlaves.
To access a specific SubDevice entry an application evaluates the correct object index by adding the SubDevice ID to the corresponding base address (i.e. 0xA001 for diagnosis data of the second SubDevice).
Note for entry 0x3000 (SubDevice information objects): The order of the SubDevice in this object depends on the order of the SubDevices on the bus. The SubDevice entry must therefore not be accessed by 0x3000 + <SubDevice ID>, instead the position within the EtherCAT bus is needed.
The following example shows how to determine the entry index of the corresponding SubDevice entry: <entry index> = 0x3000 + (<SubDevice auto increment address> * -1)
8.7.1. SubDevice Configuration and Information Object 0x3000-0x3FFF
Object Type: RECORD, Manufacturer Specific Identity 0x43
Subindex |
Description |
Data Type |
Access |
M/O/C |
Available |
0 |
Number of Entries |
Unsigned8 |
R |
M |
X |
1 |
Entry Valid |
Bool32 |
R |
M |
X |
2 |
VendorId (Bus) |
Unsigned32 |
R |
M |
X |
3 |
ProductCode (Bus) |
Unsigned32 |
R |
M |
X |
4 |
Revision No (Bus) |
Unsigned32 |
R |
M |
X |
5 |
Serial No (Bus) |
Unsigned32 |
R |
M |
X |
6 |
Device Name (Config) |
Visible_String[80] |
R |
M |
X |
7 |
Auto Increment Address (Bus) |
Unsigned16 |
R |
M |
X |
8 |
Station Address ESC register: 0x0010 |
Unsigned16 |
R |
M |
X |
9 |
Configured Station Address ENI file value “PhysAddr” |
Unsigned16 |
R |
M |
X |
10 |
Station Alias Address ESC register: 0x0012 |
Unsigned16 |
R |
M |
X |
11 |
PortState (Bus) |
Unsigned16 |
R |
M |
X |
12 |
DC Support (Bus) |
Bool32 |
R |
M |
X |
13 |
DC Support 64Bit (Bus) |
Bool32 |
R |
M |
X |
14 |
Mailbox Support (Config) |
Bool32 |
R |
M |
X |
15 |
Requested State (SubDevice instance) |
Unsigned32 |
RW |
M |
X |
16 |
Current State (SubDevice instance) |
Unsigned32 |
R |
M |
X |
17 |
Error Flag Set (SubDevice instance) |
Bool32 |
R |
M |
X |
18 |
Enable Linkmessages (SubDevice instance) |
Bool32 |
RW |
M |
X |
19 |
Error code (SubDevice instance) |
Unsigned32 |
R |
M |
X |
20 |
Sync Pulse active (Config, SubDevice instance) |
Bool32 |
R |
M |
X |
21 |
DC Sync 0 Period (Config, SubDevice instance) |
Unsigned32 |
R |
M |
X |
22 |
DC Sync 1 Period (Config, SubDevice instance) |
Unsigned32 |
R |
O |
X |
23 |
SB Error Code (Bus Topology) |
Unsigned32 |
R |
O |
X |
24 |
RX Error Counter Port 0 (Bus) |
Unsigned16 |
R |
M |
X |
25 |
RX Error Counter Port 1 (Bus) |
Unsigned16 |
R |
M |
X |
26 |
RX Error Counter Port 2 (Bus) |
Unsigned16 |
R |
M |
X |
27 |
RX Error Counter Port 3 (Bus) |
Unsigned16 |
R |
M |
X |
28 |
Forwarded RX Error Counter Port 0 (Bus) |
Unsigned8 |
R |
M |
X |
29 |
Forwarded RX Error Counter Port 1 (Bus) |
Unsigned8 |
R |
M |
X |
30 |
Forwarded RX Error Counter Port 2 (Bus) |
Unsigned8 |
R |
M |
X |
31 |
Forwarded RX Error Counter Port 3 (Bus) |
Unsigned8 |
R |
M |
X |
32 |
EtherCAT Processing Unit Error Counter (Bus) |
Unsigned8 |
R |
M |
X |
33 |
PDI Errror Counter (Bus) |
Unsigned8 |
R |
M |
X |
34 |
Support Mailbox Protocols Bit 0=AoE, Bit 1=EoE, Bit 2=CoE, Bit 3=FoE, Bit 4=SoE, Bit 5=VoE |
Unsigned16 |
R |
O |
X |
35 |
Lost Link Counter Port 0 (Bus) |
Unsigned8 |
R |
M |
X |
36 |
Lost Link Counter Port 1 (Bus) |
Unsigned8 |
R |
M |
X |
37 |
Lost Link Counter Port 2 (Bus) |
Unsigned8 |
R |
M |
X |
38 |
Lost Link Counter Port 3 (Bus) |
Unsigned8 |
R |
M |
X |
39 |
FMMU’s supported (Bus) |
Unsigned8 |
R |
M |
X |
40 |
Sync Managers supported (Bus) |
Unsigned8 |
R |
M |
X |
41 |
RAM Size in kByte (Bus) |
Unsigned8 |
R |
M |
X |
42 |
Port Descriptor (Bus) |
Unsigned8 |
R |
M |
X |
43 |
ECS Type (Config) |
Unsigned8 |
R |
M |
X |
44 |
SubDevice is optional (Config) |
Bool32 |
R |
M |
X |
45 |
SubDevice is present (Bus) |
Bool32 |
R |
M |
X |
46 |
Hot connect group ID |
Unsigned32 |
R |
M |
X |
47 |
System time difference |
Unsigned32 |
R |
M |
X |
48 |
Process Data Input Offset [Bit] |
Unsigned32 |
R |
M |
X |
49 |
Process Data Input Size [Bit] |
Unsigned32 |
R |
M |
X |
50 |
Process Data Output Offset [Bit] |
Unsigned32 |
R |
M |
X |
51 |
Process Data Output Size [Bit] |
Unsigned32 |
R |
M |
X |
Datatype for application access:
typedef struct _EC_T_OBJ3XXX {
EC_T_WORD wSubIndex0;
EC_T_BOOL bEntryValid;
EC_T_DWORD dwVendorID;
EC_T_DWORD dwProductCode;
EC_T_DWORD dwRevisionNo;
EC_T_DWORD dwSerialNo;
EC_T_CHAR szDeviceName[MAX_SLAVE_DEVICENAME];
EC_T_WORD wAutoIncAddr;
EC_T_WORD wPhysAddr;
EC_T_WORD wConfigPhysAddr;
EC_T_WORD wAliasAddr;
EC_T_WORD wPortState;
EC_T_BOOL bDCSupport;
EC_T_BOOL bDC64Support;
EC_T_BOOL bMailboxSupport;
EC_T_DWORD dwReqState;
EC_T_DWORD dwCurState;
EC_T_BOOL bErrFlagSet;
EC_T_BOOL bEnableLinkMsgs;
EC_T_DWORD dwErrorCode;
EC_T_BOOL bSyncPulseActive;
EC_T_DWORD dwDCSync0Period;
EC_T_DWORD dwDCSync1Period;
EC_T_DWORD dwSBErrorCode;
EC_T_WORD wRxErrorCounter0;
EC_T_WORD wRxErrorCounter1;
EC_T_WORD wRxErrorCounter2;
EC_T_WORD wRxErrorCounter3;
EC_T_BYTE byFwdRxErrorCounter0;
EC_T_BYTE byFwdRxErrorCounter1;
EC_T_BYTE byFwdRxErrorCounter2;
EC_T_BYTE byFwdRxErrorCounter3;
EC_T_BYTE byEcatProcUnitErrorCounter;
EC_T_BYTE byPDIErrorCounter;
EC_T_WORD wMbxSupportedProtocols;
EC_T_BYTE byLostLinkCounter0;
EC_T_BYTE byLostLinkCounter1;
EC_T_BYTE byLostLinkCounter2;
EC_T_BYTE byLostLinkCounter3;
EC_T_BYTE byFmmusSupported;
EC_T_BYTE bySyncManagersSupported;
EC_T_BYTE byRamSizeKb;
EC_T_BYTE byPortDescriptor;
EC_T_BYTE byESCType;
EC_T_BOOL bSlaveIsOptional;
EC_T_BOOL bSlaveIsPresent;
EC_T_DWORD dwHotConnectGroupId;
EC_T_DWORD dwSystemTimeDifference;
EC_T_DWORD dwPdOffsIn;
EC_T_DWORD dwPdSizeIn;
EC_T_DWORD dwPdOffsOut;
EC_T_DWORD dwPdSizeOut;
} EC_PACKED(1) EC_T_OBJ3XXX;
8.7.2. SubDevice Configuration Objects: 0x8000-0x8FFF
Object Type: RECORD, Manufacturer Specific Identity 0x45
The Configuration Data at 0x8nnn contains the information about the configured EtherCAT SubDevices.
Subindex |
Description |
Data Type |
Access |
M/O/C |
Available |
0 |
Number of Entries |
Unsigned8 |
R |
M |
X |
1 |
Configured Station Address ENI file value “PhysAddr” |
Unsigned16 |
R |
M |
X |
2 |
Type |
Visible_String[64] |
RW |
M |
X |
3 |
Name |
Visible_String[64] |
R |
M |
X |
4 |
Device Type |
Unsigned32 |
R |
M |
X |
5 |
Vendor ID |
Unsigned32 |
R |
M |
X |
6 |
Product Code |
Unsigned32 |
R |
M |
X |
7 |
Revision Number |
Unsigned32 |
R |
M |
X |
8 |
Version Number |
Unsigned32 |
R |
M |
X |
33 |
Mailbox Out Size (if mailbox SubDevice) |
Unsigned16 |
R |
M |
X |
34 |
Mailbox In Size (if mailbox SubDevice) |
Unsigned16 |
R |
M |
X |
35 |
Link Status |
Unsigned8 |
R |
O |
– |
36 |
Link Present |
Unsigned8 |
R |
M |
X |
37 |
Flags |
Unsigned8 |
R |
M |
X |
Datatype for application access:
typedef struct _EC_T_OBJ8XXX {
EC_T_WORD wSubIndex0;
EC_T_WORD wFixedStationAddr;
EC_T_CHAR szType[64];
EC_T_CHAR szName[64];
EC_T_DWORD dwDeviceType;
EC_T_DWORD dwVendorID;
EC_T_DWORD dwProductCode;
EC_T_DWORD dwRevision;
EC_T_DWORD dwSerial;
EC_T_WORD wMailboxOutSize;
EC_T_WORD wMailboxInSize;
EC_T_BYTE byLinkPreset;
EC_T_BYTE byFlags;
} EC_PACKED(1) EC_T_OBJ8XXX;
8.7.3. SubDevice Information Objects: 0x9000-0x9FFF
Object Type: RECORD, Manufacturer Specific Identity 0x46
The information data at 0x9nnn contains the information about the connected EtherCAT SubDevices. Executing the Scan Bus command (0xF002) will refresh them.
Subindex |
Description |
Data Type |
Access |
M/O/C |
Available |
0 |
Number of Entries |
Unsigned8 |
R |
M |
X |
1 |
Fixed Station Address of the Nth EtherCAT SubDevice found (same value as 0xF040:0n) |
Unsigned16 |
R |
M |
X |
5 |
Vendor ID of the Nth EtherCAT SubDevice found (entry 0x1018:01 of the EtherCAT SubDevice) |
Unsigned32 |
R |
M |
X |
6 |
Product Code of the Nth EtherCAT SubDevice found (entry 0x1018:02 of the EtherCAT SubDevice) |
Unsigned32 |
R |
M |
X |
7 |
Revision Number of the Nth EtherCAT SubDevice found (entry 0x1018:03 of the EtherCAT SubDevice) |
Unsigned32 |
R |
M |
X |
8 |
Serial Number of the Nth EtherCAT SubDevice found (entry 0x1018:04 of the EtherCAT SubDevice) |
Unsigned32 |
R |
M |
X |
32 |
DL Status (Register 0x110-0x111) of the Nth EtherCAT SubDevice found. |
Unsigned16 |
R |
M |
X |
Datatype for application access:
typedef struct _EC_T_OBJ9XXX {
EC_T_WORD wSubIndex0;
EC_T_WORD wFixedStationAddr;
EC_T_DWORD dwVendorID;
EC_T_DWORD dwProductCode;
EC_T_DWORD dwRevision;
EC_T_DWORD dwSerial;
EC_T_WORD wDLStatus;
} EC_PACKED(1) EC_T_OBJ9XXX;
8.7.4. SubDevice Diagnosis Data Objects: 0xA000-0xAFFF
Object Type: RECORD, Manufacturer Specific Identity 0x47
The diagnosis data at 0xAnnn contains enhanced information about the connected EtherCAT SubDevices including topology information.
Subindex |
Description |
Data Type |
Access |
M/O/C |
Available |
0 |
Number of Entries |
Unsigned8 |
R |
M |
X |
1 |
AL Status (Register 0x130-0x131) of the Nth EtherCAT SubDevice connected. |
Unsigned16 |
R |
M |
X |
2 |
AL Control (Register 0x120-0x121) of the Nth EtherCAT SubDevice connected. |
Unsigned16 |
RW |
M |
X |
3 |
Last AL Status Code (Register 0x0134-0x0135) of the Nth EtherCAT SubDevice connected. |
Unsigned16 |
R |
M |
X |
4 |
Link Conn. Status Actual link status of the Nth EtherCAT SubDevice connected. |
Unsigned8 |
R |
O |
X |
5 |
Link Control (Register 0x0101) of the Nth EtherCAT SubDevice connected. |
Unsigned8 |
RW |
O |
X |
6 |
Fixed Address Conn. Port 0 (Register 0x0010-0x0011) of the SubDevice connected to port 0 of the Nth EtherCAT SubDevice connected. |
Unsigned16 |
R |
M |
X |
7 |
Fixed Address Conn. Port 1 |
Unsigned16 |
R |
M |
X |
8 |
Fixed Address Conn. Port 2 |
Unsigned16 |
R |
M |
X |
9 |
Fixed Address Conn. Port 3 |
Unsigned16 |
R |
M |
X |
10 |
CRC Error Counter Port 0 Number of CRC errors counted by port 0 of the Nth EtherCAT SubDevice connected. |
Unsigned32 |
R |
M |
X |
11 |
CRC Error Counter Port 1 |
Unsigned32 |
R |
M |
X |
12 |
CRC Error Counter Port 2 |
Unsigned32 |
R |
M |
X |
13 |
CRC Error Counter Port 3 |
Unsigned32 |
R |
M |
X |
14 |
Cyclic WC Error Counter Number of cycles the datagram for process data exchange of the Nth EtherCAT SubDevice was received with an invalid Working Counter. |
Unsigned32 |
R |
M |
X |
15 |
SubDevice Not Present Counter Number of times the MainDevice lost physical link with the Nth EtherCAT SubDevice. |
Unsigned32 |
R |
O |
X |
16 |
Abnormal State Change Counter Number of times the Nth EtherCAT SubDevice left its state autonomously to a lower state without MainDevice request. |
Unsigned32 |
R |
M |
X |
17 |
Disable Automatic Link Support |
Boolean |
RW |
O |
X |
Datatype for application access:
typedef struct _EC_T_OBJAXXX {
EC_T_WORD wSubIndex0;
EC_T_WORD wALStatus;
EC_T_WORD wALControl;
EC_T_WORD wLastALStatusCode;
EC_T_BYTE byLinkConnStatus;
EC_T_BYTE byLinkControl;
EC_T_WORD wFixedAddressConnPort0;
EC_T_WORD wFixedAddressConnPort1;
EC_T_WORD wFixedAddressConnPort2;
EC_T_WORD wFixedAddressConnPort3;
EC_T_DWORD dwCRCErrorCounterPort0;
EC_T_DWORD dwCRCErrorCounterPort1;
EC_T_DWORD dwCRCErrorCounterPort2;
EC_T_DWORD dwCRCErrorCounterPort3;
EC_T_DWORD dwCyclicWCErrorCounter;
EC_T_DWORD dwSlaveNotPresentCounter;
EC_T_DWORD dwAbnormalStateCounter;
EC_T_BYTE bDisableAutomaticLinkControl;
} EC_PACKED(1) EC_T_OBJAXXX;