Files
linuxcnc/configs/lagun/lagun.hal
Thaddeus-Maximus f3953d66ae ?
2026-04-03 15:58:58 -05:00

399 lines
13 KiB
Plaintext
Executable File

# Generated by PNCconf at Fri Jul 26 13:18:08 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS base_thread_fp=1
loadrt hostmot2
loadrt hm2_pci config="num_encoders=6 num_pwmgens=6"
loadrt mux16 names=jogincr,foincr,mvoincr,soincr
loadrt mux2 count=1
loadrt sum2 count=3
loadrt logic count=1 personality=0x0102
addf logic.0 servo-thread
addf mux2.0 servo-thread
loadrt weighted_sum wsum_sizes=8 #wsum_sizes=[128,64,32,16,8,4,2,1] # default should do conversion??
addf process_wsums servo-thread
addf sum2.0 servo-thread
addf sum2.1 servo-thread
addf sum2.2 servo-thread
addf jogincr servo-thread
addf foincr servo-thread
addf mvoincr servo-thread
addf soincr servo-thread
setp hm2_5i24.0.pwmgen.pwm_frequency 15500
setp hm2_5i24.0.pwmgen.pdm_frequency 15500
setp hm2_5i24.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.s,pid.xl,pid.yl,pid.zl
addf hm2_5i24.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.xl.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.yl.do-pid-calcs servo-thread
addf pid.zl.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_5i24.0.write servo-thread
# relay outputs
setp hm2_5i24.0.gpio.041.is_output true
setp hm2_5i24.0.gpio.044.is_output true
setp hm2_5i24.0.gpio.046.is_output true
setp hm2_5i24.0.gpio.041.invert_output true
setp hm2_5i24.0.gpio.044.invert_output true
setp hm2_5i24.0.gpio.046.invert_output true
# some inputs
setp hm2_5i24.0.gpio.027.is_output false
setp hm2_5i24.0.gpio.028.is_output false
setp hm2_5i24.0.gpio.029.is_output false # ESTOP
setp hm2_5i24.0.gpio.030.is_output false # START
setp hm2_5i24.0.gpio.031.is_output false # STOP
#net machine_estop_out <= hm2_5i24.0.gpio.029.in_not
#net machine_estop_out => halui.machine.on
# This stuff should work but it seems to be shutting off the machine.
# net btn-estop-out hm2_5i24.0.gpio.029.in_not => halui.machine.on
# net btn-estop-in hm2_5i24.0.gpio.029.in => halui.machine.off
# net btn-pause hm2_5i24.0.gpio.031.in_not => halui.program.pause
# net btn-start hm2_5i24.0.gpio.030.in_not => halui.program.run
# net btn-start hm2_5i24.0.gpio.030.in_not => halui.program.resume
# first ADC
#setp hm2_5i24.0.gpio.032.is_output false
#setp hm2_5i24.0.gpio.033.is_output false
#setp hm2_5i24.0.gpio.034.is_output false
#setp hm2_5i24.0.gpio.035.is_output false
#setp hm2_5i24.0.gpio.036.is_output false
#setp hm2_5i24.0.gpio.037.is_output false
#setp hm2_5i24.0.gpio.038.is_output false
#setp hm2_5i24.0.gpio.039.is_output false
# second ADC
#setp hm2_5i24.0.gpio.040.is_output false
#setp hm2_5i24.0.gpio.041.is_output false
#setp hm2_5i24.0.gpio.042.is_output false
#setp hm2_5i24.0.gpio.043.is_output false
#setp hm2_5i24.0.gpio.044.is_output false
#setp hm2_5i24.0.gpio.045.is_output false
#setp hm2_5i24.0.gpio.046.is_output false
#setp hm2_5i24.0.gpio.047.is_output false
#net hm2_5i24.0.gpio.032 <= wsum.0.bit.0.in
#net hm2_5i24.0.gpio.033 <= wsum.0.bit.1.in
#net hm2_5i24.0.gpio.034 <= wsum.0.bit.2.in
#net hm2_5i24.0.gpio.035 <= wsum.0.bit.3.in
#net hm2_5i24.0.gpio.036 <= wsum.0.bit.4.in
#net hm2_5i24.0.gpio.037 <= wsum.0.bit.5.in
#net hm2_5i24.0.gpio.038 <= wsum.0.bit.6.in
#net hm2_5i24.0.gpio.039 <= wsum.0.bit.7.in
# ******************
# AXIS X JOINT 0
# ******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain 0
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
net x-enable => pid.x.enable
net x-pos-mtr => pid.x.feedback
net x-output-mtr <= pid.x.output
setp pid.xl.Pgain [JOINT_0]P_LIN
setp pid.xl.Igain [JOINT_0]I_LIN
setp pid.xl.Dgain [JOINT_0]D_LIN
setp pid.xl.bias 0
setp pid.xl.FF0 0
setp pid.xl.FF1 0
setp pid.xl.FF2 0
setp pid.xl.deadband [JOINT_0]DEADBAND
setp pid.xl.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.xl.error-previous-target true
net x-enable => pid.xl.enable
net x-pos-lin => pid.xl.feedback
net x-output-lin <= pid.xl.output
net x-output-lin => sum2.0.in0
net x-output-mtr => sum2.0.in1
net x-output <= sum2.0.out
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-pos-cmd => pid.xl.command
net x-pos-cmd => pid.x.command
# ---PWM Generator signals/setup---
setp hm2_5i24.0.pwmgen.00.output-type 1
setp hm2_5i24.0.pwmgen.00.scale [JOINT_0]OUTPUT_SCALE
setp hm2_5i24.0.pwmgen.00.offset-mode 1
net x-output => hm2_5i24.0.pwmgen.00.value
net x-enable joint.0.amp-enable-out => hm2_5i24.0.pwmgen.00.enable
net x-enable => hm2_5i24.0.gpio.046.out
net x-pos-rawcounts <= hm2_5i24.0.encoder.00.rawcounts
# ---Encoder feedback signals/setup---
setp hm2_5i24.0.encoder.03.counter-mode 0
setp hm2_5i24.0.encoder.03.filter 1
setp hm2_5i24.0.encoder.03.index-invert 0
setp hm2_5i24.0.encoder.03.index-mask 0
setp hm2_5i24.0.encoder.03.index-mask-invert 0
setp hm2_5i24.0.encoder.03.scale [JOINT_0]ENCODER_MTR_SCALE
setp hm2_5i24.0.encoder.00.counter-mode 0
setp hm2_5i24.0.encoder.00.filter 1
setp hm2_5i24.0.encoder.00.index-invert 0
setp hm2_5i24.0.encoder.00.index-mask 0
setp hm2_5i24.0.encoder.00.index-mask-invert 0
setp hm2_5i24.0.encoder.00.scale [JOINT_0]ENCODER_LIN_SCALE
net x-pos-mtr <= hm2_5i24.0.encoder.03.position
net x-vel-mtr <= hm2_5i24.0.encoder.03.velocity
net x-index-enable joint.0.index-enable <=> hm2_5i24.0.encoder.03.index-enable
#net x-pos-mtr => joint.0.motor-pos-fb
net x-pos-lin <= hm2_5i24.0.encoder.00.position
net x-vel-lin <= hm2_5i24.0.encoder.00.velocity
net x-index-enable joint.0.index-enable <=> hm2_5i24.0.encoder.00.index-enable
net x-pos-lin => joint.0.motor-pos-fb
# ******************
# AXIS Y JOINT 1
# ******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain 0
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
net y-enable => pid.y.enable
net y-pos-mtr => pid.y.feedback
net y-output-mtr <= pid.y.output
setp pid.yl.Pgain [JOINT_1]P_LIN
setp pid.yl.Igain [JOINT_1]I_LIN
setp pid.yl.Dgain [JOINT_1]D_LIN
setp pid.yl.bias 0
setp pid.yl.FF0 0
setp pid.yl.FF1 0
setp pid.yl.FF2 0
setp pid.yl.deadband [JOINT_1]DEADBAND
setp pid.yl.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.yl.error-previous-target true
net y-enable => pid.yl.enable
net y-pos-lin => pid.yl.feedback
net y-output-lin <= pid.yl.output
net y-output-lin => sum2.1.in0
net y-output-mtr => sum2.1.in1
net y-output <= sum2.1.out
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-pos-cmd => pid.yl.command
net y-pos-cmd => pid.y.command
# ---PWM Generator signals/setup---
setp hm2_5i24.0.pwmgen.02.output-type 1
setp hm2_5i24.0.pwmgen.02.scale [JOINT_1]OUTPUT_SCALE
setp hm2_5i24.0.pwmgen.02.offset-mode 1
net y-output => hm2_5i24.0.pwmgen.02.value
net y-enable joint.1.amp-enable-out => hm2_5i24.0.pwmgen.02.enable
# net y-enable => hm2_5i24.0.gpio.044.out # commented out because duplicates x axis
net y-pos-rawcounts <= hm2_5i24.0.encoder.01.rawcounts
# ---Encoder feedback signals/setup---
setp hm2_5i24.0.encoder.04.counter-mode 0
setp hm2_5i24.0.encoder.04.filter 1
setp hm2_5i24.0.encoder.04.index-invert 0
setp hm2_5i24.0.encoder.04.index-mask 0
setp hm2_5i24.0.encoder.04.index-mask-invert 0
setp hm2_5i24.0.encoder.04.scale [JOINT_1]ENCODER_MTR_SCALE
setp hm2_5i24.0.encoder.01.counter-mode 0
setp hm2_5i24.0.encoder.01.filter 1
setp hm2_5i24.0.encoder.01.index-invert 0
setp hm2_5i24.0.encoder.01.index-mask 0
setp hm2_5i24.0.encoder.01.index-mask-invert 0
setp hm2_5i24.0.encoder.01.scale [JOINT_1]ENCODER_LIN_SCALE
net y-pos-mtr <= hm2_5i24.0.encoder.04.position
net y-vel-mtr <= hm2_5i24.0.encoder.04.velocity
net y-index-enable joint.1.index-enable <=> hm2_5i24.0.encoder.04.index-enable
#net y-pos-mtr => joint.1.motor-pos-fb
net y-pos-lin <= hm2_5i24.0.encoder.01.position
net y-vel-lin <= hm2_5i24.0.encoder.01.velocity
net y-index-enable joint.1.index-enable <=> hm2_5i24.0.encoder.01.index-enable
net y-pos-lin => joint.1.motor-pos-fb
#*******************
# AXIS Z JOINT 2
#*******************
#setp pid.z.Pgain [JOINT_2]P
#setp pid.z.Igain 0
#setp pid.z.Dgain [JOINT_2]D
#setp pid.z.bias [JOINT_2]BIAS
#setp pid.z.FF0 [JOINT_2]FF0
#setp pid.z.FF1 [JOINT_2]FF1
#setp pid.z.FF2 [JOINT_2]FF2
#setp pid.z.deadband [JOINT_2]DEADBAND
#setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
#setp pid.z.error-previous-target true
#net z-enable => pid.z.enable
#net z-pos-mtr => pid.z.feedback
#net z-output-mtr <= pid.z.output
setp pid.zl.Pgain [JOINT_2]P
setp pid.zl.Igain [JOINT_2]I
setp pid.zl.Dgain [JOINT_2]D
setp pid.zl.bias 0
setp pid.zl.FF0 0
setp pid.zl.FF1 0
setp pid.zl.FF2 0
setp pid.zl.deadband [JOINT_2]DEADBAND
setp pid.zl.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.zl.error-previous-target true
net z-override => logic.0.in-00
net z-enable => logic.0.in-01
net z-enable-comb <= logic.0.and
sets z-override TRUE
# this section about ferror doesnt work
net z-enable-comb => mux2.0.sel
setp mux2.0.in0 100
setp mux2.0.in1 0.2
net z-ferror <= mux2.0.out
#net z-ferror => ini.2.min_ferror #joint.2.f-error #ini.2.ferror
net z-enable-comb => pid.zl.enable
net z-pos-lin => pid.zl.feedback
net z-output-lin <= pid.zl.output
net z-output-lin => sum2.2.in0
#net z-output-mtr => sum2.2.in1
net z-output <= sum2.2.out
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-pos-cmd => pid.zl.command
#net z-pos-cmd => pid.z.command
# ---PWM Generator signals/setup---
setp hm2_5i24.0.pwmgen.04.output-type 1
setp hm2_5i24.0.pwmgen.04.scale [JOINT_2]OUTPUT_SCALE
setp hm2_5i24.0.pwmgen.04.offset-mode 1
net z-output => hm2_5i24.0.pwmgen.04.value
net z-enable joint.2.amp-enable-out => hm2_5i24.0.pwmgen.04.enable
net z-enable-comb => hm2_5i24.0.gpio.044.out
net z-pos-rawcounts <= hm2_5i24.0.encoder.02.rawcounts
# ---Encoder feedback signals/setup---
#setp hm2_5i24.0.encoder.05.counter-mode 0
#setp hm2_5i24.0.encoder.05.filter 1
#setp hm2_5i24.0.encoder.05.index-invert 0
#setp hm2_5i24.0.encoder.05.index-mask 0
#setp hm2_5i24.0.encoder.05.index-mask-invert 0
#setp hm2_5i24.0.encoder.05.scale [JOINT_2]ENCODER_MTR_SCALE
setp hm2_5i24.0.encoder.02.counter-mode 0
setp hm2_5i24.0.encoder.02.filter 1
setp hm2_5i24.0.encoder.02.index-invert 0
setp hm2_5i24.0.encoder.02.index-mask 0
setp hm2_5i24.0.encoder.02.index-mask-invert 0
setp hm2_5i24.0.encoder.02.scale [JOINT_2]ENCODER_LIN_SCALE
#net z-pos-mtr <= hm2_5i24.0.encoder.05.position
#net z-vel-mtr <= hm2_5i24.0.encoder.05.velocity
#net z-index-enable joint.2.index-enable <=> hm2_5i24.0.encoder.05.index-enable
#net z-pos-mtr => joint.2.motor-pos-fb
net z-pos-lin <= hm2_5i24.0.encoder.02.position
net z-vel-lin <= hm2_5i24.0.encoder.02.velocity
net z-index-enable joint.2.index-enable <=> hm2_5i24.0.encoder.02.index-enable
net z-pos-lin => joint.2.motor-pos-fb
#### SPINDLE ####
#net spindle.0.on spindle-enable
net spindle-enable spindle.0.on => hm2_5i24.0.gpio.041.out
#******************************
# connect miscellaneous signals
#******************************
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---manual tool change signals---
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
# ---Use external manual tool change dialog---
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number
# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared