Search Results (Searched for: )
- scsmith1451
12 Sep 2025 19:21
Save Post Reference to User List was created by scsmith1451
Save Post Reference to User List
Category: Forum Questions
I have found that I often stumble across interesting topics while searching for info on the forum site that I would like to go back to at a future date. It would be awesome if posts could be tagged and saved to a user's account list for easy retrieval in the future. The list should be editable to remove old links that are no longer needed.
Kind Regard,
Kind Regard,
- Unlogic
- Unlogic
12 Sep 2025 19:04 - 12 Sep 2025 19:11
Replied by Unlogic on topic Probing routines changing mode from G90 to G91
Probing routines changing mode from G90 to G91
Category: QtPyVCP
Big thanks Chris, that was a really quick fix from you!
Fixing the bug in the normal uses cases is what's most important as probing errors are not that common once you get used to the various probing functions.
The abort handling seems tricky to solve indeed. I went through the documentation in search for a solution. I was looking for a hook to detect when a program has been halted but I came up with nothing.
Maybe some of the more experienced LinuxCNC gurus here on the forum has some input on how this could be solved.
Fixing the bug in the normal uses cases is what's most important as probing errors are not that common once you get used to the various probing functions.
The abort handling seems tricky to solve indeed. I went through the documentation in search for a solution. I was looking for a hook to detect when a program has been halted but I came up with nothing.
Maybe some of the more experienced LinuxCNC gurus here on the forum has some input on how this could be solved.
- grijalvap
12 Sep 2025 18:59
Replied by grijalvap on topic Re:ini. changes while EMC2 running?
Re:ini. changes while EMC2 running?
Category: General LinuxCNC Questions
Any update?
- ccc774
- ccc774
12 Sep 2025 17:30 - 14 Sep 2025 09:28
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
thanks Royka for the kernel.
I rebuilt the system today with Armbian Trixie and rt-kernel 6.1.115. I couldn't get the 3D accelerator to work. I think something was not set when the kernel was created.
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 19.1.7, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 25.0.7-2
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.5 (Compatibility Profile) Mesa 25.0.7-2
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 25.0.7-2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
Linuxcnc 2.10 won't start.
~$ linuxcnc
LINUXCNC - 2.10.0~pre0
Machine configuration file is 'gmoccapy.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX realtime
Found file(REL): ./core_sim.hal
rtapi_task_start(): Operation not permitted
HAL_LIB: could not start task for thread base-thread: -1
MOTION: failed to create 100000 nsec base thread
MOTION: init_threads() failed
motmod: rtapi_app_main: Operation not permitted (-1)
./core_sim.hal:7: waitpid failed /usr/bin/rtapi_app motmod
./core_sim.hal:7: /usr/bin/rtapi_app exited without becoming ready
./core_sim.hal:7: insmod for motmod failed, returned -1
Shutting down and cleaning up LinuxCNC...
USRMOT: ERROR: command 30 timeout (seq: 1)
emcMotionInit: emcTrajInit failed
USRMOT: ERROR: command 3 timeout (seq: 2)
Note: Using POSIX realtime
LinuxCNC terminated with an error.
What do you think?
I rebuilt the system today with Armbian Trixie and rt-kernel 6.1.115. I couldn't get the 3D accelerator to work. I think something was not set when the kernel was created.
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 19.1.7, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 25.0.7-2
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.5 (Compatibility Profile) Mesa 25.0.7-2
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 25.0.7-2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
Linuxcnc 2.10 won't start.
~$ linuxcnc
LINUXCNC - 2.10.0~pre0
Machine configuration file is 'gmoccapy.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX realtime
Found file(REL): ./core_sim.hal
rtapi_task_start(): Operation not permitted
HAL_LIB: could not start task for thread base-thread: -1
MOTION: failed to create 100000 nsec base thread
MOTION: init_threads() failed
motmod: rtapi_app_main: Operation not permitted (-1)
./core_sim.hal:7: waitpid failed /usr/bin/rtapi_app motmod
./core_sim.hal:7: /usr/bin/rtapi_app exited without becoming ready
./core_sim.hal:7: insmod for motmod failed, returned -1
Shutting down and cleaning up LinuxCNC...
USRMOT: ERROR: command 30 timeout (seq: 1)
emcMotionInit: emcTrajInit failed
USRMOT: ERROR: command 3 timeout (seq: 2)
Note: Using POSIX realtime
LinuxCNC terminated with an error.
What do you think?
- scsmith1451
12 Sep 2025 16:21
AXIS Jog Rate display not updating after calling set_jograte() functions was created by scsmith1451
AXIS Jog Rate display not updating after calling set_jograte() functions
Category: GladeVCP
In my gladevcp panel I have configured two buttons to set the jog rate. One to set to the lowest value that I use for positioning my crosshair laser, the other to set to the max value that I use. I have tried both ACTION.SET_JOG_RATE(rate) and GSTAT.set_jog_rate(rate), but neither affect the jog rate display in AXIS. The documentation for GSTAT.set_jog_rate(rate) mentions that after setting the jog rate, the jograte-changed signal is emitted which I would expect to update the AXIS display but there is no feedback indicating that the rate has changed. Is this a known issue or am I doing something wrong?
FYI - I also have a combo box to select the current system offset system which does change the AXIS display after a new offset is selected, so I would expect these two functions to work the same.
Kind Regards,
FYI - I also have a combo box to select the current system offset system which does change the AXIS display after a new offset is selected, so I would expect these two functions to work the same.
Kind Regards,
- Aciera
12 Sep 2025 15:30
Replied by Aciera on topic Recompiling the motmod modules to expose pos-cmd pins
Recompiling the motmod modules to expose pos-cmd pins
Category: Advanced Configuration
glad you got it working. If you feel like sharing you could go to your cloned folder and post the output of:
Might help somebody in the future.
git diff --minimal HEAD
Might help somebody in the future.
- hitchhiker
- hitchhiker
12 Sep 2025 15:25
Replied by hitchhiker on topic ECMO VMC100 Retrofit with Carousel/Toolchanger
ECMO VMC100 Retrofit with Carousel/Toolchanger
Category: Milling Machines
Hi! And.. success!!!!!!
I found some issues in my ngc!
Later i make a video and upload! Then i show how to get a working toolchanger with the carousel.comp!
I made 3 failures...
Debounce-Modul wrong CAP!
Timing placing in the ngc
Order of handle stuff in the ngc
I collect later everything and show it.
Thanks to andypugh to show the right way.
Its not so fast like original Emco but its everytime done a correct Toolchange!
I found some issues in my ngc!
Later i make a video and upload! Then i show how to get a working toolchanger with the carousel.comp!
I made 3 failures...
Debounce-Modul wrong CAP!
Timing placing in the ngc
Order of handle stuff in the ngc
I collect later everything and show it.
Thanks to andypugh to show the right way.
Its not so fast like original Emco but its everytime done a correct Toolchange!
- Lcvette
12 Sep 2025 14:06
Replied by Lcvette on topic Carousel don t stop when estop is pushed
Carousel don t stop when estop is pushed
Category: QtPyVCP
As PCW mentioned those I/O should have some conditional motion safeties in hal, also anything critical that needs to stop immediately should also be wired to a power disconnect contactor to ensure absolute motion halting in the event of a estop. for mine my mushroom button halts both linuxcnc and all drives and motors. for the screen estop its just halting in software. this way i only press the danger mushroom if it is imperative everything must cease STAT!
- Lcvette
12 Sep 2025 13:59
Replied by Lcvette on topic Probing routines changing mode from G90 to G91
Probing routines changing mode from G90 to G91
Category: QtPyVCP
You are right, i never ran into it because i almost always am running in auto mode but i found a handful of subroutines that fail to revert to G90 at the end of completion. i have corrected them and they will be up on on the next push for the development branch. for the stable branch you will need to manually copy over the edited files or make the same adjustments in your local subroutines if you have edited them. the list of affected subroutines are below:
probe_cal_round_pocket
probe_cal_square_pocket
probe_round_pocket
probe_valley_x
probe_valley_y
if you want to manually add in the return to G90 immediately you would add it after the end of the last move that is NOT in a confitional "if" statement o110 for example:
Regarding when a routine fails to complete from an motion internal abort scenario, that is an unfortunate situation where the G91 was active at the time of the routine abort failure typically in a G38.x move. I am not sure the best way to do anything about that so I am open to ideas, this abort comes from linuxcnc so i don't think i can add additional code to follow in the subroutine that would be executed. i could be wrong, but i'm simply unsure how i would do it, so if you know post up please and we can incorporate that safety!
Thanks,
Chris
probe_cal_round_pocket
probe_cal_square_pocket
probe_round_pocket
probe_valley_x
probe_valley_y
if you want to manually add in the return to G90 immediately you would add it after the end of the last move that is NOT in a confitional "if" statement o110 for example:
(Probe Completion Move to Z Clearance Plane, and X Zero)
G90
F[#<probe_traverse_fr>]
G38.3 Y[#<y_center_probed>]
G91
F[#<probe_traverse_fr>]
G38.3 Z[#<z_probe_stack>]
G90 <--------------------------------------------------- Add G90 here!
(probe mode rules for WCO or probe position measuring only)
o110 if [#<probe_mode> EQ 0]
(Record X Zero in selected WCO)
G10 L2 P#5220 Y[#<y_center_probed> + #<workspace_y>]
o110 endif
(Reinstate Feedrate Override)
M50 P1
o<probe_valley_y> endsub
M2 (end program)
Regarding when a routine fails to complete from an motion internal abort scenario, that is an unfortunate situation where the G91 was active at the time of the routine abort failure typically in a G38.x move. I am not sure the best way to do anything about that so I am open to ideas, this abort comes from linuxcnc so i don't think i can add additional code to follow in the subroutine that would be executed. i could be wrong, but i'm simply unsure how i would do it, so if you know post up please and we can incorporate that safety!
Thanks,
Chris
- tommylight
12 Sep 2025 13:44
Replied by tommylight on topic EL7342 Current Capacity
EL7342 Current Capacity
Category: EtherCAT
Normally you can safely use a higher rated motor on a lower rated drive, it just wont have the full torque/speed.
Except some really cheap China drives, all drives have current limiting, so they will output whatever that maximum is, and usually that can be set with DIP switches or software.
The problem arises when drive can provide more current than the motor attached can withstand, so limiting current is a must.
And just in case:
Voltage = speed = RPM
Current = torque
-you can drive a higher current rated motor with a lower current rated drive, it will limit torque
-you can NOT drive a lower current rated motor with a higher current rated drive without LIMITING current
-you can drive a higher voltage rated motor with a lower voltage rated drive, it will limit speed and sometimes torque
-you can NOT drive a lower voltage rated motor with a higher voltage rated drive without LIMITING output voltage and current, and even then some motors will overheat due to the PWM nature of the drive and spikes in output current/voltage.
Except some really cheap China drives, all drives have current limiting, so they will output whatever that maximum is, and usually that can be set with DIP switches or software.
The problem arises when drive can provide more current than the motor attached can withstand, so limiting current is a must.
And just in case:
Voltage = speed = RPM
Current = torque
-you can drive a higher current rated motor with a lower current rated drive, it will limit torque
-you can NOT drive a lower current rated motor with a higher current rated drive without LIMITING current
-you can drive a higher voltage rated motor with a lower voltage rated drive, it will limit speed and sometimes torque
-you can NOT drive a lower voltage rated motor with a higher voltage rated drive without LIMITING output voltage and current, and even then some motors will overheat due to the PWM nature of the drive and spikes in output current/voltage.
- farmer_mike
- farmer_mike
12 Sep 2025 13:35 - 13 Sep 2025 01:36
Replied by farmer_mike on topic Getting (hopefully) close to an Rtelligent build
Getting (hopefully) close to an Rtelligent build
Category: EtherCAT
I have made some big progress lately. I have the limit switches and homing switches working. I also have the E stop working.
My issue is the RS750E AC servos shake quite a bit. Without the drive belts installed, the servos will sit and shake after completing a move. With the drive belts on, the system moves in the correct direction, but does so in a shaky manner.
My hypothesis is too much integral gain. I believe the problem is because I started with the stepper motor examples. Maybe there are some PID gains inside the drive that I need to configure.
I think what I need are the drive gains set with the SDO parameters inside the XML file.
Thanks for all the help
[/code]
[/code]
[/code]
My issue is the RS750E AC servos shake quite a bit. Without the drive belts installed, the servos will sit and shake after completing a move. With the drive belts on, the system moves in the correct direction, but does so in a shaky manner.
My hypothesis is too much integral gain. I believe the problem is because I started with the stepper motor examples. Maybe there are some PID gains inside the drive that I need to configure.
I think what I need are the drive gains set with the SDO parameters inside the XML file.
Thanks for all the help
###########################################################
#
# 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
[code]# 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
DEADBAND = 0.01
P=1
I=0
D=0
# 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
DEADBAND = 0.01
P=1
I=0
D=0
# 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
[/code]
[code][code]<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1">
<slave idx="0" type="generic" vid="00000A88" pid="0a880013" configPdos="true">
<!-- Joint 0 -->
<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 -->
<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>
[/code]
- rbobey1989
12 Sep 2025 13:13
EL7342 Current Capacity was created by rbobey1989
EL7342 Current Capacity
Category: EtherCAT
Hello everyone here, I'm performing tests with DC motors and would like to use the Beckhoff EL7342 module. I've seen in the module's data sheet that it can supply up to 3.5A. Although it's not very specific, I imagine this current refers to average current, meaning it can withstand transient current spikes. For example, motors always consume a little more current at startup. Furthermore, the load I want to move is static and doesn't change over time; it's always the same.
After all this preamble, I'll share the specifics of my problem. I need to drive a 48V, 4A, 180W DC motor. I'd like to use the EL7342 module, which delivers up to 3.5A on its own. According to the datasheet, a ZB8610 can be added to increase the output current to 6.5A. I've run some tests on the motor with a true RMS multimeter, which has indicated between 7 and 4 amp.
Well, guys, as always, I appreciate any ideas or experiences you may have. Best regards.
After all this preamble, I'll share the specifics of my problem. I need to drive a 48V, 4A, 180W DC motor. I'd like to use the EL7342 module, which delivers up to 3.5A on its own. According to the datasheet, a ZB8610 can be added to increase the output current to 6.5A. I've run some tests on the motor with a true RMS multimeter, which has indicated between 7 and 4 amp.
Well, guys, as always, I appreciate any ideas or experiences you may have. Best regards.
- langdons
12 Sep 2025 12:43
Replied by langdons on topic The forum is really laggy recently.
The forum is really laggy recently.
Category: Forum Questions
I use Cloudflare DNS.
Cloudflare replaces the IP with a Cloudflare IP.
As stated previously, all I did was paste the IP of forum.linuxcnc.org, retreived from bgp.he.net, into an A record in my Cloudflare DNS page.
Traffic running through linuxcnc.langdonstaab.ca is proxied by Cloudflare, replacing the IP of forum.linuxcnc.org with a Cloudflare IP.
I am not some hacker cloning the website for nefarious purposes. (a la rufuus.digital)
Cloudflare replaces the IP with a Cloudflare IP.
As stated previously, all I did was paste the IP of forum.linuxcnc.org, retreived from bgp.he.net, into an A record in my Cloudflare DNS page.
Traffic running through linuxcnc.langdonstaab.ca is proxied by Cloudflare, replacing the IP of forum.linuxcnc.org with a Cloudflare IP.
I am not some hacker cloning the website for nefarious purposes. (a la rufuus.digital)
- JT
12 Sep 2025 11:59
Replied by JT on topic FlexGui touch - FSC-like myOwn tab from ext UI file
FlexGui touch - FSC-like myOwn tab from ext UI file
Category: Other User Interfaces
The simple way is to just create your tab in the ui and add your widgets then using the Python module connect all of your widgets to your Python code.
gnipsel.com/linuxcnc/flexgui/python.html
github.com/jethornton/flexgui/blob/maste...gui/startup.py#L2381
github.com/jethornton/flexgui/blob/maste...rc/libflexgui/tpc.py
JT
gnipsel.com/linuxcnc/flexgui/python.html
github.com/jethornton/flexgui/blob/maste...gui/startup.py#L2381
github.com/jethornton/flexgui/blob/maste...rc/libflexgui/tpc.py
JT
- juergen-home
- juergen-home
12 Sep 2025 11:25 - 12 Sep 2025 11:28
A basic .hal file for a simple gamepad was created by juergen-home
A basic .hal file for a simple gamepad
Category: HAL Examples
This is a basic .hal file for a simple gamepad.
I use this for manual milling on the diy cnc.
For my safety I removed the joysticks and only use the buttons pressed by a 3d printed plug.
#
# jog with 1,2,3,4,11,12
# select jog speed with 9,10
# select increment with 5,6,7,8
# start program with 16
# pause program with 14
# mist-coolant with 15
# e-stop with 13
#
I use this for manual milling on the diy cnc.
For my safety I removed the joysticks and only use the buttons pressed by a 3d printed plug.
#
# jog with 1,2,3,4,11,12
# select jog speed with 9,10
# select increment with 5,6,7,8
# start program with 16
# pause program with 14
# mist-coolant with 15
# e-stop with 13
#
Time to create page: 1.127 seconds