Hello everyone,I am currently trying to commission an EtherCAT servo drive (LC10E series) using
LinuxCNC + LCEC + CiA402.
The slave enters OP-state correctly, torque is enabled, the shaft is held, but
the servo never moves.
Any motion command (homing or G0/G1) results instantly in a
following error.Below is a complete summary of everything that was tried so far.
System Setup
- LinuxCNC 2.10~pre0 (uspace), clean installation via
packages
- EtherCAT master working
- Slave recognized
-
Code:
ethercat slaves → PREOP / SAFEOP / OP
all OK
- Servo drive: LC10E series (Chinese EtherCAT servo)
- EtherCAT mapping generated via
- CiA402 component compiled and installed from GitHub
- Motor shaft is energized and held when LinuxCNC is activated
- Mechanical disturbance triggers an error from the drive → feedback works
What has already been done1. XML generated correctly
- Using:
Code:
lcec_configgen > ethercat-conf.xml
-
Code:
lcec_conf ethercat-conf.xml
loads without errors
-
Code:
halrun → show pin lcec
lists all expected pins
2. CiA402 integration
- CiA402 compiled successfully
- Configuration created using:
- CSP mode enabled:
-
Code:
setp cia402.0.csp-mode 1
- Controlword, Statusword, Velocity pins linked correctly
3. HAL issues fixed
- Fixed type mismatch (drv-fault bit vs u32) by removing problematic nets
- Removed unused / nonexistent pins
- Example: the LC10E has no
Code:
srv-actual-position
PDO
4. halrun diagnostics
- EtherCAT pins work
- OP-state reached
-
Code:
srv-actual-velocity
,
Code:
srv-cia-controlword
etc. update correctly
- BUT actual velocity always stays 0
5. LinuxCNC behavior
- Servo enables and holds torque
- But no movement at all
- Homing → immediate following error
- MDI
→ following error
- Trying as spindle (
) → same issue
6. OP-state OK but drive ignores setpointsThe drive enters OP without issues, but does
not react to:
- target position
- target velocity
- target torque (CST also tested)
Setpoints are written by LCEC, but the servo
does not act on them.
Current suspicionThe LC10E likely does not accept the setpoint PDOs generated by default, or requires:
- additional manufacturer-specific objects
- a different operation mode (CSV instead of CSP?)
- special enable/transition sequence
- custom PDO mapping not included in the ESI
The servo
provides status feedback, but
ignores motion commands.
QuestionsHas anyone successfully used:
- LC10E, LC-EH or similar Chinese EtherCAT servos with LinuxCNC?
- CiA402 in CSP mode on these drives?
- CSV or PP mode with these drives?
- Custom PDO configuration?
Also helpful would be a minimal example of:
- which PDOs are absolutely required for motion
- how to correctly modify
for this family of drives
Any input is greatly appreciated – I am stuck at this very last step.Thanks,
MatthiasDeutsche VersionHallo zusammen,ich versuche derzeit, einen EtherCAT-Servotreiber (LC10E-Serie) mit
LinuxCNC + LCEC + CiA402 in Betrieb zu nehmen.
Der Servo geht korrekt in den OP-Zustand, das Haltemoment ist da, aber
er bewegt sich nicht.
Jeder Bewegungsbefehl (Homen oder G0/G1) führt sofort zu einem
Schleppfehler.Hier eine vollständige Übersicht über alle bisher getesteten Schritte.
System
- LinuxCNC 2.10~pre0, frisch installiert
- EtherCAT läuft
- Slave wird korrekt erkannt
- Servotreiber: LC10E-Serie
- XML erzeugt mit
- CiA402 kompiliert und installiert
- Motorwelle wird gehalten
- Manuelles Verdrehen erzeugt Fehler → Feedback vorhanden
Bereits getestete Schritte1. XML korrekt erzeugt
-
Code:
lcec_configgen > ethercat-conf.xml
-
lädt Datei ohne Fehler
-
Code:
halrun → show pin lcec
listet alle Pins
2. CiA402 korrekt eingebunden
- CSP-Modus aktiviert:
Code:
setp cia402.0.csp-mode 1
- Statusword, Controlword, Velocity verknüpft
- Nicht vorhandene Pins (z. B. actual-position) entfernt
3. HAL-Fehler behoben
- Typfehler bei
(bit vs u32) korrigiert
- Fehlerhafte nets entfernt
4. Diagnose mit halrun
- OP-State erreicht
- EtherCAT-Pins aktiv
- Tatsächliche Geschwindigkeit bleibt immer 0
5. Verhalten in LinuxCNC
- Servo geht in Betrieb
- Homen → sofort Schleppfehler
- G0 X50 → sofort Schleppfehler
- Test als Spindel (M3 S1000) → ebenfalls keine Bewegung
6. GrundverhaltenDer Treiber arbeitet grundsätzlich, aber er reagiert
nicht auf:
- Soll-Geschwindigkeit
- Soll-Position
- Soll-Drehmoment
VermutungDer LC10E benötigt vermutlich:
- spezielle PDO-Konfiguration
- CSV statt CSP
- zusätzliche Hersteller-Objekte
- besondere Freigabesequenz
Momentan liefert der Servo
Statusmeldungen, führt aber
keine Sollwerte aus.
FragenHat jemand diesen oder ähnliche chinesische EtherCAT-Servotreiber erfolgreich mit LinuxCNC betrieben?Speziell:
- LC10E / LC-EH / vergleichbare Modelle
- CiA402 im CSP-Modus
- CSV / PP als Alternativen
- angepasstes PDO-Mapping
Und:
- Welche minimalen PDOs sind zwingend notwendig, damit Bewegung möglich ist?
Jede Hilfe ist willkommen – ich bin jetzt sehr tief in der Konfiguration drin, aber komme hier nicht weiter.Danke,
Matthias