Estructuras de Programación para Robots Industriales ABB RAPID

Enviado por Chuletator online y clasificado en Tecnología Industrial

Escrito el en español con un tamaño de 4,52 KB

1. Pick & Place con Inspección

Esta rutina gestiona la recogida de piezas y su clasificación mediante un sensor de calidad.

PROC main()
    ! 1. Inicio seguro
    MoveJ [POS_REPOSO], [VEL_AIRE], [PREC_AIRE];

    WHILE TRUE DO
        ! 2. Esperar a que llegue la pieza
        WaitDI [ENTRADA_SENSOR_PIEZA], 1; 

        ! 3. Bajar, coger pieza y subir
        MoveJ [POS_APROX_CINTA], [VEL_AIRE], [PREC_AIRE];
        MoveL [POS_CINTA], [VEL_TRABAJO], fine;
        Set [SALIDA_CERRAR_PINZA];
        WaitTime [SEGUNDOS_ESPERA];
        MoveL [POS_APROX_CINTA], [VEL_AIRE], [PREC_AIRE];

        ! 4. Decisión lógica del sensor de calidad
        IF ([ENTRADA_SENSOR_CALIDAD] = TRUE) THEN
            ! 4A. Rutina pieza VÁLIDA
            MoveJ [POS_APROX_CAJA_BUENA], [VEL_AIRE], [PREC_AIRE];
            MoveL [POS_CAJA_BUENA], [VEL_TRABAJO], fine;
            Reset [SALIDA_CERRAR_PINZA];
            WaitTime [SEGUNDOS_ESPERA];
            MoveL [POS_APROX_CAJA_BUENA], [VEL_AIRE], [PREC_AIRE];
        ELSE
            ! 4B. Rutina pieza DEFECTUOSA
            MoveJ [POS_APROX_CAJA_MALA], [VEL_AIRE], [PREC_AIRE];
            MoveL [POS_CAJA_MALA], [VEL_TRABAJO], fine;
            Reset [SALIDA_CERRAR_PINZA];
            WaitTime [SEGUNDOS_ESPERA];
            MoveL [POS_APROX_CAJA_MALA], [VEL_AIRE], [PREC_AIRE];
        ENDIF
    ENDWHILE
ENDPROC

2. Alimentación de Máquina (Interacción Robot-Máquina)

Secuencia para cargar y descargar piezas en una máquina externa.

PROC main()
    MoveJ [POS_REPOSO], [VEL_AIRE], [PREC_AIRE];
    
    WHILE TRUE DO
        ! 1. Esperar a que la máquina avise de que está ABIERTA/LIBRE
        WaitDI [ENTRADA_MAQUINA_ABIERTA], 1;
        
        ! 2. Meter la pieza en la máquina y salir de ahí rápido
        MoveJ [POS_APROX_MAQUINA], [VEL_AIRE], [PREC_AIRE];
        MoveL [POS_DENTRO_MAQUINA], [VEL_TRABAJO], fine;
        Reset [SALIDA_CERRAR_PINZA]; ! Soltamos pieza
        MoveL [POS_APROX_MAQUINA], [VEL_AIRE], [PREC_AIRE];
        
        ! 3. Dar la orden a la máquina para que empiece a trabajar
        Set [SALIDA_ARRANCAR_MAQUINA];
        
        ! 4. Esperar a que la máquina termine
        WaitDI [ENTRADA_MAQUINA_FIN], 1;
        
        ! 5. Entrar a recoger la pieza terminada
        MoveL [POS_DENTRO_MAQUINA], [VEL_TRABAJO], fine;
        Set [SALIDA_CERRAR_PINZA];
        MoveL [POS_APROX_MAQUINA], [VEL_AIRE], [PREC_AIRE];
    ENDWHILE
ENDPROC

3. Trayectoria Continua (Soldadura / Pintura / Pegamento)

Uso de puntos intermedios para trayectorias fluidas.

PROC main()
    MoveJ [POS_REPOSO], [VEL_AIRE], [PREC_AIRE];
    
    WHILE TRUE DO
        WaitDI [ENTRADA_PIEZA_POSICIONADA], 1;
        
        ! 1. Aproximación e inicio de la trayectoria
        MoveJ [POS_APROX_INICIO], [VEL_AIRE], [PREC_AIRE];
        MoveL [POS_INICIO_COORDENADA], [VEL_TRABAJO], fine;
        
        ! 2. Activar la herramienta
        Set [SALIDA_ENCENDER_HERRAMIENTA];
        
        ! 3. Puntos intermedios (USAR 'z', NO 'fine')
        MoveL [POS_INTERMEDIA_1], [VEL_TRABAJO], [PREC_AIRE];
        MoveL [POS_INTERMEDIA_2], [VEL_TRABAJO], [PREC_AIRE];
        
        ! 4. Fin de la trayectoria
        MoveL [POS_FIN_COORDENADA], [VEL_TRABAJO], fine;
        
        ! 5. Apagar herramienta y retirar
        Reset [SALIDA_ENCENDER_HERRAMIENTA];
        MoveL [POS_APROX_FIN], [VEL_AIRE], [PREC_AIRE];
    ENDWHILE
ENDPROC

4. Paletizado Básico (Matriz)

Automatización de procesos repetitivos mediante el uso de bucles FOR y la función Offs.

PROC main()
    VAR num i; ! Declarar variable contador
    MoveJ [POS_REPOSO], [VEL_AIRE], [PREC_AIRE];
    
    ! Bucle que se repetirá X veces
    FOR i FROM 1 TO [NUMERO_TOTAL_PIEZAS] DO
        ! 1. Ir a coger la pieza a la cinta
        WaitDI [ENTRADA_CINTA], 1;
        MoveJ [POS_APROX_CINTA], [VEL_AIRE], [PREC_AIRE];
        MoveL [POS_CINTA], [VEL_TRABAJO], fine;
        Set [SALIDA_CERRAR_PINZA];
        MoveL [POS_APROX_CINTA], [VEL_AIRE], [PREC_AIRE];
        
        ! 2. Dejar en la caja calculando la posición automáticamente
        MoveJ [POS_APROX_CAJA], [VEL_AIRE], [PREC_AIRE];
        
        ! ATENCIÓN AL TRUCO: Offs(pos_base, X, Y, Z)
        MoveL Offs([POS_CAJA_BASE], i * [DISTANCIA_ENTRE_PIEZAS], 0, 0), [VEL_TRABAJO], fine;
        
        Reset [SALIDA_CERRAR_PINZA];
        MoveL [POS_APROX_CAJA], [VEL_AIRE], [PREC_AIRE];
    ENDFOR
ENDPROC

Entradas relacionadas: