Posts by RoboticsMan

    are you evaluating EKI_STATUS and ALIVE flag?

    To evaluate the EKI_STATUS value, I guess that I would have to call a command that returns the value? The problem is that I get the error message when I call the commands, so I never get to evaluate the return value. I thought these messages could be suppressed via the setting in the XML file, but this does not seem to work.


    I also thought about using the ALIVE flag, since it turns out we have used it before. In the end I ended up monitoring the $PRO_STATE1 variable in the SPS instead, to see if the program has been reset since the last time a connection was established. In that way I only try to open a connection if there was a program reset since the last connection. The good thing about that solution is that it works just as fine on KRC2. But thanks for the reply anyways!


    /RoboticsMan

    Hi


    I have the following problem:


    I am using a robot with KRC4 and KUKA.EthernetKRL 2.2.

    We have made an API on the robot for our vision system. The first time our Init() command is called, we establish a command to the PC that runs the vision software. However, the Init() command may have to be called again, with different parameters. If we try to establish a connection, and one has already been established, then we get an error. I don't want that. If we try to close the connection before opening a new one, then we also get an error, if no connection has been established yet (i.e. first time the command is called). I also don't want that.

    This problem could be avoided if there was some way to ask the KUKA software whether a connection has already been established. This does not seem to be the case. Or am I missing something?


    We are also using our software with KRC2 robots. In the older versions of KUKA.EthernetKRL it is possible to call the command for closing a connection, and it gives no error message even if no connection is open. This is the behavior I want!


    I know I could just restructure our API and add a specific command for opening a connection once in the beginning, but I would rather not do that.


    So: Is it in some way possible to ask the KUKA.EthernetKRL software whether a connection is already open? If so, then can just skip opening it again.


    I have tried to suppress the error messages from the EthernetKRL software by adding this to the xml file that configures the communication:


    <INTERNAL>

    <Messages Display="disabled" Logging="error"/>

    </INTERNAL>


    But this does not seem to work.


    Thanks in advance for any tips!


    /RoboticsMan

    There is not really a "variable". Just the configuration files, as Saaboholic mentioned the robot type is one such instance. I also suggest that you could read the robot serial number upper part which would indicate the robot type. I might be wrong, but I think that the general rule is that the parallel arm robots are named X400, like 2400, 4400 and so on. Their non-parallel are X600, like 2600, 4600, and so on. Older robotware used only two digits for the upper part, 24, 44 and so on. Newer ones were lengthened to 4 digits to indicate the variants like 6620, 6650 and many more.

    Thank you, that is very useful information!

    Why, do you have to change the program every time you have one of these robots? You have to have two different programs, one for the linked and one for the others.

    What about an own variable/constant, that you can set during setup of the robot, in case that you don't find a system variable.

    Yes, maybe I made it sound worse than it actually is :smiling_face: I have encountered the "special" robots a couple of times, but it is so far between that I usually have a problem finding the program I made the last time I had that issue... So this time I am going to make the solution so that it can be reused and is always part of the program. A constant in my own program would definitely be an option, but it would be nicer if the person setting it up would not have to worry about this.

    Hi


    We have made a pretty big program in Rapid that we use on many different robots. The program is responsible for robot control in a vision application. Once in a while we encounter a robot with parallel linkage, i.e. the axis 3 servo is next to the axis 2 servo, and the servo pulls a bar that goes up to joint 3, like this:



    Every time we encounter one of these robots I have to change the program, because of how the kinematics works on these robots (joint angle of axis 3 is dependent on joint angle of axis 2).

    So I was wondering : Is there a way to ask the robot software whether axis 2 and 3 are linked like that? Is there a system variable that has this information? In that case the program could have different cases depending on whether the type of the robot, and I could solve the problem once and for all.


    Thanks in advance!


    /RoboticsMan

    Thanks!


    I also figured it out just before I saw your answer. I had 191 subroutines and 67 functions in the file, so I guessed that the limit had to be around 255 (I knew that I was very close to the limit).


    /RoboticsMan

    Hi all


    Today I wanted to test a program on a KRC4 robot, but I got the message "KSS02710 {Object name} too many local subprograms". I have to admit that the program is relatively big, but now I wonder: How many subprograms are you allowed to have in one file? Is there a hard limit? And if so, why doesn't the message tell me what the limit is?

    But at least the KRC4 handles it better than the KRC2 I tested it on. On KRC2 the controller software had an internal error when it tried to compile the file, and the robot had to be rebooted (after the file in question had been deleted via windows)


    /RoboticsMan

    Hello


    "this is for OfficeLite, so to use this, change environment to Office. which sucks..."


    Ah ok. I don't have that, I only have the actual robot to test it on. I saw OfficeLite mentioned, but I hoped it wasn't required. I guess I will do the tests by connecting a switch or a sensor to input ports on the robot instead, and then trigger those at the appropriate times.


    "if signals, you can replace SIGNAL declarations with BOOL variable"


    We used to use signals in our program, but we switched to using I/O indices instead at some point. So switching to boolean declaration is not really feasible here, unfortunately.


    /RoboticsMan

    Hi,


    I am going to test a robot program that depends on some inputs from a PLC. Unfortunately I don't have any PLC to connect to the robot, so I want to test it "manually". So my question is: Is it possible to force an input high on the robot? For example by somehow mapping an output to an input?


    If the robot is waiting for an input to become "true" then I could just press the "simulate" button. But this is not always the case. Sometimes I just want to read the value of the input and have the program act accordingly.

    Another option would be to use the "always high" input, but I don't want it to be high always.


    Additional info: The robot is a KRC2 robot. I don't have software like Office Lite at my disposal.


    I guess the "safe" option would be to connect some physical buttons to inputs on the robot, but I was hoping to not have to modify the physical setup.


    Thanks in advance!


    /RoboticsMan

    Thanks! So it shows the coordinates. That means you must have chosen which robot model it is supposed to simulate, right? What about the movement speeds? Are they realistic? I might be able to cobble together some visualization myself, by transmitting joint values to my own software from the sps.


    /RoboticsMan

    Hi


    I want to be able to program KUKA robots offline, and simulate the programs (i.e. having the robot movements visualized). So the same functionality that RoboGuide offers for Fanuc and RobotStudio offers for ABB. As far as I understand, I need Kuka SimPro + Kuka OfficeLight for that. Is that true, and what is the approximate price for these programs? Someone told me that the price is about €12.000 for those two programs combined, is that really true?? And if so, are there then any cheaper alternatives?


    /RoboticsMan

    Hello Alexandru


    Thank you for your answer. I already tried to set "!" in front of the program name. The programs show up anyways, even when I am on level 2. Can this be because I am testing it on the K-Roset simulator?


    Renaming the function sounds like a good idea, I will consider that.


    /RoboticsMan

    Hi


    We have made a program for Kawasaki, and it includes A LOT of helper programs. Now all of these helper programs show up when the user has to select the program to start on the teach pendant. In fact the user has to go all the way to page 11(!) in the list of programs to find the program that he must start. Is there any way to "hide" certain programs, so that they don't show up in the list on the teach pendant?


    Thanks in advance!


    /RoboticsMan

    But please elaborate me on this:


    how can this be of use? making a program with uninitialised data means the operator must re-make the whole program.

    The robot program is used for a vision system. There is A LOT of KAREL code that is being run. We have made a template program that calls the relevant code. Some of the movements are controlled by the vision system. In between the sections where the vision system is in control, some movements are needed. These will differ from cell to cell. When the program arrives at the uninitialized point, the operator can jog the robot to the relevant position, touch up the point, and continue.


    /RoboticsMan

    Hello again


    I think I found the answer myself. I make the TP program, save it as an LS file, delete everything in the "/POS" section and compile it back to a TP file. Then the position will be uninitialized, and the operator will be forced to touch up the positions.


    /RoboticsMan

    Hi!


    I want to make a program with uninitialized positions. The idea is that I program the whole structure and the motion commands, but that the operator will be forced to touch up the positions during the first run. Is this possible? I found program like this:


    It looks like this would be what I am looking for, but I get errors when I try to modify and compile it.

    How can I make a program like that myself?


    Thanks in advance!


    /RoboticsMan

Advertising from our partners