Search Results (Searched for: halpin)
- Tntmold
- Tntmold
01 Jul 2025 13:40 - 01 Jul 2025 13:42
Replied by Tntmold on topic General Questions about using ethercat
General Questions about using ethercat
Category: EtherCAT
halshow value for cia402.0.csp-mode is true, but the drive parameters (value of modes-of-operation/cia402.0.opmode/lcec.0.x.opmode) is 0.
in the XML file there is
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="S32"/>
in the HAL file there is:
setp cia402.0.csp-mode 1
...
net x-modes-of-operation cia402.0.opmode => lcec.0.X.opmode
...
The drive wants parameter 6060 to be 8 for CSP mode. How do I correct that?
in the XML file there is
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="S32"/>
in the HAL file there is:
setp cia402.0.csp-mode 1
...
net x-modes-of-operation cia402.0.opmode => lcec.0.X.opmode
...
The drive wants parameter 6060 to be 8 for CSP mode. How do I correct that?
- PedPEx
- PedPEx
29 Jun 2025 22:21 - 30 Jun 2025 09:32
Replied by PedPEx on topic Problems switching PDO assignments (EP5101-0011)
Problems switching PDO assignments (EP5101-0011)
Category: EtherCAT
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]
[/code]
[/code]
[/code][/code]
[/code]
[/code][/code][/code]
[/code]
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]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]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]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]
- PedPEx
- PedPEx
22 Jun 2025 16:09
Problems switching PDO assignments (EP5101-0011) was created by PedPEx
Problems switching PDO assignments (EP5101-0011)
Category: EtherCAT
Hello all 
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

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>
- Kieran
- Kieran
20 Jun 2025 03:58 - 20 Jun 2025 04:02
Replied by Kieran on topic Getting Ebay 2.6kw ethercat kit going.
Getting Ebay 2.6kw ethercat kit going.
Category: EtherCAT
well I reRan lcec_configgen and got a different reading on slave IDX 2 not sure why. I was able to fart around with the XML and get the servo going. it about jumped off my bench. she's a ripper.
working XML snippet for the Ebay servo/ DVS P200SE drive.
working XML snippet for the Ebay servo/ DVS P200SE drive.
Warning: Spoiler!
<slave idx="2" type="generic" vid="0x00445653" pid="0x00009252" configPdos="true">
<syncManager idx="2" dir="out">
<pdo idx="1701">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
<pdoEntry idx="60fe" subIdx="01" bitLen="32" halPin="physical-outputs" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1B01">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
<pdoEntry idx="60f4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touch-probe-pos1-pos-value" halType="s32"/>
<pdoEntry idx="60bc" subIdx="00" bitLen="32" halPin="touch-probe-pos2-pos-value" halType="s32"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digital-inputs" halType="u32"/>
</pdo>
</syncManager>
</slave>
<syncManager idx="2" dir="out">
<pdo idx="1701">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
<pdoEntry idx="60fe" subIdx="01" bitLen="32" halPin="physical-outputs" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1B01">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
<pdoEntry idx="60f4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touch-probe-pos1-pos-value" halType="s32"/>
<pdoEntry idx="60bc" subIdx="00" bitLen="32" halPin="touch-probe-pos2-pos-value" halType="s32"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digital-inputs" halType="u32"/>
</pdo>
</syncManager>
</slave>
- Kieran
- Kieran
19 Jun 2025 04:58 - 19 Jun 2025 05:05
Getting Ebay 2.6kw ethercat kit going. was created by Kieran
Getting Ebay 2.6kw ethercat kit going.
Category: EtherCAT
Im trying to get my 2.6kw spindle servo going. its got a P200SE drive. the instructions are written in Chinese. I used google translate and it worked pretty good. Right now im running it as a Z axis just to see if i can get it working. I got my XML setup enough that Linuxcnc reads the encoder no problem. the servo powers up and holds position along with my stepperonline X and y servos. my current roadblock is that its not listening to commands and doesnt move and it gets a following error shortly after. if i power off and turn the motor the DRO moves the distance expected so that's a good sign. the servo load meter on the PYvcp is workign for this servo too, when i "fight" the servo. i must just be missing something simple in my XML?
lcec_configgen gives me this
my xml so far
lcec_configgen gives me this
Warning: Spoiler!
<masters>
<master idx="0">
<slave idx="0" type="generic" vid="0x00400000" pid="0x00000715" name="D1">
<!--AS715N_sAxis_V0.10-->
<syncManager idx="0" dir="in"/>
<syncManager idx="1" dir="out"/>
<syncManager idx="2" dir="out">
<pdo idx="1701">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="pin-6040-00" halType="BLANK"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="pin-607a-00" halType="BLANK"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="pin-60b8-00" halType="BLANK"/>
<pdoEntry idx="60fe" subIdx="01" bitLen="32" halPin="pin-60fe-01" halType="BLANK"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1b01">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="pin-603f-00" halType="BLANK"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="pin-6041-00" halType="BLANK"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pin-6064-00" halType="BLANK"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="pin-6077-00" halType="BLANK"/>
<pdoEntry idx="60f4" subIdx="00" bitLen="32" halPin="pin-60f4-00" halType="BLANK"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="pin-60b9-00" halType="BLANK"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="pin-60ba-00" halType="BLANK"/>
<pdoEntry idx="60bc" subIdx="00" bitLen="32" halPin="pin-60bc-00" halType="BLANK"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="pin-60fd-00" halType="BLANK"/>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="0x00400000" pid="0x00000715" name="D2">
<!--AS715N_sAxis_V0.10-->
<syncManager idx="0" dir="in"/>
<syncManager idx="1" dir="out"/>
<syncManager idx="2" dir="out">
<pdo idx="1701">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="pin-6040-00" halType="BLANK"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="pin-607a-00" halType="BLANK"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="pin-60b8-00" halType="BLANK"/>
<pdoEntry idx="60fe" subIdx="01" bitLen="32" halPin="pin-60fe-01" halType="BLANK"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1b01">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="pin-603f-00" halType="BLANK"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="pin-6041-00" halType="BLANK"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pin-6064-00" halType="BLANK"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="pin-6077-00" halType="BLANK"/>
<pdoEntry idx="60f4" subIdx="00" bitLen="32" halPin="pin-60f4-00" halType="BLANK"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="pin-60b9-00" halType="BLANK"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="pin-60ba-00" halType="BLANK"/>
<pdoEntry idx="60bc" subIdx="00" bitLen="32" halPin="pin-60bc-00" halType="BLANK"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="pin-60fd-00" halType="BLANK"/>
</pdo>
</syncManager>
</slave>
<slave idx="2" type="basic_cia402" vid="0x00445653" pid="0x00009252" name="D3">
<!--DVS_ETHCAT_v1.004-->
<modParam name="ciaRxPDOEntryLimit" value="9"/>
<modParam name="ciaTxPDOEntryLimit" value="9"/>
<modParam name="enablePP" value="true"/>
<modParam name="enablePV" value="true"/>
<modParam name="enableTQ" value="true"/>
<modParam name="enableHM" value="true"/>
<modParam name="enableCSP" value="true"/>
<modParam name="enableCSV" value="true"/>
<modParam name="enableCST" value="true"/>
<modParam name="enableActualFollowingError" value="true"/>
<modParam name="enableActualTorque" value="true"/>
<modParam name="enableDigitalInput" value="true"/>
<modParam name="digitalInChannels" value="16"/>
<modParam name="enableDigitalOutput" value="true"/>
<modParam name="digitalOutChannels" value="16"/>
<modParam name="enableErrorCode" value="true"/>
<modParam name="enableFollowingErrorWindow" value="true"/>
<modParam name="enableHomeAccel" value="true"/>
<modParam name="enableInterpolationTimePeriod" value="true"/>
<modParam name="enableMaximumTorque" value="true"/>
<modParam name="enableMotorRatedTorque" value="true"/>
<modParam name="enablePolarity" value="true"/>
<modParam name="enablePositionDemand" value="true"/>
<modParam name="enablePositioningTime" value="true"/>
<modParam name="enablePositioningWindow" value="true"/>
<modParam name="enableProbeStatus" value="true"/>
<modParam name="enableProfileAccel" value="true"/>
<modParam name="enableProfileDecel" value="true"/>
<modParam name="enableProfileMaxVelocity" value="true"/>
<modParam name="enableProfileVelocity" value="true"/>
<modParam name="enableTargetTorque" value="true"/>
<modParam name="enableTorqueDemand" value="true"/>
<modParam name="enableTorqueSlope" value="true"/>
<modParam name="enableVelocityErrorTime" value="true"/>
<modParam name="enableVelocityErrorWindow" value="true"/>
</slave>
</master>
</masters>
<master idx="0">
<slave idx="0" type="generic" vid="0x00400000" pid="0x00000715" name="D1">
<!--AS715N_sAxis_V0.10-->
<syncManager idx="0" dir="in"/>
<syncManager idx="1" dir="out"/>
<syncManager idx="2" dir="out">
<pdo idx="1701">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="pin-6040-00" halType="BLANK"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="pin-607a-00" halType="BLANK"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="pin-60b8-00" halType="BLANK"/>
<pdoEntry idx="60fe" subIdx="01" bitLen="32" halPin="pin-60fe-01" halType="BLANK"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1b01">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="pin-603f-00" halType="BLANK"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="pin-6041-00" halType="BLANK"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pin-6064-00" halType="BLANK"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="pin-6077-00" halType="BLANK"/>
<pdoEntry idx="60f4" subIdx="00" bitLen="32" halPin="pin-60f4-00" halType="BLANK"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="pin-60b9-00" halType="BLANK"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="pin-60ba-00" halType="BLANK"/>
<pdoEntry idx="60bc" subIdx="00" bitLen="32" halPin="pin-60bc-00" halType="BLANK"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="pin-60fd-00" halType="BLANK"/>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="0x00400000" pid="0x00000715" name="D2">
<!--AS715N_sAxis_V0.10-->
<syncManager idx="0" dir="in"/>
<syncManager idx="1" dir="out"/>
<syncManager idx="2" dir="out">
<pdo idx="1701">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="pin-6040-00" halType="BLANK"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="pin-607a-00" halType="BLANK"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="pin-60b8-00" halType="BLANK"/>
<pdoEntry idx="60fe" subIdx="01" bitLen="32" halPin="pin-60fe-01" halType="BLANK"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1b01">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="pin-603f-00" halType="BLANK"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="pin-6041-00" halType="BLANK"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pin-6064-00" halType="BLANK"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="pin-6077-00" halType="BLANK"/>
<pdoEntry idx="60f4" subIdx="00" bitLen="32" halPin="pin-60f4-00" halType="BLANK"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="pin-60b9-00" halType="BLANK"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="pin-60ba-00" halType="BLANK"/>
<pdoEntry idx="60bc" subIdx="00" bitLen="32" halPin="pin-60bc-00" halType="BLANK"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="pin-60fd-00" halType="BLANK"/>
</pdo>
</syncManager>
</slave>
<slave idx="2" type="basic_cia402" vid="0x00445653" pid="0x00009252" name="D3">
<!--DVS_ETHCAT_v1.004-->
<modParam name="ciaRxPDOEntryLimit" value="9"/>
<modParam name="ciaTxPDOEntryLimit" value="9"/>
<modParam name="enablePP" value="true"/>
<modParam name="enablePV" value="true"/>
<modParam name="enableTQ" value="true"/>
<modParam name="enableHM" value="true"/>
<modParam name="enableCSP" value="true"/>
<modParam name="enableCSV" value="true"/>
<modParam name="enableCST" value="true"/>
<modParam name="enableActualFollowingError" value="true"/>
<modParam name="enableActualTorque" value="true"/>
<modParam name="enableDigitalInput" value="true"/>
<modParam name="digitalInChannels" value="16"/>
<modParam name="enableDigitalOutput" value="true"/>
<modParam name="digitalOutChannels" value="16"/>
<modParam name="enableErrorCode" value="true"/>
<modParam name="enableFollowingErrorWindow" value="true"/>
<modParam name="enableHomeAccel" value="true"/>
<modParam name="enableInterpolationTimePeriod" value="true"/>
<modParam name="enableMaximumTorque" value="true"/>
<modParam name="enableMotorRatedTorque" value="true"/>
<modParam name="enablePolarity" value="true"/>
<modParam name="enablePositionDemand" value="true"/>
<modParam name="enablePositioningTime" value="true"/>
<modParam name="enablePositioningWindow" value="true"/>
<modParam name="enableProbeStatus" value="true"/>
<modParam name="enableProfileAccel" value="true"/>
<modParam name="enableProfileDecel" value="true"/>
<modParam name="enableProfileMaxVelocity" value="true"/>
<modParam name="enableProfileVelocity" value="true"/>
<modParam name="enableTargetTorque" value="true"/>
<modParam name="enableTorqueDemand" value="true"/>
<modParam name="enableTorqueSlope" value="true"/>
<modParam name="enableVelocityErrorTime" value="true"/>
<modParam name="enableVelocityErrorWindow" value="true"/>
</slave>
</master>
</masters>
my xml so far
Warning: Spoiler!
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="2" type="generic" vid="0x00445653" pid="0x00009252" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="2" type="generic" vid="0x00445653" pid="0x00009252" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
- esmurf
- esmurf
11 Jun 2025 04:15
Replied by esmurf on topic weird behavior: homing X messes up Y
weird behavior: homing X messes up Y
Category: EtherCAT
You add a new pdoentry for 606C to the 1A00 PDO in your ethercat-conf.xml file. In this entry idx, subidx, bitlen, is from the A6 manual, you chose a name for "halPin".
Inside you hal file you can then use that name. E.g. like lcec.0.X.yourname
In this example 0 is your first ethercat interface, X is the name of your slave. See "halshow" -> Pins ...
Inside you hal file you can then use that name. E.g. like lcec.0.X.yourname
In this example 0 is your first ethercat interface, X is the name of your slave. See "halshow" -> Pins ...
- deltafox24
- deltafox24
10 Jun 2025 18:44
Replied by deltafox24 on topic SANGE elec IO
SANGE elec IO
Category: EtherCAT
thanks for the tip, i got the lcec_configgen file
Based on it, I modified my XML file in this way
but still after using the IO module, I get an error when lifting the zed axis.
<slave idx="4" type="generic" vid="0xee000002" pid="0x00010205" name="D5">
<!--SG-ELC-ADIO-DI16-DO16-PNP(Digital 16-Input/16-Output)-->
<syncManager idx="0" dir="out">
<pdo idx="1a00">
<!--Output Group 0-->
<pdoEntry idx="3101" subIdx="01" bitLen="8" halPin="output-00-07-" halType="BLANK"/>
</pdo>
</syncManager>
<syncManager idx="1" dir="out">
<pdo idx="1a01">
<!--Output Group 1-->
<pdoEntry idx="3101" subIdx="02" bitLen="8" halPin="output-08-15-" halType="BLANK"/>
</pdo>
</syncManager>
<syncManager idx="2" dir="in">
<pdo idx="1600">
<!--Input Group 0-->
<pdoEntry idx="3001" subIdx="01" bitLen="8" halPin="input-00-07-" halType="BLANK"/>
</pdo>
<pdo idx="1601">
<!--Input Group 1-->
<pdoEntry idx="3001" subIdx="02" bitLen="8" halPin="input-08-15-" halType="BLANK"/>
</pdo>
</syncManager>
</slave>
Based on it, I modified my XML file in this way
<!-- IO -->
<slave idx="4" type="generic" vid="EE000002" pid="00010205" configPdos="true">
<dcConf assignActivate="0000" sync0Cycle="0" sync0Shift="0"/>
<syncManager idx="0" dir="out">
<pdo idx="1a00">
<pdoEntry idx="3101" subIdx="1" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="out-00" halType="bit"/>
<complexEntry bitLen="1" halPin="out-01" halType="bit"/>
<complexEntry bitLen="1" halPin="out-02" halType="bit"/>
<complexEntry bitLen="1" halPin="out-03" halType="bit"/>
<complexEntry bitLen="1" halPin="out-04" halType="bit"/>
<complexEntry bitLen="1" halPin="out-05" halType="bit"/>
<complexEntry bitLen="1" halPin="out-06" halType="bit"/>
<complexEntry bitLen="1" halPin="out-07" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
<syncManager idx="1" dir="out">
<pdo idx="1a01">
<pdoEntry idx="3101" subIdx="2" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="out-08" halType="bit"/>
<complexEntry bitLen="1" halPin="out-09" halType="bit"/>
<complexEntry bitLen="1" halPin="out-10" halType="bit"/>
<complexEntry bitLen="1" halPin="out-11" halType="bit"/>
<complexEntry bitLen="1" halPin="out-12" halType="bit"/>
<complexEntry bitLen="1" halPin="out-13" halType="bit"/>
<complexEntry bitLen="1" halPin="out-14" halType="bit"/>
<complexEntry bitLen="1" halPin="out-15" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
<syncManager idx="2" dir="in">
<pdo idx="1600">
<pdoEntry idx="3001" subIdx="1" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="in-00" halType="bit"/>
<complexEntry bitLen="1" halPin="in-01" halType="bit"/>
<complexEntry bitLen="1" halPin="in-02" halType="bit"/>
<complexEntry bitLen="1" halPin="in-03" halType="bit"/>
<complexEntry bitLen="1" halPin="in-04" halType="bit"/>
<complexEntry bitLen="1" halPin="in-05" halType="bit"/>
<complexEntry bitLen="1" halPin="in-06" halType="bit"/>
<complexEntry bitLen="1" halPin="in-07" halType="bit"/>
</pdoEntry>
</pdo>
<pdo idx="1601">
<pdoEntry idx="3001" subIdx="2" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="in-08" halType="bit"/>
<complexEntry bitLen="1" halPin="in-09" halType="bit"/>
<complexEntry bitLen="1" halPin="in-10" halType="bit"/>
<complexEntry bitLen="1" halPin="in-11" halType="bit"/>
<complexEntry bitLen="1" halPin="in-12" halType="bit"/>
<complexEntry bitLen="1" halPin="in-13" halType="bit"/>
<complexEntry bitLen="1" halPin="in-14" halType="bit"/>
<complexEntry bitLen="1" halPin="in-15" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
but still after using the IO module, I get an error when lifting the zed axis.
- deltafox24
- deltafox24
09 Jun 2025 12:53
SANGE elec IO was created by deltafox24
SANGE elec IO
Category: EtherCAT
Hi everyone,
I bought this device: SG-ELC-ADIO-DI16-DO16-PNP.
I wrote a custom XML file for it, but for some reason, after I load it, there's a 90% chance that EtherCAT crashes with an error.
I suspect that it might be slowing down the entire system, or maybe I wrote the XML incorrectly.Here’s what I wrote:
<slave idx="4" type="generic" vid="EE000002" pid="00010205" configPdos="true" >
<dcConf assignActivate="0000" sync0Cycle="0" sync0Shift="0"/>
<syncManager idx="0" dir="out">
<pdo idx="1a00">
<pdoEntry idx="3101" subIdx="1" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="out-00" halType="bit"/>
<complexEntry bitLen="1" halPin="out-01" halType="bit"/>
<complexEntry bitLen="1" halPin="out-02" halType="bit"/>
<complexEntry bitLen="1" halPin="out-03" halType="bit"/>
<complexEntry bitLen="1" halPin="out-04" halType="bit"/>
<complexEntry bitLen="1" halPin="out-05" halType="bit"/>
<complexEntry bitLen="1" halPin="out-06" halType="bit"/>
<complexEntry bitLen="1" halPin="out-07" halType="bit"/>
</pdoEntry>
</pdo>
<pdo idx="1a01">
<pdoEntry idx="3101" subIdx="2" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="out-08" halType="bit"/>
<complexEntry bitLen="1" halPin="out-09" halType="bit"/>
<complexEntry bitLen="1" halPin="out-10" halType="bit"/>
<complexEntry bitLen="1" halPin="out-11" halType="bit"/>
<complexEntry bitLen="1" halPin="out-12" halType="bit"/>
<complexEntry bitLen="1" halPin="out-13" halType="bit"/>
<complexEntry bitLen="1" halPin="out-14" halType="bit"/>
<complexEntry bitLen="1" halPin="out-15" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
<syncManager idx="2" dir="in">
<pdo idx="1600">
<pdoEntry idx="3001" subIdx="1" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="in-00" halType="bit"/>
<complexEntry bitLen="1" halPin="in-01" halType="bit"/>
<complexEntry bitLen="1" halPin="in-02" halType="bit"/>
<complexEntry bitLen="1" halPin="in-03" halType="bit"/>
<complexEntry bitLen="1" halPin="in-04" halType="bit"/>
<complexEntry bitLen="1" halPin="in-05" halType="bit"/>
<complexEntry bitLen="1" halPin="in-06" halType="bit"/>
<complexEntry bitLen="1" halPin="in-07" halType="bit"/>
</pdoEntry>
</pdo>
<pdo idx="1601">
<pdoEntry idx="3001" subIdx="2" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="in-08" halType="bit"/>
<complexEntry bitLen="1" halPin="in-09" halType="bit"/>
<complexEntry bitLen="1" halPin="in-10" halType="bit"/>
<complexEntry bitLen="1" halPin="in-11" halType="bit"/>
<complexEntry bitLen="1" halPin="in-12" halType="bit"/>
<complexEntry bitLen="1" halPin="in-13" halType="bit"/>
<complexEntry bitLen="1" halPin="in-14" halType="bit"/>
<complexEntry bitLen="1" halPin="in-15" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
And I’m also attaching the original XML file.
I bought this device: SG-ELC-ADIO-DI16-DO16-PNP.
I wrote a custom XML file for it, but for some reason, after I load it, there's a 90% chance that EtherCAT crashes with an error.
I suspect that it might be slowing down the entire system, or maybe I wrote the XML incorrectly.Here’s what I wrote:
<slave idx="4" type="generic" vid="EE000002" pid="00010205" configPdos="true" >
<dcConf assignActivate="0000" sync0Cycle="0" sync0Shift="0"/>
<syncManager idx="0" dir="out">
<pdo idx="1a00">
<pdoEntry idx="3101" subIdx="1" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="out-00" halType="bit"/>
<complexEntry bitLen="1" halPin="out-01" halType="bit"/>
<complexEntry bitLen="1" halPin="out-02" halType="bit"/>
<complexEntry bitLen="1" halPin="out-03" halType="bit"/>
<complexEntry bitLen="1" halPin="out-04" halType="bit"/>
<complexEntry bitLen="1" halPin="out-05" halType="bit"/>
<complexEntry bitLen="1" halPin="out-06" halType="bit"/>
<complexEntry bitLen="1" halPin="out-07" halType="bit"/>
</pdoEntry>
</pdo>
<pdo idx="1a01">
<pdoEntry idx="3101" subIdx="2" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="out-08" halType="bit"/>
<complexEntry bitLen="1" halPin="out-09" halType="bit"/>
<complexEntry bitLen="1" halPin="out-10" halType="bit"/>
<complexEntry bitLen="1" halPin="out-11" halType="bit"/>
<complexEntry bitLen="1" halPin="out-12" halType="bit"/>
<complexEntry bitLen="1" halPin="out-13" halType="bit"/>
<complexEntry bitLen="1" halPin="out-14" halType="bit"/>
<complexEntry bitLen="1" halPin="out-15" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
<syncManager idx="2" dir="in">
<pdo idx="1600">
<pdoEntry idx="3001" subIdx="1" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="in-00" halType="bit"/>
<complexEntry bitLen="1" halPin="in-01" halType="bit"/>
<complexEntry bitLen="1" halPin="in-02" halType="bit"/>
<complexEntry bitLen="1" halPin="in-03" halType="bit"/>
<complexEntry bitLen="1" halPin="in-04" halType="bit"/>
<complexEntry bitLen="1" halPin="in-05" halType="bit"/>
<complexEntry bitLen="1" halPin="in-06" halType="bit"/>
<complexEntry bitLen="1" halPin="in-07" halType="bit"/>
</pdoEntry>
</pdo>
<pdo idx="1601">
<pdoEntry idx="3001" subIdx="2" bitLen="8" halType="complex">
<complexEntry bitLen="1" halPin="in-08" halType="bit"/>
<complexEntry bitLen="1" halPin="in-09" halType="bit"/>
<complexEntry bitLen="1" halPin="in-10" halType="bit"/>
<complexEntry bitLen="1" halPin="in-11" halType="bit"/>
<complexEntry bitLen="1" halPin="in-12" halType="bit"/>
<complexEntry bitLen="1" halPin="in-13" halType="bit"/>
<complexEntry bitLen="1" halPin="in-14" halType="bit"/>
<complexEntry bitLen="1" halPin="in-15" halType="bit"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
And I’m also attaching the original XML file.
- Kieran
- Kieran
09 Jun 2025 03:44
Replied by Kieran on topic weird behavior: homing X messes up Y
weird behavior: homing X messes up Y
Category: EtherCAT
Ok, more Q's.... Im messing with PDO now. i ran ethercat pdos
heres my working XML snippet
question is, why doesnt it work anymore if i switch from <pdo idx="1600"> to <pdo idx="1701"> for example. why is it using 1600 and 1A00 and working even though "ethercat pdos" spits out 1701 and 1Bo1? I want to use something other than 1600/1A00 because they only have a few PDOs available on my servos. they are "variable PDO" according to the manual. Just trying to understand how this all works.
Warning: Spoiler!
cnc1@CNC1:~$ ethercat pdos
=== Master 0, Slave 0 ===
SM0: PhysAddr 0x1000, DefaultSize 256, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1400, DefaultSize 256, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1800, DefaultSize 12, ControlRegister 0x64, Enable 1
RxPDO 0x1701 ""
PDO entry 0x6040:00, 16 bit, ""
PDO entry 0x607a:00, 32 bit, ""
PDO entry 0x60b8:00, 16 bit, ""
PDO entry 0x60fe:01, 32 bit, ""
SM3: PhysAddr 0x1c00, DefaultSize 28, ControlRegister 0x20, Enable 1
TxPDO 0x1b01 ""
PDO entry 0x603f:00, 16 bit, ""
PDO entry 0x6041:00, 16 bit, ""
PDO entry 0x6064:00, 32 bit, ""
PDO entry 0x6077:00, 16 bit, ""
PDO entry 0x60f4:00, 32 bit, ""
PDO entry 0x60b9:00, 16 bit, ""
PDO entry 0x60ba:00, 32 bit, ""
PDO entry 0x60bc:00, 32 bit, ""
PDO entry 0x60fd:00, 32 bit, ""
=== Master 0, Slave 0 ===
SM0: PhysAddr 0x1000, DefaultSize 256, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1400, DefaultSize 256, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1800, DefaultSize 12, ControlRegister 0x64, Enable 1
RxPDO 0x1701 ""
PDO entry 0x6040:00, 16 bit, ""
PDO entry 0x607a:00, 32 bit, ""
PDO entry 0x60b8:00, 16 bit, ""
PDO entry 0x60fe:01, 32 bit, ""
SM3: PhysAddr 0x1c00, DefaultSize 28, ControlRegister 0x20, Enable 1
TxPDO 0x1b01 ""
PDO entry 0x603f:00, 16 bit, ""
PDO entry 0x6041:00, 16 bit, ""
PDO entry 0x6064:00, 32 bit, ""
PDO entry 0x6077:00, 16 bit, ""
PDO entry 0x60f4:00, 32 bit, ""
PDO entry 0x60b9:00, 16 bit, ""
PDO entry 0x60ba:00, 32 bit, ""
PDO entry 0x60bc:00, 32 bit, ""
PDO entry 0x60fd:00, 32 bit, ""
heres my working XML snippet
Warning: Spoiler!
<!-- X axis servo -->
<slave idx="0" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="0" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
question is, why doesnt it work anymore if i switch from <pdo idx="1600"> to <pdo idx="1701"> for example. why is it using 1600 and 1A00 and working even though "ethercat pdos" spits out 1701 and 1Bo1? I want to use something other than 1600/1A00 because they only have a few PDOs available on my servos. they are "variable PDO" according to the manual. Just trying to understand how this all works.
- farmer_mike
- farmer_mike
07 Jun 2025 17:59
Replied by farmer_mike on topic Experimental XML config generator
Experimental XML config generator
Category: EtherCAT
Thanks for the help everyone. I decided to move my project to a Raspberry Pi 4, so I made sure to use the latest versions of LinuxCNC and Ethercat. I think I have the experimental XML config working now. I am a little unsure what to do with the output file.
I'll paste two files below. The first file is the ethercat-conf.xml from my CNC project when I had a single axis using an Rtelligent ECT 60 stepper motor.The single axis worked, so I have since bought two Rtelligent RS750E AC Servo drives. All I have done with the RS750E drives is power them up and connect the Ethernet. I haven't done any onboard parameter programming yet.
The experimental XML config generator recognized all three drives in order.
Is the output from the experimental XML config generator meant to be used to create the ethercat-conf.xml file?
I'll paste two files below. The first file is the ethercat-conf.xml from my CNC project when I had a single axis using an Rtelligent ECT 60 stepper motor.The single axis worked, so I have since bought two Rtelligent RS750E AC Servo drives. All I have done with the RS750E drives is power them up and connect the Ethernet. I haven't done any onboard parameter programming yet.
The experimental XML config generator recognized all three drives in order.
Is the output from the experimental XML config generator meant to be used to create the ethercat-conf.xml file?
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<!-- Joint 0 -->
<slave idx="0" type="generic" vid="00000a88" pid="0a880002" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<sdoConfig idx="2000" subIdx="0"><sdoDataRaw data ="88 13"/></sdoConfig> <!-- Max motor current (5.0) -->
<sdoConfig idx="2007" subIdx="6"><sdoDataRaw data ="05"/></sdoConfig> <!-- Input 6 - Emergency Stop -->
<sdoConfig idx="2007" subIdx="5"><sdoDataRaw data ="05"/></sdoConfig> <!-- Input 3 - Home Function -->
<sdoConfig idx="2011" subIdx="0"><sdoDataRaw data ="01 00"/></sdoConfig> <!-- Closed loop -->
<sdoConfig idx="6098" subIdx="0"><sdoDataRaw data ="11 00"/></sdoConfig> <!-- Home mode 17 -->
<sdoConfig idx="607C" subIdx="0"><sdoDataRaw data ="00 00"/></sdoConfig> <!-- Home offset 0 -->
<sdoConfig idx="609A" subIdx="0"><sdoDataRaw data ="F4 01"/></sdoConfig> <!-- Home accelleration 500 -->
<sdoConfig idx="6099" subIdx="01"><sdoDataRaw data ="C4 09"/></sdoConfig> <!-- Home fast speed 2500-->
<sdoConfig idx="6099" subIdx="02"><sdoDataRaw data ="F4 01"/></sdoConfig> <!-- Home slow speed 500 -->
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<!-- Target Position -->
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<!-- Target Velocity -->
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
<!-- Digtial Outputs (manufacturer's extension ECT86/ECT60)-->
<pdoEntry idx="204A" subIdx="0" bitLen="16" halType="complex">
<complexEntry bitLen="1" halPin="out-1" halType="bit"/>
<complexEntry bitLen="1" halPin="out-2" halType="bit"/>
<complexEntry bitLen="14"/>
</pdoEntry>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
<!-- Digtial_inputs (cia402 compatible) -->
<pdoEntry idx="60FD" subIdx="0" bitLen="32" halType="complex">
<complexEntry bitLen="1" halPin="CW-limit" halType="bit"/>
<complexEntry bitLen="1" halPin="CCW-limit" halType="bit"/>
<complexEntry bitLen="1" halPin="in-home" halType="bit"/>
<complexEntry bitLen="13"/>
<complexEntry bitLen="1" halPin="in-1" halType="bit"/>
<complexEntry bitLen="1" halPin="in-2" halType="bit"/>
<complexEntry bitLen="1" halPin="in-3" halType="bit"/>
<complexEntry bitLen="1" halPin="in-4" halType="bit"/>
<complexEntry bitLen="1" halPin="in-5" halType="bit"/>
<complexEntry bitLen="1" halPin="in-6" halType="bit"/>
<complexEntry bitLen="10"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
</master>
</masters>
<masters>
<master idx="0">
<slave idx="0" type="ECT60" name="D1">
<!-- Enable support for Cyclic Synchronous Position mode. -->
<modParam name="enableCSP" value="true"/>
<!-- Enable support for Cyclic Synchronous Velocity mode. -->
<modParam name="enableCSV" value="false"/>
<!-- Maximum stepper Amps. -->
<modParam name="peakCurrent_amps" value="6.0"/>
<!-- Operation mode: openloop, closedloop, or foc. -->
<modParam name="controlMode" value="closedloop"/>
<!-- Number of encoder steps per revolution. -->
<modParam name="encoderResolution" value="4000"/>
<!-- Output 1 use: general, alarm, brake, in-place. -->
<modParam name="output1Func" value="alarm"/>
<!-- Output 2 use: general, alarm, brake, in-place. -->
<modParam name="output2Func" value="brake"/>
<!-- Input 3 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input3Func" value="cw-limit"/>
<!-- Input 4 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input4Func" value="ccw-limit"/>
<!-- Input 5 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input5Func" value="home"/>
<!-- Input 6 use: general, cw-limit, ccw-limit, home, clear-fault, emergency-stop, motor-offline, probe1, probe2 -->
<modParam name="input6Func" value="motor-offline"/>
</slave>
<slave idx="1" type="basic_cia402" vid="0x00000a88" pid="0x0a880013" name="D2">
<!--RS750E(COE)-->
<modParam name="ciaRxPDOEntryLimit" value="9"/>
<modParam name="ciaTxPDOEntryLimit" value="9"/>
<modParam name="enablePP" value="true"/>
<modParam name="enablePV" value="true"/>
<modParam name="enableTQ" value="true"/>
<modParam name="enableHM" value="true"/>
<modParam name="enableCSP" value="true"/>
<modParam name="enableCSV" value="true"/>
<modParam name="enableCST" value="true"/>
<modParam name="enableActualFollowingError" value="true"/>
<modParam name="enableActualTorque" value="true"/>
<modParam name="enableDigitalInput" value="true"/>
<modParam name="digitalInChannels" value="16"/>
<modParam name="enableDigitalOutput" value="true"/>
<modParam name="digitalOutChannels" value="16"/>
<modParam name="enableErrorCode" value="true"/>
<modParam name="enableFollowingErrorTimeout" value="true"/>
<modParam name="enableFollowingErrorWindow" value="true"/>
<modParam name="enableHomeAccel" value="true"/>
<modParam name="enableMaximumCurrent" value="true"/>
<modParam name="enableMaximumTorque" value="true"/>
<modParam name="enablePolarity" value="true"/>
<modParam name="enablePositionDemand" value="true"/>
<modParam name="enablePositioningTime" value="true"/>
<modParam name="enablePositioningWindow" value="true"/>
<modParam name="enableProbeStatus" value="true"/>
<modParam name="enableProfileAccel" value="true"/>
<modParam name="enableProfileDecel" value="true"/>
<modParam name="enableProfileMaxVelocity" value="true"/>
<modParam name="enableProfileVelocity" value="true"/>
<modParam name="enableTargetTorque" value="true"/>
<modParam name="enableTorqueDemand" value="true"/>
<modParam name="enableTorqueSlope" value="true"/>
<modParam name="enableVelocityErrorTime" value="true"/>
<modParam name="enableVelocityErrorWindow" value="true"/>
</slave>
<slave idx="2" type="basic_cia402" vid="0x00000a88" pid="0x0a880013" name="D3">
<!--RS750E(COE)-->
<modParam name="ciaRxPDOEntryLimit" value="9"/>
<modParam name="ciaTxPDOEntryLimit" value="9"/>
<modParam name="enablePP" value="true"/>
<modParam name="enablePV" value="true"/>
<modParam name="enableTQ" value="true"/>
<modParam name="enableHM" value="true"/>
<modParam name="enableCSP" value="true"/>
<modParam name="enableCSV" value="true"/>
<modParam name="enableCST" value="true"/>
<modParam name="enableActualFollowingError" value="true"/>
<modParam name="enableActualTorque" value="true"/>
<modParam name="enableDigitalInput" value="true"/>
<modParam name="digitalInChannels" value="16"/>
<modParam name="enableDigitalOutput" value="true"/>
<modParam name="digitalOutChannels" value="16"/>
<modParam name="enableErrorCode" value="true"/>
<modParam name="enableFollowingErrorTimeout" value="true"/>
<modParam name="enableFollowingErrorWindow" value="true"/>
<modParam name="enableHomeAccel" value="true"/>
<modParam name="enableMaximumCurrent" value="true"/>
<modParam name="enableMaximumTorque" value="true"/>
<modParam name="enablePolarity" value="true"/>
<modParam name="enablePositionDemand" value="true"/>
<modParam name="enablePositioningTime" value="true"/>
<modParam name="enablePositioningWindow" value="true"/>
<modParam name="enableProbeStatus" value="true"/>
<modParam name="enableProfileAccel" value="true"/>
<modParam name="enableProfileDecel" value="true"/>
<modParam name="enableProfileMaxVelocity" value="true"/>
<modParam name="enableProfileVelocity" value="true"/>
<modParam name="enableTargetTorque" value="true"/>
<modParam name="enableTorqueDemand" value="true"/>
<modParam name="enableTorqueSlope" value="true"/>
<modParam name="enableVelocityErrorTime" value="true"/>
<modParam name="enableVelocityErrorWindow" value="true"/>
</slave>
</master>
</masters>
- Kieran
- Kieran
07 Jun 2025 04:05
Replied by Kieran on topic weird behavior: homing X messes up Y
weird behavior: homing X messes up Y
Category: EtherCAT
Warning: Spoiler!
# custom EtherCAT config
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf newcat.xml
loadrt lcec
loadrt cia402 count=2
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf lcec.write-all servo-thread
setp iocontrol.0.emc-enable-in 1
#*******************
# AXIS X
#*******************
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale [JOINT_0]PULSES_PER_MM
setp cia402.0.velo-scale [JOINT_0]PULSES_PER_MM
# joint signals for motion
net x-enable <= joint.0.amp-enable-out => cia402.0.enable
net x-amp-fault => joint.0.amp-fault-in <= cia402.0.drv-fault
net x-pos-cmd <= joint.0.motor-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => joint.0.motor-pos-fb <= cia402.0.pos-fb
# ethercat to cia402 driver
net x-statusword lcec.0.0.status-word => cia402.0.statusword
net x-drv-act-pos lcec.0.0.pos-actual => cia402.0.drv-actual-position
# cia402 driver to ethercat
net x-controlword cia402.0.controlword => lcec.0.0.control-word
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
#*******************
# AXIS Y
#*******************
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale [JOINT_1]PULSES_PER_MM
setp cia402.1.velo-scale [JOINT_1]PULSES_PER_MM
# joint signals for motion
net y-enable <= joint.1.amp-enable-out => cia402.1.enable
net y-amp-fault => joint.1.amp-fault-in <= cia402.1.drv-fault
net y-pos-cmd <= joint.1.motor-pos-cmd => cia402.1.pos-cmd
net y-pos-fb => joint.1.motor-pos-fb <= cia402.1.pos-fb
# ethercat to cia402 driver
net y-statusword lcec.0.1.status-word => cia402.1.statusword
net y-drv-act-pos lcec.0.1.pos-actual => cia402.1.drv-actual-position
# cia402 driver to ethercat
net y-controlword cia402.1.controlword => lcec.0.1.control-word
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf newcat.xml
loadrt lcec
loadrt cia402 count=2
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf lcec.write-all servo-thread
setp iocontrol.0.emc-enable-in 1
#*******************
# AXIS X
#*******************
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale [JOINT_0]PULSES_PER_MM
setp cia402.0.velo-scale [JOINT_0]PULSES_PER_MM
# joint signals for motion
net x-enable <= joint.0.amp-enable-out => cia402.0.enable
net x-amp-fault => joint.0.amp-fault-in <= cia402.0.drv-fault
net x-pos-cmd <= joint.0.motor-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => joint.0.motor-pos-fb <= cia402.0.pos-fb
# ethercat to cia402 driver
net x-statusword lcec.0.0.status-word => cia402.0.statusword
net x-drv-act-pos lcec.0.0.pos-actual => cia402.0.drv-actual-position
# cia402 driver to ethercat
net x-controlword cia402.0.controlword => lcec.0.0.control-word
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
#*******************
# AXIS Y
#*******************
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale [JOINT_1]PULSES_PER_MM
setp cia402.1.velo-scale [JOINT_1]PULSES_PER_MM
# joint signals for motion
net y-enable <= joint.1.amp-enable-out => cia402.1.enable
net y-amp-fault => joint.1.amp-fault-in <= cia402.1.drv-fault
net y-pos-cmd <= joint.1.motor-pos-cmd => cia402.1.pos-cmd
net y-pos-fb => joint.1.motor-pos-fb <= cia402.1.pos-fb
# ethercat to cia402 driver
net y-statusword lcec.0.1.status-word => cia402.1.statusword
net y-drv-act-pos lcec.0.1.pos-actual => cia402.1.drv-actual-position
# cia402 driver to ethercat
net y-controlword cia402.1.controlword => lcec.0.1.control-word
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
Warning: Spoiler!
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
</pdo>
</syncManager>
</slave>
<slave idx="1" type="generic" vid="00400000" pid="00000715" configPdos="true" >
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="25000"/>
<watchdog divider="2498" intervals="1000"/>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="control-word" halType="u32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60B8" subIdx="00" bitLen="16" halPin="touch-probe-function" halType="u32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1A00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="status-word" halType="u32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="pos-actual" halType="s32"/>
<pdoEntry idx="60BA" subIdx="00" bitLen="32" halPin="touch-probe-1" halType="s32"/>
<pdoEntry idx="60BC" subIdx="00" bitLen="32" halPin="touch-probe-2" halType="s32"/>
<pdoEntry idx="60B9" subIdx="00" bitLen="16" halPin="touch-probe-status" halType="s32"/>
<pdoEntry idx="603F" subIdx="00" bitLen="16" halPin="fault-code" halType="s32"/>
<pdoEntry idx="60FD" subIdx="00" bitLen="32" halPin="DI-status" halType="u32"/>
<pdoEntry idx="60F4" subIdx="00" bitLen="32" halPin="follow-error" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
Warning: Spoiler!
# Generated by PNCconf at Thu Jan 2 12:17:30 2025
# Using LinuxCNC version: Master (2.9)
# EDITED
[EMC]
MACHINE = LinuxCNC-HAL-SIM-AXIS
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/dave/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .1mm 0.01mm .001mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 500
MAX_LINEAR_VELOCITY = 250
MIN_LINEAR_VELOCITY = 0.01
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = geany
GEOMETRY = xyz
CYCLE_TIME = 100
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G21 G40 G90 G94 G97 G64 P0.001
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HAL]
HALUI = halui
#HALFILE = Basic.hal
HALFILE = newcat.hal
#POSTGUI_HALFILE = custom_postgui.hal
#SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 2
KINEMATICS = trivkins coordinates=X kinstype=BOTH
[TRAJ]
COORDINATES = X
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 8.333
MAX_LINEAR_VELOCITY = 8.333
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 250
MAX_ACCELERATION = 3000.0
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
[AXIS_Y]
MAX_VELOCITY = 250
MAX_ACCELERATION = 3000.0
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 500.
MIN_FERROR = 5.
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
PULSES_PER_MM = 26214
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 1
#******************************************
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 500.
MIN_FERROR = 5.
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
PULSES_PER_MM = 26214
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 1
#******************************************
# Using LinuxCNC version: Master (2.9)
# EDITED
[EMC]
MACHINE = LinuxCNC-HAL-SIM-AXIS
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/dave/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .1mm 0.01mm .001mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 500
MAX_LINEAR_VELOCITY = 250
MIN_LINEAR_VELOCITY = 0.01
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = geany
GEOMETRY = xyz
CYCLE_TIME = 100
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G21 G40 G90 G94 G97 G64 P0.001
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HAL]
HALUI = halui
#HALFILE = Basic.hal
HALFILE = newcat.hal
#POSTGUI_HALFILE = custom_postgui.hal
#SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 2
KINEMATICS = trivkins coordinates=X kinstype=BOTH
[TRAJ]
COORDINATES = X
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 8.333
MAX_LINEAR_VELOCITY = 8.333
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 250
MAX_ACCELERATION = 3000.0
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
[AXIS_Y]
MAX_VELOCITY = 250
MAX_ACCELERATION = 3000.0
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 500.
MIN_FERROR = 5.
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
PULSES_PER_MM = 26214
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 1
#******************************************
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 500.
MIN_FERROR = 5.
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 30.0
PULSES_PER_MM = 26214
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
MIN_LIMIT = -0.001
MAX_LIMIT = 2400.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 1
#******************************************
- Soccer Kid
03 Jun 2025 07:36 - 03 Jun 2025 07:37
Replied by Soccer Kid on topic ethercat-conf.xml pdoentry limits?
ethercat-conf.xml pdoentry limits?
Category: EtherCAT
The PDO entries of the EtherCAT master are 128 in number. Any error will occur if the number exceeds this limit. For the same type of enumerated points, you can use the abbreviated form for writing. For example:<pdoEntry idx="6000" subIdx="01" bitLen="32" halPin="bit-in" halType="bit"/> Here, an input point with a sub-index ranging from 1 to 32 is declared.
- endian
28 May 2025 09:30
but defenetely you can not let 32bit lenght for halType="bit" I think ...
Replied by endian on topic resolved-- Regarding the data reading offset issue of the ether cat IO module
resolved-- Regarding the data reading offset issue of the ether cat IO module
Category: EtherCAT
Can you share whole config to better understanding please? I am interested in the two masters from your configuration ... how and if it is working? thank youWhen I was testing this signal input, I found that when I turned on LED0, the corresponding IO PIN was lit up at pin number 16. Similarly, the output position was also the same. In summary, the data I currently receive has been shifted by 16 bits. Additionally, I have attached my XML and the test results from Beckhoff (they are all OK). Could someone kind-hearted please tell me why?
but defenetely you can not let 32bit lenght for halType="bit" I think ...
Check actual config over, then you will can read active configuration from online slaves... then just copy paste<pdoEntry idx="6000" subIdx="01" bitLen="32" halPin="bit-in" halType="bit"/>
ethercat pdos -v
- Hakan
- Hakan
28 May 2025 08:10
Replied by Hakan on topic resolved-- Regarding the data reading offset issue of the ether cat IO module
resolved-- Regarding the data reading offset issue of the ether cat IO module
Category: EtherCAT
Can you please confirm that you do not see the 16-bit shift in Codesys.
Can you also please confirm that you see/don't see the 16-bit shift in linuxcnc using <complexentry>
Please show the output when you in linuxcnc enter test-values for the bit-outs pins. Do all 32 pins individually.
Change the line <pdoEntry idx="7010" subIdx="01" bitLen="32" halPin="bit-out" halType="bit"/> to <pdoEntry idx="7010" subIdx="01" bitLen="32" halPin="bit-out" halType="u32"/> and redo the bit output test. Do one bit at the time. All 1,2,4,8,16, 32, 64,128, and so on up to the 31th bit.
Show the input and output for all these tests in a way that one clearly can see and correlate the linuxcnc input and the drive output.
Can you please show the output of "ethercat -p 1 -m 1 pdos" Modify the p and m field values as needed to get the output from the tested unit.
Can you please provide a screenshot from Codesys of the definition of the output variable. To include at least pdo index, pdo entry index, subindex, datatype and datatype length.
Can you also please confirm that you see/don't see the 16-bit shift in linuxcnc using <complexentry>
Please show the output when you in linuxcnc enter test-values for the bit-outs pins. Do all 32 pins individually.
Change the line <pdoEntry idx="7010" subIdx="01" bitLen="32" halPin="bit-out" halType="bit"/> to <pdoEntry idx="7010" subIdx="01" bitLen="32" halPin="bit-out" halType="u32"/> and redo the bit output test. Do one bit at the time. All 1,2,4,8,16, 32, 64,128, and so on up to the 31th bit.
Show the input and output for all these tests in a way that one clearly can see and correlate the linuxcnc input and the drive output.
Can you please show the output of "ethercat -p 1 -m 1 pdos" Modify the p and m field values as needed to get the output from the tested unit.
Can you please provide a screenshot from Codesys of the definition of the output variable. To include at least pdo index, pdo entry index, subindex, datatype and datatype length.
- Hakan
- Hakan
27 May 2025 08:20
Replied by Hakan on topic resolved-- Regarding the data reading offset issue of the ether cat IO module
resolved-- Regarding the data reading offset issue of the ether cat IO module
Category: EtherCAT
I don't know why, but we can try to find out why.
Can you replace the lines that creates all the input pins and out pinswith "complexentry", there are several examples above in the file.
Do you still get the shift?
Can you replace the lines that creates all the input pins and out pins
<pdoEntry idx="6000" subIdx="01" bitLen="32" halPin="bit-in" halType="bit"/>
...
<pdoEntry idx="7010" subIdx="01" bitLen="32" halPin="bit-out" halType="bit"/>
Do you still get the shift?
Time to create page: 0.546 seconds