Hi everyone,
We're using a kr10 r1100-2, with KRC4 Compact, KSS 8.5.8 and RSI 4.0.9.
Our system works with auto_ext, where the main computer controls which krl programs runs each time.
One of the programs, allows to choose which rsi file to load and then enters the RSI_MOVECORR mode.
The rsi diagram contains a stop block which command to exit the RSI_MOVECORR mode. This stop block is triggered from a channel in the Ethernet block.
Usually, everything works perfectly fine. But once in a while (could be several hours), the following error appears:
Error KSS29002 - Object Stop_1 returns error RSIBad (Stop_1 is the stop object I was talking about).
It does happen at the same krl line every time, but as I said, it just happens sometimes with no appearing reason.
The code looks like the following:
Switch $SEN_PINT[4]
Case 0 ; relative cartesian
; Create RSI Context
GLOB_RSI_RET = RSI_CREATE(RSI_TOOL_CART_FILE_NAME[],GLOB_CONTID,TRUE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
; Start RSI execution
GLOB_RSI_RET = RSI_ON(#RELATIVE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
Case 1 ; relative joint
; Create RSI Context
GLOB_RSI_RET = RSI_CREATE(RSI_JOINT_FILE_NAME[],GLOB_CONTID,TRUE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
; Start RSI execution
GLOB_RSI_RET = RSI_ON(#RELATIVE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
Case 2 ; absolute cartesian
; Create RSI Context
GLOB_RSI_RET = RSI_CREATE(RSI_BASE_CART_FILE_NAME[],GLOB_CONTID,TRUE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
; Start RSI execution
GLOB_RSI_RET = RSI_ON(#ABSOLUTE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
Case 3 ; absolute joint
; Create RSI Context
GLOB_RSI_RET = RSI_CREATE(RSI_JOINT_FILE_NAME[],GLOB_CONTID,TRUE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
; Start RSI execution
GLOB_RSI_RET = RSI_ON(#ABSOLUTE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
Default
; Create RSI Context
GLOB_RSI_RET = RSI_CREATE(RSI_TOOL_CART_FILE_NAME[],GLOB_CONTID,TRUE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
; Start RSI execution
GLOB_RSI_RET = RSI_ON(#RELATIVE)
IF (GLOB_RSI_RET <> RSIOK) THEN
HALT
ENDIF
EndSwitch
TRIGGER WHEN DISTANCE=1 DELAY=0 DO $SEN_PINT[1] = 1
TRIGGER WHEN DISTANCE=1 DELAY=0 DO $SEN_PINT[2] = 1
LIN_REL {X 0}
RSI_MOVECORR()
Display More
The error is pointing on the LIN_REL {X 0} line.
The reason I'm using
TRIGGER WHEN DISTANCE=1 DELAY=0 DO $SEN_PINT[1] = 1
TRIGGER WHEN DISTANCE=1 DELAY=0 DO $SEN_PINT[2] = 1
LIN_REL {X 0}
and not just:
Is because the second one is not working well, and I found the first one to work well.
What does the RSIBad means? That the stop object expects a boolean value and gets a different value?
I can't understand why it only happens once in a while when working repetitively executing the exact same programs.
I would appreciate any help.
Thanks!