Solution for Reduced speed on ABB IRB1200 with IRC5 Compact controller and SafeMove
Our robot cell would have:
·
ABB
robot IRB1200 5kg 0.9 m,
·
IRC5
Compact controller,
·
Leuze
Lidar RSL430 with 2 active protection fields (total stop zone and reduced speed
zone),
·
Sick
safety PLC CPU0 with CIP Safety module and 2 safety IO modules,
·
SafeMove2
Pro.
With Leuze lidar we would have supervision of two zones, larger one for detecting persons and reducing robot speed. Smaller one for robot total stop if person is inside the safety zone.
In RobotStudio we tested an approach which is working but from safety perspective we do not gain anything as two signals are needed and one must be delayed. The delay is a problematic as person can enter the reduced speed safety zone and the robot is not at appropriate speed jet.
Our current solution.
For test
purposes we have two clickable inputs (Figure 1), to simulate a delay:
-
CIP_ReducedSpeed,
-
CIP_ReducedSpeed_Delayed.
Figure 1: Two inputs
The
sequence of clicking is always the same:
1. click on CIP_ReducedSpeed
2. click on CIP_ReducedSpeed_Delayed
To reduced overall robot speed, we are using interrupt approach with SpeedRefresh function. RAPID code is attached below, but main part is copied from library.e.ABB.com (6904 ROP White Paper SafeMove.pdf).
MODULE Module1
CONST robtarget Target_50:=[[400.000015391,-150.000004967,600.000018581],[0.00000005,0,1,-0.000000019],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget Target_10:=[[303.403900146,150,300],[0,0,1,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget Target_20:=[[304.492218018,-150,300],[0,0,1,0],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget Target_30:=[[597.118713379,-150,300],[0,0,1,0],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget Target_40:=[[591.680725098,150,300],[0,0,1,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!*********************************************************
!* Interrupt Variables *
!*********************************************************
!Interrupt for slow speed
VAR intnum irSpeedSlow;
!Interrupt for full programmed speed
VAR intnum irSpeedFast;
PROC Path_10()
MoveJ
Target_50,v500,fine,OrodjeTCP\WObj:=wobj0;
MoveJ
Target_10,v500,fine,OrodjeTCP\WObj:=wobj0;
MoveL
Target_20,v1000,fine,OrodjeTCP\WObj:=wobj0;
MoveL
Target_30,v1000,fine,OrodjeTCP\WObj:=wobj0;
MoveL
Target_40,v1000,fine,OrodjeTCP\WObj:=wobj0;
MoveJ
Target_50,v500,fine,OrodjeTCP\WObj:=wobj0;
ENDPROC
PROC main()
init;
Path_10;
ENDPROC
PROC init()
!Interupt init
IDelete irSpeedSlow;
CONNECT irSpeedSlow WITH tSlowSpeed;
ISignalDI
CIP_ReducedSpeed,low,irSpeedSlow;
IDelete irSpeedFast;
CONNECT irSpeedFast WITH tFastSpeed;
ISignalDI
CIP_ReducedSpeed,high,irSpeedFast;
! Set initial speed in regard to current state of the
input
IF TestDI (CIP_ReducedSpeed) THEN
SpeedRefresh 100;
ELSE
SpeedRefresh 15;
ENDIF
ENDPROC
!**********************************************************
!* Trap tSlowSpeed *
!* *
!* Interrupt changes speed of all movements to 15% *
!**********************************************************
TRAP tSlowSpeed
SpeedRefresh 15;
ENDTRAP
!**********************************************************
!* Trap tFastSpeed *
!* *
!* Interrupt changes speed to full override *
!**********************************************************
TRAP tFastSpeed
SpeedRefresh 100;
ENDTRAP
ENDMODULE
As we can see that signal CIP_ReducedSpeed is linked to the interrupts (high/low state). The highest speed of the robot is set to 1000 mm/s in RAPID program and it can be reduced This approach is based on RAPID code which by itself is not safe and for this reason we integrated also SafeMove Pro functionalities, function Tool Speed Supervision (global). The maximal speed is set to 250 mm/s.
If we link signal CIP_ReducedSpeed to the Tool Speed Supervision activation input signal, we have a problem as SafeMove stops the robot when speed goes from high to low as speed is not discrete as signal is. For this reason, we added CIP_ReducedSpeed_Delay signal. Both are combined in SafeMove (Safe IO Configuration – Pre Logic) with OR function to new signal named ActivationSignal, figure 2.
Figure 2: OR function
This new signal ActivationSignal is an activation input for Tool Speed Supervision function as shown in Figure 3. Figure 3: Tool Speed Supervision function setting (SafeMove Pro)
This approach is working, but delay that must be integrated (we did not manage to delay signal in SafeMove: Delay operator exists) is not making safety zone smaller as we would like.
Is there a different approach which would solve the reduced speed inside the robot controller or inside the SafeMove module?
Comments
-
There is a lot of good information here and I am very curious if you find a better way to do this? Because I have had the same issue in the past and I am curious if there is a better way. Please post back anything you find. Thank you!
�0
Categories
- All Categories
- 5.5K RobotStudio
- 395 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 310 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 785 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings