ppmc_load.hal
# sample file pulls all load commands into a single file
# when emc2 starts it loads iocontrol
# kinematics
loadrt trivkins
#motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY
# next load the PID module, for four PID loops
loadrt pid num_chan=4
# install Universal PWM Controller driver
loadrt hal_ppmc
# load realtime portion of scope, just to have it handy
loadrt scope_rt
# make some signals for the scope for tuning.
loadrt ddt count=4
loadrt estop_latch count=1
loadrt and2 count=1
loadrt conv_s32_float count=1
loadrt mult2 count=2
loadrt lowpass count=2
loadrt abs
# set up the realtime thread
# read inputs first
addf ppmc.0.read servo-thread
# then run the motion controller
addf motion-command-handler servo-thread
addf and2.0 servo-thread
addf estop-latch.0 servo-thread
addf motion-controller servo-thread
# then the PID loops
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
# write outputs last
addf conv-s32-float.0 servo-thread
addf mult2.0 servo-thread
addf mult2.1 servo-thread
addf lowpass.0 servo-thread
addf abs.0 servo-thread
addf ppmc.0.write servo-thread