[etherlab-users] Assigning Dynamic PDOs

Florian Pose fp at igh-essen.com
Wed May 5 15:38:36 CEST 2010


On Mon, May 03, 2010 at 06:44:48PM +0200, Fabian Herb wrote:
> I have a little problem with a slave generating dynamic PDOs. I get warnings 
> like this:
> 
> EtherCAT WARNING: Slave 5 does not support assigning PDOs!
> EtherCAT WARNING: Currently assigned PDOs: (none). PDOs to assign: 0x1A85 
> 0x1A00 
> EtherCAT WARNING: Slave 5 does not support assigning PDOs!
> EtherCAT WARNING: Currently assigned PDOs: (none). PDOs to assign: 0x1600

This means, that the master read out the PDO assignment and there are no
PDOs assigned. But the slave tells the master via the SII (check
'ethercat slave -v'), that the PDO assignment can't be changed. This is
bad. ;-)

Could it be, that the slave *supports* changing the PDO assignment?

> And the whole process data for this slave is all zeroes.
> 
> However when I look at SDOs 0x1c12 and 0x1c13, in which PDO assignment is 
> configured, they contain the correct PDO indices.

This is strange. Please try to switch the slave on while the master is
loaded and check 'ethercat pdos'. Then unload the master, load it again
and check 'ethercat pdos' again.

> I suppose the EtherLab master reads the PDO assignment before it gets 
> generated by the slave. Is this likely to be the cause for the process data to 
> be zero? Or do I have to look somewhere else?

All-zero process data may be perfectly valid. You can monitor the
validity via ecrt_domain_state() (or command-line: 'ethercat domain').

> I have pasted a full debug output here:
> http://pastebin.de/pastebin.php?dl=6058

A few comments to your log file:

- Why do you call ecrt_master_slave_config() for the same configuration
  hundereds of times?

- When using ecrt_slave_config_pdo_*_add() you should first call
  ecrt_slave_config_pdo_*_clear(), to be sure, that no objects are
  mapped/assigned before.

-- 
Best regards,
Florian Pose

http://etherlab.org



More information about the Etherlab-users mailing list