Files
2026-08-20 06:17:39 +08:00

188 lines
7.4 KiB
Plaintext

# 5i20 config file for Smithy 1240 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4 enable_raw"
# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 4000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 1250
setp hm2_5i20.0.stepgen.00.steplen 1250
setp hm2_5i20.0.stepgen.00.stepspace 1250
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 1250
setp hm2_5i20.0.stepgen.01.steplen 1250
setp hm2_5i20.0.stepgen.01.stepspace 1250
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 1250
setp hm2_5i20.0.stepgen.02.steplen 1250
setp hm2_5i20.0.stepgen.02.stepspace 1250
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 1250
setp hm2_5i20.0.stepgen.03.steplen 1250
setp hm2_5i20.0.stepgen.03.stepspace 1250
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
#net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
#net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.024.in_not => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.026.in_not => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in_not => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in_not => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.032.in_not => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.034.in_not => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV0 hm2_5i20.0.gpio.025.in_not
net DRV1 hm2_5i20.0.gpio.027.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.forward => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread