LENGUAJE_KAREL FANUC.pdf
-
Upload
giuseppe-varriale -
Category
Documents
-
view
247 -
download
0
Transcript of LENGUAJE_KAREL FANUC.pdf
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
1/27
Lenguaje KAREL
Introduccin
Lenguaje textual explcito(FANUC)
Caractersticas bsicas:
Basado en lenguaje: Ada / PascalEstructuracin: EstructuradoTipo ejecucin: CompiladaSubprogramas: ParametrizadosModelo universo: NoProg. por guiado SMultitarea S
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
2/27
1.- ESTRUCTURA BASICA
PROGRAMnombre_programaDirectivas compiladorDeclaraciones (CONST, TYPE, VAR)Declaracin de rutinas
BEGIN
InstruccionesENDnombre_programa
Declaracin de rutinas
VARIABLES:
Tipos de variables
Simples (BOOLEAN, FILE, INTEGER, REAL, STRING)
Compuestas (ARRAY, QUEUE_TYPE,STRUCT)Variables definidas por usuario
EXPRESIONES
Numricas: Operadores aritmticos: +, -, *, /, DIV MODFunciones: SIN() COS() ...
Lgicas: Operadores relacionales =, Operadores lgicos: AND OR NOTFunciones: SIG()...
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
3/27
ESTRUCTURAS DE CONTROL:
KAREL es un lenguaje estructurado. Existen las estructuras
condicionales e iterativas tpicas de cualquier lenguajeestructurado de alto nivel.
Estructuras condicionales simple y mltiple:
IF THEN ........ ELSE ....... ENDIF
SELECT OF
CASEa:........CASEb:.........ELSE:.......
ENDSELECT
Estructuras iterativas: se dan las ms habituales en loslenguajes de programacin de propsito general:
REPEAT
......UNTIL FORcount = valor1
TO(DOWNTO)valor2 DO.
WHILE DO ENDFOR......ENDWHILE
Otras:
ABORT[], PAUSE, DELAYWAIT FOR , GO TO
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
4/27
SUBPROGRAMAS
En cuanto a subprogramas, KAREL permite procedimientos y
funciones parametrizados:
PROGRAM ejemploCONST, VAR........ROUTINE mul_mat_3x3(m1,m2:mat_3x3):
mat_3x3VAR
.
BEGIN.
END mul_mat_3x3BEGIN.
END ejemplo
La rutina puede ser declarada al comienzo del programa que la
invoca o con posterioridad (clusula FROM):
PROGRAM ejemploCONST, VAR........ROUTINE mul_mat_3x3(m1,m2:mat_3x3):mat_3x3 FROM ejemplo
BEGIN.
END ejemploROUTINE mul_mat_3x3 (m1, m2: mat_3x3):mat_3x3
VAR.
BEGIN.
END mul_mat_3x3
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
5/27
Tambin es posible implementar las rutinas en otros mdulos(paquetes, libreras):
PROGRAM ejemploCONST, VAR........ROUTINE mul_mat_3x3(m1,m2:mat_3x3):mat_3x3 FROM librera_matemtica
BEGIN.
END ejemplo
El retorno del control al programa (o rutina) que invoca tendrlugar en el ENDde la rutina, si bien puede realizarse de maneraexplcita mediante RETURN (con el argumento adecuado en elcaso de una funcin)
Las reglas de mbito y visibilidad de las variables son lashabituales en estos casos.
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
6/27
2.- LOCALIZACIONES
KAREL no soporta la definicin / mantenimiento de un modelo
de su entorno (modelo del universo):
No existe la referencia como tipo de dato.
Los cambios de ubicacin de los objetos del entorno noconllevan la actualizacin implcita de las localizacionesinvolucradas
Instrucciones de movimiento monooperando (el destinosiempre se especifica para la referencia TOOL).
2 formas de expresar localizaciones:
Como coordenadas articulares. (JOINTPOS).
Como Coordenadas de usuario: En notacin compacta (XYZWPR) En notacin matricial (POSITION)
Atributos:
Configuracin(CONFIG) incluida en coord. de usuario
Tipo terminacin(COMMON_ASSOC)
Otros relacionados:
Posicin(VECTOR)
Secuencia de localizaciones (PATH)
Operadores:
Similitud entre ubicaciones (>==< destino THEN MOVE TOdestino
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
7/27
Composicin de transformaciones (:)
Puerros = cocina:cacerola
Operaciones sobre vectores: (+, -, *, /, #, @)
funciones que devuelven coordenadas articulares
CURJPOS()
Permite obtener la posicin articular en grados(JOINTPOS).
CNV_JPOS_REL(jointpos, real_array, status)Permite obtener el vector de coordenadas articulares engrados a partir de la posicin articular(JOINTPOS).
CNV_REL_JPOS(real_array, jointpos, status)
Permite obtener la posicin articular (JOINTPOS) a partirdel vector de coordenadas articulares en grados.
Procedimientos y funciones que devuelven transformaciones
CURPOS (): resuelve el modelo directo, devolviendo laubicacin (XYZWPR) de TCP
INV (localiz.): devuelve la transformacin inversa(POSITION)
MIRROR (localiz., donde_espejo, ori): devuelve latransformacin reflejada (XYZWPR) a partir de laubicacin del espejo. El tercer parmetro especifica si sedesa reflejar la orientacin
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
8/27
POS(X, Y, Z, W, P, R, conf): Devuelve la transformacin(XYZWPR) especificada
destino = POS (300, 0, 0, 30, -90, 0,configura)
UNPOS (posn, X, Y, Z, Y, P, R, C): despliega latransformacin especificada en sus componentes
Procedimientos y funciones para el tipo de dato PATH
APPEND_NODE (Path, status): aade nodo al final del
path
INSERT_NODE (Path, node_num, status) aade el nodoespecificado
DELETE_NODE (Path, node_num, status) borra el nodoespecificado.
PATH_LEN (path): devueve el nmero de nodos
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
9/27
Operaciones especiales
3 sistemas de referencia asociados al robot: WORLD, USER
FRAMEy TCP:
WORLD se encuentra en el hombro
USER FRAME por defecto coincide con WORLD
TCP por defecto en el extremo de la brida de montaje.
Los destinos especificados en las instrucciones de movimientohay que interpretarlos como la ubicacin deseada para lareferencia TCP respecto de la referencia USER FRAME.
Es necesario disponer de herramientas que modifiquen laubicacin de dichas referencias!
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
10/27
Las transformaciones de usuario y herramienta (XYZWPR)estn almacenadas en las variables del sistema:
$UFRAME
$UTOOL
PRECAUCION: EFECTOS LATERALES TP
Al trabajar con localiz. grabadas con el TP, deberemosasegurar la consistencia entre las transformaciones de USERFRAME y TCP actuales y las de la grabacin.
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
11/27
3.- MOVIMIENTOS
Especificados siempre para TCP
MOVE TO Mueve el extremo de la herramienta a la localizacinespecificada, (POSITION. o nodo de PATH)
MOVE ALONGMueve el extremo de la herramienta a lo largo del caminoespecificado (PATH)
MOVE NEAR BYMueve el robot a una aproximacin a la localizacinespecificada segn el eje Z de TCP. La distancia especificada(mm) se toma en sentido negativo desde el destino.
MOVE RELATIVEMueve el extremo de la herramienta a la localizacin
(POSITION o VECTOR) realtiva a la sitacin actualespecificada en coordenadas del USER_FRAME.
MOVE AWAY Mueve el extremo de la herramienta la distancia especificadasegn la direccin del eje z de TCP y en sentido negativo.
MOVE ABOUT BY
Gira el extremo de la herramienta el valor especificado(grados) segn la direccin suministrada en coordenadas deTCP.
MOVE AXIS BYMueve el eje especificado la magnitud indicada (grados omilmetros).
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
12/27
Clasulas:
WITH
VIA NOWAIT
Local Contition Handler
a) La parametrizacin de los movimientos en KAREL seefecta por medio de variables del sistema. La forma deespecificarlas nicamente para una instruccin es medianteWITH
b) Debe usarse para la especificacin del punto va enmovimientos circulares.
c) Permite al intrprete continuar la ejecucin ms all de lainstruccin de movimiento actual.
d) Monitorizacin durante el movimiento de condiciones queafectarn al mismo (CANCEL, STOP, HOLD)
Control de trayectoria:
Interpolacin posicional:
Articular coordinada ($MOTYPE = JOINT)
Cartesiana rectilnea ($MOTYPE = LINEAR)
Cartesiana circular ($MOTYPE = CIRCULAR)
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
13/27
$MOTYPE= CIRCULARMOVE TOC VIAB
Interpolacin de la orientacin (si cartesiana):
Mtodo de 2 ngulos ($ORIENT_TYPE = RSWORLD)
Mtodo de 3 ngulos ($.... = AESWORLD)
Mtodo articular en mueca ($.... = WRISTJOINT)
El uso de varias vueltas en interpolacin articular se habilita
con $USE_TURNS
Control de aceleracin / deceleracin:
Se usan perfiles con aceleracin mxima El perfil de velocidades es de 2 orden (rampas de
aceleracin)
Variables involucradas:
$GROUP[].$usemaxaccel: si es TRUE, la aceleracinmxima utilizada ser proporcional a la velocidadespecificada en programa.
$PARAM_GROUP[].$cart_accel1(/2): tiempo (mseg)de la rampa de aceleracin creciente(/decrec) para interp.
cartesiana. $PARAM_GROUP[].$accel_time1(/2)[]: tiempo
(mseg) de la rampa de aceleracin creciente (/decrec)para interp. articular.
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
14/27
Casos particulares:
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
15/27
Control de velocidad:
General (override in %):Imponen unfactor de escalaa
especificaciones + particulares
$MCR[].$genoverride(general override from TP)
$MCR[].$prgoverride(aditional override from prg)
Cartesiana lineal: (mm/s, cm/ min, in/min, seconds)
$GROUP[].$speed(in mm/s)
$PARAM_GROUP[].$speedlim(valor mximo)
Cartesiana rotacional: (deg/s)
$GROUP[].$rotspeed(in deg/s)
$PARAM_GROUP[].$rotspeedlim(valor mximo)
Articular: (% sobre mxima)
$GROUP[].$speed(in %)
$PARAM_GROUP[].$speedlimjnt(valor mximo)
Como duracin(duracin en seg):
$GROUP[].$seg_time(in sec)
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
16/27
Control de terminacin:
Importante de cara a la continuidad entre tramos y para la
sincronizacin con otras acciones de programa
Control basado en posicin: (Variable $TERMTYPE)Cundo se dar por terminada la instruccin actual demovimiento?
FINE y COARSE (tolerancia): el robot decelera y paraen el considerado como destino
NOSETTLE: el robot decelera y para sin prdida detiempo en la comprobacin de posicin final.
NODECEL: permite el mov continuo. El fin deinstruccin se da cuando va dar comienzo la deceleracin
VARDECEL: grada la situacin anterior mediante unporcentaje especificado en $GROUP[].$decetool
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
17/27
En caso de movimientos concatenados:
$TERMTYPE = ?
-- (FINE | COARSE | NOSETTLE | NODECEL |VARDECEL)
$MOTYPE = LINEARMOVE TO BMOVE TO C
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
18/27
La desviacin respecto de los puntos de paso depender de lavelocidad:
Sincronizacin con otras acciones:
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
19/27
Control de la garra:
OPEN_HAND
CLOSE_HAND
RELAX_HAND
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
20/27
4. E/S
E/S definidas por usuario:
Binarias: DIN[n] & DOUT[n]
Palabras (grupos de E/S binarias) GIN[n] & GOUT[n]
Analgicas: AIN[n] & AOUT[n]
Ejemplo:
VARestado_soldador:BOOLEAN
BEGIN..........estado_soldador =DIN [3]IF estado_soldadorTHEN DOUT [3] =OFF ENDIFGOUT [3] = 25 -- 0000000000011001
E/S definidas por el sistema:
Binarias del robot: RDI[n] & RDO[n] (RDO 1..4 usadas porcontrol garra)
Panel de operador OPIN[n] & OPOUT[n]
Del Teach_Pendant: TPIN[n] & TPOUT[n]
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
21/27
5.- MANEJO DE EVENTOS (condition handlers)
Monitorizacin de eventos:
Internos / externos Hardware /software)
SINCRONIZACION robot - entorno
KAREL dispone de elevada potencia en la monitorizacin ymanejo de eventos:Manejadores de eventos
Monitoreo de condicineventoaccin
Un manejador de eventos se puede:
Definir (crear): se establecen las condiciones / acciones Habilitar / deshabilitar
Borrar
2 tipos:
Globales(activos durante la ejecucin del programa)
Locales(asociado a a una instruccin de movimiento)
Definicin de un manejador
Global:CONDITION [n]WHEN condsDO actions
ENDCONDITION
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
22/27
Local:
MOVE
WHEN condsDO actionsUNTIL condsUNTIL condsTHEN actions
ENDMOVE
Habilitacin de un manejador
Global:
ENABLE CONDITION [n]
Local: implcita al comienzo del movimiento
Deshabilitacin de un manejador
Global: implcita al haber sido lanzado, o explcita:
DISABLE CONDITION [n]
Local: implcita al final del movimiento (o con STOP)
Eliminacin de un manejador
Global: implcita al finalizar el programa, o explcita:
PURGE CONDITION [n]
Local: implcita al final del movimiento o tras haber sido lanzado
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
23/27
Lista de condiciones
Muy variada!GRAN POTENCIA
evaluacin de expresiones:
Con operadores relacionales
De estado de la E/S
Otras:
ERROR [n]EVENT [n]
ABORT
PAUSE
Adems, en manejadores locales:
AT NODE [n]
TIME t BEFORE NODE [n]
TIME t AFTER NODE [n]
Lista de acciones
De asignacin a variables y a E/S
STOP
CANCEL HOLD
ABORT
PAUSE
CONTINUE
Nombre de rutina
ENABLE CONDITION [n]
DISABLE CONDITION [n]
.
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
24/27
CONDITION [1]
WHEN DIN[4]DOtrata_alarmaDOUT[1] = ON
WHEN ERROR[0]DO STOPENDCONDITION
Ejemplo. mov. Precabido:
MOVE TO destinoUNTIL DIN[4]
ENDMOVE
WITH $SPEED = 200, $MOTYPE = CIRCULARMOVE ALONG paint_pathNOWAIT
WHEN TIME 100AT NODE[3] DO
DOUT[2] =TRUEENDMOVE
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
25/27
6.- MULTITAREA
Se permiten varios flujos concurrentes a condicin de que cada
grupo de movimiento sea gobernado por un solo flujo al mismotiempo.
Manipulacin de los flujos:
a) General
RUN_TASK CONT_TASK
ABORT_TASK
PAUSE_TASK
b) Desde los manejadores de condiciones (PAUSE, ABORT;CONTINUE)
Task scheduling
Basado en prioridades. (directiva %PRIORITY)
A igual prioridad: time slicing(256 mseg)
Sincronizacin entre tareas: semforos
CLEAR_SEMA[n_semaforo]POST_SEMA[n_semaforo]PEND_SEMA[n_semaforo,max_time,timeout]SEMA_COUNT[n_semaforo]
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
26/27
Ejemplo: cdigo que permite a la/s tareas que lo incluyan elacceso en exclusin mutua a un recurso compartido (robot uotros):
PEND_SEMA[control_mov,-1,time_out]LOCK_GROUP[1] --se apodera del robot........-mueve el robotUNLOCK_GROUP[1] --libera el robotPOST_SEMA[control_mov]
-
7/24/2019 LENGUAJE_KAREL FANUC.pdf
27/27