IO triggering (TriggL) help

Hello all,

I’m trying to trigger a digital output by using TriggIO and TriggL. For some reason robot (ABB IRB 6400 S4C) got a fatal error during the execution.
Error log reads: “INTERNAL rltrig.c 4094 Not possible to read stoppointtime persistent value in SDB”

Motion program worked before modifications for triggering, i.e. trajectory is correct. Robot has loaded the program without errors - I assume that it can handle Trigg commands. Hence I assume that there is something wrong with triggering commands.

Program segement:

VAR triggdata LDTR;

FOR i FROM 1 TO regPasses DO
IF i/2=Trunc(i/2) THEN
pts:=Offs(pts,0,phaseShift,0);
pte:=Offs(pte,0,phaseShift,0);
regStep:=-regIndex;
ELSE
pts:=pRightBot;
pte:=pRightTop;
regStep:=regIndex;
ENDIF
FOR j FROM 1 TO regIndexes DO
IF regDirection=1 THEN
TriggIO LDTR,50DOp:=do1,1;
MoveL pts,speed1,z5,tool0;

TriggL pte,speed1,LDTR,z5,tool0; (execution stopped here)
ELSE
TriggIO LDTR,50DOp:=do1,0;
MoveL pte,speed1,z5,tool0;
TriggL pts,speed1,LDTR,z5,tool0;
ENDIF
regDirection:=-regDirection;
pts:=Offs(pts,0,regStep,0);
pte:=Offs(pte,0,regStep,0);
ENDFOR
ENDFOR
Distance between endpoints (pts to pte) is about 250 mm; speed1.v_tcp:=190.

Can anybody help with proper use of triggering commands?

Thanks,
Andrei

Hi Andrei.

Try defining two different triggdata variables, one for setting the signal and the other one to resetting.

VAR triggdata LDTROn
VAR triggdata LDTROff

TriggIO LDTROn,50DOp:=do1,1;
TriggIO LDTROff,50DOp:=do1,0;

This way, you don’t need to redefine continuosly the LDTR variable while moving. I expect that, since execution is parallel to the motion, the program is trying to redefine the trigger while a TriggL is using it, causing the problem.

Bye