EtherCAT cable redundancy

Cable redundancy employs a ring topology that avoids communication failure when a cable is broken or unplugged. Each EtherCAT slave is connected to two others. The EtherCAT master (computer) has two Network Interface Cards (NICs) to connect to the first and the last slave, respectively. If a cable between any two of devices is broken, the packets can be transmitted through the other way.

NOTE:  To enable EtherCAT cable redundancy, the Cable Redundancy Package is required. In addition, the EtherCAT master (computer) needs two Network Interface Cards (NICs) or one multiple-port NIC in order to connect the master and slave devices in a loop. For primary/secondary NIC setup, please refer to the instruction steps in Cable Redundancy > With Cable Redundancy in Network Interface Cards.

Packets transmission

The EtherCAT packets are transmitted differently with or without redundancy.

With redundancy: when devices are connected in a loop, packets are transmitted from both Network Interface Cards (NICs) of the master, but only one NIC is effective. The primary NIC is the port that connects the master and first slave. The packet (Packet 1) sent from the primary NIC of the master goes through the EtherCAT Processing Unit (EPU), which is the logic core of an ESC (EtherCAT Slave Controller) inside the slave device. The EPU receives, analyzes, and processes EtherCAT data stream, and then it carries the data from the slaves and returns to the secondary NIC of the master. The packet (Packet 2) sent from the secondary NIC of the master doesn't go through the EPUs and receives no data from the slaves. It is just being forwarded through slaves. When Packet 2 returns to the primary NIC of the master, it is empty.

Without redundancy: when devices are not connected in a loop, packets are transmitted from the primary NIC of the master.

How redundancy works with a broken cable

The following cases describe how redundancy works with a broken cable.

Case 1: cable broken between two slaves

When a cable is broken between two slaves, the ports next to the broken cable will close automatically (Auto Close mode). The packets that travel to the broken cable won't proceed. They carry the existing data and return to where they come from. The slaves can get the packets from the master through the primary or secondary NIC and continue working properly. The slaves connected to the broken cable will switch the port to the Loopback mode after they detect that the cable is broken. These slaves may trigger an alarm or error when they detect this. The behavior depends on slave manufacturers.

Case 2: cable broken between the master and a slave

When a cable is broken between the master and a slave, the ports next to the broken cable will close automatically (Auto Close mode). The packets will be transmitted from the other NIC of the master and be processed by EPUs.

Case 3: cable broken behind a coupler

If you have slaves connected to a coupler or junction such as EK1122, these slaves are not in the redundancy ring — redundancy doesn't work for the hardware behind the coupler. If a cable breaks in that section, the slaves behind the broken cable will be offline.

What will happen if slaves don't detect a cable is broken immediately?

If the cable between two slaves are broken, the slave that has the broken cable tries to send packets but the packets will be lost. The master will say the packets are lost, and the packets sent from the secondary NIC of the master still won't be processed by EPUs. To other slaves, it is like they never received the packets. If this problem persists longer than 5 milliseconds, these slaves may trigger alarms.

If the cable between the master and a slave is broken, slaves won't receive the packets sent from the master. If this problem persists longer than 5 milliseconds, all the slaves may trigger alarms.

See also

RT and Win32 – KINGSTAR Fieldbus - Subsystem configuration

EnableRedundancy

.NET API – Api Class - Subsystem configuration

Api.EnableRedundancy

.NET Class – ISubsystem Interface - Properties

ISubsystem.Redundancy