Hello,
Is it possible to just get a newer version of software inside the USB stick?
V3.a.b->V4.c.d
Hello,
Is it possible to just get a newer version of software inside the USB stick?
V3.a.b->V4.c.d
After discussions with KUKA support, it seems that this issue can be resolved by deleting the KrcDiagOnKrlMsg registry.
You can find out more here: https://shorturl.at/owPT1
One robot is KSS 8.6.11, another one – KSS 8.6.9.
Guys, I am happy that you've never faced anything like this, but I am not making this up.
I just want to resolve this issue and move on to next projects.
For example, in my archives I have the photo of smartPAD where the HMI application just closed itself and diagnostics has launched by itself
Also, we are using the directory loader module in many projects, but only in few of them this issue occured.
The code itself is fine because if I reupload the missing movements file, the robot executes it without any problems.
The problem is, as I see it, that sometimes the robot uploads the instructions file first and finds nonexistent motion functions. And that triggers the KRCDiag initialization. But if the robot finishes the upload procedure / manages to upload both files and, after that, does the check up, then the issue does not occur.
I have already contacted the support, but at this point I am still waiting for them to respond.
Hello,
panic mode Maybe I was inarticulate. Sometimes KRCDiag launches automatically and I do not want it to happen.
SkyeFire From my experience, KRCDiag launches automatically when the code is unsafe (for example: recursion can start the KRCDiag process).
Hello,
I am facing the issue with robots (different KSS versions) when I use the Directory loader module (the issue occurs once in a few hundred/thousands times).
Situation: I am using the directory loader to upload programs to KUKA robots. We upload at least 2 files at once.
One file holds the instructions, another file contains the robot motion commands.
The main robot code calls a function from the instructions file and the instructions file calls several functions from the second file.
Everything works just fine, but sometimes during the upload procedure, the robot starts doing diagnostic (KRCDiag) and not all the files are uploaded (the motion files are missing). As a result, that is ending in a syntax error in the robot (because the instructions file is trying to call the motion programs which are not uploaded).
Can you advise me and tell me if I am doing something wrong?
Or maybe there is some kind of parameter inside the robot which can turn off the automatic launch of KRCDiag?
Or maybe I can set the order in which the files are uploaded? Because I am suspecting that the issue occurs when the instructions file is being uploaded first.
So, basically we are teaching robot movements by demonstration: https://youtu.be/fFDZEbE4Qec?t=84
And the teaching tool represents 2 different tools for a robot (big and small stappler guns). By selecting a different value of a switch button, we know what tool the robot should use. And right now the software uses one action template for all buttons (trigger for a shot action is a must at this point).
TRIGGER WHEN PATH = 0 DELAY = 0 DO *Button action* PRIO = -1
I am asking this question, because if it is possible to change a tool frame using a trigger, we will avoid some additional work with post processors programming.
If the advance pointer is not zero, I would suspect that the change of the tool frame is blocked by a robot motion planner. That is why I thought it is worth mentioning.
Hello,
I have a question. Is it even possible to change a tool frame using a trigger with a function, for example:
TRIGGER WHEN PATH = 0 DELAY = 0 DO SwitchToolTo(#Big) PRIO = -1
Inside the SwitchToolTo() function the robot is just turning on/off some cylinders and selecting the correct $TOOL frame.
The cylinders are changed mechanically every time, but the tool frame seems to be the same as before. The value of the advance pointer is 0, the movement type is LIN.
Hello,
This is the last update of this case, I hope it will help someone in the future.
After testing a few scenarios, we decided that 600 points in the spline block is a sweet spot for our client's applications. It has been a month since the last time the issue occurred, so, I think it is safe to say that the issue is 'solved'.
A few notes from my side:
1) I had tested the spline block with 2500 points and after repeating the same movements 12 times, the robot had the issue. After that, I repeated the test. The robot stopped after the same movements were repeated ~10 times.
To be clear, I uploaded 22 programs to the robot to fill up some memory. All the programs consisted of the same commands and movements.
2) After that, I split the spline block of 2500 points into 2 spline blocks with each of them consisting of 1250 points. The robot repeated the path of the program 44 times without any issue. But then, I launched the execution of directory loader and the issue occurred again. Then I repeated the program execution only a few times. After that, the launch of the directory loader did not cause the issue.
In all the cases: BACKWARD_STEP ENABLE="false".
Using spline blocks with a few thousand points, I repeated the same issue on 3 different robots (KSS 8,6.x).
Hi,
There are some updates.
It seems that the problem is caused by too big spline blocks in the program.
The robot can execute the spline block, but the error occurs when I press the "Reset program" button:
1) When the robot has not finished to execute the spline.
2) After the robot has finished the spline execution and performed some other movements.
Does anyone know the maximum "correct" size of a spline block? Or will it be my destiny to perform many tests to figure it out?
Or maybe there is some kind of system variable which could warn me that the robot is performing some kind of important task right now?
I wrote an email where I explained the issue to the support.se@kuka.com and I got a response from KUKA Global Customer Service.
According to the support, since Friday my case is "in discusion with developement".
Hello,
For the last few weeks, the smartPad controller displays the following errors:
As for now, I am informed that KSS01205 causes the other errors. The error sometimes occurs in motion commands, sometimes after a physical “RESET” or “Reset program” button click, and sometimes just randomly. In 2 weeks, there were only 2 days when the error did not occur at all. The robot code remains almost unchanged every day, the main difference is the motion programs. The interesting part is that sometimes the relaunch of the same motion program does not provoke the error.
The robot's information:
KR 20 R3100, Serial No. 1422984
KSS 8.6.11 (before the KSS update, the version was 8.6.9).
KRC4 controller.
Additional software:
Please see a little bit of information about the robot code below:
Process of the system when the error occurs in the movement:
1. I am selecting a cell.src program, switching to the EXT mode, pressing the RESET button. The cell.src program starts running in the EXT mode.
2. The cell.src program waits until communication between the robot (server) and SCADA (client) is established.
3. When the communication is established, cell.src is running in loop (init state of the state machine). Right now, extra submit which is responsible for communication waits for messages from SCADA.
4. In SCADA, an operator selects programs for the robot. SCADA uploads the files to the shared folder of the robot (D:\Directoryloader) and then sends a message to the robot to initialize a directory loader.
5. The communication submit reads the message from SCADA and checks if the initialization of the directory loader is safe. If safety check passed, in the main program the robot starts to execute the sequence of the directory loader.
6. The robot uploads the programs from the D:\Directoryloader folder. The main program (cell.src) starts to wait for communication again.
7. After the upload of the files, SCADA reconnects to the robot.
8. The operator prepares an object and press the READY button. That triggers an interrupt which sends the “Table of the Operator 1 is Ready” message from the robot to SCADA.
9. SCADA sends the “Rotate the chamber 1” message to the robot. The state machine of the chamber 1 performs the rotation process. The robot informs SCADA that the rotation is finished.
10. SCADA tells the robot to go to a specific position on rails. The submit of rails control performs the task and informs SCADA about it.
11. SCADA tells the robot to perform a specific work program (one of the files which was uploaded with the directory loader in the sixth step).
12. The robot starts to perform the motions to the first point and here the issue occurs in the motion.
I am adding the snippet of the code function where the error occurred most often in the movement of the robot:
GLOBAL DEF MoveToFirstPointByAxes(StartPosition:IN, ToolID:IN, AxesTwisted:IN)
DECL FRAME StartPosition
DECL E6AXIS MoveAxisValue, tempAxisValue
DECL BOOL AxesTwisted
DECL INT ToolID, Status
; PHISICALY CHANGE TOOL
ChooseTool(ToolID)
; IF NEEDED REROLL A4 AND A6 AXIS
IF AxesTwisted THEN
RerollAxesFor3DObject()
ENDIF
; MOVE TO FIRST POINT
tempAxisValue = $AXIS_ACT
Status = 0
MoveAxisValue = INVERSE(StartPosition, $AXIS_ACT,Status)
IF Status <> 0 THEN
HALT
ENDIF
;GoToFirstPoint(MoveAxisValue, 100)
tempAxisValue.A5 = 0
PTP tempAxisValue
tempAxisValue.A4 = MoveAxisValue.A4
tempAxisValue.A6 = MoveAxisValue.A6
PTP tempAxisValue
tempAxisValue.A5 = MoveAxisValue.A5
WAIT SEC 0
PTP tempAxisValue ; The error occurs in this line
WAIT SEC 0
PTP StartPosition
END
Display More
At this point, we have already tested these parts:
Hello,
I want to ask you if it is possible to improve the performance speed of the Directory Loader module.
Right now, I am using the directory loader (v3) to upload work movements to the robot and it takes about 30-60 seconds to upload 6 files. On the other robot which contains less code (it's a different project) the upload time is 7-10 seconds.
We are planning a batch upload (to upload several files at once), but after some experiments we have noticed that each new file extends the time of upload. Each file adds at least a few seconds to the upload process. I control a lot of parallel processes with the robot, so, the pauses like 1 minute are too long for me.
Do you have any suggestions what could increase the upload speed of the directory loader module?
Maybe it is better to upload fewer but bigger files? At the moment all movement programs are saved as separate files, but I can change that and combine them into one file: minimizing the number of files but having a large file.
I have already noticed that the fewer program files are inside the robot, the faster the process is. I deleted everything that is not necessary (test of certain functions, old programs, etc.) for the performance of the robot cell.
Or maybe I should change something in the configuration to increase the performance speed?
Best regards,
Aivaras Narbutas
Hello everybody,
What is the best practice for reusing the same parts of a code in KUKA robots? Let's call them "libraries".
Like many of you, I am trying to reuse the same parts of a code in all my projects, but the problem is that from time to time I update my "libraries" and then I have more than one version of the same library (in other programming languages it is called dll hell).
In my experience, some issues in a project are very easily solved just by updating a "library", because the same error occurs in all the projects where I used the same code.
I can try to document what "libraries" are used in projects, but I do not think that it is very efficient.
I am also programming in C#, so I am spoiled with features like nugets
For the version control I am using git. Git has a feature called submodules and for "libraries" it worked just fine until Work Visual deleted all my project files in the repository......
As I understand, Work Visual does not like unfamiliar file extensions.
Using a submodule in a git project enables me to see if a "library" has any updates. With a few button clicks I can have all of them in my main project.
Any advice on this topic?
For now we are using KUKA robots. But my company wants to start testing some solutions with ABB robots.
For now I just want to know if it is even possible because I do not think that it is an easy task, it requires a further investigation.
I am happy that my manager finally sees how necessary is to properly test and refactor a code 😃 It is only strange to me how much manually work is needed in specialisation, which is responsible for reducing repetitive work.
If we talk about motions, I have to admit it, I do not even trust the motions generated by simulators. But I do not think that it is a bad decision to use tests for something like the stability of cell work. For example, the robot is working as a state machine. And a basic test for that is to use wait sec * to imitate "work". The robot does not have to move at this state. What is expected from a robot is to go from one state to another.
Another example could be a conveyor control. It does not require the motions of a robot, but it is easier to test it with a programming code than in the real life.
In our case, we perform a lot of calculations inside the KUKA robot, using the functions INVERSE and FORWARD. Basically, for some cells we use a robot as a real time simulator. For safety reasons and in order not to repeat the same calculations, I test the work programmes at T1 mode for every single operation. We use the results of calculations for the generation of a final programme code which is also tested in T1 and only after that I use EXT mode for a manufacturing process.
For some robotics solutions we are starting to use ROS, but it will not cover all our solutions.
Hello.
I think all of you agree with me that compared to other applications (web pages, desktop applications, etc.) errors in a robot code are crucial.
So, I have a question: how do you test your code? I am not talking about the simulated paths for a robot. Please, don't say that a manual testing is the only way Because it is time consuming and for me who works in the R&D department code changes rapidly.
For the other programmable applications you can build pipelines and test your code changes in the cloud (CI/CD).
Is it possible to do the same thing for industrial robots?
As I understand, the problem is to build a robot code in the cloud because of the unknown compiler and specific functions.
But maybe one of you used a real robot for that?
I tried to write tests for my functions in the edge cases, but on a real robot it is still time consuming.
So, in summary, my question is: what is the best way to test the code changes for industrial robots?
Best regards,
Aivaras