Advanced Search

Search Results (Searched for: )

  • Lcvette
  • Lcvette's Avatar
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
  • Lcvette's Avatar
12 Sep 2025 13:59

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:
  (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
  • tommylight's Avatar
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.
  • 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

###########################################################
#
# 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]


[/code]
  • rbobey1989
  • rbobey1989's Avatar
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.
  • langdons
  • langdons's Avatar
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)
  • JT
  • JT's Avatar
12 Sep 2025 11:59

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
  • 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
#
 
 


 
  • unknown
  • unknown
12 Sep 2025 11:00
Replied by unknown on topic The forum is really laggy recently.

The forum is really laggy recently.

Category: Forum Questions

It's not a redirect, it's being hosted on another unverified server, linuxcnc.langdonstaab.ca . A redirect would be mean putting in forum.linuxcnc.org and then being sent to another server.

This is a case of having to contact another server, that being linuxcnc.langdonstaab.ca, which if it was redirecting to forum.linuxcnc.org, how would speed up the response of the machine at forum.linuxcnc.org ?

I'm under no illusion it's a DNS thing, but some maybe, based on tommy's comments. Tommy was also mentioning ROOT servers within the context of routing, this is incorrect. I even posted a link to the role of ROOT servers on the internet.
To summarise:
1 DNS is not the issue, I confirmed this early on via an entry for forum.linucnc.org in my /etc/hosts file. So no external DNS is required resolving the IP address for forum.linuxcnc.org on that machine. This file is used to resolve localhost to 127.0.0.1.
2 The OP is not providing any DNS service, as some may think & have stated.
3 The slow response of the forum is the machine at forum.linuxcnc.org
4 Connecting to linuxcnc.langdonstaab.ca will not speed up the response time of the server at fourm.linuxcnc.org
5 Nor will connecting linuxcnc.langdonstaab.ca speed up DNS resolution.
6 linuxcnc.langdonstaab.ca must be running a local instance of the forum, how this has been accomplished I can not say. But his lack of response to any questions regarding security and permission make me somewhat suspicious.
7 linuxcnc.langdonstaab.ca & forum.linuxcnc.org are on two different machines.
8 Even if one machine had both addresses assigned to it, which makes no sense, it would not resolve any issues with slow response times.

Just for context:
I have a server at home with one NIC that provides a wiki, ftp, file servers, web servers and a gitlab server, all of which have different ip addresses assigned to unique FQDNs on my intranet. The name resolution is handled by a BSD machine running router/dns/dhpcd services, hence I can access every machine via a name, whether it be ssh, file services or any another service that may require name resolution.
  • hellvetica
  • hellvetica
12 Sep 2025 10:52

Recompiling the motmod modules to expose pos-cmd pins

Category: Advanced Configuration

I figured it out.
I created 2 pins:
pos_cmd_override and pos_cmd_override_enable
to emc/motion/axis.c as well as add the variables in the emcmot_axis_t and axis_hal_t structs.
Created getter functions like in the axis.c and the corresponding declaration in axis.h

Then in axis_calc_motion in axis.c i added
```
if (axis_get_pos_cmd_override_enable(axis_num)) {
axis->teleop_tp.pos_cmd = axis_get_pos_cmd_override(axis_num);
axis->teleop_tp.enable = 1;
axis->teleop_tp.max_vel = axis->vel_limit;
axis->teleop_tp.max_acc = axis->acc_limit;
}

```
Now I can set the pins to the desired robot position and the trajectory planner will do the rest. I can also use useful feedback pins like in-position which i couldn't do when using external offsets.
  • scsmith1451
  • scsmith1451's Avatar
12 Sep 2025 10:50

Having issues calling ACTION.CALL_MDI() from python handler

Category: O Codes (subroutines) and NGCGUI

Ahh, no linuxcnc was not running. I was testing the handler via halcmd. Let me put it into the machine and see if it works correctly there.

Regards,
  • jrc
  • jrc
12 Sep 2025 09:59

CiA 402 progress (RTelligent and Leadshine working!)

Category: EtherCAT

Many thanks for this! I am using (or rather trying to use!) 2 units of 2CS3E-D507 dual-stepper drives for the arm and carousel platters in a dual-carousel machine, and need a little help with working out how to define the joints and address each stepper motor in the drive separately.

Looking at just one stepper drive, say for the right-hand carousel, if its index is 9, I assume I need to put in my ethercat.xml something like:
<slave idx="9" type="2CS3E-D507" name="ATC-Right" />

possibly with some modParam entries as needed.
The question is what do I need to do after than in machine.ini, machine.hal, and cia402.comp so that I can address each of the two motors (two in each drive) separately and associate each of them with its own individual joint. And once I have done than, what is the name of each of them?
Normally they end up producing a lot of pins with a "base name" which looks like "lcec.0.x.", thus lcec.0.4.cia_statusword for example.

My naive idea is to put something like this in machine.ini, assuming this carousel uses joints 6 and 7 :
#*** RIGHT CAROUSEL *******************************
#** arm **
[JOINT_6]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -10.0
MAX_LIMIT = 200.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
FERROR = 1000
MIN_FERROR = 1000
HOME_ABSOLUTE_ENCODER = 2
#** platter **
[JOINT_7]
TYPE = LINEAR (maybe "ANGULAR"?)
HOME = 0.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
FERROR = 1000
MIN_FERROR = 1000
HOME_ABSOLUTE_ENCODER = 2
#******************************************

cia402.comp presumably needs something like:
 
##########################\n
# Functions servo-thread\n
##########################\n
addf lcec.read-all servo-thread\n

addf cia402.6.read-all servo-thread\n
addf cia402.7.read-all servo-thread\n

addf motion/ PIDs / PCL / etc .\n

addf cia402.6.write-all servo-thread\n
addf cia402.7.write-all servo-thread\n

addf lcec.write-all servo-thread\n
#########################################\n
#nets .....\n

What about machine.hal? Presumably the top part needs something like :
addf cia402.6.read-all        servo-thread
addf cia402.7.read-all        servo-thread
addf cia402.6.write-all       servo-thread
addf cia402.7.write-all       servo-thread

However, what do I need to put lower down to link the joints 6 and 7, cia402's and lcec's?
My current bit for the X-axis using EL8 servo drives looks like the code below. What is the rough equivalent for a dual-stepper drive that needs to associate each of the two steppers controlled by the drive to joints 6 and 7 respectively?
#*******************
#  AXIS X  lcec.0.5 cia402.0 joint.0
#*******************

setp cia402.0.csp-mode 1
setp cia402.0.pos-scale -2000

# joint signals for motion
net x-pos-cmd     joint.0.motor-pos-cmd => cia402.0.pos-cmd
net x-pos-fb      joint.0.motor-pos-fb <= cia402.0.pos-fb
net x-enable      joint.0.amp-enable-out => cia402.0.enable
net x-amp-fault   joint.0.amp-fault-in   <= cia402.0.drv-fault

# ethercat to cia402 driver
net x-statusword      lcec.0.5.cia-statusword  => cia402.0.statusword
net x-opmode-display  lcec.0.5.opmode-display  => cia402.0.opmode-display
net x-drv-act-pos     lcec.0.5.actual-position => cia402.0.drv-actual-position

# cia402 driver to ethercat
net x-controlword         cia402.0.controlword         => lcec.0.5.cia-controlword
net x-modes-of-operation  cia402.0.opmode              => lcec.0.5.opmode
net x-drv-target-pos      cia402.0.drv-target-position => lcec.0.5.target-position

# homing
#net x-home-request joint.0.request-custom-homing => cia402.0.home
#net x-homing joint.0.is-custom-homing <= cia402.0.stat-homing
#net x-homed joint.0.custom-homing-finished <= cia402.0.stat-homed

Many thanks!
  • Hakan
  • Hakan
12 Sep 2025 09:16
Replied by Hakan on topic The forum is really laggy recently.

The forum is really laggy recently.

Category: Forum Questions

The whole point is that it should appear to be somewhere else. It's not. It's a redirect.
Forget DNS. It's not.
 
  • unknown
  • unknown
12 Sep 2025 08:48 - 12 Sep 2025 08:53
Replied by unknown on topic The forum is really laggy recently.

The forum is really laggy recently.

Category: Forum Questions

Please be aware it not a redirection, it would appear he is hosting a copy/clone of the forum at forum.linuxcnc.org.

There is no DNS running on his server, my previous post proves this by trying to get the server he is running to resolve a web address, no connection was made, the port that handles name resolution #53 gave no response. Where as in my 3 code snippet I attempted a to resolve the name of the same machine (forum.linuxcnc.org) via one of google's DNS (8.8.8.8) and everything went fine.

Tommy and others that are claiming this to be a DNS service are wrong, you are logging into a webserver, that is replicationg the one that hosts forum.linuxcnc.org, run by someone who refuses to answer any questions about security (see my post on the very first page on this thread), which surely should rasie questions.
Please think of you internet security in this matter. If something goes wrong who will take responsibility.

Quoting the OP

Who cares?

It works.

It's better than foum.limnuxcnc.org.

Who cares how it works, or why it's faster, it just is.

This statement does not fill me with confidence. If it was on the level the OP would be transparent. Do you really think he doesn't know what is going on ?
Please fellow members think, think really hard, read the whole thread, take note of how he refuses to ask any direct questions. The misspelling is direct from his post.
  • Hakan
  • Hakan
12 Sep 2025 08:34

Step By Step Help Needed . EL8 Leadshine to PI 5

Category: EtherCAT

I used a servo motor and that type of servo drive for the spindle motor of my lathe.
It is not ideal. The thing is that linuxcnc just sets a spindle speed and the servo motor
does a really quick acceleration to get to that speed. There is no ramping up/ramping down
like an axis motion.  Someone of course solved that, just didn't know about it forum.linuxcnc.org/10-advanced-configura...op-on-m-stop-command

Controlled by analog +- 10V, Beckhoff has many EtherCAT modules for that, EL4xxx series.
Mesa and EtherCAT works well together on different network adapters. Not USB network adapter, USB isn't real-time.
There are many N150 with multiple adapters, and the Odroid H4 plus isn't a bad choice either. If you can choose, choose an Intel network adapter.

EL4xx or Mesa + other computer or EtherCAT servo drive.

Your motor is a very common motor so any EtherCAT servo drive of the right size should in principle work. Ask seller though.
You do want a drive with the PV mode (Profile Velocity). That way the drive will be able to ramp up and down
the rotational speed in a controlled way.
 
Displaying 1801 - 1815 out of 22570 results.
Time to create page: 0.352 seconds
Powered by Kunena Forum