Problems switching PDO assignments (EP5101-0011)

More
22 Jun 2025 16:09 #330705 by PedPEx
Hello all :D

i'm trying to implement a Beckhoff EP5101-0011 incremental encoder input into LinuxCNC with its 32bit counter. I need to read glass scale inputs with around 520 mm in length and a resolution of 1 µm. For that i need atleast 19 bit, and its standard PDO assignment with the "compact" 16bit encoder-value doesn't cut it. 

I can easily change the PDO assignment in the EtherCAT-Configurator application and the EP5101 activates the 32bit counter, after reconnecting the LinuxCNC machine it is also able to use the bigger counter, but after power cycling the device, it defaults back to the 16bit counter. So i tried to set the correct PDO assignments via SDO uploads, but that did also not work, it doesn't want to change in the "big counter mode" via LinuxCNC. 

It also complained about the other SDO uploads (settings), but that's a problem for later.
What exactly do i have to change, to initialize the encoder input to its 32bit PDO setting?

Thank you in advance for your help :)
<!-- EP5101 - Incr. Encoder Input -->
        <slave idx="9" type="generic" vid="0x00000002" pid="0x13ed4052" name="0571_EP5101">
            <!-- configure counter for 32bit -->
                <sdoConfig idx="1C12" subIdx="1"><sdoDataRaw data ="00 16"/></sdoConfig>  <!-- switch to 32bit RxPDO assign-->
                <sdoConfig idx="1C13" subIdx="1"><sdoDataRaw data ="00 1A"/></sdoConfig>  <!-- switch to 32bit TxPDO assign-->
            <!-- overall configuration -->
                <!-- Enable C reset -->
                <sdoConfig idx="8000" subIdx="01"><sdoDataRaw data ="01"/></sdoConfig>
                <!-- Enable extern reset -->
                <sdoConfig idx="8000" subIdx="02"><sdoDataRaw data ="01"/></sdoConfig>
                <!-- Enable up/down counter -->
                <sdoConfig idx="8000" subIdx="03"><sdoDataRaw data ="01"/></sdoConfig>
                <!-- Gate polarity -->
                <sdoConfig idx="8000" subIdx="04"><sdoDataRaw data ="01 00 00 00"/></sdoConfig>
                <!-- Disable filter -->
                <sdoConfig idx="8000" subIdx="08"><sdoDataRaw data ="01"/></sdoConfig>
                <!-- Enable micro increments -->
                <sdoConfig idx="8000" subIdx="0A"><sdoDataRaw data ="00"/></sdoConfig>
                <!-- Open cicruit detection A -->
                <sdoConfig idx="8000" subIdx="0B"><sdoDataRaw data ="01"/></sdoConfig>
                <!-- Open cicruit detection B -->
                <sdoConfig idx="8000" subIdx="0C"><sdoDataRaw data ="01"/></sdoConfig>
                <!-- Open cicruit detection C -->
                <sdoConfig idx="8000" subIdx="0D"><sdoDataRaw data ="00"/></sdoConfig>
                <!-- Reversion of rotation -->
                <sdoConfig idx="8000" subIdx="0E"><sdoDataRaw data ="00"/></sdoConfig>
                <!-- Extern reset polarity -->
                <sdoConfig idx="8000" subIdx="10"><sdoDataRaw data ="01 00 00 00"/></sdoConfig>
                <!-- Frequency window -->
                <sdoConfig idx="8000" subIdx="11"><sdoDataRaw data ="10 27"/></sdoConfig>
                <!-- Frequency scaling -->
                <sdoConfig idx="8000" subIdx="13"><sdoDataRaw data ="64 00 00 00"/></sdoConfig>
                <!-- Period scaling -->
                <sdoConfig idx="8000" subIdx="14"><sdoDataRaw data ="64 00 00 00"/></sdoConfig>
                <!-- Frequency resolution -->
                <sdoConfig idx="8000" subIdx="15"><sdoDataRaw data ="64 00 00 00"/></sdoConfig>
                <!-- Period resolution -->
                <sdoConfig idx="8000" subIdx="16"><sdoDataRaw data ="64 00 00 00"/></sdoConfig>
                <!-- Frequency wait time -->
                <sdoConfig idx="8000" subIdx="17"><sdoDataRaw data ="40 06"/></sdoConfig>
            <!-- configure SyncManagers -->
            <syncManager idx="0" dir="in"/>
            <syncManager idx="1" dir="out"/>
            <syncManager idx="2" dir="out">
                <!-- ENC RxPDO-Map Control -->
                <pdo idx="1601">
                    <!-- Enable latch C -->
                    <pdoEntry idx="7000" subIdx="01" bitLen="1" halPin="enable-latch-C" halType="bit"/>
                    <!-- Enable latch extern on positive edge -->
                    <pdoEntry idx="7000" subIdx="02" bitLen="1" halPin="ena-latch-ext-on-pos_edge" halType="bit"/>
                    <!-- Set counter -->
                    <pdoEntry idx="7000" subIdx="03" bitLen="1" halPin="set-counter" halType="bit"/>
                    <!-- Enable latch extern on negative edge -->
                    <pdoEntry idx="7000" subIdx="04" bitLen="1" halPin="ena-latch-ext-on-neg_edge" halType="bit"/>
                    <!-- Set counter value -->
                    <pdoEntry idx="7000" subIdx="11" bitLen="32" halPin="set-counter_value" halType="u32"/>
                </pdo>
            </syncManager>
            <syncManager idx="3" dir="in">
                <!-- ENC TxPDO-Map Status -->
                <pdo idx="1a01">
                    <!-- Latch C valid -->
                    <pdoEntry idx="6000" subIdx="01" bitLen="1" halPin="latch-c-valid" halType="bit"/>
                    <!-- Latch extern valid -->
                    <pdoEntry idx="6000" subIdx="02" bitLen="1" halPin="latch-extern-valid" halType="bit"/>
                    <!-- Set counter done -->
                    <pdoEntry idx="6000" subIdx="03" bitLen="1" halPin="set-counter-done" halType="bit"/>
                    <!-- Counter underflow -->
                    <pdoEntry idx="6000" subIdx="04" bitLen="1" halPin="counter-underflow" halType="bit"/>
                    <!-- Counter overflow -->
                    <pdoEntry idx="6000" subIdx="05" bitLen="1" halPin="counter-overflow" halType="bit"/>
                    <!-- Status of input status -->
                    <pdoEntry idx="6000" subIdx="06" bitLen="1" halPin="status-of-input-status" halType="bit"/>
                    <!-- Open circuit -->
                    <pdoEntry idx="6000" subIdx="07" bitLen="1" halPin="open-circuit" halType="bit"/>
                    <!-- Extrapolation stall -->
                    <pdoEntry idx="6000" subIdx="08" bitLen="1" halPin="extrapolation-stall" halType="bit"/>
                    <!-- Status of input A -->
                    <pdoEntry idx="6000" subIdx="09" bitLen="1" halPin="status-A" halType="bit"/>
                    <!-- Status of input B -->
                    <pdoEntry idx="6000" subIdx="0a" bitLen="1" halPin="status-B" halType="bit"/>
                    <!-- Status of input C -->
                    <pdoEntry idx="6000" subIdx="0b" bitLen="1" halPin="status-C" halType="bit"/>
                    <!-- Status of input gate -->
                    <pdoEntry idx="6000" subIdx="0c" bitLen="1" halPin="status-gate" halType="bit"/>
                    <!-- Status of extern latch -->
                    <pdoEntry idx="6000" subIdx="0d" bitLen="1" halPin="status-ext_latch" halType="bit"/>
                    <!-- Sync error -->
                    <pdoEntry idx="1c32" subIdx="20" bitLen="1" halPin="sync-error" halType="bit"/>
                    <!-- TxPDO State -->
                    <pdoEntry idx="1800" subIdx="07" bitLen="1" halPin="TxPDO-state" halType="bit"/>
                    <!-- TxPDO Toggle -->
                    <pdoEntry idx="1800" subIdx="09" bitLen="1" halPin="TxPDO-toggle" halType="bit"/>
                    <!-- Counter value -->
                    <pdoEntry idx="6000" subIdx="11" bitLen="32" halPin="counter_value" halType="u32"/>
                    <!-- Latch value -->
                    <pdoEntry idx="6000" subIdx="12" bitLen="32" halPin="latch_value" halType="u32"/>
                </pdo>
            </syncManager>
        </slave>
Attachments:

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

More
22 Jun 2025 16:26 #330708 by Hakan
I don't know anything about this device, but it doesn't hurt do a "ethercat rescan" after you made changes to the device.

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

More
22 Jun 2025 17:48 #330711 by endian
in the lower left corner you has the 2 check boxes ... check both and do the restart solution and activate solution ... 

everything should be written in the local memory ... but maybe you will probably need the initCmds file 

do not forget to activate DC .. because it is not active from default .. just SM synchro

if you are lazy, just use the console   to generate right configuration ... double click on the .exe ... then "c -i" enter .. then drag and drop your full master config export... 

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

More
23 Jun 2025 19:13 - 23 Jun 2025 19:17 #330766 by PedPEx
I tried a bunch of stuff, this are the results:

1. I tried to set the corresponding PDO assignments via EtherCAT-Configurator once again. It changed the PDO assignment but after a power-cycle the settings were gone.

2. I tried to set the PDO assignment via a InitCMD-XML file. The InitCMDs do not change anything unfortunately. A "ethercat rescan" didn't help either, it just caused more errors in dmesg (output attached)

3. Your linked your software "convertorSdos.exe", i wasn't able to use it properly, it errored out with a "Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. at Program.Main()" and crashed entirely. I started it with the "Beckhoff_EP5101-0011_config.xml" in the same folder, typed in "c -i" and gave it the absolute path to the before mentioned XML file - what did i do wrong?
Last edit: 23 Jun 2025 19:17 by PedPEx. Reason: forgot dmesg and ec slaves cli output

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

More
23 Jun 2025 19:43 #330770 by endian
Maybe there is an eeprom setup and you will have to overwrite something in the eeprom .. because I can not see any SDOs in the startup list out of SM configuration... From the dmesg you are still tring write SM managers what not exist for them... 

My setup before the translator was ... Active configuration, unplug the TC3 master plug lcec master.. ethercat pdos ... And just rewrite active config then I have exporting the SDO config and everything works everytime..

You are using the TC2 instead TC3 .. there should be problem of crashing because I did the translation over TC3 withe 20other slaves CoE or SoE and it works well... Use just TC3, it is better and it is free... Did drag and drop file to the console? Because you have to insert full path ... I am in the heavy storm right now and I can not check your stuff ... 

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

More
23 Jun 2025 19:48 - 25 Jun 2025 04:27 #330772 by endian
electricity is back here ... last slave is your EP box ... check the config but there is no SDOs setup .. I think you will have to create some over the SDO object and then translate them -> object 0x8000:01 .. 17 
Attachments:
Last edit: 25 Jun 2025 04:27 by endian.

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

More
29 Jun 2025 22:21 - 30 Jun 2025 09:32 #331018 by PedPEx
Hello endian

I'm sorry for answering a little bit late, i was busy studying for my upcoming exams. I hope you are doing well and everything is good after the storm you mentioned?

I tried the config from the 23rd and had syntax issues with the InitCMD section. As far as i can tell, you removed it in the version you updated on the 25th. Without the InitCMDs, the encoder inputs indeed change over to their 32bit counter PDO, unfortunately they get stuck in a PREOP error state.
While starting the machine, it also threw error about the "<pdoEntry idx="0" bitLen="4" halPin="Control--194" halType="s32">" part, i just removed that part, because it's not used (gap), according to Beckhoffs docs. 

Do you know a solution to the "Slave does not support changing the PDO mapping!" problem, when the slave supports it for sure?
And thank you for your help so far :) 


dmesg output (grep EtherCAT) before starting the machine config
[code][    4.847665] EtherCAT: Master driver 1.6.0 1.6.0.gcafd367-1+1.1
[    4.848045] EtherCAT: 1 master waiting for devices.
[    4.865248] ec_generic: EtherCAT master generic Ethernet device module 1.6.0 1.6.0.gcafd367-1+1.1
[    4.865257] EtherCAT: Accepting B4:96:91:95:02:70 as main device for master 0.
[    4.896651] EtherCAT 0: Starting EtherCAT-IDLE thread.
[    7.436557] EtherCAT 0: Link state of ecm0 changed to UP.
[    7.445248] EtherCAT 0: 3 slave(s) responding on main device.
[    7.445250] EtherCAT 0: Slave states on main device: PREOP.
[    7.445535] EtherCAT 0: Scanning bus.
[    8.826355] EtherCAT 0: Bus scanning completed in 1380 ms.
[    8.826357] EtherCAT 0: Using slave 0 as DC reference clock.
[   11.980063] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1802:07!
[   11.980066] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   11.983003] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1802:09!
[   11.983004] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   11.997457] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1803:07!
[   11.997458] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   12.000886] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1803:09!
[   12.000887] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   12.015341] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1804:07!
[   12.015342] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   12.018526] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1804:09!
[   12.018527] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   12.033225] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1805:07!
[   12.033226] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   12.036410] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1805:09!
[   12.036411] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   12.599207] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1802:07!
[   12.599209] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.602392] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1802:09!
[   12.602393] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.617336] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1803:07!
[   12.617338] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.620521] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1803:09!
[   12.620523] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.634488] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1804:07!
[   12.634489] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.637701] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1804:09!
[   12.637702] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.652639] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1805:07!
[   12.652640] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   12.655578] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1805:09!
[   12.655579] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   13.214605] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1802:07!
[   13.214608] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.217545] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1802:09!
[   13.217546] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.231999] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1803:07!
[   13.232000] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.235428] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1803:09!
[   13.235429] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.249395] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1804:07!
[   13.249396] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.252582] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1804:09!
[   13.252583] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.267522] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1805:07!
[   13.267523] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   13.270952] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1805:09!
[   13.270953] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   22.277621] EtherCAT 0: Link state of ecm0 changed to DOWN.
[   22.285341] EtherCAT ERROR 0-1: Failed to receive AL state datagram: Datagram error.
[   22.293693] EtherCAT 0: 0 slave(s) responding on main device.
[   29.050914] EtherCAT 0: Link state of ecm0 changed to UP.
[   29.058887] EtherCAT 0: 3 slave(s) responding on main device.
[   29.058892] EtherCAT 0: Slave states on main device: INIT.
[   29.059186] EtherCAT 0: Scanning bus.
[   30.450244] EtherCAT 0: Bus scanning completed in 1388 ms.
[   30.450247] EtherCAT 0: Using slave 0 as DC reference clock.
[   30.455189] EtherCAT 0: Slave states on main device: PREOP.
[   33.606315] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1802:07!
[   33.606319] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.609254] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1802:09!
[   33.609256] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.623685] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1803:07!
[   33.623686] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.626894] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1803:09!
[   33.626895] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.641844] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1804:07!
[   33.641845] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.645513] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1804:09!
[   33.645514] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.659944] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1805:07!
[   33.659945] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   33.662908] EtherCAT WARNING 0-0: SDO information error response while fetching SDO entry 0x1805:09!
[   33.662909] EtherCAT ERROR 0-0: SDO abort message 0x06090011: "Subindex does not exist".
[   34.220767] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1802:07!
[   34.220770] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.223707] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1802:09!
[   34.223709] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.238408] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1803:07!
[   34.238410] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.241346] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1803:09!
[   34.241347] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.256045] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1804:07!
[   34.256047] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.258985] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1804:09!
[   34.258986] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.273194] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1805:07!
[   34.273196] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.276135] EtherCAT WARNING 0-1: SDO information error response while fetching SDO entry 0x1805:09!
[   34.276136] EtherCAT ERROR 0-1: SDO abort message 0x06090011: "Subindex does not exist".
[   34.838011] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1802:07!
[   34.838014] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.841463] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1802:09!
[   34.841465] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.855647] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1803:07!
[   34.855648] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.858587] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1803:09!
[   34.858588] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.873043] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1804:07!
[   34.873045] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.876006] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1804:09!
[   34.876007] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.890459] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1805:07!
[   34.890461] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[   34.893645] EtherCAT WARNING 0-2: SDO information error response while fetching SDO entry 0x1805:09!
[   34.893646] EtherCAT ERROR 0-2: SDO abort message 0x06090011: "Subindex does not exist".
[/code]
[code]dmesg output (grep EtherCAT) that was added after starting the machine config
[code][  190.676872] EtherCAT: Requesting master 0...
[  190.676875] EtherCAT: Successfully requested master 0.
[  190.677525] EtherCAT 0: Domain0: Logical address 0x00000000, 45 byte, expected working counter 9.
[  190.677527] EtherCAT 0:   Datagram domain0-0-main: Logical offset 0x00000000, 45 byte, type LRW.
[  190.677538] EtherCAT 0: Master thread exited.
[  190.677539] EtherCAT 0: Starting EtherCAT-OP thread.
[  190.677584] EtherCAT WARNING 0: 2 datagrams TIMED OUT!
[  190.677586] EtherCAT WARNING 0: 2 datagrams UNMATCHED!
[  190.798114] EtherCAT WARNING 0-0: Slave does not support changing the PDO mapping!
[  190.798116] EtherCAT WARNING 0-0: Currently mapped PDO entries: 0x7000:01/1 0x7000:02/1 0x7000:03/1 0x7000:04/1 0x0000:00/4 0x0000:00/8 0x7000:11/32. Entries to map: 0x7000:01/1 0x7000:02/1 0x7000:03/1 0x7000:04/1 0x7000:11/32
[  190.876116] EtherCAT WARNING 0-0: Slave does not support changing the PDO mapping!
[  190.876119] EtherCAT WARNING 0-0: Currently mapped PDO entries: 0x6000:01/1 0x6000:02/1 0x6000:03/1 0x6000:04/1 0x6000:05/1 0x6000:06/1 0x6000:07/1 0x6000:08/1 0x6000:09/1 0x6000:0A/1 0x6000:0B/1 0x6000:0C/1 0x6000:0D/1 0x1C32:20/1 0x1801:07/1 0x1801:09/1 0x6000:11/32 0x6000:12/32. Entries to map: 0x6000:01/1 0x6000:02/1 0x6000:03/1 0x6000:04/1 0x6000:05/1 0x6000:06/1 0x6000:07/1 0x6000:08/1 0x6000:09/1 0x6000:10/1 0x6000:11/1 0x6000:12/1 0x6000:13/1 0x1C32:32/1 0x1801:07/1 0x1801:09/1 0x6000:17/32 0x6000:18/32
[  195.888053] EtherCAT WARNING 0-0: Slave did not sync after 5000 ms.
[  195.892053] EtherCAT ERROR 0-0: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).
[  195.893053] EtherCAT ERROR 0-0: AL status message 0x001D: "Invalid output configuration".
[  195.895052] EtherCAT 0-0: Acknowledged state PREOP.
[  195.942054] EtherCAT WARNING 0-1: Slave does not support changing the PDO mapping!
[  195.942057] EtherCAT WARNING 0-1: Currently mapped PDO entries: 0x7000:01/1 0x7000:02/1 0x7000:03/1 0x7000:04/1 0x0000:00/4 0x0000:00/8 0x7000:11/32. Entries to map: 0x7000:01/1 0x7000:02/1 0x7000:03/1 0x7000:04/1 0x7000:11/32
[  196.011052] EtherCAT WARNING 0-1: Slave does not support changing the PDO mapping!
[  196.011054] EtherCAT WARNING 0-1: Currently mapped PDO entries: 0x6000:01/1 0x6000:02/1 0x6000:03/1 0x6000:04/1 0x6000:05/1 0x6000:06/1 0x6000:07/1 0x6000:08/1 0x6000:09/1 0x6000:0A/1 0x6000:0B/1 0x6000:0C/1 0x6000:0D/1 0x1C32:20/1 0x1801:07/1 0x1801:09/1 0x6000:11/32 0x6000:12/32. Entries to map: 0x6000:01/1 0x6000:02/1 0x6000:03/1 0x6000:04/1 0x6000:05/1 0x6000:06/1 0x6000:07/1 0x6000:08/1 0x6000:09/1 0x6000:10/1 0x6000:11/1 0x6000:12/1 0x6000:13/1 0x1C32:32/1 0x1801:07/1 0x1801:09/1 0x6000:17/32 0x6000:18/32
[  196.030052] EtherCAT ERROR 0-1: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).
[  196.031052] EtherCAT ERROR 0-1: AL status message 0x001D: "Invalid output configuration".
[  196.033050] EtherCAT 0-1: Acknowledged state PREOP.
[  196.080051] EtherCAT WARNING 0-2: Slave does not support changing the PDO mapping!
[  196.080053] EtherCAT WARNING 0-2: Currently mapped PDO entries: 0x7000:01/1 0x7000:02/1 0x7000:03/1 0x7000:04/1 0x0000:00/4 0x0000:00/8 0x7000:11/32. Entries to map: 0x7000:01/1 0x7000:02/1 0x7000:03/1 0x7000:04/1 0x7000:11/32
[  196.148050] EtherCAT WARNING 0-2: Slave does not support changing the PDO mapping!
[  196.148052] EtherCAT WARNING 0-2: Currently mapped PDO entries: 0x6000:01/1 0x6000:02/1 0x6000:03/1 0x6000:04/1 0x6000:05/1 0x6000:06/1 0x6000:07/1 0x6000:08/1 0x6000:09/1 0x6000:0A/1 0x6000:0B/1 0x6000:0C/1 0x6000:0D/1 0x1C32:20/1 0x1801:07/1 0x1801:09/1 0x6000:11/32 0x6000:12/32. Entries to map: 0x6000:01/1 0x6000:02/1 0x6000:03/1 0x6000:04/1 0x6000:05/1 0x6000:06/1 0x6000:07/1 0x6000:08/1 0x6000:09/1 0x6000:10/1 0x6000:11/1 0x6000:12/1 0x6000:13/1 0x1C32:32/1 0x1801:07/1 0x1801:09/1 0x6000:17/32 0x6000:18/32
[  198.251024] EtherCAT ERROR 0-2: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).
[  198.252024] EtherCAT ERROR 0-2: AL status message 0x001D: "Invalid output configuration".
[  198.254024] EtherCAT 0-2: Acknowledged state PREOP.
[/code]
[/code]
[code][code]ethercat-conf machine config
[code]<masters>
    <master idx="0" appTimePeriod="1000000" refClockSyncCycles="1000" name="m0">
    <!-- EP5101 - Incr. Encoder Input -->
        <slave idx="0" type="generic" vid="0x00000002" pid="0x13ED4052" name="EP5101-0" configPdos="true">
            <!-- IMPORTANT: sometime (sync1Cycle = n * sync0Cycle) sync1Cycle must be appTimePeriod - sync0Cycle) -->
            <!-- Check your DC config...generated is from impoted .xml but assignActivate is hard coded ... it should be different -->
            <dcConf assignActivate="1000" sync0Cycle="1000000" sync0Shift="0" sync1Cycle="0" sync1Shift="0"/>
            <sdoConfig idx="1C12" subIdx="complete">
                <sdoDataRaw data="01000116"/>
            </sdoConfig>
            <sdoConfig idx="1C13" subIdx="complete">
                <sdoDataRaw data="0100011A"/>
            </sdoConfig>
            <syncManager idx="0" dir="out"/>
            <syncManager idx="1" dir="in"/>
            <syncManager idx="2" dir="out">
            <pdo idx="1601">
                    <!-- Enable latch C -->
                    <pdoEntry idx="7000" subIdx="01" bitLen="1" halPin="enable-latch-C" halType="bit"/>
                    <!-- Enable latch extern on positive edge -->
                    <pdoEntry idx="7000" subIdx="02" bitLen="1" halPin="ena-latch-ext-on-pos_edge" halType="bit"/>
                    <!-- Set counter -->
                    <pdoEntry idx="7000" subIdx="03" bitLen="1" halPin="set-counter" halType="bit"/>
                    <!-- Enable latch extern on negative edge -->
                    <pdoEntry idx="7000" subIdx="04" bitLen="1" halPin="ena-latch-ext-on-neg_edge" halType="bit"/>
                    <!-- Set counter value -->
                    <pdoEntry idx="7000" subIdx="11" bitLen="32" halPin="set-counter_value" halType="u32"/>
            </pdo>
            </syncManager>
            <syncManager idx="3" dir="in">
                <pdo idx="1A01">
                <pdoEntry idx="6000" subIdx="01" bitLen="1" halPin="Status-Latch-C-197" halType="bit">
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="02" bitLen="1" halPin="Status-Latch-e-198" halType="bit">
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="03" bitLen="1" halPin="Status-Set-cou-199" halType="bit">
                <!-- ENC STATUS-Status- -Set-cou-199 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="04" bitLen="1" halPin="Status-Counter-200" halType="bit">
                <!-- ENC STATUS-Status- -Counter-200 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="05" bitLen="1" halPin="Status-Counter-201" halType="bit">
                <!-- ENC STATUS-Status- -Counter-201 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="06" bitLen="1" halPin="Status-Status-202" halType="bit">
                <!-- ENC STATUS-Status- -Status- -202 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="07" bitLen="1" halPin="Status-Open-ci-203" halType="bit">
                <!-- ENC STATUS-Status- -Open-ci-203 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="08" bitLen="1" halPin="Status-Extrapo-204" halType="bit">
                <!-- ENC STATUS-Status- -Extrapo-204 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="09" bitLen="1" halPin="Status-Status-205" halType="bit">
                <!-- ENC STATUS-Status- -Status- -205 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="10" bitLen="1" halPin="Status-Status-206" halType="bit">
                <!-- ENC STATUS-Status- -Status- -206 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="11" bitLen="1" halPin="Status-Status-207" halType="bit">
                <!-- ENC STATUS-Status- -Status- -207 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="12" bitLen="1" halPin="Status-Status-208" halType="bit">
                <!-- ENC STATUS-Status- -Status- -208 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="13" bitLen="1" halPin="Status-Status-209" halType="bit">
                <!-- ENC STATUS-Status- -Status- -209 -->
                </pdoEntry>
                <pdoEntry idx="1C32" subIdx="32" bitLen="1" halPin="Status-Sync-er-210" halType="bit">
                <!-- ENC STATUS-Status- -Sync-er-210 -->
                </pdoEntry>
                <pdoEntry idx="1801" subIdx="07" bitLen="1" halPin="Status-TxPDO-S-211" halType="bit">
                <!-- ENC STATUS-Status- -TxPDO-S-211 -->
                </pdoEntry>
                <pdoEntry idx="1801" subIdx="09" bitLen="1" halPin="Status-TxPDO-T-212" halType="bit">
                <!-- ENC STATUS-Status- -TxPDO-T-212 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="17" bitLen="32" halPin="Counter-value-213" halType="s32">
                <!-- ENC STATUS-Counter-value-213 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="18" bitLen="32" halPin="Latch-value-214" halType="s32">
                <!-- ENC STATUS-Latch-value-214 -->
                </pdoEntry>
            </pdo>
            </syncManager>
        </slave>
        <slave idx="1" type="generic" vid="0x00000002" pid="0x13ED4052" name="EP5101-1" configPdos="true">
            <!-- IMPORTANT: sometime (sync1Cycle = n * sync0Cycle) sync1Cycle must be appTimePeriod - sync0Cycle) -->
            <!-- Check your DC config...generated is from impoted .xml but assignActivate is hard coded ... it should be different -->
            <dcConf assignActivate="1000" sync0Cycle="1000000" sync0Shift="0" sync1Cycle="0" sync1Shift="0"/>
            <sdoConfig idx="1C12" subIdx="complete">
                <sdoDataRaw data="01000116"/>
            </sdoConfig>
                <sdoConfig idx="1C13" subIdx="complete">
            <sdoDataRaw data="0100011A"/>
            </sdoConfig>
            <syncManager idx="0" dir="out"/>
            <syncManager idx="1" dir="in"/>
            <syncManager idx="2" dir="out">
            <pdo idx="1601">
                    <!-- Enable latch C -->
                    <pdoEntry idx="7000" subIdx="01" bitLen="1" halPin="enable-latch-C" halType="bit"/>
                    <!-- Enable latch extern on positive edge -->
                    <pdoEntry idx="7000" subIdx="02" bitLen="1" halPin="ena-latch-ext-on-pos_edge" halType="bit"/>
                    <!-- Set counter -->
                    <pdoEntry idx="7000" subIdx="03" bitLen="1" halPin="set-counter" halType="bit"/>
                    <!-- Enable latch extern on negative edge -->
                    <pdoEntry idx="7000" subIdx="04" bitLen="1" halPin="ena-latch-ext-on-neg_edge" halType="bit"/>
                    <!-- Set counter value -->
                    <pdoEntry idx="7000" subIdx="11" bitLen="32" halPin="set-counter_value" halType="u32"/>
            </pdo>
            </syncManager>
            <syncManager idx="3" dir="in">
                <pdo idx="1A01">
                <pdoEntry idx="6000" subIdx="01" bitLen="1" halPin="Status-Latch-C-197" halType="bit">
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="02" bitLen="1" halPin="Status-Latch-e-198" halType="bit">
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="03" bitLen="1" halPin="Status-Set-cou-199" halType="bit">
                <!-- ENC STATUS-Status- -Set-cou-199 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="04" bitLen="1" halPin="Status-Counter-200" halType="bit">
                <!-- ENC STATUS-Status- -Counter-200 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="05" bitLen="1" halPin="Status-Counter-201" halType="bit">
                <!-- ENC STATUS-Status- -Counter-201 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="06" bitLen="1" halPin="Status-Status-202" halType="bit">
                <!-- ENC STATUS-Status- -Status- -202 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="07" bitLen="1" halPin="Status-Open-ci-203" halType="bit">
                <!-- ENC STATUS-Status- -Open-ci-203 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="08" bitLen="1" halPin="Status-Extrapo-204" halType="bit">
                <!-- ENC STATUS-Status- -Extrapo-204 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="09" bitLen="1" halPin="Status-Status-205" halType="bit">
                <!-- ENC STATUS-Status- -Status- -205 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="10" bitLen="1" halPin="Status-Status-206" halType="bit">
                <!-- ENC STATUS-Status- -Status- -206 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="11" bitLen="1" halPin="Status-Status-207" halType="bit">
                <!-- ENC STATUS-Status- -Status- -207 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="12" bitLen="1" halPin="Status-Status-208" halType="bit">
                <!-- ENC STATUS-Status- -Status- -208 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="13" bitLen="1" halPin="Status-Status-209" halType="bit">
                <!-- ENC STATUS-Status- -Status- -209 -->
                </pdoEntry>
                <pdoEntry idx="1C32" subIdx="32" bitLen="1" halPin="Status-Sync-er-210" halType="bit">
                <!-- ENC STATUS-Status- -Sync-er-210 -->
                </pdoEntry>
                <pdoEntry idx="1801" subIdx="07" bitLen="1" halPin="Status-TxPDO-S-211" halType="bit">
                <!-- ENC STATUS-Status- -TxPDO-S-211 -->
                </pdoEntry>
                <pdoEntry idx="1801" subIdx="09" bitLen="1" halPin="Status-TxPDO-T-212" halType="bit">
                <!-- ENC STATUS-Status- -TxPDO-T-212 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="17" bitLen="32" halPin="Counter-value-213" halType="s32">
                <!-- ENC STATUS-Counter-value-213 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="18" bitLen="32" halPin="Latch-value-214" halType="s32">
                <!-- ENC STATUS-Latch-value-214 -->
                </pdoEntry>
            </pdo>
            </syncManager>
        </slave>
        <slave idx="2" type="generic" vid="0x00000002" pid="0x13ED4052" name="EP5101-2" configPdos="true">
            <!-- IMPORTANT: sometime (sync1Cycle = n * sync0Cycle) sync1Cycle must be appTimePeriod - sync0Cycle) -->
            <!-- Check your DC config...generated is from impoted .xml but assignActivate is hard coded ... it should be different -->
            <dcConf assignActivate="1000" sync0Cycle="1000000" sync0Shift="0" sync1Cycle="0" sync1Shift="0"/>
            <sdoConfig idx="1C12" subIdx="complete">
                <sdoDataRaw data="01000116"/>
            </sdoConfig>
                <sdoConfig idx="1C13" subIdx="complete">
            <sdoDataRaw data="0100011A"/>
            </sdoConfig>
            <syncManager idx="0" dir="out"/>
            <syncManager idx="1" dir="in"/>
            <syncManager idx="2" dir="out">
            <pdo idx="1601">
                    <!-- Enable latch C -->
                    <pdoEntry idx="7000" subIdx="01" bitLen="1" halPin="enable-latch-C" halType="bit"/>
                    <!-- Enable latch extern on positive edge -->
                    <pdoEntry idx="7000" subIdx="02" bitLen="1" halPin="ena-latch-ext-on-pos_edge" halType="bit"/>
                    <!-- Set counter -->
                    <pdoEntry idx="7000" subIdx="03" bitLen="1" halPin="set-counter" halType="bit"/>
                    <!-- Enable latch extern on negative edge -->
                    <pdoEntry idx="7000" subIdx="04" bitLen="1" halPin="ena-latch-ext-on-neg_edge" halType="bit"/>
                    <!-- Set counter value -->
                    <pdoEntry idx="7000" subIdx="11" bitLen="32" halPin="set-counter_value" halType="u32"/>
            </pdo>
            </syncManager>
            <syncManager idx="3" dir="in">
                <pdo idx="1A01">
                <pdoEntry idx="6000" subIdx="01" bitLen="1" halPin="Status-Latch-C-197" halType="bit">
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="02" bitLen="1" halPin="Status-Latch-e-198" halType="bit">
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="03" bitLen="1" halPin="Status-Set-cou-199" halType="bit">
                <!-- ENC STATUS-Status- -Set-cou-199 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="04" bitLen="1" halPin="Status-Counter-200" halType="bit">
                <!-- ENC STATUS-Status- -Counter-200 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="05" bitLen="1" halPin="Status-Counter-201" halType="bit">
                <!-- ENC STATUS-Status- -Counter-201 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="06" bitLen="1" halPin="Status-Status-202" halType="bit">
                <!-- ENC STATUS-Status- -Status- -202 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="07" bitLen="1" halPin="Status-Open-ci-203" halType="bit">
                <!-- ENC STATUS-Status- -Open-ci-203 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="08" bitLen="1" halPin="Status-Extrapo-204" halType="bit">
                <!-- ENC STATUS-Status- -Extrapo-204 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="09" bitLen="1" halPin="Status-Status-205" halType="bit">
                <!-- ENC STATUS-Status- -Status- -205 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="10" bitLen="1" halPin="Status-Status-206" halType="bit">
                <!-- ENC STATUS-Status- -Status- -206 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="11" bitLen="1" halPin="Status-Status-207" halType="bit">
                <!-- ENC STATUS-Status- -Status- -207 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="12" bitLen="1" halPin="Status-Status-208" halType="bit">
                <!-- ENC STATUS-Status- -Status- -208 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="13" bitLen="1" halPin="Status-Status-209" halType="bit">
                <!-- ENC STATUS-Status- -Status- -209 -->
                </pdoEntry>
                <pdoEntry idx="1C32" subIdx="32" bitLen="1" halPin="Status-Sync-er-210" halType="bit">
                <!-- ENC STATUS-Status- -Sync-er-210 -->
                </pdoEntry>
                <pdoEntry idx="1801" subIdx="07" bitLen="1" halPin="Status-TxPDO-S-211" halType="bit">
                <!-- ENC STATUS-Status- -TxPDO-S-211 -->
                </pdoEntry>
                <pdoEntry idx="1801" subIdx="09" bitLen="1" halPin="Status-TxPDO-T-212" halType="bit">
                <!-- ENC STATUS-Status- -TxPDO-T-212 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="17" bitLen="32" halPin="Counter-value-213" halType="s32">
                <!-- ENC STATUS-Counter-value-213 -->
                </pdoEntry>
                <pdoEntry idx="6000" subIdx="18" bitLen="32" halPin="Latch-value-214" halType="s32">
                <!-- ENC STATUS-Latch-value-214 -->
                </pdoEntry>
            </pdo>
            </syncManager>
        </slave>
    </master>
</masters>
[/code][/code]
[/code]
[code][code][code]ethercat slaves for now
[code]cnc@CNC-01:~/linuxcnc/configs/Maho400E-LinuxCNC$ ethercat slaves
0  0:0  PREOP  +  EP5101-0011 1K. Inc. Encoder 5V, D-SUB15
1  0:1  PREOP  +  EP5101-0011 1K. Inc. Encoder 5V, D-SUB15
2  0:2  PREOP  +  EP5101-0011 1K. Inc. Encoder 5V, D-SUB15
[/code][/code][/code]
[/code]
Attachments:
Last edit: 30 Jun 2025 09:32 by PedPEx. Reason: fixed code parts

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

More
05 Jul 2025 20:43 #331343 by endian
Hi there,

I can not answer you right because I do not have your termals at my bench but that tool has other feature .. if you are able to export the ethercat pdos from your terminal and copy paste the active config to to console right after you type pdos and hit enter .. that tool will translate the terminal output to shape very very common for the config and you just import the sdos and DC config...

I am not expert in the encoder terminals from beckhoff but if it does not support mapping .. everything have to be controlled by pdos or by the EEPROM setup itself.. you have to try them

About the translator tool .. it is not perfect and it should gave us a wrong config but in the 90% percent it is generating the full config right.. i have compared my handmade configs and generated configs and with my hardware it is same same.. i have tested the kollmorgen s300, pilz pmctendo,nidec m753, el6751, el6731,el6631..

About initCmds .. init cmds ==sdoconfigs stuff .. i was little bit lost there but finally i catched that.. i customize the tool to not generate the initCmds in the mative format in the .xml file export..

If you are from eu, send me the card by the post and I can have a look at it .. i have some ttl encoders 

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

Time to create page: 0.079 seconds
Powered by Kunena Forum