stepper motor oscillating
- PaulQUE
- Offline
- Senior Member
Less
More
- Posts: 53
- Thank you received: 1
08 Nov 2021 18:03 #225705
by PaulQUE
stepper motor oscillating was created by PaulQUE
Hello, once again I am struggling with my ATC, the motor, which is setup as an angular axis, oscillates after each move, and never stops oscillating after a tool change. Looking at the Halmeter, when oscillating, pos-cmd is still but pos-fb follows the stepper's movement. I have looked at answers provided for similar issues, but none worked, my other 2 linear axis work fine. Any Idea?
thanks once again,
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
setp hm2_7i96.0.dpll.01.timer-us -100
setp hm2_7i96.0.stepgen.timer-number 1
# 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 [AXIS_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [AXIS_2]DIRHOLD
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
thanks once again,
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
setp hm2_7i96.0.dpll.01.timer-us -100
setp hm2_7i96.0.stepgen.timer-number 1
# 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 [AXIS_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [AXIS_2]DIRHOLD
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
Please Log in or Create an account to join the conversation.
- PCW
- Away
- Moderator
Less
More
- Posts: 17973
- Thank you received: 4830
08 Nov 2021 18:43 - 08 Nov 2021 18:44 #225707
by PCW
Replied by PCW on topic stepper motor oscillating
What kind of command is given to the stepgen position?
I dont think the stepgen deals well with instantaeous jumps in position inputs
(the joint velocity and acceleration limits don't do anything since you are not using joint2)
This may require inserting a limit2 component between the toolchangers
commanded position (which I would guess make large jumps between positions)
and the position command feed to the PID.
You might also try reducing the P term
I dont think the stepgen deals well with instantaeous jumps in position inputs
(the joint velocity and acceleration limits don't do anything since you are not using joint2)
This may require inserting a limit2 component between the toolchangers
commanded position (which I would guess make large jumps between positions)
and the position command feed to the PID.
You might also try reducing the P term
Last edit: 08 Nov 2021 18:44 by PCW.
Please Log in or Create an account to join the conversation.
- PaulQUE
- Offline
- Senior Member
Less
More
- Posts: 53
- Thank you received: 1
09 Nov 2021 11:32 #225804
by PaulQUE
Replied by PaulQUE on topic stepper motor oscillating
thanks for the reply, so velocity and acceleration can not be used even when setup as such? setp [HMOT](CARD0).stepgen.02.maxaccel [AXIS_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [AXIS_2]STEPGEN_MAXVEL
when changing ther value in the ini file, I seem to be able to adjust the speed of the ATC, I must add that I am running it very, very slow
I've tried messing with the P value but it only ever affected the speed of the motor, didn't fix the oscillation, I've read in an other thread that for a stepgen, the P value should be left to 1000 as it's related to the 1ms thread, or am i getting this wrong?
setp [HMOT](CARD0).stepgen.02.maxvel [AXIS_2]STEPGEN_MAXVEL
when changing ther value in the ini file, I seem to be able to adjust the speed of the ATC, I must add that I am running it very, very slow
I've tried messing with the P value but it only ever affected the speed of the motor, didn't fix the oscillation, I've read in an other thread that for a stepgen, the P value should be left to 1000 as it's related to the 1ms thread, or am i getting this wrong?
Please Log in or Create an account to join the conversation.
- PCW
- Away
- Moderator
Less
More
- Posts: 17973
- Thank you received: 4830
09 Nov 2021 14:44 - 09 Nov 2021 14:45 #225832
by PCW
Replied by PCW on topic stepper motor oscillating
The stepgen maxvel and maxaccel values will limit the stepgens
velocity and acceleration, but I expect that the major limitation now
is the PID maxerror number. if you set this to 0, the stepgen limits
should be followed. This might be worth a try, but I expect you will need
to insert a limit 2 component in the tool changers commanded position.
The issue is that the stepgen control loop depends on FF1 (the velocity command)
but this is not valid for stepwise motion
velocity and acceleration, but I expect that the major limitation now
is the PID maxerror number. if you set this to 0, the stepgen limits
should be followed. This might be worth a try, but I expect you will need
to insert a limit 2 component in the tool changers commanded position.
The issue is that the stepgen control loop depends on FF1 (the velocity command)
but this is not valid for stepwise motion
Last edit: 09 Nov 2021 14:45 by PCW.
Please Log in or Create an account to join the conversation.
- PaulQUE
- Offline
- Senior Member
Less
More
- Posts: 53
- Thank you received: 1
09 Nov 2021 15:29 #225844
by PaulQUE
Replied by PaulQUE on topic stepper motor oscillating
I've tried setting pid MAXERROR to 0, it didn't do much, as I understand, limit2 needs a mmiin and max value, what should the max value correspond to?
from the documentation:
limit2.N.in float in is this were I should assign the tool changer pos command ? ( toolcanger.position-cmd in my case)
limit2.N.out float out is this were I should assign the pid poistion feed? ( s-pos-cmd in my case)
limit2.N.load bit in
When TRUE, immediately set out to in, ignoring maxv
limit2.N.min float in (default: -1e20)
limit2.N.max float in (default: 1e20)
limit2.N.maxv float in (default: 1e20) what is the purpose of this parameter?
from the documentation:
limit2.N.in float in is this were I should assign the tool changer pos command ? ( toolcanger.position-cmd in my case)
limit2.N.out float out is this were I should assign the pid poistion feed? ( s-pos-cmd in my case)
limit2.N.load bit in
When TRUE, immediately set out to in, ignoring maxv
limit2.N.min float in (default: -1e20)
limit2.N.max float in (default: 1e20)
limit2.N.maxv float in (default: 1e20) what is the purpose of this parameter?
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23170
- Thank you received: 4860
10 Nov 2021 11:20 #225955
by andypugh
Replied by andypugh on topic stepper motor oscillating
Would it be simpler to run the ATC stepgen in position mode, and just not use the PID?
Please Log in or Create an account to join the conversation.
- PaulQUE
- Offline
- Senior Member
Less
More
- Posts: 53
- Thank you received: 1
10 Nov 2021 12:09 #225969
by PaulQUE
Replied by PaulQUE on topic stepper motor oscillating
Isn't the ATC Stepgen already in position mode? Stepgen.02.control-type is set to 1
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23170
- Thank you received: 4860
10 Nov 2021 12:22 #225973
by andypugh
linuxcnc.org/docs/2.8/html/man/man9/hostmot2.9.html#stepgen
You can try setting it to 0, and connecting the position command directly (ie, leave the PID out of the loop)
Replied by andypugh on topic stepper motor oscillating
Control-type 1 = velocity mode:Isn't the ATC Stepgen already in position mode? Stepgen.02.control-type is set to 1
linuxcnc.org/docs/2.8/html/man/man9/hostmot2.9.html#stepgen
You can try setting it to 0, and connecting the position command directly (ie, leave the PID out of the loop)
Please Log in or Create an account to join the conversation.
- PaulQUE
- Offline
- Senior Member
Less
More
- Posts: 53
- Thank you received: 1
10 Nov 2021 20:12 #226033
by PaulQUE
Replied by PaulQUE on topic stepper motor oscillating
It worked! thanks for the suggestion
Please Log in or Create an account to join the conversation.
- mikeross
- Offline
- Senior Member
Less
More
- Posts: 42
- Thank you received: 3
21 Nov 2021 19:29 #227223
by mikeross
Replied by mikeross on topic stepper motor oscillating
Can you post your working HAL and INI please? I also have an emco compact 5 with tool changer and want to get this working. (tool changer is converted to stepper motor and is oscillating jus tlike your was).
Thanks
Mike
Thanks
Mike
Please Log in or Create an account to join the conversation.
Time to create page: 0.082 seconds