Advertisement
programlogicpro

Practica2_4_PaletizadoRobotstudio

Jan 17th, 2023
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SCL 5.69 KB | Software | 0 0
  1. MODULE Module1
  2.     CONST robtarget pHome:=[[336.99,-306.03,467.74],[0.00681109,-0.361444,-0.932365,-0.00264041],[-1,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
  3.     CONST robtarget p0:=[[455.21,1.06,355.07],[0.00730495,-1.70149E-5,-0.999973,-1.24297E-7],[-1,-1,0,1],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
  4.     CONST robtarget p10:=[[40.16,-416.59,333.57],[0.0133112,-0.684158,-0.729201,-0.00407804],[-1,0,-1,1],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
  5.    
  6.     VAR robtarget p100;
  7.     VAR intnum sel := 0;
  8.     VAR BOOL flag := FALSE;
  9.    
  10.     !***********************************************************
  11.     !
  12.     ! Módulo:  Module1
  13.     !
  14.     ! Descripción:
  15.     !   <Introduzca la descripción aquí>
  16.     !
  17.     ! Autor: perez
  18.     !
  19.     ! Versión: 1.0
  20.     !
  21.     !***********************************************************
  22.    
  23.    
  24.     !***********************************************************
  25.     !
  26.     ! Procedimiento Main
  27.     !
  28.     !   Este es el punto de entrada de su programa
  29.     !
  30.     !***********************************************************
  31.     PROC main()
  32.    
  33.         !Cancelamos la interrupción para poder realizar un proceso continuo
  34.         IDelete sel;
  35.         !Conectamos la rutina trap con el selector
  36.         CONNECT sel WITH rutina_selector;
  37.         ISignalDI SEL_FUNC, 0, sel;
  38.         ISleep sel;
  39.         !El procés comença EN posició inicial
  40.         MoveJ pHome, v1000, fine, Pinça;
  41.    
  42.        
  43.         IF SEL_FUNC = 1 THEN
  44.            
  45.             StartMove;
  46.             Principal;
  47.            
  48.         ELSEIF SEL_FUNC = 0 THEN
  49.            
  50.             intermittence;
  51.            
  52.         ELSE
  53.            
  54.         ENDIF
  55.                  
  56.        
  57.     ENDPROC
  58.    
  59.     PROC Principal()
  60.              
  61.             ! El robot espera EN home hasta que reciba señal de palet vacío
  62.              MoveJ pHome, v1000, fine, Pinça;
  63.              IWatch sel;
  64.              WHILE REARME = 0 DO
  65.                  
  66.                  Reset RBT_ENFUNC;
  67.                  intermittence;
  68.                  
  69.                  IF REARME = 1 THEN
  70.                      
  71.                      GOTO inici_sequencia;
  72.                      
  73.                  ENDIF
  74.                  
  75.              ENDWHILE
  76.              
  77.              inici_sequencia:
  78.              Reset RBT_ENESPERA;
  79.              SET RBT_ENFUNC;
  80.                
  81.              ! Comienza la secuencia            
  82.                 P100 := P10;
  83.                 flag := FALSE;
  84.                
  85.                 FOR i FROM 0 TO 1 DO   ! Bucle para hacer la paletización EN dos niveles
  86.                        
  87.                     FOR j FROM 1 TO 2 DO  !Bucle para hacer dos partes de un cuadrado
  88.                        
  89.                         FOR x FROM 1 TO 2 DO !Bucle para hacer dos cuadrados dentro de un cuadrado
  90.                        
  91.                         Reset OPEN_GRIPP;
  92.                         MoveJ pHome, v1000, z150, Pinça;
  93.                         WaitDI OK_POS, 1;
  94.                        
  95.                         !El robot se dirige a cojer la pieza EN la posición p0
  96.                         MoveJ p0, v1000, fine, Pinça;
  97.                         SET OPEN_GRIPP;
  98.                         MoveL Offs(p0,0,0,-50), v1000, fine, Pinça;
  99.                         Reset OPEN_GRIPP;
  100.                         SET CLOSE_GRIPP;
  101.                        
  102.                         !El robot se dirige a dejar la pieza EN la posición de paletizado, pasando por pHome
  103.                         MoveJ pHome, v1000, z150, Pinça;
  104.                         MoveJ p100, v1000, fine, Pinça;
  105.                         MoveL Offs(p100,0,0,-50), v1000, fine, Pinça;
  106.                         Reset CLOSE_GRIPP;
  107.                         SET OPEN_GRIPP;
  108.                         MoveL Offs(p100,0,0,0), v1000, fine, Pinça;      
  109.                      
  110.                         !Modifiquem la posició p100 per la próxima iteració
  111.                         p100 := Offs (p100, -70, 0, 0);                      
  112.                         ENDFOR
  113.                    
  114.                    
  115.                     !Cambiamos valor de p100 para hacer la otra parte del cuadrado
  116.                    
  117.                     IF flag = FALSE THEN
  118.                        
  119.                         p100 := p10;
  120.                         p100 := Offs(p100, 0, -70, 0);
  121.                        
  122.                     ELSEIF flag = TRUE THEN
  123.                         P100 := P10;
  124.                         p100 := Offs(p100, 0, -70, 60);
  125.                        
  126.                     ELSE
  127.                        
  128.                     ENDIF
  129.                                    
  130.                    ENDFOR
  131.                                    
  132.                    
  133.                    !Cambiamos valor de p100 para hacer la planta superior del paletizado
  134.                     flag := TRUE;
  135.                     p100 := p10;
  136.                     p100 := Offs(p100, 0, 0, 60) ;
  137.                    
  138.                 ENDFOR
  139.                
  140.                 P100 := P10;
  141.                 SET PALET_PLE;
  142.                
  143.                
  144.     ENDPROC
  145.    
  146.     PROC intermittence()
  147.        
  148.        Reset RBT_ENFUNC;
  149.        PulseDO\PLength:=1, RBT_ENESPERA  ;
  150.        WaitTime 1;
  151.        
  152.     ENDPROC
  153.    
  154.     TRAP rutina_selector
  155.            
  156.            StopMove;
  157.            Reset RBT_ENFUNC;
  158.            SET RBT_ENESPERA;
  159.            
  160.            WHILE SEL_FUNC = 0 DO
  161.                intermittence;
  162.                IF SEL_FUNC = 1 THEN
  163.                    GOTO final_trap;
  164.                    
  165.                ENDIF
  166.                
  167.            ENDWHILE
  168.        
  169.            final_trap:
  170.            SET RBT_ENFUNC;
  171.            StartMove;                
  172.        
  173.     ENDTRAP
  174.    
  175. ENDMODULE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement