100% encontró este documento útil (2 votos)
777 vistas12 páginas

Instrucciones Melfa Basic V

Cargado por

iatapieror
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (2 votos)
777 vistas12 páginas

Instrucciones Melfa Basic V

Cargado por

iatapieror
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Actividad 3

Apropiación del conocimiento

Instructor:Hector Helí Ruiz García


Materia:Robótica
Aprendices:Juan Andrés Moreno-Juan David Manrique-Ivan Andrés Tapiero
Ficha: 2674492

A) Investigar las siguientes instrucciones de Melfa Basic IV o Melfa Basic V y dar un ejemplo
de uso de cada una de ellas (ver capítulo 4 del documento “Anexo 2 Manual Mitsubishi”).

1) MOV:
El robot se mueve a la posición designada con interpolación conjunta. Es posible
especificar la forma de interpolación usando la instrucción TYPE.
Ejemplo:
1 Mov P1 ’(1) Moves to P1.
2 Mov P2, -80 *1) ’(2) Moves from P2 to a position retracted 80mm in the hand direction.
2) MVS:
El robot se mueve a la posición designada con interpolación lineal. Es posible especificar la
forma de interpolación usando la instrucción TYPE.
Ejemplo:
TYPE LINEAR
MOV X200.0 Y80.0 Z60.0
3) MVR:
Designa el punto inicial, el punto de tránsito y el punto final, y mueve el robot con
movimientos circulares. Interpolación en orden de punto inicial - punto de tránsito - punto
final. Es posible especificar la forma de interpolación usando la instrucción TYPE.
Ejemplo:
MVR X100.0 Y50.0 Z30.0
Este ejemplo el robot se moverá a la posición X=100.0, Y=50.0, Z=30.0 utilizando
interpolación, lo que resultaría en un movimiento más suave y continuo en movimiento
circulares comparación con la interpolación lineal.
4) HOPEN:
Control de manos y herramientas para abrir la pinza designada
Ejemplo:
HOPEN(1)
Abre la mano 1
5) HCLOSE:
Control de manos y herramientas para cerrar la pinza designada
Ejemplo:
HCLOSE(1)
Cierra la mano 1
6) M_IN:
Señales de entrada, se utiliza para leer el estado de entrada de un módulo de entrada
digital. Esto es útil para detectar el estado de sensores u otros dispositivos conectados al
robot.
Ejemplo:
M_IN(1, In_State)
Donde:
1 es el número del módulo de entrada digital que se quiere leer y In_State es una variable
que almacenará el estado de entrada leído del módulo.
7) M_OUT:
Señales de salida, se utiliza para controlar el estado de salida de un módulo de salida
digital. Esto te permite activar o desactivar dispositivos externos o actuadores conectados al
robot, como luces, válvulas, etc.
Ejemplo:
MOUT(1, 1)
1 es el número del módulo de salida digital que se quiere controlar y el segundo 1, es el
valor que se va a escribir en el módulo de salida. En este caso, 1 significa que se activa la
salida o 0 significa que se desactiva.
8) DEF POS:
Declaración de variable para definir una posición específica del robot. Esta posición puede
ser utilizada posteriormente en el programa para referirse a esa ubicación específica en el
espacio de trabajo del robot.
Ejemplo:
DEF POS P1,X100.0 Y50.0 Z30.0
Donde P1 es el nombre que se le asigna a la posición definida. Este nombre se puede
utilizar luego en el programa para referirse a esta posición y X100.0 Y50.0 Z30.0 son las
coordenadas cartesianas que definen la posición en el espacio de trabajo del robot.
9) SPD:
Se define para establecer la velocidad de movimiento del robot de la interpolacion lineal y
circular para (MVS, MVR y MVC)
Ejemplo:
SPD 100
Donde 100 son mm/s
10) OVRD:
Designa la velocidad de movimiento según un porcentaje relativo a la velocidad máxima.
Afecta a todos los movimientos posteriores, si es que no se vuelve a modificar el valor.
Ejemplo:
OVRD SPEED=50 ACCEL=30
Se define una velocidad de movimiento al 50% de la velocidad declarada anteriormente y
una aceleración al 30% de la aceleración declarada anteriormente. Esto significa que el
robot se moverá a la mitad de su velocidad y con una aceleración más lenta de lo normal
mientras dure este ajuste.
11) JOVRD:
Se usa para ajustar temporalmente las velocidades de los ejes del robot durante la
ejecución del programa, como instrucciones de (MOV)
Ejemplo:
JOVRD J1=50 J2=30 J3=70
Donde J1 (generalmente la articulación base), J2 (generalmente la articulación de
elevación) y J3 (generalmente la articulación de rotación de la muñeca) son los ejes del
robot, y se definen los porcentajes de sus velocidad definida en este caso el J1 se moverá
un 50% de su velocidad máxima definida
12) ACCEL:
Tiempo de aceleración/desaceleración y control de velocidad, Designa la aceleración
durante el movimiento y la desaceleración como porcentaje (%) en respecto a la velocidad
máxima de aceleración/deceleración.
Ejemplo:
ACCEL 60, 80
Establece la aceleración al 60% y la desaceleración al 80%. (Para aceleración y
desaceleración máxima es de 0,2 seg. aceleración 0,2/0,6=0,33 seg. desaceleración
0,2/0,8=0,25 seg.)
13) GOTO:
El destino de salto especificado método de la instrucción de rama (Ir a, ir sub) o salto de
línea
Ejemplo:
10 GoTo *LBL
100 *LBL
101 Mov P1
En la línea 10 llega al GoTo y se salta a la línea 100 que está el LBL y ejecuta la siguiente
línea de código.
14) IF THEN ELSE:
Es una condicional, si no se da la circunstancia se ejecuta el salto designado en ELSE. El
comando ELSE es opcional.
Ejemplo:
IF (Sensor1 = 1) THEN
M_OUT(1, 1) ' Activar salida si el sensor está activado
ELSE
M_OUT(1, 0) ' Desactivar salida si el sensor no está activado
ENDIF
En este ejemplo vemos como si el sensor1 su expresión de su salida tiene un 1 entonces se
ejecutara el proceso
Pero si no se cumple esa expresión entonces ejecuta otro proceso y el ENDIF es para
terminar el proceso del IF THEN ELSE.
15) FOR NEXT:
Ejecuta repetidamente el programa entre la declaración For y la declaración Next hasta que
se cumplan las condiciones designadas.
Ejemplo:
FOR i = 1 TO 10
' Código a ejecutar en cada iteración
MOV X(i*10) Y(i*5) Z(0)
NEXT
Donde 1 es donde se describe la variable numérica que representa el contador del número
de repeticiones y establece el valor predeterminado del contador para el número de
repeticiones como una operación numérica expresión.
El 10 establece el valor final del contador para el número de repeticiones como una
operación numérica expresión.
Y MOV X(i10) Y(i5) Z(0) es una instrucción que se ejecutará en cada iteración del bucle. En
este caso, el robot se moverá a una posición diferente en el espacio de trabajo en cada
iteración.
16) WAIT:
Se utiliza para hacer que el programa espere durante un tiempo hasta que la condición ha
sido alcanzada antes de continuar con la ejecución de la siguiente línea.
Ejemplo:
Wait M_IN(1) = 5
Donde M_IN(1) es variable numérica, utiliza la variable de señal de entrada/salida que se va
a ejecutar y el 5 es el tiempo que espera en S.
17) DEF FLOAT:
Se utiliza para declarar variables flotantes o Definición de variable de número entero o real
Ejemplo:
DEF FLOAT variable_flotante
variable_flotante = 3.14
Este ejemplo se declara la variable flotante como float y esa variable flotante tiene un valor
de número entero o real de 3.14
18) REM
Se utiliza para agregar comentarios al código, estos no son ejecutables pero sirven para la
información y funcionamiento del código o para el uso del programador
Ejemplo:
MOV X(100) Y(50) Z(30) REM Movimiento del robot en X Y y Z
19) DEF PLT:
Se utiliza para definir el palet o objeto.
Ejemplo:
Def Plt 1,P1,P2,P3,P4,4,3,1
La definición de paleta de cuatro puntos. (P1,P2,P3,P4)
20) GOSUB:
Se usa para utilizar dentro del programa subrutina, una subrutina es un bloque de código
que realiza una tarea específica y puede ser llamado desde múltiples ubicaciones en el
programa principal. Se llama a la subrutina según el número de variable designado. Las
condiciones de valor siguen el orden de los valores enteros. (1,2,3,4,.......)
Ejemplo:
1 GoSub *LBL
2 End
:
20 *LBL
21 Mov P1
22 Return
Se puede ver que en la línea 1 se llama al GOSUB y este tiene la función de LBL y en la
línea 20 está el LBL y hace que en su siguiente línea de programa se mueva P1 y retorne.
21) RETURN:
Se utiliza para Retornar a la línea siguiente de donde estaba el GOSUB
Ejemplo:
1 GoSub *LBL
2 End
:
20 *LBL
21 Mov P1
22 Return
Como se puede ver en con el ejemplo anterior, que cuando se acaba de finalizar la línea de
código 21 llega al Return y este hace que se devuelva a la línea 1 del GOSUB y hace que
se termine ese ciclo.
22) DEF IO
Se utiliza para definir una variable de señal, entrada/salida. Se usa esta instrucción para
especificar anchos de bits. Las variables M_In y M_Out se utilizan para señales normales de
un solo bit, M_Inb y M_Outb se utilizan en el caso de bytes de 8 bits. M_Inw y M_Outw se
utilizan en el caso de palabras de 16 bits y M_In32, M_Out32 se utilizan en el caso de
palabras de 32 bits.
Ejemplo:
1 Def IO PORT1 = BIT,6
:
10 PORT1 = 1 ' Output signal number 6 turns on
En este ejemplo se declara la variable PORT1 de 6 BIT y ese PORT1 es igual a 1, que
enciende la señal de salida número 6
B) Explicar el funcionamiento de cada una de las líneas del siguiente programa
1.) Mov PINIT:
Se mueve a PINIT (Variable) o la posición de inicio
2.) HOpen 1:
Abre la pinza # 1
3.) Dly 1:
Espera 1 segundo antes de seguir al siguiente paso
4.) Mov PPAL 1,-30:
Moverse con interpolación de ejes a 30 mm de PPAL1
5 Mvs PPAL 1:
Moverse con interpolación lineal a PPAL1
6 HClose 1:
Cierra la pinza 1
7 Dly 1:
Espera 1 segundo antes de seguir.
8 Mvs PPAL1,-30: Moverse con interpolación lineal de 30 mm a PPAL1
9 Mov PPAL2,-30: Moverse con interpolación de ejes a 30 mm de PPAL2
10 Mvs PPAL2:Moverse con interpolación lineal a PPAL2
11 HOpen 1: Abre la pinza 1
12Dly1: Espera 1 segundo antes de seguir.
13 Mvs PPAL2,-30: Moverse con interpolación lineal de 30 mm a PPAL2
14 Mov PINIT: Moverse con interpolación de ejes a PINIT o posicion de inicio
15 HOpen 1: Abre la pinza 1
16Dly1: Espera 1 segundo antes de seguir.
17 Mov PPAL2,-30: Moverse con interpolación de ejes a 30 mm de PPAL2
18 Mvs PPAL2:Moverse con interpolación lineal a PPAL2
19 HClose 1: Cierra la pinza 1
20Dly1: Espera 1 segundo antes de seguir.
21 Mvs PPAL2,-30: Moverse con interpolación lineal de 30 mm a PPAL2
22 Mov PPAL1,-30:Moverse con interpolación de ejes a 30 mm de PPAL1
23 Mvs PPAL1:Moverse con interpolación lineal a PPAL1
24 HOpen 1:Abre la pinza 1
25Dly1: Espera 1 segundo antes de seguir.
26 Mvs PPAL1,-30: Moverse con interpolación lineal de 30 mm a PPAL1
27 Mov PINIT: Se mueve a PINIT o posición de inicio
28 End: Finaliza el programa.
C) Explicar el funcionamiento de cada una de las líneas del siguiente programa

90 DEF INTE IOPress

Define una variable tipo entero IOPress

100 IOPress = 0

La variable IOPress tiene un valor numerico entero de 0

120 DEF INTE IDoPress

Define una variable de tipo entero llamada IDoPress

130 IDoPress = 1

La variable IDoPress tiene un valor numerico entero de 1

160 DEF INTE IPressO

Define una variable de tipo entero llamada IPressO

170 IPressO = 1

La variable IPressO tiene un valor numerico entero de 1

200 DEF POS DesPos

Define una posición llamada DesPos

220 DEF FLOAT bGrip

Define una variable de tipo flotante llamada bGrip

240 DEF FLOAT bLin

Define una variable de tipo flotante llamada bLin

260 DEF FLOAT zDist

Define una variable de tipo flotante llamada zDist


310 MOV PToDoor

Mueve el robot a una posición predefinida

330 MVS PGrip

Realiza un movimiento a la posición de agarre de la pinza.

350 HCLOSE 1

Cierra la pinza

370 MVS PToDoor

Vuelve a la posición predefinida

390 MOV PToPress

Mueve el robot a una posición predefinida cerca de la prensa.

410 GOSUB

Llama a la subrutina "WaitForPressOpen".

*WaitForPressOpen

Ejecuta las siguientes líneas de código

440 bLin = 1

Establece la variable bLin en 1

450 bGrip = 0

Establece la variable bGrip en 0

460 DesPos = PInPress

Asigna a la variable DesPos la posición PInPress

470 zDist = 300

Establece la variable zDist en 300

500 GOSUB

Llama a la subrutina *ApproachAndGripOrRelease

*ApproachAndGripOrRelease

Ejecutar las siguientes líneas de código


520 MOV PToPress

Mueve el robot a una posición predefinida cercana a la prensa.

550 GOSUB *StartPressJob

Llama a la subrutina etiquetada como "StartPressJob"

560 END

Finaliza el programa.

600 *WaitForPressOpen

Marca el inicio de la subrutina WaitForPressOpen

690M_OUT(IOPress) = 1

Establece la salida correspondiente a la variable IOPress en 1.

710WHILE M_IN(IPressO) = 0

Inicia un bucle mientras la entrada "IPressO" sea igual a 0.

720 DLY 0.5

Hace una pausa de 0.5 segundos en cada iteración del bucle

730WEND

Marca el final del bucle WHILE

760RETURN

Finaliza la subrutina WaitForPressOpen

770 *StartPressJob

Marca el inicio de la subrutina StartPressJob

850M_OUT(IOPress) = 0

Establece la salida correspondiente a la variable IOPress en 0.

870M_OUT(IDoPress) = 1

Activa un dispositivo que inicia el proceso de prensado.


890DLY 1

Espera un segundo

910M_OUT(IDoPress) = 0

Desactiva el dispositivo que inicia el proceso de prensado

920 RETURN

Finaliza la subrutina StartPressJob

930

*ApproachAndGripOrRelease

Ejecuta el subrutina ApproachAndGripOrRelease

1200 IF bLin=1 THEN *DO_LIN

Esta línea contiene una estructura condicional "IF-THEN-ELSE". Evalúa el valor de la


variable "bLin". Si es igual a 1

ELSE

Si no se cumple esa condición entonces

*DO_PTP

De lo contrario, saltará a la etiqueta "*DO_PTP".

1210 *DO_LIN

Marca el inicio de la sección de código para el movimiento lineal. Este segmento de código
se ejecutará si la variable "bLin" es igual a 1.

1220 MVS DesPos,-zDist

Realiza un movimiento lineal hacia la posición "DesPos" desplazada en la dirección opuesta


al eje Z por una distancia de "zDist".

1230 MVS DesPos

Realiza otro movimiento lineal hacia la posición DesPos

1240 GOTO

Inicia la subrutina *DO_GRIP_RELEASE

*DO_GRIP_RELEASE

Ejecuta las siguientes líneas de códigos


1250 *DO_PTP

Marca el inicio de la sección de código para el movimiento punto a punto. Este segmento de
código se ejecutará si la variable "bLin" no es igual a 1.

1260 MOV DesPos,-zDist

Realiza un movimiento punto a punto hacia la posición "DesPos" desplazada en la dirección


opuesta al eje Z por una distancia de "zDist".

1270 MVS DesPos

Realiza otro movimiento punto a punto hacia la posición DesPos

1280 GOTO

Inicia la subrutina DO_GRIP_RELEASE

*DO_GRIP_RELEASE

Ejecuta las siguientes lineas de código

1290 *DO_GRIP_RELEASE

Marca el inicio de la sección de código para controlar si se debe agarrar o soltar algo con la
pinza

1300 IF bGrip=1 THEN

Esta línea contiene una estructura condiciona. Si el valor de la variable "bGrip". Si es igual a
1, el programa saltará a la etiqueta "*DO_GRIP"

*DO_GRIP ELSE

Si no se cumple esta condición

*DO_RELEASE

de lo contrario, saltará a la etiqueta "*DO_RELEASE".

1310 *DO_GRIP

Inicio para cerrar la pinza

1320 HCLOSE 1

Cierra la pinza 1

1330 GOTO *BACK

Salta a "*BACK".
1340 *DO_RELEASE

Inicio para abrir la pinza.

1350 HOPEN 1

Abre la pinza 1

1360 *BACK

Controlar si se debe agarrar o soltar el objeto con la pinza.

1370 MVS DesPos,-zDist

Realiza un movimiento (lineal o punto a punto) hacia la posición "DesPos" desplazada en la


dirección opuesta al eje Z por una distancia de "zDist".

1380 RETURN

Finaliza la subrutina "*ApproachAndGripOrRelease" y devuelve el control al punto desde el


cual se llamó.

También podría gustarte