# 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