2023
PICK AND PLACE EN KRL
PAU ROMERO / ALEX OLIVER
FLORIDA UNIVERSITARIA
2-2-2023
1
ÍNDICE
1 PROGRAMA ROBOT 1 EXPLICACIÓN.........................................2
1.1 PROGRAMA ROBOT 1..........................................................4
2 PROGRAMA ROBOT 2 EXPLICACIÓN.........................................9
2.1 PROGRAMA ROBOT 2........................................................10
3 CELL ROBOT 1.........................................................................14
4 CELL ROBOT 2.........................................................................14
5 CONFIG.DAT............................................................................15
2
1 PROGRAMA ROBOT 1 EXPLICACIÓN
En este programa hemos hecho que el KUKA espere a que se pulse el pulsador de
marcha, después espera a la señal del sensor que define si hay caja o no, entonces empieza a
ejecutar el subprograma de la cinta 1 que si el sensor1 no detecta cubo de Rubik esta se pone
en marcha hasta que detecte pieza. Cuando detecta pieza el KUKA llama al subprograma de
cogida de cubo que es igual para todas las piezas, este coge la pieza y se espera en la posición
de reposo a que entre el subprograma de dejar pieza. Este si que es distinto para cada pieza,
porque hemos decidido touchear todos los puntos haciendo un subprograma para cada pieza,
así si el Robot a mitad de el llenado de la caja se parara por algo para ponerlo en marcha
puedes hacer que empiece por el subprograma de la pieza en la que se ha quedado de la otra
forma si lo haces con relativos no puedes hacer que empiece a mitad del proceso tiene que
volver a empezar. En el ultimo subprograma que es el de la pieza 9 le hemos puesto que envíe
una señal de confirmación, para que se encienda la cinta2 que lleva la caja a la posición de
paletizado.
Todo esto va dentro de un Loop y para salir de este hay una condición que es que se
active el selector de paro, cuando lo actives terminará el Loop en el que esté y parará.
3
4
1.1 PROGRAMA ROBOT 1
DEF PIKANDPLACE ( )
DECL SENSOR_1() ; SENSOR CINTA 1 IN(1)
DECL SENSOR_2() ; SENSOR CINTA 2 IN(2)
DECL SENSOR_3() ; SENSOR CINTA 3 IN(3) FINAL DE RECORRIDO CAJA
DECL CAJA_LLENA() ; VARIABLE DE ORDEN CAJA LLENA
INI
PTP HOME Vel= 100 % DEFAULT
WAIT FOR ( IN 4 'PULSADORMARCHA' )
WAIT FOR $MOVE_ENABLE = TRUE
LOOP
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
MARCHA_CINTA2()
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
COGIDA CUBO()
DEJAR CUBO1() ; CUBO POSICIÓN 1
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO2() ; CUBO POSICIÓN 2
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO3() ; CUBO POSICIÓN 3
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO4() ; CUBO POSICIÓN 4
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO5() ; CUBO POSICIÓN 5
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO6() ; CUBO POSICIÓN 6
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO7() ; CUBO POSICIÓN 7
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO8() ; CUBO POSICIÓN 8
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
5
DEJAR CUBO9() ; CUBO POSICIÓN 9
MARCHA_CINTA2()
IF ( IN 5 'SELECTOR SALIR LO0P' ) THEN
EXIT
ENDIF
ENDLOOP
END
DEF MARCHA_CINTA1() ;CINTA CUBOS DE RUBIK
IF $IN[1] = TRUE THEN
OUT[1]= FALSE ELSE
OUT[1]= TRUE
ENDIF
END
DEF MARCHA_CINTA2() ;CINTA CAJAS
IF $IN[2] = FALSE THEN
OUT[2]'' = TRUE ELSE
OUT[2]'' = FALSE
ENDIF
IF $IN[2] = TRUE AND CAJA_LLENA = TRUE AND $IN[3] = FALSE THEN
OUT[2]'' = TRUE ELSE
OUT[2]'' = FALSE
ENDIF
END
DEF COGIDA CUBO() ; COGER UN CUBO DE RUBIK
WAIT FOR ( IN 1 'SENSOR1 CINTA1' )
PTP PUNTO1 Vel=100 % PDAT1 Tool[1] Base[1]
LIN PUNTO2 Vel=2 m/s CPDAT1 Tool[1] Base[1]
WAIT Time= 1.0 sec
OUT[3]'' = TRUE ; COGER CUBO VENTOSA
WAIT Time= 1.0 sec
SLIN PUNTO3 Vel=2 m/s CPDAT4 Tool[1] Base[1]
END
DEF DEJAR CUBO1() ; DEJAR CUBO DE RUBIK POSICIÓN1
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO5 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO2() ; DEJAR CUBO DE RUBIK POSICIÓN2
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO9 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
6
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO3() ; DEJAR CUBO DE RUBIK POSICIÓN3
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO10 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO4() ; DEJAR CUBO DE RUBIK POSICIÓN4
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO11 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO5() ; DEJAR CUBO DE RUBIK POSICIÓN5
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO12 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
7
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO6() ; DEJAR CUBO DE RUBIK POSICIÓN6
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO13 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO7() ; DEJAR CUBO DE RUBIK POSICIÓN7
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO14 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO8() ; DEJAR CUBO DE RUBIK POSICIÓN8
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO15 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
8
END
DEF DEJAR CUBO9() ; DEJAR CUBO DE RUBIK POSICIÓN9
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO16 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
OUT[5]'' = TRUE ; ORDEN CAJA LLENA
END
9
2 PROGRAMA ROBOT 2 EXPLICACIÓN
En este programa hemos hecho que primero revise el sensor de caja lista para paletizar
para que si no hay caja de el OK DEL ROBOT 2 al robot uno para que empiece a hacer el
ciclo. El robot 2 espere a que el sensor caja en posición de paletizado del subprograma de
coger caja este en true para que el Robot 2 empiece a posicionarse para coger la caja
luego baja coge la caja, sube y se queda en la posición de reposo hasta que entra en el
subprograma de dejar la caja. Esta gira y deja la caja en la posición 1, como en el Robot 1
hemos toucheado todas las posiciones de las 5 cajas para que si se parase se pueda iniciar
desde cualquier punto del programa. Luego el robot sube vuelve a girar y se queda en la
posición de espera para la siguiente caja.
Todo esto va dentro de un Loop y para salir de este hay una condición que es que se
active el selector de paro, cuando lo actives terminará el Loop en el que esté y parará.
10
2.1 PROGRAMA ROBOT 2
DEF PIKANDPLACEROBOT2 ( )
INI
PTP HOME Vel= 100 % DEFAULT
WAIT FOR $MOVE_ENABLE = TRUE
LOOP
OK DEL ROBOT 2()
COGER CAJA ()
DEJAR CAJA 1()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 2()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 3()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 4()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 5()
OK DEL ROBOT 2 ()
IF ( IN 1 'SELECTOR SALIR DEL LO0P' ) = FALSE THEN
EXIT
ENDIF
ENDLOOP
PTP HOME Vel= 100 % DEFAULT
END
DEF COGER CAJA()
WAIT FOR ( IN 3 'SENSOR FINAL DE CINTA 2' )
PTP POSICIÓN ENCIMA DE CAJA Vel=100 % PDAT1 Tool[2] Base[2]
LIN BAJAR PARA COGER CAJA Vel=2 m/s CPDAT1 Tool[2] Base[2]
WAIT Time= 1.0 sec
CERRAR GARRA()
WAIT Time= 1.0 sec
LIN SUBIR CAJA Vel=2 m/s CPDAT2 Tool[2] Base[2]
;SUBIR CAJA A POSICIÓN DE GIRO
END
DEF DEJAR CAJA 1()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]
;GIRAR A LA POSICIÓN DE DEJAR CAJA
11
LIN BAJAR PARA DEJAR CAJA 1 Vel=2 m/s CPDAT3 Tool[2] Base[2]
WAIT Time= 1.0 sec
ABRIR GARRA()
WAIT Time= 1.0 sec
LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]
;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]
;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 2()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]
;GIRAR A LA POSICIÓN DE DEJAR CAJA
LIN BAJAR PARA DEJAR CAJA 2 Vel=2 m/s CPDAT3 Tool[2] Base[2]
WAIT Time= 1.0 sec
ABRIR GARRA()
WAIT Time= 1.0 sec
LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]
;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]
;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 3()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]
;GIRAR A LA POSICIÓN DE DEJAR CAJA
LIN BAJAR PARA DEJAR CAJA 3 Vel=2 m/s CPDAT3 Tool[2] Base[2]
WAIT Time= 1.0 sec
ABRIR GARRA()
12
WAIT Time= 1.0 sec
LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]
;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]
;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 4()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]
;GIRAR A LA POSICIÓN DE DEJAR CAJA
LIN BAJAR PARA DEJAR CAJA 4 Vel=2 m/s CPDAT3 Tool[2] Base[2]
WAIT Time= 1.0 sec
ABRIR GARRA()
WAIT Time= 1.0 sec
LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]
;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]
;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 5()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2] extTCP
;GIRAR A LA POSICIÓN DE DEJAR CAJA
LIN BAJAR PARA DEJAR CAJA 5 Vel=2 m/s CPDAT3 Tool[2] Base[2]
WAIT Time= 1.0 sec
ABRIR GARRA()
WAIT Time= 1.0 sec
LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]
;SUBIR CAJA A POSICIÓN DE GIRO
13
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]
PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]
PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]
;VOLVER POSICIÓN INICIAL
END
DEF OK DEL ROBOT 2()
IF ( IN 3 'SENSOR FINAL DE CINTA 2' ) = FALSE THEN
(OUT 5 'OK DEL ROBOT 2' ) = TRUE ELSE
(OUT 5 'OK DEL ROBOT 2' ) = FALSE
ENDIF
END
DEF ABRIR GARRA()
OUT[13]'' = FALSE ; CERRAR GARRA
OUT [14]'' = FALSE ; ABRIR GARRA
OUT [14]'' = TRUE ; ABRIR GARRA
END
DEF CERRAR GARRA()
OUT[13]'' = FALSE ; CERRAR GARRA
OUT [14]'' = FALSE ; ABRIR GARRA
OUT [13]'' = TRUE ; ABRIR GARRA
END
14
3 CELL ROBOT 1
DEF CELL ( )
EXT PIKANDPLACEROBOT1 ( )
INIT
BASISTECH INI
CHECK HOME
PTP HOME Vel= 100 % DEFAULT
AUTOEXT INI
LOOP
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
PIKANDPLACEROBOT1 ( )
CASE 2
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE2 ( ) ; Call User-Program
CASE 3
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE3 ( ) ; Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
END
4 CELL ROBOT 2
DEF CELL ( )
EXT PIKANDPLACEROBOT 2 ( )
INIT
BASISTECH INI
CHECK HOME
PTP HOME Vel= 100 % DEFAULT
AUTOEXT INI
LOOP
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
PIKANDPLACEROBOT 2 ( )
CASE 2
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE2 ( ) ; Call User-Program
CASE 3
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE3 ( ) ; Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
END
15
5 CONFIG.DAT
En este caso como hemos direccionado todo a salidas y entradas físicas no tenemos
variables.
DEFDAT $CONFIG
BASISTECH GLOBALS
AUTOEXT GLOBALS
USER GLOBALS
;*******************************************
;Make your modifications -ONLY- here
;*******************************************
;==================================
; Userdefined Types
;==================================
;==================================
; Userdefined Externals
;==================================
;==================================
; Userdefined Variables
;==================================
ENDDAT