This is an old revision of the document!
Rotate A axis to 0 position
For some applications A-axis is programmed as endless rotation. Program A position may come to many thousands degree after G-code finished. See screenshot example below -
To start new job A position should be roll back to about “0” position. Jogging to “0” may take a long time (can be hundreds of complete turn to run). In some cases it's possible just reset A position, but A axis orientation will be lost. The best way to subtract a number of complete turns (360 degree), then move to “0” for the rest of A.
This can be done through macro-programming.
We will add macro M335 to bring A axis to “0”, then add a button to run the macro.
A-axis program position value is mapped to global variable #5044. In the macro we -
- Check if A-position is positive
- Add a code loop,
- Test in the loop A-coordinate and subtract 360 degree if current coordinate is more than 360 degree (more than 1 turn).
- Store result value as current A-axis position and then
- Move A-axis to “0”.
- Add similar branch for negative A-coordinate value.
- M335
(Move to position A=0) #10=#5044 (Get position A) if [ #10 LT 0 ] 300 (Test If A-position is negative) (if positive) N100 if [ #10 LT 180 ] 200 (Test if A-position higher than 180 degrees) #10 = #10 - 360 (Subtract a whole turn - 360 degree) JUMP 100 (Jump to begin of the Loop) N200 JUMP 400 N300 if [ #10 GT -180 ] 400 (Test if A-position lower than -180 degrees) #10 = #10 + 360 (Add a whole turn - 360 degree) JUMP 300 (Jump to begin of the Loop) N400 G90 G10 L70 P#5220 A#10 (store #10 value as A-axis program position) G90 G0 A0 (rotate A axis to 0)