# Generated by PNCconf at Wed May 23 18:29:55 2012
# If you make changes to this file, they will be
# 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/5i20/SVST8_4.BIT num_encoders=4 num_pwmgens=4 num_stepgens=0" 
    setp hm2_5i20.0.pwmgen.pwm_frequency 100000
    setp hm2_5i20.0.pwmgen.pdm_frequency 100000
    setp hm2_5i20.0.watchdog.timeout_ns 10000000

addf hm2_5i20.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
loadrt pid num_chan=2
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
setp pid.0.Pgain pid.x.Pgain
setp pid.0.Igain pid.x.Igain
setp pid.0.Dgain pid.x.Dgain
setp pid.0.bias pid.x.bias
setp pid.0.FF0 pid.x.FF0
setp pid.0.FF1 pid.x.FF1
setp pid.0.FF2 pid.x.FF2
setp pid.0.deadband pid.x.deadband
setp pid.0.maxoutput pid.x.maxoutput
setp pid.0.enable pid.x.enable
setp pid.0.command pid.x.command
setp pid.0.feedback pid.x.feedback
setp pid.0.output pid.x.output
setp pid.0.index-enable pid.x.index-enable

setp    pid.1.Pgain         pid.y.Pgain
setp    pid.1.Igain         pid.y.Igain
setp    pid.1.Dgain         pid.y.Dgain
setp    pid.1.bias          pid.y.bias
setp    pid.1.FF0           pid.y.FF0
setp    pid.1.FF1           pid.y.FF1
setp    pid.1.FF2           pid.y.FF2
setp    pid.1.deadband      pid.y.deadband
setp    pid.1.maxoutput     pid.y.maxoutput
setp    pid.1.enable        pid.y.enable
setp    pid.1.command       pid.y.command
setp    pid.1.feedback      pid.y.feedback
setp    pid.1.output        pid.y.output
setp    pid.1.index-enable  pid.y.index-enable

addf hm2_5i20.0.write         servo-thread
addf hm2_5i20.0.pet_watchdog  servo-thread

# external output signals



# external input signals


# --- HOME-X ---
net home-x     <=  hm2_5i20.0.gpio.026.in_not
# --- HOME-Y ---
net home-y     <=  hm2_5i20.0.gpio.024.in_not
# --- MAX-X ---
net max-x     <=  hm2_5i20.0.gpio.028.in
# --- BOTH-Y ---
net both-y     <=  hm2_5i20.0.gpio.030.in
# --- MIN-X ---
net min-x     <=  hm2_5i20.0.gpio.032.in

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

# PWM Generator signals/setup

    setp hm2_5i20.0.pwmgen.02.output-type 1
    setp hm2_5i20.0.pwmgen.02.scale  [AXIS_0]OUTPUT_SCALE
net xenable     => pid.x.enable
net xoutput     pid.x.output           => hm2_5i20.0.pwmgen.02.value
net xpos-cmd    axis.0.motor-pos-cmd   => pid.x.command
net xenable     axis.0.amp-enable-out  => hm2_5i20.0.pwmgen.02.enable

# ---Encoder feedback signals/setup---

    setp hm2_5i20.0.encoder.02.counter-mode 0
    setp hm2_5i20.0.encoder.02.filter 1
    setp hm2_5i20.0.encoder.02.index-invert 0
    setp hm2_5i20.0.encoder.02.index-mask 0
    setp hm2_5i20.0.encoder.02.index-mask-invert 0
    setp hm2_5i20.0.encoder.02.scale  [AXIS_0]INPUT_SCALE
net xpos-fb               <=  hm2_5i20.0.encoder.02.position
net xpos-fb               =>  pid.x.feedback
net xpos-fb               =>  axis.0.motor-pos-fb
net x-index-enable    axis.0.index-enable  <=>  hm2_5i20.0.encoder.02.index-enable

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

net home-x     =>  axis.0.home-sw-in
net min-x     =>  axis.0.neg-lim-sw-in
net max-x     =>  axis.0.pos-lim-sw-in

#*******************
#  AXIS Y
#*******************

    setp pid.y.Pgain     [AXIS_1]P
    setp pid.y.Igain     [AXIS_1]I
    setp pid.y.Dgain     [AXIS_1]D
    setp pid.y.bias      [AXIS_1]BIAS
    setp pid.y.FF0       [AXIS_1]FF0
    setp pid.y.FF1       [AXIS_1]FF1
    setp pid.y.FF2       [AXIS_1]FF2
    setp pid.y.deadband  [AXIS_1]DEADBAND
    setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
net y-index-enable  <=>  pid.y.index-enable

# PWM Generator signals/setup

    setp hm2_5i20.0.pwmgen.00.output-type 1
    setp hm2_5i20.0.pwmgen.00.scale  [AXIS_1]OUTPUT_SCALE
net yenable     => pid.y.enable
net youtput     pid.y.output           => hm2_5i20.0.pwmgen.00.value
net ypos-cmd    axis.1.motor-pos-cmd   => pid.y.command
net yenable     axis.1.amp-enable-out  => hm2_5i20.0.pwmgen.00.enable

# ---Encoder feedback signals/setup---

    setp hm2_5i20.0.encoder.00.counter-mode 0
    setp hm2_5i20.0.encoder.00.filter 1
    setp hm2_5i20.0.encoder.00.index-invert 0
    setp hm2_5i20.0.encoder.00.index-mask 0
    setp hm2_5i20.0.encoder.00.index-mask-invert 0
    setp hm2_5i20.0.encoder.00.scale  [AXIS_1]INPUT_SCALE
net ypos-fb               <=  hm2_5i20.0.encoder.00.position
net ypos-fb               =>  pid.y.feedback
net ypos-fb               =>  axis.1.motor-pos-fb
net y-index-enable    axis.1.index-enable  <=>  hm2_5i20.0.encoder.00.index-enable

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

net home-y     =>  axis.1.home-sw-in
net both-y     =>  axis.1.neg-lim-sw-in
net both-y     =>  axis.1.pos-lim-sw-in

#*******************
#  AXIS Z
#*******************

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

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

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

net din-00     =>  motion.digital-in-00
net din-03     =>  motion.digital-in-03
#  ---estop signals---

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