Changing Network Sample Rate

How do I change the EtherCAT network sample rate? I tried just using controller->SampleRateSet(500) but it looks like I also need to recreate the ENI file? I do not see any options related to sample rate in rsiconfig so I’m not sure how to achieve this.

2025-06-19 11:01:18.613 (  18.798s) [main thread     ]   RapidCodeWrapper.cpp:171    ERR| Network message 121: (i) 00:00:01.170   EtherCAT   RMPNetworkFirmware.cpp:833  EtherCAT starting with cycle period=0.002000 [sec]
2025-06-19 11:01:18.613 (  18.798s) [main thread     ]   RapidCodeWrapper.cpp:171    ERR| Network message 122: (i) 00:00:01.170   EtherCAT             EtherCAT.cpp:251  EtherCAT Configuration file Cycle Time set to 1000 microseconds
2025-06-19 11:01:18.613 (  18.798s) [main thread     ]   RapidCodeWrapper.cpp:171    ERR| Network message 123: /!\ 00:00:01.384   EtherCAT             EtherCAT.cpp:769  State changed from Initialisation to Stopped

Hi @edco,

You want to create an ENI file with the new sample rate.

Fresh system without a network running.
Use SampleRateSet
Discover the Network.
Generate a new ENI file.
Start the network.

I believe RapidENI will generate an ENI file at the controller’s current sample rate.

1 Like

The RMP sample rate is in the rsiconfig generated settings.xml, you can see it here:

Quick question here. Is there any way to loosen the timing requirements that nodes are expecting of the ethercat network to improve network stability?

Hi @rickys,

It is node dependent as they are ultimately going to determine when to signal errors. You want to look for Sync Manager watchdogs or SM Error counters within the associated Node manual.

For an AKD2G for example, you should be able to read the current SM event missed at 0x1C32 Sub 11 Size 2 bytes. I believe you can configure the limit the Sync error counter limit at 0x10F1 Sub 2 Size 16. I haven’t done a lot of experimenting with the AKDs are they are generally less likely than other drives to error out.

Please let me know if you want follow up or more investigation of a specific drive.

So I generated a settings.xml file from my existing setting, edited the SampleRate parameter from 1000hz to 250hz and then ran ./rsiconfig settings.xml -eni --cpu-affinity 5 --primary-nic enP8p1s0 . The eni file generated successfully but it is identical to my previous eni file.

I then tried to initialize rmp and got the following output

# ./rsiconfig settings.xml --cpu-affinity 5 --primary-nic enP8p1s0 --verbose
Settings file: settings.xml
Probing network...
Discovered 10 nodes.
Node 0:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 1:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 2:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 3:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 4:  RSINodeTypeBECKHOFF_EK1100
Node 5:  VendorId:(0x00000002) ProductCode:(0x0AE43052) RSINodeTypeUNKNOWN
Node 6:  RSINodeTypeBECKHOFF_EK1310
Node 7:  VendorId:(0x00000002) ProductCode:(0x05142C52) RSINodeTypeUNKNOWN
Node 8:  VendorId:(0x00000002) ProductCode:(0x09693052) RSINodeTypeUNKNOWN
Node 9:  VendorId:(0x00000002) ProductCode:(0x05813052) RSINodeTypeUNKNOWN
Expected 10 nodes and found 10 nodes.
Node 0 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 1 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 2 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 3 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 4 Expected RSINodeTypeBECKHOFF_EK1100 and found RSINodeTypeBECKHOFF_EK1100
Node 5 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Node 6 Expected RSINodeTypeBECKHOFF_EK1310 and found RSINodeTypeBECKHOFF_EK1310
Node 7 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Node 8 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Node 9 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Starting network...
Network start exception:  Timed out waiting for network to start. (Error 1000000022) (MotionController::NetworkStart) (Object 0) (File motioncontroller.cpp) (Line 1758) (Version 10.6.8.0)
Network start error: RSINetworkStartErrorNETWORK_START_OK
EtherCAT network state must be operational, but yours is RSINetworkStateSTARTING.


Settings not set!

I then tried 500hz and got:

# ./rsiconfig settings.xml --cpu-affinity 5 --primary-nic enP8p1s0 --verbose
Settings file: settings.xml
Probing network...
Discovered 10 nodes.
Node 0:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 1:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 2:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 3:  RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 4:  RSINodeTypeBECKHOFF_EK1100
Node 5:  VendorId:(0x00000002) ProductCode:(0x0AE43052) RSINodeTypeUNKNOWN
Node 6:  RSINodeTypeBECKHOFF_EK1310
Node 7:  VendorId:(0x00000002) ProductCode:(0x05142C52) RSINodeTypeUNKNOWN
Node 8:  VendorId:(0x00000002) ProductCode:(0x09693052) RSINodeTypeUNKNOWN
Node 9:  VendorId:(0x00000002) ProductCode:(0x05813052) RSINodeTypeUNKNOWN
Expected 10 nodes and found 10 nodes.
Node 0 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 1 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 2 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 3 Expected RSINodeTypeKOLLMORGEN_AKD2G_2AXIS and found RSINodeTypeKOLLMORGEN_AKD2G_2AXIS
Node 4 Expected RSINodeTypeBECKHOFF_EK1100 and found RSINodeTypeBECKHOFF_EK1100
Node 5 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Node 6 Expected RSINodeTypeBECKHOFF_EK1310 and found RSINodeTypeBECKHOFF_EK1310
Node 7 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Node 8 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Node 9 Expected RSINodeTypeUNKNOWN and found RSINodeTypeUNKNOWN
Starting network...
(i) 00:00:00.000   EtherCAT   RMPNetworkFirmware.cpp:810  Attempting to start in OPERATIONAL state.
(i) 00:00:00.000   EtherCAT             EtherCAT.cpp:416  Opening EC driver in Normal mode
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 1 Bits: 16 Offset: 208 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 1 Bits: 32 Offset: 224 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 1 Bits: 32 Offset: 256 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 1 Bits: 32 Offset: 288 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 2 Bits: 32 Offset: 320 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 1 Bits: 16 Offset: 352 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 2 Bits: 16 Offset: 368 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Error Code Bits: 16 Offset: 384 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 2 Bits: 16 Offset: 400 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 2 Bits: 32 Offset: 416 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 0 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 2 Bits: 32 Offset: 448 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 1 Bits: 16 Offset: 480 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 1 Bits: 32 Offset: 496 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 1 Bits: 32 Offset: 528 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 1 Bits: 32 Offset: 560 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 2 Bits: 32 Offset: 592 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 1 Bits: 16 Offset: 624 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 2 Bits: 16 Offset: 640 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Error Code Bits: 16 Offset: 656 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 2 Bits: 16 Offset: 672 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 2 Bits: 32 Offset: 688 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 1 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 2 Bits: 32 Offset: 720 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 1 Bits: 16 Offset: 752 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 1 Bits: 32 Offset: 768 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 1 Bits: 32 Offset: 800 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 1 Bits: 32 Offset: 832 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 2 Bits: 32 Offset: 864 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 1 Bits: 16 Offset: 896 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 2 Bits: 16 Offset: 912 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Error Code Bits: 16 Offset: 928 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 2 Bits: 16 Offset: 944 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 2 Bits: 32 Offset: 960 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 2 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 2 Bits: 32 Offset: 992 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 1 Bits: 16 Offset: 1024 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 1 Bits: 32 Offset: 1040 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 1 Bits: 32 Offset: 1072 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 1 Bits: 32 Offset: 1104 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Velocity actual value - Axis 2 Bits: 32 Offset: 1136 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 1 Bits: 16 Offset: 1168 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Torque actual value - Axis 2 Bits: 16 Offset: 1184 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Error Code Bits: 16 Offset: 1200 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Statusword - Axis 2 Bits: 16 Offset: 1216 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Position actual value - Axis 2 Bits: 32 Offset: 1232 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Drive 3 (Kollmorgen AKD2G SIL2).Inputs.Following error actual value - Axis 2 Bits: 32 Offset: 1264 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 6 (Beckhoff - EK1310).Status Us.Undervoltage Bits: 1 Offset: 1496 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 6 (Beckhoff - EK1310).Status Up.Undervoltage Bits: 1 Offset: 1497 VarBitOffs: 1
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 7 (Beckhoff - EK1300).Status Us.Undervoltage Bits: 1 Offset: 1498 VarBitOffs: 2
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 7 (Beckhoff - EK1300).Status Up.Undervoltage Bits: 1 Offset: 1499 VarBitOffs: 3
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 1 Bits: 1 Offset: 1712 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 2 Bits: 1 Offset: 1713 VarBitOffs: 1
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 3 Bits: 1 Offset: 1714 VarBitOffs: 2
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 4 Bits: 1 Offset: 1715 VarBitOffs: 3
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 5 Bits: 1 Offset: 1716 VarBitOffs: 4
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 6 Bits: 1 Offset: 1717 VarBitOffs: 5
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 7 Bits: 1 Offset: 1718 VarBitOffs: 6
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 8 Bits: 1 Offset: 1719 VarBitOffs: 7
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 9 Bits: 1 Offset: 1720 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 10 Bits: 1 Offset: 1721 VarBitOffs: 1
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 11 Bits: 1 Offset: 1722 VarBitOffs: 2
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 12 Bits: 1 Offset: 1723 VarBitOffs: 3
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 13 Bits: 1 Offset: 1724 VarBitOffs: 4
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 14 Bits: 1 Offset: 1725 VarBitOffs: 5
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 15 Bits: 1 Offset: 1726 VarBitOffs: 6
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2072 InputName: Term 9 (Beckhoff - EL1409).DIP Inputs.Input Channel 16 Bits: 1 Offset: 1727 VarBitOffs: 7
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 0 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 1 Bits: 16 Offset: 208 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 0 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 1 Bits: 32 Offset: 224 VarBitOffs: 0
(i) 00:00:00.010   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 0 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 2 Bits: 16 Offset: 256 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 0 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 2 Bits: 32 Offset: 272 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 1 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 1 Bits: 16 Offset: 480 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 1 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 1 Bits: 32 Offset: 496 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 1 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 2 Bits: 16 Offset: 528 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 1 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 2 Bits: 32 Offset: 544 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 2 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 1 Bits: 16 Offset: 752 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 2 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 1 Bits: 32 Offset: 768 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 2 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 2 Bits: 16 Offset: 800 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 2 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 2 Bits: 32 Offset: 816 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 3 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 1 Bits: 16 Offset: 1024 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 3 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 1 Bits: 32 Offset: 1040 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 3 (Kollmorgen AKD2G SIL2).Outputs.Controlword - Axis 2 Bits: 16 Offset: 1072 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Drive 3 (Kollmorgen AKD2G SIL2).Outputs.Target position - Axis 2 Bits: 32 Offset: 1088 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 1.Output Bits: 1 Offset: 1392 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 2.Output Bits: 1 Offset: 1393 VarBitOffs: 1
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 3.Output Bits: 1 Offset: 1394 VarBitOffs: 2
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 4.Output Bits: 1 Offset: 1395 VarBitOffs: 3
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 5.Output Bits: 1 Offset: 1396 VarBitOffs: 4
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 6.Output Bits: 1 Offset: 1397 VarBitOffs: 5
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 7.Output Bits: 1 Offset: 1398 VarBitOffs: 6
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 5 (Beckhoff - EL2788).Channel 8.Output Bits: 1 Offset: 1399 VarBitOffs: 7
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 1.Output Bits: 1 Offset: 1600 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 2.Output Bits: 1 Offset: 1601 VarBitOffs: 1
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 3.Output Bits: 1 Offset: 1602 VarBitOffs: 2
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 4.Output Bits: 1 Offset: 1603 VarBitOffs: 3
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 5.Output Bits: 1 Offset: 1604 VarBitOffs: 4
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 6.Output Bits: 1 Offset: 1605 VarBitOffs: 5
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 7.Output Bits: 1 Offset: 1606 VarBitOffs: 6
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 8.Output Bits: 1 Offset: 1607 VarBitOffs: 7
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 9.Output Bits: 1 Offset: 1608 VarBitOffs: 0
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 10.Output Bits: 1 Offset: 1609 VarBitOffs: 1
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 11.Output Bits: 1 Offset: 1610 VarBitOffs: 2
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 12.Output Bits: 1 Offset: 1611 VarBitOffs: 3
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 13.Output Bits: 1 Offset: 1612 VarBitOffs: 4
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 14.Output Bits: 1 Offset: 1613 VarBitOffs: 5
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 15.Output Bits: 1 Offset: 1614 VarBitOffs: 6
(i) 00:00:00.011   EtherCAT EtherCATConfigParser.cpp:2206 OutputName: Term 8 (Beckhoff - EL2409).Channel 16.Output Bits: 1 Offset: 1615 VarBitOffs: 7
(i) 00:00:00.011   EtherCAT       EthernetSwitch.cpp:78   CEthernetSwitch created with maxPorts(5) maxFrames(180) maxMacs(100)
(i) 00:00:00.035   EtherCAT   RMPNetworkFirmware.cpp:833  EtherCAT starting with cycle period=0.002000 [sec]
(i) 00:00:00.035   EtherCAT             EtherCAT.cpp:251  EtherCAT Configuration file Cycle Time set to 1000 microseconds
/!\ 00:00:00.261   EtherCAT             EtherCAT.cpp:769  State changed from Initialisation to Stopped
(i) 00:00:00.265   EtherCAT   RMPNetworkFirmware.cpp:654  FSoE file /rsi/Safety.xml not found. Continuing without FSoE.
(i) 00:00:00.265   EtherCAT   RMPNetworkFirmware.cpp:526  Found 64 inputs.
(i) 00:00:00.265   EtherCAT   RMPNetworkFirmware.cpp:557  Found 40 outputs.
/!\ 00:00:00.512   EtherCAT             EtherCAT.cpp:622  Entering Starting state, mode: Normal
(i) 00:00:00.513   EtherCAT             EtherCAT.cpp:863  EtherCAT starting with cycle period=1000 [usec]
(i) 00:00:00.513   EtherCAT             EtherCAT.cpp:906  drive index:0, address: 0x0
(i) 00:00:00.513   EtherCAT             EtherCAT.cpp:906  drive index:1, address: 0x1
(i) 00:00:00.515   EtherCAT             EtherCAT.cpp:906  drive index:2, address: 0x2
(i) 00:00:00.517   EtherCAT             EtherCAT.cpp:906  drive index:3, address: 0x3
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:73   Drive 0 (Kollmorgen AKD2G SIL2) DC support: 32-bit only
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:73   Drive 1 (Kollmorgen AKD2G SIL2) DC support: 32-bit only
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:73   Drive 2 (Kollmorgen AKD2G SIL2) DC support: 32-bit only
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:73   Drive 3 (Kollmorgen AKD2G SIL2) DC support: 32-bit only
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:71   Term 4 (Beckhoff - EK1100) DC support: 32-bit and 64-bit
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:71   Term 5 (Beckhoff - EL2788) DC support: 32-bit and 64-bit
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:71   Term 6 (Beckhoff - EK1310) DC support: 32-bit and 64-bit
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:71   Term 7 (Beckhoff - EK1300) DC support: 32-bit and 64-bit
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:71   Term 8 (Beckhoff - EL2409) DC support: 32-bit and 64-bit
(i) 00:00:00.575   EtherCAT            EcDcSlave.cpp:71   Term 9 (Beckhoff - EL1409) DC support: 32-bit and 64-bit
(i) 00:00:00.743   EtherCAT           EcDcMaster.cpp:666  Reference Clock: 1001
(i) 00:00:08.709   EtherCAT           EcDcMaster.cpp:1065 Master is Synchronized with DC
(i) 00:00:08.931   EtherCAT              EcSlave.cpp:370  startTime64(7615884083), systemTimeAtLatchA(3637471899), m_pMaster->m_SystemTime(3240416787), delta (80500000)
(i) 00:00:08.933   EtherCAT              EcSlave.cpp:370  startTime64(7617926963), systemTimeAtLatchA(3637471899), m_pMaster->m_SystemTime(3242459667), delta (80500000)
(i) 00:00:08.935   EtherCAT              EcSlave.cpp:370  startTime64(7619965764), systemTimeAtLatchA(3637471899), m_pMaster->m_SystemTime(3244498468), delta (80500000)
(i) 00:00:08.937   EtherCAT              EcSlave.cpp:370  startTime64(7622005603), systemTimeAtLatchA(3637471899), m_pMaster->m_SystemTime(3246538307), delta (80500000)
/!\ 00:00:10.171   EtherCAT           EcDcMaster.cpp:914  1 working counter failure. WC = 8, expected 12. cmd=Logical Read/Write (LRW)
/!\ 00:00:10.172   EtherCAT           EcDcMaster.cpp:914  2 working counter failure. WC = 6, expected 12. cmd=Logical Read/Write (LRW)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Drive 0 (Kollmorgen AKD2G SIL2): AL Status (0x14), Code (0x32)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Drive 1 (Kollmorgen AKD2G SIL2): AL Status (0x14), Code (0x32)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Drive 2 (Kollmorgen AKD2G SIL2): AL Status (0x8), Code (0x0)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Drive 3 (Kollmorgen AKD2G SIL2): AL Status (0x14), Code (0x32)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Term 4 (Beckhoff - EK1100): AL Status (0x8), Code (0x0)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Term 5 (Beckhoff - EL2788): AL Status (0x8), Code (0x0)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Term 6 (Beckhoff - EK1310): AL Status (0x8), Code (0x0)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Term 7 (Beckhoff - EK1300): AL Status (0x8), Code (0x0)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Term 8 (Beckhoff - EL2409): AL Status (0x8), Code (0x0)
(i) 00:00:10.172   EtherCAT              EcSlave.cpp:545  Term 9 (Beckhoff - EL1409): AL Status (0x8), Code (0x0)
/!\ 00:00:10.173   EtherCAT           EcDcMaster.cpp:914  3 working counter failure. WC = 4, expected 12. cmd=Logical Read/Write (LRW)
(X) 00:00:10.173   EtherCAT           EcDcMaster.cpp:937  Abnormal response of slaves to cyclic commands. Please, check number and state of slaves.
(i) 00:00:10.174   EtherCAT              EcSlave.cpp:545  Drive 2 (Kollmorgen AKD2G SIL2): AL Status (0x14), Code (0x32)
(X) 00:00:10.519   EtherCAT             EtherCAT.cpp:939  Error signaled by master while starting driver

/!\ 00:00:11.519   EtherCAT             EtherCAT.cpp:769  State changed from Starting to StoppingOnError
(X) 00:00:11.520   EtherCAT          LinuxDevice.cpp:178  No frames received after 1000 milliseconds! Stopping reception of packets.
/!\ 00:00:12.769   EtherCAT             EtherCAT.cpp:769  State changed from StoppingOnError to Error
Network start error: RSINetworkStartErrorETHERCAT_MASTER_STARTUP_ERROR
EtherCAT network state must be operational, but yours is RSINetworkStateSHUTDOWN.


Settings not set!

To me it looks like I do need to make a change to the eni file but rsiconfig is not doing it for me. Am I missing a step or is there a way for me to edit the EtherCAT.xml file manually?

Hi @edco,

It is important that the SampleRate of the MotionController is set to value you want to run an ENI at. We pass that as a parameter to our ENI generation process so it can makes the appropriate changes.

You can use Settings.xml to do this by editing the xml, loading the file (which changes the SampleRate), then generating an ENI file.

@jacob I see. I had an easier time using the GUI and managed to figure it out.

How do I use rsiconfig and the modified Settings.xml file to start the controller but not the network?

Hi @edco,

rsiConfig -nonetwork Settings.xml

If your settings file is Settings.xml

Looks like I’m now seeing an unintended side effect, our axes are now overshooting their commanded positions more. This does make sense intuitively. Is there anything we can do about this other than reduce accelerations?

Hi @edco,

Are you hitting near the potential of the drives? Reducing the profile for something more consistently achievable would help in that case. What percentage of rated/peak torque are you hitting?

This axis is reaching our 20mm position error limit with less than 90% rated torque used. Before reducing sample rate from 1000hz to 250hz, with the same velocity and acceleration, this axis would peak at ~7-8mm position error. This increase in position error is happening to all of our axes, not just the one.

Hey @edco,

The nose plate motor looks like it was aborted or starved of frames. Going from increasing negative velocity to zero in an instant. Do you have any captures of it sample to sample rather than seconds?

I would expect less error unless the jitter is an issue. The quarter cycle size makes any disrupts more impactful.