Advertisement
Guest User

Untitled

a guest
May 1st, 2015
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1. # #######################################
  2. #
  3. # HAL file for HostMot2 with 3 steppers
  4. #
  5. # Derived from Ted Hyde's original hm2-servo config
  6. #
  7. # Based up work and discussion with Seb & Peter & Jeff
  8. # GNU license references - insert here. www.linuxcnc.org
  9. #
  10. #
  11. # ########################################
  12. # Firmware files are in /lib/firmware/hm2/7i43/
  13. # Must symlink the hostmot2 firmware directory of sanbox to
  14. # /lib/firmware before running EMC2...
  15. # sudo ln -s $HOME/emc2-sandbox/src/hal/drivers/mesa-hostmot2/firmware /lib/firmware/hm2
  16. #
  17. # See also:
  18. # <http://www.linuxcnc.org/docs/devel/html/man/man9/hostmot2.9.html#config%20modparam>
  19. # and http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?HostMot2
  20. #
  21. # #####################################################################
  22.  
  23.  
  24. # ###################################
  25. # Core EMC/HAL Loads
  26. # ###################################
  27.  
  28.  
  29. # kinematics
  30. loadrt trivkins
  31.  
  32. # motion controller
  33. loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
  34.  
  35. # standard components
  36. loadrt pid num_chan=4
  37.  
  38. # hostmot2 driver
  39. loadrt hostmot2
  40.  
  41. # load low-level driver
  42. loadrt [HOSTMOT2](DRIVER) config=[HOSTMOT2](CONFIG)
  43.  
  44. setp hm2_[HOSTMOT2](BOARD).0.watchdog.timeout_ns 25000000
  45.  
  46.  
  47. # ################################################
  48. # THREADS
  49. # ################################################
  50.  
  51. addf hm2_[HOSTMOT2](BOARD).0.read servo-thread
  52. addf motion-command-handler servo-thread
  53. addf motion-controller servo-thread
  54. addf pid.0.do-pid-calcs servo-thread
  55. addf pid.1.do-pid-calcs servo-thread
  56. addf pid.2.do-pid-calcs servo-thread
  57. addf pid.3.do-pid-calcs servo-thread
  58. addf hm2_[HOSTMOT2](BOARD).0.write servo-thread
  59. #addf hm2_[HOSTMOT2](BOARD).0.pet_watchdog servo-thread
  60.  
  61. # Hacks to enable the DPLL sampling of the stepgen position:
  62.  
  63. # setp hm2_[HOSTMOT2](BOARD).0.raw.write_address 0x2A00
  64. # Enable and select timer channel 1:
  65. #setp hm2_[HOSTMOT2](BOARD).0.raw.write_data 0x00009000
  66. # Disable:
  67. #setp hm2_[HOSTMOT2](BOARD).0.raw.write_data 0x00000000
  68. #setp hm2_[HOSTMOT2](BOARD).0.raw.write_strobe true
  69. # latch 50 usec beforw nominal read time:
  70.  
  71. setp hm2_[HOSTMOT2](BOARD).0.dpll.01.timer-us -50
  72. setp hm2_[HOSTMOT2](BOARD).0.stepgen.timer-number 1
  73.  
  74. # ######################################################
  75. # Axis-of-motion Specific Configs (not the GUI)
  76. # ######################################################
  77.  
  78.  
  79. # ################
  80. # X [0] Axis
  81. # ################
  82.  
  83. # axis enable chain
  84. newsig emcmot.00.enable bit
  85. sets emcmot.00.enable FALSE
  86.  
  87. net emcmot.00.enable <= axis.0.amp-enable-out
  88. net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable pid.0.enable
  89.  
  90.  
  91. # position command and feedback
  92. net emcmot.00.pos-cmd axis.0.motor-pos-cmd => pid.0.command
  93. net emcmot.00.vel-cmd axis.0.joint-vel-cmd => pid.0.command-deriv
  94. net motor.00.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-fb axis.0.motor-pos-fb pid.0.feedback
  95. net motor.00.command pid.0.output hm2_[HOSTMOT2](BOARD).0.stepgen.00.velocity-cmd
  96. setp pid.0.error-previous-target true
  97.  
  98.  
  99. # timing parameters
  100. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
  101. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [AXIS_0]DIRHOLD
  102.  
  103. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [AXIS_0]STEPLEN
  104. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [AXIS_0]STEPSPACE
  105.  
  106. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [AXIS_0]SCALE
  107.  
  108. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL
  109. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC
  110.  
  111. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 1
  112. setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.control-type 1
  113.  
  114. # set PID loop gains from inifile
  115. setp pid.0.Pgain [AXIS_0]P
  116. setp pid.0.Igain [AXIS_0]I
  117. setp pid.0.Dgain [AXIS_0]D
  118. setp pid.0.bias [AXIS_0]BIAS
  119. setp pid.0.FF0 [AXIS_0]FF0
  120. setp pid.0.FF1 [AXIS_0]FF1
  121. setp pid.0.FF2 [AXIS_0]FF2
  122. setp pid.0.deadband [AXIS_0]DEADBAND
  123. setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT
  124. setp pid.0.maxerror [AXIS_0]MAX_ERROR
  125.  
  126. # ################
  127. # Y [1] Axis
  128. # ################
  129.  
  130. # axis enable chain
  131. newsig emcmot.01.enable bit
  132. sets emcmot.01.enable FALSE
  133.  
  134. net emcmot.01.enable <= axis.1.amp-enable-out
  135. net emcmot.01.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.01.enable pid.1.enable
  136.  
  137. # position command and feedback
  138. net emcmot.01.pos-cmd axis.1.motor-pos-cmd => pid.1.command
  139. net emcmot.01.vel-cmd axis.1.joint-vel-cmd => pid.1.command-deriv
  140. net motor.01.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-fb axis.1.motor-pos-fb pid.1.feedback
  141. net motor.01.command pid.1.output hm2_[HOSTMOT2](BOARD).0.stepgen.01.velocity-cmd
  142. setp pid.1.error-previous-target true
  143.  
  144. # timing parameters
  145. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [AXIS_1]DIRSETUP
  146. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [AXIS_1]DIRHOLD
  147.  
  148. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [AXIS_1]STEPLEN
  149. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [AXIS_1]STEPSPACE
  150.  
  151. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [AXIS_1]SCALE
  152.  
  153. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL
  154. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC
  155.  
  156. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 1
  157. setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.control-type 1
  158.  
  159. # set PID loop gains from inifile
  160. setp pid.1.Pgain [AXIS_1]P
  161. setp pid.1.Igain [AXIS_1]I
  162. setp pid.1.Dgain [AXIS_1]D
  163. setp pid.1.bias [AXIS_1]BIAS
  164. setp pid.1.FF0 [AXIS_1]FF0
  165. setp pid.1.FF1 [AXIS_1]FF1
  166. setp pid.1.FF2 [AXIS_1]FF2
  167. setp pid.1.deadband [AXIS_1]DEADBAND
  168. setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT
  169. setp pid.1.maxerror [AXIS_1]MAX_ERROR
  170.  
  171. # ################
  172. # Z [2] Axis
  173. # ################
  174.  
  175. # axis enable chain
  176. newsig emcmot.02.enable bit
  177. sets emcmot.02.enable FALSE
  178.  
  179. net emcmot.02.enable <= axis.2.amp-enable-out
  180. net emcmot.02.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.02.enable pid.2.enable
  181.  
  182.  
  183. # position command and feedback
  184. net emcmot.02.pos-cmd axis.2.motor-pos-cmd => pid.2.command
  185. net emcmot.02.vel-cmd axis.2.joint-vel-cmd => pid.2.command-deriv
  186. net motor.02.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-fb axis.2.motor-pos-fb pid.2.feedback
  187. net motor.02.command pid.2.output hm2_[HOSTMOT2](BOARD).0.stepgen.02.velocity-cmd
  188. setp pid.2.error-previous-target true
  189.  
  190.  
  191. # timing parameters
  192. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [AXIS_2]DIRSETUP
  193. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [AXIS_2]DIRHOLD
  194.  
  195. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [AXIS_2]STEPLEN
  196. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [AXIS_2]STEPSPACE
  197.  
  198. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [AXIS_2]SCALE
  199.  
  200. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL
  201. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC
  202.  
  203. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.step_type 1
  204. setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.control-type 1
  205.  
  206. # set PID loop gains from inifile
  207. setp pid.2.Pgain [AXIS_2]P
  208. setp pid.2.Igain [AXIS_2]I
  209. setp pid.2.Dgain [AXIS_2]D
  210. setp pid.2.bias [AXIS_2]BIAS
  211. setp pid.2.FF0 [AXIS_2]FF0
  212. setp pid.2.FF1 [AXIS_2]FF1
  213. setp pid.2.FF2 [AXIS_2]FF2
  214. setp pid.2.deadband [AXIS_2]DEADBAND
  215. setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT
  216. setp pid.2.maxerror [AXIS_2]MAX_ERROR
  217.  
  218. # Spindle control
  219.  
  220. # set PID loop gains from inifile
  221. setp pid.3.Pgain [SPINDLE_9]P
  222. setp pid.3.Igain [SPINDLE_9]I
  223. setp pid.3.Dgain [SPINDLE_9]D
  224. setp pid.3.bias [SPINDLE_9]BIAS
  225. setp pid.3.FF0 [SPINDLE_9]FF0
  226. setp pid.3.FF1 [SPINDLE_9]FF1
  227. setp pid.3.FF2 [SPINDLE_9]FF2
  228. setp pid.3.deadband [SPINDLE_9]DEADBAND
  229. setp pid.3.maxoutput [SPINDLE_9]MAX_OUTPUT
  230. setp pid.3.maxerror [SPINDLE_9]MAX_ERROR
  231.  
  232. setp hm2_[HOSTMOT2](BOARD).0.7i76.0.0.spinout-scalemax [SPINDLE_9]SCALE
  233. setp hm2_[HOSTMOT2](BOARD).0.7i76.0.0.spinout-minlim [SPINDLE_9]MINLIM
  234. setp hm2_[HOSTMOT2](BOARD).0.7i76.0.0.spinout-maxlim [SPINDLE_9]MAXLIM
  235.  
  236. # ##################################################
  237. # Standard I/O Block - EStop, Etc
  238. # ##################################################
  239.  
  240. # create a signal for the estop loopback
  241. net estop-loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in
  242.  
  243. # create signals for tool loading loopback
  244. net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
  245. net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement