Welcome, Guest. Please login or register.
Did you miss your activation email?
May 24, 2012, 09:25:44 AM
Home Help Login Register
News: Any Problems or Experience with Industrial Robots ?
Register and place your Question / Answer to worldwide Robotexperts right here !

+  Robotforum | Support for Robotprogrammer and Users
|-+  Industrial Robot Help and Discussion Center
| |-+  Stäubli & Bosch Robot Forum (Moderators: Werner Hampel, Jim Tyrer, Martin H, Fabian Munoz)
| | |-+  Help!!!!VAL3 Synchronous task terminated by itself.
0 Members and 1 Guest are viewing this topic. « previous next »
Pages: [1] Print
Author Topic: Help!!!!VAL3 Synchronous task terminated by itself.  (Read 2615 times)
snowingfish
Guest
« on: November 12, 2010, 01:07:08 PM »

Hello,

I wrote a VAL3 application in staubli CS8C. There are three synchronous tasks in the application, one for communication with a PC, one for alter command and the last for other movej* uses. My problem is the Alter task terminated after the application run for a radom period, but the rest two tasks still running. I put While(true) loop in the task, it should not terminated for ever...

What are the possible reasons causing this?? And any solution for this?

Many thanks in advance!

Jason
Logged
Jim C
Guest
« Reply #1 on: November 12, 2010, 02:45:10 PM »

First a couple of observations. Using a synchronous task for alter makes sense. You can adjust the trajectory every 4 milliseconds which matches the interrupt for the synchronous task. It is less common to use a synchronous task to communicate with a PC. Seldom does PC communications need to be done on a rigid schedule. You might want to put this in a regular asynchronous task. It won't run on a rigid schedule, but it will run every cycle. Most cycle times are around 10 or 12 milliseconds.

It makes no sense to put motion instructions like movej in a synchronous task. A move instruction in VAL3 adds a trajectory to the motion stack. Execution of trajectory form the motion stack is up to the system. In other words adding new trajectories every 4 milliseconds does not mean they will be executed every 4 milliseconds.

Have said all that I suspect you are seeing one of two things. The first possibility is that you are seeing overruns. Unlike a normal asynchronous task, a synchronous task does not have a maximum number of lines to be executed. Certain instruction like delay will cause the system to switch to the next task. If you program does not have a delay or similar instruction, the task just keeps running. No other task gets to run.

The second possibility is that the task with move instructions may appear to not be running. As I said earlier a move instruction add a trajectory to the motion stack. We can add trajectories faster then the system can execute them. The motion stack does have a limited amount of memory. Once full the program cannot execute move instructions and is paused until there is enough room on stack.
Logged
snowingfish
Guest
« Reply #2 on: November 13, 2010, 09:27:24 PM »

Thank you very much Jim, you are right, it is because of the move instructions in the synchronous task, the error number is 150.

The trajectory which need to be adjust by alter may also change, is there any better idea on change the trajectory? Or can I use two alter commands set in two different synchronous tasks? By the way, axis overspeed happened sometime when I am using alter(), especially if x,y,z,rx,ry,rz all need to be adjusted. Any solution for this, increase the maxmum rotation speed in mdesc?

Thank you and kind regards,

Jason
« Last Edit: November 13, 2010, 10:08:54 PM by snowingfish » Logged
Jim C
Guest
« Reply #3 on: November 15, 2010, 03:24:01 PM »

Error 150 is a move instruction that cannot be completed. For example the location maybe out of reach. There is a limitation with alter moves, you cannot change the configuration of the arm. The should configuration cannot change from right to lefty or lefty to righty. Also joint 3, the elbow, cannot change between positive and negative values. The same for the wrist, joint 5. You can change configuration on normal moves, but not on alter moves.

If you try to apply two alters, only the last one will have any effect. You can combined the two transformations into a single transformations, "trFinal = trOne * trTwo" and use a single alter.

If you try to apply sudden, large shifts using alter, the servos will fault out. VAL3 does apply a small filter to the movement commands to try and smooth out motion, but this filter can be easily overwhelmed by large changes in alter. You can apply your own filter to the transformation values to reduce this. The trade off is the arm is less responsive to the alter changes.

Make sure you have reduce the alter values back to or near to zero before ending the alter. Otherwise the arm will try to make a larger jump back to original trajectory when alter finishes. 
Logged
snowingfish
Guest
« Reply #4 on: November 15, 2010, 05:06:57 PM »

Thanks Jim,

I will try and see what would happed.

Thank you and regards,

Jason
Logged
Pages: [1] Print 
« previous next »
Jump to:  


Login with username, password and session length

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!