Beiträge von Murt

    First of all thank you. But, this doesn't solve my problem... What I need to do is to go from the P1 point to the P2 point making oscillations in between them and what I'm doing is to calculate all the points from P1 to P2 applying the oscillations


    Imagine this:

    x x x x
    P1----------------------------P2
    x x x


    Then P1 has an orientation and P2 has another orientation. I'm generating by calculus the points with small "x" in the "drawing". Finding the points in the space is extremely easy, but finding the right orientations is what it is difficult.

    This is why I'm asking for examples and / or hints and / or help. ;)

    Hello all,

    We've been trying to calculate ABC positions in our robot cell, but by now we are having problems on that.

    The samples and documentation we have is at much short. Is there any other documentation than the "Expert_Programming_manual.pdf" that could help us on doing that?

    What I do need is to be able to go from the POINT1 to POINT2 dividing that in several movements and in each one a proportion of rotation must be applied (I mean rotate the tool little by little from P1 to P2).

    Any example, help or hint will be welcome.

    As always thank you in advance.

    Hello all,

    I've been trying to make a function that generate points. Something like:

    LIN {XiYiZiAiBiCi}
    Q
    LIN_REL {X100 A 10 B5}
    W
    LIN_REL {X100 A 10 B-5}

    The strange thing here is that the result $POS_ACT at Q and in W are really different. I understand that X will be moved, but A should be Ai+20 and B should be Bi.

    The values I'm getting though are different... why do this happens?

    Thank you in advance...

    In order to clarify my question:

    What I need is to put the $POS_ACT inside a variable.
    But I need to do it inside the fold.

    The objective here is to have only one variable that would receive the E6POS and that that variable would become overwritten each time the fold was read.

    So something like:

    PosAct = %parAktPos

    would be the desired thing... but inside the fold the PosAct variable should be overwritten by the contents of the parameter parAktPos.

    Thank you again...

    Hello again...

    Using this approach is giving me a new problem:

    Now the TouchUp works perfect and this is great, but after that, I need to place inside the fold of the inlineform a new content: something like:
    PosAct.X = %parAktPos.X
    PosAct.Y = %parAktPos.Y
    ...
    PosAct.T = %parAktPos.T
    LIN PosAct

    Doing that what I'm searching is to have an overwritten PosAct variable each time the fold is read.

    The problem that I've found here is that I can't use this syntax: %parAktPos.X
    in the fold...

    I've also tried to use something like: PosAct = %parAktPos also without luck...

    The way the fold is declared inside the KFD is:

    decl fold d_PosS1[9]
    d_PosS1[1]="PosAct.X = %parAktPos.X"
    d_PosS1[2]="PosAct.Y = %parAktPos.Y"
    d_PosS1[3]="PosAct.Z = %parAktPos.Z"
    d_PosS1[4]="PosAct.A = %parAktPos.A"
    d_PosS1[5]="PosAct.B = %parAktPos.B"
    d_PosS1[6]="PosAct.C = %parAktPos.C"
    d_PosS1[7]="PosAct.S = %parAktPos.S"
    d_PosS1[8]="PosAct.T = %parAktPos.T"
    d_PosS1[9] = "LIN PosAct"


    Any idea on why it is failing? and regarding your approach... why you were using the array of POS variables?

    Thank you again...

    :D

    THANK YOU VERY MUCH!!!! the problem I was having here was the type of the variable I was using...

    I was using a set of 6 variables to hold the E6POS fields... I had to use the FREE variable type to make it work...

    Well, now it works as I expected, I can't see the contents of the inlineform unless I go there and modify it, but it will work wonders for me.

    Well. Now it works perfect. Again, thank you!

    I've used only:

    DEFSCRIPT OnTouchUp
    SHOWVAR(FULLPATH[] "$POS_ACT", PARAM parAktPos)
    DO ACCEPTINLINEFORM
    ENDSCRIPT


    Thank you!

    First of all thank you for answering...

    The only difference that I can see here is: SETVAR(Fullpath[] " %parVar [%parIndVar1 ].X", Value[] " %parAktPos ")

    And I don't understand it properly:

    How do you have declared the variable parVar, parIndVar and parActpos?

    Thank you in advance...

    Hello all,

    I'm trying to compare two real values in a KFD script...

    Now it looks like:

    DEFSCRIPT Are2RealsEqual
    SWITCH "rValue1"
    CASE "rValue2" DO dsPerfect()
    CASE ELSE DO dsWrong()
    ENDSWITCH
    MESSAGE "rValue1"
    MESSAGE "rValue2"
    ENDSCRIPT

    The problem is that even I can see that the values are equal (using MESSAGE) the switch instruction is always calling the script dsWrong().

    Any idea on why is this happening? and even better: is there any way to make it work?

    As always thank you in advance.

    Hello all,

    In the KFD file I have one inlineform that must react to the ONTOUCHUP and ONOPEN event.

    Now I've made a script:

    DEFSCRIPT GetPosAct
    ShowVar (FULLPATH[] “$POS_ACT.X”, PARAM rX)
    ShowVar (FULLPATH[] “$POS_ACT.Y”, PARAM rY)
    ShowVar (FULLPATH[] “$POS_ACT.Z”, PARAM rZ)
    ShowVar (FULLPATH[] “$POS_ACT.A”, PARAM rA)
    ShowVar (FULLPATH[] “$POS_ACT.B”, PARAM rB)
    ShowVar (FULLPATH[] “$POS_ACT.C”, PARAM rC)
    Message “HELLO?”
    ENDSCRIPT

    And each time I press the TOUCHUP button on the KRC it appears on the screen the message HELLO, but no changes are made.

    When I create the inlineform it works properly and BOTH of the events use the same script.

    Any idea of why it is not working if I use the ONTOUCHUP event?

    Thank you in advance!

    Hello,

    I’m making a program that must make an oscillation movement with the robot. The main idea here is to be able to store two points and give some parameters:

    Pseudocode:
    PTP P1
    Oscillation_routine width=10 height=5
    PTP P2

    The idea here is:
    1. To go to P1.

    2. Put a trigger with Distance=0 and Delay=0.
    a. Inside the interruption we are:
    i. Calling BREAK
    ii. Calling RESUME
    iii. Reading the $POS_BACK and the $POS_FOR data to be able to calculate in the interruption we have gone into.
    iv. Generating calculated movements.

    3. To go to P2.

    The result we have reached by now:
    The robot goes well to P1.
    Then it starts moving to P2.
    Then it makes the calculated movements.

    The question:
    This is not what we need.
    I would like to be able to read the next position and then cancel completely the movement before it takes place. Which is the best way to do that?
    Could you help me in getting this behavior?

    THANK YOU VERY MUCH IN ADVANCE.

    Hello all,

    Long time no see here...

    Before starting to work again with KUKA robots, I need to know if I can download/get the "KUKA encryption tool" from somewhere.

    I've called our commercials and they don't know what it is.

    I don't know if it is free or not, of course I prefer the free option here, but if it is not free I would like to know where to buy it.

    What I want to do is to encrypt the programs and functions that are global in a robot cell in order to avoid anyone to copy our job.

    As always, thank you in advance.

    Thank you all,

    But it seems that there is not a batteries problem : at least the controller is not asking for new batteries neither it detects that they are low.

    Also it is not a disconnection of the DEVICENET cable as the ? marks are not appearing. What it happens is that nothing works.

    But anyway, after being there, it didn't happened and moreover, the customer is not asking for that anymore, so I suppose that they should be making something really wrong.

    Hello all,

    One of my customers have told me that the I/O configuration (EIO.CFG is getting lost from time to time...) I'll go to his enterprise in order to look at the machine and to try to search for possible causes, but in order to gain time, could you please try to give me some ideas on this topic?

    As always, thank you in advance...

    You were right...

    If we load the modules one by one or we load the program in one robot and then in the others we face this problem.

    In order to avoid that problem we have to unload the modules / programs first and then reload them in all the robots.

    Thank you for your answer, after seeing that and checking the manual of the RAPID language, I've found that.

    Hello all,

    We have prepared several PERS structures, those structures have been declared as PERS as they must be shared between the 4 robots that form our multimove system.

    The problem here is that when we load a new program, with different values for those structures the values are not being replaced, and a messagebox appears on the flex pendant telling us that the values have not been updated.

    Can I have the values updated in that situation somehow?

    I'd like to be able to load a program overwriting the actual values in the flex pendant with the ones saved into the program file.

    I think I remember that this should work in that way... could it be that it fails when structures are involved?

    As always thank you in advance.

    Hello all,

    If from my program I try to use GetNextMechUnit, I cannot get the desired result... I want to get the names of active units.

    I've made this code snippet to test it:

    ******************************************************************
    MODULE mainmodule

    PROC Main ()

    VAR num listno := 0;
    VAR string name := "";
    VAR bool b := FALSE;
    TPWrite "List of mechanical units:";
    WHILE GetNextMechUnit(listno, name \Active := b)
    DO
    IF (b)
    THEN
    TPWrite "ACTIVE: " + name;
    ELSE
    TPWrite "INACTIVE: " + name;
    ENDIF
    ! listno := listno + 1 is done by GetNextMechUnit
    ENDWHILE

    ENDPROC

    ENDMODULE
    ******************************************************************

    The problem here is that all the robots seem that are active even if I have deactivated them from the flex pendant... (you know, that first icon over the yellow gears on the right side of the flex pendant).

    Any idea on why it is happening?

    As always thank you in advance.

    Hello all,

    I'm trying to modify a num variable inside a "large" structure. This structure have:

    15 strings.
    13 nums.
    7 bools.
    1 wobjdata.

    When I try to modify one of the nums value, I get the error VALUE OUT OF RANGE in the robotstudio simulator, and simply the value don't changes in the real robot.

    The operating system versions installed are:

    RobotStudio (virtual robot) : 5.10.00
    RobotWare (Real robot) : 5.10.02

    Any idea on why is this happening?

    As always thank you in advance.