FoE

What is FoE?

FoE (File Over EtherCAT) - This simple protocol similar to TFTP (Trivial File Transfer Protocol) enables file access in a device and a uniform firmware upload to devices across an EtherCAT network. The protocol has been deliberately specified in a lean manner, so that it can be supported by boot loader programs – a TCP/IP stack isn’t required.

Why use FoE?

This feature allows your device to receive a new firmware in order to update itself. You no longer need to send a tech out into the field with a special service cable to move to new firmware revisions.

How to Perform FoE?

  1. Use RapidSetup to Generate an ENI file. Make note of the node number you wish to update. 0 Ordinate. You will use this later. In our example below, we are using the 4th Node (Node # 3). The Network should be Uninitialized or Shutdown (Not Operational) for the next steps.

  2. Place your firmware file in the RapidCode Folder (Typically C:\RSI\#.#.#\ where #s represent the version number.) In our example we are downloading EL3064-0000-FW09-FW.efw though we remove the .efw as an extension.

For Beckhoff: remove any file extension such as .efw if they exist. For Mitsubish: Keep .bin file extension.

  1. Locate and Run Ldrta.exe in your INtime folder. (Typically C:\Program Files (x86)\INtime\bin\)

  2. Browse to your RapidCode Folder and Select RMPNetwork.rta (Typically C:\RSI\#.#.#\ where #s represent the version number.)

  3. Enter >>> -f # firmwareFileName <<< in Arguments

    1. -f (Indicates File Download)

    2. # The Node number of the node to update. Determined by Step 1 above.

    3. The firmware file name such as (EL3064-0000-FW09-FW).

    4. Spaces between a,b,c. See the image below.

  4. Select Open. You should see something like the example output below.

EXAMPLE OUTPUT

RMPNetwork: (i) 00:10:34.062   EtherCAT    RMPNetworkStarter.cpp:82   Starting RMPNetwork firmware
RMPNetwork: (i) 00:10:34.067   EtherCAT   RMPNetworkFirmware.cpp:207  Network offset 0xd167ec
RMPNetwork: (i) 00:10:34.067   EtherCAT   RMPNetworkFirmware.cpp:213  pNetwork address: 0x23168ac
RMPNetwork: (i) 00:10:34.067   EtherCAT   RMPNetworkFirmware.cpp:214  RMP signature = 0xdeadbeef
RMPNetwork: (i) 00:10:34.067   EtherCAT   RMPNetworkFirmware.cpp:215  RMP partial serial number: 
RMPNetwork: (i) 00:10:34.076   EtherCAT   RMPNetworkFirmware.cpp:1350 Attempting to discover the number of EtherCAT nodes on the network...
RMPNetwork: (i) 00:10:34.679   EtherCAT         INtimeDevice.cpp:492  hpeOpen-Probe ie1g0 found
RMPNetwork: (i) 00:10:39.305   EtherCAT         INtimeDevice.cpp:536  MAC address:
RMPNetwork: (i) 00:10:39.305   EtherCAT         INtimeDevice.cpp:547  Allocate and attach the receive buffers
RMPNetwork: (i) 00:10:40.555   EtherCAT         INtimeDevice.cpp:597  Checking Ethernet PHY media status for nodes...
RMPNetwork: (i) 00:10:40.555   EtherCAT         INtimeDevice.cpp:614  Interface is connected at 100Mbps
RMPNetwork: (i) 00:10:40.555   EtherCAT   RMPNetworkFirmware.cpp:1367 Discovery device opened ok, now detecting how many nodes on the network...
RMPNetwork: (i) 00:10:40.555   EtherCAT   RMPNetworkFirmware.cpp:1377 Calling DiscoveryInit()...
RMPNetwork: (i) 00:10:40.570   EtherCAT   RMPNetworkFirmware.cpp:1379 Discovery Node Count is 4
RMPNetwork: (i) 00:10:40.651   EtherCAT   RMPNetworkFirmware.cpp:1434 Node 0
RMPNetwork: (i) 00:10:40.651   EtherCAT   RMPNetworkFirmware.cpp:1435   VendorID     = 0x2
RMPNetwork: (i) 00:10:40.651   EtherCAT   RMPNetworkFirmware.cpp:1436   ProductCode  = 0x44d2c52
RMPNetwork: (i) 00:10:40.651   EtherCAT   RMPNetworkFirmware.cpp:1437   Revision     = 1114112
RMPNetwork: (i) 00:10:40.651   EtherCAT   RMPNetworkFirmware.cpp:1438   SerialNumber = 0
RMPNetwork: (i) 00:10:40.651   EtherCAT   RMPNetworkFirmware.cpp:1439   StationAlias = 0
RMPNetwork: (i) 00:10:40.734   EtherCAT   RMPNetworkFirmware.cpp:1434 Node 1
RMPNetwork: (i) 00:10:40.734   EtherCAT   RMPNetworkFirmware.cpp:1435   VendorID     = 0x2
RMPNetwork: (i) 00:10:40.734   EtherCAT   RMPNetworkFirmware.cpp:1436   ProductCode  = 0x7d83052
RMPNetwork: (i) 00:10:40.734   EtherCAT   RMPNetworkFirmware.cpp:1437   Revision     = 1179648
RMPNetwork: (i) 00:10:40.734   EtherCAT   RMPNetworkFirmware.cpp:1438   SerialNumber = 0
RMPNetwork: (i) 00:10:40.734   EtherCAT   RMPNetworkFirmware.cpp:1439   StationAlias = 0
RMPNetwork: (i) 00:10:40.816   EtherCAT   RMPNetworkFirmware.cpp:1434 Node 2
RMPNetwork: (i) 00:10:40.816   EtherCAT   RMPNetworkFirmware.cpp:1435   VendorID     = 0x2
RMPNetwork: (i) 00:10:40.816   EtherCAT   RMPNetworkFirmware.cpp:1436   ProductCode  = 0x3f03052
RMPNetwork: (i) 00:10:40.816   EtherCAT   RMPNetworkFirmware.cpp:1437   Revision     = 1179648
RMPNetwork: (i) 00:10:40.816   EtherCAT   RMPNetworkFirmware.cpp:1438   SerialNumber = 0
RMPNetwork: (i) 00:10:40.816   EtherCAT   RMPNetworkFirmware.cpp:1439   StationAlias = 0
RMPNetwork: (i) 00:10:40.897   EtherCAT   RMPNetworkFirmware.cpp:1434 Node 3
RMPNetwork: (i) 00:10:40.897   EtherCAT   RMPNetworkFirmware.cpp:1435   VendorID     = 0x2
RMPNetwork: (i) 00:10:40.897   EtherCAT   RMPNetworkFirmware.cpp:1436   ProductCode  = 0xbf83052
RMPNetwork: (i) 00:10:40.897   EtherCAT   RMPNetworkFirmware.cpp:1437   Revision     = 1310720
RMPNetwork: (i) 00:10:40.897   EtherCAT   RMPNetworkFirmware.cpp:1438   SerialNumber = 0
RMPNetwork: (i) 00:10:40.897   EtherCAT   RMPNetworkFirmware.cpp:1439   StationAlias = 0
RMPNetwork: (i) 00:10:40.958   EtherCAT   RMPNetworkFirmware.cpp:1190 Attempting to start in Bootstrap state.
RMPNetwork: (i) 00:10:40.958   EtherCAT             EthCatDr.cpp:396  Opening EC driver in Bootstrap mode
RMPNetwork: (i) 00:10:40.958 Controller      MKBusBaseDriver.cpp:67   Attaching hardware card of driver EtherCATDriver
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 0 (Beckhoff - EK1101).ID.ID Bits: 16 Offset: 312 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 1.Input Bits: 1 Offset: 328 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 2.Input Bits: 1 Offset: 329 VarBitOffs: 1
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 3.Input Bits: 1 Offset: 330 VarBitOffs: 2
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 4.Input Bits: 1 Offset: 331 VarBitOffs: 3
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 5.Input Bits: 1 Offset: 332 VarBitOffs: 4
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 6.Input Bits: 1 Offset: 333 VarBitOffs: 5
RMPNetwork: (i) 00:10:40.966   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 7.Input Bits: 1 Offset: 334 VarBitOffs: 6
RMPNetwork: (i) 00:10:40.967   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 2 (Beckhoff - DI8).Channel 8.Input Bits: 1 Offset: 335 VarBitOffs: 7
RMPNetwork: (i) 00:10:40.967   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 3 (Beckhoff - AI4).AI Compact Channel 1.Value Bits: 16 Offset: 336 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.967   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 3 (Beckhoff - AI4).AI Compact Channel 2.Value Bits: 16 Offset: 352 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.967   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 3 (Beckhoff - AI4).AI Compact Channel 3.Value Bits: 16 Offset: 368 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.967   EtherCAT EtherCATConfigParser.cpp:1823 InputName: Term 3 (Beckhoff - AI4).AI Compact Channel 4.Value Bits: 16 Offset: 384 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.968   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 1.Output Bits: 1 Offset: 208 VarBitOffs: 0
RMPNetwork: (i) 00:10:40.968   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 2.Output Bits: 1 Offset: 209 VarBitOffs: 1
RMPNetwork: (i) 00:10:40.969   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 3.Output Bits: 1 Offset: 210 VarBitOffs: 2
RMPNetwork: (i) 00:10:40.969   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 4.Output Bits: 1 Offset: 211 VarBitOffs: 3
RMPNetwork: (i) 00:10:40.973   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 5.Output Bits: 1 Offset: 212 VarBitOffs: 4
RMPNetwork: (i) 00:10:40.973   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 6.Output Bits: 1 Offset: 213 VarBitOffs: 5
RMPNetwork: (i) 00:10:40.974   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 7.Output Bits: 1 Offset: 214 VarBitOffs: 6
RMPNetwork: (i) 00:10:40.975   EtherCAT EtherCATConfigParser.cpp:1956 OutputName: Term 1 (Beckhoff - DO8).Channel 8.Output Bits: 1 Offset: 215 VarBitOffs: 7
RMPNetwork: (i) 00:10:41.476   EtherCAT         INtimeDevice.cpp:492  hpeOpen-Probe ie1g0 found
RMPNetwork: (i) 00:10:45.193   EtherCAT         INtimeDevice.cpp:536  MAC address:68-05-ca-2d-9a-de
RMPNetwork: (i) 00:10:45.193   EtherCAT         INtimeDevice.cpp:547  Allocate and attach the receive buffers
RMPNetwork: (i) 00:10:46.443   EtherCAT         INtimeDevice.cpp:597  Checking Ethernet PHY media status for nodes...
RMPNetwork: (i) 00:10:46.443   EtherCAT         INtimeDevice.cpp:614  Interface is connected at 100Mbps
RMPNetwork: (i) 00:10:46.443   EtherCAT             EthCatDr.cpp:837  EtherCAT starting with cycle period=500 [usec]
RMPNetwork: (i) 00:10:47.077      Drive    RMPNetworkStarter.cpp:343  Requesting file send.
RMPNetwork: (i) 00:10:47.077      Drive    RMPNetworkStarter.cpp:351  Progress (0)
RMPNetwork: (i) 00:10:47.095      Drive    RMPNetworkStarter.cpp:351  Progress (0)
RMPNetwork: (i) 00:10:47.145      Drive    RMPNetworkStarter.cpp:351  Progress (1)
RMPNetwork: (i) 00:10:47.195      Drive    RMPNetworkStarter.cpp:351  Progress (2)
RMPNetwork: (i) 00:10:47.395      Drive    RMPNetworkStarter.cpp:351  Progress (4)
RMPNetwork: (i) 00:10:47.595      Drive    RMPNetworkStarter.cpp:351  Progress (5)
RMPNetwork: (i) 00:10:47.795      Drive    RMPNetworkStarter.cpp:351  Progress (7)
RMPNetwork: (i) 00:10:47.995      Drive    RMPNetworkStarter.cpp:351  Progress (8)
RMPNetwork: (i) 00:10:48.295      Drive    RMPNetworkStarter.cpp:351  Progress (9)
RMPNetwork: (i) 00:10:48.495      Drive    RMPNetworkStarter.cpp:351  Progress (11)
RMPNetwork: (i) 00:10:48.695      Drive    RMPNetworkStarter.cpp:351  Progress (12)
RMPNetwork: (i) 00:10:48.895      Drive    RMPNetworkStarter.cpp:351  Progress (14)
RMPNetwork: (i) 00:10:49.095      Drive    RMPNetworkStarter.cpp:351  Progress (15)
RMPNetwork: (i) 00:10:49.295      Drive    RMPNetworkStarter.cpp:351  Progress (17)
RMPNetwork: (i) 00:10:49.595      Drive    RMPNetworkStarter.cpp:351  Progress (18)
RMPNetwork: (i) 00:10:49.795      Drive    RMPNetworkStarter.cpp:351  Progress (19)
RMPNetwork: (i) 00:10:49.995      Drive    RMPNetworkStarter.cpp:351  Progress (21)
RMPNetwork: (i) 00:10:50.195      Drive    RMPNetworkStarter.cpp:351  Progress (22)
RMPNetwork: (i) 00:10:50.395      Drive    RMPNetworkStarter.cpp:351  Progress (24)
RMPNetwork: (i) 00:10:50.595      Drive    RMPNetworkStarter.cpp:351  Progress (25)
RMPNetwork: (i) 00:10:50.795      Drive    RMPNetworkStarter.cpp:351  Progress (26)
RMPNetwork: (i) 00:10:51.095      Drive    RMPNetworkStarter.cpp:351  Progress (28)
RMPNetwork: (i) 00:10:51.295      Drive    RMPNetworkStarter.cpp:351  Progress (29)
RMPNetwork: (i) 00:10:51.495      Drive    RMPNetworkStarter.cpp:351  Progress (31)
RMPNetwork: (i) 00:10:51.695      Drive    RMPNetworkStarter.cpp:351  Progress (32)
RMPNetwork: (i) 00:10:51.895      Drive    RMPNetworkStarter.cpp:351  Progress (34)
RMPNetwork: (i) 00:10:52.095      Drive    RMPNetworkStarter.cpp:351  Progress (35)
RMPNetwork: (i) 00:10:52.395      Drive    RMPNetworkStarter.cpp:351  Progress (36)
RMPNetwork: (i) 00:10:52.595      Drive    RMPNetworkStarter.cpp:351  Progress (38)
RMPNetwork: (i) 00:10:52.795      Drive    RMPNetworkStarter.cpp:351  Progress (39)
RMPNetwork: (i) 00:10:52.995      Drive    RMPNetworkStarter.cpp:351  Progress (41)
RMPNetwork: (i) 00:10:53.195      Drive    RMPNetworkStarter.cpp:351  Progress (42)
RMPNetwork: (i) 00:10:53.395      Drive    RMPNetworkStarter.cpp:351  Progress (43)
RMPNetwork: (i) 00:10:53.595      Drive    RMPNetworkStarter.cpp:351  Progress (45)
RMPNetwork: (i) 00:10:53.895      Drive    RMPNetworkStarter.cpp:351  Progress (46)
RMPNetwork: (i) 00:10:54.095      Drive    RMPNetworkStarter.cpp:351  Progress (48)
RMPNetwork: (i) 00:10:54.295      Drive    RMPNetworkStarter.cpp:351  Progress (49)
RMPNetwork: (i) 00:10:54.495      Drive    RMPNetworkStarter.cpp:351  Progress (51)
RMPNetwork: (i) 00:10:54.695      Drive    RMPNetworkStarter.cpp:351  Progress (52)
RMPNetwork: (i) 00:10:54.895      Drive    RMPNetworkStarter.cpp:351  Progress (53)
RMPNetwork: (i) 00:10:55.195      Drive    RMPNetworkStarter.cpp:351  Progress (55)
RMPNetwork: (i) 00:10:55.395      Drive    RMPNetworkStarter.cpp:351  Progress (56)
RMPNetwork: (i) 00:10:55.595      Drive    RMPNetworkStarter.cpp:351  Progress (58)
RMPNetwork: (i) 00:10:55.795      Drive    RMPNetworkStarter.cpp:351  Progress (59)
RMPNetwork: (i) 00:10:55.995      Drive    RMPNetworkStarter.cpp:351  Progress (60)
RMPNetwork: (i) 00:10:56.195      Drive    RMPNetworkStarter.cpp:351  Progress (62)
RMPNetwork: (i) 00:10:56.395      Drive    RMPNetworkStarter.cpp:351  Progress (63)
RMPNetwork: (i) 00:10:56.695      Drive    RMPNetworkStarter.cpp:351  Progress (65)
RMPNetwork: (i) 00:10:56.895      Drive    RMPNetworkStarter.cpp:351  Progress (66)
RMPNetwork: (i) 00:10:57.095      Drive    RMPNetworkStarter.cpp:351  Progress (68)
RMPNetwork: (i) 00:10:57.295      Drive    RMPNetworkStarter.cpp:351  Progress (69)
RMPNetwork: (i) 00:10:57.495      Drive    RMPNetworkStarter.cpp:351  Progress (70)
RMPNetwork: (i) 00:10:57.695      Drive    RMPNetworkStarter.cpp:351  Progress (72)
RMPNetwork: (i) 00:10:57.995      Drive    RMPNetworkStarter.cpp:351  Progress (73)
RMPNetwork: (i) 00:10:58.195      Drive    RMPNetworkStarter.cpp:351  Progress (75)
RMPNetwork: (i) 00:10:58.395      Drive    RMPNetworkStarter.cpp:351  Progress (76)
RMPNetwork: (i) 00:10:58.595      Drive    RMPNetworkStarter.cpp:351  Progress (77)
RMPNetwork: (i) 00:10:58.795      Drive    RMPNetworkStarter.cpp:351  Progress (79)
RMPNetwork: (i) 00:10:58.995      Drive    RMPNetworkStarter.cpp:351  Progress (80)
RMPNetwork: (i) 00:10:59.295      Drive    RMPNetworkStarter.cpp:351  Progress (82)
RMPNetwork: (i) 00:10:59.495      Drive    RMPNetworkStarter.cpp:351  Progress (83)
RMPNetwork: (i) 00:10:59.695      Drive    RMPNetworkStarter.cpp:351  Progress (85)
RMPNetwork: (i) 00:10:59.895      Drive    RMPNetworkStarter.cpp:351  Progress (86)
RMPNetwork: (i) 00:11:00.095      Drive    RMPNetworkStarter.cpp:351  Progress (87)
RMPNetwork: (i) 00:11:00.295      Drive    RMPNetworkStarter.cpp:351  Progress (89)
RMPNetwork: (i) 00:11:00.495      Drive    RMPNetworkStarter.cpp:351  Progress (90)
RMPNetwork: (i) 00:11:00.795      Drive    RMPNetworkStarter.cpp:351  Progress (92)
RMPNetwork: (i) 00:11:00.945      Drive    RMPNetworkStarter.cpp:351  Progress (93)
RMPNetwork: (i) 00:11:00.995      Drive    RMPNetworkStarter.cpp:351  Progress (94)
RMPNetwork: (i) 00:11:01.045      Drive    RMPNetworkStarter.cpp:351  Progress (96)
RMPNetwork: (i) 00:11:01.095      Drive    RMPNetworkStarter.cpp:351  Progress (97)
RMPNetwork: (i) 00:11:01.145      Drive    RMPNetworkStarter.cpp:351  Progress (99)
RMPNetwork: (i) 00:11:01.320      Drive    RMPNetworkStarter.cpp:343  File transfer complete.
RMPNetwork: (i) 00:11:01.320      Drive    RMPNetworkStarter.cpp:351  Progress (100)
RMPNetwork: (i) 00:11:02.070      Drive    RMPNetworkStarter.cpp:313  FoE Download Complete.
RMPNetwork: (i) 00:11:02.082   EtherCAT   RMPNetworkFirmware.cpp:1486 Node #(0) : AL Status (0x0), Code (0x0)
RMPNetwork: (i) 00:11:02.082   EtherCAT   RMPNetworkFirmware.cpp:1486 Node #(1) : AL Status (0x0), Code (0x0)
RMPNetwork: (i) 00:11:02.082   EtherCAT   RMPNetworkFirmware.cpp:1486 Node #(2) : AL Status (0x0), Code (0x0)
RMPNetwork: (i) 00:11:02.082   EtherCAT   RMPNetworkFirmware.cpp:1486 Node #(3) : AL Status (0x0), Code (0x0)
RMPNetwork: (i) 00:11:03.332   EtherCAT             EthCatDr.cpp:981  MKEtherCATDriver::Stopping
RMPNetwork: (i) 00:11:04.582   EtherCAT             EthCatDr.cpp:1119 MKEtherCATDriver::Clear
RMPNetwork: /!\ 00:11:05.832   EtherCAT             EthCatDr.cpp:3865 --> Close driver
RMPNetwork: (i) 00:11:05.832 Controller      MKBusBaseDriver.cpp:98   Driver EtherCATDriver closed

It is possible to destroy a node by downloading garbage data or interrupting this process. Be wary when using this feature.

It is generally recommend that you restart your node after downloading firmware and allowing it time to update.

LEARN MORE

ETG1000 _5 (AL Services) & _6 (ALProtocols) contain additional information about FoE standards and operation.

Last updated