Search Results (Searched for: )
- tommylight

03 Jul 2026 20:41
Replied by tommylight on topic Do NOT update working machines!!!
Do NOT update working machines!!!
Category: General LinuxCNC Questions
Snowwy, i am sure i have not formulated that very nicely, to much that makes me loose my marbles there, but mostly the "fear everything" mentality sweeping the world.
And i am for sure the most paranoid one here, yet i have to ask not to update as it is an ongoing hassle for many users.
-
I would really appreciate if someone else would write something about this, and i will gladly delete this.
-
People with a single machine that their business relies on, should really never update/upgrade, unless they want to risk it, others are welcomed to and even encouraged to as it provides invaluable feedback.
But most important, explain they do not have to and it is not a must, as they have been conditioned to from microshaft and it's useless code and non existing code auditing.
And i am for sure the most paranoid one here, yet i have to ask not to update as it is an ongoing hassle for many users.
-
I would really appreciate if someone else would write something about this, and i will gladly delete this.
-
People with a single machine that their business relies on, should really never update/upgrade, unless they want to risk it, others are welcomed to and even encouraged to as it provides invaluable feedback.
But most important, explain they do not have to and it is not a must, as they have been conditioned to from microshaft and it's useless code and non existing code auditing.
- andypugh

03 Jul 2026 20:35
Replied by andypugh on topic Mikron WF 40 P Retrofit - Gearbox Logic and Document Hunt (WF 40 C vs P)
Mikron WF 40 P Retrofit - Gearbox Logic and Document Hunt (WF 40 C vs P)
Category: Milling Machines
This sounds like a lot of fun, unfortunately all I can do is offer good wishes with the project. But keep us informed, and maybe there will be other questions that are easier to answer.
- andypugh

03 Jul 2026 20:33
Replied by andypugh on topic G38.2 Weird behaviour
G38.2 Weird behaviour
Category: General LinuxCNC Questions
There is a new release (2.9.10) that reverts this change.
Unfortunately it's not yet available from our repository as I am having trouble with the archive signing key.
However, you can manually install .deb files from here:
github.com/LinuxCNC/linuxcnc/releases/tag/v2.9.10
Unfortunately it's not yet available from our repository as I am having trouble with the archive signing key.
However, you can manually install .deb files from here:
github.com/LinuxCNC/linuxcnc/releases/tag/v2.9.10
- andypugh

03 Jul 2026 20:31
Replied by andypugh on topic Samurai 120 CNC Tool Changer Configuration
Samurai 120 CNC Tool Changer Configuration
Category: EtherCAT
Sorry for the slow reply, I haven't been able to find much time recently.
I think that the carousel component could be used for this, but you would need two instances of the component and I think that limitations of LinuxCNC (can't have two tools in the same pocket number) would mean that you would need to do some processing of pocket number in HAL to feed the right numbers in.
Luckily I did consider the possibility of multiple carousels being used, so you just use
loadrt carousel num_pockets = 10,10
to load two 10-pocket carousels
for example you could use pockets 0-10 for one carousel and 100-110 for the other. Then in HAL you would check the pocket number (comp component) and if >= 100 enable one carousel, and if <100 enable the other. Then pass pocket number - 100 to both carousel components (only the one that was actuated would move)
The sequencing could be done in any way that works for you, but G-code is one way. See the sim config configs/sim/axis/vismach/VMC_toolchange for an example that runs the tool magazine with the carousel component and handles the rest of the sequence in a g-code routine. You could equally well use classic ladder or a python script if that suits you better.
I think that the carousel component could be used for this, but you would need two instances of the component and I think that limitations of LinuxCNC (can't have two tools in the same pocket number) would mean that you would need to do some processing of pocket number in HAL to feed the right numbers in.
Luckily I did consider the possibility of multiple carousels being used, so you just use
loadrt carousel num_pockets = 10,10
to load two 10-pocket carousels
for example you could use pockets 0-10 for one carousel and 100-110 for the other. Then in HAL you would check the pocket number (comp component) and if >= 100 enable one carousel, and if <100 enable the other. Then pass pocket number - 100 to both carousel components (only the one that was actuated would move)
The sequencing could be done in any way that works for you, but G-code is one way. See the sim config configs/sim/axis/vismach/VMC_toolchange for an example that runs the tool magazine with the carousel component and handles the rest of the sequence in a g-code routine. You could equally well use classic ladder or a python script if that suits you better.
- snowgoer540

03 Jul 2026 20:22
Replied by snowgoer540 on topic Do NOT update working machines!!!
Do NOT update working machines!!!
Category: General LinuxCNC Questions
On the other hand ... I've gotten tons of invaluable feedback from those brave/patient enough to adopt the latest version and provide bug feedback ... much of it coming from people running a business with said machine (some of the best feedback is from folks who actually use it constantly).
- tommylight

03 Jul 2026 20:12
Replied by tommylight on topic Burgmaster CNC
Burgmaster CNC
Category: Milling Machines
1. Not important as everything is changed, except the metal parts.
2. Looks quite sturdy so it should do lite metal milling, depending on the toolchanger
3. Nothing to retrofit, just install LinuxCNC and make a new config for it.
4. Leadscrews have backlash, so that will limit precision, LinuxCNC has the compensation, so can be tuned.
5. Seems to much for here in Europe, so that is something we can not help with as it might be cheap where you live.
2. Looks quite sturdy so it should do lite metal milling, depending on the toolchanger
3. Nothing to retrofit, just install LinuxCNC and make a new config for it.
4. Leadscrews have backlash, so that will limit precision, LinuxCNC has the compensation, so can be tuned.
5. Seems to much for here in Europe, so that is something we can not help with as it might be cheap where you live.
- dirkx
- dirkx
03 Jul 2026 19:57
hack: automatic discovery/panel generator for EtherCat was created by dirkx
hack: automatic discovery/panel generator for EtherCat
Category: EtherCAT
No idea if this is of use to anyone - but below is a very quick and dirty hack to generate a set of panels from a string of EtherCat devices - that will show the input values / lets you toggle the outputs.
Simply run it; and it will generate an ethercap.xml file, a hal run file, a wiring file for hal and a hal.xml panel.
Largely as I was testing different setups/pulling cards and this process got a bit tedious.
Dw.
Simply run it; and it will generate an ethercap.xml file, a hal run file, a wiring file for hal and a hal.xml panel.
Largely as I was testing different setups/pulling cards and this process got a bit tedious.
Dw.
- Jorgefv
- Jorgefv
03 Jul 2026 19:52
Burgmaster CNC was created by Jorgefv
Burgmaster CNC
Category: Milling Machines
Hi
I'm considering buying an old CNC machine, but I haven't been able to find any information about it online, so I'm not sure if it's a good investment.
The machine is based on a Burgmaster with a Föhrenbach DCNC 82V4H plate (built in 1987).
Originally it was equipped with DC servo motors, but after the original controllers failed, the previous owner retrofitted it with NEMA 34 stepper motors, inexpensive digital stepper drivers, and Mach3 running on an old PC through a parallel port.
Mechanically, the machine appears to be in very good condition.
Specifications so far:
Approximate travels: 700 × 500 × 200 mm (X/Y/Z)
Weight: 800 kg
Cast iron construction
Precision dovetail (prismatic) guideways
Fine-pitch lead screws on X and Y
Ball screw on Z
2 kW belt-driven spindle motor with manual pulley speed selection
6-station mechanical indexing turret tool changer
Threaded collet holders on each station (one currently has a 16 mm end mill installed)
I removed the way covers to inspect the machine. The guideways, lead screws, and table all appear to be in excellent condition. There is virtually no visible wear, and the machine seems to have seen relatively little use. Most of the cosmetic damage is simply from having other equipment and materials stacked against it over the years.
My only concern is the spindle. There is a slight amount of radial play that can be felt by hand with a tool installed, although I haven't measured it with a dial indicator yet. I plan to do that on my next visit.
The mechanical turret and spindle arrangement make me think it was originally designed primarily for drilling and tapping, rather than as a conventional milling machine. However, I mainly plan to machine aluminum and plastics (Delrin, nylon, PTFE), not heavy steel.
The alternative would be buying a manual milling machine and performing a complete CNC conversion myself, but by the time I add motors, drives, ball screws, and a controller, the total cost would be very similar to this machine.
If the spindle eventually turns out to be the weak point, I would even consider replacing it with a modern spindle in the future, while keeping the existing cast iron structure.
My questions are:
1. Has anyone seen or worked on a Föhrenbach DCNC machine like this?
2. Does this sound like a drilling/tapping center with limited milling capability, or a light milling machine?
3. Would you consider this a good candidate for a LinuxCNC retrofit?
4. Is the combination of dovetail guideways, lead screws on X/Y, and a ball screw on Z a significant limitation for aluminum machining?
5. Assuming the spindle bearings are still in reasonable condition, would you consider this machine worth buying for around USD 4,500? (kind of a good price in Bolivia)
Any advice or experience would be greatly appreciated.
Thanks!
I'm considering buying an old CNC machine, but I haven't been able to find any information about it online, so I'm not sure if it's a good investment.
The machine is based on a Burgmaster with a Föhrenbach DCNC 82V4H plate (built in 1987).
Originally it was equipped with DC servo motors, but after the original controllers failed, the previous owner retrofitted it with NEMA 34 stepper motors, inexpensive digital stepper drivers, and Mach3 running on an old PC through a parallel port.
Mechanically, the machine appears to be in very good condition.
Specifications so far:
Approximate travels: 700 × 500 × 200 mm (X/Y/Z)
Weight: 800 kg
Cast iron construction
Precision dovetail (prismatic) guideways
Fine-pitch lead screws on X and Y
Ball screw on Z
2 kW belt-driven spindle motor with manual pulley speed selection
6-station mechanical indexing turret tool changer
Threaded collet holders on each station (one currently has a 16 mm end mill installed)
I removed the way covers to inspect the machine. The guideways, lead screws, and table all appear to be in excellent condition. There is virtually no visible wear, and the machine seems to have seen relatively little use. Most of the cosmetic damage is simply from having other equipment and materials stacked against it over the years.
My only concern is the spindle. There is a slight amount of radial play that can be felt by hand with a tool installed, although I haven't measured it with a dial indicator yet. I plan to do that on my next visit.
The mechanical turret and spindle arrangement make me think it was originally designed primarily for drilling and tapping, rather than as a conventional milling machine. However, I mainly plan to machine aluminum and plastics (Delrin, nylon, PTFE), not heavy steel.
The alternative would be buying a manual milling machine and performing a complete CNC conversion myself, but by the time I add motors, drives, ball screws, and a controller, the total cost would be very similar to this machine.
If the spindle eventually turns out to be the weak point, I would even consider replacing it with a modern spindle in the future, while keeping the existing cast iron structure.
My questions are:
1. Has anyone seen or worked on a Föhrenbach DCNC machine like this?
2. Does this sound like a drilling/tapping center with limited milling capability, or a light milling machine?
3. Would you consider this a good candidate for a LinuxCNC retrofit?
4. Is the combination of dovetail guideways, lead screws on X/Y, and a ball screw on Z a significant limitation for aluminum machining?
5. Assuming the spindle bearings are still in reasonable condition, would you consider this machine worth buying for around USD 4,500? (kind of a good price in Bolivia)
Any advice or experience would be greatly appreciated.
Thanks!
- tommylight

03 Jul 2026 19:44
Replied by tommylight on topic can not jog axis in Gmoccapy
can not jog axis in Gmoccapy
Category: Gmoccapy
What is pin "machine-is-enabled" connected to in hal?
- tommylight

03 Jul 2026 19:43
Replied by tommylight on topic Missing archive for 2.9.9 update
Missing archive for 2.9.9 update
Category: Installing LinuxCNC
- Etced
- Etced
03 Jul 2026 19:16
can not jog axis in Gmoccapy was created by Etced
can not jog axis in Gmoccapy
Category: Gmoccapy
After setting up axis , I go to the test axis button. There I can jog all axis and run the test program. When I go to Gmoccapy the cursor on the screen makes a line, but the motors do not turn. Any suggestions would be appreciated.
Thanks
Thanks
- MarkoPolo
- MarkoPolo
03 Jul 2026 18:26
Replied by MarkoPolo on topic qtvismach, a axis toolpath
qtvismach, a axis toolpath
Category: Qtvcp
Returning to the topic of Vismach navigation, there are several issues that make navigating the Vismach window less than pleasant.
When panning the scene left, right, or up and down, the zoom level isn't taken into account, and at greater zoom levels, it's difficult to move the object.
When zooming in, near maximum zoom, there's a very unpleasant effect: many mouse wheel rotations and little zoom effect.
Panning the scene is done with the middle mouse button, while the left mouse button rotates on two axes. This is difficult to master because in the qtdragon preview window, panning is done with the left mouse button. It would be nice to have the same solution in Vismach.
I have a file, qt_vismach.py, that fixes all these issues.
The question is, do you see the problem and the need to improve these things?
When panning the scene left, right, or up and down, the zoom level isn't taken into account, and at greater zoom levels, it's difficult to move the object.
When zooming in, near maximum zoom, there's a very unpleasant effect: many mouse wheel rotations and little zoom effect.
Panning the scene is done with the middle mouse button, while the left mouse button rotates on two axes. This is difficult to master because in the qtdragon preview window, panning is done with the left mouse button. It would be nice to have the same solution in Vismach.
I have a file, qt_vismach.py, that fixes all these issues.
The question is, do you see the problem and the need to improve these things?
- dbrija
- dbrija
03 Jul 2026 15:35
Missing archive for 2.9.9 update was created by dbrija
Missing archive for 2.9.9 update
Category: Installing LinuxCNC
- Nikita
- Nikita
03 Jul 2026 12:53
Replied by Nikita on topic Lenze ECSxM via EMF2192IB (EtherCAT): CiA402 compatibility and configuration iss
Lenze ECSxM via EMF2192IB (EtherCAT): CiA402 compatibility and configuration iss
Category: General LinuxCNC Questions
debian@debian:~$ ethercat slaves -v
=== Master 0, Slave 0 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x0000003b
Product code: 0x014e7bc0
Revision number: 0x00000001
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 0 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0* MII up open yes - 459143642 0 0
1 MII down closed no - - - -
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x1000/244, TX: 0x10f4/244
Standard RX: 0x1000/256, TX: 0x1100/256
Supported protocols: CoE, FoE
General:
Group: Drives
Image name:
Order number: Servo ECSxM CiA 402
Device name: Servo ECSxM CiA 402
CoE details:
Enable SDO: yes
Enable SDO Info: yes
Enable PDO Assign: no
Enable PDO Configuration: no
Enable Upload at startup: no
Enable SDO complete access: yes
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 0 mA
debian@debian:~$ ethercat sdos
SDO 0x1000, "Device type"
0x1000:00, r-r-r-, uint32, 32 bit, "Device type"
SDO 0x1008, "Device name"
0x1008:00, r-r-r-, string, 176 bit, "Device name"
SDO 0x1009, "Hardware version"
0x1009:00, r-r-r-, string, 16 bit, "Hardware version"
SDO 0x100a, "Software version"
0x100a:00, r-r-r-, string, 88 bit, "Software version"
SDO 0x1018, "Identity"
0x1018:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1018:01, r-r-r-, uint32, 32 bit, "Vendor ID"
0x1018:02, rwrwrw, uint32, 32 bit, "Product code"
0x1018:03, r-r-r-, uint32, 32 bit, "Revision"
0x1018:04, r-r-r-, uint32, 32 bit, "Serial number"
SDO 0x1600, "IO Outputs"
0x1600:00, rwr-r-, uint8, 8 bit, "SubIndex 000"
0x1600:01, rwr-r-, uint32, 32 bit, "SubIndex 001"
0x1600:02, rwr-r-, uint32, 32 bit, "SubIndex 002"
0x1600:03, rwr-r-, uint32, 32 bit, "SubIndex 003"
0x1600:04, rwr-r-, uint32, 32 bit, "SubIndex 004"
0x1600:05, rwr-r-, uint32, 32 bit, "SubIndex 005"
0x1600:06, rwr-r-, uint32, 32 bit, "SubIndex 006"
0x1600:07, rwr-r-, uint32, 32 bit, "SubIndex 007"
0x1600:08, rwr-r-, uint32, 32 bit, "SubIndex 008"
0x1600:09, rwr-r-, uint32, 32 bit, "SubIndex 009"
0x1600:0a, rwr-r-, uint32, 32 bit, "SubIndex 010"
0x1600:0b, rwr-r-, uint32, 32 bit, "SubIndex 011"
0x1600:0c, rwr-r-, uint32, 32 bit, "SubIndex 012"
SDO 0x1800, "IO Inputs"
0x1800:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1800:01,
, type 0000, 0 bit, "SubIndex 001"
0x1800:02,
, type 0000, 0 bit, "SubIndex 002"
0x1800:03,
, type 0000, 0 bit, "SubIndex 003"
0x1800:04,
, type 0000, 0 bit, "SubIndex 004"
0x1800:05,
, type 0000, 0 bit, "SubIndex 005"
0x1800:06,
, type 0000, 0 bit, "SubIndex 006"
0x1800:07, r-r-r-, bool, 1 bit, "TxPDO State"
0x1800:08,
, type 0000, 0 bit, "SubIndex 008"
0x1800:09, r-r-r-, bool, 1 bit, "TxPDO Toggle"
SDO 0x1a00, "IO Inputs"
0x1a00:00, rwr-r-, uint8, 8 bit, "SubIndex 000"
0x1a00:01, rwr-r-, uint32, 32 bit, "SubIndex 001"
0x1a00:02, rwr-r-, uint32, 32 bit, "SubIndex 002"
0x1a00:03, rwr-r-, uint32, 32 bit, "SubIndex 003"
0x1a00:04, rwr-r-, uint32, 32 bit, "SubIndex 004"
0x1a00:05, rwr-r-, uint32, 32 bit, "SubIndex 005"
0x1a00:06, rwr-r-, uint32, 32 bit, "SubIndex 006"
0x1a00:07, rwr-r-, uint32, 32 bit, "SubIndex 007"
0x1a00:08, rwr-r-, uint32, 32 bit, "SubIndex 008"
0x1a00:09, rwr-r-, uint32, 32 bit, "SubIndex 009"
0x1a00:0a, rwr-r-, uint32, 32 bit, "SubIndex 010"
0x1a00:0b, rwr-r-, uint32, 32 bit, "SubIndex 011"
0x1a00:0c, rwr-r-, uint32, 32 bit, "SubIndex 012"
0x1a00:0d, rwr-r-, uint32, 32 bit, "SubIndex 013"
0x1a00:0e, rwr-r-, uint32, 32 bit, "SubIndex 014"
0x1a00:0f, rwr-r-, uint32, 32 bit, "SubIndex 015"
SDO 0x1c00, "Sync manager type"
0x1c00:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c00:01, r-r-r-, uint8, 8 bit, "SubIndex 001"
0x1c00:02, r-r-r-, uint8, 8 bit, "SubIndex 002"
0x1c00:03, r-r-r-, uint8, 8 bit, "SubIndex 003"
0x1c00:04, r-r-r-, uint8, 8 bit, "SubIndex 004"
SDO 0x1c12, "RxPDO assign"
0x1c12:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c12:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
SDO 0x1c13, "TxPDO assign"
0x1c13:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c13:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
SDO 0x1c32, "SM output parameter"
0x1c32:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c32:01, rwrwrw, uint16, 16 bit, "Synchronization Type"
0x1c32:02, rwrwrw, uint32, 32 bit, "Cycle Time"
0x1c32:03, r-r-r-, uint32, 32 bit, "Shift Time"
0x1c32:04, r-r-r-, uint16, 16 bit, "Synchronization Types supported"
0x1c32:05, r-r-r-, uint32, 32 bit, "Minimum Cycle Time"
0x1c32:06, r-r-r-, uint32, 32 bit, "Calc and Copy Time"
0x1c32:07, r-r-r-, type 0000, 0 bit, "Minimum fast cycle time"
0x1c32:08, r-r-r-, uint16, 16 bit, "Get Cycle Time"
0x1c32:09, r-r-r-, uint32, 32 bit, "Delay Time"
0x1c32:0a, r-r-r-, uint32, 32 bit, "Sync0 Cycle Time"
0x1c32:0b, r-r-r-, uint32, 32 bit, "Cycle Time Too Small"
0x1c32:0c, r-r-r-, uint32, 32 bit, "SM-Event missed"
0x1c32:0d, r-r-r-, uint32, 32 bit, "Shift Time Too Short"
0x1c32:0e, r-r-r-, uint32, 32 bit, "RxPDO Toggle Failed"
0x1c32:0f, r-r-r-, type 0000, 0 bit, "Minimum Cycle Distance"
0x1c32:10, r-r-r-, type 0000, 0 bit, "Maximum Cycle Distance"
0x1c32:11, r-r-r-, type 0000, 0 bit, "Minimum SM SYNC Distance"
0x1c32:12, r-r-r-, type 0000, 0 bit, "Maximum SM SYNC Distance"
0x1c32:13, r-r-r-, type 0000, 0 bit, "SubIndex 019"
0x1c32:14, r-r-r-, type 0000, 0 bit, "SubIndex 020"
0x1c32:15, r-r-r-, type 0000, 0 bit, "SubIndex 021"
0x1c32:16, r-r-r-, type 0000, 0 bit, "SubIndex 022"
0x1c32:17, r-r-r-, type 0000, 0 bit, "SubIndex 023"
0x1c32:18, r-r-r-, type 0000, 0 bit, "SubIndex 024"
0x1c32:19, r-r-r-, type 0000, 0 bit, "SubIndex 025"
0x1c32:1a, r-r-r-, type 0000, 0 bit, "SubIndex 026"
0x1c32:1b, r-r-r-, type 0000, 0 bit, "SubIndex 027"
0x1c32:1c, r-r-r-, type 0000, 0 bit, "SubIndex 028"
0x1c32:1d, r-r-r-, type 0000, 0 bit, "SubIndex 029"
0x1c32:1e, r-r-r-, type 0000, 0 bit, "SubIndex 030"
0x1c32:1f, r-r-r-, type 0000, 0 bit, "SubIndex 031"
0x1c32:20, r-r-r-, bool, 1 bit, "Sync Error"
SDO 0x1c33, "SM input parameter"
0x1c33:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c33:01, rwrwrw, uint16, 16 bit, "Synchronization Type"
0x1c33:02, rwrwrw, uint32, 32 bit, "Cycle Time"
0x1c33:03, r-r-r-, uint32, 32 bit, "Shift Time"
0x1c33:04, r-r-r-, uint16, 16 bit, "Synchronization Types supported"
0x1c33:05, r-r-r-, uint32, 32 bit, "Minimum Cycle Time"
0x1c33:06, r-r-r-, uint32, 32 bit, "Calc and Copy Time"
0x1c33:07, r-r-r-, type 0000, 0 bit, "Minimum fast cycle time"
0x1c33:08, r-r-r-, uint16, 16 bit, "Get Cycle Time"
0x1c33:09, r-r-r-, uint32, 32 bit, "Delay Time"
0x1c33:0a, r-r-r-, uint32, 32 bit, "Sync0 Cycle Time"
0x1c33:0b, r-r-r-, uint32, 32 bit, "Cycle Time Too Small"
0x1c33:0c, r-r-r-, uint32, 32 bit, "SM-Event missed"
0x1c33:0d, r-r-r-, uint32, 32 bit, "Shift Time Too Short"
0x1c33:0e, r-r-r-, uint32, 32 bit, "RxPDO Toggle Failed"
0x1c33:0f, r-r-r-, type 0000, 0 bit, "Minimum Cycle Distance"
0x1c33:10, r-r-r-, type 0000, 0 bit, "Maximum Cycle Distance"
0x1c33:11, r-r-r-, type 0000, 0 bit, "Minimum SM SYNC Distance"
0x1c33:12, r-r-r-, type 0000, 0 bit, "Maximum SM SYNC Distance"
0x1c33:13, r-r-r-, type 0000, 0 bit, "SubIndex 019"
0x1c33:14, r-r-r-, type 0000, 0 bit, "SubIndex 020"
0x1c33:15, r-r-r-, type 0000, 0 bit, "SubIndex 021"
0x1c33:16, r-r-r-, type 0000, 0 bit, "SubIndex 022"
0x1c33:17, r-r-r-, type 0000, 0 bit, "SubIndex 023"
0x1c33:18, r-r-r-, type 0000, 0 bit, "SubIndex 024"
0x1c33:19, r-r-r-, type 0000, 0 bit, "SubIndex 025"
0x1c33:1a, r-r-r-, type 0000, 0 bit, "SubIndex 026"
0x1c33:1b, r-r-r-, type 0000, 0 bit, "SubIndex 027"
0x1c33:1c, r-r-r-, type 0000, 0 bit, "SubIndex 028"
0x1c33:1d, r-r-r-, type 0000, 0 bit, "SubIndex 029"
0x1c33:1e, r-r-r-, type 0000, 0 bit, "SubIndex 030"
0x1c33:1f, r-r-r-, type 0000, 0 bit, "SubIndex 031"
0x1c33:20, r-r-r-, bool, 1 bit, "Sync Error"
SDO 0x58a4, "(C1883) Process data monitoring time"
0x58a4:00, rwrwrw, uint32, 32 bit, "(C1883) Process data monitoring time"
SDO 0x58a5, "(C1882) Process data monitoring reaction"
0x58a5:00, rwrwrw, uint32, 32 bit, "(C1882) Process data monitoring reaction"
SDO 0x58c5, "(C1850) Station alias"
0x58c5:00, rwrwrw, uint32, 32 bit, "(C1850) Station alias"
SDO 0x58d9, "(C1830) EtherCAT bus state"
0x58d9:00, r-r-r-, uint32, 32 bit, "(C1830) EtherCAT bus state"
SDO 0x58df, "(C1825) Outputs (32 Bit values)"
0x58df:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58df:01, r-r-r-, uint32, 32 bit, "SubIndex 001"
0x58df:02, r-r-r-, uint32, 32 bit, "SubIndex 002"
0x58df:03, r-r-r-, uint32, 32 bit, "SubIndex 003"
0x58df:04, r-r-r-, uint32, 32 bit, "SubIndex 004"
0x58df:05, r-r-r-, uint32, 32 bit, "SubIndex 005"
0x58df:06, r-r-r-, uint32, 32 bit, "SubIndex 006"
0x58df:07, r-r-r-, uint32, 32 bit, "SubIndex 007"
0x58df:08, r-r-r-, uint32, 32 bit, "SubIndex 008"
0x58df:09, r-r-r-, uint32, 32 bit, "SubIndex 009"
0x58df:0a, r-r-r-, uint32, 32 bit, "SubIndex 010"
0x58df:0b, r-r-r-, uint32, 32 bit, "SubIndex 011"
SDO 0x58de, "(C1824) Inputs (32 Bit values)"
0x58de:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58de:01, r-r-r-, uint32, 32 bit, "SubIndex 001"
0x58de:02, r-r-r-, uint32, 32 bit, "SubIndex 002"
0x58de:03, r-r-r-, uint32, 32 bit, "SubIndex 003"
0x58de:04, r-r-r-, uint32, 32 bit, "SubIndex 004"
0x58de:05, r-r-r-, uint32, 32 bit, "SubIndex 005"
0x58de:06, r-r-r-, uint32, 32 bit, "SubIndex 006"
0x58de:07, r-r-r-, uint32, 32 bit, "SubIndex 007"
0x58de:08, r-r-r-, uint32, 32 bit, "SubIndex 008"
0x58de:09, r-r-r-, uint32, 32 bit, "SubIndex 009"
0x58de:0a, r-r-r-, uint32, 32 bit, "SubIndex 010"
0x58de:0b, r-r-r-, uint32, 32 bit, "SubIndex 011"
SDO 0x58e1, "(C1823) Outputs"
0x58e1:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58e1:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
0x58e1:02, r-r-r-, uint16, 16 bit, "SubIndex 002"
0x58e1:03, r-r-r-, uint16, 16 bit, "SubIndex 003"
0x58e1:04, r-r-r-, uint16, 16 bit, "SubIndex 004"
0x58e1:05, r-r-r-, uint16, 16 bit, "SubIndex 005"
0x58e1:06, r-r-r-, uint16, 16 bit, "SubIndex 006"
0x58e1:07, r-r-r-, uint16, 16 bit, "SubIndex 007"
0x58e1:08, r-r-r-, uint16, 16 bit, "SubIndex 008"
0x58e1:09, r-r-r-, uint16, 16 bit, "SubIndex 009"
0x58e1:0a, r-r-r-, uint16, 16 bit, "SubIndex 010"
0x58e1:0b, r-r-r-, uint16, 16 bit, "SubIndex 011"
0x58e1:0c, r-r-r-, uint16, 16 bit, "SubIndex 012"
SDO 0x58e0, "(C1822) Inputs"
0x58e0:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58e0:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
0x58e0:02, r-r-r-, uint16, 16 bit, "SubIndex 002"
0x58e0:03, r-r-r-, uint16, 16 bit, "SubIndex 003"
0x58e0:04, r-r-r-, uint16, 16 bit, "SubIndex 004"
0x58e0:05, r-r-r-, uint16, 16 bit, "SubIndex 005"
0x58e0:06, r-r-r-, uint16, 16 bit, "SubIndex 006"
0x58e0:07, r-r-r-, uint16, 16 bit, "SubIndex 007"
0x58e0:08, r-r-r-, uint16, 16 bit, "SubIndex 008"
0x58e0:09, r-r-r-, uint16, 16 bit, "SubIndex 009"
0x58e0:0a, r-r-r-, uint16, 16 bit, "SubIndex 010"
0x58e0:0b, r-r-r-, uint16, 16 bit, "SubIndex 011"
0x58e0:0c, r-r-r-, uint16, 16 bit, "SubIndex 012"
SDO 0x58ec, "(C1811) Software creation date"
0x58ec:00, r-r-r-, string, 136 bit, "(C1811) Software creation date"
SDO 0x58ed, "(C1810) Software identification code"
0x58ed:00, r-r-r-, string, 112 bit, "(C1810) Software identification code"
debian@debian:~$ ethercat pdos
SM0: PhysAddr 0x1000, DefaultSize 256, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1100, DefaultSize 256, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1200, DefaultSize 24, ControlRegister 0x24, Enable 1
RxPDO 0x1600 "IO Outputs"
PDO entry 0x6040:00, 16 bit, "Control word"
PDO entry 0x60b8:00, 16 bit, "TP Function"
PDO entry 0x607a:00, 32 bit, "Target position"
PDO entry 0x60ff:00, 32 bit, "Target velocity"
PDO entry 0x58e1:07, 16 bit, "SubIndex 007"
PDO entry 0x58e1:08, 16 bit, "SubIndex 008"
PDO entry 0x58e1:09, 16 bit, "SubIndex 009"
PDO entry 0x58e1:0a, 16 bit, "SubIndex 010"
PDO entry 0x58e1:0b, 16 bit, "SubIndex 011"
PDO entry 0x58e1:0c, 16 bit, "SubIndex 012"
SM3: PhysAddr 0x1900, DefaultSize 26, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "IO Inputs"
PDO entry 0x0000:00, 14 bit, ""
PDO entry 0x1800:09, 1 bit, "TxPDO Toggle"
PDO entry 0x1800:07, 1 bit, "TxPDO State"
PDO entry 0x6041:00, 16 bit, "Status word"
PDO entry 0x60b9:00, 16 bit, "TP Status"
PDO entry 0x6064:00, 32 bit, "Position actual value"
PDO entry 0x60ba:00, 32 bit, "TP Pos1 pos value"
PDO entry 0x60bb:00, 32 bit, "TP Pos1 neg value"
PDO entry 0x58e0:09, 16 bit, "SubIndex 009"
PDO entry 0x58e0:0a, 16 bit, "SubIndex 010"
PDO entry 0x58e0:0b, 16 bit, "SubIndex 011"
PDO entry 0x58e0:0c, 16 bit, "SubIndex 012"
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 00 -t uint8
0x0f 15
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 01 -t uint32
0x0000000e 14
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x02 -t uint32
0x18000901 402655489
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x03 -t uint32
0x18000701 402654977
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x04 -t uint32
0x58e00110 1491075344
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x05 -t uint32
0x58e00210 1491075600
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x06 -t uint32
0x58e00310 1491075856
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x07 -t uint32
0x58e00410 1491076112
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x08 -t uint32
0x58e00510 1491076368
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x09 -t uint32
0x58e00610 1491076624
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x0a -t uint32
0x58e00710 1491076880
debian@debian:~$
debian@debian:~$
debian@debian:~$
debian@debian:~$
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0xfffd1990 4294777232
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0xfffdabd2 4294814674
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0xfffeab25 4294880037
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0x000001a6 422
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0x0000569c 22172
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0x0000ac55 44117
I want to share some critical findings regarding the integration of the Lenze ECSxM multi-axis servo drive equipped with the EMF2192IB EtherCAT communication module into LhntxBNB (uring linuxcnc-ethercat / lcec). This setup has a very specific architectural layout that completely misleads standard auto-configuration tools.Here is the exact breakdown of the contradictions and hidden traps we discovered under the hood:1. The Core Issue: SDO Mapping vs. Live PDO RealityThe Live Test: When I manually switch the drive to the PREOP + state using the ethercat CLI tool and manually turn the motor shaft by hand, I can see the encoder ticks updating live in the 0x6064 (Position Actual Value) register. This confirms that the CiA 402 profile layer is working inside the drive.The SDO Mapping Contradiction: However, when I look at the actual SDO mapping data for 0x1A00, the sub-indexes point to Lenze's internal, proprietary AIF registers (like 0x58E0) rather than the standard CiA 402 objects.2. Hidden Technical Padding at the Very BeginningWe discovered that the drive forces a fixed bit layout that starts with technical data instead of the control/status registers. Specifically, there is a hidden padding at the very beginning of the TxPDO stream:The first 14 bits are completely occupied by the internal AIF interface system flags (0x0000:00).The next 2 bits contain the drive's internal state/toggle register (0x1800:09).Only after these initial 16 bits does the standard CiA 402 0x6041 Statusword actually begin.3. No Distributed Clocks (Strictly Free Run Mode)By uploading the synchronization manager parameters directly from the drive via CoE, we checked indexes 0x1C32:01 and 0x1C33:01. Both returned 0x0000 (0).This explicitly proves that Distributed Clocks (DC) hardware synchronization is disabled in the drive firmware. The device operates strictly in Free Run mode. Any attempt by the master to force a strict DC cycle or reference clock sync results in frame timeouts and connection drops.4. Why Automatic Configuration (lcec) Crashes ImmediatelyWhen running automatic configuration tools (such as ethercat config > ... or standard generic driver discovery), the master relies strictly on the statib SDN lapphnf tables reported by the drive.As a result:It generates an XML file filled with internal AIF indexes instead of CiA 402 objects.It completely misses the 14-bit hidden padding at the very beginning of the stream. Because of this, the entire data stream shifts by 14 bits, the parser reads garbage, and lcec crashes immediately.It tries to initialize DC synchronization which the drive rejects.
=== Master 0, Slave 0 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x0000003b
Product code: 0x014e7bc0
Revision number: 0x00000001
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, 64 bit
DC system time transmission delay: 0 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0* MII up open yes - 459143642 0 0
1 MII down closed no - - - -
2 N/A down closed no - - - -
3 N/A down closed no - - - -
Mailboxes:
Bootstrap RX: 0x1000/244, TX: 0x10f4/244
Standard RX: 0x1000/256, TX: 0x1100/256
Supported protocols: CoE, FoE
General:
Group: Drives
Image name:
Order number: Servo ECSxM CiA 402
Device name: Servo ECSxM CiA 402
CoE details:
Enable SDO: yes
Enable SDO Info: yes
Enable PDO Assign: no
Enable PDO Configuration: no
Enable Upload at startup: no
Enable SDO complete access: yes
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 0 mA
debian@debian:~$ ethercat sdos
SDO 0x1000, "Device type"
0x1000:00, r-r-r-, uint32, 32 bit, "Device type"
SDO 0x1008, "Device name"
0x1008:00, r-r-r-, string, 176 bit, "Device name"
SDO 0x1009, "Hardware version"
0x1009:00, r-r-r-, string, 16 bit, "Hardware version"
SDO 0x100a, "Software version"
0x100a:00, r-r-r-, string, 88 bit, "Software version"
SDO 0x1018, "Identity"
0x1018:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1018:01, r-r-r-, uint32, 32 bit, "Vendor ID"
0x1018:02, rwrwrw, uint32, 32 bit, "Product code"
0x1018:03, r-r-r-, uint32, 32 bit, "Revision"
0x1018:04, r-r-r-, uint32, 32 bit, "Serial number"
SDO 0x1600, "IO Outputs"
0x1600:00, rwr-r-, uint8, 8 bit, "SubIndex 000"
0x1600:01, rwr-r-, uint32, 32 bit, "SubIndex 001"
0x1600:02, rwr-r-, uint32, 32 bit, "SubIndex 002"
0x1600:03, rwr-r-, uint32, 32 bit, "SubIndex 003"
0x1600:04, rwr-r-, uint32, 32 bit, "SubIndex 004"
0x1600:05, rwr-r-, uint32, 32 bit, "SubIndex 005"
0x1600:06, rwr-r-, uint32, 32 bit, "SubIndex 006"
0x1600:07, rwr-r-, uint32, 32 bit, "SubIndex 007"
0x1600:08, rwr-r-, uint32, 32 bit, "SubIndex 008"
0x1600:09, rwr-r-, uint32, 32 bit, "SubIndex 009"
0x1600:0a, rwr-r-, uint32, 32 bit, "SubIndex 010"
0x1600:0b, rwr-r-, uint32, 32 bit, "SubIndex 011"
0x1600:0c, rwr-r-, uint32, 32 bit, "SubIndex 012"
SDO 0x1800, "IO Inputs"
0x1800:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1800:01,
, type 0000, 0 bit, "SubIndex 001"
0x1800:02,
, type 0000, 0 bit, "SubIndex 002"
0x1800:03,
, type 0000, 0 bit, "SubIndex 003"
0x1800:04,
, type 0000, 0 bit, "SubIndex 004"
0x1800:05,
, type 0000, 0 bit, "SubIndex 005"
0x1800:06,
, type 0000, 0 bit, "SubIndex 006"
0x1800:07, r-r-r-, bool, 1 bit, "TxPDO State"
0x1800:08,
, type 0000, 0 bit, "SubIndex 008"
0x1800:09, r-r-r-, bool, 1 bit, "TxPDO Toggle"
SDO 0x1a00, "IO Inputs"
0x1a00:00, rwr-r-, uint8, 8 bit, "SubIndex 000"
0x1a00:01, rwr-r-, uint32, 32 bit, "SubIndex 001"
0x1a00:02, rwr-r-, uint32, 32 bit, "SubIndex 002"
0x1a00:03, rwr-r-, uint32, 32 bit, "SubIndex 003"
0x1a00:04, rwr-r-, uint32, 32 bit, "SubIndex 004"
0x1a00:05, rwr-r-, uint32, 32 bit, "SubIndex 005"
0x1a00:06, rwr-r-, uint32, 32 bit, "SubIndex 006"
0x1a00:07, rwr-r-, uint32, 32 bit, "SubIndex 007"
0x1a00:08, rwr-r-, uint32, 32 bit, "SubIndex 008"
0x1a00:09, rwr-r-, uint32, 32 bit, "SubIndex 009"
0x1a00:0a, rwr-r-, uint32, 32 bit, "SubIndex 010"
0x1a00:0b, rwr-r-, uint32, 32 bit, "SubIndex 011"
0x1a00:0c, rwr-r-, uint32, 32 bit, "SubIndex 012"
0x1a00:0d, rwr-r-, uint32, 32 bit, "SubIndex 013"
0x1a00:0e, rwr-r-, uint32, 32 bit, "SubIndex 014"
0x1a00:0f, rwr-r-, uint32, 32 bit, "SubIndex 015"
SDO 0x1c00, "Sync manager type"
0x1c00:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c00:01, r-r-r-, uint8, 8 bit, "SubIndex 001"
0x1c00:02, r-r-r-, uint8, 8 bit, "SubIndex 002"
0x1c00:03, r-r-r-, uint8, 8 bit, "SubIndex 003"
0x1c00:04, r-r-r-, uint8, 8 bit, "SubIndex 004"
SDO 0x1c12, "RxPDO assign"
0x1c12:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c12:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
SDO 0x1c13, "TxPDO assign"
0x1c13:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c13:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
SDO 0x1c32, "SM output parameter"
0x1c32:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c32:01, rwrwrw, uint16, 16 bit, "Synchronization Type"
0x1c32:02, rwrwrw, uint32, 32 bit, "Cycle Time"
0x1c32:03, r-r-r-, uint32, 32 bit, "Shift Time"
0x1c32:04, r-r-r-, uint16, 16 bit, "Synchronization Types supported"
0x1c32:05, r-r-r-, uint32, 32 bit, "Minimum Cycle Time"
0x1c32:06, r-r-r-, uint32, 32 bit, "Calc and Copy Time"
0x1c32:07, r-r-r-, type 0000, 0 bit, "Minimum fast cycle time"
0x1c32:08, r-r-r-, uint16, 16 bit, "Get Cycle Time"
0x1c32:09, r-r-r-, uint32, 32 bit, "Delay Time"
0x1c32:0a, r-r-r-, uint32, 32 bit, "Sync0 Cycle Time"
0x1c32:0b, r-r-r-, uint32, 32 bit, "Cycle Time Too Small"
0x1c32:0c, r-r-r-, uint32, 32 bit, "SM-Event missed"
0x1c32:0d, r-r-r-, uint32, 32 bit, "Shift Time Too Short"
0x1c32:0e, r-r-r-, uint32, 32 bit, "RxPDO Toggle Failed"
0x1c32:0f, r-r-r-, type 0000, 0 bit, "Minimum Cycle Distance"
0x1c32:10, r-r-r-, type 0000, 0 bit, "Maximum Cycle Distance"
0x1c32:11, r-r-r-, type 0000, 0 bit, "Minimum SM SYNC Distance"
0x1c32:12, r-r-r-, type 0000, 0 bit, "Maximum SM SYNC Distance"
0x1c32:13, r-r-r-, type 0000, 0 bit, "SubIndex 019"
0x1c32:14, r-r-r-, type 0000, 0 bit, "SubIndex 020"
0x1c32:15, r-r-r-, type 0000, 0 bit, "SubIndex 021"
0x1c32:16, r-r-r-, type 0000, 0 bit, "SubIndex 022"
0x1c32:17, r-r-r-, type 0000, 0 bit, "SubIndex 023"
0x1c32:18, r-r-r-, type 0000, 0 bit, "SubIndex 024"
0x1c32:19, r-r-r-, type 0000, 0 bit, "SubIndex 025"
0x1c32:1a, r-r-r-, type 0000, 0 bit, "SubIndex 026"
0x1c32:1b, r-r-r-, type 0000, 0 bit, "SubIndex 027"
0x1c32:1c, r-r-r-, type 0000, 0 bit, "SubIndex 028"
0x1c32:1d, r-r-r-, type 0000, 0 bit, "SubIndex 029"
0x1c32:1e, r-r-r-, type 0000, 0 bit, "SubIndex 030"
0x1c32:1f, r-r-r-, type 0000, 0 bit, "SubIndex 031"
0x1c32:20, r-r-r-, bool, 1 bit, "Sync Error"
SDO 0x1c33, "SM input parameter"
0x1c33:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x1c33:01, rwrwrw, uint16, 16 bit, "Synchronization Type"
0x1c33:02, rwrwrw, uint32, 32 bit, "Cycle Time"
0x1c33:03, r-r-r-, uint32, 32 bit, "Shift Time"
0x1c33:04, r-r-r-, uint16, 16 bit, "Synchronization Types supported"
0x1c33:05, r-r-r-, uint32, 32 bit, "Minimum Cycle Time"
0x1c33:06, r-r-r-, uint32, 32 bit, "Calc and Copy Time"
0x1c33:07, r-r-r-, type 0000, 0 bit, "Minimum fast cycle time"
0x1c33:08, r-r-r-, uint16, 16 bit, "Get Cycle Time"
0x1c33:09, r-r-r-, uint32, 32 bit, "Delay Time"
0x1c33:0a, r-r-r-, uint32, 32 bit, "Sync0 Cycle Time"
0x1c33:0b, r-r-r-, uint32, 32 bit, "Cycle Time Too Small"
0x1c33:0c, r-r-r-, uint32, 32 bit, "SM-Event missed"
0x1c33:0d, r-r-r-, uint32, 32 bit, "Shift Time Too Short"
0x1c33:0e, r-r-r-, uint32, 32 bit, "RxPDO Toggle Failed"
0x1c33:0f, r-r-r-, type 0000, 0 bit, "Minimum Cycle Distance"
0x1c33:10, r-r-r-, type 0000, 0 bit, "Maximum Cycle Distance"
0x1c33:11, r-r-r-, type 0000, 0 bit, "Minimum SM SYNC Distance"
0x1c33:12, r-r-r-, type 0000, 0 bit, "Maximum SM SYNC Distance"
0x1c33:13, r-r-r-, type 0000, 0 bit, "SubIndex 019"
0x1c33:14, r-r-r-, type 0000, 0 bit, "SubIndex 020"
0x1c33:15, r-r-r-, type 0000, 0 bit, "SubIndex 021"
0x1c33:16, r-r-r-, type 0000, 0 bit, "SubIndex 022"
0x1c33:17, r-r-r-, type 0000, 0 bit, "SubIndex 023"
0x1c33:18, r-r-r-, type 0000, 0 bit, "SubIndex 024"
0x1c33:19, r-r-r-, type 0000, 0 bit, "SubIndex 025"
0x1c33:1a, r-r-r-, type 0000, 0 bit, "SubIndex 026"
0x1c33:1b, r-r-r-, type 0000, 0 bit, "SubIndex 027"
0x1c33:1c, r-r-r-, type 0000, 0 bit, "SubIndex 028"
0x1c33:1d, r-r-r-, type 0000, 0 bit, "SubIndex 029"
0x1c33:1e, r-r-r-, type 0000, 0 bit, "SubIndex 030"
0x1c33:1f, r-r-r-, type 0000, 0 bit, "SubIndex 031"
0x1c33:20, r-r-r-, bool, 1 bit, "Sync Error"
SDO 0x58a4, "(C1883) Process data monitoring time"
0x58a4:00, rwrwrw, uint32, 32 bit, "(C1883) Process data monitoring time"
SDO 0x58a5, "(C1882) Process data monitoring reaction"
0x58a5:00, rwrwrw, uint32, 32 bit, "(C1882) Process data monitoring reaction"
SDO 0x58c5, "(C1850) Station alias"
0x58c5:00, rwrwrw, uint32, 32 bit, "(C1850) Station alias"
SDO 0x58d9, "(C1830) EtherCAT bus state"
0x58d9:00, r-r-r-, uint32, 32 bit, "(C1830) EtherCAT bus state"
SDO 0x58df, "(C1825) Outputs (32 Bit values)"
0x58df:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58df:01, r-r-r-, uint32, 32 bit, "SubIndex 001"
0x58df:02, r-r-r-, uint32, 32 bit, "SubIndex 002"
0x58df:03, r-r-r-, uint32, 32 bit, "SubIndex 003"
0x58df:04, r-r-r-, uint32, 32 bit, "SubIndex 004"
0x58df:05, r-r-r-, uint32, 32 bit, "SubIndex 005"
0x58df:06, r-r-r-, uint32, 32 bit, "SubIndex 006"
0x58df:07, r-r-r-, uint32, 32 bit, "SubIndex 007"
0x58df:08, r-r-r-, uint32, 32 bit, "SubIndex 008"
0x58df:09, r-r-r-, uint32, 32 bit, "SubIndex 009"
0x58df:0a, r-r-r-, uint32, 32 bit, "SubIndex 010"
0x58df:0b, r-r-r-, uint32, 32 bit, "SubIndex 011"
SDO 0x58de, "(C1824) Inputs (32 Bit values)"
0x58de:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58de:01, r-r-r-, uint32, 32 bit, "SubIndex 001"
0x58de:02, r-r-r-, uint32, 32 bit, "SubIndex 002"
0x58de:03, r-r-r-, uint32, 32 bit, "SubIndex 003"
0x58de:04, r-r-r-, uint32, 32 bit, "SubIndex 004"
0x58de:05, r-r-r-, uint32, 32 bit, "SubIndex 005"
0x58de:06, r-r-r-, uint32, 32 bit, "SubIndex 006"
0x58de:07, r-r-r-, uint32, 32 bit, "SubIndex 007"
0x58de:08, r-r-r-, uint32, 32 bit, "SubIndex 008"
0x58de:09, r-r-r-, uint32, 32 bit, "SubIndex 009"
0x58de:0a, r-r-r-, uint32, 32 bit, "SubIndex 010"
0x58de:0b, r-r-r-, uint32, 32 bit, "SubIndex 011"
SDO 0x58e1, "(C1823) Outputs"
0x58e1:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58e1:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
0x58e1:02, r-r-r-, uint16, 16 bit, "SubIndex 002"
0x58e1:03, r-r-r-, uint16, 16 bit, "SubIndex 003"
0x58e1:04, r-r-r-, uint16, 16 bit, "SubIndex 004"
0x58e1:05, r-r-r-, uint16, 16 bit, "SubIndex 005"
0x58e1:06, r-r-r-, uint16, 16 bit, "SubIndex 006"
0x58e1:07, r-r-r-, uint16, 16 bit, "SubIndex 007"
0x58e1:08, r-r-r-, uint16, 16 bit, "SubIndex 008"
0x58e1:09, r-r-r-, uint16, 16 bit, "SubIndex 009"
0x58e1:0a, r-r-r-, uint16, 16 bit, "SubIndex 010"
0x58e1:0b, r-r-r-, uint16, 16 bit, "SubIndex 011"
0x58e1:0c, r-r-r-, uint16, 16 bit, "SubIndex 012"
SDO 0x58e0, "(C1822) Inputs"
0x58e0:00, r-r-r-, uint8, 8 bit, "SubIndex 000"
0x58e0:01, r-r-r-, uint16, 16 bit, "SubIndex 001"
0x58e0:02, r-r-r-, uint16, 16 bit, "SubIndex 002"
0x58e0:03, r-r-r-, uint16, 16 bit, "SubIndex 003"
0x58e0:04, r-r-r-, uint16, 16 bit, "SubIndex 004"
0x58e0:05, r-r-r-, uint16, 16 bit, "SubIndex 005"
0x58e0:06, r-r-r-, uint16, 16 bit, "SubIndex 006"
0x58e0:07, r-r-r-, uint16, 16 bit, "SubIndex 007"
0x58e0:08, r-r-r-, uint16, 16 bit, "SubIndex 008"
0x58e0:09, r-r-r-, uint16, 16 bit, "SubIndex 009"
0x58e0:0a, r-r-r-, uint16, 16 bit, "SubIndex 010"
0x58e0:0b, r-r-r-, uint16, 16 bit, "SubIndex 011"
0x58e0:0c, r-r-r-, uint16, 16 bit, "SubIndex 012"
SDO 0x58ec, "(C1811) Software creation date"
0x58ec:00, r-r-r-, string, 136 bit, "(C1811) Software creation date"
SDO 0x58ed, "(C1810) Software identification code"
0x58ed:00, r-r-r-, string, 112 bit, "(C1810) Software identification code"
debian@debian:~$ ethercat pdos
SM0: PhysAddr 0x1000, DefaultSize 256, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1100, DefaultSize 256, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1200, DefaultSize 24, ControlRegister 0x24, Enable 1
RxPDO 0x1600 "IO Outputs"
PDO entry 0x6040:00, 16 bit, "Control word"
PDO entry 0x60b8:00, 16 bit, "TP Function"
PDO entry 0x607a:00, 32 bit, "Target position"
PDO entry 0x60ff:00, 32 bit, "Target velocity"
PDO entry 0x58e1:07, 16 bit, "SubIndex 007"
PDO entry 0x58e1:08, 16 bit, "SubIndex 008"
PDO entry 0x58e1:09, 16 bit, "SubIndex 009"
PDO entry 0x58e1:0a, 16 bit, "SubIndex 010"
PDO entry 0x58e1:0b, 16 bit, "SubIndex 011"
PDO entry 0x58e1:0c, 16 bit, "SubIndex 012"
SM3: PhysAddr 0x1900, DefaultSize 26, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 "IO Inputs"
PDO entry 0x0000:00, 14 bit, ""
PDO entry 0x1800:09, 1 bit, "TxPDO Toggle"
PDO entry 0x1800:07, 1 bit, "TxPDO State"
PDO entry 0x6041:00, 16 bit, "Status word"
PDO entry 0x60b9:00, 16 bit, "TP Status"
PDO entry 0x6064:00, 32 bit, "Position actual value"
PDO entry 0x60ba:00, 32 bit, "TP Pos1 pos value"
PDO entry 0x60bb:00, 32 bit, "TP Pos1 neg value"
PDO entry 0x58e0:09, 16 bit, "SubIndex 009"
PDO entry 0x58e0:0a, 16 bit, "SubIndex 010"
PDO entry 0x58e0:0b, 16 bit, "SubIndex 011"
PDO entry 0x58e0:0c, 16 bit, "SubIndex 012"
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 00 -t uint8
0x0f 15
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 01 -t uint32
0x0000000e 14
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x02 -t uint32
0x18000901 402655489
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x03 -t uint32
0x18000701 402654977
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x04 -t uint32
0x58e00110 1491075344
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x05 -t uint32
0x58e00210 1491075600
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x06 -t uint32
0x58e00310 1491075856
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x07 -t uint32
0x58e00410 1491076112
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x08 -t uint32
0x58e00510 1491076368
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x09 -t uint32
0x58e00610 1491076624
debian@debian:~$ sudo ethercat upload -p 0 0x1A00 0x0a -t uint32
0x58e00710 1491076880
debian@debian:~$
debian@debian:~$
debian@debian:~$
debian@debian:~$
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0xfffd1990 4294777232
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0xfffdabd2 4294814674
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0xfffeab25 4294880037
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0x000001a6 422
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0x0000569c 22172
debian@debian:~$ sudo ethercat upload -p 0 0x6064 00 -t uint32
0x0000ac55 44117
I want to share some critical findings regarding the integration of the Lenze ECSxM multi-axis servo drive equipped with the EMF2192IB EtherCAT communication module into LhntxBNB (uring linuxcnc-ethercat / lcec). This setup has a very specific architectural layout that completely misleads standard auto-configuration tools.Here is the exact breakdown of the contradictions and hidden traps we discovered under the hood:1. The Core Issue: SDO Mapping vs. Live PDO RealityThe Live Test: When I manually switch the drive to the PREOP + state using the ethercat CLI tool and manually turn the motor shaft by hand, I can see the encoder ticks updating live in the 0x6064 (Position Actual Value) register. This confirms that the CiA 402 profile layer is working inside the drive.The SDO Mapping Contradiction: However, when I look at the actual SDO mapping data for 0x1A00, the sub-indexes point to Lenze's internal, proprietary AIF registers (like 0x58E0) rather than the standard CiA 402 objects.2. Hidden Technical Padding at the Very BeginningWe discovered that the drive forces a fixed bit layout that starts with technical data instead of the control/status registers. Specifically, there is a hidden padding at the very beginning of the TxPDO stream:The first 14 bits are completely occupied by the internal AIF interface system flags (0x0000:00).The next 2 bits contain the drive's internal state/toggle register (0x1800:09).Only after these initial 16 bits does the standard CiA 402 0x6041 Statusword actually begin.3. No Distributed Clocks (Strictly Free Run Mode)By uploading the synchronization manager parameters directly from the drive via CoE, we checked indexes 0x1C32:01 and 0x1C33:01. Both returned 0x0000 (0).This explicitly proves that Distributed Clocks (DC) hardware synchronization is disabled in the drive firmware. The device operates strictly in Free Run mode. Any attempt by the master to force a strict DC cycle or reference clock sync results in frame timeouts and connection drops.4. Why Automatic Configuration (lcec) Crashes ImmediatelyWhen running automatic configuration tools (such as ethercat config > ... or standard generic driver discovery), the master relies strictly on the statib SDN lapphnf tables reported by the drive.As a result:It generates an XML file filled with internal AIF indexes instead of CiA 402 objects.It completely misses the 14-bit hidden padding at the very beginning of the stream. Because of this, the entire data stream shifts by 14 bits, the parser reads garbage, and lcec crashes immediately.It tries to initialize DC synchronization which the drive rejects.
- tommylight

03 Jul 2026 12:28
Replied by tommylight on topic Keyboard Jogging Problems!!!.
Keyboard Jogging Problems!!!.
Category: General LinuxCNC Questions
Enjoy your vacation.
Time to create page: 0.279 seconds