EtherCAT State Machine
The EtherCAT State Machine (ESM) is required on all EtherCAT devices. The ESM in general
- defines 5 communication states of the slave device
- Init, Pre-Operational, Safe-Operational, Operational
- Bootstrap is an optional state for firmware upload
- specifies initialization and error handling of the slave device
- identifies the current communication relationship between the master and slave device
- requested and current state are accessed through the AL Control and AL Status registers
The ESM states can be transitioned as shown
Init State
- No communication to the application layer is allowed
- master only has communication to the data link registers (slave device eeprom, addressing, etc)
Pre-Operational State
- Mailbox (SDO) communication to the application layer is available
- No Process Data (PDO) communication.
- PDO register mapping should be completed. Transition to Safe-Operation will configure mapping.
Safe-Operational State
- Mailbox (SDO) communication to the application layer is available
- Slave output (tx) Process Data (PDO) communication is evaluated
Operational State
- All communication is commenced and valid
Bootstrap State
- The bootstrap state is used when updating EtherCAT firmware.
Explicit Device ID
General Description
The use of EtherCAT Device identification is to identify an EtherCAT slave explicitly. This is necessary for the following use cases:
- Hot Connect applications
Within some applications it might be useful to connect or disconnect parts of the network. In this case the master must have the possibility to identify which part of the network is available. - Prevention against cable swapping
If at least two identical devices are used in one application it might be necessary to prevent the mix-up of these devices by cable swapping. Example Scenario: Within a machining center there might be two identical drives to work in X and Y direction. To avoid that the drives receive wrong process data, for example after a device replacement, an explicit identification of the devices can be used.
The Device Identification value can be used optionally for unique addressing.
Rotary Selectors
The CM1-E uses 2 rotary selectors on the side of the motor to set the ID. These use hexadecimal values to set the range from 0-255. The values are set as follows
x10 | x1 | |
---|---|---|
Description | Most significant 4 bits | Least significant 4 bits |
Example value | Bh | 5h |
Combined value | B5h (181d) |
ID Range Usage
The following ID range is permissible
ID | Usage |
---|---|
0x00 (0) | No ID is set and Explicit Device ID is not used |
0x01-0xFE (1-254) | Explicit Device ID has been set |
0xFF (255) | Reserved
|
Configured Station Alias
For backwards compatibility with certain master controllers the Configured Station Alias Register 0x0012 may be used. The following conditions exist:
Explicit Device ID Value | Configured Station Alias Value | Usage |
---|---|---|
0 | 0 | No identification used or expected |
>0 | 0 | Explicit Device ID is used |
0 | >0 | Configured Station Alias is used |
>0 | >0 | Internal error generated |
PDO Timing
The CM1-E slave will accept a number of PDO rates. The rate is auto-detected and no additional setup is required on the slave.
Accepted rates are
- 1000μs (1ms)
- 500μs
- 250μs
- 200μs
The detected rate can be read in object 0xFE00:1.
PDO Mappings
The Cool Muscle EtherCAT slave has a few static PDO mapping options. It does not use dynamic mapping.
- The RxPDO is the PDO received by the motor/slave device
- The TxPDO is the PDO transmitted by the motor/slave device
Position units are in encoder counts (pulses). There are 50,000 encoder counts per revolution.
The following mappings are available.
Dynamic Switching of mode
This mapping is useful as a generic mapping. The master can run in any of the available modes as well as switch dynamically between them. The PDO also offers a lot of feedback information for diagnostics.
RxPDO - 0x1600
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6040 | Controlword | - | UINT16 | All | The Controlword is used to control the state of the mode of operation. |
0x60FE | Digital outputs | - | UINT16 | All | Set the state of the digital outputs |
0x607A | Target position | units | INT32 | CSP, PP | Set the target position of the motor |
0x60FF | Target speed | units/ms units/s | INT32 | CSV PV | Set the target speed of the motor. Note PV mode and CSV mode have different units. |
0x6060 | Modes of operation | - | INT8 | All | Set the required mode of operation |
TxPDO - 0x1A00
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6041 | Statusword | - | UINT16 | All | The Statusword describes the current state of the mode of operation. |
0x603F | Error Code | - | UINT16 | All | The actual error code currently active. |
0x6064 | Position Actual Value | units | INT32 | All | The value of the motor's actual position |
0x606C | Speed Actual Value | units/ms | INT32 | All | The value of the motor's actual speed |
0x6077 | Torque Actual Value | 0.1% rated torque | INT16 | All | The value of the motor's actual peak torque |
0x60FD | Digital Inputs | - | UINT16 | All | Digital inputs status |
0x2301 | Temperature | °c | INT16 | All | The actual motor temperature in °c. |
0x6079 | DC Voltage | 0.1VDC | INT16 | All | The actual DC 24V DC bus voltage |
0x6061 | Modes of operation display | - | INT8 | All | The mode of operation currently running. |
CSP Mode
This mapping is useful when a minimum amount of data wants to be transferred using CSP mode.
RxPDO - 0x1601
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6040 | Controlword | - | UINT16 | All | The Controlword is used to control the state of the mode of operation. |
0x60FE | Digital outputs | - | UINT16 | All | Set the state of the digital outputs |
0x607A | Target position | units | INT32 | CSP, PP | Set the target position of the motor |
TxPDO - 0x1A01
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6041 | Statusword | - | UINT16 | All | The Statusword describes the current state of the mode of operation. |
0x603F | Error Code | - | UINT16 | All | The actual error code currently active. |
0x6064 | Position Actual Value | units | INT32 | All | The value of the motor's actual position |
0x6077 | Torque Actual Value | 0.1% rated torque | INT16 | All | The value of the motor's actual peak torque |
0x606C | Speed Actual Value | units/ms | INT32 | All | The value of the motor's actual speed |
0x60FD | Digital Inputs | - | UINT16 | All | Digital inputs status |
CSV Mode
This mapping is useful when a minimum amount of data wants to be transferred using CSP mode.
RxPDO - 0x1602
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6040 | Controlword | - | UINT16 | All | The Controlword is used to control the state of the mode of operation. |
0x60FE | Digital outputs | - | UINT16 | All | Set the state of the digital outputs |
0x60FF | Target speed | units/ms | INT32 | CSV | Set the target speed of the motor. Note PV mode and CSV mode have different units. |
TxPDO - 0x1A02
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6041 | Statusword | - | UINT16 | All | The Statusword describes the current state of the mode of operation. |
0x603F | Error Code | - | UINT16 | All | The actual error code currently active. |
0x6064 | Position Actual Value | units | INT32 | All | The value of the motor's actual position |
0x6077 | Torque Actual Value | 0.1% rated torque | INT16 | All | The value of the motor's actual peak torque |
0x606C | Speed Actual Value | units/ms | INT32 | All | The value of the motor's actual speed |
0x60FD | Digital Inputs | - | UINT16 | All | Digital inputs status |
Profile Mode
This mapping is useful when profile position or profile velocity mode is used.
RxPDO - 0x1603
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6040 | Controlword | - | UINT16 | All | The Controlword is used to control the state of the mode of operation. |
0x60FE | Digital outputs | - | UINT16 | All | Set the state of the digital outputs |
0x607A | Target position | units | INT32 | CSP, PP | Set the target position of the motor |
0x60FF | Target speed | units/ms units/s | INT32 | CSV PV | Set the target speed of the motor. Note PV mode and CSV mode have different units. |
0x6081 | Profile velocity | - | UINT32 | PP | Set the required mode of operation |
0x6083 | Profile acceleration | UINT32 | PP, PV |
TxPDO - 0x1A03
Object | Name | Units | Data Type | Applicable Modes of Operation | Description |
---|---|---|---|---|---|
0x6041 | Statusword | - | UINT16 | All | The Statusword describes the current state of the mode of operation. |
0x603F | Error Code | - | UINT16 | All | The actual error code currently active. |
0x6064 | Position Actual Value | units | INT32 | All | The value of the motor's actual position |
0x606C | Speed Actual Value | units/ms | INT32 | All | The value of the motor's actual speed |
0x6077 | Torque Actual Value | 0.1% rated torque | INT16 | All | The value of the motor's actual peak torque |
0x60FD | Digital Inputs | - | UINT16 | All | Digital inputs status |
0x2301 | Temperature | °c | INT16 | All | The actual motor temperature in °c. |
0x6079 | DC Voltage | 0.1VDC | INT16 | All | The actual DC 24V DC bus voltage |