For the last few weeks, the smartPad controller displays the following errors:
- Emergency Stop inoperative
- KSS12041 Ackn.: Position comparison robot controller <-> safety controller not possible.
- KSS15085 Ackn.: Controller in failsafe state.
- KSS01205 Ackn.: Interpolation cycle timeout monitoring LRS_HP
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).
- EthernetKRL v3.1.3
- DirectoryLoader v3.0.4
Please see a little bit of information about the robot code below:
- In this cell I am using 8 submits. The responsibilities of the submits:
- sps.sub is responsible for a handshake between inputs and outputs of the Auto External mode.
- Submit for communication between the robot and SCADA.
- Submit to control indication lights – some lights must blink, that’s the main reason why I use an independent submit.
- Submit to control all interrupts. To prevent some errors, I declared all the interrupts in one submit. In this submit I use the CWRITE function for the RUN, STOP and CANCEL commands.
- Submit for rail control (11 meters long rail with 3 positions). By controlling several outputs, the robot tells PLC where to position the robot. In this submit I use a state machine.
- Submit for chamber/camera control. The chamber consists of two tables and by controlling a few outputs, the robot rotates the chamber (it switches the table 1 with the table 2 and vice versa). In this submit I use a state machine.
- Second submit for chamber (2) control. Everything is the same as in f.
- Third submit for chamber (3) control. Everything is the same as in f.
- At the beginning, all state machines are at an Init state. When the submit for communication receives a message from SCADA, it will change a corresponding state of the state machine to perform some kind of work. After successful work, that state machine goes back to the Init state. So, basically, SCADA is controlling the robot cell with the help of the communication submit.
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
At this point, we have already tested these parts:
- The usage of the CWRITE function for the RUN, STOP and CANCEL commands. At first, we suspected that they were called from different submits with an overlap, but after the code check, the support did not find anything wrong with the KRL code.
- I tried to replace a pendant from another robot because my colleagues suspected that something was wrong with the pendant itself. But the same issue occurred again.
- I tried to reduce the override speed of the robot program (up to 30%). At first, it seemed to be working but after 6 times of relaunching the same program, the same issue of the program execution occurred again. Since the error happens at the same code line (concerning the movement), I added "WAIT SEC 0" hoping it will stop the advance pointer and issue will be resolved, but it did not help.
- As the support suggested, I tried to set the value $sr_workspace_red=false.
- I turned off the workspaces (except 2 of them).
- I turned off the workspaces (except 2 of them), commented all the user code in sps.sub and cancelled all the extra submits (so, basically, I left running Cell.src + sps.sub).
- As the support suggested, I updated KSS (from 8.6.9 to 8.6.11) but it did not help.
- After the KSS update, I turned off the workspaces again (except 2 of them), set $sr_workspace_red=false, commented all the user code in sps.sub and cancelled all the extra submits.
- After that, the support suggested to update the KRCConfig.xml file. But it did not help either.