Search Results (Searched for: )
- hellvetica
- hellvetica
28 Apr 2025 11:09
Beckhoff EK1100 not entering OP mode was created by hellvetica
Beckhoff EK1100 not entering OP mode
Category: EtherCAT
Hi, I'm trying to put together some Beckhoff IO module with ethercat.
I followed the examples and instructions i found on this forum but I can't get my EK1100 to go into OP mode.
I know my ethercat setup is good because I managed to get a servo drive working through ethercat.
Here's some outputs:
And my config:
ethercat-test.hal
ethercat-conf.xml
When I run
halrun -I -kf ethercat-test.hal
and then open halshow I can see all the pins but the devices stay in PREOP mode. I can write to the output pins but nothing changes on the drive. The RUN led blinks on the EK1100 confirming that it's in PREOP mode.
This is dmesg output:
Am I doing something wrong?
I followed the examples and instructions i found on this forum but I can't get my EK1100 to go into OP mode.
I know my ethercat setup is good because I managed to get a servo drive working through ethercat.
Here's some outputs:
$ ethercat master
Master0
Phase: Operation
Active: yes
Slaves: 2
Ethernet devices:
Main: 00:d0:b4:04:12:3b (attached)
Link: UP
Tx frames: 159376
Tx bytes: 9588678
Rx frames: 159375
Rx bytes: 9588618
Tx errors: 0
Tx frame rate [1/s]: 109 110 112
Tx rate [KByte/s]: 6.4 6.5 6.6
Rx frame rate [1/s]: 109 110 112
Rx rate [KByte/s]: 6.4 6.5 6.6
Common:
Tx frames: 218598
Tx bytes: 13259230
Rx frames: 218597
Rx bytes: 13259170
Lost frames: 0
Tx frame rate [1/s]: 109 110 112
Tx rate [KByte/s]: 6.4 6.5 6.6
Rx frame rate [1/s]: 109 110 112
Rx rate [KByte/s]: 6.4 6.5 6.6
Loss rate [1/s]: 0 -0 0
Frame loss [%]: 0.0 -0.0 0.0
Distributed clocks:
Reference clock: Slave 0
DC reference time: 799152688552526000
Application time: 799152688552526000
2025-04-28 10:51:28.552526000
$ ethercat slaves -v
=== Master 0, Slave 0 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00000002
Product code: 0x044c2c52
Revision number: 0x00120000
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 - 1646636850 0 0
1 EBUS up open yes 1 1646637150 300 150
2 MII down closed no - - - -
3 N/A down closed no - - - -
General:
Group: SystemBk
Image name:
Order number: EK1100
Device name: EK1100 EtherCAT-Koppler (2A E-Bus)
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: -2000 mA
=== Master 0, Slave 1 ===
Device: Main
State: PREOP
Flag: +
Identity:
Vendor Id: 0x00000002
Product code: 0x0af93052
Revision number: 0x00120000
Serial number: 0x00000000
DL information:
FMMU bit operation: no
Distributed clocks: yes, delay measurement only
DC system time transmission delay: 150 ns
Port Type Link Loop Signal NextSlave RxTime [ns] Diff [ns] NextDc [ns]
0 EBUS up open yes 0 1649051520 0 150
1 EBUS down closed no - - - -
2 N/A down closed no - - - -
3 N/C down closed no - - - -
General:
Group: DigOut
Image name:
Order number: EL2809
Device name: EL2809 16K. Dig. Ausgang 24V, 0.5A
Flags:
Enable SafeOp: no
Enable notLRW: no
Current consumption: 140 mAAnd my config:
ethercat-test.hal
loadrt threads name1=servo-thread period1=1000000
loadusr -W lcec_conf ./ethercat-conf.xml
loadrt lcec
addf lcec.read-all servo-thread
addf lcec.write-all servo-thread
startethercat-conf.xml
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="EK1100" name="D1"/>
<slave idx="1" type="EL2809" name="D2"/>
</master>
</masters>When I run
halrun -I -kf ethercat-test.hal
and then open halshow I can see all the pins but the devices stay in PREOP mode. I can write to the output pins but nothing changes on the drive. The RUN led blinks on the EK1100 confirming that it's in PREOP mode.
This is dmesg output:
[ 3307.915399] EtherCAT 0: Scanning bus.
[ 3308.163827] EtherCAT 0: Bus scanning completed in 248 ms.
[ 3308.163831] EtherCAT 0: Using slave 0 as DC reference clock.
[ 3308.195067] EtherCAT 0: Slave states on main device: PREOP.
Here i ran halrun -I -kf ethercat-test.hal
[ 3361.575932] EtherCAT: Requesting master 0...
[ 3361.575936] EtherCAT: Successfully requested master 0.
[ 3361.576003] EtherCAT 0: Domain0: Logical address 0x00000000, 2 byte, expected working counter 1.
[ 3361.576005] EtherCAT 0: Datagram domain0-0-main: Logical offset 0x00000000, 2 byte, type LWR.
[ 3361.576018] EtherCAT 0: Master thread exited.
[ 3361.576020] EtherCAT 0: Starting EtherCAT-OP thread.
[ 3361.589265] EtherCAT 0: Master thread exited.
[ 3361.589274] EtherCAT 0: Starting EtherCAT-IDLE thread.
[ 3361.589312] EtherCAT 0: Releasing master...
[ 3361.589313] EtherCAT 0: Released.
Am I doing something wrong?
- Aciera

28 Apr 2025 10:41
Replied by Aciera on topic Gmoccapy G54 Offsets
Gmoccapy G54 Offsets
Category: Gmoccapy
I don't understand what you are doing. Without homing the machine first there is really no point in setting offsets.It appears G10 L2 and G10 L20 assume machine is actually Homed physically, and no amount of data entry can change that.
- khawla
- khawla
28 Apr 2025 10:34
Replied by khawla on topic joint 0 following error
joint 0 following error
Category: General LinuxCNC Questions
Hello everyone,
I have a strange problem with LinuxCNC on a machine that has been configured for a long time and was working perfectly.
Until a few days ago, everything was working fine. Then I modified my Python Touchy GUI file (adding dynamic multi-language translation using `set_label` on some buttons), and from that moment the problem appeared:
> "joint 0 following error" immediately after clicking "Start".
The problem still remains even if I completely delete all the translation modifications (`LABELS` and `on_combo_language_changed`);
Code I had added:
LABELS = {
"en": {
"title": "Industry 4.0 Monitoring",
"total_time": "Total machine work time:",
"current_job": "Current job time:",
"next_greaser": "Next greaser in:",
"time_monitoring": "<b>Time Monitoring</b>",
"email_section": "<b>Email Notification Management</b>",
"history_section": "<b>Job History</b>",
"email": "Email:",
"add": "Add",
"remove": "Remove",
"close_door": "Close Door",
"open_door": "Open Door",
"machine_on": "Machine On",
"machine_off": "Machine Off",
"home_all": "Home All",
"pause": "Pause",
"start": "Start",
"feed_fast": "Fast",
"feed_slow": "Slow",
"feed_override": "Feed Override"
},
"it": {
"title": "Monitoraggio Industria 4.0",
"total_time": "Tempo totale macchina:",
"current_job": "Tempo job corrente:",
"next_greaser": "Prossima lubrificazione in:",
"time_monitoring": "<b>Monitoraggio Tempo</b>",
"email_section": "<b>Gestione Notifiche Email</b>",
"history_section": "<b>Storico Lavorazioni</b>",
"email": "Email:",
"add": "Aggiungi",
"remove": "Rimuovi",
"close_door": "Chiudi Porta",
"open_door": "Apri Porta",
"machine_on": "Macchina On",
"machine_off": "Macchina Off",
"home_all": "Home Tutti",
"pause": "Pausa",
"start": "Avvio",
"feed_fast": "Veloce",
"feed_slow": "Lento",
"feed_override": "Regolazione Avanzamento"
}
}
def on_combo_language_changed(self, combo):
lang = combo.get_active_id() or "en"
texts = LABELS.get(lang, LABELS["en"])
# Main Industry 4.0 labels
self.builder.get_object("title_industria40").set_markup(f"<span size='xx-large' weight='bold'>{texts}</span>")
self.builder.get_object("label_tempo_totale").set_text(texts["total_time"])
self.builder.get_object("label_tempo_job_corrente").set_text(texts["current_job"])
self.builder.get_object("label_tempo_prossimo_greaser").set_text(texts["next_greaser"])
self.builder.get_object("frame_label_tempo").set_markup(texts["time_monitoring"])
self.builder.get_object("frame_label_email").set_markup(texts["email_section"])
self.builder.get_object("frame_label_lavorazioni").set_markup(texts["history_section"])
self.builder.get_object("label_email").set_text(texts["email"])
self.builder.get_object("button_add_email").set_label(texts["add"])
self.builder.get_object("button_remove_email").set_label(texts["remove"])
# Startup tab buttons
self.builder.get_object("estop_reset").set_label(texts["close_door"])
self.builder.get_object("estop").set_label(texts["open_door"])
self.builder.get_object("machine_on").set_label(texts["machine_on"])
self.builder.get_object("machine_off").set_label(texts["machine_off"])
self.builder.get_object("home_all").set_label(texts["home_all"])
self.builder.get_object("cycle_pausee").set_label(texts["pause"])
self.builder.get_object("cycle_startt").set_label(texts["start"])
self.builder.get_object("feed_override_plus").set_label(texts["feed_fast"])
self.builder.get_object("feed_override_minus").set_label(texts["feed_slow"])
# Feed Override label, keeping the percentage value
current_text = self.builder.get_object("feed_override_label").get_text()
percentage_part = current_text.split(":")[1] if ":" in current_text else " 100%"
self.builder.get_object("feed_override_label").set_text(f"{texts}: {percentage_part}")
I have a strange problem with LinuxCNC on a machine that has been configured for a long time and was working perfectly.
Until a few days ago, everything was working fine. Then I modified my Python Touchy GUI file (adding dynamic multi-language translation using `set_label` on some buttons), and from that moment the problem appeared:
> "joint 0 following error" immediately after clicking "Start".
The problem still remains even if I completely delete all the translation modifications (`LABELS` and `on_combo_language_changed`);
Code I had added:
LABELS = {
"en": {
"title": "Industry 4.0 Monitoring",
"total_time": "Total machine work time:",
"current_job": "Current job time:",
"next_greaser": "Next greaser in:",
"time_monitoring": "<b>Time Monitoring</b>",
"email_section": "<b>Email Notification Management</b>",
"history_section": "<b>Job History</b>",
"email": "Email:",
"add": "Add",
"remove": "Remove",
"close_door": "Close Door",
"open_door": "Open Door",
"machine_on": "Machine On",
"machine_off": "Machine Off",
"home_all": "Home All",
"pause": "Pause",
"start": "Start",
"feed_fast": "Fast",
"feed_slow": "Slow",
"feed_override": "Feed Override"
},
"it": {
"title": "Monitoraggio Industria 4.0",
"total_time": "Tempo totale macchina:",
"current_job": "Tempo job corrente:",
"next_greaser": "Prossima lubrificazione in:",
"time_monitoring": "<b>Monitoraggio Tempo</b>",
"email_section": "<b>Gestione Notifiche Email</b>",
"history_section": "<b>Storico Lavorazioni</b>",
"email": "Email:",
"add": "Aggiungi",
"remove": "Rimuovi",
"close_door": "Chiudi Porta",
"open_door": "Apri Porta",
"machine_on": "Macchina On",
"machine_off": "Macchina Off",
"home_all": "Home Tutti",
"pause": "Pausa",
"start": "Avvio",
"feed_fast": "Veloce",
"feed_slow": "Lento",
"feed_override": "Regolazione Avanzamento"
}
}
def on_combo_language_changed(self, combo):
lang = combo.get_active_id() or "en"
texts = LABELS.get(lang, LABELS["en"])
# Main Industry 4.0 labels
self.builder.get_object("title_industria40").set_markup(f"<span size='xx-large' weight='bold'>{texts}</span>")
self.builder.get_object("label_tempo_totale").set_text(texts["total_time"])
self.builder.get_object("label_tempo_job_corrente").set_text(texts["current_job"])
self.builder.get_object("label_tempo_prossimo_greaser").set_text(texts["next_greaser"])
self.builder.get_object("frame_label_tempo").set_markup(texts["time_monitoring"])
self.builder.get_object("frame_label_email").set_markup(texts["email_section"])
self.builder.get_object("frame_label_lavorazioni").set_markup(texts["history_section"])
self.builder.get_object("label_email").set_text(texts["email"])
self.builder.get_object("button_add_email").set_label(texts["add"])
self.builder.get_object("button_remove_email").set_label(texts["remove"])
# Startup tab buttons
self.builder.get_object("estop_reset").set_label(texts["close_door"])
self.builder.get_object("estop").set_label(texts["open_door"])
self.builder.get_object("machine_on").set_label(texts["machine_on"])
self.builder.get_object("machine_off").set_label(texts["machine_off"])
self.builder.get_object("home_all").set_label(texts["home_all"])
self.builder.get_object("cycle_pausee").set_label(texts["pause"])
self.builder.get_object("cycle_startt").set_label(texts["start"])
self.builder.get_object("feed_override_plus").set_label(texts["feed_fast"])
self.builder.get_object("feed_override_minus").set_label(texts["feed_slow"])
# Feed Override label, keeping the percentage value
current_text = self.builder.get_object("feed_override_label").get_text()
percentage_part = current_text.split(":")[1] if ":" in current_text else " 100%"
self.builder.get_object("feed_override_label").set_text(f"{texts}: {percentage_part}")
- Murphy
- Murphy
28 Apr 2025 10:32
Replied by Murphy on topic Remora - ethernet NVEM / EC300 / EC500 cnc board
Remora - ethernet NVEM / EC300 / EC500 cnc board
Category: Computers and Hardware
@cakeslob , I had a look at your hal file again and copied your spindle stuff exactly just changed for my pins etc and it's still the same. So I think that rules out a hal file problem. I don't think it's the vfd because I can change the speed manually by pressing the + and - manually in the Axis GUI and it responses quick with no dips when changing speeds.
Time to create page: 0.384 seconds