Velocity problems

More
17 Aug 2013 14:29 #37775 by eslavko
Replied by eslavko on topic Velocity problems
Im not in home today.
I will check tomorow. But I think when in MDI mode the things are better. Need to investigate little more.

Kepping the BC velocity so low isnt option. Its to low. But Is it possible to change the limits dinamicaly while running?
Eg when B axis is near 0 degres the limit can be high (for B and C) but when B is near 90deg, the limits should be low.

Slavko

Please Log in or Create an account to join the conversation.

More
17 Aug 2013 19:43 #37781 by andypugh
Replied by andypugh on topic Velocity problems

Kepping the BC velocity so low isnt option. Its to low.


One thing to bear in mind here is that the BC limits you would need to set are the _real_ limits that would apply in the worst-case angles and tool length.

Please Log in or Create an account to join the conversation.

More
18 Aug 2013 13:03 #37798 by eslavko
Replied by eslavko on topic Velocity problems
If I understand kinematics right then worst case is when B axis is in 90 degres (tool is horizontal), and when C axis is in 0, 90, 180 or 270 degrees.
So if I set limit low to not trip joint following error then I need to:

-Calculate the speed of head when B is angled 90 degres and C is rotated with max speed, with longest tool.
-Subtract that value from X/Y speed limits. (so it will significant reduce speed of XY)

-Calculate the speed of head when B is traveling at max speed with longest tool.
-Subtract that value from Z speed limit.

As my head can move fast, i need to limit all other axis for example to 1/2 capable speed. So machining a part that takes 10 hours wil take at least 20 hours! (Yes hours... It's a big machine and big parts, and tool is small )

still need to check if that sped limit is only in jog mode or in MDI too...
...I go to check it for this now!

Please Log in or Create an account to join the conversation.

More
18 Aug 2013 14:31 #37799 by eslavko
Replied by eslavko on topic Velocity problems
Well there is test result:

- Slow continous jog - Works
- Fast continous jog - Joint follow error

- Slow 5mm jog - Works
- Fast 5mm jog - Joint follow error

-MDI G0 B90 - Joint follow error
-MDI G1 B90 F50 - Works
-MDI G1 B90 F150 - Joint follow error

I set accelerations low so I can see that joint folow error is not tripped immediatly but when speed of XYZ reach their own limits.

So the trajectory planner in real doesn't care for speeds caused in strange kinematics and rotary motions...
Solution should be trivial for one machine but not for the all machines set that linuxcnc support.

So what options I have?
1. Stay in trivkins and buy CAM postprocessor that is capable to implement kinematics of head. (can be expensive)
2. Wait few years and LinuxCnc will probably handle that. (not a option as machine will be mounted far away)
3. Try to make some patch or other workaround to cheat linuxcnc. (I don't speak C... and linuxcnc internals is not known to me)

So if I chose option 3 how to approach.
1. Calculate and set limits so in the worst case machine can't go in position to trigger that.
- this should work without messing with source code, but gave slow machine.

2. Somehow calculate the max available speed and dinamicaly adjust limits.
I assume that trajectory planer know the XYZ speed. So if another calculation is made with BC parameter the limiting walue can be set for XYZ. I was looking if there are some pins in HAL to tweak this but not found it yet.

Source for limits is BC axis. The parameters are available in HAL.
But I can't find pins for max velocity and max acceleration for individual joint.

What I think? I can explain as example.
Let's focus to solution for Z axis.

The Max velocity is 200, and MaxAccel is 200 too.
I can precalculate the max tool lengt and max velocity of B affect to Z. Let assume that at max B speed the Z is limited to max 100 units.
So knowing that max for Z is somewhere in range from 100 to 200 I can adjust that just knowing B position and speed.
I didn't try what formula gave the correct result, but when B is 0 degre the no matter what speed the limit is not affected (kepp to 200) but when B aproaching 90 degres the affect of speed in B is maximum.

Just don't know where to inject that limit....

This can be generic module for 5 axis BC head machine, but don't know if apply to rotary table too...

so any tought

Please Log in or Create an account to join the conversation.

More
18 Aug 2013 15:57 #37801 by eslavko
Replied by eslavko on topic Velocity problems
Ahhh....
This solve the problem but isn't done yet...
wiki.linuxcnc.org/cgi-bin/wiki.pl?JointsVsAxes

Please Log in or Create an account to join the conversation.

More
18 Aug 2013 20:41 #37812 by andypugh
Replied by andypugh on topic Velocity problems

So if I set limit low to not trip joint following error then I need to:
-Calculate the speed of head when B is angled 90 degres and C is rotated with max speed, with longest tool.
-Subtract that value from X/Y speed limits. (so it will significant reduce speed of XY)

No, I don't think that this is the way to do it.
What you need to do is limit the speed at which C can move to keep X and Y within their velocity limits and to limit the speed at which B can move to keep Z inside the velocity limits.

As my head can move fast, i need to limit all other axis for example to 1/2 capable speed. So machining a part that takes 10 hours wil take at least 20 hours!

Only if you make all your cuts at the maximum speed the machine is capable of.
And you only need to limit the speed of the rotary axes, the linear axes should be left as fast as they can go.
This assumes that you do not plan on jogging C and X at the same time. (I doubt you would ever do that anyway).

Note that coordinated moves (G-code or MDI) ought to be OK, you don't need to set your limits to allow for a simultaneous G-code move in C and XY, that will be automatically compensated.

Please Log in or Create an account to join the conversation.

More
18 Aug 2013 20:55 #37813 by andypugh
Replied by andypugh on topic Velocity problems

What I think? I can explain as example.
Let's focus to solution for Z axis.

The Max velocity is 200, and MaxAccel is 200 too.
I can precalculate the max tool lengt and max velocity of B affect to Z. Let assume that at max B speed the Z is limited to max 100 units.


Let us assume a 250mm pivot length and 100mm tool length.
That means that the Z velocity for a B jog at 90 degrees = 350mm * Bvel
Or, rearranged Bvel = (200mm/sec) / (350mm) = 0.5712 rad/sec = 32 degrees/sec

This isn't very fast, but if you limit B to this jog speed then it should never be able to f-error the Z axis.
Even if LinuxCNC was clever enough to do it, with the B axis at 90 degrees this is exactly the limit it would have to impose too.

The numbers are better if your pivot-length and tool length are smaller.

Please Log in or Create an account to join the conversation.

More
19 Aug 2013 02:26 #37819 by eslavko
Replied by eslavko on topic Velocity problems
Wich axis should be limited is situation dependent.
I prefer to B axis limits the Z axis and not oposite, and this is based on fact that move on Z axis is mirrored to tool tip move. But moving the B axis may do not move the tip of toll at all. So to keep the tool tip speed constant as possible then B should move as fast as possible and keep limiting Z?!? But anyway they doesn't matter so much as this approach is not ideal at all.

About velocity aclculation. The speed 200mm/s is for linear axis, and rotary is 80 deg/s, and as you already calculated I need to decrease rotary limit under 30 deg/s. I can accept this for jog. But you (Andy) are wrong in term that this disturbance is only in jog mode. It is in MDI too. And can be problematic for G00 (and fast G01).
If I limit speed for BC in that way then I need to limit speed override to 100% too, or limit BC another 50% to have speed ovverride in range 50...150%.

So I will probably end with two different configurations. One with 5axiskins and crowling BC head, and one with trivkins with max available speeds. So if I need to poke some holes or surface by hand I use 5kins and if I use CAM the trivkins is to be used.

Of course I will probably never move B and X axis in jog mode simultaneous, but in G code it should be done frequently. And as machine is for cutting foam the G01 speeds will be near speed of rapids (G00) or same. So Limiting BC head will slow down process.

Please Log in or Create an account to join the conversation.

More
19 Aug 2013 02:30 #37820 by eslavko
Replied by eslavko on topic Velocity problems
Hello...

I look into documentation and can't find the way to dinamicaly limit the speed of B/C axis. (if I see that coordinated motion of B/C will introduce joint folow error, I need to slow it down)
All I find is the HALUI.FEED-OVERRIDE and HALUI.MAX-VELOCITY. Is it somewhere available at joint base? (to limit just B/C but not the other)

Please Log in or Create an account to join the conversation.

More
19 Aug 2013 02:44 #37821 by eslavko
Replied by eslavko on topic Velocity problems

So if I set limit low to not trip joint following error then I need to:
-Calculate the speed of head when B is angled 90 degres and C is rotated with max speed, with longest tool.
-Subtract that value from X/Y speed limits. (so it will significant reduce speed of XY)

No, I don't think that this is the way to do it.
What you need to do is limit the speed at which C can move to keep X and Y within their velocity limits and to limit the speed at which B can move to keep Z inside the velocity limits.


I read this twice, and I think that my not so good english cause missunderstanding.
I was thinking of limiting speed within program run! So if BC is stationary then XYZ move as fast is possible. But if BC start moving, the speed should be reduced just little under speed limit to not trip folowing error and when BC finish move the limit should be restored. (actual the kinematic module should keep track to not alow overspeed any joint.) If this thing is not possible to make then BC axis should be limited of course. But for this static limit the XYZ should be limited too, or any G00 Xnn Ynn Bnn will trip the joint folow error. So If I drop XYZ from 200 mm/s to 180mm/s then this 20mm/s calculated to angular is very low rate. Of course G00 with X or Y or Z and B or C is rare. But they do exist and same is for G01 as the feedrate is high. So to have static limits the machine will make slow motion or will not be able to make simultaneous 5 axis move.

Please Log in or Create an account to join the conversation.

Time to create page: 0.098 seconds
Powered by Kunena Forum