[etherlab-dev] Bandwidth optimizations

Daniel Bechter daniel.bechter at omicron.at
Thu Nov 5 14:36:05 CET 2009


I just realized I made a little mistake. The theory from mail one is correct but FMMU configuration should look as follows:

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 7
Physical Start Address: 0x1100
Physical Start bit: 0
Type: write

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 7
Physical Start Address: 0x1200
Physical Start bit: 0
Type: read

EtherLab seems to perform the following configuration:

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 7
Physical Start Address: 0x1100
Physical Start bit: 0
Type: write

Logical Start Address: 0x00000002
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 7
Physical Start Address: 0x1200
Physical Start bit: 0
Type: read


Greets,
Daniel


_____________________________________________
From: Daniel Bechter
Sent: Thursday, 05. November 2009 14:05
To: 'etherlab-dev at etherlab.org'
Subject: Bandwidth optimizations


Hey guys!

I performed a test with the EtherLab EtherCAT-Master (devel-r1770) and created a Slave EEPROM with the following SM configuration:

SM0: PhysAddr 0x1100, DefaultSize    0, ControlRegister 0x64, Enable 1
  RxPDO 0x1a00 "Output"
    PDO entry 0x7000:01, 16 bit, " Channel 1"
SM1: PhysAddr 0x1200, DefaultSize    0, ControlRegister 0x20, Enable 1
  TxPDO 0x1600 "Input"
    PDO entry 0x6000:01, 16 bit, "Sample 1"

I realized that the EtherCAT-Master allocated 4 Bytes within the frame for the data. Isn't 2 Bytes enough? The ESC puts the output data from the LRW datagram with logical address 0x0 from Bit 0 to Bit 15 into the physical memory at 0x1100 and puts the input data from the physical memory at 0x1200 into the same area within the frame, effectively overwriting the output data with the input data. FMMU configuration should look as follows:

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 15
Physical Start Address: 0x1100
Physical Start bit: 0
Type: write

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 15
Physical Start Address: 0x1200
Physical Start bit: 0
Type: read

So you would not have to allocate memory for the sum of inputs and outputs but for max(inputs, outputs). EtherLab EtherCAT-Master seems to be configuring the FMMU the following way:

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 0
Logical Stop bit: 15
Physical Start Address: 0x1100
Physical Start bit: 0
Type: write

Logical Start Address: 0x00000000
Length (Bytes): 2
Logical Start bit: 16
Logical Stop bit: 31
Physical Start Address: 0x1200
Physical Start bit: 0
Type: read


Is there anything I did not think about? Thought this was a huge EtherCAT concept to save bandwidth?

Greets,
Daniel




More information about the Etherlab-dev mailing list