RobotStudio event

Check Position after Stop

Good Morning,
I should like to check the Stop Position of the robot before to restart him in Auto ( After Emergency or if I switch in manual when the robot cycle running and someone move the robot in manual ). How can I do ?

Thanks

 

Comments

  • Moved to RobotWare forum.

    Henrik Berlin
    ABB
  • I'm also interested in this. Maybe this thread [1] can help you (and me :-D) but I haven't tried yet.

  • Good morning to Everybody, 
    I have tried this procedure inserted in the Main:

     PROC StopCiclo() 
      !------------------------------------------------------------- 
      !--- ROUTINE DI STOP CICLO TRAMITE EVENT -----
      !-------- Gestito con Event STOP Controller --------
      !-------------------------------------------------------------
      ! Memorizza Posizione in Giunti 
      ! Solo in ModalitA? AUTO 
      TEST OpMode() 
      CASE OP_Auto: 
       StopMove; 
       jStop := CJointT(); 
      ENDTEST 
      ! 
     ENDPROC 

    Recalling from "Control panel Configuration Controller Event Routine Stop & QStop" the aforesaid Routine, succeeds in memorizing the position of the robot in the moment in which he stops. 
    To check to the I Start or Reboot of the robot that the position has remained the same one to the moment in which is stopped, call from "Control panel Configuration Controller Event Routine Start & Restart" the following procedure:

     PROC RestartCiclo() 
      VAR jointtarget jActPos; 
      !------------------------------------------------------------- 
      !-- ROUTINE DI RESTART CICLO TRAMITE EVENT --
      !------ Gestito con Event RESTART Controller ------
      !-------------------------------------------------------------  
      ! 
      Evento := TRUE; 
      CheckActualPos; 
      ! 
      IF DI_PLC_Richiesta_Aborto_Ciclo = 1 THEN 
       ! 
       StopMove; 
       ClearPath; 
       StartMove; 
       ExitCycle; 
       ! 
      ELSE 
       StartMove; 
      ENDIF 
      ! 
     ENDPROC 
     
    where the routine "CheckActualPos" it is the following
     
     PROC CheckActualPos() 
      VAR jointtarget jActPos; 
      ! 
      IF DOutput(DO10_1) = 0 AND DOutput(DO10_2) = 0 THEN 
       ! 
       ! Solo in ModalitA? AUTO 
       TEST OpMode() 
       CASE OP_Auto: 
        ! Recupera posizione attuale in Giunti 
        jActPos:= CJointT(); 
        ! 
        TPWrite "entra"; 
        ! 
        IF (Abs(jActPos.robax.rax_1) - Abs(jStop.robax.rax_1)) > 0.2 THEN 
         GOTO ErroreAsse; 
        ENDIF 
        IF (Abs(jActPos.robax.rax_2) - Abs(jStop.robax.rax_2)) > 0.2 THEN 
         GOTO ErroreAsse; 
        ENDIF 
        IF (Abs(jActPos.robax.rax_3) - Abs(jStop.robax.rax_3)) > 0.2 THEN 
         GOTO ErroreAsse; 
        ENDIF 
        IF Abs(jActPos.robax.rax_4) - Abs(jStop.robax.rax_4) > 0.2 THEN 
         GOTO ErroreAsse; 
        ENDIF 
        IF Abs(jActPos.robax.rax_5) - Abs(jStop.robax.rax_5) > 0.2 THEN 
         GOTO ErroreAsse; 
        ENDIF 
        IF Abs(jActPos.robax.rax_6) - Abs(jStop.robax.rax_6) > 0.2 THEN 
         GOTO ErroreAsse; 
        ELSE 
         GOTO NoErrore; 
        ENDIF 
        ErroreAsse: 
        ! 
        Esito := GestioneErrori(6); 
        ExitCycle; 
        NoErrore: 
        ! 
       ENDTEST 
       ! 
      ENDIF 
      ! 
     ENDPROC 
     
    Verifying to move only also in manual after the Stop an axle more of 0.2, doesn't go to error!!! 
    Does someone know how to tell me where I am being wrong? 
    Thanks to Everybody.