[solved] Using motorless B-axis in HAL only

More
6 years 6 months ago #164629 by Aciera
I'm working on a mill with a manual swivel head, an indexing b-axis without a motor. We use this with 5-axis xyzbc-kinematics to mill pockets at preset angles of the tool in reference to the table like in the image below but without the rotary table.

Attachment not found


It's all working with the B-axis connected to a stepgen on a MESA 7i76e that does not have an actual motor connected to that particular output connector. I can command say G0 B30 and the DRO for the B-axis counts up to 30 and that is then used in the kinematic to calculate the movement of the X- and Z-axis.
Code:
#******************* # AXIS B #******************* setp pid.b.Pgain [JOINT_3]P setp pid.b.Igain [JOINT_3]I setp pid.b.Dgain [JOINT_3]D setp pid.b.bias [JOINT_3]BIAS setp pid.b.FF0 [JOINT_3]FF0 setp pid.b.FF1 [JOINT_3]FF1 setp pid.b.FF2 [JOINT_3]FF2 setp pid.b.deadband [JOINT_3]DEADBAND setp pid.b.maxoutput [JOINT_3]MAX_OUTPUT setp pid.b.error-previous-target true setp pid.b.maxerror .0005 net b-index-enable <=> pid.b.index-enable net b-enable => pid.b.enable net b-pos-cmd => pid.b.command net b-vel-cmd => pid.b.command-deriv net b-pos-fb <= pid.b.feedback net b-output => pid.b.output # Step Gen signals/setup setp hm2_7i76e.0.stepgen.04.dirsetup [JOINT_3]DIRSETUP setp hm2_7i76e.0.stepgen.04.dirhold [JOINT_3]DIRHOLD setp hm2_7i76e.0.stepgen.04.steplen [JOINT_3]STEPLEN setp hm2_7i76e.0.stepgen.04.stepspace [JOINT_3]STEPSPACE setp hm2_7i76e.0.stepgen.04.position-scale [JOINT_3]STEP_SCALE setp hm2_7i76e.0.stepgen.04.step_type 0 setp hm2_7i76e.0.stepgen.04.control-type 1 setp hm2_7i76e.0.stepgen.04.maxaccel [JOINT_3]STEPGEN_MAXACCEL setp hm2_7i76e.0.stepgen.04.maxvel [JOINT_3]STEPGEN_MAXVEL # ---closedloop stepper signals--- net b-pos-cmd <= joint.3.motor-pos-cmd net b-vel-cmd <= joint.3.vel-cmd net b-output => hm2_7i76e.0.stepgen.04.velocity-cmd net b-pos-fb <= hm2_7i76e.0.stepgen.04.position-fb net b-pos-fb => joint.3.motor-pos-fb net b-enable <= joint.3.amp-enable-out net b-enable => hm2_7i76e.0.stepgen.04.enable

So as it is the loop gets closed on the MESA board.
Now I would like to use that stepgen on the MESA board for another axis and have the b-axis working only in software.
I'm guessing I need to somehow provide the pid with a position feedback to get the DRO to function.

Does anybody have an idea if it is possible to close that loop in HAL and get the DRO to function?

Please Log in to join the conversation.

More
6 years 6 months ago #164631 by bbsr_5a
as you say manuel it is not a 5Axis Kinetics
just 3+2 as of Fusion360
so Just use Trivial kinetics as it cand move on Auto at all
a Post 5Axis will move all axis simultan like Powermill
and as you set 5axis kinetics it uses RTCP Rotating Tool Center Pos that the machine cand do
so you will be in real trouble if the joints are not there

YOU shoudt go for a 4AXIs only
use GEOMETRY XYZC and you are fine

you can try to HACK with a own component
LOOK at THCUD it hacks the Z axis
z_pos_out = z_pos_in;
z_fb_out = z_pos_in; // keep axis motor position fb from being confused

just feed the Component with your B Axis

Attachment not found

Please Log in to join the conversation.

More
6 years 6 months ago #164632 by Aciera
I know my setup is not 5 axis simultaneous but rather 3+1.
However using trivial kinematics does not work here. It would work if the table were tilted as in your example. Then the tool would be perpendicular to the x and y joint/axis and circular interpolation would be possible with trivial kinematics.
But since we are tilting the tool in reference to the joints of the x and y- axis the interpolation plane is tilted by the angle of the swivel head and movements in x require two joints as do movements in z.
But anyway that was just to illustrate what I'm working on. The question was if it is possible to close the stepper loop in HAL or software and thus free up the needed step generator on the MESA board.

Please Log in to join the conversation.

More
6 years 6 months ago #164635 by tommylight
This should work, you can set up a software stepgen with a base thread and use that for the axis that has not motor.

Please Log in to join the conversation.

More
6 years 6 months ago #164675 by PCW
You do not need the PID or stepgen to get the DRO to function
if you are displaying actual positions, you just need to loop the
commanded position back to the feedback position for the B axis:

net b-pos-loopback <= joint.3.motor-pos-cmd => joint.3.motor-pos-fb

Please Log in to join the conversation.

More
6 years 6 months ago #164688 by tommylight

PCW wrote: You do not need the PID or stepgen to get the DRO to function
if you are displaying actual positions, you just need to loop the
commanded position back to the feedback position for the B axis:

net b-pos-loopback <= joint.3.motor-pos-cmd => joint.3.motor-pos-fb

I thought so but i was not sure, so i did not mention it.
Thank you for confirming that.

Please Log in to join the conversation.

More
6 years 2 months ago #179815 by andypugh

Aciera wrote: I'm working on a mill with a manual swivel head, an indexing b-axis without a motor.


I have been meaning to do this for years. How is it working out?

It might be worth configuring the swivel head as a locking indexer. Then you could use a slightly-modified hal_manualtoolchange to pop up a dialog box to ask for a new angle, and then continue the G-code.

See the joint-unlock pins here: linuxcnc.org/docs/2.8/html/man/man9/axis.9.html which would be used a bit like tool-change / tool-changed

Please Log in to join the conversation.

Time to create page: 0.633 seconds
Powered by Kunena Forum