I’ll be the first to admit I don’t have the required programming training to do this, which is why I’m seeking some help (still new to the company with having only the initial ABB programming class completed).
In short - we have a robot that has a gun attached (gas torch) and coats a part that is on an external axis, which rotates (spindle).
We got a torque collision error on the spindle, which faulted out the robot but kept the torch and coating material on, unbeknownst to the operator for an extended amount of time. This obviously ruined the part.
Speaking with ABB tech support - they offered some guidance on using an error handler within the routine and sent me some manuals. While this may prove helpful, I’m not really sure how to word it or go about setting things up, and where exactly to put it (assuming in the PROC Coat_Roll, listed below).
Would greatly appreciate any guidance with that. But can’t I also just use an “IF” statement to say that if the spindle stops, shut off all inputs/outputs, similar to an E-stop situation?
Any information would be GREATLY appreciated!
Main routine and sub-routine listed:
PROC main()
SetDO TPstop, high;
Running:=FALSE;
DoneCoating:=FALSE;
TPErase;
TPWrite “Walk In Mode Program Start”;
ActUnit Spindle;
Init_IO;
Home_Walk_in;
Get_Data;
regPassCount:=NUM_PASSES;
TPWrite “Robot waiting Cycle Start”;
TPWrite “Robot Cycling”;
Coat_Roll;
TPWrite “Done”;
Init_IO;
TPErase;
TPWrite “Walk In Mode Program Stop”;
Home_Walk_in;
DeactUnit Spindle;
Stop;
ENDPROC
PROC Coat_Roll()
Calculations;
Start_Roll;
Powder_on;
SetDO doTorchCoolCtrl, high;
MoveL pStart, vTrav_Rapid, fine, tool2;
IF regTravSpeed=0 THEN
WaitTime NUM_PASSES;
GOTO D;
ENDIF
WHILE regPassCount>0 DO
IF regPassCount>0 THEN
LR:=1;
Running := TRUE;
IF PassTime > 500 THEN
FOR L FROM 1 TO n - 1 DO
L2:=L;
MoveL pMid{L}, v5\V:=TRAV_MMPS, z1, tool2;
ENDFOR
ENDIF
L2:=0;
MoveL pStop, v5\V:=TRAV_MMPS, z1, tool2;
Running := FALSE;
Pass_count;
ENDIF
IF regPassCount>0 THEN
LR:=0;
Running := TRUE;
IF PassTime > 500 THEN
FOR L FROM n-1 TO 1 STEP -1 DO
L2:=L;
MoveL pMid{L}, v5\V:=TRAV_MMPS, z1, tool2;
ENDFOR
ENDIF
L2:=0;
MoveL pStart, v5\V:=TRAV_MMPS, z1, tool2;
Running := FALSE;
Pass_count;
ENDIF
ENDWHILE