acondit

myPCBMill.hal

Sep 18th, 2022 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.03 KB | None | 0 0
  1. # Generated by PNCconf at Thu Sep 22 10:36:29 2022
  2. # Using LinuxCNC version: 2.8
  3. # If you make changes to this file, they will be
  4. # overwritten when you run PNCconf again
  5.  
  6. loadrt [KINS]KINEMATICS
  7. loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
  8. loadrt hostmot2
  9. loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=1 num_pwmgens=0 num_stepgens=3 sserial_port_0=0xxxxx"
  10. setp hm2_7i76e.0.watchdog.timeout_ns 5000000
  11. loadrt pid names=pid.x,pid.y,pid.z,pid.s
  12.  
  13. addf hm2_7i76e.0.read servo-thread
  14. addf motion-command-handler servo-thread
  15. addf motion-controller servo-thread
  16. addf pid.x.do-pid-calcs servo-thread
  17. addf pid.y.do-pid-calcs servo-thread
  18. addf pid.z.do-pid-calcs servo-thread
  19. addf pid.s.do-pid-calcs servo-thread
  20. addf hm2_7i76e.0.write servo-thread
  21. setp hm2_7i76e.0.dpll.01.timer-us -50
  22. setp hm2_7i76e.0.stepgen.timer-number 1
  23.  
  24. # external output signals
  25.  
  26. # --- SPINDLE-ENABLE ---
  27. setp hm2_7i76e.0.gpio.007.is_output true
  28. net spindle-enable => hm2_7i76e.0.gpio.007.out
  29.  
  30. # --- X-ENABLE ---
  31. setp hm2_7i76e.0.gpio.008.is_output true
  32. net x-enable => hm2_7i76e.0.gpio.008.out
  33.  
  34.  
  35. # --- MACHINE-IS-ENABLED ---
  36. net machine-is-enabled => hm2_7i76e.0.7i76.0.0.output-00
  37.  
  38. # --- ESTOP-OUT ---
  39. net estop-out => hm2_7i76e.0.7i76.0.0.output-01
  40.  
  41. # external input signals
  42.  
  43.  
  44. # --- ESTOP-EXT ---
  45. net estop-ext <= hm2_7i76e.0.7i76.0.0.input-00
  46.  
  47. # --- BOTH-HOME-X ---
  48. net both-home-x <= hm2_7i76e.0.7i76.0.0.input-06-not
  49.  
  50. # --- BOTH-HOME-Y ---
  51. net both-home-y <= hm2_7i76e.0.7i76.0.0.input-07-not
  52.  
  53. # --- BOTH-HOME-Z ---
  54. net both-home-z <= hm2_7i76e.0.7i76.0.0.input-08-not
  55.  
  56. # --- PROBE-IN ---
  57. net probe-in <= hm2_7i76e.0.7i76.0.0.input-09
  58.  
  59. #*******************
  60. # AXIS X JOINT 0
  61. #*******************
  62.  
  63. setp pid.x.Pgain [JOINT_0]P
  64. setp pid.x.Igain [JOINT_0]I
  65. setp pid.x.Dgain [JOINT_0]D
  66. setp pid.x.bias [JOINT_0]BIAS
  67. setp pid.x.FF0 [JOINT_0]FF0
  68. setp pid.x.FF1 [JOINT_0]FF1
  69. setp pid.x.FF2 [JOINT_0]FF2
  70. setp pid.x.deadband [JOINT_0]DEADBAND
  71. setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
  72. setp pid.x.error-previous-target true
  73. # This setting is to limit bogus stepgen
  74. # velocity corrections caused by position
  75. # feedback sample time jitter.
  76. setp pid.x.maxerror 0.000500
  77.  
  78. net x-index-enable <=> pid.x.index-enable
  79. net x-enable => pid.x.enable
  80. net x-pos-cmd => pid.x.command
  81. net x-pos-fb => pid.x.feedback
  82. net x-output <= pid.x.output
  83.  
  84. # Step Gen signals/setup
  85.  
  86. setp hm2_7i76e.0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
  87. setp hm2_7i76e.0.stepgen.00.dirhold [JOINT_0]DIRHOLD
  88. setp hm2_7i76e.0.stepgen.00.steplen [JOINT_0]STEPLEN
  89. setp hm2_7i76e.0.stepgen.00.stepspace [JOINT_0]STEPSPACE
  90. setp hm2_7i76e.0.stepgen.00.position-scale [JOINT_0]STEP_SCALE
  91. setp hm2_7i76e.0.stepgen.00.step_type 0
  92. setp hm2_7i76e.0.stepgen.00.control-type 1
  93. setp hm2_7i76e.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
  94. setp hm2_7i76e.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
  95.  
  96. # ---closedloop stepper signals---
  97.  
  98. net x-pos-cmd <= joint.0.motor-pos-cmd
  99. net x-vel-cmd <= joint.0.vel-cmd
  100. net x-output <= hm2_7i76e.0.stepgen.00.velocity-cmd
  101. net x-pos-fb <= hm2_7i76e.0.stepgen.00.position-fb
  102. net x-pos-fb => joint.0.motor-pos-fb
  103. net x-enable <= joint.0.amp-enable-out
  104. net x-enable => hm2_7i76e.0.stepgen.00.enable
  105.  
  106. # ---setup home / limit switch signals---
  107.  
  108. net both-home-x => joint.0.home-sw-in
  109. net both-home-x => joint.0.neg-lim-sw-in
  110. net both-home-x => joint.0.pos-lim-sw-in
  111.  
  112. #*******************
  113. # AXIS Y JOINT 1
  114. #*******************
  115.  
  116. setp pid.y.Pgain [JOINT_1]P
  117. setp pid.y.Igain [JOINT_1]I
  118. setp pid.y.Dgain [JOINT_1]D
  119. setp pid.y.bias [JOINT_1]BIAS
  120. setp pid.y.FF0 [JOINT_1]FF0
  121. setp pid.y.FF1 [JOINT_1]FF1
  122. setp pid.y.FF2 [JOINT_1]FF2
  123. setp pid.y.deadband [JOINT_1]DEADBAND
  124. setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
  125. setp pid.y.error-previous-target true
  126. # This setting is to limit bogus stepgen
  127. # velocity corrections caused by position
  128. # feedback sample time jitter.
  129. setp pid.y.maxerror 0.000500
  130.  
  131. net y-index-enable <=> pid.y.index-enable
  132. net y-enable => pid.y.enable
  133. net y-pos-cmd => pid.y.command
  134. net y-pos-fb => pid.y.feedback
  135. net y-output <= pid.y.output
  136.  
  137. # Step Gen signals/setup
  138.  
  139. setp hm2_7i76e.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
  140. setp hm2_7i76e.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
  141. setp hm2_7i76e.0.stepgen.01.steplen [JOINT_1]STEPLEN
  142. setp hm2_7i76e.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
  143. setp hm2_7i76e.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
  144. setp hm2_7i76e.0.stepgen.01.step_type 0
  145. setp hm2_7i76e.0.stepgen.01.control-type 1
  146. setp hm2_7i76e.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
  147. setp hm2_7i76e.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
  148.  
  149. # ---closedloop stepper signals---
  150.  
  151. net y-pos-cmd <= joint.1.motor-pos-cmd
  152. net y-vel-cmd <= joint.1.vel-cmd
  153. net y-output <= hm2_7i76e.0.stepgen.01.velocity-cmd
  154. net y-pos-fb <= hm2_7i76e.0.stepgen.01.position-fb
  155. net y-pos-fb => joint.1.motor-pos-fb
  156. net y-enable <= joint.1.amp-enable-out
  157. net y-enable => hm2_7i76e.0.stepgen.01.enable
  158.  
  159. # ---setup home / limit switch signals---
  160.  
  161. net both-home-y => joint.1.home-sw-in
  162. net both-home-y => joint.1.neg-lim-sw-in
  163. net both-home-y => joint.1.pos-lim-sw-in
  164.  
  165. #*******************
  166. # AXIS Z JOINT 2
  167. #*******************
  168.  
  169. setp pid.z.Pgain [JOINT_2]P
  170. setp pid.z.Igain [JOINT_2]I
  171. setp pid.z.Dgain [JOINT_2]D
  172. setp pid.z.bias [JOINT_2]BIAS
  173. setp pid.z.FF0 [JOINT_2]FF0
  174. setp pid.z.FF1 [JOINT_2]FF1
  175. setp pid.z.FF2 [JOINT_2]FF2
  176. setp pid.z.deadband [JOINT_2]DEADBAND
  177. setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
  178. setp pid.z.error-previous-target true
  179. # This setting is to limit bogus stepgen
  180. # velocity corrections caused by position
  181. # feedback sample time jitter.
  182. setp pid.z.maxerror 0.000500
  183.  
  184. net z-index-enable <=> pid.z.index-enable
  185. net z-enable => pid.z.enable
  186. net z-pos-cmd => pid.z.command
  187. net z-pos-fb => pid.z.feedback
  188. net z-output <= pid.z.output
  189.  
  190. # Step Gen signals/setup
  191.  
  192. setp hm2_7i76e.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
  193. setp hm2_7i76e.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
  194. setp hm2_7i76e.0.stepgen.02.steplen [JOINT_2]STEPLEN
  195. setp hm2_7i76e.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
  196. setp hm2_7i76e.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
  197. setp hm2_7i76e.0.stepgen.02.step_type 0
  198. setp hm2_7i76e.0.stepgen.02.control-type 1
  199. setp hm2_7i76e.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
  200. setp hm2_7i76e.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
  201.  
  202. # ---closedloop stepper signals---
  203.  
  204. net z-pos-cmd <= joint.2.motor-pos-cmd
  205. net z-vel-cmd <= joint.2.vel-cmd
  206. net z-output <= hm2_7i76e.0.stepgen.02.velocity-cmd
  207. net z-pos-fb <= hm2_7i76e.0.stepgen.02.position-fb
  208. net z-pos-fb => joint.2.motor-pos-fb
  209. net z-enable <= joint.2.amp-enable-out
  210. net z-enable => hm2_7i76e.0.stepgen.02.enable
  211.  
  212. # ---setup home / limit switch signals---
  213.  
  214. net both-home-z => joint.2.home-sw-in
  215. net both-home-z => joint.2.neg-lim-sw-in
  216. net both-home-z => joint.2.pos-lim-sw-in
  217.  
  218. #*******************
  219. # SPINDLE
  220. #*******************
  221.  
  222. setp pid.s.Pgain [SPINDLE_0]P
  223. setp pid.s.Igain [SPINDLE_0]I
  224. setp pid.s.Dgain [SPINDLE_0]D
  225. setp pid.s.bias [SPINDLE_0]BIAS
  226. setp pid.s.FF0 [SPINDLE_0]FF0
  227. setp pid.s.FF1 [SPINDLE_0]FF1
  228. setp pid.s.FF2 [SPINDLE_0]FF2
  229. setp pid.s.deadband [SPINDLE_0]DEADBAND
  230. setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
  231. setp pid.s.error-previous-target true
  232.  
  233. net spindle-index-enable <=> pid.s.index-enable
  234. net spindle-enable => pid.s.enable
  235. net spindle-vel-cmd-rpm-abs => pid.s.command
  236. net spindle-vel-fb-rpm-abs => pid.s.feedback
  237. net spindle-output <= pid.s.output
  238.  
  239. # ---digital potentionmeter output signals/setup---
  240.  
  241. setp hm2_7i76e.0.7i76.0.0.spinout-minlim [SPINDLE_0]OUTPUT_MIN_LIMIT
  242. setp hm2_7i76e.0.7i76.0.0.spinout-maxlim [SPINDLE_0]OUTPUT_MAX_LIMIT
  243. setp hm2_7i76e.0.7i76.0.0.spinout-scalemax [SPINDLE_0]OUTPUT_SCALE
  244.  
  245. net spindle-output => hm2_7i76e.0.7i76.0.0.spinout
  246. net spindle-enable => hm2_7i76e.0.7i76.0.0.spinena
  247. net spindle-ccw => hm2_7i76e.0.7i76.0.0.spindir
  248.  
  249. # ---Encoder feedback signals/setup---
  250.  
  251. setp hm2_7i76e.0.encoder.00.counter-mode 0
  252. setp hm2_7i76e.0.encoder.00.filter 1
  253. setp hm2_7i76e.0.encoder.00.index-invert 0
  254. setp hm2_7i76e.0.encoder.00.index-mask 0
  255. setp hm2_7i76e.0.encoder.00.index-mask-invert 0
  256. setp hm2_7i76e.0.encoder.00.scale [SPINDLE_0]ENCODER_SCALE
  257.  
  258. net spindle-revs <= hm2_7i76e.0.encoder.00.position
  259. net spindle-vel-fb-rps <= hm2_7i76e.0.encoder.00.velocity
  260. net spindle-vel-fb-rpm <= hm2_7i76e.0.encoder.00.velocity-rpm
  261. net spindle-index-enable <=> hm2_7i76e.0.encoder.00.index-enable
  262.  
  263. # ---setup spindle control signals---
  264.  
  265. net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
  266. net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
  267. net spindle-vel-cmd-rpm <= spindle.0.speed-out
  268. net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
  269. net spindle-enable <= spindle.0.on
  270. net spindle-cw <= spindle.0.forward
  271. net spindle-ccw <= spindle.0.reverse
  272. net spindle-brake <= spindle.0.brake
  273. net spindle-revs => spindle.0.revs
  274. net spindle-at-speed => spindle.0.at-speed
  275. net spindle-vel-fb-rps => spindle.0.speed-in
  276. net spindle-index-enable <=> spindle.0.index-enable
  277.  
  278. # ---Setup spindle at speed signals---
  279.  
  280. sets spindle-at-speed true
  281.  
  282.  
  283. #******************************
  284. # connect miscellaneous signals
  285. #******************************
  286.  
  287. # ---HALUI signals---
  288.  
  289. net axis-select-x halui.axis.x.select
  290. net jog-x-pos halui.axis.x.plus
  291. net jog-x-neg halui.axis.x.minus
  292. net jog-x-analog halui.axis.x.analog
  293. net x-is-homed halui.joint.0.is-homed
  294. net axis-select-y halui.axis.y.select
  295. net jog-y-pos halui.axis.y.plus
  296. net jog-y-neg halui.axis.y.minus
  297. net jog-y-analog halui.axis.y.analog
  298. net y-is-homed halui.joint.1.is-homed
  299. net axis-select-z halui.axis.z.select
  300. net jog-z-pos halui.axis.z.plus
  301. net jog-z-neg halui.axis.z.minus
  302. net jog-z-analog halui.axis.z.analog
  303. net z-is-homed halui.joint.2.is-homed
  304. net jog-selected-pos halui.axis.selected.plus
  305. net jog-selected-neg halui.axis.selected.minus
  306. net spindle-manual-cw halui.spindle.0.forward
  307. net spindle-manual-ccw halui.spindle.0.reverse
  308. net spindle-manual-stop halui.spindle.0.stop
  309. net machine-is-on halui.machine.is-on
  310. net jog-speed halui.axis.jog-speed
  311. net MDI-mode halui.mode.is-mdi
  312.  
  313. # ---coolant signals---
  314.  
  315. net coolant-mist <= iocontrol.0.coolant-mist
  316. net coolant-flood <= iocontrol.0.coolant-flood
  317.  
  318. # ---probe signal---
  319.  
  320. net probe-in => motion.probe-input
  321.  
  322. # ---motion control signals---
  323.  
  324. net in-position <= motion.in-position
  325. net machine-is-enabled <= motion.motion-enabled
  326.  
  327. # ---digital in / out signals---
  328.  
  329. # ---estop signals---
  330.  
  331. net estop-out <= iocontrol.0.user-enable-out
  332. net estop-ext => iocontrol.0.emc-enable-in
  333.  
  334. # ---manual tool change signals---
  335.  
  336. loadusr -W hal_manualtoolchange
  337. net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
  338. net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
  339. net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
  340. net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
  341.  
  342.  
Advertisement
Add Comment
Please, Sign In to add comment