Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # core HAL config file for steppers
- # first load the core RT modules that will be needed
- # kinematics
- loadrt trivkins
- # motion controller, get name and thread periods from ini file
- # trajectory planner
- loadrt tp
- loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins
- # stepper module
- loadrt stepgen step_type=0,0,0,0
- #setp stepgen.0.steplen 100000
- #setp stepgen.0.stepspace 100000
- # hook its functions to realtime threads
- addf stepgen.make-pulses base-thread
- addf stepgen.capture-position servo-thread
- addf motion-command-handler servo-thread
- addf motion-controller servo-thread
- addf stepgen.update-freq servo-thread
- # connect position commands from motion module to step generator
- net Xpos-cmd <= axis.0.motor-pos-cmd
- net Xpos-cmd => stepgen.0.position-cmd
- net Ypos-cmd <= axis.1.motor-pos-cmd
- net Ypos-cmd => stepgen.1.position-cmd
- net Upos-cmd <= axis.2.motor-pos-cmd
- net Upos-cmd => stepgen.2.position-cmd
- net Vpos-cmd <= axis.3.motor-pos-cmd
- net Vpos-cmd => stepgen.3.position-cmd
- # connect position feedback from step generators
- # to motion module
- net Xpos-fb <= stepgen.0.position-fb
- net Xpos-fb => axis.0.motor-pos-fb
- net Ypos-fb <= stepgen.1.position-fb
- net Ypos-fb => axis.1.motor-pos-fb
- net Upos-fb <= stepgen.2.position-fb
- net Upos-fb => axis.2.motor-pos-fb
- net Vpos-fb <= stepgen.3.position-fb
- net Vpos-fb => axis.3.motor-pos-fb
- # send the position commands thru differentiators to
- # generate velocity and accel signals
- # first 8 differentiators
- loadrt ddt count=8
- # link the differentiator functions into the code
- addf ddt.0 servo-thread
- addf ddt.1 servo-thread
- addf ddt.2 servo-thread
- addf ddt.3 servo-thread
- addf ddt.4 servo-thread
- addf ddt.5 servo-thread
- addf ddt.6 servo-thread
- addf ddt.7 servo-thread
- # define the signals, and hook them up
- net Xpos-cmd => ddt.0.in
- net Xvel <= ddt.0.out
- net Xvel => ddt.1.in
- net Xacc <= ddt.1.out
- net Ypos-cmd => ddt.2.in
- net Yvel <= ddt.2.out
- net Yvel => ddt.3.in
- net Yacc <= ddt.3.out
- net Upos-cmd => ddt.4.in
- net Uvel <= ddt.4.out
- net Uvel => ddt.5.in
- net Uacc <= ddt.5.out
- net Vpos-cmd => ddt.6.in
- net Vvel <= ddt.6.out
- net Vvel => ddt.7.in
- net Vacc <= ddt.7.out
- # connect enable signals for step generators
- net Xen <= axis.0.amp-enable-out
- net Xen => stepgen.0.enable
- net Yen <= axis.1.amp-enable-out
- net Yen => stepgen.1.enable
- net Uen <= axis.2.amp-enable-out
- net Uen => stepgen.2.enable
- net Ven <= axis.3.amp-enable-out
- net Ven => stepgen.3.enable
- # connect signals to step pulse generator outputs
- net Xstep stepgen.0.step
- net Xdir stepgen.0.dir
- net Ystep stepgen.1.step
- net Ydir stepgen.1.dir
- net Ustep stepgen.2.step
- net Udir stepgen.2.dir
- net Vstep stepgen.3.step
- net Vdir stepgen.3.dir
- # connect signals to X home and min limit
- #net X-home => axis.0.home-sw-in axis.0.neg-lim-sw-in
- #net Y-home => axis.1.home-sw-in axis.1.neg-lim-sw-in
- #net U-home => axis.2.home-sw-in axis.2.pos-lim-sw-in
- #net V-home => axis.3.home-sw-in axis.3.neg-lim-sw-in
- # set stepgen module scaling - get values from ini file
- setp stepgen.0.position-scale [AXIS_0]SCALE
- setp stepgen.1.position-scale [AXIS_1]SCALE
- setp stepgen.2.position-scale [AXIS_6]SCALE
- setp stepgen.3.position-scale [AXIS_7]SCALE
- # set stepgen module accel limits - get values from ini file
- setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
- setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
- setp stepgen.2.maxaccel [AXIS_6]STEPGEN_MAXACCEL
- setp stepgen.3.maxaccel [AXIS_7]STEPGEN_MAXACCEL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement