Ok so I have started again, again.
I have gone about it a bit more gently than the last few times, I have made some small changes to the HAL just taking out things that made PP fail while starting.
PWMGEN
gpio.005
gpio.001
I have replaced them with code generated by pncconf on the LinexCNC 2.7 installation
PP loads but won't come out of e-stop, i am assuming the sserial is working now but i really don't know.
Could you hep me with correcting the e-stop code?
Thanks
Current HAL no errors on start just won't come out of estop even with 24v on input0
Code:
########################################################################
#
# Tormach PCNC mill HAL config for 5i25 I/O
#
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES num_dio=64 num_aio=64
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=0 num_pwmgens=0 num_3pwmgens=0 num_stepgens=5 sserial_port_0=00xxxx"
loadrt estop_latch
loadrt toggle count=1
loadrt not names=prog-not-idle,axis3-not-homing,x-homing-not2
loadrt gearchange count=1
loadrt xor2 names=probe-active-hi-lo
loadrt debounce cfg=5
loadrt pid num_chan=4
loadrt tormachspindle names=tormachspindle
loadrt and2 names=enable-limit-z,probe-enable-input,door-limit-in,y-axis-lim-sw-and2
loadrt lut5 names=door-limit-x-lut,door-limit-y-lut
####################################################################
# Z_BOT ATC HAL COMPONENT
loadusr -Wn zbotatc python/hal_zbotatc.py -n zbotatc
# END ATC HAL COMPONENT
###################################################################
####################################################################
# Z_BOT SMART COOL HAL COMPONENT - DISABLED FOR NOW
# loadusr -Wn zbotschnozz python/hal_zbotschnozz.py -n zbotschnozz
# END SMART COOL HAL COMPONENT
#####################################################################
loadusr -W tormachheightgauge
loadusr -W usbio
########################################################################
# servo thread
addf hm2_5i25.0.read servo-thread
addf hm2_5i25.0.write servo-thread
addf hm2_5i25.0.pet_watchdog servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf estop-latch.0 servo-thread
addf toggle.0 servo-thread
addf prog-not-idle servo-thread
addf axis3-not-homing servo-thread
addf x-homing-not2 servo-thread
addf gearchange.0 servo-thread
addf probe-active-hi-lo servo-thread
addf debounce.0 servo-thread
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf pid.2.do-pid-calcs servo-thread
addf pid.3.do-pid-calcs servo-thread
addf tormachspindle servo-thread
addf enable-limit-z servo-thread
addf probe-enable-input servo-thread
addf door-limit-in servo-thread
addf y-axis-lim-sw-and2 servo-thread
addf door-limit-x-lut servo-thread
addf door-limit-y-lut servo-thread
########################################################################
# noise debounce for home switches and estop
setp debounce.0.delay 1
########################################################################
# 5i25 watchdog timeout
# 10 milliseconds (~10 times the servo loop period)
setp hm2_5i25.0.watchdog.timeout_ns 10000000
########################################################################
# 5i25
# Configuration pin-out:
#
# IO Connections for P3
# Mill Function Pin# I/O Pri. func Sec. func Chan Pin func Pin Dir
#
# Spindle Speed 1 0 IOPort StepGen 4 Step/Table1 (Out)
# Coolant 14 1 IOPort None (Out)
# X Direction 2 2 IOPort StepGen 0 Dir/Table2 (Out)
# Estop Reset 15 3 IOPort None (In)
# X Step 3 4 IOPort StepGen 0 Step/Table1 (Out)
# Spindle Dir 16 5 IOPort None (Out)
# Y Direction 4 6 IOPort StepGen 1 Dir/Table2 (Out)
# Charge Pump 17 7 IOPort PWM 0 PWM (Out)
# Y Step 5 8 IOPort StepGen 1 Step/Table1 (Out)
# Z Direction 6 9 IOPort StepGen 2 Dir/Table2 (Out)
# Z Step 7 10 IOPort StepGen 2 Step/Table1 (Out)
# A Direction 8 11 IOPort StepGen 3 Dir/Table2 (Out)
# A Step 9 12 IOPort StepGen 3 Step/Table1 (Out)
# X Limit 10 13 IOPort None (In)
# Y Limit 11 14 IOPort None (In)
# Z Limit 12 15 IOPort None (In)
# Probe In 13 16 IOPort None (In)
#
########################################################################
# Spindle speed control
#
# stepgen outputs the frequency it is told by tormachspindle comp
#
# type 1 velocity control mode
setp hm2_5i25.0.stepgen.04.control-type 1
# step/dir
# type 2 quadrature output for 50% duty cycle
setp hm2_5i25.0.stepgen.04.step_type 2
# no scaling 1:1
setp hm2_5i25.0.stepgen.04.position-scale 1.0
# handle spindle at speed via separate component
setp hm2_5i25.0.stepgen.04.maxaccel 0
# stepspace in nanoseconds
setp hm2_5i25.0.stepgen.04.stepspace 0
# steplen in nanoseconds (10 microseconds)
setp hm2_5i25.0.stepgen.04.steplen 10000
# assume standard spindle until UI sets it
setp tormachspindle.spindle-type 0
# hispeed spindle min/max
setp tormachspindle.hispeed-min 1000
setp tormachspindle.hispeed-max 24000
# allow UI to access min/max for high speed spindle
# do not net these until the UI code is changed to set them explicitly
# or the setp command above will not stick and they will be set to 0
net spindle-hispeed-min tormachspindle.hispeed-min
net spindle-hispeed-max tormachspindle.hispeed-max
# these let the UI read the min/max maintained by the comp based on spindle type
net spindle-min-speed tormachspindle.min-speed
net spindle-max-speed tormachspindle.max-speed
# the UI sets the spindle type
net spindle-type tormachspindle.spindle-type
# assume high range until UI sets it
setp tormachspindle.belt-position 1
net spindle-range tormachspindle.belt-position
net spindle-range-alarm tormachspindle.speed-alarm
setp tormachspindle.lowbelt-min-rpm [SPINDLE]LO_RANGE_MIN
setp tormachspindle.lowbelt-max-rpm [SPINDLE]LO_RANGE_MAX
setp tormachspindle.highbelt-min-rpm [SPINDLE]HI_RANGE_MIN
setp tormachspindle.highbelt-max-rpm [SPINDLE]HI_RANGE_MAX
# frequencies sent to stepgen to achieve low belt speeds
# 500 Hz -> 6 Hz at VFD -> 175 RPM at spindle (770)
# 10900 Hz -> 120 Hz at VFD -> 3250 RPM at spindle (770)
# 500 Hz -> 6 Hz at VFD -> 100 RPM at spindle (1100-2-3)
# 10900 Hz -> 120 Hz at VFD -> 2000 RPM at spindle (1100-2-3)
# 1600 Hz -> 300 RPM at spindle (1100-1)
# 10900 Hz -> 1750 RPM at spindle (1100-1)
setp tormachspindle.lowbelt-min-mcb-freq [SPINDLE]MIN_MCB_FREQUENCY
setp tormachspindle.lowbelt-max-mcb-freq [SPINDLE]MAX_MCB_FREQUENCY
# frequencies sent to stepgen to achieve high belt speeds
# 500 Hz -> 6 Hz at VFD -> 525 RPM at spindle (770)
# 10900 Hz -> 120 Hz at VFD -> 10200 RPM at spindle (770)
# 500 Hz -> 6 Hz at VFD -> 250 RPM at spindle (1100-2-3)
# 10900 Hz -> 120 Hz at VFD -> 5140 RPM at spindle (1100-2-3)
# 1600 Hz -> 800 RPM at spindle (1100-1)
# 10900 Hz -> 4500 RPM at spindle (1100-1)
setp tormachspindle.highbelt-min-mcb-freq [SPINDLE]MIN_MCB_FREQUENCY
setp tormachspindle.highbelt-max-mcb-freq [SPINDLE]MAX_MCB_FREQUENCY
# speed-out is displayed by UI when program running
net spindle-speed-fb-rpm tormachspindle.speed-out
# connect motion speed-out to input of spindle comp
net spindle-speed-raw motion.spindle-speed-out tormachspindle.speed-in
# connect output of spindle comp to stepgen
net spindle-speed tormachspindle.mcb-freq-out hm2_5i25.0.stepgen.04.velocity-cmd
# spindle at speed parameters for tormachspindle component
setp tormachspindle.startup-delay [SPINDLE]STARTUP_DELAY
# time to reach max speed from stopped
setp tormachspindle.seconds-to-max-rpm [SPINDLE]SECONDS_TO_MAX_RPM
# connect spindle comp at-speed output to motion
net spindle-at-speed tormachspindle.at-speed motion.spindle-at-speed
# connect motion spindle enable to stepgen enable and spindle comp
net spindle-on motion.spindle-on hm2_5i25.0.stepgen.04.enable tormachspindle.spindle-on
# spindle direction
# P3 pin 16 gpio 005
#setp hm2_5i25.0.gpio.005.is_output 1
net spindle-cw hm2_5i25.0.7i76.0.0.output-01
# UI access to stop spindle while in feedhold / INTERP_PAUSED
net spindle-disable tormachspindle.disable
# max RPM when enclosure door open
net enc-door-open-max-rpm tormachspindle.enc-door-open-max-rpm
########################################################################
# Coolant
# P3 pin 14 gpio 001
#setp hm2_5i25.0.gpio.001.is_output 1
#setp hm2_5i25.0.gpio.001.is_opendrain 0
#net coolant-flood hm2_5i25.0.gpio.001.out
net coolant-flood hm2_5i25.0.7i76.0.0.output-04
net coolant-flood-io iocontrol.0.coolant-flood
########################################################################
# Charge pump
# pin set by 5i25 configuration
# P3 pin 17 gpio 007
# dc = (value/scale)
#setp hm2_5i25.0.pwmgen.00.output-type 1
#setp hm2_5i25.0.pwmgen.pwm_frequency 500
#setp hm2_5i25.0.pwmgen.00.scale 100
#setp hm2_5i25.0.pwmgen.00.value 5
########################################################################
# E stop
# P3 pin 15 gpio 003
# estop noise debounce
# use this line with a machine attached
net machine-ok-raw <= hm2_5i25.0.7i76.0.0.input-00 => debounce.0.3.in
# use the setp line below without a machine attached
# this isn't useful unless a properly flashed 5i25 is present
# no machine attached
#setp debounce.0.3.in 1
net machine-ok debounce.0.3.out => estop-latch.0.ok-in
net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset
net estop-out <= iocontrol.0.user-enable-out
########################################################################
# Probe
# P3 pin 13 gpio 016
setp hm2_5i25.0.gpio.016.is_output 0
net probe-in hm2_5i25.0.gpio.016.in debounce.0.4.in
net probe-active-high probe-active-hi-lo.in0
net probe-debounced debounce.0.4.out probe-active-hi-lo.in1
# connect 4th axis home input directly to debounced accessory input
net probe-debounced axis.3.home-sw-in
# probe active hi-low output signal to AND input with probe-enable signal
net probe-hi-lo probe-active-hi-lo.out probe-enable-input.in1
# do this to only disable the probe input during 4th axis homing
net ax3-is-homing axis.3.homing axis3-not-homing.in
net ax3-not-homing axis3-not-homing.out probe-enable-input.in0
net probe-input probe-enable-input.out motion.probe-input
########################################################################
# X axis
# step/dir
setp hm2_5i25.0.stepgen.00.step_type 0
# velocity control
setp hm2_5i25.0.stepgen.00.control-type 1
# scaling for position feedback, position command, and velocity command, in steps per length unit.
# converts from counts to position units. position = counts / position_scale
setp hm2_5i25.0.stepgen.00.position-scale [AXIS_0]SCALE
# stepper driver timing parameters
setp hm2_5i25.0.stepgen.00.steplen [AXIS_0]STEPLEN
setp hm2_5i25.0.stepgen.00.stepspace [AXIS_0]STEPSPACE
setp hm2_5i25.0.stepgen.00.dirhold [AXIS_0]DIRHOLD
setp hm2_5i25.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
setp hm2_5i25.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL
setp hm2_5i25.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL
# axis enable chain
newsig emcmot.00.enable bit
sets emcmot.00.enable FALSE
net emcmot.00.enable <= axis.0.amp-enable-out
net emcmot.00.enable => hm2_5i25.0.stepgen.00.enable pid.0.enable
# position command and feedback
net emcmot.00.pos-cmd axis.0.motor-pos-cmd => pid.0.command
net emcmot.00.vel-cmd axis.0.joint-vel-cmd => pid.0.command-deriv
net motor.00.pos-fb <= hm2_5i25.0.stepgen.00.position-fb axis.0.motor-pos-fb pid.0.feedback
net motor.00.command pid.0.output hm2_5i25.0.stepgen.00.velocity-cmd
setp pid.0.error-previous-target true
# PID parameters
setp pid.0.Pgain [AXIS_0]P
setp pid.0.Igain [AXIS_0]I
setp pid.0.Dgain [AXIS_0]D
setp pid.0.bias [AXIS_0]BIAS
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.deadband [AXIS_0]DEADBAND
setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT
setp pid.0.maxerror [AXIS_0]MAX_ERROR
# P3 pin 3 gpio 004
# X step
setp hm2_5i25.0.gpio.004.invert_output 1
########################################################################
# Y axis
# step/dir
setp hm2_5i25.0.stepgen.01.step_type 0
# velocity control
setp hm2_5i25.0.stepgen.01.control-type 1
# scaling for position feedback, position command, and velocity command, in steps per length unit.
# converts from counts to position units. position = counts / position_scale
setp hm2_5i25.0.stepgen.01.position-scale [AXIS_1]SCALE
# stepper driver timing parameters
setp hm2_5i25.0.stepgen.01.steplen [AXIS_1]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [AXIS_1]STEPSPACE
setp hm2_5i25.0.stepgen.01.dirhold [AXIS_1]DIRHOLD
setp hm2_5i25.0.stepgen.01.dirsetup [AXIS_1]DIRSETUP
setp hm2_5i25.0.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL
setp hm2_5i25.0.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAXACCEL
# axis enable chain
newsig emcmot.01.enable bit
sets emcmot.01.enable FALSE
net emcmot.01.enable <= axis.1.amp-enable-out
net emcmot.01.enable => hm2_5i25.0.stepgen.01.enable pid.1.enable
# position command and feedback
net emcmot.01.pos-cmd axis.1.motor-pos-cmd => pid.1.command
net emcmot.01.vel-cmd axis.1.joint-vel-cmd => pid.1.command-deriv
net motor.01.pos-fb <= hm2_5i25.0.stepgen.01.position-fb axis.1.motor-pos-fb pid.1.feedback
net motor.01.command pid.1.output hm2_5i25.0.stepgen.01.velocity-cmd
setp pid.1.error-previous-target true
# PID parameters
setp pid.1.Pgain [AXIS_1]P
setp pid.1.Igain [AXIS_1]I
setp pid.1.Dgain [AXIS_1]D
setp pid.1.bias [AXIS_1]BIAS
setp pid.1.FF0 [AXIS_1]FF0
setp pid.1.FF1 [AXIS_1]FF1
setp pid.1.FF2 [AXIS_1]FF2
setp pid.1.deadband [AXIS_1]DEADBAND
setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.1.maxerror [AXIS_1]MAX_ERROR
# P3 pin 5 gpio 008
# Y step
setp hm2_5i25.0.gpio.008.invert_output 1
########################################################################
# Z axis
# step/dir
setp hm2_5i25.0.stepgen.02.step_type 0
# velocity control
setp hm2_5i25.0.stepgen.02.control-type 1
# scaling for position feedback, position command, and velocity command, in steps per length unit.
# converts from counts to position units. position = counts / position_scale
setp hm2_5i25.0.stepgen.02.position-scale [AXIS_2]SCALE
# stepper driver timing parameters
setp hm2_5i25.0.stepgen.02.steplen [AXIS_2]STEPLEN
setp hm2_5i25.0.stepgen.02.stepspace [AXIS_2]STEPSPACE
setp hm2_5i25.0.stepgen.02.dirhold [AXIS_2]DIRHOLD
setp hm2_5i25.0.stepgen.02.dirsetup [AXIS_2]DIRSETUP
setp hm2_5i25.0.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL
setp hm2_5i25.0.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAXACCEL
# axis enable chain
newsig emcmot.02.enable bit
sets emcmot.02.enable FALSE
net emcmot.02.enable <= axis.2.amp-enable-out
net emcmot.02.enable => hm2_5i25.0.stepgen.02.enable pid.2.enable
# position command and feedback
net emcmot.02.pos-cmd axis.2.motor-pos-cmd => pid.2.command
net emcmot.02.vel-cmd axis.2.joint-vel-cmd => pid.2.command-deriv
net motor.02.pos-fb <= hm2_5i25.0.stepgen.02.position-fb axis.2.motor-pos-fb pid.2.feedback
net motor.02.command pid.2.output hm2_5i25.0.stepgen.02.velocity-cmd
setp pid.2.error-previous-target true
# PID parameters
setp pid.2.Pgain [AXIS_2]P
setp pid.2.Igain [AXIS_2]I
setp pid.2.Dgain [AXIS_2]D
setp pid.2.bias [AXIS_2]BIAS
setp pid.2.FF0 [AXIS_2]FF0
setp pid.2.FF1 [AXIS_2]FF1
setp pid.2.FF2 [AXIS_2]FF2
setp pid.2.deadband [AXIS_2]DEADBAND
setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT
setp pid.2.maxerror [AXIS_2]MAX_ERROR
# P3 pin 7 gpio 010
# Z step
setp hm2_5i25.0.gpio.010.invert_output 1
########################################################################
# A axis
# step/dir
setp hm2_5i25.0.stepgen.03.step_type 0
# velocity control
setp hm2_5i25.0.stepgen.03.control-type 1
# scaling for position feedback, position command, and velocity command, in steps per length unit.
# converts from counts to position units. position = counts / position_scale
setp hm2_5i25.0.stepgen.03.position-scale [AXIS_3]SCALE
# stepper driver timing parameters
setp hm2_5i25.0.stepgen.03.steplen [AXIS_3]STEPLEN
setp hm2_5i25.0.stepgen.03.stepspace [AXIS_3]STEPSPACE
setp hm2_5i25.0.stepgen.03.dirhold [AXIS_3]DIRHOLD
setp hm2_5i25.0.stepgen.03.dirsetup [AXIS_3]DIRSETUP
setp hm2_5i25.0.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL
setp hm2_5i25.0.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAXACCEL
# axis enable chain
newsig emcmot.03.enable bit
sets emcmot.03.enable FALSE
net emcmot.03.enable <= axis.3.amp-enable-out
net emcmot.03.enable => hm2_5i25.0.stepgen.03.enable pid.3.enable
# position command and feedback
net emcmot.03.pos-cmd axis.3.motor-pos-cmd => pid.3.command
net emcmot.03.vel-cmd axis.3.joint-vel-cmd => pid.3.command-deriv
net motor.03.pos-fb <= hm2_5i25.0.stepgen.03.position-fb axis.3.motor-pos-fb pid.3.feedback
net motor.03.command pid.3.output hm2_5i25.0.stepgen.03.velocity-cmd
setp pid.3.error-previous-target true
# PID parameters
setp pid.3.Pgain [AXIS_3]P
setp pid.3.Igain [AXIS_3]I
setp pid.3.Dgain [AXIS_3]D
setp pid.3.bias [AXIS_3]BIAS
setp pid.3.FF0 [AXIS_3]FF0
setp pid.3.FF1 [AXIS_3]FF1
setp pid.3.FF2 [AXIS_3]FF2
setp pid.3.deadband [AXIS_3]DEADBAND
setp pid.3.maxoutput [AXIS_3]MAX_OUTPUT
setp pid.3.maxerror [AXIS_3]MAX_ERROR
# P3 pin 9 gpio 012
# A step
setp hm2_5i25.0.gpio.012.invert_output 1
########################################################################
# home switches
# enclosure door support
# door-sw-installed post-gui HAL pin changes HAL routing of signals
# x-axis 5i25 limit input becomes door switch input
# x-axis switch gets rewired in series with y switch
#
# controlled by door-sw-installed
# a lut5 comp as a bit mux switches axis.0.home-sw-in axis.0.neg-lim-sw-in axis.0.pos-lim-sw-in
# between receiving x-axis switch input or y-axis switch input
# another mux2 comp switches door-sw-in between receiving FALSE or x/door switch input
#
# door-sw-in is an input pin to the spindle comp
# when TRUE the spindle comp limits RPM to a slow value, e.g. 1000 RPM
# when FALSE the spindle comp does not limit spindle RPM
#
# when door-sw-installed is TRUE UI homing routines must reference x and Y mutually exclusively
# must noise debounce inputs - otherwise coolant on/off can cause spurious estops
net home-limit-x-raw <= hm2_5i25.0.gpio.013.in => debounce.0.0.in
net home-limit-y-raw <= hm2_5i25.0.gpio.014.in => debounce.0.1.in
net home-limit-z-raw <= hm2_5i25.0.gpio.015.in => debounce.0.2.in
#setp debounce.0.0.in 1
#setp debounce.0.1.in 1
#setp debounce.0.2.in 1
# route limit inputs through AND gates to enable switches via UI
# also net x-axis switch input to door-limit-in.in1
net and-home-x debounce.0.0.out door-limit-x-lut.in-0 door-limit-in.in1
net and-home-y debounce.0.1.out door-limit-x-lut.in-1 door-limit-y-lut.in-0
net and-home-z debounce.0.2.out enable-limit-z.in1
# post gui connects this to the UI for disabling the limit switch inputs
net limit-switch-enable door-limit-x-lut.in-4 door-limit-y-lut.in-3 enable-limit-z.in0
# door/
# limit-sw-enable x-homing door-sw-configured - Y in - X in -- out axis.0.*-lim-sw-in -- lut5 weight
# 0 X X X X | 0
# 1 0 0 0 0 | 0
# 1 0 0 0 1 | 1 0x00020000
# 1 0 0 1 0 | 0
# 1 0 0 1 1 | 1 0x00080000
# 1 1 0 0 0 | 0
# 1 1 0 0 1 | 1 0x02000000
# 1 1 0 1 0 | 0
# 1 1 0 1 1 | 1 0x08000000
# 1 1 1 0 0 | 0
# 1 1 1 0 1 | 0
# 1 1 1 1 0 | 1 0x40000000
# 1 1 1 1 1 | 1 0x80000000
# ----
# 0xCA0A0000
setp door-limit-x-lut.function 0xCA0A0000
# connect X and Y to axis.0.*-lim-sw-in via lut5-based mux configured as above
net x-lim-out door-limit-x-lut.out axis.0.home-sw-in axis.0.neg-lim-sw-in axis.0.pos-lim-sw-in
#
# limit-sw-enable x-homing door-sw-configured - Y in -- out axis.1.*-lim-sw-in -- lut5 weight
# 0 X X X | 0
# 1 0 0 0 | 0
# 1 0 0 1 | 1 0x00000200
# 1 0 1 0 | 0
# 1 0 1 1 | 1 0x00000800
#
# 1 1 0 0 | 0
# 1 1 0 1 | 1 0x00002000
# 1 1 1 0 | 0
# 1 1 1 1 | 0
# ----
# 0x00002A00
setp door-limit-y-lut.function 0x00002A00
net y-lim-out door-limit-y-lut.out axis.1.home-sw-in axis.1.neg-lim-sw-in axis.1.pos-lim-sw-in
net x-is-homing axis.0.homing door-limit-x-lut.in-3 door-limit-y-lut.in-2
# door switch to spindle comp is former x-axis limit input ANDed with NOT door-sw-configured from UI
# if door-sw-configured is TRUE then the spindle comp input follows the X limit input
# if door-sw-configured is FALSE the the spindle comp input is always FALSE
# inverter NOT gate
net enc-door-switch-configured door-limit-x-lut.in-2 door-limit-y-lut.in-1 door-limit-in.in0 tormachspindle.enc-door-switch-configured
# connect X limit inputs to axis.2.*-sw-*
net z-lim-out enable-limit-z.out axis.2.home-sw-in axis.2.neg-lim-sw-in axis.2.pos-lim-sw-in
# UI can display this
net enc-door-switch-status door-limit-in.out tormachspindle.enc-door-switch-status
########################################################################
#
# tool change
#
# loopback tool-change to tool-changed
net tool-change iocontrol.0.tool-change => iocontrol.0.tool-changed
# loopback prepare to prepared
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
#######################################################################
# IO Board
#######################################################################
net dig-out-0 motion.digital-out-00 => usbio.relay-0
net dig-out-1 motion.digital-out-01 => usbio.relay-1
net dig-out-2 motion.digital-out-02 => usbio.relay-2
net dig-out-3 motion.digital-out-03 => usbio.relay-3
net dig-in-0 motion.digital-in-00 => usbio.input-0
net dig-in-1 motion.digital-in-01 => usbio.input-1
net dig-in-2 motion.digital-in-02 => usbio.input-2
net dig-in-3 motion.digital-in-03 => usbio.input-3