-
-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
G0 should find the shortest path on Rotary Axis (wrap-around coordinate system ?) #71
Comments
Hi, I work with a industrial CNC from the brand Pedrini, and the machine have a rotary axis called B should be C because is over the Z axis (is a table) but Pedrini called B, and have a indunction cell to reset the encoder of the B axis, we can perform the many degrees we want the we the the zero procedure to the axis, when she find the induction cell she stop and reset the axis, think that should be one way to you reset that A axis. You can put a induntion cell, because you have no limits you turn the cell of, and when you need the zero procedure you activit and do it . |
Hmm... not sure what the best implementation would be... either a compile-time switch to make G0 always behave that way; or adding a G-code to do it (G0.1???). |
hi @henpemaz, |
Hem.... Why not just use a $H A ? @fra589 ??? |
Bonjour Jean-Claude, Ben parce-que $H effectue la prise d'origine (homing), c'est à dire un double déplacement jusqu'à activer les commutateurs de butée des axes. @++; |
Enfin bon je lis quand-même
S'il a fait 100 tours, je comprends bien qu'il n'ait pas envie de les faire dans l'autre sens juste pour revenir à zéro. S'il a (comme moi) un endstop sur son axe, faire un homing remet l'église au centre du village en moins d'un tour de diviseur.... Et comme il travaille par rapport à un zéro pièce (qui n'est d'ailleurs pas forcément confondu avec le zéro machine du diviseur) il peut repartir facilement sans avoir à attendre 100 tours pour rien. |
Oui, mais |
J'ai longtemps réfléchi à "comment faire un endstop pour le diviseur" sachant qu'avec une came ça va pas du tout, c'est pas précis. J'ai donc monté sur l'axe de rotation un disque avec une fine-fine fente radiale. Le disque tourne dans l'entrefer d'un capteur optique à fourche, la répétabilité est diabolique. |
Salut! Jusque là mon axe A n'a pas de commutateur et le homming n'est pas confinguré. C'est un mandrin à quatre mors qui peut tourner librement sans impediments, donc j'avais choisi de ne pas mettre un switch, en plus parce que je n'ai pas les modeles avec roulette. En fin je croyais que je n'avait pas besoin. J'utilize par fois ce axe pour usiner des filetages avec un v-bit 60º (je n'ai pas un tour 😢), et la passe finale je la répète avec des offsets pour arriver a un bon ajustement. Le problème est que chacun de ces passes veut démarrer a A0, et le passe précédent n'a pas fini sur un multiple de 360. Cette fonctionnalité ("Wrapped Rotary Axis") a été demandée quelque fois chez LinuxCNC avec des diferéntes specifications mas je crois qu'elle n'est pas implementée, bien que elle existe dejá dans quelques autres controlateurs commercielels. Pour le moment j'accepte que chaque passe prends 30 secondes en plus, c'est plus facile que faire des ajustements avec G92. |
@fra589 Sorry I'm away for long time So is exact the same way you do when your GRBL machine stop in the middle of the work area, you turn off the power when back on the GRBL don't know here is it because YOU DON'T HAVE ANY ENCODER you need to do the homing procedure to all the axis. I think is a good ideia to do the job, and the front end of the GRBL, your cn5X for example should be have some buttons to do this kind of procedure, in one area of definitions or other place have one ares to do the "zeros" of the all axis - one of the time start with Z, then X, them Y, then C, then A and/or B in my experience work with industrial CNC machines with encoders, and servo motors this is the best way. Pedrini have encoders and form times to times we need to do the zeros of the axis, and this is the sequence that pedrini tell us to do, the GMM have servo motors we don't need to do the zeros no mather if you turn the power down move the machine by hand and back on the machine always know the position , we only need to do the zeros if we have change one drive because was broken or if we switch the spindle because burn or something like that. For me the best way to reset a rotatory axis without limits, is have one induction cell on the zero position and when needed do the zero procedure to that axis to reset it |
@Flying-Hammer , @henpemaz , @fra589 I know this is a forum of a french guy, but I think the best way to communicate is english, I'm portuguese and I don't write here in portuguese right!!!!! |
Bonjour, (Traduction exceptionnelle de courtoisie en Anglais ci-dessous...) Vu qu'ici, nous sommes, sur les pages concernant les problèmes du projet dont JE suis le développeur, je suis Français et je préfère utiliser le Français quand c'est possible, notamment lorsque mes interlocuteurs sont eux même Français. Etant donné que c'est ma langue maternelle, je suis beaucoup plus précis et performant dans cette langue que dans n'importe quelle autre. Hello, Exceptional courtesy translation
Since here we are, on the pages concerning the problems of the project of which I am the developer, I am French and I prefer to use French when possible, especially when my interlocutors are themselves French. |
Consider I'm on a XYZA machine with a rotary axis (A) that can spin without any limits on both directions. After doing a "spiral" operation, this A axis might be on some crazy high work coordinates like 36000 degrees (100 turns of that axis). Now we need to get it back to 0 somehow.
On this situation, a "G0 A0" command will spin the A axis 100 times to get it back to it's origin, which is "correct" but sometimes just a waste of time. A different approach would be to reset that axis using "G92 A0" if we're in fact at the origin (a multiple of 360 degrees), but if we're not, we'd need to do the math on how much we need to move before resetting that coordinate, or what's our "equivalent" current position and G92 to that.
Shouldn't GRBL in this situation (G0 on a rotary axis) be able to find out the shortest movement it can do to get that axis to an arbitrary position that's "equivalent" to the commanded position ? This might not we suitable for every machine, some have wires or other limitations, but for some others, it would make things a lot simpler.
I'm new to 4-axis and I'm writing my Gcode for testing by hand for now, so I might be missing on some clever tricks that might solve the problem. If so, please share them. BUT if that's not the case, then I think it should be a quite important option/feature for a 4-axis machine controller.
PS: Super merci pour ce firmware magnifique, ça a acceleré beaucoup mon project :)
The text was updated successfully, but these errors were encountered: