acondit

myCNCLathe.hal

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