# Generated by PNCconf at Tue Dec 27 13:45:21 2011
# Edited 12/27/12 Jeff Johnson
# overwritten when you run PNCconf again

loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hostmot2
loadrt hm2_pci config="firmware=hm2/5i23/rmsvss6_8.bit num_resolvers=5 num_pwmgens=5 num_3pwmgens=0 num_stepgens=0" 
setp     hm2_5i23.0.pwmgen.pwm_frequency 24000
setp     hm2_5i23.0.pwmgen.pdm_frequency 6000
setp     hm2_5i23.0.watchdog.timeout_ns 10000000
loadrt pid names=pid.x,pid.z
loadrt abs names=abs.0,abs.1,abs.2,abs.3
loadrt lowpass names=lowpass.0,lowpass.1,lowpass.2,lowpass.3
loadrt scale names=scale.0,scale.1,scale.2,scale.3
loadrt classicladder_rt numPhysInputs=96 numPhysOutputs=48 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10 numTimersIec=50
loadrt mux16 names=foincr,soincr
loadrt and2 count=3
loadrt or2 count=1
loadrt gearchange



addf hm2_5i23.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.z.do-pid-calcs servo-thread
addf classicladder.0.refresh servo-thread
addf foincr servo-thread
addf soincr servo-thread
addf hm2_5i23.0.write         servo-thread
addf hm2_5i23.0.pet_watchdog  servo-thread
addf lowpass.0 servo-thread
addf abs.0  servo-thread
addf scale.0   servo-thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
addf or2.0 servo-thread
addf gearchange.0 servo-thread


# external output signals

#net spindle-low-range-sol <=== hm2_5i23.0.7i71.0.3.output-00
#net spindle-high-range-sol <=== hm2_5i23.0.7i71.0.3.output-01
#net spindle-run-sol <=== hm2_5i23.0.7i71.0.3.output-02
#net spindle-brake-sol <=== hm2_5i23.0.7i71.0.3.output-03
#net spindle-free-sol <=== hm2_5i23.0.7i71.0.3.output-04
#net hydraulic-motor-on ===> hm2_5i23.0.7i71.0.3.output-05
#net electrics-on-rel <=== hm2_5i23.0.7i71.0.3.output-06
#net advance-tailstock-sol <=== hm2_5i23.0.7i71.0.3.output-07
#net retract-tailstock-sol <=== hm2_5i23.0.7i71.0.3.output-08
#net outer-tool-coolant-sol <=== hm2_5i23.0.7i71.0.3.output-09
#net inner-tool-coolant-sol <=== hm2_5i23.0.7i71.0.3.output-10
#net slide-lube-sol <=== hm2_5i23.0.7i71.0.3.output-11
#net spindle-motor-on-permission-rel <=== hm2_5i23.0.7i71.0.3.output-12
#net spindle-motor-on-command-rel <=== hm2_5i23.0.7i71.0.3.output-13
#net turret-unclamp-sol <=== hm2_5i23.0.7i71.0.3.output-14
#net turret-index-sol <=== hm2_5i23.0.7i71.0.3.output-15
#net tailstock-up-sol <=== hm2_5i23.0.7i71.0.3.output-16
#net tailstock-down-sol <=== hm2_5i23.0.7i71.0.3.output-17
#net feed-hold-light <=== hm2_5i23.0.7i71.0.3.output-18
#net in-cycle-light <=== hm2_5i23.0.7i71.0.3.output-19
#net master-control-relay-rel <=== hm2_5i23.0.7i71.0.3.output-20



# external input signals
#net x-axis-select <=== hm2_5i23.0.7i70.0.0.input-00
#net plus-direction <=== hm2_5i23.0.7i70.0.0.input-01
#net minus-direction <=== hm2_5i23.0.7i70.0.0.input-02
#net z-axis-select <=== hm2_5i23.0.7i70.0.0.input-03
#net cycle-start <=== hm2_5i23.0.7i70.0.0.input-04
#net feedrate-percent-a <=== hm2_5i23.0.7i70.0.0.input-05
#net feedrate-percent-b <=== hm2_5i23.0.7i70.0.0.input-06
#net feedrate-percent-c <=== hm2_5i23.0.7i70.0.0.input-07
#net feedrate-percent-d <=== hm2_5i23.0.7i70.0.0.input-08
#net feed-hold <=== hm2_5i23.0.7i70.0.0.input-09
#net distance-00001 <=== hm2_5i23.0.7i70.0.0.input-10
#net distance-0001 <=== hm2_5i23.0.7i70.0.0.input-11
#net distance-001 <=== hm2_5i23.0.7i70.0.0.input-12
#net distance-01 <=== hm2_5i23.0.7i70.0.0.input-13
#net distance-1 <=== hm2_5i23.0.7i70.0.0.input-14
#net distance-cont <=== hm2_5i23.0.7i70.0.0.input-15
#net feed-rate-001 <=== hm2_5i23.0.7i70.0.0.input-16
#net feed-rate-01 <=== hm2_5i23.0.7i70.0.0.input-17
#net feed-rate-1 <=== hm2_5i23.0.7i70.0.0.input-18
#net  <=== hm2_5i23.0.7i70.0.0.input-19
#net  <=== hm2_5i23.0.7i70.0.0.input-20
#net turret-jog <=== hm2_5i23.0.7i70.0.0.input-21
#net coolant-on <=== hm2_5i23.0.7i70.0.0.input-22
#net coolant-off <=== hm2_5i23.0.7i70.0.0.input-23
#net tailstock-advance <=== hm2_5i23.0.7i70.0.0.input-24
#net tailstock-retract <=== hm2_5i23.0.7i70.0.0.input-25
#net tailstock-up <=== hm2_5i23.0.7i70.0.0.input-26
#net tailstock-down <=== hm2_5i23.0.7i70.0.0.input-27
#net e-stop <=== hm2_5i23.0.7i70.0.0.input-28
#net spindle-brake <=== hm2_5i23.0.7i70.0.0.input-29
#net spindle-neutral <=== hm2_5i23.0.7i70.0.0.input-30
#net rolling-guard-prox <=== hm2_5i23.0.7i70.0.0.input-31
#net servos-enabled <=== hm2_5i23.0.7i70.0.0.input-32
#net axis-feed-limit-overtravel <=== hm2_5i23.0.7i70.0.0.input-33
#net hydraulic-motor <=== hm2_5i23.0.7i70.0.0.input-34
#net coolant-motor <=== hm2_5i23.0.7i70.0.0.input-35
#net heat-exchanger-motor <=== hm2_5i23.0.7i70.0.0.input-36
#net chip-conveyor-motor <=== hm2_5i23.0.7i70.0.0.input-37
#net spindle-blower-motor <=== hm2_5i23.0.7i70.0.0.input-38
net up-to-speed <=== hm2_5i23.0.7i70.0.0.input-39
#net m-contactor <=== hm2_5i23.0.7i70.0.0.input-40
#net fault <=== hm2_5i23.0.7i70.0.0.input-41
#net motor-OL <=== hm2_5i23.0.7i70.0.0.input-42
#net low-speed <=== hm2_5i23.0.7i70.0.0.input-43
#net spindle-motor-temp <=== hm2_5i23.0.7i70.0.0.input-44
#net x-axis-motor-overload <=== hm2_5i23.0.7i70.0.0.input-45
#net z-axis-motor-overload <=== hm2_5i23.0.7i70.0.0.input-46
#net z-axis-motor-temp <=== hm2_5i23.0.7i70.0.0.input-47

#net hydraulic-pressure-over-600psi <=== hm2_5i23.0.7i70.0.1.input-00
#net spindle-lube-pressure-ok <=== hm2_5i23.0.7i70.0.1.input-01
#net spindle-lube-oil-temp <=== hm2_5i23.0.7i70.0.1.input-02
#net oil-in-resevoir <=== hm2_5i23.0.7i70.0.1.input-03
#net hydraulic-filter-bypassing <=== hm2_5i23.0.7i70.0.1.input-04
#net manual-slide-lube <=== hm2_5i23.0.7i70.0.1.input-05
#net turret-clamped <=== hm2_5i23.0.7i70.0.1.input-06
#net turret-unclamped <=== hm2_5i23.0.7i70.0.1.input-07
#net turret-in-final-position <=== hm2_5i23.0.7i70.0.1.input-08
#net turret-position-strobe <=== hm2_5i23.0.7i70.0.1.input-09
#net turret-position-bcd-1 <=== hm2_5i23.0.7i70.0.1.input-10
#net turret-position-bcd-2 <=== hm2_5i23.0.7i70.0.1.input-11
#net turret-position-bcd-4 <=== hm2_5i23.0.7i70.0.1.input-12
#net lube-cycle <=== hm2_5i23.0.7i70.0.1.input-13
#net x-motor-overtemp <=== hm2_5i23.0.7i70.0.1.input-14
#net tailstock-up-permission <=== hm2_5i23.0.7i70.0.1.input-15
#net tailstock-up-limit <=== hm2_5i23.0.7i70.0.1.input-16
#net tailstock-down-limit <=== hm2_5i23.0.7i70.0.1.input-17
#net spindle-running-in-low-range <=== hm2_5i23.0.7i70.0.1.input-18
net spindle-running-in-high-range <=== hm2_5i23.0.7i70.0.1.input-19
#net master-stop <=== hm2_5i23.0.7i70.0.1.input-20
net x-pos-overtravel <=== hm2_5i23.0.7i70.0.1.input-24
net x-neg-overtravel <=== hm2_5i23.0.7i70.0.1.input-25
net z-pos-overtravel <=== hm2_5i23.0.7i70.0.1.input-26
net z-neg-overtravel <=== hm2_5i23.0.7i70.0.1.input-27



#*******************
#  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

net x-index-enable  <=>  pid.x.index-enable
net x-enable       => pid.x.enable
net x-output       => pid.x.output
net x-pos-cmd      => pid.x.command
net x-pos-fb       => pid.x.feedback

# ---PWM Generator signals/setup---

setp   hm2_5i23.0.pwmgen.04.output-type 2
setp   hm2_5i23.0.pwmgen.04.scale [AXIS_0]OUTPUT_SCALE

net x-output                             => hm2_5i23.0.pwmgen.04.value
net x-pos-cmd    axis.0.motor-pos-cmd
net x-enable     axis.0.amp-enable-out  => hm2_5i23.0.pwmgen.04.enable

# ---Reslover feedback signals/setup---

setp    hm2_5i23.0.resolver.04.scale [AXIS_0]RESOLVER_SCALE 

net x-pos-fb               <=  hm2_5i23.0.resolver.04.position 
net x-pos-fb               =>  axis.0.motor-pos-fb

# ---setup home / limit switch signals---

#net x-home-sw     =>  axis.0.home-sw-in
#net x-neg-limit     =>  axis.0.neg-lim-sw-in
#net x-pos-limit     =>  axis.0.pos-lim-sw-in


#============================SRT=====================

net x-neg-overtravel ===>  axis.0.neg-lim-sw-in
net x-pos-overtravel ===>  axis.0.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

net z-index-enable  <=>  pid.z.index-enable
net z-enable       => pid.z.enable
net z-output       => pid.z.output
net z-pos-cmd      => pid.z.command
net z-pos-fb       => pid.z.feedback


# ---PWM Generator signals/setup---

setp   hm2_5i23.0.pwmgen.02.output-type 2
setp   hm2_5i23.0.pwmgen.02.scale  [AXIS_2]OUTPUT_SCALE

net z-output      => hm2_5i23.0.pwmgen.02.value                 
net z-pos-cmd    axis.2.motor-pos-cmd       
net z-enable     axis.2.amp-enable-out  => hm2_5i23.0.pwmgen.02.enable

# ---Resolver feedback signals/setup---

setp    hm2_5i23.0.resolver.02.scale [AXIS_2]RESOLVER_SCALE 

net z-pos-fb        <=  hm2_5i23.0.resolver.02.position 
net z-pos-fb        =>  axis.2.motor-pos-fb


# ---setup home / limit switch signals---

#net z-home-sw     =>  axis.2.home-sw-in
#net z-neg-limit     =>  axis.2.neg-lim-sw-in
#net z-pos-limit     =>  axis.2.pos-lim-sw-in

#============================SRT=====================

net z-pos-overtravel ===> axis.2.pos-lim-sw-in
net z-neg-overtravel ===> axis.2.neg-lim-sw-in

#====================================================

#*******************
#  SPINDLE S
#*******************

# ---PWM Generator signals/setup---

setp   hm2_5i23.0.pwmgen.00.output-type 2
setp   hm2_5i23.0.pwmgen.00.scale  [SPINDLE_9]OUTPUT_SCALE 


net spindle-vel-cmd     => hm2_5i23.0.pwmgen.00.value
net spindle-enable      => hm2_5i23.0.pwmgen.00.enable

# ---Resolver feedback signals/setup---
setp    hm2_5i23.0.resolver.00.velocity-scale 1 # motor speed in RPS
setp    hm2_5i23.0.resolver.00.scale  [SPINDLE_9]RESOLVER_SCALE
#setp	hm2_5i23.0.resolver.00.lowpass.0 
#setp	hm2_5i23.0.resolver.00.index-invert 0
#setp	hm2_5i23.0.resolver.00.index-mask 0
#setp	hm2_5i23.0.resolver.00.index-mask-invert 0 


net spindle-revs              <= 	hm2_5i23.0.resolver.00.position
net spindle-vel-fb  	      <=	hm2_5i23.0.resolver.00.velocity
net spindle-index-enable     <=>  	hm2_5i23.0.resolver.00.index-enable


# ---setup spindle control signals---

net spindle-vel-cmd-rps    <=  motion.spindle-speed-out-rps
net spindle-junk        <=  motion.spindle-speed-out
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         =>  motion.spindle-speed-in
net spindle-index-enable  <=>  motion.spindle-index-enable

#===========================================================================================

#--------------SRT ADDED

net spindle-enable  ===> hm2_5i23.0.7i71.0.3.output-13

#-------------Gearchange------------------------------

setp gearchange.0.min1 30
setp gearchange.0.max1 950
setp gearchange.0.min2 95
setp gearchange.0.max2 3000
setp gearchange.0.scale2 3.1

setp gearchange.0.sel 0

setp	scale.3.gain 60
setp	lowpass.3.gain .01

net spindle-vel-fb ===> lowpass.0.in
net spindle-fb-filtered-rps ===> abs.3.in
net spindle-fb-filtered-abs-rps ===> scale.3.in
net spindle-junk             gearchange.0.speed-in
net spindle-vel-cmd          gearchange.0.speed-out
#net scaled-spindle-vel       pyvcp.spindle-speed 
net spindle-running-in-high-range ===> gearchange.0.sel
#net spindle-vel   lowpass.3.out 

#============================================================================================

# ---Setup spindle at speed signals---

#sets spindle-at-speed true

setp	scale.0.gain 60
setp	lowpass.0.gain .0009

net spindle-vel-fb		 lowpass.0.in
net spindle-fb-filtered-rps   <= lowpass.0.out  =>   abs.0.in
net spindle-fb-filtered-abs-rps    <=   abs.0.out  =>     scale.0.in
net scaled-spindle-vel   scale.0.out 

	

#******************************
# connect miscellaneous signals
#******************************

#  ---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-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



#============================================
# SRT ADDED LINES
#===========================================



#net machine-is-on ===> hm2_5i23.0.7i71.0.3.output-05

#net hydraulic-pressure-over-600psi ===> hm2_5i23.0.7i71.0.3.output-06



#  ---coolant signals---

net coolant-mist      <=  iocontrol.0.coolant-mist
net coolant-flood     <=  iocontrol.0.coolant-flood

#  ---probe signal---

net probe-in     =>  motion.probe-input

# ---jog button signals---

sets    jog-speed 1.000000

# connect feed overide increments - switches

    setp halui.feed-override.count-enable true
    setp halui.feed-override.direct-value true
    setp halui.feed-override.scale .01
net feedoverride-incr   =>  halui.feed-override.counts
net fo-incr-a           =>  foincr.sel0
net fo-incr-b           =>  foincr.sel1
net fo-incr-c           =>  foincr.sel2
net fo-incr-d           =>  foincr.sel3
net feedoverride-incr   <=  foincr.out-s
    setp foincr.debounce-time      0.200000
    setp foincr.use-graycode      False
    setp foincr.suppress-no-input False
    setp foincr.in00          0.000000
    setp foincr.in01          5.000000
    setp foincr.in02          10.000000
    setp foincr.in03          25.000000
    setp foincr.in04          50.000000
    setp foincr.in05          75.000000
    setp foincr.in06          90.000000
    setp foincr.in07          100.000000
    setp foincr.in08          110.000000
    setp foincr.in09          125.000000
    setp foincr.in10          140.000000
    setp foincr.in11          150.000000
    setp foincr.in12          165.000000
    setp foincr.in13          180.000000
    setp foincr.in14          190.000000
    setp foincr.in15          200.000000

# connect spindle overide increments 

    setp halui.spindle-override.count-enable true
    setp halui.spindle-override.direct-value true
    setp halui.spindle-override.scale .01
net spindleoverride-incr  =>  halui.spindle-override.counts
net so-incr-a             =>  soincr.sel0
net so-incr-b             =>  soincr.sel1
net so-incr-c             =>  soincr.sel2
net so-incr-d             =>  soincr.sel3
net spindleoverride-incr  <=  soincr.out-s
    setp soincr.debounce-time      0.200000
    setp soincr.use-graycode      False
    setp soincr.suppress-no-input False
    setp soincr.in00          0.000000
    setp soincr.in01          5.000000
    setp soincr.in02          10.000000
    setp soincr.in03          25.000000
    setp soincr.in04          50.000000
    setp soincr.in05          75.000000
    setp soincr.in06          90.000000
    setp soincr.in07          100.000000
    setp soincr.in08          110.000000
    setp soincr.in09          125.000000
    setp soincr.in10          140.000000
    setp soincr.in11          150.000000
    setp soincr.in12          165.000000
    setp soincr.in13          180.000000
    setp soincr.in14          190.000000
    setp soincr.in15          200.000000

#  ---motion control signals---

net in-position               <=  motion.in-position
net machine-is-enabled        <=  motion.motion-enabled

#==========================================================================

net machine-is-enabled ===> hm2_5i23.0.7i71.0.3.output-12 


#===========================================================================

#  ---digital in / out signals---

#  ---estop signals---

#net estop-out     <=  iocontrol.0.user-enable-out
#net estop-out     =>  iocontrol.0.emc-enable-in

#  ---toolchange signals for custom tool changer---

net tool-number             <=  iocontrol.0.tool-prep-number
net tool-change-request     <=  iocontrol.0.tool-change
net tool-change-confirmed   =>  iocontrol.0.tool-changed
net tool-prepare-request    <=  iocontrol.0.tool-prepare
net tool-prepare-confirmed  =>  iocontrol.0.tool-prepared


# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI

loadusr classicladder --nogui estop.clp