Witam,
Od dłuższego czasu walczę z bazowaniem na index enkoder już ogarnąłem podłączony jest ok, teraz hal i tu jest problem siedzę i siedzę i nie wiem jak to ugryzc próbuję coś skopiować z indexu tokarki ale bazowanie niestety nie działa
# load encoder stuff
loadrt encoder num_chan=1
loadrt scale count=1
loadrt lowpass count=1
# counter mode
setp encoder.0.counter-mode 1
# 100 counts per encoder rev
setp encoder.0.position-scale 100
# encoder reset control
# hook up motion controller's sync output
net axis.0-index-enable motion.axis.0-index-enable <=> encoder.0.index-enable
# hook up spindle encoder
net axis.0-index parport.0.pin-15-in encoder.0.phase-Z
# count spindle encoder pulses
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
addf lowpass.0 servo-thread
addf scale.0 servo-thread
no i to niestety nie działa czy ktoś by mógł mi to objaśnić?
Bazowanie na index
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 2
- Posty: 1418
- Rejestracja: 23 cze 2008, 10:38
- Lokalizacja: OOL lub DW
- Kontakt:
Na początek bazowanie chodzi o frezarkę i bazowanie osi na indeks?
http://linuxcnc.org/docs/2.7/html/confi ... oming.html
Czy to będzie pomocne?
http://linuxcnc.org/docs/2.7/html/confi ... oming.html
Czy to będzie pomocne?
Kod: Zaznacz cały
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES num_dio=20
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=1 num_pwmgens=0 num_stepgens=2 sserial_port_0=00xxxx"
setp hm2_5i25.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.z,pid.s
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle
loadrt mux16 names=soincr
# load a near component and attach it to a thread
loadrt near
addf near.0 servo-thread
addf hm2_5i25.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 pid.s.do-pid-calcs servo-thread
addf abs.spindle servo-thread
addf lowpass.spindle servo-thread
addf hm2_5i25.0.write servo-thread
addf soincr servo-thread
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10 numBits=50 numWords=50
loadusr classicladder --nogui custom.clp
addf classicladder.0.refresh servo-thread
# external output signals
# --- COOLANT-FLOOD ---
net coolant-flood hm2_5i25.0.7i76.0.0.output-03
# --- COOLANT-MIST ---
net coolant-mist hm2_5i25.0.7i76.0.0.output-04
# --- SPINDLE-CW ---
net spindle-cw hm2_5i25.0.7i76.0.0.output-06
# --- SPINDLE-CCW ---
net spindle-ccw hm2_5i25.0.7i76.0.0.output-05
# --- MACHINE-IS-ENABLED ---
net machine-is-enabled hm2_5i25.0.7i76.0.0.output-07
# external input signals
# --- HOME-X ---
net max-home-x <= hm2_5i25.0.7i76.0.0.input-00
# --- MIN-X ---
net min-x <= hm2_5i25.0.7i76.0.0.input-01
# --- HOME-Z ---
net max-home-z <= hm2_5i25.0.7i76.0.0.input-02
#*******************
# 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
setp pid.x.error-previous-target true
setp pid.x.maxerror .0005
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-vel-cmd => pid.x.command-deriv
net x-pos-fb => pid.x.feedback
net x-output => pid.x.output
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
setp hm2_5i25.0.stepgen.00.dirhold [AXIS_0]DIRHOLD
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.position-scale [AXIS_0]STEP_SCALE
setp hm2_5i25.0.stepgen.00.step_type 0
setp hm2_5i25.0.stepgen.00.control-type 1
setp hm2_5i25.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= axis.0.motor-pos-cmd
net x-vel-cmd <= axis.0.joint-vel-cmd
net x-output <= hm2_5i25.0.stepgen.00.velocity-cmd
net x-pos-fb <= hm2_5i25.0.stepgen.00.position-fb
net x-pos-fb => axis.0.motor-pos-fb
net x-enable <= axis.0.amp-enable-out
net x-enable => hm2_5i25.0.stepgen.00.enable
# ---setup home / limit switch signals---
net max-home-x => axis.0.home-sw-in
net min-x => axis.0.neg-lim-sw-in
net x-pos-limit => 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
setp pid.z.error-previous-target true
setp pid.z.maxerror .0005
net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-vel-cmd => pid.z.command-deriv
net z-pos-fb => pid.z.feedback
net z-output => pid.z.output
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.01.dirsetup [AXIS_2]DIRSETUP
setp hm2_5i25.0.stepgen.01.dirhold [AXIS_2]DIRHOLD
setp hm2_5i25.0.stepgen.01.steplen [AXIS_2]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [AXIS_2]STEPSPACE
setp hm2_5i25.0.stepgen.01.position-scale [AXIS_2]STEP_SCALE
setp hm2_5i25.0.stepgen.01.step_type 0
setp hm2_5i25.0.stepgen.01.control-type 1
setp hm2_5i25.0.stepgen.01.maxaccel [AXIS_2]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.01.maxvel [AXIS_2]STEPGEN_MAXVEL
setp hm2_5i25.0.gpio.002.invert_output true #modification sens
# ---closedloop stepper signals---
net z-pos-cmd <= axis.2.motor-pos-cmd
net z-vel-cmd <= axis.2.joint-vel-cmd
net z-output <= hm2_5i25.0.stepgen.01.velocity-cmd
net z-pos-fb <= hm2_5i25.0.stepgen.01.position-fb
net z-pos-fb => axis.2.motor-pos-fb
net z-enable <= axis.2.amp-enable-out
net z-enable => hm2_5i25.0.stepgen.01.enable
# ---setup home / limit switch signals---
net max-home-z => axis.2.home-sw-in
net max-home-z => axis.2.pos-lim-sw-in
#*******************
# SPINDLE S
#*******************
setp pid.s.Pgain [SPINDLE_9]P
setp pid.s.Igain [SPINDLE_9]I
setp pid.s.Dgain [SPINDLE_9]D
setp pid.s.bias [SPINDLE_9]BIAS
setp pid.s.FF0 [SPINDLE_9]FF0
setp pid.s.FF1 [SPINDLE_9]FF1
setp pid.s.FF2 [SPINDLE_9]FF2
setp pid.s.deadband [SPINDLE_9]DEADBAND
setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT
setp pid.s.error-previous-target true
net spindle-index-enable <=> pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm-abs => pid.s.command
net spindle-vel-fb-rpm-abs => pid.s.feedback
net spindle-output <= pid.s.output
# ---digital potentionmeter output signals/setup---
setp hm2_5i25.0.7i76.0.0.spinout-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i76.0.0.spinout-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
setp hm2_5i25.0.7i76.0.0.spinout-scalemax [SPINDLE_9]OUTPUT_SCALE
net spindle-vel-cmd-rpm-abs => hm2_5i25.0.7i76.0.0.spinout
net spindle-enable => hm2_5i25.0.7i76.0.0.spinena
net spindle-ccw => hm2_5i25.0.7i76.0.0.spindir
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-vel-cmd-rpm <= motion.spindle-speed-out
net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
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-rps => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
# ---Setup spindle at speed signals---
#sets spindle-at-speed true
# ---Setup spindle at speed signals---
net spindle-vel-cmd-rps => near.0.in1
net spindle-vel-fb => near.0.in2
net spindle-at-speed <= near.0.out
setp near.0.scale 1.000000
setp near.0.difference 3.333333
# Spindle encoder
# ----------------
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 1
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale 100
net spindle-revs <= hm2_5i25.0.encoder.00.position
net spindle-vel-fb <= hm2_5i25.0.encoder.00.velocity
net spindle-index-enable <=> hm2_5i25.0.encoder.00.index-enable
#******************************
# 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
# ---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
MACH3 cncTworzenie Makr do palników magazynków THC OHC inneEKRANY dla firm producentów maszyn Budowa sprzedaż wypalarki plazma gaz obrotnice Elektrodrążarki Frezarki Tokarki Giętarki3D inne wg zlecenia 888 703 196 Tomek Komor [email protected]
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 128
- Rejestracja: 13 lut 2013, 23:17
- Lokalizacja: Plock
Tak chodzi o trójosiową frezarkę z racji tego, że kupiłem na razie na próbę jeden enkoder i testy przeprowadzam na jednej osi, zobaczę pokombinuję ten hal to całe sprzężenie zwrotne na karcie mesa
[ Dodano: 2017-06-11, 14:59 ]
niestety dalej nie wiem jak to ugryzć....
[ Dodano: 2017-06-11, 23:20 ]
ktoś coś podrzuci pomysł?
[ Dodano: 2017-06-11, 14:59 ]
niestety dalej nie wiem jak to ugryzć....
[ Dodano: 2017-06-11, 23:20 ]
ktoś coś podrzuci pomysł?
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 2
- Posty: 1418
- Rejestracja: 23 cze 2008, 10:38
- Lokalizacja: OOL lub DW
- Kontakt:
elmo02,
Które wpisy pomiąłeś?
Wklej pliki bo kto wie czy jakiś napaleniec nie będzie szukał tego za parę dni Sam wkleiłem pliki z robota scara, widziałem że ktoś rzeźbił coś a miał łatwiej na start.
Które wpisy pomiąłeś?
Wklej pliki bo kto wie czy jakiś napaleniec nie będzie szukał tego za parę dni Sam wkleiłem pliki z robota scara, widziałem że ktoś rzeźbił coś a miał łatwiej na start.
MACH3 cncTworzenie Makr do palników magazynków THC OHC inneEKRANY dla firm producentów maszyn Budowa sprzedaż wypalarki plazma gaz obrotnice Elektrodrążarki Frezarki Tokarki Giętarki3D inne wg zlecenia 888 703 196 Tomek Komor [email protected]
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 128
- Rejestracja: 13 lut 2013, 23:17
- Lokalizacja: Plock
Pominąłem
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
a tak wygląda działający hal dla jednej osi w ini trzeba dopisać HOME_USE_INDEX=YES
# Generated by stepconf 1.1 at Tue Mar 12 22:49:29 2002
# Jeśli zmodyfikujesz ten plik zmainy zostaną
# nadpisane gdy uruchomisz ponownie Stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0x378 "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt pwmgen output_type=1
loadrt encoder num_chan=1
loadrt scale count=1
loadrt lowpass count=1
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 270
setp pwmgen.0.scale 3000
setp pwmgen.0.offset 0.05
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-at-speed => motion.spindle-at-speed
#net axis.0.index-enable => encoder.0.index-enable
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 1
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp parport.0.pin-07-out-invert 1
net zdir => parport.0.pin-07-out
net spindle-pwm => parport.0.pin-16-out
net estop-ext <= parport.0.pin-10-in-not
net min-home-x <= parport.0.pin-11-in
net max-home-z <= parport.0.pin-12-in
net min-home-y <= parport.0.pin-13-in
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net min-home-x => axis.0.home-sw-in
net min-home-x => axis.0.neg-lim-sw-in
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net min-home-y => axis.1.home-sw-in
net min-home-y => axis.1.neg-lim-sw-in
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 35000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net max-home-z => axis.2.home-sw-in
net max-home-z => axis.2.pos-lim-sw-in
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# counter mode
setp encoder.0.counter-mode 1
# 100 counts per encoder rev
setp encoder.0.position-scale 1024
# hook up motion controller's sync output
net xindex-enable <=> axis.0.index-enable
net xindex-enable <=> encoder.0.index-enable
net xindex encoder.0.phase-Z <= parport.0.pin-15-in
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
a tak wygląda działający hal dla jednej osi w ini trzeba dopisać HOME_USE_INDEX=YES
# Generated by stepconf 1.1 at Tue Mar 12 22:49:29 2002
# Jeśli zmodyfikujesz ten plik zmainy zostaną
# nadpisane gdy uruchomisz ponownie Stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0x378 "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt pwmgen output_type=1
loadrt encoder num_chan=1
loadrt scale count=1
loadrt lowpass count=1
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 270
setp pwmgen.0.scale 3000
setp pwmgen.0.offset 0.05
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-at-speed => motion.spindle-at-speed
#net axis.0.index-enable => encoder.0.index-enable
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 1
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp parport.0.pin-07-out-invert 1
net zdir => parport.0.pin-07-out
net spindle-pwm => parport.0.pin-16-out
net estop-ext <= parport.0.pin-10-in-not
net min-home-x <= parport.0.pin-11-in
net max-home-z <= parport.0.pin-12-in
net min-home-y <= parport.0.pin-13-in
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net min-home-x => axis.0.home-sw-in
net min-home-x => axis.0.neg-lim-sw-in
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net min-home-y => axis.1.home-sw-in
net min-home-y => axis.1.neg-lim-sw-in
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 35000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net max-home-z => axis.2.home-sw-in
net max-home-z => axis.2.pos-lim-sw-in
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# counter mode
setp encoder.0.counter-mode 1
# 100 counts per encoder rev
setp encoder.0.position-scale 1024
# hook up motion controller's sync output
net xindex-enable <=> axis.0.index-enable
net xindex-enable <=> encoder.0.index-enable
net xindex encoder.0.phase-Z <= parport.0.pin-15-in