Ethercat - assinged the same pdos to multiple Slave-Signals?

More
12 Nov 2025 15:57 - 12 Nov 2025 16:00 #338252 by MillingMarvin
Hello Everyone,
i am just starting out with some Beckhoff Modules and ethercat communication.
To be speciffic:
EK1100
EL1014 and EL1014-0010
EL2004
EL5101
EL4038

I only addet :
HALFILE = ethercat.hal
the the axis.ini file.
The axis.sim config is otherwise untouched

I used the basic xml definition like so:
<slave idx="0" type="EK1100" name="EK1100_01"/>
<slave idx="1" type="EL1014" name="EL1014_01"/>

Full xml file is attached.

When i arrange them in this order:
K1100, EL1014, EL2004
I can start Linuxcnc and see/use them in the Halshow window. (set the output of the EL2004 Module and sense the Input on the EL1014 module)

But if i try to stack more EL1014, I get the error:
Failed to register PDO entry: No such file or directory

Debug file information:
[spoiler]
Note: Using POSIX realtime
Failed to register PDO entry: No such file or directory
LCEC: master 0 PDO entry registration failed
LCEC: failure, clearing config
LCEC: exiting
LCEC: returning -EINVAL
lcec: rtapi_app_main: Invalid argument (-22)
./ethercat.hal:4: waitpid failed /usr/bin/rtapi_app lcec
./ethercat.hal:4: /usr/bin/rtapi_app exited without becoming ready
./ethercat.hal:4: insmod for lcec failed, returned -1
9404
Stopping realtime threads
Unloading hal components
Note: Using POSIX realtime
[/spoiler]

after some reserch on pdos, it is obvious that every pdo should only be used once per master-slave config.

[b]Why does my Ethercat master distribute the same pdo to different salves? Or even better, how can I fix this?
Any help is greadly appreciated.

Do you need more information on my setup or additional files?

my output after:[/b]
  • [b]ethercat pdos
    
    and[/b]
    • [b]ethercat slave
      
      [spoiler]
      
      [code]cnc@cnc:~$ ethercat pdos
      === Master 0, Slave 1 ===
      SM0: PhysAddr 0x1000, DefaultSize    1, ControlRegister 0x00, Enable 1
        TxPDO 0x1a00 "Channel 1"
          PDO entry 0x6000:01,  1 bit, "Input"
        TxPDO 0x1a01 "Channel 2"
          PDO entry 0x6010:01,  1 bit, "Input"
        TxPDO 0x1a02 "Channel 3"
          PDO entry 0x6020:01,  1 bit, "Input"
        TxPDO 0x1a03 "Channel 4"
          PDO entry 0x6030:01,  1 bit, "Input"
      === Master 0, Slave 2 ===
      SM0: PhysAddr 0x1000, DefaultSize    0, ControlRegister 0x00, Enable 0
        TxPDO 0x1a00 "Channel 1"
          PDO entry 0x3101:01,  1 bit, "Input"
        TxPDO 0x1a01 "Channel 2"
          PDO entry 0x3101:02,  1 bit, "Input"
        TxPDO 0x1a02 "Channel 3"
          PDO entry 0x3101:03,  1 bit, "Input"
        TxPDO 0x1a03 "Channel 4"
          PDO entry 0x3101:04,  1 bit, "Input"
      === Master 0, Slave 3 ===
      SM0: PhysAddr 0x1000, DefaultSize    0, ControlRegister 0x00, Enable 0
        TxPDO 0x1a00 "Channel 1"
          PDO entry 0x6000:01,  1 bit, "Input"
        TxPDO 0x1a01 "Channel 2"
          PDO entry 0x6010:01,  1 bit, "Input"
        TxPDO 0x1a02 "Channel 3"
          PDO entry 0x6020:01,  1 bit, "Input"
        TxPDO 0x1a03 "Channel 4"
          PDO entry 0x6030:01,  1 bit, "Input"
      === Master 0, Slave 4 ===
      SM0: PhysAddr 0x1000, DefaultSize    0, ControlRegister 0x00, Enable 0
        TxPDO 0x1a00 "Channel 1"
          PDO entry 0x3101:01,  1 bit, "Input"
        TxPDO 0x1a01 "Channel 2"
          PDO entry 0x3101:02,  1 bit, "Input"
        TxPDO 0x1a02 "Channel 3"
          PDO entry 0x3101:03,  1 bit, "Input"
        TxPDO 0x1a03 "Channel 4"
          PDO entry 0x3101:04,  1 bit, "Input"
      === Master 0, Slave 5 ===
      SM0: PhysAddr 0x1000, DefaultSize    0, ControlRegister 0x00, Enable 0
        TxPDO 0x1a00 "Channel 1"
          PDO entry 0x3101:01,  1 bit, "Input"
        TxPDO 0x1a01 "Channel 2"
          PDO entry 0x3101:02,  1 bit, "Input"
        TxPDO 0x1a02 "Channel 3"
          PDO entry 0x3101:03,  1 bit, "Input"
        TxPDO 0x1a03 "Channel 4"
          PDO entry 0x3101:04,  1 bit, "Input"
      === Master 0, Slave 6 ===
      SM0: PhysAddr 0x0f00, DefaultSize    0, ControlRegister 0x44, Enable 9
        RxPDO 0x1600 "Channel 1"
          PDO entry 0x7000:01,  1 bit, "Output"
        RxPDO 0x1601 "Channel 2"
          PDO entry 0x7010:01,  1 bit, "Output"
        RxPDO 0x1602 "Channel 3"
          PDO entry 0x7020:01,  1 bit, "Output"
        RxPDO 0x1603 "Channel 4"
          PDO entry 0x7030:01,  1 bit, "Output"
      cnc@cnc:~$ ethercat slave
      0  0:0  PREOP  +  EK1100 EtherCAT-Koppler (2A E-Bus)
      1  0:1  PREOP  +  EL1014 4Ch. Dig. Input 24V, 10 s
      2  0:2  PREOP  +  EL1014 4K. Dig. Eingang 24V, 10 s
      3  0:3  PREOP  +  EL1014 4K. Dig. Eingang 24V, 10 s
      4  0:4  PREOP  +  EL1014-0010 4K. Dig. Eingang 24V, galv. getrennt, 10 s
      5  0:5  PREOP  +  EL1014-0010 4K. Dig. Eingang 24V, galv. getrennt, 10 s
      6  0:6  PREOP  +  EL2004 4Ch. Dig. Output 24V, 0.5A
      [/spoiler]
      
      It does matter which EL1014 Module is in which position, the sequence of the assigned pdos is not allways the same.
      
      Greatings from germany!
      [/b][/code]
[b][code]Sorry, wrong category, could someone move this to "ethercat"?
[/b][/code]
[b][code] 
[/b][/code]
Attachments:
Last edit: 12 Nov 2025 16:00 by MillingMarvin.

Please Log in or Create an account to join the conversation.

  • tommylight
  • tommylight's Avatar
  • Away
  • Moderator
  • Moderator
More
12 Nov 2025 16:04 #338253 by tommylight
Moved to "EtherCAT" section.

Please Log in or Create an account to join the conversation.

More
12 Nov 2025 17:14 #338260 by Hakan
From what I can see, the lcec EL1014 driver expects PDOs at 0x6000, 0x6010, 0x6020 and 0x6030. Two of your units have that.
Three of your units have PDOs at 0x3101:1, 0x3101:2, 0x3101:3 and 0x3101:4.
Maybe there is a reason for that? Different versions? I don't know the products very well.

You can use the generic driver for the 0x3101 units.  And for the other units as well.
Run "lcec_configgen -typedb=false" and hopefully you should get the "generic" driver for all devices in the output.
 

Please Log in or Create an account to join the conversation.

More
13 Nov 2025 10:58 #338307 by MillingMarvin
this is genius!
the comand "lcec_configgen -typedb=false" worked perfectly,
thank you so much for the recomandation!



 

Please Log in or Create an account to join the conversation.

Time to create page: 0.078 seconds
Powered by Kunena Forum