Advanced Search

Search Results (Searched for: )

  • JackRay
  • JackRay
14 Sep 2025 15:00
Replied by JackRay on topic The Parameters

The Parameters

Category: General LinuxCNC Questions

I am currently developing a parametric program (sub) to measure the exact dimensions of my tools. I need to read the theoretical diameter contained in the tool table that I use for my approaches. Thank you.
  • RobotMatic
  • RobotMatic's Avatar
14 Sep 2025 14:40
7i76E Spindle configuration was created by RobotMatic

7i76E Spindle configuration

Category: PnCConf Wizard

I can't configure the spindle, the configuration screen doesn't appear.
 also can't choose the PWM signal or CW - CCW.
I am on 2.9.5 and I don't understand what I'm doing wrong.

There is something that changed, in version 2.7.15 of LinuxCNC it could be done without problems, now it is impossible for me, I don't understand what is happening, I can't find information to guide me. Thank you.!!!
  • MaHa
  • MaHa
14 Sep 2025 14:23
Touch off, OK button greyed out was created by MaHa

Touch off, OK button greyed out

Category: AXIS

Since 2.9.5 update, touch off, the OK button greyed out, after input a value. Also after some restart of PC. A (senseless) touchoff with zero works:
emcTaskPlanLevel() returned 0
emcTaskPlanExecute(G10 L20 P3 x[[0.0]*1.000000000000]) returned 0
emcTaskPlanLevel() returned 0


 
 
  • Hakan
  • Hakan
14 Sep 2025 12:55
Replied by Hakan on topic Sync Problem LinuxCNC + EL8EC400F

Sync Problem LinuxCNC + EL8EC400F

Category: EtherCAT

Well, then I would say my suspicion is confirmed. The explanation says it.

The thing is that DC is very precise, and the ethercat master can follow the DC time of the slaves very precisely.
The first ethercat slave determines the DC clock speed.

But Linuxcnc's clock, used for the servo period and base period, is not synchronized with ethercat's DC.
One clock always runs slightly faster/slower.

The consequence of this is that when one clock is overtaking the other, there will be either double PDO or no PDO sent during an ethercat cycle. If there is no data sent one cycle the drive sees that as "stay on the current position" which means a hard brake if it is moving. Or move double delta this time, which means huge acceleration.
Latency and a not so suitable NIC makes it worse, the duration for one clock to overtaking the other becomes longer and more of these hits and misses takes place.

What can you do? Work on latency. Use an Intel NIC. See if your drive have some limitations you can set like max-acceleration. In short, see if your drive can handle hits and misses in a better way.

One would like to see Linuxcnc's clock synchronized with ethercat's DC, but it isn't.
 
  • Ahmed.emara
  • Ahmed.emara
14 Sep 2025 12:28
Replied by Ahmed.emara on topic Sync Problem LinuxCNC + EL8EC400F

Sync Problem LinuxCNC + EL8EC400F

Category: EtherCAT

Synchronization overflow times” = the number of times the drive saw Sync0 + PDOs outside the valid window.
there is a tab in the tunner called diagnose that monitor the sync parameter for the communication, please check the attached screenshot from the tunner.
this screenshot is token while jogging the machine, jitter random sounds appears from the motor in random time there is no pattern.

the leadshine tunner app " motion studio" runs on seperate PC connected to the driver via USB.
 
  • Hakan
  • Hakan
14 Sep 2025 12:13
Replied by Hakan on topic Sync Problem LinuxCNC + EL8EC400F

Sync Problem LinuxCNC + EL8EC400F

Category: EtherCAT

github.com/linuxcnc-ethercat/linuxcnc-et...uration-reference.md
refClockSyncCycles tells how often the slaves' clocks are synchronized. "1000" should be fine, and "1" and "5" also.
I don't think you can have a floating point number there but I could be wrong.

I have a suspicion on what is going on, it has happened before with other drives, for me included.

I am not familiar with the Leadshine software. It runs on a Windows computer, right? And how does that computer
connect to the drive? I read Modbus somewhere. Just to see the difference with linuxcnc and ethercat.
What is the explanation of the Synchronization overflow times message, what does it mean?

What latency number do you have for the linuxcnc computer? And what network adapter does it have?
  • Ahmed.emara
  • Ahmed.emara
14 Sep 2025 10:35 - 02 Oct 2025 13:10
Sync Problem LinuxCNC + EL8EC400F was created by Ahmed.emara

Sync Problem LinuxCNC + EL8EC400F

Category: EtherCAT

SOLVED!

I am running LinuxCNC with EtherCAT  and Leadshine EL8-EC400F servo drives in Cyclic Synchronous Position (CSP) mode. I’m struggling with jitter / noise that seems to be related to Distributed Clock (DC) synchronization between LinuxCNC and the drives.
My Machine Setup:
  • Controller: LinuxCNC (2.9.4) + EtherCAT (lcec)
    • Drives: 5 × Leadshine EL8-EC400F
      • Mode: CiA-402 CSP (0x6060 = 8) ( Control mode CSP)
        • Interpolation time (0x60C2): Read-only, fixed at 2 ms (
          value=2, [code]index=-3)
          [/code]
          • [code][b]Servo thread: 2 ms (2000000 ns) in LinuxCNC INI
            
            Please the attached XML for EtherCAT communication settings.
            My problem is as follows : [/b]
            [/code]
            • [code][b]When I jog axes in LinuxCNC, the motors make a [b]raspy / friction-like noise.[/b][/b]
              [/code]
              • [code][b][b]In HALScope, I see [b]large torque and acceleration spikes at the same time.[/b][/b][/b]
                [/code]
                • [code][b][b][b]In Leadshine MotionStudio → Diagnostics, I see the counter [b]“Synchronization overflow times” increasing steadily during motion.[/b][/b][/b][/b]
                  [/code]
                  • [code][b][b][b][b]However, when I test motion with the Leadshine tuning software (without LinuxCNC), the motors run perfectly smooth.
                    
                    what i tried so far : 
                     [/b][/b][/b][/b]
                    [/code]
                    • [code][b][b][b][b]Matched [b]SERVO_PERIOD, [code]appTimePeriod, and [code]sync0Cycle to 2 ms.
                      [/code][/code][/code][/b][/b][/b][/b][/b]
                      • [code][b][b][b][b][b][code][code]Tested different [code]refClockSyncCycles values:
                        [/code][/code][/code][/code][/b][/b][/b][/b][/b]
                        • [code][b][b][b][b][b][code][code][code][code]5 (every 10 ms) → overflow counter increased faster.
                          [/code][/code][/code][/code][/code][/b][/b][/b][/b][/b]
                          • [code][b][b][b][b][b][code][code][code][code][code]1 (every 2 ms) → better, but still some overflows.
                            [/code][/code][/code][/code][/code][/code][/b][/b][/b][/b][/b]
                            • [code][b][b][b][b][b][code][code][code][code][code][code]0.5 (every 1 ms half-cycle) + [code]sync0Shift=10000 → gave the [b]best result so far, but the overflow counter still increments slowly.[/b]
                              [/code][/code][/code][/code][/code][/code][/code][/code][/b][/b][/b][/b][/b]
                              • [code][b][b][b][b][b][code][code][code][code][code][code][code][b]Increased [code]sync0Shift from 1 µs up to 20 µs → small improvements, but not fully stable.
                                [/code][/code][/code][/code][/code][/code][/code][/b][/code][/code][/b][/b][/b][/b][/b]
                                • [code][b][b][b][b][b][code][code][code][code][code][code][code][b][code]Checked 0x60C2 (interpolation time) → confirmed it is [b]read-only fixed at 2 ms, so I cannot change the drives to 1 ms.
                                  
                                  Also i noticed in the tunner motion studio that all the drivers has EtherCAT slave ID = 2 , while it should be configured by the master which is wired.
                                   
                                  my Questions : [/b]
                                  [/code][/code][/code][/code][/code][/code][/code][/b][/code][/code][/b][/b][/b][/b][/b]
                                  • [code][b][b][b][b][b][code][code][code][code][code][code][code][b][code][b]Is it valid/expected that [code]refClockSyncCycles="0.5" works better than [code]1 or [code]5? Or does this mean I have a deeper DC setup issue?
                                    [/code][/code][/code][/code][/code][/code][/code][/code][/code][/code][/b][/b][/code][/code][/b][/b][/b][/b][/b]
                                    • [code][b][b][b][b][b][code][code][code][code][code][code][code][b][code][b][code][code][code]For LinuxCNC + EL8 drives fixed at 2 ms interpolation, what is the recommended [b]refClockSyncCycles and [b]sync0Shift strategy?[/b][/b]
                                      [/code][/code][/code][/code][/code][/code][/code][/code][/code][/code][/b][/b][/code][/code][/b][/b][/b][/b][/b]
                                      • [code][b][b][b][b][b][code][code][code][code][code][code][code][b][code][b][code][code][code][b][b]Has anyone successfully run EL8-EC400F in CSP under LinuxCNC without sync overflows?[/b][/b]
                                        [/code][/code][/code][/code][/code][/code][/code][/code][/code][/code][/b][/b][/code][/code][/b][/b][/b][/b][/b]
                                        • [code][b][b][b][b][b][code][code][code][code][code][code][code][b][code][b][code][code][code][b][b]Any advice on NIC/IRQ tuning (isolated cores, rt-preempt) that could help with reducing these overflows?[/b][/b]
                                          [/code][/code][/code][/code][/code][/code][/code][/code][/code][/code][/b][/b][/code][/code][/b][/b][/b][/b][/b]
  • Aciera
  • Aciera's Avatar
14 Sep 2025 08:06
Replied by Aciera on topic 5-axis CNC recommendation

5-axis CNC recommendation

Category: General LinuxCNC Questions

Apologies @Jmp97 your profile got deleted by accident. Feel free to reregister with the previous username/ password.
  • WKS-3D
  • WKS-3D's Avatar
14 Sep 2025 07:48
Replied by WKS-3D on topic Glasmaßstab EIA-422 an Mesa 7i85 (S)

Glasmaßstab EIA-422 an Mesa 7i85 (S)

Category: Deutsch

I changed it as follows:

# ---Encoder Feedback Signals/Setup

setp    hm2_7i92.0.encoder.00.counter-mode 0
setp    hm2_7i92.0.encoder.00.filter 1
setp    hm2_7i92.0.encoder.00.index-invert 0 # war 0
setp    hm2_7i92.0.encoder.00.index-mask 0
setp    hm2_7i92.0.encoder.00.index-mask-invert 1  # war 1
setp    hm2_7i92.0.encoder.00.scale  [JOINT_0]ENCODER_SCALE
setp    hm2_7192.0.encoder.00.index-enable true

# ---Indexsignal GMS fuer Referenzpunkt X (NICHT MIT NORMALEM ENDSCHALTER)

net x-pos-fb  <=  hm2_7i92.0.encoder.00.position
net x-vel-fb  <=  hm2_7i92.0.encoder.00.velocity
net x-pos-fb  =>  joint.0.motor-pos-fb
#net x-index-enable  joint.0.index-enable  <=>  hm2_7i92.0.encoder.00.index-enable
net x-pos-rawcounts  <=  hm2_7i92.0.encoder.00.rawcounts
 but I get this error message: 
  • WKS-3D
  • WKS-3D's Avatar
14 Sep 2025 07:25
Replied by WKS-3D on topic Glasmaßstab EIA-422 an Mesa 7i85 (S)

Glasmaßstab EIA-422 an Mesa 7i85 (S)

Category: Deutsch

That's what I did:
net x-index-enable joint.0.index-enable <=> hm2_7i92.0.encoder.00.index-enable

but it doesn't work
  • dskinne6
  • dskinne6
14 Sep 2025 07:18
Replied by dskinne6 on topic Installing 2.9.5 on Raspberry Pi 5

Installing 2.9.5 on Raspberry Pi 5

Category: Installing LinuxCNC

Now working, many thanks!
  • farmer_mike
  • farmer_mike
14 Sep 2025 04:59
Replied by farmer_mike on topic Getting (hopefully) close to an Rtelligent build

Getting (hopefully) close to an Rtelligent build

Category: EtherCAT

I halved the SDO values one more time and the servos are nice and quiet now. I will have to look at the HAL Oscilloscope to see how the tune is, but for now the tune is quiet and on scale.

Here are the files below. I used an ECT60 paired with a precision planetary gearbox for the Z axis of my milling machine. The X and Y axis are controlled by RS750E drives with a slight belt reduction.

Emergency stop button is wired into the ECT60 on input number 6. From the input of the ECT60, I mapped the E stop over to the HALUI emergency stop. Without the HALUI mapping, the drives would start back up as soon as the physical E stop was released. The limit switches and homing switches for the Z axis were straight forward.

Limit switches and homing switches for the RS750E drives were a little more complicated. I converted the drive input tags from s32 to u32 then bit sliced the u32 to break out the switches. I bet all the slicing could have been done in the XML file, but I could not figure that out.

When I first started the project, my plan was to run everything off of a laptop. I have since switched to a raspberry pi 4.

I still have a bit of work to do, but I want to thank everyone for their help so far.
###########################################################
#
# CIA 402 example snippet Hal
#
###########################################################

###########################################################
# Setup
###########################################################

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS


loadusr -W lcec_conf ethercat-conf.xml
#loadusr -W /home/cnc/linuxcnc/configs/linuxcnc-cia402-single/python_control.py

loadrt lcec
loadrt cia402 count=3
loadrt pid names=0-pid,1-pid,2-pid

loadrt bitslice count=6 personality=32,32,32,32,32,32
addf bitslice.0 servo-thread
addf bitslice.1 servo-thread
addf bitslice.2 servo-thread
addf bitslice.3 servo-thread
addf bitslice.4 servo-thread
addf bitslice.5 servo-thread

loadrt conv_s32_u32 count=6
addf conv-s32-u32.0 servo-thread
addf conv-s32-u32.1 servo-thread
addf conv-s32-u32.2 servo-thread
addf conv-s32-u32.3 servo-thread
addf conv-s32-u32.4 servo-thread
addf conv-s32-u32.5 servo-thread



###########################################################
# Functions servo-thread
###########################################################

addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread

addf motion-command-handler servo-thread
addf motion-controller servo-thread

addf 0-pid.do-pid-calcs servo-thread
addf 1-pid.do-pid-calcs servo-thread
addf 2-pid.do-pid-calcs servo-thread

addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf lcec.write-all servo-thread


#########################################
#nets
#########################################
net emc-enable => iocontrol.0.emc-enable-in
sets emc-enable 1

#config

 
#
# Joint 0
#
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 786432


#from servo(ethercat) to cia402
net 0-statusword      lcec.0.0.cia-statusword => cia402.0.statusword
net 0-opmode-display  lcec.0.0.opmode-display => cia402.0.opmode-display
net 0-drv-act-pos     lcec.0.0.actual-position => cia402.0.drv-actual-position
net 0-drv-act-velo    lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity

#from motion to cia

net 0-enable     <= joint.0.amp-enable-out => cia402.0.enable
net 0-amp-fault  => joint.0.amp-fault-in   <= cia402.0.drv-fault
net 0-pos-cmd    <= joint.0.motor-pos-cmd  => cia402.0.pos-cmd
net 0-pos-fb     => joint.0.motor-pos-fb   <= cia402.0.pos-fb


#from cia402 to servo(ethercat)
net 0-controlword         cia402.0.controlword => lcec.0.0.cia-controlword
net 0-modes-of-operation  cia402.0.opmode => lcec.0.0.opmode
net 0-drv-target-pos      cia402.0.drv-target-position => lcec.0.0.target-position
net 0-drv-target-velo     cia402.0.drv-target-velocity => lcec.0.0.target-velocity


net my-out-0 conv-s32-u32.0.in <= lcec.0.0.digitalinputs
net my-in-0 conv-s32-u32.0.out => bitslice.0.in
net my-bit-0 bitslice.0.out-00 joint.0.neg-lim-sw-in

net my-out-0 conv-s32-u32.1.in <= lcec.0.0.digitalinputs
net my-in-1 conv-s32-u32.1.out => bitslice.1.in
net my-bit-1 bitslice.1.out-01 joint.0.pos-lim-sw-in

net my-out-0 conv-s32-u32.2.in <= lcec.0.0.digitalinputs
net my-in-2 conv-s32-u32.2.out => bitslice.2.in
net my-bit-2 bitslice.2.out-02 joint.0.home-sw-in


#
# Joint 1
#
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale -786432

#from servo(ethercat) to cia402
net 1-statusword      lcec.0.1.cia-statusword => cia402.1.statusword
net 1-opmode-display  lcec.0.1.opmode-display => cia402.1.opmode-display
net 1-drv-act-pos     lcec.0.1.actual-position => cia402.1.drv-actual-position
net 1-drv-act-velo    lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity

#from cia402 to servo(ethercat)
net 1-controlword         cia402.1.controlword => lcec.0.1.cia-controlword
net 1-modes-of-operation  cia402.1.opmode => lcec.0.1.opmode
net 1-drv-target-pos      cia402.1.drv-target-position => lcec.0.1.target-position
net 1-drv-target-velo     cia402.1.drv-target-velocity => lcec.0.1.target-velocity

#from motion to cia
net 1-enable    <= joint.1.amp-enable-out => cia402.1.enable
net 1-amp-fault => joint.1.amp-fault-in   <= cia402.1.drv-fault
net 1-pos-cmd   <= joint.1.motor-pos-cmd  => cia402.1.pos-cmd
net 1-pos-fb    => joint.1.motor-pos-fb   <= cia402.1.pos-fb


net my-out-1 conv-s32-u32.3.in <= lcec.0.1.digitalinputs
net my-in-3 conv-s32-u32.3.out => bitslice.3.in
net my-bit-3 bitslice.3.out-00 joint.1.pos-lim-sw-in

net my-out-1 conv-s32-u32.4.in <= lcec.0.1.digitalinputs
net my-in-4 conv-s32-u32.4.out => bitslice.4.in
net my-bit-4 bitslice.4.out-01 joint.1.neg-lim-sw-in

net my-out-1 conv-s32-u32.5.in <= lcec.0.1.digitalinputs
net my-in-5 conv-s32-u32.5.out => bitslice.5.in
net my-bit-5 bitslice.5.out-02 joint.1.home-sw-in


#
# Joint 2
#
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 96000

#from servo(ethercat) to cia402
net 2-statusword      lcec.0.2.cia-statusword => cia402.2.statusword
net 2-opmode-display  lcec.0.2.opmode-display => cia402.2.opmode-display
net 2-drv-act-pos     lcec.0.2.actual-position => cia402.2.drv-actual-position
net 2-drv-act-velo    lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity

#from cia402 to servo(ethercat)
net 2-controlword         cia402.2.controlword => lcec.0.2.cia-controlword
net 2-modes-of-operation  cia402.2.opmode => lcec.0.2.opmode
net 2-drv-target-pos      cia402.2.drv-target-position => lcec.0.2.target-position
net 2-drv-target-velo     cia402.2.drv-target-velocity => lcec.0.2.target-velocity

#from motion to cia
net 2-enable    <= joint.2.amp-enable-out => cia402.2.enable
net 2-amp-fault => joint.2.amp-fault-in   <= cia402.2.drv-fault
net 2-pos-cmd   <= joint.2.motor-pos-cmd  => cia402.2.pos-cmd
net 2-pos-fb    => joint.2.motor-pos-fb   <= cia402.2.pos-fb

net  2-CCW-limit lcec.0.2.in-3 => joint.2.neg-lim-sw-in
net  2-CW-limit lcec.0.2.in-4 => joint.2.pos-lim-sw-in
net  2-in-home lcec.0.2.in-5 => joint.2.home-sw-in
net  2-in-6 lcec.0.2.in-6 => halui.estop.activate


#net spindle_speed     spindle.0.speed-out => python_control.rpm_in
# This config file was created 2020-08-14 17:19:37.621705 by the update_ini script
# The original config files may be found in the /home/demo/linuxcnc/configs/et-3ax/et_3ax_CIA402.old directory

[EMC]
# The version string for this INI file.
VERSION = 1.1

MACHINE = EtherCAT Machine
DEBUG = 1

[DISPLAY]
DISPLAY = axis
EDITOR = gedit

#PYVCP = pyvcp_panel.xml

# places the pyvcp panel at the bottom of the Axis window
PYVCP_POSITION = RIGHT

# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =            0.100

# Path to help file
HELP_FILE =             doc/help.txt

# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1
# Prefix to be used
PROGRAM_PREFIX = /home/demo/linuxcnc/nc_files
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 0
INCREMENTS = 1in .5in .25in .125in .0625in .025in .05in
#INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[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
nc = /usr/bin/axis

[RS274NGC]

PARAMETER_FILE = linuxcnc.var

[EMCMOT]

EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD =  0
SERVO_PERIOD = 1000000

[TASK]
TASK = milltask
CYCLE_TIME = 0.005

[HAL]
HALFILE = cia402.hal
#SHUTDOWN = shutdown.hal
HALUI = halui

[HALUI]

[TRAJ]

HOME = 16 12 7
COORDINATES = XYZ
LINEAR_UNITS = in
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = .25
MAX_LINEAR_VELOCITY = .5
MIN_LINEAR_VELOCITY = .01
DEFAULT_ANGULAR_VELOCITY = 360
MAX_ANGULAR_VELOCITY = 720
POSITION_FILE = position.txt

[EMCIO]

# Name of IO controller program, e.g., iov2 has tool changer stuff
EMCIO =         iov2

CYCLE_TIME =    0.100

# tool table file
TOOL_TABLE =    cia402.tbl
TOOL_CHANGE_POSITION = 0 0 50.8
#RANDOM_TOOLCHANGER = 1


[KINS]
JOINTS = 3
KINEMATICS = trivkins kinstype=both coordinates=xyz


[AXIS_X]
MIN_LIMIT = 0.1
MAX_LIMIT = 17.9
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
BACKLASH = 0.0000

[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = .5
MAX_ACCELERATION = 10

# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
# is this applicable for ethercat????
#STEPGEN_MAXVEL = 1.25
#STEPGEN_MAXACCEL = 1.25
SCALE = 1
FERROR = 200
MIN_FERROR = 50
MIN_LIMIT = 0
MAX_LIMIT = 18
HOME                    = 16
HOME_OFFSET                = 16
HOME_SEQUENCE            = 0

HOME_SEARCH_VEL = -.125
HOME_LATCH_VEL = -.125
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS        = NO





[AXIS_Y]
MIN_LIMIT = 0.1
MAX_LIMIT = 12.9
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
BACKLASH = 0.0000


[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = .5
MAX_ACCELERATION = 10


# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
# is this applicable for ethercat????
#STEPGEN_MAXVEL = 1.25
#STEPGEN_MAXACCEL = 1.25
STEP_SCALE = 1
FERROR = 2
MIN_FERROR = 20
MIN_LIMIT = 0
MAX_LIMIT = 13

HOME                    = 12
HOME_OFFSET                = 12
HOME_SEQUENCE            = 1

HOME_SEARCH_VEL = .125
HOME_LATCH_VEL = .125
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS        = NO


[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
# is this applicable for ethercat????
STEPGEN_MAXVEL = 1.25
STEPGEN_MAXACCEL = 1.25
STEP_SCALE = 1
FERROR = 200
MIN_FERROR = 20
MIN_LIMIT = 3.4
MAX_LIMIT = 8.1
HOME                    = 7
HOME_OFFSET                = 7
HOME_SEQUENCE            = 2

HOME_SEARCH_VEL = .125
HOME_LATCH_VEL = .125
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS    = NO



[AXIS_Z]
MIN_LIMIT = 3.5
MAX_LIMIT = 8
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
BACKLASH = 0.0000

<masters>
  <master idx="0" appTimePeriod="1000000" refClockSyncCycles="5">
     
    
  <slave idx="0" type="generic" vid="00000A88" pid="0a880013" configPdos="true">
   <!-- Joint 0 -->
   
  <sdoConfig idx="2009" subIdx="1"><sdoDataRaw data ="00 32"/></sdoConfig> <!-- position p gain default is 1000 -->
  <sdoConfig idx="2009" subIdx="2"><sdoDataRaw data ="00 08"/></sdoConfig> <!-- velocity p gain default is 256 -->
  <sdoConfig idx="2009" subIdx="3"><sdoDataRaw data ="00 01"/></sdoConfig> <!-- position i gain default is 200 -->
   
   
   <syncManager idx="0" dir="out"> </syncManager>
   <syncManager idx="1" dir="out"> </syncManager>
   <syncManager idx="2" dir="out">
    <pdo idx="1600">
     <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
     <pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
     <pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touchprobefunction0" halType="bit"/>
    </pdo>
    <pdo idx="1601">
     <pdoEntry idx="6081" subIdx="00" bitLen="32" halPin="profile-velocity" halType="u32"/>
     <pdoEntry idx="6083" subIdx="00" bitLen="32" halPin="target-accel" halType="u32"/>
     <pdoEntry idx="6084" subIdx="00" bitLen="32" halPin="target-decel" halType="u32"/>
     <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
    </pdo>
    <pdo idx="1602">
     <pdoEntry idx="60ff" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
    </pdo>
   </syncManager>
   <syncManager idx="3" dir="in">
    <pdo idx="1a00">
     <pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="errorcode" halType="bit"/>
     <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="60b9" subIdx="00" bitLen="16" halPin="touchprobestat" halType="bit"/>
     <pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touchprobe1pos" halType="s32"/>
     <pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digitalinputs" halType="s32"/>
    </pdo>
    <pdo idx="1a01">
     <pdoEntry idx="606c" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
    </pdo>
   </syncManager>
   <dcConf assignActivate="300" sync0Cycle="1000000"/>
  </slave>
 
 
  <slave idx="1" type="generic" vid="00000A88" pid="0a880013" configPdos="true">
   <!-- Joint 1 -->
   
     
   <sdoConfig idx="2009" subIdx="1"><sdoDataRaw data ="00 32"/></sdoConfig> <!-- position p gain default is 1000 -->
  <sdoConfig idx="2009" subIdx="2"><sdoDataRaw data ="00 08"/></sdoConfig> <!-- velocity p gain default is 256 -->
  <sdoConfig idx="2009" subIdx="3"><sdoDataRaw data ="00 01"/></sdoConfig> <!-- position i gain default is 200 -->
 
   
   <syncManager idx="0" dir="out"> </syncManager>
   <syncManager idx="1" dir="out"> </syncManager>
   <syncManager idx="2" dir="out">
    <pdo idx="1600">
     <pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
     <pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
     <pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touchprobefunction0" halType="bit"/>
    </pdo>
    <pdo idx="1601">
     <pdoEntry idx="6081" subIdx="00" bitLen="32" halPin="profile-velocity" halType="u32"/>
     <pdoEntry idx="6083" subIdx="00" bitLen="32" halPin="target-accel" halType="u32"/>
     <pdoEntry idx="6084" subIdx="00" bitLen="32" halPin="target-decel" halType="u32"/>
     <pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
    </pdo>
    <pdo idx="1602">
     <pdoEntry idx="60ff" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
    </pdo>
   </syncManager>
   <syncManager idx="3" dir="in">
    <pdo idx="1a00">
     <pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="errorcode" halType="bit"/>
     <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="60b9" subIdx="00" bitLen="16" halPin="touchprobestat" halType="bit"/>
     <pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touchprobe1pos" halType="s32"/>
     <pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digitalinputs" halType="s32"/>
    </pdo>
    <pdo idx="1a01">
     <pdoEntry idx="606c" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
    </pdo>
   </syncManager>
   <dcConf assignActivate="300" sync0Cycle="1000000"/>
  </slave>
 
     <!-- Joint 2 -->
    <slave idx="2" 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="3"><sdoDataRaw data ="01"/></sdoConfig>     <!-- Input 3 - CCW Limit -->
      <sdoConfig idx="2007" subIdx="4"><sdoDataRaw data ="02"/></sdoConfig>     <!-- Input 4 - CW Limit -->
      <sdoConfig idx="2007" subIdx="5"><sdoDataRaw data ="03"/></sdoConfig>     <!-- Input 5 - Home Function -->
      <sdoConfig idx="2007" subIdx="6"><sdoDataRaw data ="05"/></sdoConfig>     <!-- Input 6 - Emergency Stop -->
      <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>

 
  • RsSalvador
  • RsSalvador
14 Sep 2025 04:14
Replied by RsSalvador on topic M66 keeps waiting

M66 keeps waiting

Category: G&M Codes

Hi, I'm having the same error in version 2.9.4 with Debian 12, M66 L3. Q10 doesn't work from the M06 subroutine, it only works from an MDI command. When I run it, the console deactivates, and when I activate the sensor, it reactivates. How can I resolve this?
  • ccc774
  • ccc774
14 Sep 2025 02:36
Replied by ccc774 on topic Can the OPI5 be Configured to Run LCNC?

Can the OPI5 be Configured to Run LCNC?

Category: Computers and Hardware

I installed Trixie with Cinnamon and 3D acceleration. I applied rt-kernel over the original 6.1.115 kernel and it wouldn't boot. I commented out overlays=panthor-gpu in armbianEnv and it booted. So the system has the capability to use 3d acceleration but something in rt-kernel is stopping it.
Displaying 4606 - 4620 out of 21884 results.
Time to create page: 0.285 seconds
Powered by Kunena Forum