8i20/BLDC component, limited spindle speed
27 Jul 2018 00:46 #114925
by blazini36
Replied by blazini36 on topic 8i20/BLDC component, limited spindle speed
I added the math and still pulled a bunch of errors. Passing it on to a buddy of mine who at knows programming to see what he can do. He's not a wizard with linuxCNC but he has remote access to my other LinuxCNC machine as he's helping me out with that.
Please Log in or Create an account to join the conversation.
27 Jul 2018 23:59 - 28 Jul 2018 02:02 #114998
by blazini36
Replied by blazini36 on topic 8i20/BLDC component, limited spindle speed
My friend got this to compile this morning. I show:
pins
parameters
Edit: had a slight misunderstanding of the function of the component at first. This is what I'm thinking of doing in HAL for this: (#= already connected signal)
If I'm reading the component right, it looks like the spindle-at-speed and spindle is on must be true once before the condition is met for the spindle-underspeed pin to go true when the underspeed is detected. For most cases I think this would work good, but I'm thinking this may ignore the case that the spindle stalls before it gets upto speed (belt jams or something). I think this would be solved if there were some time consideration (a parameter) given to set the condition of spindle-underspeed pin going true between the time that spindle-on and spindle-at-speed set level 2.
Any insight on the above Andy? I'll test/use it as is if the above looks correct since it will probably take care of 90% of my concerns anyway.
pins
halcmd: show pin *spindle-monitor*
Component Pins:
Owner Type Dir Value Name
17 bit OUT FALSE spindle-monitor.0.spindle-at-speed
17 float IN 0 spindle-monitor.0.spindle-command
17 float IN 0 spindle-monitor.0.spindle-feedback
17 bit IN FALSE spindle-monitor.0.spindle-is-on
17 bit OUT FALSE spindle-monitor.0.spindle-underspeed
17 s32 OUT 0 spindle-monitor.0.time
parameters
halcmd: show param *spindle-monitor*
Parameters:
Owner Type Dir Value Name
17 u32 RW 0x00000000 spindle-monitor.0.level
17 float RW 0 spindle-monitor.0.threshold
17 s32 RW 0 spindle-monitor.0.tmax
17 bit RO FALSE spindle-monitor.0.tmax-increased
Edit: had a slight misunderstanding of the function of the component at first. This is what I'm thinking of doing in HAL for this: (#= already connected signal)
loadrt spindle_monitor
loadrt estop_latch
addf spindle-monitor.0 servo thread
addf estop_latch.0 servo thread
net spindle-at-speed spindle-monitor.0.spindle-at-speed #(=> motion.spindle-at-speed)
net spindle-vel-fb-rps spindle-monitor.0.spindle-feedback #(<= hm2_7i76e.0.encoder.00.velocity)
net spindle-vel-cmd-rps spindle-monitor.0.spindle-command #(<= motion.spindle-speed-out-rps)
net spindle-enable spindle-monitor.0.spindle-is-on #(<= motion.spindle-on)
net E-stop-trigger spindle-monitor.0.spindle-underspeed => estop-latch.0.fault-in
setp spindle-monitor.0.threshold 24000 #(400rpm drop))
If I'm reading the component right, it looks like the spindle-at-speed and spindle is on must be true once before the condition is met for the spindle-underspeed pin to go true when the underspeed is detected. For most cases I think this would work good, but I'm thinking this may ignore the case that the spindle stalls before it gets upto speed (belt jams or something). I think this would be solved if there were some time consideration (a parameter) given to set the condition of spindle-underspeed pin going true between the time that spindle-on and spindle-at-speed set level 2.
Any insight on the above Andy? I'll test/use it as is if the above looks correct since it will probably take care of 90% of my concerns anyway.
Last edit: 28 Jul 2018 02:02 by blazini36.
Please Log in or Create an account to join the conversation.
30 Jul 2018 04:21 #115102
by blazini36
Replied by blazini36 on topic 8i20/BLDC component, limited spindle speed
The above was wrong, some of the pins weren't quite what I thought they were, and estop_latch component was incorrect as well and I have no idea why I setp the threshold to 24000. I got it working but it was rather finicky until I put the hm2_7i76e.0.encoder.00.velocity pin through the lowpass component before going into spindle-monitor.0.spindle-feedback. I need to do a bit more testing tomorrow, but it seems pretty good so far for basic stall protection.
Please Log in or Create an account to join the conversation.
30 Jul 2018 13:14 #115137
by andypugh
Replied by andypugh on topic 8i20/BLDC component, limited spindle speed
too late, but there is an undocumented "include" command for comp files that puts the #include statement close to the top of the generated C file, which can help.
Please Log in or Create an account to join the conversation.
31 Jul 2018 00:00 #115190
by blazini36
Replied by blazini36 on topic 8i20/BLDC component, limited spindle speed
Well this is what my friend came up with, no issues with it compiling now. Any thoughts on adding a time pin prior to it hitting the level that can set the underspeed pin? I had to throw "not" in there to invert the output, my current hal additions:
loadrt lowpass names=lowpass.monitor
loadrt spindle_monitor
loadrt not
addf lowpass.monitor servo-thread
addf spindle-monitor.0 servo-thread
addf not.0 servo-thread
net spindle-at-speed => motion.spindle-at-speed
net spindle-vel-fb-rps-fltr <= lowpass.monitor.out
net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-enable <= motion.spindle-on
net spindle-fault-stop-inv => motion.enable
# ---Setup spindle monitor for motor protection---
net spindle-at-speed <= spindle-monitor.0.spindle-at-speed
net spindle-vel-fb-rps-fltr => spindle-monitor.0.spindle-feedback
net spindle-vel-cmd-rps-abs => spindle-monitor.0.spindle-command
net spindle-enable => spindle-monitor.0.spindle-is-on
net spindle-fault-stop not.0.in <= spindle-monitor.0.spindle-underspeed
net spindle-fault-stop-inv <= not.0.out
#detect rpm drop#
setp spindle-monitor.0.threshold 7
setp lowpass.monitor.gain .005
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
31 Jul 2018 03:30 #115203
by Ketsai
Replied by Ketsai on topic 8i20/BLDC component, limited spindle speed
Great
Please Log in or Create an account to join the conversation.
07 Aug 2018 02:45 #115713
by blazini36
Replied by blazini36 on topic 8i20/BLDC component, limited spindle speed
Even without the extra frills this is a pretty handy component, I'm kinda surprised there isn't anything like it (that I know of) in source.
What would it take to get this included?
What would it take to get this included?
Please Log in or Create an account to join the conversation.
14 Aug 2018 12:14 - 14 Aug 2018 12:14 #116039
by andypugh
Create a "pull request" on GitHub.
linuxcnc.org/docs/html/code/contributing-to-linuxcnc.html
Though simply adding a new file (rather than patching original files) can be done, I think, directly.
Replied by andypugh on topic 8i20/BLDC component, limited spindle speed
What would it take to get this included?
Create a "pull request" on GitHub.
linuxcnc.org/docs/html/code/contributing-to-linuxcnc.html
Though simply adding a new file (rather than patching original files) can be done, I think, directly.
Last edit: 14 Aug 2018 12:14 by andypugh.
Please Log in or Create an account to join the conversation.
27 Aug 2018 16:59 #116659
by blazini36
Replied by blazini36 on topic 8i20/BLDC component, limited spindle speed
Created a pull request. I'm not all that familiar with adding to Git but I think it's right, not sure if I'm supposed to write a full description like what's in the docs or not. Credit to you of course.
Please Log in or Create an account to join the conversation.
Time to create page: 0.099 seconds