[4th axis] How do you set-up your rotary axis?

More
2 years 9 months ago #290853 by Mecanix
Hey guys. Having difficulties getting consistency between operations. Some works great (indexable drilling for instance), others are instant multi-thousand dollar crashes and what not (simultaneous for instance). Not sure where to begin with this. Let's start with; is Linuxcnc even capable of more-than-three-axis in a relatively consistent and safe manner?

If so, how do you set-up your kin in CAM and Linuxcnc?

0 ~ 360deg?
-360 ~ 360?
-36000000 ~ 36000000?
Modulo mode capable?
WRAPPED_ROTARY - how do you set-up for that one (whatever it does and mean)?

Am I correct assuming Lcnc is set for "unlimited" only? As in only works with outta this world's >360degree angles (aka A32334456degree). Asking because my version unwind the whole 358deg if programmed N1 A359 ~ N2 A1. Really is only 2degree of motion here. Magnitude, sign dir? what's the voodoo again?

Please Log in to join the conversation.

More
2 years 9 months ago #290860 by Aciera
You have probably already found this, regarding WRAPPED_ROTARY
linuxcnc.org/docs/html/config/ini-config.html
 

Attachment not found

Please Log in to join the conversation.

More
2 years 9 months ago #290861 by Aciera
Generally I would suggest to have a look at a sim config with a rotary and check things out that way. For example:

'configs/sim/axis/vismach/5axis/table-dual-rotary'

This config has a dual-rotary (AB) table but you can certainly also use it with only the A.

Please Log in to join the conversation.

More
2 years 9 months ago #290862 by Aciera
Also note that the current motion planner will fall back to one line look ahead for any line of gcode that contains more than XYZ. This may cause slow or jerky motion with gcode that contains a lot of short segments.

Please Log in to join the conversation.

More
2 years 9 months ago #290869 by Hakan
Limitless rotation (more or less)
Code:
[AXIS_A] MAX_VELOCITY = 50 MAX_ACCELERATION = 1200 MIN_LIMIT = -9999999 MAX_LIMIT = 9999999 [JOINT_3] TYPE = ANGULAR
Reset of position at the end of every g-code program
Code:
G10 L20 P#5220 A[[[#5423+180] MOD 360] -180]
And a post-processor that generates inverse time feed parameters.

If you just want to position the axis, you may think that A1 is only two degrees from A359. But if you are cutting, together with possible movements in other axes, they are definitely 358 degrees apart. If that's what the g-code says.


 

Please Log in to join the conversation.

More
2 years 9 months ago #290872 by Aciera
For truly unlimited rotation you can also use:

MIN_LIMIT = -1e99
MAX_LIMIT = 1e99

Please Log in to join the conversation.

More
2 years 9 months ago #290903 by Mecanix

Code:
Reset of position at the end of every g-code program [code]G10 L20 P#5220 A[[[#5423+180] MOD 360] -180]
[/code]
 
Ah, ok, I see. I admit that is a clever hack to that eternal and weird unwinding issue. With that 'unlimited' suspicion I had I hacked up something similar in post/tcl yesterday (had too) but that G10 ending you've thrown here is for The WIN! and what fix it at the controller end. Thank You So So Much. And pardon my lack of lcnc voodoo skillset, I'm used to old school modulo and DPM hidden inside those industrial ctrl (sinumerik -360 ~ 360) in my case.

Logic for cam postp, in case it helps anyone:
Code:
    #------------------------------------------------------     proc MOM_end_of_program_LIB_ENTRY {position} {     #------------------------------------------------------         switch -- $position {             "start"             {                 if { [ info exists ::last4thpos ] } {                     if [EQ_is_equal $::last4thpos 0] {                         ### do nothing                         set mom_rot_ang_4th 0                     } elseif { ([expr $::last4thpos <= 180]) } {                         set mom_rot_ang_4th [ expr $::last4thpos - fmod($::last4thpos, 360) ]                     } elseif { ([expr $::last4thpos > 180]) } {                         set mom_rot_ang_4th [ expr $::last4thpos + fmod(360, $::last4thpos) ]                     }                 } else {                     ### do nothing                     set mom_rot_ang_4th 0                 }                 ### Output rotary return using recalculted modulo angle                 MOM_output_literal "G0 A$mom_rot_ang_4th"                                  ###Ref: https://forum.linuxcnc.org/38-general-linuxcnc-questions/51373-4th-axis-how-do-you-set-up-your-rotary-axis#290869                 MOM_output_literal "G10 L20 P#5220 A\[\[\[#5423+180\] MOD 360\] -180\]"             }         }     }     #------------------------------------------------------

Please Log in to join the conversation.

More
2 years 9 months ago #290904 by Mecanix

Generally I would suggest to have a look at a sim config with a rotary and check things out that way. For example:
'configs/sim/axis/vismach/5axis/table-dual-rotary'
Ok, I will. Baby steps into this for now, that's next-level stuff... I'm barely able to set-up rotary motion for now. Once I get this sorted I'll get into this "advanced" voodoo and report back. 

Please Log in to join the conversation.

Time to create page: 0.100 seconds
Powered by Kunena Forum