issue linking stepper to tool changer coommands
24 Oct 2021 15:41 - 24 Oct 2021 17:25 #224101
by PaulQUE
issue linking stepper to tool changer coommands was created by PaulQUE
hi, i'm trying to setup the toolchanger.comp from the boxford240 library, I think I have it setup alright, looking at s-pos-command in the hal meter, M6T1, than T2, returns the right required positions. When requesting a position, the motor spins up, and toolchange in hal meter indicates turns to TRUE for a while, then back to FALSE, and S-pos-command is in the right position. however, the motor does not follow the sequence, it spins up when I ask for a tool, and does not stop, does not reverse either. Any clue on how to fix that one?
thanks
thanks
Last edit: 24 Oct 2021 17:25 by PaulQUE. Reason: forgot to say thanks
Please Log in or Create an account to join the conversation.
27 Oct 2021 12:05 #224496
by andypugh
Replied by andypugh on topic issue linking stepper to tool changer coommands
I don't think that HAL file contains any of the toolchange-related items?
Is it possible that the tool-changer comp assumes a velocity-mode stepgen and you are set up in position-mode? Or, indeed, vice-versa?
Is it possible that the tool-changer comp assumes a velocity-mode stepgen and you are set up in position-mode? Or, indeed, vice-versa?
Please Log in or Create an account to join the conversation.
27 Oct 2021 14:09 - 27 Oct 2021 14:13 #224519
by PaulQUE
Replied by PaulQUE on topic issue linking stepper to tool changer coommands
that's an interesting lead, looking at the bowford hal exemple, and the boxford comp, (i'll include them below) I don't see any mention of velocity mode, but I may have poorly setup my axis.
could it be that that the axis setup in gmoccapy lock the axis into vel mode? I have the interface for the 4 th axis setup, which is only used by the tool changer
could it be that that the axis setup in gmoccapy lock the axis into vel mode? I have the interface for the 4 th axis setup, which is only used by the tool changer
Last edit: 27 Oct 2021 14:13 by PaulQUE.
Please Log in or Create an account to join the conversation.
29 Oct 2021 16:25 #224659
by PaulQUE
Replied by PaulQUE on topic issue linking stepper to tool changer coommands
So you were right, I do not know why, but this line, was outputting velocity command to the axis :
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
I tried to replace it with
net s-output <= [HMOT](CARD0).stepgen.02.position-cmd
and got nothing, no movement at all
so I now my issue is getting the toolchanger.pos-cmd signal linked to the motor position output, how could I do that properly? Here is the current state of my hal file
# Généré par PNCconf le Wed Oct 20 22:33:22 2021
# Using LinuxCNC version: 2.8
# Si vous modifiez ce fichier, il sera
# écrasé quand vous relancerez PNCconf
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=0xxxxx"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.z,pid.s
loadrt toolchanger
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.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf [HMOT](CARD0).write servo-thread
addf toolchanger servo-thread
# external output signals
setp hm2_7i96.0.encoder.00.counter-mode TRUE
setp hm2_7i96.0.encoder.00.scale 100
setp hm2_7i96.0.encoder.00.filter TRUE
# external input signals
#*******************
# 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.012700
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 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 Z JOINT 1
#*******************
setp pid.z.Pgain [JOINT_1]P
setp pid.z.Igain [JOINT_1]I
setp pid.z.Dgain [JOINT_1]D
setp pid.z.bias [JOINT_1]BIAS
setp pid.z.FF0 [JOINT_1]FF0
setp pid.z.FF1 [JOINT_1]FF1
setp pid.z.FF2 [JOINT_1]FF2
setp pid.z.deadband [JOINT_1]DEADBAND
setp pid.z.maxoutput [JOINT_1]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.012700
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.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 z-pos-cmd <= joint.1.motor-pos-cmd
net z-vel-cmd <= joint.1.vel-cmd
net z-output <= [HMOT](CARD0).stepgen.01.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net z-pos-fb => joint.1.motor-pos-fb
net z-enable <= joint.1.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.1.home-sw-in
net z-neg-limit => joint.1.neg-lim-sw-in
net z-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS S ATC
#*******************
setp pid.s.Pgain [JOINT_2]P
setp pid.s.Igain [JOINT_2]I
setp pid.s.Dgain [JOINT_2]D
setp pid.s.bias [JOINT_2]BIAS
setp pid.s.FF0 [JOINT_2]FF0
setp pid.s.FF1 [JOINT_2]FF1
setp pid.s.FF2 [JOINT_2]FF2
setp pid.s.deadband [JOINT_2]DEADBAND
setp pid.s.maxoutput [JOINT_2]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.012700
net s-index-enable <=> pid.s.index-enable
net s-enable => pid.s.enable
net s-pos-cmd => pid.s.command
net s-pos-fb => pid.s.feedback
net s-output <= pid.s.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.02.dirsetup 31000
setp [HMOT](CARD0).stepgen.02.dirhold 16000
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 s-pos-cmd joint.2.motor-pos-cmd
net s-pos-fb joint.2.motor-pos-fb
#net s-vel-cmd <= joint.2.vel-cmd
#net s-output <= s-pos-cmd
# net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
# net s-pos-fb => joint.2.motor-pos-fb
net s-enable <= joint.2.amp-enable-out
net s-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net s-home-sw => joint.2.home-sw-in
net s-neg-limit => joint.2.neg-lim-sw-in
net s-pos-limit => joint.2.pos-lim-sw-in
#******************************
#connections de signaux divers
#******************************
# ---signaux HALUI---
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-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.1.is-homed
net s-is-homed halui.joint.2.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
# ---signaux d'arrosage---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---signal de sonde---
net probe-in => motion.probe-input
# ---signaux contrôle mouvement---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---signaux entrée / sortie numérique---
# ---signaux d'A/U---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---signaux changeur manuel d'outil---
net tool-change iocontrol.0.tool-change => toolchanger.toolchange
net tool-changed iocontrol.0.tool-changed <= toolchanger.toolchanged
net tool-number iocontrol.0.tool-prep-number => toolchanger.toolnumber
net tool-oldnumber iocontrol.0.tool-number => toolchanger.currenttoolnumber
net s-pos-cmd toolchanger.position-cmd => [HMOT](CARD0).joint.2.motor-pos-cmd
#net toolchanger-stepgen-fb <= [HMOT](CARD0).joint.2.motor-pos-cmd
net s-is-homed halui.joint.2.is-homed => toolchanger.ishomed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Any clue on how to achieve this? cheers
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
I tried to replace it with
net s-output <= [HMOT](CARD0).stepgen.02.position-cmd
and got nothing, no movement at all
so I now my issue is getting the toolchanger.pos-cmd signal linked to the motor position output, how could I do that properly? Here is the current state of my hal file
# Généré par PNCconf le Wed Oct 20 22:33:22 2021
# Using LinuxCNC version: 2.8
# Si vous modifiez ce fichier, il sera
# écrasé quand vous relancerez PNCconf
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=0xxxxx"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.z,pid.s
loadrt toolchanger
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.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf [HMOT](CARD0).write servo-thread
addf toolchanger servo-thread
# external output signals
setp hm2_7i96.0.encoder.00.counter-mode TRUE
setp hm2_7i96.0.encoder.00.scale 100
setp hm2_7i96.0.encoder.00.filter TRUE
# external input signals
#*******************
# 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.012700
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 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 Z JOINT 1
#*******************
setp pid.z.Pgain [JOINT_1]P
setp pid.z.Igain [JOINT_1]I
setp pid.z.Dgain [JOINT_1]D
setp pid.z.bias [JOINT_1]BIAS
setp pid.z.FF0 [JOINT_1]FF0
setp pid.z.FF1 [JOINT_1]FF1
setp pid.z.FF2 [JOINT_1]FF2
setp pid.z.deadband [JOINT_1]DEADBAND
setp pid.z.maxoutput [JOINT_1]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.012700
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.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 z-pos-cmd <= joint.1.motor-pos-cmd
net z-vel-cmd <= joint.1.vel-cmd
net z-output <= [HMOT](CARD0).stepgen.01.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net z-pos-fb => joint.1.motor-pos-fb
net z-enable <= joint.1.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.1.home-sw-in
net z-neg-limit => joint.1.neg-lim-sw-in
net z-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS S ATC
#*******************
setp pid.s.Pgain [JOINT_2]P
setp pid.s.Igain [JOINT_2]I
setp pid.s.Dgain [JOINT_2]D
setp pid.s.bias [JOINT_2]BIAS
setp pid.s.FF0 [JOINT_2]FF0
setp pid.s.FF1 [JOINT_2]FF1
setp pid.s.FF2 [JOINT_2]FF2
setp pid.s.deadband [JOINT_2]DEADBAND
setp pid.s.maxoutput [JOINT_2]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.012700
net s-index-enable <=> pid.s.index-enable
net s-enable => pid.s.enable
net s-pos-cmd => pid.s.command
net s-pos-fb => pid.s.feedback
net s-output <= pid.s.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.02.dirsetup 31000
setp [HMOT](CARD0).stepgen.02.dirhold 16000
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 s-pos-cmd joint.2.motor-pos-cmd
net s-pos-fb joint.2.motor-pos-fb
#net s-vel-cmd <= joint.2.vel-cmd
#net s-output <= s-pos-cmd
# net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
# net s-pos-fb => joint.2.motor-pos-fb
net s-enable <= joint.2.amp-enable-out
net s-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net s-home-sw => joint.2.home-sw-in
net s-neg-limit => joint.2.neg-lim-sw-in
net s-pos-limit => joint.2.pos-lim-sw-in
#******************************
#connections de signaux divers
#******************************
# ---signaux HALUI---
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-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.1.is-homed
net s-is-homed halui.joint.2.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
# ---signaux d'arrosage---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---signal de sonde---
net probe-in => motion.probe-input
# ---signaux contrôle mouvement---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---signaux entrée / sortie numérique---
# ---signaux d'A/U---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---signaux changeur manuel d'outil---
net tool-change iocontrol.0.tool-change => toolchanger.toolchange
net tool-changed iocontrol.0.tool-changed <= toolchanger.toolchanged
net tool-number iocontrol.0.tool-prep-number => toolchanger.toolnumber
net tool-oldnumber iocontrol.0.tool-number => toolchanger.currenttoolnumber
net s-pos-cmd toolchanger.position-cmd => [HMOT](CARD0).joint.2.motor-pos-cmd
#net toolchanger-stepgen-fb <= [HMOT](CARD0).joint.2.motor-pos-cmd
net s-is-homed halui.joint.2.is-homed => toolchanger.ishomed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Any clue on how to achieve this? cheers
Please Log in or Create an account to join the conversation.
29 Oct 2021 16:59 #224661
by PCW
Replied by PCW on topic issue linking stepper to tool changer coommands
1.
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd is correct,
position control is done by the PID
2. You would link the toolchanger position output to s-pos-cmd. like this
net s-pos-cmd toolchanger.position-cmd
3. You have removed the stepgen feedback which is required:
# net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
4. You have disconnected the velocity command to the stepgen, you need:
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
5. You have various connectons to joint2, but the tool changer is not a joint
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd is correct,
position control is done by the PID
2. You would link the toolchanger position output to s-pos-cmd. like this
net s-pos-cmd toolchanger.position-cmd
3. You have removed the stepgen feedback which is required:
# net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
4. You have disconnected the velocity command to the stepgen, you need:
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
5. You have various connectons to joint2, but the tool changer is not a joint
Please Log in or Create an account to join the conversation.
30 Oct 2021 11:03 - 30 Oct 2021 12:44 #224713
by PaulQUE
Replied by PaulQUE on topic issue linking stepper to tool changer coommands
Thank you very much, this did the trick, the tool change component works as expected, I noticed the motor oscillates a lot at the end of each move, I tried messing with The P value, but it only affected the speed, not the oscillating, the values are the same as the other axis in the ini file , but it's the only motor having this issue.
# Généré par PNCconf le Wed Oct 20 22:33:22 2021
# Using LinuxCNC version: 2.8
# Si vous modifiez ce fichier, il sera
# écrasé quand vous relancerez PNCconf
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=0xxxxx"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.z,pid.s
loadrt toolchanger
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.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf [HMOT](CARD0).write servo-thread
addf toolchanger servo-thread
# external output signals
setp hm2_7i96.0.encoder.00.counter-mode TRUE
setp hm2_7i96.0.encoder.00.scale 100
setp hm2_7i96.0.encoder.00.filter TRUE
# external input signals
#*******************
# 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.012700
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 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 Z JOINT 1
#*******************
setp pid.z.Pgain [JOINT_1]P
setp pid.z.Igain [JOINT_1]I
setp pid.z.Dgain [JOINT_1]D
setp pid.z.bias [JOINT_1]BIAS
setp pid.z.FF0 [JOINT_1]FF0
setp pid.z.FF1 [JOINT_1]FF1
setp pid.z.FF2 [JOINT_1]FF2
setp pid.z.deadband [JOINT_1]DEADBAND
setp pid.z.maxoutput [JOINT_1]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.012700
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.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 z-pos-cmd <= joint.1.motor-pos-cmd
net z-vel-cmd <= joint.1.vel-cmd
net z-output <= [HMOT](CARD0).stepgen.01.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net z-pos-fb => joint.1.motor-pos-fb
net z-enable <= joint.1.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.1.home-sw-in
net z-neg-limit => joint.1.neg-lim-sw-in
net z-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS S ATC
#*******************
setp pid.s.Pgain [AXIS_2]P
setp pid.s.Igain [AXIS_2]I
setp pid.s.Dgain [AXIS_2]D
setp pid.s.bias [AXIS_2]BIAS
setp pid.s.FF0 [AXIS_2]FF0
setp pid.s.FF1 [AXIS_2]FF1
setp pid.s.FF2 [AXIS_2]FF2
setp pid.s.deadband [AXIS_2]DEADBAND
setp pid.s.maxoutput [AXIS_2]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.012700
net s-index-enable <=> pid.s.index-enable
net s-enable => pid.s.enable
net s-pos-cmd => pid.s.command
net s-pos-fb => pid.s.feedback
net s-output <= pid.s.output
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.02.dirsetup 31000
setp [HMOT](CARD0).stepgen.02.dirhold 16000
setp [HMOT](CARD0).stepgen.02.steplen [AXIS_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [AXIS_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [AXIS_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 [AXIS_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [AXIS_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
#net s-pos-cmd joint.2.motor-pos-cmd
net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
#net s-vel-cmd <= joint.2.vel-cmd
#net s-output <= s-pos-cmd
# net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
# net s-pos-fb => joint.2.motor-pos-fb
net s-enable <= joint.2.amp-enable-out
net s-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net s-home-sw => joint.2.home-sw-in
net s-neg-limit => joint.2.neg-lim-sw-in
net s-pos-limit => joint.2.pos-lim-sw-in
#******************************
#connections de signaux divers
#******************************
# ---signaux HALUI---
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-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.1.is-homed
net s-is-homed halui.joint.2.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
# ---signaux d'arrosage---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---signal de sonde---
net probe-in => motion.probe-input
# ---signaux contrôle mouvement---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---signaux entrée / sortie numérique---
# ---signaux d'A/U---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---signaux changeur manuel d'outil--
net tool-change iocontrol.0.tool-change => toolchanger.toolchange
net tool-changed iocontrol.0.tool-changed <= toolchanger.toolchanged
net tool-number iocontrol.0.tool-prep-number => toolchanger.toolnumber
net tool-oldnumber iocontrol.0.tool-number => toolchanger.currenttoolnumber
net s-pos-cmd toolchanger.position-cmd
# net s-pos-fb toolchanger-stepgen-fb
net s-is-homed halui.joint.2.is-homed => toolchanger.ishomed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
and here's the ini
# Généré par PNCconf le Thu Oct 21 12:25:00 2021
# Using LinuxCNC version: 2.8
# Si vous modifiez ce fichier, il sera
# écrasé quand vous relancerez PNCconf
[EMC]
MACHINE = EMCO_C5_PC
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = gmoccapy
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/paul/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
LATHE = 1
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 6.000000
MAX_LINEAR_VELOCITY = 900
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 100
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xz
[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
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
TOLERANCE_MM = 0.0003
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
CARD0=hm2_7i96.0
[HAL]
HALUI = halui
HALFILE = EMCO_C5_PC.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XZA
[TRAJ]
COORDINATES = XZA
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.42
MAX_LINEAR_VELOCITY = 14.17
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
MIN_LIMIT = -200
MAX_LIMIT = 200.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 17.71
STEPGEN_MAXACCEL = 125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 3000
STEPSPACE = 1000
STEP_SCALE = 72.50
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_OFFSET = 0.0
#******************************************
#******************************************
[AXIS_Z]
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
MIN_LIMIT = -500
MAX_LIMIT = 500
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 17.71
STEPGEN_MAXACCEL = 125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 3000
STEPSPACE = 1000
STEP_SCALE = 72.5
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_OFFSET = 0.0
#******************************************
[AXIS_2]
MAX_VELOCITY = 100
MAX_ACCELERATION = 100.0
MIN_LIMIT = -99999
MAX_LIMIT = 99999
STEP_SCALE = 34
TYPE = ANGULAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 0.25
MAX_VELOCITY = 100
MAX_ACCELERATION = 100.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 80
STEPGEN_MAXACCEL = 125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 3000
STEPSPACE = 1000
STEP_SCALE = 34
MIN_LIMIT = -99999
MAX_LIMIT = 99999
HOME_OFFSET = 0.0
#******************************************
# Généré par PNCconf le Wed Oct 20 22:33:22 2021
# Using LinuxCNC version: 2.8
# Si vous modifiez ce fichier, il sera
# écrasé quand vous relancerez PNCconf
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=0xxxxx"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.z,pid.s
loadrt toolchanger
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.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf [HMOT](CARD0).write servo-thread
addf toolchanger servo-thread
# external output signals
setp hm2_7i96.0.encoder.00.counter-mode TRUE
setp hm2_7i96.0.encoder.00.scale 100
setp hm2_7i96.0.encoder.00.filter TRUE
# external input signals
#*******************
# 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.012700
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 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 Z JOINT 1
#*******************
setp pid.z.Pgain [JOINT_1]P
setp pid.z.Igain [JOINT_1]I
setp pid.z.Dgain [JOINT_1]D
setp pid.z.bias [JOINT_1]BIAS
setp pid.z.FF0 [JOINT_1]FF0
setp pid.z.FF1 [JOINT_1]FF1
setp pid.z.FF2 [JOINT_1]FF2
setp pid.z.deadband [JOINT_1]DEADBAND
setp pid.z.maxoutput [JOINT_1]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.012700
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.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 z-pos-cmd <= joint.1.motor-pos-cmd
net z-vel-cmd <= joint.1.vel-cmd
net z-output <= [HMOT](CARD0).stepgen.01.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net z-pos-fb => joint.1.motor-pos-fb
net z-enable <= joint.1.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.1.home-sw-in
net z-neg-limit => joint.1.neg-lim-sw-in
net z-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS S ATC
#*******************
setp pid.s.Pgain [AXIS_2]P
setp pid.s.Igain [AXIS_2]I
setp pid.s.Dgain [AXIS_2]D
setp pid.s.bias [AXIS_2]BIAS
setp pid.s.FF0 [AXIS_2]FF0
setp pid.s.FF1 [AXIS_2]FF1
setp pid.s.FF2 [AXIS_2]FF2
setp pid.s.deadband [AXIS_2]DEADBAND
setp pid.s.maxoutput [AXIS_2]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.012700
net s-index-enable <=> pid.s.index-enable
net s-enable => pid.s.enable
net s-pos-cmd => pid.s.command
net s-pos-fb => pid.s.feedback
net s-output <= pid.s.output
net s-output <= [HMOT](CARD0).stepgen.02.velocity-cmd
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.02.dirsetup 31000
setp [HMOT](CARD0).stepgen.02.dirhold 16000
setp [HMOT](CARD0).stepgen.02.steplen [AXIS_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [AXIS_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [AXIS_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 [AXIS_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [AXIS_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
#net s-pos-cmd joint.2.motor-pos-cmd
net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
#net s-vel-cmd <= joint.2.vel-cmd
#net s-output <= s-pos-cmd
# net s-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
# net s-pos-fb => joint.2.motor-pos-fb
net s-enable <= joint.2.amp-enable-out
net s-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net s-home-sw => joint.2.home-sw-in
net s-neg-limit => joint.2.neg-lim-sw-in
net s-pos-limit => joint.2.pos-lim-sw-in
#******************************
#connections de signaux divers
#******************************
# ---signaux HALUI---
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-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.1.is-homed
net s-is-homed halui.joint.2.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
# ---signaux d'arrosage---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---signal de sonde---
net probe-in => motion.probe-input
# ---signaux contrôle mouvement---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---signaux entrée / sortie numérique---
# ---signaux d'A/U---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---signaux changeur manuel d'outil--
net tool-change iocontrol.0.tool-change => toolchanger.toolchange
net tool-changed iocontrol.0.tool-changed <= toolchanger.toolchanged
net tool-number iocontrol.0.tool-prep-number => toolchanger.toolnumber
net tool-oldnumber iocontrol.0.tool-number => toolchanger.currenttoolnumber
net s-pos-cmd toolchanger.position-cmd
# net s-pos-fb toolchanger-stepgen-fb
net s-is-homed halui.joint.2.is-homed => toolchanger.ishomed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
and here's the ini
# Généré par PNCconf le Thu Oct 21 12:25:00 2021
# Using LinuxCNC version: 2.8
# Si vous modifiez ce fichier, il sera
# écrasé quand vous relancerez PNCconf
[EMC]
MACHINE = EMCO_C5_PC
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = gmoccapy
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/paul/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
LATHE = 1
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 6.000000
MAX_LINEAR_VELOCITY = 900
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 100
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xz
[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
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
TOLERANCE_MM = 0.0003
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
CARD0=hm2_7i96.0
[HAL]
HALUI = halui
HALFILE = EMCO_C5_PC.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XZA
[TRAJ]
COORDINATES = XZA
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.42
MAX_LINEAR_VELOCITY = 14.17
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
MIN_LIMIT = -200
MAX_LIMIT = 200.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 17.71
STEPGEN_MAXACCEL = 125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 3000
STEPSPACE = 1000
STEP_SCALE = 72.50
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_OFFSET = 0.0
#******************************************
#******************************************
[AXIS_Z]
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
MIN_LIMIT = -500
MAX_LIMIT = 500
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 850
MAX_ACCELERATION = 100.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 17.71
STEPGEN_MAXACCEL = 125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 3000
STEPSPACE = 1000
STEP_SCALE = 72.5
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_OFFSET = 0.0
#******************************************
[AXIS_2]
MAX_VELOCITY = 100
MAX_ACCELERATION = 100.0
MIN_LIMIT = -99999
MAX_LIMIT = 99999
STEP_SCALE = 34
TYPE = ANGULAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 0.25
MAX_VELOCITY = 100
MAX_ACCELERATION = 100.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 80
STEPGEN_MAXACCEL = 125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 3000
STEPSPACE = 1000
STEP_SCALE = 34
MIN_LIMIT = -99999
MAX_LIMIT = 99999
HOME_OFFSET = 0.0
#******************************************
Last edit: 30 Oct 2021 12:44 by PaulQUE.
Please Log in or Create an account to join the conversation.
Time to create page: 0.083 seconds