RobotStudio event

Smartgripper Vaccuum implementation in SearchL instruction

Options
Can someone please help me with an issue I am facing with the vacuum function of my Smartgripper used in a project involving an Abb YuMi IRB14000 robot?

I am unsure of how to work with the SignalGI variable, which seems to be a requirement for my Smartgripper. I have tried using the SearchL or the Stop commands, but they do not seem to work with SignalGI.

The following instruction is getting error, because the SearchL command requires a 0/1 signal from a SignalDi input, but the "hand_ActualPressure2_L" is the SignalGi variable which I have because of the Smartgripper by default, and is not compatible with the SearchL command. 

            SearchL \Stop, hand_ActualPressure2_L, p10, p20, v50, GripperL;

So my currently working solution involves moving the robot 1 mm in a While loop 
To pick up an object, I am using SignalGI as a condition in the loop, but I am aware that this is not the most optimal approach.

            MoveL p10, v100,fine,GripperL;            g_VacuumOn2;            WHILE hand_ActualPressure2_L > 88 DO                MoveL Offs(endpos, 0,0, -1 * Z_position), v30, z0, GripperL;                TPWrite ( ValToStr(hand_ActualPressure2_L) );                WaitTime 0.1;                Z_position := Z_position + 1;            ENDWHILE

 Any advice or guidance on this matter would be greatly appreciated. 
Thank you for your help!

Answers

  • DenisFR
    DenisFR ✭✭✭
    Options
    Hello,
    I think you can trig a routine with ISignalGI connected to hand_ActualPressure2_L.
    In this routine you can check its value then set a PERS bool that you use into SearchL.

  • mandolas
    Options
    See if that fixes it...

    PERS bool conditionOk:=FALSE;
    VAR intnum sig1int;


    PROC main()
         CONNECT sig1int WITH iroutine1;
         ISignalGI gi1, sig1int;

         WHILE TRUE DO
             IF conditionOk conditionOk:=FALSE;
             SearchObj;
         ENDWHILE
    ENDPROC

    TRAP iroutine1
         IF hand_ActualPressure2_L <= 88 ConditionOk:=TRUE;
    ENDTRAP

    PROC BuscaObj()
         SearchL \Stop, conditionOk=TRUE, p10, p20, v50, GripperL;
         Stop;
    ENDPROC

    Test and mark UP if it solved.