PID problem after new installation
25 Feb 2020 14:21 #158457
by Moglis
PID problem after new installation was created by Moglis
I have made an fresh installation to linuxcnc 2.7.15 on debian wheezy.The old version was the 2.7.14 . After the installation my machine has big following error and i found difficulty with the pid tuning. All the parameters are taken from the old version in which i did not have following errors or problem with the pid configuration. Does anyone know what could be wrong?
Please Log in or Create an account to join the conversation.
25 Feb 2020 14:42 #158460
by PCW
Replied by PCW on topic PID problem after new installation
There was a bugfix in the PID component that can cause this issue.
(the bugfix exposes hal file errors related to the PIDs command derivative pin)
Can you post your hal and ini files?
(the bugfix exposes hal file errors related to the PIDs command derivative pin)
Can you post your hal and ini files?
Please Log in or Create an account to join the conversation.
25 Feb 2020 14:56 #158461
by Moglis
Replied by Moglis on topic PID problem after new installation
# Generated by PNCconf at Tue Feb 25 08:55:44 2020
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=3 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx"
setp hm2_5i25.0.watchdog.timeout_ns 50000000
loadrt hal_parport cfg="0 out"
loadrt pid names=pid.x,pid.y,pid.z,pid.s
addf parport.0.read servo-thread
addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf parport.0.write servo-thread
addf hm2_5i25.0.write servo-thread
########################################################
E-STOP LATCH
loadrt estop_latch
addf estop-latch.0 servo-thread
########################################################
E-STOP SIGNALS
net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-out
net estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-in
net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset
net EstopExt => estop-latch.0.fault-in
########################################################
EXTERNAL E-STOP
net EstopExt <= hm2_5i25.0.7i77.0.0.input-00-not
######################################################
INPUT JOGS
net jog-x-pos <= hm2_5i25.0.7i77.0.0.input-02 # JOG X+
net jog-x-neg <= hm2_5i25.0.7i77.0.0.input-03 # JOG X-
net jog-y-pos <= hm2_5i25.0.7i77.0.0.input-04 # JOG Y+
net jog-y-neg <= hm2_5i25.0.7i77.0.0.input-05 # JOG Y-
net jog-z-pos <= hm2_5i25.0.7i77.0.0.input-06 # JOG Z+
net jog-z-neg <= hm2_5i25.0.7i77.0.0.input-07 # JOG Z-
########################################################
INPUT LIMIT SWITCHES SIGNALS
net min-x <= hm2_5i25.0.7i77.0.0.input-08 # MIN-X
net max-x <= hm2_5i25.0.7i77.0.0.input-09 # MAX-X
net home-x <= hm2_5i25.0.7i77.0.0.input-24 # HOME-X
net min-y <= hm2_5i25.0.7i77.0.0.input-10 # MIN-Y
net max-y <= hm2_5i25.0.7i77.0.0.input-11 # MAX-Y
net home-y <= hm2_5i25.0.7i77.0.0.input-25 # HOME-Y
net min-z <= hm2_5i25.0.7i77.0.0.input-12 # MIN-Z
net max-z <= hm2_5i25.0.7i77.0.0.input-13 # MAX-Z
net home-z <= hm2_5i25.0.7i77.0.0.input-26 # HOME-Z
########################################################
INPUT DRIVE SIGNALS
net DriveReadyX <= hm2_5i25.0.7i77.0.0.input-16 # drive-x ready
net DriveFaultX <= hm2_5i25.0.7i77.0.0.input-17-not # drive-x fault
net DriveReadyY <= hm2_5i25.0.7i77.0.0.input-18 # drive-y ready
net DriveFaultY <= hm2_5i25.0.7i77.0.0.input-19-not # drive-y fault
net DriveReadyZ <= hm2_5i25.0.7i77.0.0.input-20 # drive-z ready
net DriveFaultZ <= hm2_5i25.0.7i77.0.0.input-21-not # drive-z fault
net probe <= hm2_5i25.0.7i77.0.0.input-01 # probe Z signal
net probe-protection <= hm2_5i25.0.7i77.0.0.input-15 # probe Z protection
net probe => motion.probe-input
########################################################
OUTPUT SIGNALS
net ClearFaultX => hm2_5i25.0.7i77.0.0.output-08 # clear X drive faults
net ClearFaultY => hm2_5i25.0.7i77.0.0.output-09 # clear Y drive faults
net ClearFaultZ => hm2_5i25.0.7i77.0.0.output-10 # clear Z drive faults
########################################################
MACHINE-IS-ENABLED
net machine-is-enabled => hm2_5i25.0.7i77.0.0.output-07
net machine-is-enabled => hm2_5i25.0.7i77.0.1.analogena
########################################################
MOTION CONTROL SIGNALS
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
#*******************
# AXIS X
#*******************
setp pid.x.Pgain [AXIS_0]P
setp pid.x.Igain [AXIS_0]I
setp pid.x.Dgain [AXIS_0]D
setp pid.x.bias [AXIS_0]BIAS
setp pid.x.FF0 [AXIS_0]FF0
setp pid.x.FF1 [AXIS_0]FF1
setp pid.x.FF2 [AXIS_0]FF2
setp pid.x.deadband [AXIS_0]DEADBAND
setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT
setp pid.x.error-previous-target true
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-vel-cmd => pid.x.command-deriv
net x-pos-fb => pid.x.feedback
net x-output => pid.x.output
####################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT
net x-output => hm2_5i25.0.7i77.0.1.analogout0
net x-pos-cmd axis.0.motor-pos-cmd
net x-enable axis.0.amp-enable-out
#net x-enable hm2_5i25.0.7i77.0.1.analogena
######################## ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.00.position
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
######################### ---setup home / limit switch signals---
net home-x => axis.0.home-sw-in
net min-x => axis.0.neg-lim-sw-in
net max-x => axis.0.pos-lim-sw-in
#*******************
# AXIS Y
#*******************
setp pid.y.Pgain [AXIS_1]P
setp pid.y.Igain [AXIS_1]I
setp pid.y.Dgain [AXIS_1]D
setp pid.y.bias [AXIS_1]BIAS
setp pid.y.FF0 [AXIS_1]FF0
setp pid.y.FF1 [AXIS_1]FF1
setp pid.y.FF2 [AXIS_1]FF2
setp pid.y.deadband [AXIS_1]DEADBAND
setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.y.error-previous-target true
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
#################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [AXIS_1]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout1-minlim [AXIS_1]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [AXIS_1]OUTPUT_MAX_LIMIT
net y-output => hm2_5i25.0.7i77.0.1.analogout1
net y-pos-cmd axis.1.motor-pos-cmd
net y-enable axis.1.amp-enable-out
##################### ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [AXIS_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.01.position
net y-vel-fb <= hm2_5i25.0.encoder.01.velocity
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
################### ---setup home / limit switch signals---
net home-y => axis.1.home-sw-in
net min-y => axis.1.neg-lim-sw-in
net max-y => axis.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
setp pid.z.Pgain [AXIS_2]P
setp pid.z.Igain [AXIS_2]I
setp pid.z.Dgain [AXIS_2]D
setp pid.z.bias [AXIS_2]BIAS
setp pid.z.FF0 [AXIS_2]FF0
setp pid.z.FF1 [AXIS_2]FF1
setp pid.z.FF2 [AXIS_2]FF2
setp pid.z.deadband [AXIS_2]DEADBAND
setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT
setp pid.z.error-previous-target true
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-vel-cmd => pid.z.command-deriv
net z-pos-fb => pid.z.feedback
net z-output => pid.z.output
###################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_2]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_2]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_2]OUTPUT_MAX_LIMIT
net z-output => hm2_5i25.0.7i77.0.1.analogout2
net z-pos-cmd axis.2.motor-pos-cmd
net z-enable axis.2.amp-enable-out
##################### ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [AXIS_2]ENCODER_SCALE
net z-pos-fb <= hm2_5i25.0.encoder.02.position
net z-vel-fb <= hm2_5i25.0.encoder.02.velocity
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net z-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
##################### ---setup home / limit switch signals---
net home-z => axis.2.home-sw-in
net min-z => axis.2.neg-lim-sw-in
net max-z => axis.2.pos-lim-sw-in
#*******************
# SPINDLE S
#*******************
loadrt scale count=1
addf scale.0 servo-thread
setp scale.0.gain 1
net spindle-speed-scale motion.spindle-speed-out => scale.0.in
net spindle-speed-DAC scale.0.out => hm2_5i25.0.7i77.0.1.analogout5
####################---PID gains
setp pid.s.Pgain [SPINDLE_9]P
setp pid.s.Igain [SPINDLE_9]I
setp pid.s.Dgain [SPINDLE_9]D
setp pid.s.bias [SPINDLE_9]BIAS
setp pid.s.FF0 [SPINDLE_9]FF0
setp pid.s.FF1 [SPINDLE_9]FF1
setp pid.s.FF2 [SPINDLE_9]FF2
setp pid.s.deadband [SPINDLE_9]DEADBAND
setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT
setp pid.s.error-previous-target true
net spindle-index-enable <=> pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output
#################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout5-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout5-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout5-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
#net spindle-output => hm2_5i25.0.7i77.0.1.analogout5
net spindle-enable => hm2_5i25.0.7i77.0.1.spinena
################### ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
#net spindle-vel-cmd-rpm <= motion.spindle-speed-out
net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-enable <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
#net spindle-ccw <= motion.spindle-reverse
#net spindle-brake <= motion.spindle-brake
#net spindle-revs => motion.spindle-revs
net spindle-at-speed => motion.spindle-at-speed
net spindle-vel-fb-rps => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
############################################################---Setup spindle at speed signals---
sets spindle-at-speed true
############################################################# ---HALUI signals---
net joint-select-a halui.joint.0.select
net x-is-homed halui.joint.0.is-homed
net jog-x-pos halui.jog.0.plus
net jog-x-neg halui.jog.0.minus
net jog-x-analog halui.jog.0.analog
net joint-select-b halui.joint.1.select
net y-is-homed halui.joint.1.is-homed
net jog-y-pos halui.jog.1.plus
net jog-y-neg halui.jog.1.minus
net jog-y-analog halui.jog.1.analog
net joint-select-c halui.joint.2.select
net z-is-homed halui.joint.2.is-homed
net jog-z-pos halui.jog.2.plus
net jog-z-neg halui.jog.2.minus
net jog-z-analog halui.jog.2.analog
net jog-selected-pos halui.jog.selected.plus
net jog-selected-neg halui.jog.selected.minus
net spindle-manual-cw halui.spindle.forward
net spindle-manual-ccw halui.spindle.reverse
net spindle-manual-stop halui.spindle.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.jog-speed
net MDI-mode halui.mode.is-mdi
############################################################## ---coolant signals---
#net coolant-mist <= iocontrol.0.coolant-mist
#net coolant-flood <= iocontrol.0.coolant-flood
# ---digital in / out signals---
# ---estop signals---
#net estop-out <= iocontrol.0.user-enable-out
#net estop-ext => iocontrol.0.emc-enable-in
############################################################ ---manual tool change signals---
loadusr -W hal_manualtoolchange
net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=3 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx"
setp hm2_5i25.0.watchdog.timeout_ns 50000000
loadrt hal_parport cfg="0 out"
loadrt pid names=pid.x,pid.y,pid.z,pid.s
addf parport.0.read servo-thread
addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf parport.0.write servo-thread
addf hm2_5i25.0.write servo-thread
########################################################
E-STOP LATCH
loadrt estop_latch
addf estop-latch.0 servo-thread
########################################################
E-STOP SIGNALS
net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-out
net estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-in
net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset
net EstopExt => estop-latch.0.fault-in
########################################################
EXTERNAL E-STOP
net EstopExt <= hm2_5i25.0.7i77.0.0.input-00-not
######################################################
INPUT JOGS
net jog-x-pos <= hm2_5i25.0.7i77.0.0.input-02 # JOG X+
net jog-x-neg <= hm2_5i25.0.7i77.0.0.input-03 # JOG X-
net jog-y-pos <= hm2_5i25.0.7i77.0.0.input-04 # JOG Y+
net jog-y-neg <= hm2_5i25.0.7i77.0.0.input-05 # JOG Y-
net jog-z-pos <= hm2_5i25.0.7i77.0.0.input-06 # JOG Z+
net jog-z-neg <= hm2_5i25.0.7i77.0.0.input-07 # JOG Z-
########################################################
INPUT LIMIT SWITCHES SIGNALS
net min-x <= hm2_5i25.0.7i77.0.0.input-08 # MIN-X
net max-x <= hm2_5i25.0.7i77.0.0.input-09 # MAX-X
net home-x <= hm2_5i25.0.7i77.0.0.input-24 # HOME-X
net min-y <= hm2_5i25.0.7i77.0.0.input-10 # MIN-Y
net max-y <= hm2_5i25.0.7i77.0.0.input-11 # MAX-Y
net home-y <= hm2_5i25.0.7i77.0.0.input-25 # HOME-Y
net min-z <= hm2_5i25.0.7i77.0.0.input-12 # MIN-Z
net max-z <= hm2_5i25.0.7i77.0.0.input-13 # MAX-Z
net home-z <= hm2_5i25.0.7i77.0.0.input-26 # HOME-Z
########################################################
INPUT DRIVE SIGNALS
net DriveReadyX <= hm2_5i25.0.7i77.0.0.input-16 # drive-x ready
net DriveFaultX <= hm2_5i25.0.7i77.0.0.input-17-not # drive-x fault
net DriveReadyY <= hm2_5i25.0.7i77.0.0.input-18 # drive-y ready
net DriveFaultY <= hm2_5i25.0.7i77.0.0.input-19-not # drive-y fault
net DriveReadyZ <= hm2_5i25.0.7i77.0.0.input-20 # drive-z ready
net DriveFaultZ <= hm2_5i25.0.7i77.0.0.input-21-not # drive-z fault
net probe <= hm2_5i25.0.7i77.0.0.input-01 # probe Z signal
net probe-protection <= hm2_5i25.0.7i77.0.0.input-15 # probe Z protection
net probe => motion.probe-input
########################################################
OUTPUT SIGNALS
net ClearFaultX => hm2_5i25.0.7i77.0.0.output-08 # clear X drive faults
net ClearFaultY => hm2_5i25.0.7i77.0.0.output-09 # clear Y drive faults
net ClearFaultZ => hm2_5i25.0.7i77.0.0.output-10 # clear Z drive faults
########################################################
MACHINE-IS-ENABLED
net machine-is-enabled => hm2_5i25.0.7i77.0.0.output-07
net machine-is-enabled => hm2_5i25.0.7i77.0.1.analogena
########################################################
MOTION CONTROL SIGNALS
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
#*******************
# AXIS X
#*******************
setp pid.x.Pgain [AXIS_0]P
setp pid.x.Igain [AXIS_0]I
setp pid.x.Dgain [AXIS_0]D
setp pid.x.bias [AXIS_0]BIAS
setp pid.x.FF0 [AXIS_0]FF0
setp pid.x.FF1 [AXIS_0]FF1
setp pid.x.FF2 [AXIS_0]FF2
setp pid.x.deadband [AXIS_0]DEADBAND
setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT
setp pid.x.error-previous-target true
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-vel-cmd => pid.x.command-deriv
net x-pos-fb => pid.x.feedback
net x-output => pid.x.output
####################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT
net x-output => hm2_5i25.0.7i77.0.1.analogout0
net x-pos-cmd axis.0.motor-pos-cmd
net x-enable axis.0.amp-enable-out
#net x-enable hm2_5i25.0.7i77.0.1.analogena
######################## ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [AXIS_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.00.position
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-pos-fb => axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
######################### ---setup home / limit switch signals---
net home-x => axis.0.home-sw-in
net min-x => axis.0.neg-lim-sw-in
net max-x => axis.0.pos-lim-sw-in
#*******************
# AXIS Y
#*******************
setp pid.y.Pgain [AXIS_1]P
setp pid.y.Igain [AXIS_1]I
setp pid.y.Dgain [AXIS_1]D
setp pid.y.bias [AXIS_1]BIAS
setp pid.y.FF0 [AXIS_1]FF0
setp pid.y.FF1 [AXIS_1]FF1
setp pid.y.FF2 [AXIS_1]FF2
setp pid.y.deadband [AXIS_1]DEADBAND
setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.y.error-previous-target true
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-vel-cmd => pid.y.command-deriv
net y-pos-fb => pid.y.feedback
net y-output => pid.y.output
#################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout1-scalemax [AXIS_1]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout1-minlim [AXIS_1]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout1-maxlim [AXIS_1]OUTPUT_MAX_LIMIT
net y-output => hm2_5i25.0.7i77.0.1.analogout1
net y-pos-cmd axis.1.motor-pos-cmd
net y-enable axis.1.amp-enable-out
##################### ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [AXIS_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.01.position
net y-vel-fb <= hm2_5i25.0.encoder.01.velocity
net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
################### ---setup home / limit switch signals---
net home-y => axis.1.home-sw-in
net min-y => axis.1.neg-lim-sw-in
net max-y => axis.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
setp pid.z.Pgain [AXIS_2]P
setp pid.z.Igain [AXIS_2]I
setp pid.z.Dgain [AXIS_2]D
setp pid.z.bias [AXIS_2]BIAS
setp pid.z.FF0 [AXIS_2]FF0
setp pid.z.FF1 [AXIS_2]FF1
setp pid.z.FF2 [AXIS_2]FF2
setp pid.z.deadband [AXIS_2]DEADBAND
setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT
setp pid.z.error-previous-target true
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-vel-cmd => pid.z.command-deriv
net z-pos-fb => pid.z.feedback
net z-output => pid.z.output
###################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout2-scalemax [AXIS_2]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout2-minlim [AXIS_2]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout2-maxlim [AXIS_2]OUTPUT_MAX_LIMIT
net z-output => hm2_5i25.0.7i77.0.1.analogout2
net z-pos-cmd axis.2.motor-pos-cmd
net z-enable axis.2.amp-enable-out
##################### ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.02.counter-mode 0
setp hm2_5i25.0.encoder.02.filter 1
setp hm2_5i25.0.encoder.02.index-invert 0
setp hm2_5i25.0.encoder.02.index-mask 0
setp hm2_5i25.0.encoder.02.index-mask-invert 0
setp hm2_5i25.0.encoder.02.scale [AXIS_2]ENCODER_SCALE
net z-pos-fb <= hm2_5i25.0.encoder.02.position
net z-vel-fb <= hm2_5i25.0.encoder.02.velocity
net z-pos-fb => axis.2.motor-pos-fb
net z-index-enable axis.2.index-enable <=> hm2_5i25.0.encoder.02.index-enable
net z-pos-rawcounts <= hm2_5i25.0.encoder.02.rawcounts
##################### ---setup home / limit switch signals---
net home-z => axis.2.home-sw-in
net min-z => axis.2.neg-lim-sw-in
net max-z => axis.2.pos-lim-sw-in
#*******************
# SPINDLE S
#*******************
loadrt scale count=1
addf scale.0 servo-thread
setp scale.0.gain 1
net spindle-speed-scale motion.spindle-speed-out => scale.0.in
net spindle-speed-DAC scale.0.out => hm2_5i25.0.7i77.0.1.analogout5
####################---PID gains
setp pid.s.Pgain [SPINDLE_9]P
setp pid.s.Igain [SPINDLE_9]I
setp pid.s.Dgain [SPINDLE_9]D
setp pid.s.bias [SPINDLE_9]BIAS
setp pid.s.FF0 [SPINDLE_9]FF0
setp pid.s.FF1 [SPINDLE_9]FF1
setp pid.s.FF2 [SPINDLE_9]FF2
setp pid.s.deadband [SPINDLE_9]DEADBAND
setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT
setp pid.s.error-previous-target true
net spindle-index-enable <=> pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output
#################### ---PWM Generator signals/setup---
setp hm2_5i25.0.7i77.0.1.analogout5-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout5-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout5-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
#net spindle-output => hm2_5i25.0.7i77.0.1.analogout5
net spindle-enable => hm2_5i25.0.7i77.0.1.spinena
################### ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
#net spindle-vel-cmd-rpm <= motion.spindle-speed-out
net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-enable <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
#net spindle-ccw <= motion.spindle-reverse
#net spindle-brake <= motion.spindle-brake
#net spindle-revs => motion.spindle-revs
net spindle-at-speed => motion.spindle-at-speed
net spindle-vel-fb-rps => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
############################################################---Setup spindle at speed signals---
sets spindle-at-speed true
############################################################# ---HALUI signals---
net joint-select-a halui.joint.0.select
net x-is-homed halui.joint.0.is-homed
net jog-x-pos halui.jog.0.plus
net jog-x-neg halui.jog.0.minus
net jog-x-analog halui.jog.0.analog
net joint-select-b halui.joint.1.select
net y-is-homed halui.joint.1.is-homed
net jog-y-pos halui.jog.1.plus
net jog-y-neg halui.jog.1.minus
net jog-y-analog halui.jog.1.analog
net joint-select-c halui.joint.2.select
net z-is-homed halui.joint.2.is-homed
net jog-z-pos halui.jog.2.plus
net jog-z-neg halui.jog.2.minus
net jog-z-analog halui.jog.2.analog
net jog-selected-pos halui.jog.selected.plus
net jog-selected-neg halui.jog.selected.minus
net spindle-manual-cw halui.spindle.forward
net spindle-manual-ccw halui.spindle.reverse
net spindle-manual-stop halui.spindle.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.jog-speed
net MDI-mode halui.mode.is-mdi
############################################################## ---coolant signals---
#net coolant-mist <= iocontrol.0.coolant-mist
#net coolant-flood <= iocontrol.0.coolant-flood
# ---digital in / out signals---
# ---estop signals---
#net estop-out <= iocontrol.0.user-enable-out
#net estop-ext => iocontrol.0.emc-enable-in
############################################################ ---manual tool change signals---
loadusr -W hal_manualtoolchange
net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Please Log in or Create an account to join the conversation.
25 Feb 2020 14:57 #158462
by Moglis
Replied by Moglis on topic PID problem after new installation
# Generated by PNCconf at Tue Feb 25 08:55:44 2020
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = AEGLE_machine
DEBUG = 0
[DISPLAY]
DISPLAY = gmoccapy
EDITOR = gedit
GEOMETRY = xyz
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/cnc/linuxcnc/nc_files
#PREFERENCE_FILE_PATH = gmoccapy/preferences
GRIDS =1mm 5mm 10mm 20mm 50mm 100mm
INCREMENTS = 20mm 10mm 5mm 1mm .5mm .1mm .05mm .01mm
DEFAULT_LINEAR_VELOCITY = 100
MAX_LINEAR_VELOCITY = 100
MIN_LINEAR_VELOCITY = 1
#DEFAULT_ANGULAR_VELOCITY = 12.000000
#MAX_ANGULAR_VELOCITY = 180.000000
#MIN_ANGULAR_VELOCITY = 1.666667
[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
FEATURES = 12
ON_ABORT_COMMAND =O <on_abort> call
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=change epilog=change_epilog
SUBROUTINE_PATH=/home/cnc/linuxcnc/configs/AEGLE_machine/macros
[TOOLSENSOR]
X=0
Y=0
Z=-10
MAXPROBE=-15
[CHANGE_POSITION]
X=0
Y=0
Z=0
[PYTHON]
PATH_PREPEND=python
TOPLEVEL=python/toplevel.py
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000
[HOSTMOT2]
# **** This is for info only ****
# DRIVER0=hm2_pci
# BOARD0=5i25
[HAL]
HALUI = halui
HALFILE = AEGLE_machine.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[TRAJ]
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 100
MAX_VELOCITY = 100
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
TOOL_CHANGE_QUILL_UP = 0
#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
FERROR = 10
MIN_FERROR = 5
MAX_VELOCITY = 208.333333333
MAX_ACCELERATION = 800.0
P = 155
I = 1.12
D = 0.35
FF0 = 0
FF1 = 1.32
FF2 = 0.002
BIAS = 0
DEADBAND = 0.000015
MAX_OUTPUT = 208.3333
ENCODER_SCALE = 2000
OUTPUT_SCALE = 208.3333
OUTPUT_MIN_LIMIT = -208.3333
OUTPUT_MAX_LIMIT = 208.3333
MIN_LIMIT = -1386.0
MAX_LIMIT = 3.0
HOME = 0.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 50
HOME_LATCH_VEL = 0.2
#HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
#********************
# Axis Y
#********************
[AXIS_1]
TYPE = LINEAR
FERROR = 10
MIN_FERROR = 5
MAX_VELOCITY = 208.3333
MAX_ACCELERATION = 800.0
P = 248
I = 1.08
D = 0.06
FF0 = 0
FF1 = 0.97
FF2 = 0.0033
BIAS = 0
DEADBAND = 0.000015
MAX_OUTPUT = 208.3333
ENCODER_SCALE = 2000
OUTPUT_SCALE = 208.3333
OUTPUT_MIN_LIMIT = -208.3333
OUTPUT_MAX_LIMIT = 208.3333
MIN_LIMIT = -1065.0
MAX_LIMIT = 25.0
HOME = 0.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 50
HOME_LATCH_VEL = 0.2
#HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
FERROR = 10
MIN_FERROR = 5
MAX_VELOCITY = 333.333333333
MAX_ACCELERATION = 1000
P = 110
I = 0.19
D = 0.0056
FF0 = 0
FF1 = 0.98
FF2 = 0.0052
BIAS = 0
DEADBAND = 0.000015
MAX_OUTPUT = 333.3333
ENCODER_SCALE = 1000
OUTPUT_SCALE = 333.3333
OUTPUT_MIN_LIMIT = -333.3333
OUTPUT_MAX_LIMIT = 333.3333
MIN_LIMIT = -165.0
MAX_LIMIT = 10.0
HOME = 0.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 15
HOME_LATCH_VEL = 0.2
#HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
#********************
# Spindle
#********************
[SPINDLE_9]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
OUTPUT_SCALE = 24000
OUTPUT_MIN_LIMIT = 0
OUTPUT_MAX_LIMIT = 24000
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = AEGLE_machine
DEBUG = 0
[DISPLAY]
DISPLAY = gmoccapy
EDITOR = gedit
GEOMETRY = xyz
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/cnc/linuxcnc/nc_files
#PREFERENCE_FILE_PATH = gmoccapy/preferences
GRIDS =1mm 5mm 10mm 20mm 50mm 100mm
INCREMENTS = 20mm 10mm 5mm 1mm .5mm .1mm .05mm .01mm
DEFAULT_LINEAR_VELOCITY = 100
MAX_LINEAR_VELOCITY = 100
MIN_LINEAR_VELOCITY = 1
#DEFAULT_ANGULAR_VELOCITY = 12.000000
#MAX_ANGULAR_VELOCITY = 180.000000
#MIN_ANGULAR_VELOCITY = 1.666667
[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
FEATURES = 12
ON_ABORT_COMMAND =O <on_abort> call
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=change epilog=change_epilog
SUBROUTINE_PATH=/home/cnc/linuxcnc/configs/AEGLE_machine/macros
[TOOLSENSOR]
X=0
Y=0
Z=-10
MAXPROBE=-15
[CHANGE_POSITION]
X=0
Y=0
Z=0
[PYTHON]
PATH_PREPEND=python
TOPLEVEL=python/toplevel.py
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000
[HOSTMOT2]
# **** This is for info only ****
# DRIVER0=hm2_pci
# BOARD0=5i25
[HAL]
HALUI = halui
HALFILE = AEGLE_machine.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
[HALUI]
[TRAJ]
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 100
MAX_VELOCITY = 100
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
TOOL_CHANGE_QUILL_UP = 0
#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
FERROR = 10
MIN_FERROR = 5
MAX_VELOCITY = 208.333333333
MAX_ACCELERATION = 800.0
P = 155
I = 1.12
D = 0.35
FF0 = 0
FF1 = 1.32
FF2 = 0.002
BIAS = 0
DEADBAND = 0.000015
MAX_OUTPUT = 208.3333
ENCODER_SCALE = 2000
OUTPUT_SCALE = 208.3333
OUTPUT_MIN_LIMIT = -208.3333
OUTPUT_MAX_LIMIT = 208.3333
MIN_LIMIT = -1386.0
MAX_LIMIT = 3.0
HOME = 0.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 50
HOME_LATCH_VEL = 0.2
#HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
#********************
# Axis Y
#********************
[AXIS_1]
TYPE = LINEAR
FERROR = 10
MIN_FERROR = 5
MAX_VELOCITY = 208.3333
MAX_ACCELERATION = 800.0
P = 248
I = 1.08
D = 0.06
FF0 = 0
FF1 = 0.97
FF2 = 0.0033
BIAS = 0
DEADBAND = 0.000015
MAX_OUTPUT = 208.3333
ENCODER_SCALE = 2000
OUTPUT_SCALE = 208.3333
OUTPUT_MIN_LIMIT = -208.3333
OUTPUT_MAX_LIMIT = 208.3333
MIN_LIMIT = -1065.0
MAX_LIMIT = 25.0
HOME = 0.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 50
HOME_LATCH_VEL = 0.2
#HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
FERROR = 10
MIN_FERROR = 5
MAX_VELOCITY = 333.333333333
MAX_ACCELERATION = 1000
P = 110
I = 0.19
D = 0.0056
FF0 = 0
FF1 = 0.98
FF2 = 0.0052
BIAS = 0
DEADBAND = 0.000015
MAX_OUTPUT = 333.3333
ENCODER_SCALE = 1000
OUTPUT_SCALE = 333.3333
OUTPUT_MIN_LIMIT = -333.3333
OUTPUT_MAX_LIMIT = 333.3333
MIN_LIMIT = -165.0
MAX_LIMIT = 10.0
HOME = 0.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 15
HOME_LATCH_VEL = 0.2
#HOME_FINAL_VEL = 0.000000
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
#********************
# Spindle
#********************
[SPINDLE_9]
P = 0
I = 0
D = 0
FF0 = 1
FF1 = 0
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
OUTPUT_SCALE = 24000
OUTPUT_MIN_LIMIT = 0
OUTPUT_MAX_LIMIT = 24000
Please Log in or Create an account to join the conversation.
25 Feb 2020 15:15 - 25 Feb 2020 15:15 #158465
by PCW
Replied by PCW on topic PID problem after new installation
delete all lines like:
net N-vel-cmd => pid.N.command-deriv
In your hal file, and you should be OK
net N-vel-cmd => pid.N.command-deriv
In your hal file, and you should be OK
Last edit: 25 Feb 2020 15:15 by PCW.
Please Log in or Create an account to join the conversation.
26 Feb 2020 07:44 #158512
by Moglis
Replied by Moglis on topic PID problem after new installation
Thanks a lot for your quick response. That was the problem
Please Log in or Create an account to join the conversation.
03 Mar 2020 13:30 #159076
by andypugh
Replied by andypugh on topic PID problem after new installation
I am thinking that this was too big a change to put in a minor version revision
Please Log in or Create an account to join the conversation.
- Todd Zuercher
- Offline
- Platinum Member
Less
More
- Posts: 5008
- Thank you received: 1441
03 Mar 2020 15:38 #159082
by Todd Zuercher
Replied by Todd Zuercher on topic PID problem after new installation
I tend to agree. This seemingly minor fix is breaking many previously working PNCConfig generated configs that were made over a number of years which use the PID component (that is most of them).
Please Log in or Create an account to join the conversation.
Time to create page: 0.073 seconds