Search Results (Searched for: stepper spindle)
- DeckelCNC
- DeckelCNC
30 Nov 2024 21:42
Replied by DeckelCNC on topic Leadshine EL8 Servo Drives - EtherCAT
Leadshine EL8 Servo Drives - EtherCAT
Category: Advanced Configuration
Thank you for the reply's
Kworm : i think i have the pdo's right in the drive Vs the terminal output Vs the .xml ? please let me know if i am not understanding correctly. Thank you for your time.
Aciera (sorry i thought it was better to upload files that made no errors, but not actually working)
i have been reading and come across a post about a Youtuber called Marco Reps ? i thought it would be a idea to apply some of the methods i found in these files. so i have changed things from my first post, and i am now getting errors again / LinuxCNC is not opening. this looks to be the main issue ? EL8_machine.hal:41: Pin 'lcec.0.0.cia-statusword' does not exist
i have included the Error report + the .xml + .hal + .ini
.XML File
.HAL
.ini
Kworm : i think i have the pdo's right in the drive Vs the terminal output Vs the .xml ? please let me know if i am not understanding correctly. Thank you for your time.
Warning: Spoiler!
$ ethercat pdos
=== Master 0, Slave 1 ===
SM0: PhysAddr 0x1000, DefaultSize 0, ControlRegister 0x00, Enable 0
TxPDO 0x1a00 "Channel 1"
PDO entry 0x6000:01, 1 bit, "Input"
TxPDO 0x1a01 "Channel 2"
PDO entry 0x6010:01, 1 bit, "Input"
TxPDO 0x1a02 "Channel 3"
PDO entry 0x6020:01, 1 bit, "Input"
TxPDO 0x1a03 "Channel 4"
PDO entry 0x6030:01, 1 bit, "Input"
TxPDO 0x1a04 "Channel 5"
PDO entry 0x6040:01, 1 bit, "Input"
TxPDO 0x1a05 "Channel 6"
PDO entry 0x6050:01, 1 bit, "Input"
TxPDO 0x1a06 "Channel 7"
PDO entry 0x6060:01, 1 bit, "Input"
TxPDO 0x1a07 "Channel 8"
PDO entry 0x6070:01, 1 bit, "Input"
=== Master 0, Slave 2 ===
SM0: PhysAddr 0x1000, DefaultSize 0, ControlRegister 0x00, Enable 0
TxPDO 0x1a00 "Channel 1"
PDO entry 0x6000:01, 1 bit, "Input"
TxPDO 0x1a01 "Channel 2"
PDO entry 0x6010:01, 1 bit, "Input"
TxPDO 0x1a02 "Channel 3"
PDO entry 0x6020:01, 1 bit, "Input"
TxPDO 0x1a03 "Channel 4"
PDO entry 0x6030:01, 1 bit, "Input"
TxPDO 0x1a04 "Channel 5"
PDO entry 0x6040:01, 1 bit, "Input"
TxPDO 0x1a05 "Channel 6"
PDO entry 0x6050:01, 1 bit, "Input"
TxPDO 0x1a06 "Channel 7"
PDO entry 0x6060:01, 1 bit, "Input"
TxPDO 0x1a07 "Channel 8"
PDO entry 0x6070:01, 1 bit, "Input"
=== Master 0, Slave 3 ===
SM0: PhysAddr 0x0f00, DefaultSize 0, ControlRegister 0x44, Enable 9
RxPDO 0x1600 "Channel 1"
PDO entry 0x7000:01, 1 bit, "Output"
RxPDO 0x1601 "Channel 2"
PDO entry 0x7010:01, 1 bit, "Output"
RxPDO 0x1602 "Channel 3"
PDO entry 0x7020:01, 1 bit, "Output"
RxPDO 0x1603 "Channel 4"
PDO entry 0x7030:01, 1 bit, "Output"
=== Master 0, Slave 4 ===
SM0: PhysAddr 0x1000, DefaultSize 124, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1100, DefaultSize 124, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1200, DefaultSize 0, ControlRegister 0x64, Enable 1
RxPDO 0x1600 ""
PDO entry 0x6040:00, 16 bit, ""
PDO entry 0x6060:00, 8 bit, ""
PDO entry 0x607a:00, 32 bit, ""
PDO entry 0x60ff:00, 32 bit, ""
SM3: PhysAddr 0x1400, DefaultSize 0, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 ""
PDO entry 0x6041:00, 16 bit, ""
PDO entry 0x6061:00, 8 bit, ""
PDO entry 0x6064:00, 32 bit, ""
PDO entry 0x606c:00, 32 bit, ""
PDO entry 0x6077:00, 16 bit, ""
=== Master 0, Slave 1 ===
SM0: PhysAddr 0x1000, DefaultSize 0, ControlRegister 0x00, Enable 0
TxPDO 0x1a00 "Channel 1"
PDO entry 0x6000:01, 1 bit, "Input"
TxPDO 0x1a01 "Channel 2"
PDO entry 0x6010:01, 1 bit, "Input"
TxPDO 0x1a02 "Channel 3"
PDO entry 0x6020:01, 1 bit, "Input"
TxPDO 0x1a03 "Channel 4"
PDO entry 0x6030:01, 1 bit, "Input"
TxPDO 0x1a04 "Channel 5"
PDO entry 0x6040:01, 1 bit, "Input"
TxPDO 0x1a05 "Channel 6"
PDO entry 0x6050:01, 1 bit, "Input"
TxPDO 0x1a06 "Channel 7"
PDO entry 0x6060:01, 1 bit, "Input"
TxPDO 0x1a07 "Channel 8"
PDO entry 0x6070:01, 1 bit, "Input"
=== Master 0, Slave 2 ===
SM0: PhysAddr 0x1000, DefaultSize 0, ControlRegister 0x00, Enable 0
TxPDO 0x1a00 "Channel 1"
PDO entry 0x6000:01, 1 bit, "Input"
TxPDO 0x1a01 "Channel 2"
PDO entry 0x6010:01, 1 bit, "Input"
TxPDO 0x1a02 "Channel 3"
PDO entry 0x6020:01, 1 bit, "Input"
TxPDO 0x1a03 "Channel 4"
PDO entry 0x6030:01, 1 bit, "Input"
TxPDO 0x1a04 "Channel 5"
PDO entry 0x6040:01, 1 bit, "Input"
TxPDO 0x1a05 "Channel 6"
PDO entry 0x6050:01, 1 bit, "Input"
TxPDO 0x1a06 "Channel 7"
PDO entry 0x6060:01, 1 bit, "Input"
TxPDO 0x1a07 "Channel 8"
PDO entry 0x6070:01, 1 bit, "Input"
=== Master 0, Slave 3 ===
SM0: PhysAddr 0x0f00, DefaultSize 0, ControlRegister 0x44, Enable 9
RxPDO 0x1600 "Channel 1"
PDO entry 0x7000:01, 1 bit, "Output"
RxPDO 0x1601 "Channel 2"
PDO entry 0x7010:01, 1 bit, "Output"
RxPDO 0x1602 "Channel 3"
PDO entry 0x7020:01, 1 bit, "Output"
RxPDO 0x1603 "Channel 4"
PDO entry 0x7030:01, 1 bit, "Output"
=== Master 0, Slave 4 ===
SM0: PhysAddr 0x1000, DefaultSize 124, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1100, DefaultSize 124, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1200, DefaultSize 0, ControlRegister 0x64, Enable 1
RxPDO 0x1600 ""
PDO entry 0x6040:00, 16 bit, ""
PDO entry 0x6060:00, 8 bit, ""
PDO entry 0x607a:00, 32 bit, ""
PDO entry 0x60ff:00, 32 bit, ""
SM3: PhysAddr 0x1400, DefaultSize 0, ControlRegister 0x20, Enable 1
TxPDO 0x1a00 ""
PDO entry 0x6041:00, 16 bit, ""
PDO entry 0x6061:00, 8 bit, ""
PDO entry 0x6064:00, 32 bit, ""
PDO entry 0x606c:00, 32 bit, ""
PDO entry 0x6077:00, 16 bit, ""
Aciera (sorry i thought it was better to upload files that made no errors, but not actually working)
i have been reading and come across a post about a Youtuber called Marco Reps ? i thought it would be a idea to apply some of the methods i found in these files. so i have changed things from my first post, and i am now getting errors again / LinuxCNC is not opening. this looks to be the main issue ? EL8_machine.hal:41: Pin 'lcec.0.0.cia-statusword' does not exist
i have included the Error report + the .xml + .hal + .ini
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/lib/linuxcnc/modules
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/lib/tcltk/linuxcnc/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.6
LINUXCNC - 2.9.3
Machine configuration directory is '/home/edmuser/linuxcnc/configs/sim.axis-3'
Machine configuration file is 'EL8_machine.ini'
INIFILE=/home/edmuser/linuxcnc/configs/sim.axis-3/EL8_machine.ini
VERSION=1.1
PARAMETER_FILE=linuxcnc.var
TPMOD=
HOMEMOD=
TASK=milltask
HALUI=halui
DISPLAY=axis
COORDINATES=X Y Z
KINEMATICS=trivkins coordinates=XYZ
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
libnml/buffer/shmem.cc 320: Shared memory buffers toolCmd and toolCmd may conflict. (key=1004(0x3EC))
libnml/buffer/shmem.cc 320: Shared memory buffers toolSts and toolSts may conflict. (key=1005(0x3ED))
libnml/buffer/shmem.cc 320: Shared memory buffers emcError and emcError may conflict. (key=1003(0x3EB))
emc/iotask/ioControl.cc 786: can't load tool table.
Starting HAL User Interface program: halui
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Found file(REL): ./EL8_machine.hal
Shutting down and cleaning up LinuxCNC...
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Debug file information:
Note: Using POSIX realtime
./EL8_machine.hal:41: Pin 'lcec.0.0.cia-statusword' does not exist
55850
Stopping realtime threads
Unloading hal components
Note: Using POSIX realtime.XML File
Warning: Spoiler!
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="5">
<slave idx="0" type="EK1100"/>
<slave idx="1" type="EL1008"/>
<slave idx="2" type="EL1008"/>
<slave idx="3" type="EL2004"/>
<!-- X axis EL8 Servo Drive -->
<slave idx="4" type="generic" vid="00004321" pid="000010c2" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<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"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32" />
</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="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="5">
<slave idx="0" type="EK1100"/>
<slave idx="1" type="EL1008"/>
<slave idx="2" type="EL1008"/>
<slave idx="3" type="EL2004"/>
<!-- X axis EL8 Servo Drive -->
<slave idx="4" type="generic" vid="00004321" pid="000010c2" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<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"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32" />
</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="16" halPin="actual-torque" halType="s32"/>
</pdo>
</syncManager>
</slave>
</master>
</masters>
.HAL
Warning: Spoiler!
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf /home/edmuser/linuxcnc/configs/sim.axis-3/ethercat-conf.xml
loadrt lcec
loadrt cia402 count=1
loadrt mult2
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf lcec.write-all servo-thread
setp iocontrol.0.emc-enable-in 1
#*******************
# AXIS X
#*******************
# --- joint signals for motion
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-pos-fb <= joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net all-home => joint.0.home-sw-in
# --- connect stepper driver to joint
net x-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => cia402.0.pos-fb
net x-enable => cia402.0.enable
# --- Drive settings
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 10000
# --- from Drive(ethercat) to cia402
net x-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
# --- from cia402 to Drive(ethercat)
net x-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf /home/edmuser/linuxcnc/configs/sim.axis-3/ethercat-conf.xml
loadrt lcec
loadrt cia402 count=1
loadrt mult2
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf lcec.write-all servo-thread
setp iocontrol.0.emc-enable-in 1
#*******************
# AXIS X
#*******************
# --- joint signals for motion
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-pos-fb <= joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net all-home => joint.0.home-sw-in
# --- connect stepper driver to joint
net x-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => cia402.0.pos-fb
net x-enable => cia402.0.enable
# --- Drive settings
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 10000
# --- from Drive(ethercat) to cia402
net x-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
# --- from cia402 to Drive(ethercat)
net x-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
.ini
Warning: Spoiler!
[EMC]
MACHINE = EL8_machines
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 1.2
DEFAULT_LINEAR_VELOCITY = 2.50
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 25.00
CYCLE_TIME = 0.100
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
PYVCP = pyvcp_panel.xml
[KINS]
JOINTS = 1
KINEMATICS = trivkins coordinates=XYZ
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .nc,.tap G-Code File
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
#HOMEMOD=el8_homecomp
[HAL]
HALFILE = EL8_machine.hal
#HALFILE = xhc-whb04b.hal
POSTGUI_HALFILE = pyvcp_panel.hal
HALUI = halui
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
#*** AXIS_X *******************************
[AXIS_X]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -200.0
MAX_LIMIT = 200.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -200.0
MAX_LIMIT = 200.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
SCALE = 80.0
FERROR = 1000
MIN_FERROR = 1000
HOME_ABSOLUTE_ENCODER = 2
#HOME = 0
HOME_OFFSET = 0
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
HOME_IS_SHARED = 1
#******************************************
MACHINE = EL8_machines
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 1.2
DEFAULT_LINEAR_VELOCITY = 2.50
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 25.00
CYCLE_TIME = 0.100
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
PYVCP = pyvcp_panel.xml
[KINS]
JOINTS = 1
KINEMATICS = trivkins coordinates=XYZ
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .nc,.tap G-Code File
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
#HOMEMOD=el8_homecomp
[HAL]
HALFILE = EL8_machine.hal
#HALFILE = xhc-whb04b.hal
POSTGUI_HALFILE = pyvcp_panel.hal
HALUI = halui
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
#*** AXIS_X *******************************
[AXIS_X]
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -200.0
MAX_LIMIT = 200.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -200.0
MAX_LIMIT = 200.0
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
SCALE = 80.0
FERROR = 1000
MIN_FERROR = 1000
HOME_ABSOLUTE_ENCODER = 2
#HOME = 0
HOME_OFFSET = 0
HOME_SEARCH_VEL = 20.000000
HOME_LATCH_VEL = 10.000
HOME_SEQUENCE = 1
HOME_USE_INDEX = False
HOME_IGNORE_LIMITS = False
HOME_IS_SHARED = 1
#******************************************
- timo
- timo
30 Nov 2024 05:27
Tip on how to plan a machine was created by timo
Tip on how to plan a machine
Category: General LinuxCNC Questions
Hello,
i was quite fed up with undocumented components on my 2nd hand machine.
That is why I ripped it apart and decided to re-do the complete electric syste.
Now I was thinking it is a good idea to make some sort of wiring diagram, before starting the actual work.
This is to help adding more functions in the future, helps with repair. ( I want to avoid to have to reverse engineer my own installation )
From another thread I learned that this kind of plan might become also helpful to create a structured .hal and .ini file
Just to give an idea what I am up to.
A simple x-y-z mill, optional rotary axis a or c, (maybe rigid tapping, given the low torque spindle probably useless), MPG
Components that I have so far:
Greetings Timo
i was quite fed up with undocumented components on my 2nd hand machine.
That is why I ripped it apart and decided to re-do the complete electric syste.
Now I was thinking it is a good idea to make some sort of wiring diagram, before starting the actual work.
This is to help adding more functions in the future, helps with repair. ( I want to avoid to have to reverse engineer my own installation )
From another thread I learned that this kind of plan might become also helpful to create a structured .hal and .ini file
Just to give an idea what I am up to.
A simple x-y-z mill, optional rotary axis a or c, (maybe rigid tapping, given the low torque spindle probably useless), MPG
Components that I have so far:
- PC
- Mesa Card
- 3 open loop stepper drivers
- 3 stepper motors from old system
- 1 closed loop stepper with integrated driver (for rotary axis)
- Power supply 80V DC
- MPG (wires single switches, "no brain")
- BLDC spindle with driver (from old system) 0-10V speed control (can be pluged to MESA card)
- x-y-z proximity switches
- Temp switch for spindle overheat
- (optional) coolant pump
- (optional) spindle encoder
Greetings Timo
- natholego11

22 Nov 2024 20:29
N/O Probe issue was created by natholego11
N/O Probe issue
Category: HAL
Im not sure what happened as of late. but I recently have been getting an error with my probe when probing. I keep getting the error "probe is already tripped when starting G38.2 or G38.3 move" blah blah blah.
with the probe plugged in the HALmeter is showing that its "TRUE" and when I actuate the probe it goes to "FALSE"
and here is a link to the probe I have.
here is my HAL code.
with the probe plugged in the HALmeter is showing that its "TRUE" and when I actuate the probe it goes to "FALSE"
and here is a link to the probe I have.
here is my HAL code.
# Generated by PNCconf at Tue Jan 18 09:12:59 2022
# Using LinuxCNC version: 2.8
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS #num_dio=30 num_aio=30
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=1 num_stepgens=5 sserial_port_0=00xxxx"
setp hm2_7i96.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.a,pid.s
loadrt abs names=abs.0,abs.spindle
loadrt lowpass names=lowpass.spindle
loadrt scale names=scale.spindle
loadrt near
loadrt or2 names=tool_probe, names=E_stop_comb
loadrt mux16 names=jogincr
addf hm2_7i96.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.a.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf scale.spindle servo-thread
addf abs.spindle servo-thread
addf lowpass.spindle servo-thread
addf near.0 servo-thread
addf hm2_7i96.0.write servo-thread
addf abs.0 servo-thread
addf tool_probe servo-thread
addf E_stop_comb servo-thread
addf jogincr servo-thread
# external output signals
# --- COOLANT-MIST ---
net coolant-mist => hm2_7i96.0.ssr.00.out-01
# --- Probe Blast---
#net probe-blast => hm2_7i96.0.ssr.00.out-02
# external input signals
# --- MACHINE-ON ---
net external-machine-on <= hm2_7i96.0.gpio.003.in_not
# --- ESTOP-EXT ---
net estop-ext <= hm2_7i96.0.gpio.000.in #=> E_stop_comb.in0
# --- PROBE-IN ---
#net probe-in <= hm2_7i96.0.gpio.001.in
net toolsetter-in <= hm2_7i96.0.gpio.001.in => tool_probe.in0
net probe-in <= hm2_7i96.0.gpio.002.in_not => tool_probe.in1
# --- ESTOP-EXT ---
#net estop-pendant <= hm2_7i96.0.gpio.045.in_not #=> E_stop_comb.in1
net tool-or-probe tool_probe.out
#net comb_E_stop E_stop_comb.out
#*******************
# AXIS X JOINT 0
#*******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output
# Step Gen signals/setup
setp hm2_7i96.0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp hm2_7i96.0.stepgen.00.dirhold [JOINT_0]DIRHOLD
setp hm2_7i96.0.stepgen.00.steplen [JOINT_0]STEPLEN
setp hm2_7i96.0.stepgen.00.stepspace [JOINT_0]STEPSPACE
setp hm2_7i96.0.stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp hm2_7i96.0.stepgen.00.step_type 0
setp hm2_7i96.0.stepgen.00.control-type 1
setp hm2_7i96.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_7i96.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output <= hm2_7i96.0.stepgen.00.velocity-cmd
net x-pos-fb <= hm2_7i96.0.stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_7i96.0.stepgen.00.enable
# ---setup home / limit switch signals---
net x-home-sw => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-limit => joint.0.pos-lim-sw-in
#*******************
# AXIS Y JOINT 1
#*******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output
# Step Gen signals/setup
setp hm2_7i96.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_7i96.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_7i96.0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_7i96.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_7i96.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp hm2_7i96.0.stepgen.01.step_type 0
setp hm2_7i96.0.stepgen.01.control-type 1
setp hm2_7i96.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_7i96.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output <= hm2_7i96.0.stepgen.01.velocity-cmd
net y-pos-fb <= hm2_7i96.0.stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_7i96.0.stepgen.01.enable
# ---setup home / limit switch signals---
net y-home-sw => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS Z JOINT 2
#*******************
setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output
# Step Gen signals/setup
setp hm2_7i96.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i96.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i96.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i96.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i96.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i96.0.stepgen.02.step_type 0
setp hm2_7i96.0.stepgen.02.control-type 1
setp hm2_7i96.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i96.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output <= hm2_7i96.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_7i96.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_7i96.0.stepgen.02.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.pos-lim-sw-in
#*******************
# AXIS A JOINT 3
#*******************
setp pid.a.Pgain [JOINT_3]P
setp pid.a.Igain [JOINT_3]I
setp pid.a.Dgain [JOINT_3]D
setp pid.a.bias [JOINT_3]BIAS
setp pid.a.FF0 [JOINT_3]FF0
setp pid.a.FF1 [JOINT_3]FF1
setp pid.a.FF2 [JOINT_3]FF2
setp pid.a.deadband [JOINT_3]DEADBAND
setp pid.a.maxoutput [JOINT_3]MAX_OUTPUT
setp pid.a.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.a.maxerror 0.000500
net a-index-enable <=> pid.a.index-enable
net a-enable => pid.a.enable
net a-pos-cmd => pid.a.command
net a-pos-fb => pid.a.feedback
net a-output <= pid.a.output
# Step Gen signals/setup
setp hm2_7i96.0.stepgen.04.dirsetup [JOINT_3]DIRSETUP
setp hm2_7i96.0.stepgen.04.dirhold [JOINT_3]DIRHOLD
setp hm2_7i96.0.stepgen.04.steplen [JOINT_3]STEPLEN
setp hm2_7i96.0.stepgen.04.stepspace [JOINT_3]STEPSPACE
setp hm2_7i96.0.stepgen.04.position-scale [JOINT_3]STEP_SCALE
setp hm2_7i96.0.stepgen.04.step_type 0
setp hm2_7i96.0.stepgen.04.control-type 1
setp hm2_7i96.0.stepgen.04.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_7i96.0.stepgen.04.maxvel [JOINT_3]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net a-pos-cmd <= joint.3.motor-pos-cmd
net a-vel-cmd <= joint.3.vel-cmd
net a-output <= hm2_7i96.0.stepgen.04.velocity-cmd
net a-pos-fb <= hm2_7i96.0.stepgen.04.position-fb
net a-pos-fb => joint.3.motor-pos-fb
net a-enable <= joint.3.amp-enable-out
net a-enable => hm2_7i96.0.stepgen.04.enable
# ---setup home / limit switch signals---
net a-home-sw => joint.3.home-sw-in
net a-neg-limit => joint.3.neg-lim-sw-in
net a-pos-limit => joint.3.pos-lim-sw-in
#*******************
# SPINDLE
#*******************
setp pid.s.Pgain [SPINDLE_0]P
setp pid.s.Igain [SPINDLE_0]I
setp pid.s.Dgain [SPINDLE_0]D
setp pid.s.bias [SPINDLE_0]BIAS
setp pid.s.FF0 [SPINDLE_0]FF0
setp pid.s.FF1 [SPINDLE_0]FF1
setp pid.s.FF2 [SPINDLE_0]FF2
setp pid.s.deadband [SPINDLE_0]DEADBAND
setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp pid.s.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.s.maxerror 0.000500
net spindle-index-enable <=> pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output
# Step Gen signals/setup
setp hm2_7i96.0.stepgen.03.dirsetup [SPINDLE_0]DIRSETUP
setp hm2_7i96.0.stepgen.03.dirhold [SPINDLE_0]DIRHOLD
setp hm2_7i96.0.stepgen.03.steplen [SPINDLE_0]STEPLEN
setp hm2_7i96.0.stepgen.03.stepspace [SPINDLE_0]STEPSPACE
setp hm2_7i96.0.stepgen.03.position-scale [SPINDLE_0]STEP_SCALE
setp hm2_7i96.0.stepgen.03.step_type 0
setp hm2_7i96.0.stepgen.03.control-type 1
setp hm2_7i96.0.stepgen.03.maxaccel [SPINDLE_0]MAX_ACCELERATION
setp hm2_7i96.0.stepgen.03.maxvel [SPINDLE_0]MAX_VELOCITY
net spindle-vel-cmd-rps => hm2_7i96.0.stepgen.03.velocity-cmd
#(enables the DMM drive with the power button)
net machine-is-on <= halui.machine.is-on
net machine-is-on => hm2_7i96.0.ssr.00.out-00
#(enables the spindle stepgen)
net machine-is-enabled <= motion.motion-enabled
net machine-is-enabled => hm2_7i96.0.stepgen.03.enable
# ---Encoder feedback signals/setup---
setp hm2_7i96.0.encoder.00.counter-mode 0
setp hm2_7i96.0.encoder.00.filter 1
setp hm2_7i96.0.encoder.00.index-invert 0
setp hm2_7i96.0.encoder.00.index-mask 0
setp hm2_7i96.0.encoder.00.index-mask-invert 0
setp hm2_7i96.0.encoder.00.scale [SPINDLE_0]ENCODER_SCALE
net spindle-revs <= hm2_7i96.0.encoder.00.position
net spindle-vel-fb-rps <= hm2_7i96.0.encoder.00.velocity
net spindle-index-enable <=> hm2_7i96.0.encoder.00.index-enable
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable
# ---Setup spindle at speed signals---
net spindle-vel-cmd-rps => near.0.in1
net spindle-vel-fb-rps-abs => near.0.in2
net spindle-at-speed <= near.0.out
net spindle-vel-fb-rps => abs.0.in
net spindle-vel-fb-rps-abs abs.0.out
setp near.0.scale 1.000000
setp near.0.difference 2.00
# Use ACTUAL spindle velocity from spindle encoder
# spindle-velocity bounces around so we filter it with lowpass
# spindle-velocity is signed so we use absolute component to remove sign
# ACTUAL velocity is in RPS not RPM so we scale it.
setp scale.spindle.gain 60
setp lowpass.spindle.gain 1.000000
net spindle-vel-fb-rps => scale.spindle.in
net spindle-fb-rpm scale.spindle.out => abs.spindle.in
net spindle-fb-rpm-abs abs.spindle.out => lowpass.spindle.in
net spindle-fb-rpm-abs-filtered lowpass.spindle.out
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net axis-select-a halui.axis.a.select
net jog-a-pos halui.axis.a.plus
net jog-a-neg halui.axis.a.minus
net jog-a-analog halui.axis.a.analog
net a-is-homed halui.joint.3.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
#net probe-in => motion.probe-input
net tool-or-probe => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
#net comb_E_stop => iocontrol.0.emc-enable-in
net estop-ext => iocontrol.0.emc-enable-in
#net estop-pendant => iocontrol.0.emc-enable-in
# ---manual tool change signals---
loadusr -W hal_manualtoolchange
net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Time to create page: 0.777 seconds