I need to develop something in order to update some coordinates in a KUKA KR C4 robot predefined program.

After some research I've found some ways to do it, but all of them non free.

I had several options, like developing a HMI in the console with 3 buttons, to touch up the 3 coordinates that I have to update for example.

Sending a XML file would work too but I need a RSI connection, and I can't do it without proper software (I guess).

Do you know about something like this? Or a C++ library that allows me to have access the .src/.dat files or to create a new one with the same "body" but with different coordinates?

Summing up, imagine that I have a conveyor that carries boxes and I need to develop a pick and place program. So far so good. But every 100 boxes, the size changes (and I can't predict it). So the operator goes and updates the coordinates, but I want to make sure that he won't change anything else in the program. Any ideas?


2 Answers 2


If you are working with windows then for KUKA programs you can use the (OrangeEdit), check it in this website, OrangeEdit Beta. It is free and it enables you to view and edit all the .src and .dat files and more.

As for the robot program itself, usually you can save it in a USB key, to do so you just log into the KCP of the robot as administrator (default password is "kuka") then plug your key in the robot CPU, then in the KCP, in the menu bar, choose File->Save As->USB and wait for the saving to finish. You end up with a zip file that you can extract and then access via the OrangeEdit.

Normally there are three main folders, the one you will be interested in is (KRC) inside you will have a file called ($config.dat) where normally all the base frames are defined. Actually people, usually, use these base frames to define zones or areas of work, then in each zone another specific program defines the relative displacement. So, for example, in you application you might find a program called pick_cartoon() where the relative displacement, according to the cartoon dimensions, will be saved in the associated .dat file. So if that is the case then what you can do is to add offset to the part in .src file that does the displacement of frame of work, the offset of course express the difference between the two types of cartoons you have. To do so you need to follow the following steps:

  1. First defines your offsets parameters in the $config.dat.

  2. Then program them in a convenient way in your .src file, you can use a counter or presence sensors to differentiate between the two types of cartoon, in this case you need to use some I/O of the robot and those also you can define in the $config.dat file.

  3. Then you make these parameters accessible by the operators by defining them in the ConfigMon file which you can find under the (\C\) folder in the robot program.

BTW, if you are under Linux you can actually access all the files and open them with any text editor, but it is not as nicer as with OrangeEdit, because that software was created specially for KUKA programs.

Let me know if this helps you, or if you have any further questions.

  • $\begingroup$ i understand everything you said, but yet it doesn't fit to the problem. my other thread might help you understand my problem: robotics.stackexchange.com/questions/9312/kuka-delimiter-net $\endgroup$
    – noidea
    Commented Apr 28, 2016 at 16:38
  • $\begingroup$ I had a look at the link you provided, but still I don't understand why you have to create a separate program or App to execute what you want I still believe you can do so using the digital I/Os and .src .dat and ConfigMon. But anyway I cannot help you further, goodluck. $\endgroup$ Commented May 4, 2016 at 7:42
  • $\begingroup$ The main reason is that i don't want the operators to TouchUp the new points in the console. And every point has a "different gripper job", so i have to previously choose the job i want, and i can't make that in the kuka console. $\endgroup$
    – noidea
    Commented May 4, 2016 at 8:42

This is as far as it can be from an elegant solution:

You can access the src and dat files via ftp. You can manipulate them as you like afterwards. However you cannot load them into memory without pressing some buttons on the panel. To circumvent this you might be able to install a program on the windows os running on the kuka controller that can move the mouse by getting external command via ethernet. You cam change the src file by editing over ftp and instruct the virtual mouse program to make some clicks to load the src into memory.

A somewhat more elegant solution is: Make the operator switch the robot from auto-ext mode to T1 (as I recall this unloads the program from memory) with a hardware switch. Access teh program vie ftp edit on a PC with custom hmi copy back via ftp and instruct the operator to switch the robot back to aut-external (as I recall it loads back the program to memory) with a hardware switch)

  • $\begingroup$ what about JOpenShowVar ? $\endgroup$
    – noidea
    Commented Mar 15, 2016 at 14:33
  • $\begingroup$ Seems to do what you are looking for. Not sure how (using which protocol) it work to communicate with the robot controller. $\endgroup$
    – 50k4
    Commented Mar 15, 2016 at 16:53
  • $\begingroup$ tcp/ip i guess. private static String robotIP = ""; //The static IP of the robot private static int port = 7000; $\endgroup$
    – noidea
    Commented Mar 15, 2016 at 17:03
  • $\begingroup$ Clearly there is a custom interface between the TCP client and the proxy which has to be installed to the robot controller. Interesting would be to know how does it tap into the robot controller. $\endgroup$
    – 50k4
    Commented Mar 17, 2016 at 13:25
  • $\begingroup$ soon i'll tell you. i hope :) i thought it would be easier to "acess" robot axis variables .. like it's shown in the console $\endgroup$
    – noidea
    Commented Mar 17, 2016 at 14:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.