# Shizuoka-1a.hal - 2008/04/18 # for Kirk Wallace's ST-N. May not be # appropriate for any other use. # 20090407KW - Added MPG # first load the core RT modules that will be needed # 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 num_joints=[TRAJ]AXES # stepper module, three step generators, all three using step/dir ## Half stepping loadrt stepgen step_type=9,9,9 # first load the parport driver ##loadrt hal_parport cfg="0x0378" ##loadrt hal_parport cfg="0xECF8 0xECD8" loadrt hal_parport cfg="0xA000 0xA800" # Load charge pump for main power relay so main # power does not come up until EMC becomes intelligent loadrt charge_pump # Load spindle functions loadrt abs count=1 loadrt scale count=1 loadrt conv_float_u32 count=1 loadrt serial_dac count=1 # Load encoder function for MPG - 20090407KW loadrt encoder num_chan=1 loadrt and2 count=3 loadrt mux4 count=1 #MPG # Load manual tool change function loadusr -W hal_manualtoolchange # next connect the parport functions to threads # read inputs first addf parport.0.read base-thread 1 # 1 places this function at the begining of the run list addf parport.1.read base-thread 1 # write outputs last addf parport.0.write base-thread -1 # -1 places this function at the end of the run list addf parport.1.write base-thread -1 # hook functions to base thread (high speed thread for step generation) addf stepgen.make-pulses base-thread addf encoder.update-counters base-thread # hook functions to 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 charge-pump servo-thread # MPG - 20090407KW addf encoder.capture-position servo-thread addf and2.0 servo-thread addf and2.1 servo-thread addf and2.2 servo-thread addf mux4.0 servo-thread #MPG # Run spindle functions addf abs.0 servo-thread addf scale.0 servo-thread addf conv-float-u32.0 servo-thread addf serial-dac.0 base-thread addf serial-dac.0.in-adj servo-thread # connect position commands from motion module to step generator net Xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd net Ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd net Zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd # connect position feedback from step generators # to motion module net Xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb net Ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb net Zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb # connect enable signals for step generators net Xen axis.0.amp-enable-out => stepgen.0.enable parport.0.pin-01-out net Yen axis.1.amp-enable-out => stepgen.1.enable parport.0.pin-06-out net Zen axis.2.amp-enable-out => stepgen.2.enable parport.0.pin-16-out # connect signals to step pulse generator outputs net XphaseA stepgen.0.phase-A => parport.0.pin-02-out net XphaseB stepgen.0.phase-B => parport.0.pin-03-out net XphaseC stepgen.0.phase-C => parport.0.pin-04-out net XphaseD stepgen.0.phase-D => parport.0.pin-05-out net YphaseA stepgen.1.phase-A => parport.0.pin-07-out net YphaseB stepgen.1.phase-B => parport.0.pin-08-out net YphaseC stepgen.1.phase-C => parport.0.pin-09-out net YphaseD stepgen.1.phase-D => parport.0.pin-14-out net ZphaseA stepgen.2.phase-A => parport.0.pin-17-out net ZphaseB stepgen.2.phase-B => parport.1.pin-01-out net ZphaseC stepgen.2.phase-C => parport.1.pin-02-out net ZphaseD stepgen.2.phase-D => parport.1.pin-03-out # 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_2]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_2]STEPGEN_MAXACCEL # create a signal for the estop loopback #1# net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in charge-pump.enable net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in parport.1.pin-04-out # Connect charge pump to parport #1# net cp charge-pump.out parport.1.pin-04-out # create signals for tool loading loopback ###net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared ###net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change net tool-changed hal_manualtoolchange.changed => iocontrol.0.tool-changed net tool-prep-number hal_manualtoolchange.number => iocontrol.0.tool-prep-number net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared #### Spindle Stuff #### ##setp scale.0.gain 1.365 setp scale.0.gain 1.15 ##setp scale.0.gain 1 setp scale.0.offset 0 net SpindleSpeedCmd1 motion.spindle-speed-out abs.0.in net SpindleSpeedCmd abs.0.out scale.0.in setp conv-float-u32.0.clamp TRUE net SSCfloat scale.0.out conv-float-u32.0.in net SpindleSpeedDACcmd conv-float-u32.0.out serial-dac.0.data-in net SpindleSpeedDACclock serial-dac.0.dac-clock parport.1.pin-05-out net SpindleSpeedDACdata serial-dac.0.dac-bit parport.1.pin-06-out net SpindleSpeedDACload serial-dac.0.dac-load parport.1.pin-07-out net SpindleFwd motion.spindle-forward parport.1.pin-08-out net SpindleRev motion.spindle-reverse parport.1.pin-09-out #### Spindle Stuff (end) #### net FloodOn iocontrol.0.coolant-flood parport.1.pin-14-out #net MistOn iocontrol.0.coolant-mist parport.1.pin-16-out #net CarouselCW parport.1.pin-17-out # set by M100 and M101 net MistOn iocontrol.0.coolant-mist parport.1.pin-17-out #net CarouselCCW parport.2.pin-01-out # set by M100 and M101 #net CarouselHome parport.2.pin-02-out # set by M103 #net ToolIn parport.2.pin-03-out # set by M105 and M106 #net ToolOut parport.2.pin-04-out # set by M105 and M106 #net parport.2.pin-05-out #net parport.2.pin-06-out #net parport.2.pin-07-out #net parport.2.pin-08-out #net parport.2.pin-09-out #net parport.2.pin-14-out #net parport.2.pin-16-out #net parport.2.pin-17-out #net CarouselReset parport.0.pin-10-in #net ClawOpen parport.0.pin-11-in #net ClawCloseded parport.0.pin-12-in #net parport.0.pin-13-in #net parport.0.pin-15-in # Connect MPG encoder - 20090407KW net MPGa encoder.0.phase-B parport.1.pin-10-in net MPGb encoder.0.phase-A parport.1.pin-11-in net MPGcounts encoder.0.counts axis.0.jog-counts axis.1.jog-counts axis.2.jog-counts # connected in mpg_control.hal - axis.x.jog-scale # connected in mpg_control.hal - axis.x.jog-enable #MPG #net parport.1.pin-12-in #net parport.1.pin-13-in #net parport.1.pin-15-in #net parport.2.pin-10-in #net parport.2.pin-11-in #net parport.2.pin-12-in #net parport.2.pin-13-in #net parport.2.pin-15-in