[etherlab-users] Etherlab example mini module
thomas.elste at imms.de
Mon Jul 16 10:24:05 CEST 2007
> I am using a chip called netX from hilscher (www.hilscher.com). It is
> working correctly when I connect it to a TwinCAT Master (the EtherCAT
> software from Beckhoff).
I'm trying to use a netX (cifX-Re-50 PCI card) with the Etherlab master,
So far I've encountered several problems, with this non Beckhoff component:
1. After scanning the bus, the master tries to read the netX eeprom.
it reads the eeprom sequentially until the data word gets 0xffff. Problem
this never happens with the netX. So the master reads, and reads ...
I've fixed this quick and dirty by assigning a fixed eeprom size.
2. After the eeprom data has been read, the master tries to scan the data
find out the slaves configuration (syncmanager config, pdos, etc.). But
except vendor id, product code and some other numbers, the netX eeprom
doesn't contain any configuration data. TwinCat uses the xml file delivered
with the netX to configure it as slave. The Etherlab master seems to depend
on the eeprom content.
I've fixed this by generating the eeprom content for the netX manually and
copy it after the scan into the masters data structure (very quick and
3. The biggest problem, so far. The netX Ethercat firmware seems to
just LRD/LWR (logical read and logical write) datagrams (note the
UseLrdLwr="1" in the xml file). Whereas the master uses the LRW (logical
read/write) datagram (combined) type. So after fixing problem 1 and 2 , the
netX gets configured, but I was not able to exchange any process data. I've
get this to work by assigning two domains to the netX (one for input one
output) and use the appropriate datagram type within the master (also a
4. To change the slaves status, TwinCat writes the AL control register
with the ERR_ACK bit set, without worrying. The Etherlab master doesn't.
causes the state change not always carried out by the netX. I've changed
All in all, tracking this problems down I'm now able to exchange process
with the netX on a one master - one slave bus. Mailboxes, CoE or EoE, I've
not even tought about, yet.
I'm not sure howto come up with a definite solution for the problems.
1 could be easily solved, with the master checking for a maximum eeprom
to scan (or a configured eeprom size in the slave db). Problem 2 needs
Hilscher to change to netX firmware, so that it contains the correct config
data. Or the master has to be enhanced with a way to configure the slaves
manually (enhanced slave db?, xml parser?).
Problem 3 needs either also the netX firmware to be changed in
LWR datagrams. Or the master, so it could use LRD/LWR (I don't think LWR is
mandatory for slaves to understand (?)).
I would be happy, if someone from the developers could comment on this,
PS: my slave0/info for the netX:
Vendor ID: 0x00000044
Product code: 0x6E657478
State: PREOP (PREOP)
Flags: online, ok
Ring position: 0
Advanced position: 0:0
Current consumption: 0 mA
Data link status:
Port 0 (unknown (255)) Link down, Loop closed, No signal
Port 1 (unknown (255)) Link up, Loop open, Signal detected
Port 2 (unknown (255)) Link down, Loop closed, No signal
Port 3 (unknown (255)) Link down, Loop closed, No signal
0: 0x1000, length 128, control 0x26, enable
1: 0x1100, length 128, control 0x22, enable
2: 0x1200, length 4, control 0x64, enable
3: 0x1400, length 4, control 0x20, enable
RXPDO "wOut0" (0x1A00), Sync-Manager 2
"Output" 0x2003:1, 32 bit
TXPDO "wIn0" (0x1600), Sync-Manager 3
"Input" 0x2004:1, 32 bit
More information about the etherlab-users