Sei sulla pagina 1di 12

Universidad de los Andes.

Laboratorio # 2 Control de Movimiento 1

Control de Movimiento
Laboratorio # 2
Rutina de Prueba Módulo XY - Yaskawa
Combariza Juan Pablo. Cod: 200911493, Caro Andrey. Cod: 201525143, Acuña Diana. Cod: 201422741
{jp.combariza833, as.caro, dl.acuna10}@uniandes.edu.co
Universidad de los Andes


Resumen—En este documento se presenta el análisis, y el correspondiente diagrama de flujo de la rutina de
prueba del módulo XY de Yaskawa (SMC-4000). Para el desarrollo de la práctica se comentó cada línea de
código proporcionada, para basados en esta información lograr el entendimiento y desarrollo del diagrama
de flujo de operación

Índice de Términos— Módulo XY-Yaskawa, Software YTERM7.

I. INTRODUCCIÓN

El desarrollo de la práctica parte del código proporcionado para su análisis y comprensión, el cual se carga
en el controlador del módulo XY de Yaskawa para verificar su operación.

Con la ayuda del manual del módulo se realizaron los correspondientes comentarios de acuerdo con la
información obtenida sobre cada comando. De esta manera, analizando el código en su conjunto, se procedió
a realizar los diagramas de flujo.

II. ANÁLISIS DEL CÓDIGO

A. COMENTARIOS

#AUTO // Etiqueta para arrancar el programa automaticamente


DP0,0 // Define la posicion en el eje x de los encoders
MT-2,-2 // Especifica el tipo de motor
OE1 // Indica si el servomotor tiene activa la señal de habilitación
ER1024,1024 // Limite de error en el eje x
#UNIANDE //main loop
CB1;CB2;CB3;CB4 // borrar bit 1,2,3,4
MOXY //Apagar el motor del eje x,y
CN1 // Contiene la configuración del interruptor de Home
DP0,0 // Define la posicion en el eje x de los encoders
KP3,3 //Constante Proporcional
KD15,15 //Constante Derivativa
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 2

TL2,2 //Limite en voltaje del torque de motor


AI1 //Espera la señal de Start
AI-1 // Espera la señal de Stop
DP0,0 // Define la posicion en el eje x de los encoders
SHXY // Habilita el amplificador del servo x,y
WT500 // Espera a que pase el tiempo de 500
AC51200*2,51200*2 // Especifica la constante de aceleración
DC51200*10,51200*10 // Especifica la constante de desaceleración
SP51200*2,51200*2 // Define la velocidad
HOMEDX=0 //Definición de variables
HOMEDY=0 //
VSTART=0
HOMEDX1=0//
HOMEDY1=0//
XQ#IO,1 //Ejecuta la sela IO simultaneamente
IF(_LFX=0) // Final de carrera de activa hacia adelante
PRX=-51200*5 //Mover la posición relativa de distancia incremental actual (Incluso si el movimiento es establecido por
PA)
BGX //Empezar a mover motor
AMX //Despues de hacer el movimiento
ENDIF //Fin del ciclo if
IF(_LFY=0) //Final de carrera de desactiva hacia adelante
PRY=-51200*5 //Mover la posición relativa de distancia incremental actual (Incluso si el movimiento es establecido por
PA)
BGY //Empezar a mover motor
AMY //Despues de hacer el movimiento
ENDIF //Fin del ciclo if
JG51200*3,51200*3 //Especifica velocidad de Jog
BGXY//Empezar a mover motor

#HOMES //Label
JS#HOMEX,_LFX=0 //Saltar a subrutina HOMEX
JS#HOMEY,_LFY=0 //Saltar a subrutina HOMEY
JP#HOMED,((HOMEDX=1)&(HOMEDY=1) )//Saltar a subrutina HOMED
JP#HOMES//Saltar a subrutina HOMES

#HOMEX //Label
STX //Stop
AMX //Despues de hacer el movimiento
WT200 // Espera a que pase el tiempo de 200
HOMEDX=1 //Setear variable
EN //Fin

#HOMEY //Label
STY //stop
AMY //Despues de hacer el movimiento
WT200 // Espera a que pase el tiempo de 200
HOMEDY=1 //Setear variable
EN //fin

#HOMED //Label
PR-51200*3,-51200*3 //Mover a siguiente posición
BGXY //Empezar a mover motor
AMXY //Despues de hacer el movimiento
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 3

WT500 //Retardo de 0.5 s


SB1 //Setea a 1 el bit 1 del puerto Modbus para transferencia de datos
WT1000 //Retardo de 1 s
CB1 //Deshabilita bit 1 del puerto modbus. Setea a 0 el bit 1 del puerto
DP0,0 //Define la posición inicial relativa del servo
WT1000 //Retardo de 1 s

#HOMESS //etiqueta HOMESS


JG-51200*3,-51200*3 //Gira el servo hacia la posición X y Y indicada
BGXY //Iniciar movimiento en la dirección X y Y indicada en la linea anterior
#HOMES1 //Inicio subrutina HOMES1
JS#HOMEX1,_LRX=0 //Salta a la subrutina HOMEX1, si el switch de límite reverso en X está activo
JS#HOMEY1,_LRY=0 //Salta a la subrutina HOMEY1, si el switch de límite reverso en Y está activo
JP#HOMED1,((HOMEDX1=1)&(HOMEDY1=1)) //Salta a la rutina HOMED1 si se cumple que las variables HOMEDX1=1 y
HOMEDY1=1
JP#HOMES1 //Si no se cumplen las condiciones de la anterior linea vuelve a la subrutina HOMES1

#HOMEX1 //Subrutina HOMEX1


STX //Detiene el movimiento en X
AMX //Detiene la ejecución de cualquier otro comando hasta que no se haya detenido completamente el
movimiento en X
WT200 //Retardo de 0.2 s
HOMEDX1=1 //La variabble HOMEDX1 toma el valor de 1
EN //Fin subrutina HOMEX1

#HOMEY1 //Subrutina HOMEY1


STY //Detiene el movimiento en Y
AMY //Detiene la ejecución de cualquier otro comando hasta que no se haya detenido completamente el
movimiento en Y
WT200 //Retardo de 0.2 s
HOMEDY1=1 //La variabble HOMEDY1 toma el valor de 1
EN //Fin subrutina HOMEY1

#HOMED1 //Subrutina HOMED1


PR51200*3,51200*3 //Define una posición a seguir relativa a la posición en que se encuentra el servo en ese momento
BGXY //Iniciar movimiento
AMXY //Detiene la ejecución de cualquier otro comando hasta que no se haya detenido completamente el
movimiento en X
WT500 //Retardo de 0.5 s
SB1 //Setea a 1 el bit 1 del puerto Modbus para transferencia de datos
WT1000 //Retardo de 1 s
PX=@ABS[_RPX] //Variable que almacena la posición actual en X del servo
PY=@ABS[_RPY] //Variable que almacena la posición actual en Y del servo
WT1000 //Retardo de 1 s
DP0,0 //Ajuste de la posición actual del servo
TL4,4 //Setea la salida de voltaje del motor para X y Y en 4 Voltios
XQ#LUCES,2 //Ejecuta el programa "LUCES", linea 2, ubicado en la memoria del controlador

#CICLO //Etiqueta CICLO


JP#CICLO,VSTART=0 //Salto a rutina "CICLO" si la variable VTSTART=0
AC51200*2,51200*2 //Define aceleración de movimiento del servo en la dirección X y Y
DC51200*10,51200*10 //Define desaceleración de movimiento del servo en la dirección X y Y
SP51200*3,51200*3 //Define velocidad de rotación del servo en X y Y
#ADE //Etiqueta ADE
JP#ADE,VSTART=0 //Salta a ADE si se cumple que VSTART=0
KS0.9,0.9 //Establece cantidad de suavizado del pulso del motor para el motor de paso
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 4

LMXY //Activa el modo de interpolación lineal para los ejes X y Y.


VS51200*10 // Define el vector de velocidad en el sistemas de coordenadas S de pendiendo los ejes definidos en la
linea
VA51200*20 // Define la tasa de aceleracion del vector en el esquema de movimiento coordinado definido
VD51200*20 // Define la tasa de desaceleracion del vector en el esquema de movimiento coordinado definido
LIPX,PY //Define el incremento en la distancia de desplazamiento para X y Y de acuerdo a los valores
almacenados en PX y PY
LE //Fin de la interpolación lineal

BGS //Iniciar movimiento en S


AMS //Detiene la ejecución de cualquier otro comando hasta que no se haya detenido completamente el
movimiento en S
WT300 //Retardo de 0.3 s
#ATRS //Etiqueta ATRS
JP#ATRS,VSTART=0//Salta a ATRS si se cumple que VSTART=0
KS0.9,0.9 //Establece cantidad de suavizado del pulso del motor para el motor de paso

LMXY //Activa el modo de interpolacion lineal para los ejes X y Y.


VS51200*10 // Define el vector de velocidad en el sistemas de coordenadas S de pendiendo los ejes definidos en la linea
anterior.
VA51200*20 // Define la tasa de aceleracion del vector en el esquema de movimiento coordinado definido
anteriormente.
VD51200*20 // Define la tasa de desaceleracion del vector en el esquema de movimiento coordinado definido
anteriormente.
LI-PX,-PY // Define el incremento en la distancia de desplazamiento para X y Y de acuerdo a los valores almacenados
en PX y PY
LE //Fin de la interpolación lineal

BGS // Iniciar movimiento en S


AMS // Trippoint utilizado para controlar la sincronización de los eventos y designa la secuencia S
WT300 // Es y delay de 300 milisegundos
JP#CICLO // Salta ahasta el programa #CICLO
EN // Retorna a la siguiente linea cuando #CICLO termine su ejecucion.
#POSERR //Tag para indicar que comienza la subrutina #POSERR
ST // Detiene el movimiento comandado
AM // El comando AM es un trippoint utilizado para controlar la sincronización de los eventos
MO // El comando MO apaga el algoritmo de control PID y la señal de activación de servo
HX0 //El comando HX detiene la ejecución de cualquiera de los programas que se estén ejecutando de forma
independiente a través de la //multitarea, en este caso la tarea 0
CB1;CB2;CB3 // Limpia los bit 1 ,2, 3 en el puerto de salida (set cero value)
SB4 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 4)
EN // Finaliza la subrutina #POSERR
#CMDERR // Tag para indicar que comienza la subrutina #CMDERR
ST // Detiene el movimiento comandado
AM // El comando AM es un trippoint utilizado para controlar la sincronización de los eventos
MO // El comando MO apaga el algoritmo de control PID y la señal de activación de servo

HX0 // El comando HX detiene la ejecución de cualquiera de los programas que se estén ejecutando de forma
independiente a través de la //multitarea, en este caso la tarea 0
CB1;CB2;CB3 // Limpia los bit 1 ,2, 3 en el puerto de salida (set cero value)
SB4 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 4)
EN // Finaliza la subrutina
#IO // Tag para indicar que comienza la subrutina #IO
IF((@IN[1]=0)&(HOMEDX=1)&(HOMEDY=1)&(@IN[2]=1)) // condicion si la entrada 1 es igual a 0y 2 es igual a 1 y la
variable HOMEDY y HOMEDX =1
VSTART=1 // VSTART variable que almacena valor
SB1 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 1)
ENDIF // El comando ENDIF se utiliza para designar el final de una instrucción condicional IF
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 5

IF((@IN[2]=0)&(HOMEDX=1)&(HOMEDY=1)&(@IN[1]=1))// condicion si la entrada 2 es igual a 0 y 1 es igual a 1 y la


variable HOMEDY y HOMEDX =1
VSTART=0 // VSTART variable que almacena valor
CB1 // Limpia los bit 1 en el puerto de salida (set cero value)
ENDIF // El comando ENDIF se utiliza para designar el final de una instrucción condicional IF
JP#IO // Salta hasta el programa #IO
EN // Finaliza la subrutina

#LUCES // Tag para indicar que comienza la subrutina #LUCES

IF(VSTART=1) // Condicion VSTART=1


SB1 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 1)
WT700 // Es y delay de 700 milisegundos
CB1 // Limpia los bit 1 en el puerto de salida (set cero value)
SB2 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 2)
WT400 // Es y delay de 400 milisegundos
CB2 // Limpia los bit 2 en el puerto de salida (set cero value)
SB3 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 3)
WT300 // Es y delay de 300 milisegundos
CB3 // Limpia los bit 3 en el puerto de salida (set cero value)
SB4 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 4)
WT250 // Es y delay de 250 milisegundos
CB4 // Limpia los bit 4 en el puerto de salida (set cero value)
WT200 // Es y delay de 200 milisegundos
SB3 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 3)
WT700 // Es y delay de 700 milisegundos
CB3 // Limpia los bit 3 en el puerto de salida (set cero value)
SB2 // El comando SB pone uno de los ocho bits en el puerto de salida (en este caso el bit 2)
WT500 // Es y delay de 500 milisegundos
CB2 // Limpia los bit 2 en el puerto de salida (set cero value)
ENDIF // El comando ENDIF se utiliza para designar el final de una instrucción condicional IF

IF(VSTART=1) // Condicion VSTART=1


CB1;CB2;CB3;CB4 // Limpia los bit 1 ,2, 3 , 4 en el puerto de salida (set cero value)
ENDIF // El comando ENDIF se utiliza para designar el final de una instrucción condicional IF

JP#LUCES // Salta ahasta el programa #LUCES


EN // Finaliza la subrutina
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 6

III. DIAGRAMA DE FLUJO


Universidad de los Andes. Laboratorio # 2 Control de Movimiento 7
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 8
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 9
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 10
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 11
Universidad de los Andes. Laboratorio # 2 Control de Movimiento 12

REFERENCIAS
[1] Guia de laboratorio #2 Rutina de prueba módulo XY Yaskawa
[2] Manual SCM-4000 Yaskawa

Potrebbero piacerti anche