Welcome, Guest. Please login or register.
Did you miss your activation email?
November 20, 2008, 06:08:15 PM
Home Help Search Calendar Login Register
News: Any Problems or Experience with Industrial Robots ?
Register and place your Question to worldwide Robotexperts right here !

+  Robotforum | Support for Robotprogrammer and Users
|-+  Robot Help and Discussion Center
| |-+  ABB Robots (Moderators: Werner Hampel, Sven Weyer, Jim Tyrer)
| | |-+  How to program 'configuration' correctly?
0 Members and 1 Guest are viewing this topic. « previous next »
Pages: [1] Print
Author Topic: How to program 'configuration' correctly?  (Read 1172 times)
kotyczka
Newbie
*
Offline Offline

Posts: 3


« on: January 26, 2007, 05:26:53 PM »

New IRB 2400, I am new here too.

The Roboter shall polish spherical lenses.
The tool must be orthogonal to the surface.
The path shall be done by MoveL commands.

I wrote a program that will calculate for a given path
the position (x,y,z) and the orientation (quaternion).
Next I have to fill the robconf component (of type confdata)
of robtarget with values that make sense.
IRB 2400 takes the first three components of confdata
(axes 1,4,6).

What I am lokking for is the ability to calculate the
position of the single axes for a given target position
and orientation (tool and piece data are known).
Because the tool has to "surround" the piece the configuration
will change permanently.

Is there a way to do this offline? When phoning ABB I got
two advices only
 - Turn off configuration check (ConfL\Off) and fill robconf
   by zeros.
   But that does not work, axis 4 will soon be in it's end
   position (200 Degrees)
 - Determine the axes position at runtime by  CJoinT()
   But I don't think this to be a good solution, you will
   have a temporal delay.

Can anyone give me some advice how to determine the
varying roboter configuration before runtime?

----------------------------------------------------------------------------

Another problem is the "wrist sinularity" (axis 5 = 0 Degree)
Then the tool moves so slow that one would polish a deep hole
into the lense.

Can I check previously, if for the given path I will run into this
pitfall - and take some construktive modification
(f.e. a wegde for the tool) then?
But this question is similar to the one above.

Thanks in advance.



Logged
Neon
Newbie
*
Offline Offline

Gender: Male
Posts: 27



« Reply #1 on: January 27, 2007, 01:57:38 PM »

Hi Kotyczka,

What control are you running? Some robots can be run by different controls, and some controls can run only 1 robot.

I haven't come across an IRB2400 in quite some time, so I forget the control.

I can help you research if you can give me some more info.



Neon
Logged
Sven Weyer
Global Moderator
Jr. Member
*****
Offline Offline

Gender: Male
Posts: 53



« Reply #2 on: January 27, 2007, 10:42:51 PM »

Hi,
The following of the Wiki over your lenses:
“With the simplest lenses the two optically active surfaces are spherical. That is, they are surface cutouts of a ball. Therefore one can assign radii of curvature to these surfaces.“

In such a way and why you do not use then MoveC instructions?
The positions inside stop MoveC instructions can likewise still with functions such as Offs and/or. RelTool or both to be together used

Thus around your 4-Achse I would make myself no concerns. Simply extend the range in the MOC.cfg the limit value is indicated and ind to radians is indicated for the positive like negative direction in each case here. D.h. 360° are 2*PI = 6,283185. So now you can extend the range after desire and mood. (z.B.: the axle 4 has now value of 4,625122 then to have we in the positive direction 265 degrees. A degree has value in radians of 0,017453.)

Topic singularity I can only guess/advise you the hardware position to consider. With it you only really get this problem into the grasp. You can in such a way position the station it become more favorable for the robot. But that is finally only dares there I the Vorraussetzungen does not know in such a way.

I hope I could you help.


robotic74
Logged

Nobody is perfekt!
kotyczka
Newbie
*
Offline Offline

Posts: 3


« Reply #3 on: January 29, 2007, 02:32:53 PM »

What control are you running? Some robots can be run by different controls, and some controls can run only 1 robot.
I haven't come across an IRB2400 in quite some time, so I forget the control.
I can help you research if you can give me some more info.

Thanks for your response.
My native launguage is German. I'm very sorry that I do not understand,
what you're asking me. Of course I would like to give the necessary
information. So what do you mean by 'What control are you running?'
Can you give me an example so that I can understand the question?
Logged
Jim Tyrer
Global Moderator
Sr. Member
*****
Offline Offline

Gender: Male
Posts: 383


If all else fails, read the manual.


« Reply #4 on: January 29, 2007, 11:03:58 PM »

du könntest bei, http://www.roboterforum.de zu fragen versuchen
JimT
Logged
kotyczka
Newbie
*
Offline Offline

Posts: 3


« Reply #5 on: January 30, 2007, 10:25:29 AM »

du könntest bei, http://www.roboterforum.de zu fragen versuchen
JimT

I have done so :-)
Logged
Neon
Newbie
*
Offline Offline

Gender: Male
Posts: 27



« Reply #6 on: February 01, 2007, 09:51:16 PM »

Hi Kotyczka,

Are you running the IRB2400 on an S4 or S4C perhaps? S4, S4C, S3, etc. these are called controls - it's the type of computer/software that actually controls the robot. The control type is really important - it's pretty much the heart of the robot.

It should specify the control on a metal plate at front of cabinet (top left maybe). I have quite a bit of documentation for ABB and I will help you with information anyway I can - if I have the information at hand.

Welcome to the forum by the way Kotyczka,


Neon
Logged
vulpes_h
Newbie
*
Offline Offline

Posts: 11


« Reply #7 on: October 05, 2007, 07:28:22 PM »

%%%
  VERSION:1
  LANGUAGE:ENGLISH
%%%

MODULE ABB_TEST
  FUNC robtarget ClosestWristPos(
    robtarget pos,
    robtarget startpos,
    PERS tooldata usedtool,
    PERS wobjdata usedwobj)

    !**********************************************************************
    !   Funktion:  Return position with smallest possible axis reorientation.     
    !**********************************************************************
    VAR robtarget a;
    VAR robtarget b;
    VAR robtarget retpos;
    VAR jointtarget aj;
    VAR jointtarget bj;
    VAR jointtarget startposj;

    !
    ! Calculate joints for startpos
    !
    startposj:=CalcJointT(startpos,usedtool\WObj:=usedwobj);
    !
    ! Alternative a, with same configuration as startpos
    !
    a:=pos;
    a.robconf:=startpos.robconf;
    aj:=CalcJointT(a,usedtool\WObj:=usedwobj);
    !
    ! Alternative b, with different wrist configuration as startpos
    !
    b:=pos;
    b.robconf:=startpos.robconf;
    IF b.robconf.cfx=0 OR b.robconf.cfx=2 OR b.robconf.cfx=4 OR b.robconf.cfx=6 THEN
      b.robconf.cfx:=b.robconf.cfx+1;
    ELSE
      b.robconf.cfx:=b.robconf.cfx-1;
    ENDIF
    bj:=CalcJointT(b,usedtool\WObj:=usedwobj);
    !
    ! Selection of closest alternative
    !
    IF Abs(aj.robax.rax_4-startposj.robax.rax_4)<Abs(bj.robax.rax_4-startposj.robax.rax_4) THEN
      retpos:=a;
    ELSE
      retpos:=b;
    ENDIF
    RETURN retpos;
  ENDFUNC

  FUNC robtarget ClosestWristPos2(
    robtarget pos,
    robtarget startpos,
    PERS tooldata usedtool,
    PERS wobjdata usedwobj)

    !**********************************************************************
    !   Funktion:  Return position with smallest possible wrist reorientation.
    !**********************************************************************
    VAR robtarget a;
    VAR jointtarget startposj;
    VAR jointtarget aj;

    !
    ! Calculate joints for startpos
    !
    startposj:=CalcJointT(startpos,usedtool\WObj:=usedwobj);
    a:=pos;
    a.robconf:=startpos.robconf;
    aj:=CalcJointT(a,usedtool\WObj:=usedwobj);
    !
    ! Switch turn number if tool reorientation is > 180 degrees
    !
    IF Abs(aj.robax.rax_4-startposj.robax.rax_4+(aj.robax.rax_6-startposj.robax.rax_6))>180 THEN
      IF Abs(aj.robax.rax_4-startposj.robax.rax_4)<Abs(aj.robax.rax_6-startposj.robax.rax_6) THEN
        IF aj.robax.rax_6-startposj.robax.rax_6>0 THEN
          a.robconf.cf6:=a.robconf.cf6-2;
        ELSE
          a.robconf.cf6:=a.robconf.cf6+2;
        ENDIF
      ELSE
        IF aj.robax.rax_4-startposj.robax.rax_4>0 THEN
          a.robconf.cf4:=a.robconf.cf4-2;
        ELSE
          a.robconf.cf4:=a.robconf.cf4+2;
        ENDIF
      ENDIF
    ENDIF
    RETURN a;
  ENDFUNC
ENDMODULE
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.7 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!