Soft limit live updating to prevent crash RS5K & Kinetix

dr_cronik

Member
Join Date
May 2012
Location
United Kingdom
Posts
47
Hi All

I have started a project which basically tracks a 3 axis cartesian robot around its working area and adjusts the soft limits on the drive to prevent the robot from crashing while being jogged or should some put the incorrect co-ordinates in.

Hardware : 1756L63 V19 and 3 x Kinetix 6000 drives on Sercos.

I have devised a method of setting up 3D zones within the robots working area, each zone then has its own set of softlimits that are SSV'd to the drive when the TCP enters the zone.

All this code works fine until you turn the speed up, then things stop working so well as the scan time of the PLC is not quick enough to detect the zone entry and set the softlimits before the TCP hits the object. I am expecting to be moving at above 2500mm/s.

To solve this I have 4 event tasks. 1 (Task A) to execute after ever course update period and the others (Task B,C,D) to execute on a Axis Watch event triggered by a MAW command.
Task B,C,D are identical besides the tagnames.

The theory is to detect a start of movement with Task A and set up an MAW on each axis 1mm from the strobedActualposition. The first MAW position reached will trigger Task B,C or D which will check the robots position and set up any required softlimits. This task will then cancel all MAW and set up new MAW's on each axis again 1mm from strobedActualposition.

I cannot do all in task A as this uses up to 40% of processor time and I had to slow the coarse update period. I will need to implement this code for up to 8 Cartesians on 1 PLC so code efficiency is vital

The problem. The MAW commands seem to only work for 1 axis the other2 axes will trigger the first MAW in Task A which when the position is reached will trigger the respective Task B,C or D
. This task will then set up another MAW 1mm further along each axis, which will retrigger Task B,C or D. The problem arises on this second scan of the task, a new MAW will be set up but will not Set the PC bit of the instruction when the position is reached and hence the task is never retriggered.

As I mentioned this is only happening on the Y & Z axis if you are moving predominantly on the x axis the all works fine.

My first point of call is to check that all Kinetix drive are on the same firmware rev. I suspect the are not.

Anyone got any other idea's? All help will be GREATLY appreciated.

Let me kno if you need further details.

Thanks in advance
:banghead
 
I am not a motion guy . I would see if it is possible to just look at the current position and the target position with a 1mm different setting the trigger to adjust the limits.

One question why are you dynamically changing the soft limits? Why not set them and leave them alone?
Most robots that I have used have limits that are set and that is it. You can define the work object and modify the world orientation around but the limits where fairly solid.
 
I'm by no means a motion expert, either. But it seems that the difficulty comes with staggering the MAW's. I don't understand the need for MAW's in the first place. I can see why you may need different limits for different zones, depending on what fixed objects may be in the robots motion path, but I can't see why you would need to redefine these limits every 1 mm...

Is it possible to just run a relatively fast task (< 3ms) that checks each axis position and compares them to the boundaries of the respective zones, then if X, Y, and Z fall within the bounds of zone 1, then SSV the zone 1 limits to the axes? You could have conditionally called subroutines for each zone within the periodic task that checks each axis position against the soft limits, if any are out of bounds, trigger an MGS and an alarm...
You could also write the code so that the SSV's are only performed on the first scan when the robot enters the zone to save on execution time.

I don't know if this approach could be implemented to be any faster than what you are currently doing, but I thought I'd offer the food for thought.

Cheers,
Dustin
 
I have devised a method of setting up 3D zones within the robots working area, each zone then has its own set of softlimits that are SSV'd to the drive when the TCP enters the zone.
TCP ? - So you are relying on the Kinetics Drive itself to do the limit stopping - So one axis may stop and the others are still permitted to move? - You have reverse out of limit control?

Issues - Mostly due to timing MAW takes 3 coarse update periods (CUP) to instigate - one CUP to action (any request you program will be occur on the next coarse update) The SSV update to the Kinetics drive takes 2 to 5 CUP
a$$uming a CUP of 8 to 10 ms (generous 3 Axes with Event Task) you are talking about possibly 50 ms before the limits are in place
The theory is to detect a start of movement with Task A and set up an MAW on each axis 1mm from the strobedActualposition. The first MAW position reached will trigger Task B,C or D which will check the robots position and set up any required softlimits. This task will then cancel all MAW and set up new MAW's on each axis again 1mm from strobedActualposition.
2500 mm/s and every mm you do 6 MAW and 6 SSV's
that is every 0.4 ms

P.S StrobedActualposition is only required outside the Motion Event task
P.P.S Does your code use 2 MGSP commands? (one for each scan)
I will need to implement this code for up to 8 Cartesians on 1 PLC so code efficiency is vital
Does this mean 24 Axes? on the same CPU? will you also have on the same CPU the HMI, communications and other basic logic? (all will slow down the processor later)


Question what programming language are you using for the Event tasks? (the fastest by far is ladder)

Why can you not perform the check before sending the command?
Are you using blended moves {two(or more) axis movements at the same time} OR motion coordinated moves ?

Manual Jogging I would expect one axis at a time and not at 2500mm/s
Manual "send to position" - again can you check before the move?

Can we have a basic sketch of the robot cell?
 
Hi

You could also write the code so that the SSV's are only performed on the first scan when the robot enters the zone to save on execution time.

This is exactly what I am doing the Tasks B,C,D will check the position relative to the zones and if the Zones have changed then it will set up the new softlimits, this is not done on every scan nor are they changed mm to mm.

TCP ? - So you are relying on the Kinetics Drive itself to do the limit stopping - So one axis may stop and the others are still permitted to move? - You have reverse out of limit control?

Yes exactly and the soft limits allow for reversing out of the fault.

2500 mm/s and every mm you do 6 MAW and 6 SSV's
that is every 0.4 ms

Not exactly, every mm I check to see if the zone has changed and if so then SSV, MAW are set up for each mm, but fro testing I have been using a 10mm increment and jogging @ <5mm/s this way I can see the code execute.

Yes I am using blended moves and co-ordinated movement, the robot is jogged via a joystick similar to 6axis ABB. 3 axis joystick allows for X,Y,Z control and jogging speed is calculated as a factor of the joysticks deviating from centre, this allows for really nice smooth jogging on all axes at once however I have included a feature that will lock the z axis while the X and Y are moving. Jogging is < 500mm/s

Manual "send to position" - again can you check before the move?

Yes I can but we seem to have people here who cant and will teach a new position and the execute the robot sequence at full speed without proper testing and put the robot into the side of the machinery.

Attached is a basic sketch of the test setup, the box in the middle is what I use to test the code, the idea is to be able to move all around the box and inside without actually hitting it. The soft-limits are setup to prevent axis movement that would cause the TCP to hit the box.

Does this mean 24 Axes? on the same CPU? will you also have on the same CPU the HMI, communications and other basic logic? (all will slow down the processor later)

Yes it does and hence why I have to be so careful about scan time etc. The robot sequences will be controlled in the Continuous task and I will have VERY limited HMI/Scada comms as well as messaging.
 
Hi all

Im very interested to see other peoples take on this and am quite disappointed with the response I have received, is my title not catch enough?

Please guys, what do u think? of the method and the problem.
 
Hi
you are posting questions that only cover a part of your total system
The motion has expanded from 3 axis to 24
1) for 24 axes on one CPU - I would be using a L7x processor - optimized for motion and quicker than a L63
2) I would also be looking at more than one cpu If scan time becomes an issue
(I have some systems with 3 CPU's (HMI, comms and IO on Main, plus 2 more cpu's running motion, 14 axes on one 12 on the other)
3) Are you planning to have them on 2 16 axes sercos cards - have you looked at the sercos update time restrictions?


How close to the Box do you wish to get and at what speed? 1 mm 2.5m/s ? - This will oversize your servos due to the decel rate required and the mechanical designer will hate you when you break bits due to the fast stopping


The method that you are using works - What you are missing is the time required to get the limits into the Servo
I cannot think of anything else but doing the limit checking yourself in the motion event task (no MAW event tasks) with stopping distance compensation.

Another idea is to verify the operator programmed points using virtual axes and check that the limits are not crossed. Ie Dry run the coordinated moves on a virtual Axes to verify the programming

A better method would be to verify the New Program set Points for real
New programmed point
Set a flag that the program is Pending
First run will always use a slow feed rate to check that it is all good.
Reset the Pending flag

I wonder how all of this works if you perform a high speed arc in the xy axis below the level of the box and just miss the corner of the box?
 
Hi Mike

you are posting questions that only cover a part of your total system

What more do you want to know?

1) for 24 axes on one CPU - I would be using a L7x processor - optimized for motion and quicker than a L63

I made a mistake here there will only be 4 Cartesians per Processor (12 Axis)

How would I optimize the cpu for motion, this is my first motion project and am not yet familiar with all the available
features.

have you looked at the sercos update time restrictions?

I assume update time would increase with the no. of axis would I need to increase the sercos card scan time and the course update time?

I do not intend to come to close to the box I would calculate the stopping distance at the expected max speed and use this as a basis of how far to set the soft limits from the box.

I cannot think of anything else but doing the limit checking yourself in the motion event task (no MAW event tasks) with stopping distance compensation.

I have avoided doing the checking in the motion event task as it uses to much of the cpu time, I could do the checking on alternate scans or every 5-10th scan to ease the load, My intention was to set up 'way points' of 1-5mm along the axis to trigger the checking although this requires a task per axis.

I can defiantly do a virtual dry run but this would not be possible when jogging.

I am still having the problem of the MAW not triggering after the second scan of the MAW triggered task but this is only happening on 2 of the 3 axis. The 2 axis that are giving problems have firmware v. 1.122 the one working fine is frm v 1.111

1.111 is recommended for RS5K v 17 and 1.222 is for RS5K v19.
I am using v19 so am surprised at the problem would expect it to be the other way round.
I have tried frm v. 1.220 but still the same Have not been able to try 1.111 on the other axis as I am having laptop/linx/flash upgrade issues. Just to add to the pot.

I can upload the code if you would like to have a look, maybe you can see something I havent.

Thanks
Stuart
 
I am not a motion guy . I would see if it is possible to just look at the current position and the target position with a 1mm different setting the trigger to adjust the limits.

One question why are you dynamically changing the soft limits? Why not set them and leave them alone?
Most robots that I have used have limits that are set and that is it. You can define the work object and modify the world orientation around but the limits where fairly solid.

I agree 100%...(y)
IMHO software limits are not "runtime" adjustable; they are constant and set depending of the 3D geometry of the workspace at a time.
When the workspace has changed its geometry, the new corresponding set of soft limits should get SSV-ed to the controller.
...or at least this is the way I do it...:D
 
I agree 100%...(y)
IMHO software limits are not "runtime" adjustable; they are constant and set depending of the 3D geometry of the workspace at a time.
When the workspace has changed its geometry, the new corresponding set of soft limits should get SSV-ed to the controller.
...or at least this is the way I do it...:D

I think that the OP problem is that in the middle of his workspace he has a raised box that he must put something into. So depending on which side of the box you are located the limits change. If you are above the box you get access to the full workspace
 
Yes when you are below the top level of the box the soft limits are set to limit the axis in the direction that would cause a crash. Whether you are inside or outside the box. However the box is just the test. I need to design a system that can then be implemented on any cartesian robot, with a user interface via intouch/RSView to edit the system.
 
I believe I have found the root to the 'dead' MAW's seems that you cannot execute a MAW to more than 1 axis per scan ???? Sounds strange I Know

I have now changed the strategy to check the World zones on every 200th Course update ie every 200th scan of a task set to execute as : Motion Group execution.

Not as quite as good as I wanted but seems to work ok and as they say in most cases, design everything with a kiss (Keep It Simple Stupid)

Seems to be working now, but will probably have to have minimum distance between Zone borders and limit borders to allow time for zone to be detected and limits set up before the limits is reached. Will probably have to have a look at slimming down the zone checking code to allow for faster execution.

Will keep posted for those that are interested.

Thanks Michael and everyone for the advice.
 

Similar Topics

Do people typically use both end limit sensors and configure soft limits for linear servo axes? I thought this was standard practice until one of...
Replies
14
Views
5,775
reached 1500 tag limit on the indusoft. Oem can't can't justify the next license level. Can't barely afford the $700 per machine as it is...
Replies
23
Views
7,375
I'm using a Kinetix 6000 to drive a ballscrew. The axis was jogged into the maximum negative soft limit and the drive faulted. The fault action...
Replies
4
Views
8,338
Hi, We have an application that has a device that goes through a reboot (appears un-graceful) What then happens is the MVI module appears to hang...
Replies
0
Views
73
I am working on setting up a Prosoft Datalogger model PLX51-DLplus-232. This unit will be collecting data from a SLC 5/05 on the DB9 port set to...
Replies
3
Views
103
Back
Top Bottom