LENGUAJE_KAREL FANUC.pdf

download LENGUAJE_KAREL FANUC.pdf

of 27

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