Search Results (Searched for: stepper spindle)
10 Jan 2024 01:37
Replied by tommylight on topic Which linux distro is easiest to start with to select for LinuxCNX as of today?
Which linux distro is easiest to start with to select for LinuxCNX as of today?
Category: General LinuxCNC Questions
1 Yes
2 Yes
See also 7i85S, it connects to 7i96S and adds another 4 steppers and 4 encoders/linear scales.
The spindle encoder on 7i96S can also be used for joint/axis encoder/linear scale.
Linear scales must be incremental with TTL/5V output.
If you later need more I/O, add 1 or 2 of 7i84, each has 32 inputs and 16 outputs, easy wiring to 7i96S or 7i85S.
2 Yes
See also 7i85S, it connects to 7i96S and adds another 4 steppers and 4 encoders/linear scales.
The spindle encoder on 7i96S can also be used for joint/axis encoder/linear scale.
Linear scales must be incremental with TTL/5V output.
If you later need more I/O, add 1 or 2 of 7i84, each has 32 inputs and 16 outputs, easy wiring to 7i96S or 7i85S.
10 Jan 2024 00:42
Replied by forestgril on topic Which linux distro is easiest to start with to select for LinuxCNX as of today?
Which linux distro is easiest to start with to select for LinuxCNX as of today?
Category: General LinuxCNC Questions
Thank You very much! Around 16 kHz is what is necessary to step a motor at 600RPM and 1/8 microstep, which should be ok in the beginning?.. (as I understand microsteps are then at 1/8 lower torques so they do not add any precision when load is high)
The "highest" model listed here seems to be the 7i96S, which is also available here and there, but it is 5 axis only and doesn't contain servo encoder feedback.
The seemingly more powerful 6 axis model with servo feedback for each axis: eusurplus.com/index.php?route=product/pr...62_71&product_id=115
is not available immediately (preorder necessary).
The former card does have 5 axis support, which should be more than fine for a beginner. "The 7I96S also has 11 isolated inputs plus 6 isolated outputs for general purpose I/O use. A high speed encoder interface is provided for spindle synchronized motion and an isolated analog spindle output allows spindle speed control . A RS-422/RS485 serial port and a parallel port are provided for I/O expansion ."
I wonder if I am able to use these inputs from micrometric linear scales, to have a feedback for my step motor control. I am thinking of "removing" (rather compensating for) backslash electronically with the rule, that scale numbers are the final truth about position of my table, not motor angle (like in servo and servo-steppers). This way I would not care about wheter motor shaft did the step, but whether the scale masurement got me to the right position. I would push motor steps until I am at the expected value. If I could not achieve it within a reasonable number of steps, it would be an alarm to stop further operation.
1. Does it sound reasonable.
2. Can LinuxCNC support such approach out of the box.
I am a C++ programmer, maybe I can add an extension if 2!=true?
The "highest" model listed here seems to be the 7i96S, which is also available here and there, but it is 5 axis only and doesn't contain servo encoder feedback.
The seemingly more powerful 6 axis model with servo feedback for each axis: eusurplus.com/index.php?route=product/pr...62_71&product_id=115
is not available immediately (preorder necessary).
The former card does have 5 axis support, which should be more than fine for a beginner. "The 7I96S also has 11 isolated inputs plus 6 isolated outputs for general purpose I/O use. A high speed encoder interface is provided for spindle synchronized motion and an isolated analog spindle output allows spindle speed control . A RS-422/RS485 serial port and a parallel port are provided for I/O expansion ."
I wonder if I am able to use these inputs from micrometric linear scales, to have a feedback for my step motor control. I am thinking of "removing" (rather compensating for) backslash electronically with the rule, that scale numbers are the final truth about position of my table, not motor angle (like in servo and servo-steppers). This way I would not care about wheter motor shaft did the step, but whether the scale masurement got me to the right position. I would push motor steps until I am at the expected value. If I could not achieve it within a reasonable number of steps, it would be an alarm to stop further operation.
1. Does it sound reasonable.
2. Can LinuxCNC support such approach out of the box.
I am a C++ programmer, maybe I can add an extension if 2!=true?
08 Jan 2024 23:19
Mesa CT 7i96 7i85S was created by jtrantow
Mesa CT 7i96 7i85S
Category: Driver Boards
I just installed mesact from your github hoping I can use it for my lathe and mill instead of using an editor. I've used stepconf and pncconf but this is my first use of mesact.
I have my lathe setup with XYZA motors connected to stepgens on the 7i96 and encoders for XYZ and Spindle on the 7i85S. I'm currently running the 7i96_7i85s.bit firmware but I intend to switch to the a bitfile with PWM on the 7i96 Step4 pins.
Using the firmware/Mesaflash dialog I can verify the firmware. But Options says "No pin file found!" and I can't change the Step Generators, PWM Generatiors, Encoders options?
It looks like I could rewire my steppers connected to the 7i96 6 pin step gen connectors to use the 8 pin Diff Out connectors of the 7i85S and use mesact the way it is?
With the current implementation of mesact is it possible to pair the 7i96 stepgens with the 7i85s encoders?
I have my lathe setup with XYZA motors connected to stepgens on the 7i96 and encoders for XYZ and Spindle on the 7i85S. I'm currently running the 7i96_7i85s.bit firmware but I intend to switch to the a bitfile with PWM on the 7i96 Step4 pins.
Using the firmware/Mesaflash dialog I can verify the firmware. But Options says "No pin file found!" and I can't change the Step Generators, PWM Generatiors, Encoders options?
It looks like I could rewire my steppers connected to the 7i96 6 pin step gen connectors to use the 8 pin Diff Out connectors of the 7i85S and use mesact the way it is?
With the current implementation of mesact is it possible to pair the 7i96 stepgens with the 7i85s encoders?
08 Jan 2024 13:58
Best Mesa Option for me was created by jyeomans
Best Mesa Option for me
Category: General LinuxCNC Questions
Hello,
i have a cnc router i build a few years back. works well.
This was my first step in motion control. I used a cheap parallel card to drive
my stepper drivers, dust collection, and all the limit switches and estops.
I all so have a USB to serial to control a VFD. As well as a diode laser to engrave/burn wood.
The Parallel card is out of io and I have all so had some issues with the computer sometimes losing its place. Maybe i accidentally click off of linuxCNC to some other app or some other dumb thing.
so i have been looking at mesa cards. and i think that i want to get the 7i95t but i don't see it directly supported in linuxCNC. I could all so use the 7i76.
i want to know how hard this is going to be to implement. And if it is the correct choice.
my goal here is this:
I want to separate limit switches, homing circuits and probing input.
I want to add separate control for pneumatic stuff. i.e. a mister for cutting aluminumI want to add some tactile controls to feed overrides and spindle.Maybe add a pendant at some point.Last question do these cards connect directly to the computer or do/can they be on the network. Thanks for the help and advice.
i have a cnc router i build a few years back. works well.
This was my first step in motion control. I used a cheap parallel card to drive
my stepper drivers, dust collection, and all the limit switches and estops.
I all so have a USB to serial to control a VFD. As well as a diode laser to engrave/burn wood.
The Parallel card is out of io and I have all so had some issues with the computer sometimes losing its place. Maybe i accidentally click off of linuxCNC to some other app or some other dumb thing.
so i have been looking at mesa cards. and i think that i want to get the 7i95t but i don't see it directly supported in linuxCNC. I could all so use the 7i76.
i want to know how hard this is going to be to implement. And if it is the correct choice.
my goal here is this:
I want to separate limit switches, homing circuits and probing input.
I want to add separate control for pneumatic stuff. i.e. a mister for cutting aluminumI want to add some tactile controls to feed overrides and spindle.Maybe add a pendant at some point.Last question do these cards connect directly to the computer or do/can they be on the network. Thanks for the help and advice.
04 Jan 2024 00:24
Replied by sky_1 on topic Beginner with LinuxCNC and Roland EGX-300, looking for a few pointers
Beginner with LinuxCNC and Roland EGX-300, looking for a few pointers
Category: General LinuxCNC Questions
Thanks for the advice! I see; in that case, I'll take a two-track approach. I'll work with either C/C++ or Python to program the machine in the HPGL-like format that it uses, whilst also obtaining a PC with PCIe card slot, so I can have a small testbed for learning LinuxCNC, and switch to that once I'm familiar with it.
After some googling, I can see that a "Lenovo P320 Tiny" (I want an ideally small form-factor machine) has a PCIe slot, and it's cheap on ebay, so I'll probably pick that up (unless there are better recommendations for a small, low-cost PC), plus PCIe cards for serial and parallel so I can try them both out.
I'm curious too what's inside the EXG-300, but it's not at the location where I an currently, so I can't take a screwdriver to it just yet : ) But ideally I'd just like to use it as a black box and apply the HPGL-like commands (known as CAMM-GL in Roland speak) via LinuxCNC, and learn about suitable stepper/spindle driver boards over time.
After some googling, I can see that a "Lenovo P320 Tiny" (I want an ideally small form-factor machine) has a PCIe slot, and it's cheap on ebay, so I'll probably pick that up (unless there are better recommendations for a small, low-cost PC), plus PCIe cards for serial and parallel so I can try them both out.
I'm curious too what's inside the EXG-300, but it's not at the location where I an currently, so I can't take a screwdriver to it just yet : ) But ideally I'd just like to use it as a black box and apply the HPGL-like commands (known as CAMM-GL in Roland speak) via LinuxCNC, and learn about suitable stepper/spindle driver boards over time.
02 Jan 2024 18:10 - 02 Jan 2024 19:03
Replied by David Herrera on topic QtPlasmac setup
QtPlasmac setup
Category: Plasmac
sorry cant find the config file
Generated by PNCconf at Tue Jan 2 16:39:10 2024
# Using LinuxCNC version: Master (2.9)
# 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_spindles=[TRAJ]SPINDLES
loadrt hostmot2
loadrt hm2_eth board_ip="192.168.1.121" config="num_encoders=1 num_pwmgens=1 num_stepgens=5 sserial_port_0=00000000"
setp [HMOT](CARD0).pwmgen.pwm_frequency 20000
setp [HMOT](CARD0).pwmgen.pdm_frequency 6000000
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
loadrt plasmac
addf [HMOT](CARD0).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.s.do-pid-calcs servo-thread
addf plasmac servo-thread
addf [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1
# ---PLASMA INPUT DEBOUNCE---
#values for these are in custom.hal
loadrt dbounce names=db_breakaway,db_float,db_ohmic,db_arc-ok
addf db_float servo-thread
addf db_ohmic servo-thread
addf db_breakaway servo-thread
addf db_arc-ok servo-thread
# ---JOINT ASSOCIATED WITH THE Z AXIS---
net plasmac:axis-position joint.2.pos-fb => plasmac.axis-z-position
# ---PLASMA INPUTS---
# ---all modes---
net plasmac:float-switch => db_float.in
net plasmac:breakaway => db_breakaway.in
net plasmac:ohmic-probe => db_ohmic.in
net plasmac:ohmic-sense-in => plasmac.ohmic-sense-in
# ---modes 0 & 1
net plasmac:arc-voltage-in => plasmac.arc-voltage-in
# ---modes 1 & 2
net plasmac:arc-ok-in => db_arc-ok.in
# ---mode 2
net plasmac:move-up <= plasmac.move-up
net plasmac:move-down <= plasmac.move-down
# ---PLASMA OUTPUTS---
# ---all modes---
net plasmac:ohmic-enable <= plasmac.ohmic-enable
net plasmac:scribe-arm <= plasmac.scribe-arm
net plasmac:scribe-on <= plasmac.scribe-on
# ---OHMIC SENSE LINK---
net plasmac:ohmic-probe <= plasmac.ohmic-sense-out
# external output signals
# --- PLASMAC:TORCH-ON ---
net plasmac:torch-on => [HMOT](CARD0).ssr.00.out-00
# --- PLASMAC:OHMIC-ENABLE ---
net plasmac:ohmic-enable => [HMOT](CARD0).ssr.00.out-01
# external input signals
# --- BOTH-X ---
net both-x <= [HMOT](CARD0).inm.00.input-00
# --- BOTH-Y ---
net both-y <= [HMOT](CARD0).inm.00.input-01
# --- BOTH-Z ---
net both-z <= [HMOT](CARD0).inm.00.input-02
# --- HOME-X ---
net home-x <= [HMOT](CARD0).inm.00.input-03
# --- HOME-Y ---
net home-y <= [HMOT](CARD0).inm.00.input-04
# --- HOME-Z ---
net home-z <= [HMOT](CARD0).inm.00.input-05
# --- PLASMAC:ARC-OK-IN ---
net plasmac:arc-ok-in <= [HMOT](CARD0).inm.00.input-06
# --- PLASMAC:OHMIC-SENSE-IN ---
net plasmac:ohmic-sense-in <= [HMOT](CARD0).inm.00.input-07
# --- PLASMAC:MOVE-UP ---
net plasmac:move-up <= [HMOT](CARD0).inm.00.input-08
# --- PLASMAC:MOVE-DOWN ---
net plasmac:move-down <= [HMOT](CARD0).inm.00.input-09
# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).inm.00.input-10-not
#*******************
# 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 [HMOT](CARD0).stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.00.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.00.enable
# ---setup home / limit switch signals---
net home-x => joint.0.home-sw-in
net both-x => joint.0.neg-lim-sw-in
net both-x => 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 [HMOT](CARD0).stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.01.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net home-y => joint.1.home-sw-in
net both-y => joint.1.neg-lim-sw-in
net both-y => 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 [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.02.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net home-z => joint.2.home-sw-in
net both-z => joint.2.neg-lim-sw-in
net both-z => joint.2.pos-lim-sw-in
# ---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 estop-ext => iocontrol.0.emc-enable-in
# ---QTPLASMAC TOOLCHANGE PASSTHROUGH---
net tool:change iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool:prep iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Generated by PNCconf at Tue Jan 2 16:39:10 2024
# Using LinuxCNC version: Master (2.9)
# 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_spindles=[TRAJ]SPINDLES
loadrt hostmot2
loadrt hm2_eth board_ip="192.168.1.121" config="num_encoders=1 num_pwmgens=1 num_stepgens=5 sserial_port_0=00000000"
setp [HMOT](CARD0).pwmgen.pwm_frequency 20000
setp [HMOT](CARD0).pwmgen.pdm_frequency 6000000
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
loadrt plasmac
addf [HMOT](CARD0).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.s.do-pid-calcs servo-thread
addf plasmac servo-thread
addf [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1
# ---PLASMA INPUT DEBOUNCE---
#values for these are in custom.hal
loadrt dbounce names=db_breakaway,db_float,db_ohmic,db_arc-ok
addf db_float servo-thread
addf db_ohmic servo-thread
addf db_breakaway servo-thread
addf db_arc-ok servo-thread
# ---JOINT ASSOCIATED WITH THE Z AXIS---
net plasmac:axis-position joint.2.pos-fb => plasmac.axis-z-position
# ---PLASMA INPUTS---
# ---all modes---
net plasmac:float-switch => db_float.in
net plasmac:breakaway => db_breakaway.in
net plasmac:ohmic-probe => db_ohmic.in
net plasmac:ohmic-sense-in => plasmac.ohmic-sense-in
# ---modes 0 & 1
net plasmac:arc-voltage-in => plasmac.arc-voltage-in
# ---modes 1 & 2
net plasmac:arc-ok-in => db_arc-ok.in
# ---mode 2
net plasmac:move-up <= plasmac.move-up
net plasmac:move-down <= plasmac.move-down
# ---PLASMA OUTPUTS---
# ---all modes---
net plasmac:ohmic-enable <= plasmac.ohmic-enable
net plasmac:scribe-arm <= plasmac.scribe-arm
net plasmac:scribe-on <= plasmac.scribe-on
# ---OHMIC SENSE LINK---
net plasmac:ohmic-probe <= plasmac.ohmic-sense-out
# external output signals
# --- PLASMAC:TORCH-ON ---
net plasmac:torch-on => [HMOT](CARD0).ssr.00.out-00
# --- PLASMAC:OHMIC-ENABLE ---
net plasmac:ohmic-enable => [HMOT](CARD0).ssr.00.out-01
# external input signals
# --- BOTH-X ---
net both-x <= [HMOT](CARD0).inm.00.input-00
# --- BOTH-Y ---
net both-y <= [HMOT](CARD0).inm.00.input-01
# --- BOTH-Z ---
net both-z <= [HMOT](CARD0).inm.00.input-02
# --- HOME-X ---
net home-x <= [HMOT](CARD0).inm.00.input-03
# --- HOME-Y ---
net home-y <= [HMOT](CARD0).inm.00.input-04
# --- HOME-Z ---
net home-z <= [HMOT](CARD0).inm.00.input-05
# --- PLASMAC:ARC-OK-IN ---
net plasmac:arc-ok-in <= [HMOT](CARD0).inm.00.input-06
# --- PLASMAC:OHMIC-SENSE-IN ---
net plasmac:ohmic-sense-in <= [HMOT](CARD0).inm.00.input-07
# --- PLASMAC:MOVE-UP ---
net plasmac:move-up <= [HMOT](CARD0).inm.00.input-08
# --- PLASMAC:MOVE-DOWN ---
net plasmac:move-down <= [HMOT](CARD0).inm.00.input-09
# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).inm.00.input-10-not
#*******************
# 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 [HMOT](CARD0).stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.00.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.00.enable
# ---setup home / limit switch signals---
net home-x => joint.0.home-sw-in
net both-x => joint.0.neg-lim-sw-in
net both-x => 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 [HMOT](CARD0).stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.01.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net home-y => joint.1.home-sw-in
net both-y => joint.1.neg-lim-sw-in
net both-y => 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 [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.02.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net home-z => joint.2.home-sw-in
net both-z => joint.2.neg-lim-sw-in
net both-z => joint.2.pos-lim-sw-in
# ---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 estop-ext => iocontrol.0.emc-enable-in
# ---QTPLASMAC TOOLCHANGE PASSTHROUGH---
net tool:change iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool:prep iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
26 Dec 2023 09:02 - 26 Dec 2023 09:07
Anyone figured out how to get Trinamic's TMC5160 drivers working with LinuxCNC? was created by rajhlinux
Anyone figured out how to get Trinamic's TMC5160 drivers working with LinuxCNC?
Category: Driver Boards
Finally some big beefy TMC5160 driver boards out, supports 60 DC Volts and 6 Amps, could be used for CNC metal milling:
www.amazon.com/BIGTREETECH-TMC5160T-Step...81-b373-0e5c1a776d5d
biqu.equipment/products/bigtreetech-tmc5...riant=40447047860322
I really want to use them on the PM-25mv bench mill converted to CNC due to it's "stealthchop" and alike features, would be used for the X and Y-axis closed-loop stepper motors, I think Z-axis should be ok which doesn't have heavy spindle motor.
Anyone figured out how to get the TMC5160 working with LinuxCNC?
I plan on getting a MESA card...
Any advice would be helpful.
Thanks.
www.amazon.com/BIGTREETECH-TMC5160T-Step...81-b373-0e5c1a776d5d
biqu.equipment/products/bigtreetech-tmc5...riant=40447047860322
I really want to use them on the PM-25mv bench mill converted to CNC due to it's "stealthchop" and alike features, would be used for the X and Y-axis closed-loop stepper motors, I think Z-axis should be ok which doesn't have heavy spindle motor.
Anyone figured out how to get the TMC5160 working with LinuxCNC?
I plan on getting a MESA card...
Any advice would be helpful.
Thanks.
18 Dec 2023 13:36
Replied by spumco on topic Developments on my Home built 5C CNC Lathe - Polar interp. and Live tooling
Developments on my Home built 5C CNC Lathe - Polar interp. and Live tooling
Category: Advanced Configuration
Egg on my face to anyone reading this. It's been a while since I've used live tooling on my lathe and I simply forgot how the post works.
Yes, the post DOES invoke polar interpolation in the control... meaning if anyone wants an LCNC post (based on my post) with C-axis milling they will have to use some sort of polar interpolation switchkins.
Here's a section of axial milling I just dug up:
(2D Adaptive1)
N130 M1
N135 G90 G94 G18 G80
N140 T0101
N145 M52
N150 G97 S4000 M13
N155 M9
N160 G0 C0.
N165 G12.1
N170 G1 Z0.575 F230.
N175 X1.1179 C-0.1664
N180 Z-0.375
N185 Z-0.385 F16.
N190 X1.1178 Z-0.3859
N195 X1.1176 Z-0.3867
N200 X1.1172 C-0.1663 Z-0.3876
N205 X1.1167 C-0.1662 Z-0.3884
N210 X1.1161 Z-0.3892
N215 X1.1153 C-0.1661 Z-0.39
N220 X1.1144 C-0.1659 Z-0.3907
N225 X1.1133 C-0.1658 Z-0.3914
N230 X1.1122 C-0.1657 Z-0.3921
N235 X1.111 C-0.1655 Z-0.3927
N240 X1.1096 C-0.1653 Z-0.3932
N245 X1.1082 C-0.1652 Z-0.3937
N250 X1.1067 C-0.165 Z-0.3941
N255 X1.1051 C-0.1648 Z-0.3944
N260 X1.1035 C-0.1646 Z-0.3947
N265 X1.1019 C-0.1643 Z-0.3948
N270 X1.1002 C-0.1641 Z-0.395
N275 X1.0985 C-0.1639
N280 G3 X0.8263 C-0.1443 I-0.1584 J-0.6183
N285 G1 X0.8255
N290 G3 X0.7362 C-0.1986 I0.1376 J-0.1587
N295 G2 X0.685 C-0.2357 I-0.121 J0.0562
N300 X0.1857 C-0.3953 I-0.3739 J0.3096
N305 G3 X0.1122 C-0.4059 I0.0071 J-0.0939
N310 G1 X0.1086 C-0.4071
NOTES:
Yes, the post DOES invoke polar interpolation in the control... meaning if anyone wants an LCNC post (based on my post) with C-axis milling they will have to use some sort of polar interpolation switchkins.
Here's a section of axial milling I just dug up:
Warning: Spoiler!
(2D Adaptive1)
N130 M1
N135 G90 G94 G18 G80
N140 T0101
N145 M52
N150 G97 S4000 M13
N155 M9
N160 G0 C0.
N165 G12.1
N170 G1 Z0.575 F230.
N175 X1.1179 C-0.1664
N180 Z-0.375
N185 Z-0.385 F16.
N190 X1.1178 Z-0.3859
N195 X1.1176 Z-0.3867
N200 X1.1172 C-0.1663 Z-0.3876
N205 X1.1167 C-0.1662 Z-0.3884
N210 X1.1161 Z-0.3892
N215 X1.1153 C-0.1661 Z-0.39
N220 X1.1144 C-0.1659 Z-0.3907
N225 X1.1133 C-0.1658 Z-0.3914
N230 X1.1122 C-0.1657 Z-0.3921
N235 X1.111 C-0.1655 Z-0.3927
N240 X1.1096 C-0.1653 Z-0.3932
N245 X1.1082 C-0.1652 Z-0.3937
N250 X1.1067 C-0.165 Z-0.3941
N255 X1.1051 C-0.1648 Z-0.3944
N260 X1.1035 C-0.1646 Z-0.3947
N265 X1.1019 C-0.1643 Z-0.3948
N270 X1.1002 C-0.1641 Z-0.395
N275 X1.0985 C-0.1639
N280 G3 X0.8263 C-0.1443 I-0.1584 J-0.6183
N285 G1 X0.8255
N290 G3 X0.7362 C-0.1986 I0.1376 J-0.1587
N295 G2 X0.685 C-0.2357 I-0.121 J0.0562
N300 X0.1857 C-0.3953 I-0.3739 J0.3096
N305 G3 X0.1122 C-0.4059 I0.0071 J-0.0939
N310 G1 X0.1086 C-0.4071
NOTES:
- G12.1 Polar Coordinate Interpolation ON
- M52 C-axis ON
- This disables the main spindle motor
- Fires an air cylinder which forces the C-axis stepper in contact with the spindle bull gear
- Homes the (now) C-axis using the spindle-mounted encoder.
- M13 live tool ON, clockwise
17 Dec 2023 14:44
Replied by NoJo on topic Developments on my Home built 5C CNC Lathe - Polar interp. and Live tooling
Developments on my Home built 5C CNC Lathe - Polar interp. and Live tooling
Category: Advanced Configuration
WRT the ATC - If I recall, the basic carousel comp requires the ATC hardware to be able to rotate the carousel, past the tool locate point, a pawn then engages and the carousel is then rotated backwards to lock against the pawl ( EMCO style..)
If you study my ATC you will see it uses a hirth coupling and compressed air to disengage the coupler, a stepper to rotate to the next tool, with opto-sensing of tool position, and then air release to lock using compression spring discs. Also, the ATC has a live spindle as a tool select - none of this is available in the basic carousel comp - if you want fancy, you have to pay in pain..I paid a lot, nearly giving up many times...
I would not have succeeded if it were not for a LOT of help from Andy, Aciera and
DGarrett, and my good Wife, a really good software Guru.
Re the F360 processor - I think you have me confused with someone else - I never paid for F360 anything - I don't use F360, I dislike the marketing model and its Pro price, esp for hobby use...
I use Rhinocad-7 and Rhinocam - the latter cannot do Mill/turn, ie, no C axis capability in lathe CAM. For this lathe I use eCam - an Italian fellow's creation for Mill and Lathe, with a very usable C axis mode - it is very good, free on weekends, and two or three hundred Euro to buy.
I can share the 3D cad files for the lathe/ATC, etc, but it is all Rhinocad format (.3dm) - I can convert to other standards, but that always creates issues...
If you study my ATC you will see it uses a hirth coupling and compressed air to disengage the coupler, a stepper to rotate to the next tool, with opto-sensing of tool position, and then air release to lock using compression spring discs. Also, the ATC has a live spindle as a tool select - none of this is available in the basic carousel comp - if you want fancy, you have to pay in pain..I paid a lot, nearly giving up many times...
I would not have succeeded if it were not for a LOT of help from Andy, Aciera and
DGarrett, and my good Wife, a really good software Guru.
Re the F360 processor - I think you have me confused with someone else - I never paid for F360 anything - I don't use F360, I dislike the marketing model and its Pro price, esp for hobby use...
I use Rhinocad-7 and Rhinocam - the latter cannot do Mill/turn, ie, no C axis capability in lathe CAM. For this lathe I use eCam - an Italian fellow's creation for Mill and Lathe, with a very usable C axis mode - it is very good, free on weekends, and two or three hundred Euro to buy.
I can share the 3D cad files for the lathe/ATC, etc, but it is all Rhinocad format (.3dm) - I can convert to other standards, but that always creates issues...
15 Dec 2023 18:07
Replied by reBrick on topic Spindle and motion do not work at the same time, both work independently
Spindle and motion do not work at the same time, both work independently
Category: General LinuxCNC Questions
I want to add the other configuration that I had mentioned. In this case the motors and spindle work simultaneously, but the motors are not smooth and the PWM signal can be heard coming from the steppers. I have disconnected the signal wires from the stepper drivers and confirmed the pwm sound is coming from the all of the stepper motors.
15 Dec 2023 06:09 - 15 Dec 2023 17:20
Spindle and motion do not work at the same time, both work independently
Category: General LinuxCNC Questions
I do not have any idea what is going on. I had everything working then updated my configs to get a laser working. I have ditched the laser and can't get the spindle working again even using my previously working configs. I am thinking it may be a wiring issue, but I even tried swapping BOB's with another machine and the behavior is the same.
Hal watch parport looks fine. Steppers all work fine until the spindle is activated. I can home, then start a job and the steppers don't move while the spindle is running. I can pause the job and turn off the spindle and resume the job and the motion works without the spindle.
I have tried process of elimination by removing all connections from the pwm pins and that doesn't affect it.
commenting out the following line is the only thing that results in motion working when spindle is enabled (but then the spindle doesn't spin anyway)...
net spindle-cmd-rpm <= spindle.0.speed-out
Edit: Motion fails whether or not VFD is plugged in.
One of my other configs causes loud pwm sound coming from somewhere other than VFD I haven't pinpointed.
I have been trying to get this working over multiple days now. I appreciate anyone talking the time to give me some pointers on diagnosing or resolving this issue.
Hal watch parport looks fine. Steppers all work fine until the spindle is activated. I can home, then start a job and the steppers don't move while the spindle is running. I can pause the job and turn off the spindle and resume the job and the motion works without the spindle.
I have tried process of elimination by removing all connections from the pwm pins and that doesn't affect it.
commenting out the following line is the only thing that results in motion working when spindle is enabled (but then the spindle doesn't spin anyway)...
net spindle-cmd-rpm <= spindle.0.speed-out
Edit: Motion fails whether or not VFD is plugged in.
One of my other configs causes loud pwm sound coming from somewhere other than VFD I haven't pinpointed.
I have been trying to get this working over multiple days now. I appreciate anyone talking the time to give me some pointers on diagnosing or resolving this issue.
09 Dec 2023 16:03 - 09 Dec 2023 16:04
Replied by mBender on topic USB RS 485 disconnects when spindle stops
USB RS 485 disconnects when spindle stops
Category: General LinuxCNC Questions
1. It is as far as possible away, the motor and power wiring comes from the bottom, the RS485 wiring is currently pulled directly to the front and away from the VFD. No parallel routing to any other cable.
2. Line filter on VFD input is installed. Did not made a difference.
3. and 4. Just googled common mode chocke. Which one do I need to buy?
I have shielded motor cable, shield connected only at the VFD.
Shielded RS485 cable, shield only connected at the USB Adapter. Ferrit Cores in the data line of the RS 485 signal wires.
LinuxCNC pc, breakout board powered by 5v power adapter OR 5v from the PC. No difference.
I the stepper driver, VFD and LinuxCNC PC all at the same outlet. IS it worth putting the VFD to a different outlet?
2. Line filter on VFD input is installed. Did not made a difference.
3. and 4. Just googled common mode chocke. Which one do I need to buy?
I have shielded motor cable, shield connected only at the VFD.
Shielded RS485 cable, shield only connected at the USB Adapter. Ferrit Cores in the data line of the RS 485 signal wires.
LinuxCNC pc, breakout board powered by 5v power adapter OR 5v from the PC. No difference.
I the stepper driver, VFD and LinuxCNC PC all at the same outlet. IS it worth putting the VFD to a different outlet?
05 Dec 2023 15:19 - 05 Dec 2023 15:21
Replied by Calysto on topic QTdragon home switches do not work
QTdragon home switches do not work
Category: Qtvcp
Attached my configs.
Calysto file is a working file based on axis, e-stop not connected yet. I use this config file for testing purposes.
Qtdragon is the one I can't get to work. Qtdragon starts, I can push the e-stop and machine start, it does not matter if my e-stop physical knob is pressed or not.
Homeing goes wrong, Qtdragon does not react on home-switches. The motors keep turning until they hit the end of the ball-screws and then go into error.
I skipped the qtvcp directory in the zip file to make the zip smaller.
My Machine:
PrintNC, 1540x1540 cutting area. Mesa 7c80 board, with RPI4 4GB.
JMC 180W Servo motors on X/Y/Y2, and a closed loop stepper on Z.
2005 ball screws.
Analogue controled 2,2KW spindle, I couldn't get RS485 to work, will try that again later.
No endstops, only inductive home switches. Software endstops.
Calysto file is a working file based on axis, e-stop not connected yet. I use this config file for testing purposes.
Qtdragon is the one I can't get to work. Qtdragon starts, I can push the e-stop and machine start, it does not matter if my e-stop physical knob is pressed or not.
Homeing goes wrong, Qtdragon does not react on home-switches. The motors keep turning until they hit the end of the ball-screws and then go into error.
I skipped the qtvcp directory in the zip file to make the zip smaller.
My Machine:
PrintNC, 1540x1540 cutting area. Mesa 7c80 board, with RPI4 4GB.
JMC 180W Servo motors on X/Y/Y2, and a closed loop stepper on Z.
2005 ball screws.
Analogue controled 2,2KW spindle, I couldn't get RS485 to work, will try that again later.
No endstops, only inductive home switches. Software endstops.
04 Dec 2023 05:21
Replied by MakerYang on topic In using ECR60+NPN(GPIO), I encountered an issue.
In using ECR60+NPN(GPIO), I encountered an issue.
Category: EtherCAT
This issue has not been resolved yet. It might be due to the fact that I am using open-loop stepper motors, and the XML and HAL configurations might not have been properly set up for this.
I now have a new problem that I need assistance with:
I have configured the start/stop and speed control of the spindle in the following way.
I encountered the following error.
When I test the 'armcncio' separately, I can control the spindle normally. However, when integrated into LinuxCNC, it results in an error. Where could the problem be?
I now have a new problem that I need assistance with:
I have configured the start/stop and speed control of the spindle in the following way.
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W armcncio [TRAJ]COORDINATES
loadusr -W lcec_conf machine.xml
loadrt lcec
loadrt cia402 count=[KINS]JOINTS
loadrt debounce cfg=1,8
addf debounce.0 base-thread
addf debounce.1 base-thread
setp debounce.0.delay 100
setp debounce.1.delay 60
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 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
#*******************
# AXIS X
#*******************
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale [JOINT_0]SCALE
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
net x-enable <= joint.0.amp-enable-out => cia402.0.enable
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-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
net debounce-home-x debounce.1.0.in <= armcncio.gpio.x-home
net both-home-x debounce.1.0.out
net both-home-x => joint.0.home-sw-in
net both-home-x => joint.0.neg-lim-sw-in
net both-home-x => joint.0.pos-lim-sw-in
#*******************
# AXIS Y
#*******************
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale [JOINT_1]SCALE
net y-statusword lcec.0.1.cia-statusword => cia402.1.statusword
net y-opmode-display lcec.0.1.opmode-display => cia402.1.opmode-display
net y-drv-act-pos lcec.0.1.actual-position => cia402.1.drv-actual-position
net y-drv-act-velo lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity
net y-enable <= joint.1.amp-enable-out => cia402.1.enable
net y-pos-cmd <= joint.1.motor-pos-cmd => cia402.1.pos-cmd
net y-pos-fb <= joint.1.motor-pos-fb => cia402.1.pos-fb
net y-controlword cia402.1.controlword => lcec.0.1.cia-controlword
net y-modes-of-operation cia402.1.opmode => lcec.0.1.opmode
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
net y-drv-target-velo cia402.1.drv-target-velocity => lcec.0.1.target-velocity
net debounce-home-y debounce.1.1.in <= armcncio.gpio.y-home
net both-home-y debounce.1.1.out
net both-home-y => joint.1.home-sw-in
net both-home-y => joint.1.neg-lim-sw-in
net both-home-y => joint.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale [JOINT_2]SCALE
net z-statusword lcec.0.2.cia-statusword => cia402.2.statusword
net z-opmode-display lcec.0.2.opmode-display => cia402.2.opmode-display
net z-drv-act-pos lcec.0.2.actual-position => cia402.2.drv-actual-position
net z-drv-act-velo lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity
net z-enable <= joint.2.amp-enable-out => cia402.2.enable
net z-pos-cmd <= joint.2.motor-pos-cmd => cia402.2.pos-cmd
net z-pos-fb <= joint.2.motor-pos-fb => cia402.2.pos-fb
net z-controlword cia402.2.controlword => lcec.0.2.cia-controlword
net z-modes-of-operation cia402.2.opmode => lcec.0.2.opmode
net z-drv-target-pos cia402.2.drv-target-position => lcec.0.2.target-position
net z-drv-target-velo cia402.2.drv-target-velocity => lcec.0.2.target-velocity
net debounce-home-z debounce.1.2.in <= armcncio.gpio.z-home
net both-home-z debounce.1.2.out
net both-home-z => joint.2.home-sw-in
net both-home-z => joint.2.neg-lim-sw-in
net both-home-z => joint.2.pos-lim-sw-in
#*********************
# SPINDLE
#*********************
net spindle-rpm spindle.0.speed-out armcncio.gpio.spindle-pwm
# net spindle-enable spindle.0.on armcncio.gpio.spindle-enable
#*********************
# E-STOP
#*********************
net debounce-estop-ext debounce.1.5.in <= armcncio.gpio.estop
net estop-ext debounce.1.5.out
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
I encountered the following error.
Debug file information:
Can not find -sec DISPLAY -var INTRO_GRAPHIC -num 1
Can not find -sec DISPLAY -var INTRO_TIME -num 1
Note: Using POSIX realtime
HAL: ERROR: signal 'spindle-rpm' already has output or I/O pin(s)
./machine.hal:110: link failed
9343
Stopping realtime threads
Unloading hal components
When I test the 'armcncio' separately, I can control the spindle normally. However, when integrated into LinuxCNC, it results in an error. Where could the problem be?
02 Dec 2023 19:58
linuxcnc stopping constantly was created by trainwreck
linuxcnc stopping constantly
Category: General LinuxCNC Questions
Hello everyone, I have started running in to a really strange problem today. I have been running my machine happily for over a year now, I would guess there is probably 100 - 200 hours of runtime on it without any problems at all. Last night I was running a 2 hour job, and about 1:45 into it linuxcnc just randomly powered off (not estop, not crashed, just as if I had hit the "power" button). At the time I was able to just push power again and finish the job using run from line.
This morning when I went to run another job I can't even get the machine to stay powered on for more than 30 seconds. No alerts come up in the UI, no crashing happens, it really seems as if the software "power" button is just somehow getting pressed. I found this post forum.linuxcnc.org/38-general-linuxcnc-q...utting-off-toggle-f2 where the OP appears to be having a very similar issue, and I went through some of the troubleshooting steps suggested there. Unfortunately I am using a Gecko G540 which is also handling my limit switches so I can't as easily just unplug my drivers to test if they are the cause. I am certain it is not the spindle/VFD because the power offs happen without it running at all. I have started up linuxcnc in debug from the terminal and attached the results below. I assume the qtpyvcp errors are old news and not impacting to this particular issue, although I have never looked at this output before so I can't say that with certainty.
The only reasonable way I can think of to test if my drivers are causing the problem would be to leave the G540 powered on but unplug the stepper motors from the G540 unit, and I don't know if that is safe to do or not so I will wait for guidance here before going that route.
I have video of the issue happening but I am not able to post it from this computer. It is really only showing the power button spontaneously turn grey anyway so I don't know how useful that would be.
I greatly appreciate any help!
This morning when I went to run another job I can't even get the machine to stay powered on for more than 30 seconds. No alerts come up in the UI, no crashing happens, it really seems as if the software "power" button is just somehow getting pressed. I found this post forum.linuxcnc.org/38-general-linuxcnc-q...utting-off-toggle-f2 where the OP appears to be having a very similar issue, and I went through some of the troubleshooting steps suggested there. Unfortunately I am using a Gecko G540 which is also handling my limit switches so I can't as easily just unplug my drivers to test if they are the cause. I am certain it is not the spindle/VFD because the power offs happen without it running at all. I have started up linuxcnc in debug from the terminal and attached the results below. I assume the qtpyvcp errors are old news and not impacting to this particular issue, although I have never looked at this output before so I can't say that with certainty.
The only reasonable way I can think of to test if my drivers are causing the problem would be to leave the G540 powered on but unplug the stepper motors from the G540 unit, and I don't know if that is safe to do or not so I will wait for guidance here before going that route.
I have video of the issue happening but I am not able to post it from this computer. It is really only showing the power button spontaneously turn grey anyway so I don't know how useful that would be.
I greatly appreciate any help!
Time to create page: 0.901 seconds