tema 4.2 estructura de un programa

27
Tema 4.2 Estructura de un programa. Programar en modo ASH. Para programar en modo ASH es necesario realizar varias tareas de inicio. Paso 1. Llevar el robot a HOME. Paso 2. Escribir el comando W0 (cero). Esto es para que la computadora nos proporcione las coordenadas actuales del robot, para saber hacia donde tenemos que dirigirnos. Como cualquier Lenguaje el RAPL3, cuenta con un editor y un compilador, que también se encuentran en el ROBCOMM3, el Programa fuente es un archivo que debe de contener la extensión r3, y podrá ser escrito en otro editor, siempre que contenga dicha extensión. La Estructura general para un programa en RAPL3 es similar a los programas en lenguaje “C”, en donde hay que respetar las estructuras programáticas El formato es el siguiente: definición de variables: (puede ser antes o después de definir el segmento principal main) teachable cloc a,b.....z,a1.... a xx, [10] puntos, etc...... ploc m,n,p int i, a1....axx, float b.... etc. Para el caso en que las variables se refieran a ubicación de puntos grabados en el controlados del robot, se especifica el tipo de exactitud de las variables (cloc, ploc) en dónde cloc (localización cartesiana) se refiere a que se va a referenciar para la exactitud en sistema de coordenadas cartesiano, y ploc (puntos de localización) lo hará directamente de los puntos provenientes de los “decoders” del robot; se obtiene más precisión con el tipo ploc La estructura main es la principal de todo programa, empieza con la palabra main y al final del programa end main.

Upload: karlafisiny

Post on 22-Oct-2015

84 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Tema 4.2 Estructura de Un Programa

Tema 4.2 Estructura de un programa.

Programar en modo ASH.

Para programar en modo ASH es necesario realizar varias tareas de inicio.Paso 1. Llevar el robot a HOME.Paso 2. Escribir el comando W0 (cero). Esto es para que la computadora nos proporcione las coordenadas actuales del robot, para saber hacia donde tenemos que dirigirnos.

Como cualquier Lenguaje el RAPL3, cuenta con un editor y un compilador, que también se encuentran en el ROBCOMM3, el Programa fuente es un archivo que debe de contener la extensión r3, y podrá ser escrito en otro editor, siempre que contenga dicha extensión.

La Estructura general para un programa en RAPL3 es similar a los programas en lenguaje “C”, en donde hay que respetar las estructuras programáticas El formato es el siguiente:

definición de variables: (puede ser antes o después de definir el segmento principal main)

teachable cloc a,b.....z,a1.... a xx, [10] puntos, etc......ploc m,n,p

int i, a1....axx, float b.... etc.

Para el caso en que las variables se refieran a ubicación de puntos grabados en el controlados del robot, se especifica el tipo de exactitud de las variables (cloc, ploc) en dónde cloc (localización cartesiana) se refiere a que se va a referenciar para la exactitud en sistema de coordenadas cartesiano, y ploc (puntos de localización) lo hará directamente de los puntos provenientes de los “decoders” del robot; se obtiene más precisión con el tipo ploc

La estructura main es la principal de todo programa, empieza con la palabra main y al final del programa end main.

Programa No 1teachable cloc a,bmain ;; define el segmento principal, comienzo de todo programa

;; Es conveniente poner comentarios cuando se realiza y ;;Estructura un programa para una mejor comprensión , lo ;;cual se hace poniendo dos puntos y comas seguidos (;;), y a ;;continuación los comentarios deseados

ready() ;; comandos con dos paréntesis al finalmove (a)move (b)ready() ;;Fin del programa

Page 2: Tema 4.2 Estructura de Un Programa

end main ;; fin del segmento principal

Esta es la estructura básica de los programas, con la cual debe contar todo programa para interactuar con la interface del robot

4.2.-CREANDO UN PROGRAMA CON EL ROBCOMM3Dentro de un programa la sintaxis de los comandos cambia, es necesario añadirle dos paréntesis, para la creación de ellos se debe de hacer lo siguiente:1.-Abra el ROBCOMM3,En el menú File seleccione la opción de New, o haga un clic en el icono New Doc. Aparece la pantalla siguiente:

2.-Edite el programa.Comience a escribir su programa fuente, al terminar guárdelo con un nombre procurando ponerle la extensión r3.

ICONO NEW DOC

Page 3: Tema 4.2 Estructura de Un Programa

3.-Compilar el programa escrito.Seleccione del menú application la opción compile, o haga un clic con el Mouse sobre el icono compile.

Después de compilar, si no existe ningún error en el programa fuente, se enviara un mensaje en la siguiente pantalla.

ICONO COMPILE

Page 4: Tema 4.2 Estructura de Un Programa

En el caso de errores saldrá el tipo de error y la línea en la cual se encuentra el error.

4.-Creando una Aplicación.Una vez salvado el programa, es necesario crear una aplicación que sirve de vinculo para que trabaje el robot, valla a la ventana del menú aplicación Selecciona new app, póngale el mismo nombre del archivo fuente

Verifique en el Menú aplicación setup que todas las líneas deben de estar llenas con el mismo nombre como se ve en la siguiente pantalla.

Page 5: Tema 4.2 Estructura de Un Programa

5.-Cargando el programa en el controladorEl programa una vez compilado se queda en la PC por lo que es necesario mandar el archivo objeto al controlador, para ello es necesario realizar el procedimiento siguiente:Haga un clic con el Mouse en el icono send app, o Desde el menú application, seleccionar send, o desde la ventana del editor, haciendo clic en el botón derecho del Mouse se despliega un menú donde se selecciona send.

Page 6: Tema 4.2 Estructura de Un Programa

6.- Una vez que se tiene el programa, que este ha sido compilado y enviado al controlador y que las posiciones han sido verificadas o grabadas, se procede a ejecutar el programa de la siguiente forma:

Desde el teach pendant, se selecciona la aplicación, y se corre el programa con la opción run confirmando la ejecución.

Desde la PC. Dentro del Robcomm3 y una vez que aparece el prompt se selecciona la aplicación que fue grabada, cuando aparece la aplicación se teclea run y se le da enter ejecutándose asi el programa.Cuando el proceso de Crear programa fuente, Compilar y Crear aplicación se ha terminado se deben de tener tres archivos en el directorio de trabajo, que son los siguientes:nombre.r3 Programa fuentenombre.app Aplicación (archivo de enlace)nombre Archivo Objeto (aplicación de terminal)

4.3.-COMANDOS QUE SOLO FUNCIONAN EN UN PROGRAMAHay un conjunto de comandos que solo funcionan dentro de un programa, la tabla siguiente muestra algunos de ellos.

SINTAXIS SIGNIFICADOdelay(#) Espera el tiempo especificado por # en milisegundosfinish() Le da fin la instrucción anterior antes de ejecutar la siguientePrintf() Manda a Imprimir en la pantall

Programa No 2Construya un programa que realiza movimientos de los ejes del robot, como el que se da a continuación , ejecute primero los movimientos antes que lo haga el programa.mainready()speed(40)joint(1,-170) ;; Moverse Eje # 1 170 grados en el sentido de las manecillasfinish()delay(3000) ;; Espera dos segundosjoint(1,340)finish()delay(3000) ;; Espera dos segundos

Page 7: Tema 4.2 Estructura de Un Programa

joint(1,-170) ;; Regresa a la posición Inicialfinish()delay(3000)joint(2,-90) ;; Moverse Eje # 2 finish()delay(3000) ;; Espera dos segundosjoint(2,180)finish()delay(3000)joint(2,-90)finish()delay(3000)joint(3,-24) ;; Moverse Eje # 3 finish()delay(3000)joint(3,204)finish()delay(3000)joint(3,-180)finish()delay(3000)joint(4,-180) ;; Moverse Eje # 4 finish()delay(3000)joint(4,360)finish()delay(3000)joint(4,-180)finish()delay(3000)joint(5,-104) ;; Moverse Eje # 5 finish()delay(3000) joint(5,208)finish()delay(3000)joint(5,-104)finish()delay(3000)joint(6,-180) ;; Moverse Eje # 5 finish() delay(3000)joint(6,360)finish()delay(3000)joint (6,-180)finish()delay(3000)

Page 8: Tema 4.2 Estructura de Un Programa

end main

4.4.-LAS VARIABLES EN RAPL3En el Rapl3 los nombres de las variables pueden ser de cualquier longitud, sin embrago los primeros 32 caracteres son los importantes. Números y guión bajo pueden ser utilizados como primer carácter en un nombre.

Los tipos de variables se muestran en la siguiente tabla:

Símbolo TipoNinguno Entero% Flotante$ CadenaGuión bajo (_) Cloc(cartesiano)# Ploc(punto de precisión)

Esto es importante cuando queremos asignar desde la terminal un tipo de variable deseada.

Asignación de variables

Las variables que son asignadas dentro del programa Rapl3, pueden ser asignadas ya sea en la declaración de línea, o en cualquier parte del programa. La asignación de una variable ocurre cuando la variables es cargada con un valor actual.

Las variables del tipo teachable, le pueden ser asignados valores en el prompt de ash, usando el comando set. Para asignar los valores a las variables se usa el operador ”=”, ejemplo:

Prueba> set A_VALOR=5

Rapl3 soporta la asignación de valores en codigo ASCII para caracteres, usando el carácter actual encerado entre comillas simples, ejemplo:

Char =”A”

Variables del tipo teachable

Las variables de este tipo son aquellas que son declaradas en el programa Rapl3 y corresponden a posiciones del robot. Para crear este tipo de variables, se debe de usar la palabra teachable antes de la variable que se está declarando. La asignación de la variable va a ser suministrada por el usuario desde la terminal antes de correr el programa.

Las variables teachable son declaradas al comienzo del programa principal o bien en un subprograma. Esta variable es global por naturaleza, todos los subprogramas y el programa

Page 9: Tema 4.2 Estructura de Un Programa

principal de cualquier archivo van a compartir el valor de esas variables Este tipo de variables no pueden ser declaradas y a la vez asignarles un valor o inicializarlas.

Las variables teachables pueden ser de dos tipos, cloc ( cartesiana ) o ploc( precisión), si no se declara el tipo por default es cloc.

Otra manera de asignar valores a variables que no cambiarán su valor, y para una mejor comprensión al utilizarlas, es darle valores predeterminados a estas variables definiéndolas desde el comienzo de los programas con la herramienta (.include), como se muestra a continuación..define alta 100.define media 40Con esto definido en un programa se puede enviar las ordenes siguientes.speed(alta)move(a)speed(baja)move(b)

4.5.-ESTRUCTURA PROGRAMATICA IF –ELSE-ENDIF

La sintaxis de esta estructura funciona de la siguiente forma:

If CONDICION...........Comandos...................................else...........Comandos...........end if

Nota: Todas las condiciones de igualdad en cualquier estructura programatica llevan un doble signo igual.

Si se cumple la CONDICION, se ejecutan los comandos de abajo hasta antes del else, y luego se sigue con los que estén debajo del end if , en caso de que la condición no se cumpla, se ejecutan los comandos debajo del else y luego se sigue con los que estén debajo del end if. El elemento else, no es necesario si no se va a ejecutar ningún comando en el caso de que no se cumpla la condición. También es posible utilizar elseif condición, tantos como se deseen.

4.6 CICLOS CONDICIONALESUna de las herramientas mas poderosas en la programación de cualquier lenguaje, son los ciclos, que permiten realizar un conjunto de instrucciones las veces que se desee.Ciclo Do untilLa sintaxis de esta estructura es:do...........Instrucciones

Page 10: Tema 4.2 Estructura de Un Programa

...........

............

............Until CONDICIONInicia con la palabra do y se ejecutan las instrucciones que están después del do y hasta antes del until, todas las veces que sea hasta que la condición sea verdadera, pero, si se llega por primera vez al ciclo do y la condición es verdadera, solo se ejecuta el ciclo de ordenes en una sola ocasión, veamos el siguiente ejemplo:

Programa No 3

teachable cloc a,b ;; Declaración de variablesint c=1 ;; Declaración de una variable entera

mainready()

do

if c >= 3 move(a)

finish() delay(3000) else move(b) ;; Se moverá al punto b para c= 1 ó c = 2 finish() delay(3000) end if

c=c+1 ready()

finish() delay(3000)

until c>5

end main

Imprimir en pantalla

Imprimir mensajes en la pantalla de la PC, es útil para depurar programas, enviar avisos, y poder saber que esta haciendo el programa en los momentos que uno desee.

El comando para realizar esto es printf

Page 11: Tema 4.2 Estructura de Un Programa

La expresión que se quiere que salga en pantalla se debe de encerrar entre comillas, como la siguiente:

Printf(“el robot esta trabajando”) Se puede utilizar un salto de línea añadiendo un \n, ejemploInt a =12Printf(“ el valor de a es {}\n”,a);;esta línea se imprimirá en la pantalla como:

;; el valor de a es 12

Programa No 4Mainint iteachable cloc a,bgrip_open()speed(80)i = 1doprintf("ENTRANDO AL DO UNTIL I = {}\n",i) delay(3000)

speed(30)move(a)

printf("MOVIÉNDOSE AL PUNTO a{}\n")finish()delay(3000)

grip_close()speed(10)move(b)

printf("MOVIÉNDOSE AL PUNTO b{}\n")delay(3000)finish()

grip_open()i++if i==2 break ;;Instrucción para Salir inmediatamente del cicloend if

until i> 3

end main

Ciclo while ..... end whileLa sintaxis de esta estructura es :while CONDICION........instrucciones

Page 12: Tema 4.2 Estructura de Un Programa

........

........

end while

Este ciclo se repetirá todas las veces que sean necesarias mientras la condición sea verdadera, si se llega al while por primera vez y la condición es falsa, no se ejecutan ninguna de las instrucciones que están dentro, se empiezan a ejecutar las que estén después del end while; Como se verá en el siguiente ejemplo:

Programa No 5 teachable cloc a,b int c = 0

.define alta 50

.define media 30 .define baja 10

main speed(baja) while c<5

c = c+1 ;; Se puede emplear c++printf(“Iniciando el Ciclo C = {}\n”,c)ready()if c== 2speed(media)end ifif c== 4speed(alta)end ifmove (a)printf(“moviéndose al punto a, {}\n”)

move (b)printf(“moviéndose al punto b, {}\n” ,c)

end while ready()end main

Variables Dimensionadas:

Page 13: Tema 4.2 Estructura de Un Programa

En muchas ocasiones se requiere que una o más variables difieran solamente por el subíndice para una mejor manipulación de ellas, y por la necesidad de no estar definiendo tantas variables, estas variables dimensionales, se definen de la siguiente manera:

teachable cloc [5] aEste tipo de variables es común asociarlas con los ciclos for que veremos a continuación.

CICLO for VARIABLE = #1 to #2 ....... end forLa sintaxis de esta estructura es la siguiente:

for VARIABLE = #1 to #2........instrucciones................end forEste ciclo se repetirá tantas veces como la cantidad que hay de #1 a #2, esto es la variable toma el valor de #1 y se ejecutan las instrucciones dentro del for. Y automáticamente se va incrementando la variable de uno en uno y en cada caso se ejecuta el ciclo, hasta que la VARIABLE llegue a #2, se sale del ciclo y se continua con las instrucciones que estén después del end for.

Programa No 6teachable cloc [4] ateachable cloc bint c

main

ready()

for c = 0 to 3

printf(“Moviéndose al punto a[{}]\n”,c)move (a[c])finish()delay(2000)grip_open()printf(“moviéndose al punto b, {}\n”)move (b)finish()delay(2000)grip_close()

end forready()

Page 14: Tema 4.2 Estructura de Un Programa

end main

4.7 CICLOS INFINITOSEste tipo de ciclos no tienen forma en su estructura principal, alguna forma para saber cuando terminar, esto hace que se ejecuten indefinidamente hasta que el programa sea abortado(CTRL Z), o paro de emergencia, o en su defecto ayudarse con la estructura if para romper el ciclo con break

CICLO etiqueta goto etiquetaEste ciclo no soporta la instrucción break, solo se puede salir de el externamente La sintaxis de esta estructura es la siguiente:

Etiqueta::.............. Instrucciones........................................................goto etiquetaEl ciclo empieza en etiqueta, ejecutándose todas las instrucciones subsecuentes, llega al goto etiqueta y retorna debajo de etiqueta para iniciar un nuevo ciclo, a menos que haya un paro de emergencia, o que se aborte el programa.Programa No 7

teachable cloc [3] amain

ready()speed(50)regreso1:: move (a[0])move (a[1])move (a[2])goto regreso1

end main

Nota: se puede abortar el Programa con Ctrl Z.

Page 15: Tema 4.2 Estructura de Un Programa

CICLO loop end loopEste tipo de ciclos infinitos, fácilmente puede utilizarse como un ciclo condicional, rompiéndolo mediante una condición que puede ser de la estructura if-end if, como veremos mas adelante, la sintaxis de esta estructura es la siguiente:Loop.......Instrucciones..............end loopInicia con el loop ejecutándose todas las instrucciones hasta antes del end loop, así indefinidamente a menos que sea forzado a terminar

Programa No 8teachable cloc a,b,c,d.define alta 80.define media 40.define baja 20

main ready() int e =0 loop speed(baja) move (a) speed(media) move (b) speed(alta) move (c) delay(3000) e = e+1 if e > 5 break end if end loop move(d) delay(5000) ready()end main

Page 16: Tema 4.2 Estructura de Un Programa

4.8.-ESTRUCTURA case variable of #Este tipo de estructura se usa en lugar de muchas condiciones del tipo if_endif y con un mayor potencial , la sintaxis es la siguiente:

Case Variableof: 1..........Instruccionesof: 2,3............of 7 to 9:..........of 10 to 12, 13 to 16, 19:..........else..........end caseLas instrucciones que se ejecutaran dependerán del valor de la variable, y en cada caso solo una de ellas, debajo de else estarán las instrucciones que se ejecutaran para todos los casos no contemplados en los case.Programa No 9teachable cloc a,b,c,dmain int e=1string[23] mensaje1mensaje1 = "El valor de e = {},\n"ready()printf("Los case son 16 \n")loopdelay(3000)case eof 1:printf("al punto a ")printf(mensaje1,e)move(a)finish()delay(2000)ready()of 2,3,5:printf("al punto b ")printf(mensaje1,e)move(b)

Page 17: Tema 4.2 Estructura de Un Programa

finish()delay(2000)ready()of 6 to 8:move(c)finish()delay(2000)ready()printf("al punto c de 6 a 8 e ={}\n",e)of 9 to 10, 12 to 14, 16:move(d)finish()delay(2000)ready()printf("al punto d de 9,10 12,13,14,16, e ={}\n",e)elseprintf("Nada ")printf(mensaje1,e)delay(2000)end case

e = e+1if e >17breakend ifend loopready()finish()printf("Fin del programa.....Adios\n")end main

4.9.-SUBRUTINAS

Otra característica especial de este tipo de lenguajes, es la compilación por módulos o separada, lo que permite que se puedan definir subrutinas separadas del programa principal y utilizarse llamándolas cuando sea necesario; estas subrutinas por lo general contienen partes de un programa o secuencia fijos, es decir, que no varían aunque la secuencia de su utilización así como otras acciones se puedan controlar desde el programa principal.

Para la utilización de subrutinas en un programa, es necesario incluirlas en las declaraciones que va a usar el programa principal por medio de la función .include tal como se muestra a continuación; y el formato de los archivos que contengan las subrutinas, no deberán contener la función main, y en vez de esto, tener como encabezado y fin de las subrutinas, las sentencias sub nombre() y end sub respectivamente.

Page 18: Tema 4.2 Estructura de Un Programa

Programa No 10

Cierre aplicación nexo y programa y cree un conjunto nuevo con este listado, que se llame General.r3teachable cloc a,b.include rutina1.r3.include rutina2.r3

main ready() move(a) printf("movió a punto a y espera de 3 según\n") finish() delay(3000) printf("Ejecutando Rutina 1 y espera de 5 según") rutina1() ;; Ejecución de Rutina 1 printf("termina la Rutina 1, se mueve al punto b y espera de 3 seg\n") move(b) finish() delay(3000) printf("ejecutando Rutina2 y espera de 5 seg\n") rutina2() printf("termina la Rutina 2, se mueve a b y espera 3 seg\n") move(b) delay(2000)finish() ready() printf("Termina el programa\n") end main

Abra otro archivo y escriba la siguiente subrutina y sálvela con el nombre de rutina1.r3 teachable cloc c sub rutina1()finish()delay(3000)move(c)printf("se movió al punto b en Rutina1 y espera de 3 seg\n")finish()delay(3000) end sub

Page 19: Tema 4.2 Estructura de Un Programa

De nuevo abra un nuevo editor y escriba la siguiente subrutina y sálvela con el nombre de rutina2.r3

teachable cloc dsub rutina2()finish()delay(3000)move(d)finish()printf("Se movió al punto a en Rutina 2 y espera de 3 seg\n")move(a)delay(3000)finish()end sub

RECOMENDACIONES A LA HORA DE PROGRAMAR:

La mejor forma de programar, es interactuando directamente con el robot e ir asignando las variables aun sin haber realizado el listado del programa; esto permite el ir moviendo el robot con los comandos de terminal o con el “teach pendant” e ir asignando la secuencia de variables que se utilizara en el programa; a su vez y puede ser de forma paralela, el ir creando el listado del programa conforme a los movimientos que se van realizando y a las variables que se van asignando.Desde la pantalla de terminal, cuando se crea una nueva aplicación asigne las nuevas variables directamente al controlador, por medio del comando “new a” (para asignar variables tipo cartesiano se agrega el símbolo de guión bajo “_” , y para variables del tipo de precisión, el símbolo de numero “#” )En la pantalla de terminal, teclee el comando “list”, para observar las variables existentes (observara que las variables aparecen precedidas del símbolo “ * ” , lo que indica que no han sido asignadas posiciones a estas variables) mueva el robot a las posiciones deseadas con los comando joint 1,100, depart, appro y asigne las posiciones a las variables por medio del comando “here”. teclee de nuevo el comando “list” y observe.

CAPITULO V RECONOCIMIENTO DE SEÑALES

DISTRIBUCIÓN FÍSICA DE PUERTOS DE ENTRADAS Y SALIDAS DIGITALES Y CONECTORES.

Page 20: Tema 4.2 Estructura de Un Programa

PUERTO DE ENTRADAS / SALIDAS DIGITALES GPIO

El controlador C500C del robot cuenta con un juego de entradas y salidas digitales, con las cuales poder interactuar en tiempo real con el medio externo y poder monitorear o controlar dispositivos externos; este controlador cuenta con 16 entradas digitales opto aisladas, 4 salidas con contactos de relevador y 12 salidas opto aisladas.

5.1.-CONSIDERACIONES EN EL DISEÑO DE CIRCUITOS

Si se va a usar el puerto GPIO, se deben tener en cuenta las siguientes consideraciones.

Para los robots A255 y A465, se puede usar tanto la fuente interna de 24 VDC que provee el equipo o una externa que conecte al sistema

La capacidad de corriente que puede manejar la fuente interna es de máximo 1 Ampere, por lo que si la aplicación que se va a manejar es de mayor capacidad, use una fuente externa.

Las salidas opto aisladas son de baja capacidad en corriente, manejan hasta 50 mA cada una de ellas.Las salidas relevadas manejan hasta 3 Ampers cada una. Todas las salidas de relevador, están conectadas a un punto en común, y están protegidas por un relevador que se encuentra en el panel frontal.PRECAUCION.- Apague el interruptor principal del controlador antes de conectar cualquier alambre al controlador.

Los diagramas del patillaje correspondientes se muestran en las páginas siguientes:

REALICE LA SIGUIENTE PRACTICA

Aplique el comando shutdown now a la pantalla de terminal para apagar el robot, Cierre todas las aplicaciones y el programa robcomm3 y apague el controlador.Del conector DD-50, conecte las terminales 1 y 3, o bien la 2 y 4, para utilizar la fuente interna de 24 volts de DC; también conecte las terminales 47 a la 49, o bien la 48 a la 50, para cerrar el lazo a tierra de los circuitos internos del GPIOConecte el cable tipo listón al conector DD-50 y por el otro extremo al controlador del robotEncienda el controlador y abra la pantalla de terminal del robcomm3, abra cualquier aplicación existente (ash xxxxx) de la pantalla terminal Introduzca el comando input 1, haga lo mismo con las 16 entradas y observe.Con mucho cuidado, conecte un alambre largo a la terminal 49 ó 50 del conector DD-50 y a la terminal 5 del mismo; aplique el comando input 1 y oberve, retírelo de la terminal 5 y vuelva a verificar el estado de la entrada 1 y haga lo mismo con algunas otras entradas.

NOTA: TAL COMO SE OBSERVO, LA SALIDA SE HACE VALIDA (VALOR DE 1) CUANDO SE CONECTA A TIERRA LA ENTRADA CORRESPONDIENTE

Ahora, con la ayuda de un multímetro ajustado para medir voltaje de DC, en la escala que soporte al menos 24 VDC, conecte la terminal positiva del multímetro a la terminal 1 ó 2 del conector DD-

Page 21: Tema 4.2 Estructura de Un Programa

50, y la negativa a la terminal 21, observe la lectura del multímetro; ahora, aplique a la pantalla de terminal el comando output 1,1 (formato: output #salida, valor lógico) y observe; ahora el comando output 1,0 y note el cambio de estados de aprox. cero Volts a aprox. 24 VDC que es el voltaje de la fuente interna del controlador. Haga lo mismo con algunas salidas de la 2 a la 12.

NOTA: CUANDO SE USEN LAS SALIDAS DIGITALES, DE PREFERENCIA UTILICE YA SEA LA FUENTE INTERNA O UNA EXTERNA, DE MAXIMO 24 VDC Y LAS CARGAS O DISPOSITIVOS A ENCENDER (TAL COMO UN RELEVADOR) DEL MISMO VALOR DE VOLTAJE.

Para el caso de las salidas de la 13 a la 16, existe la diferencia de que estas son contactos de relevador, con un punto en comun. Para verificar, ajuste el multímetro para medir resistencia (si tiene la capacidad de tono audible cuando se detecta resistencia cercana a cero, actívela); con mucho cuidado, conecte una de las terminales del multímetro a la terminal 43 ó 44 del conector DD-50, y la otra a la terminal 36 del DD-50; introduzca el comando output 13,1 y observe la lectura del medidor; después de el comando output 13,0 y observe; conecte ahora de la terminal 43 ó 44 a la 35 y repita los dos comandos anteriores.

Con estas herramientas, se pueden realizar programas mas complejos que involucren el uso de entradas y salidas digitales, para poder controlar dispositivos externos, o coordinar acciones determinadas dependientes de esos dispositivos, a ambas cuestiones.

REALICE LA SIGUIENTE PRACTICA

Abra una pantalla de edición de programas nuevos y teclee el siguiente programa:

teachable cloc a,b,c

main

loop

while input(16)==1

printf("activada la entrada 16 y espero selección de entrada\n")delay(5000)finish()

Page 22: Tema 4.2 Estructura de Un Programa

if input(1)==1 move(a) finish()

printf("entrada uno conectada, muevo posición a\n") printf("y activo salida 13 por 5 segundos a\n") output (13,1) delay(5000) output_set (13,0)end if

if input(2)==1 move(b) finish()

printf("entrada dos conectada, muevo posición b\n") printf("y espero a que active la entrada 3\n") while input(3)==0 end while

printf("entrada 3 pulsada, continuo con el programa\n")end if

if input(4)==1 move(c) finish()

printf("entrada cuatro conectada, muevo posición c\n")end ifif input(15)==1

printf("entrada 15 conectada, termino programa en 5 seg\n") delay(5000) finish() goto finalend if

end while

printf("no esta activada la entrada 16 y espero 5 seg\n")delay(5000)

end loop

final::

printf("fin del curso...... felicidades y buen viaje\n")

end main

Salve el programa, cree la aplicación y el nexo, asigne las tres posiciones y ejecute el programa, siguiendo cuidadosamente el diagrama de conexiones y las instrucciones del instructor, si tiene cualquier duda, no proceda con el paso siguiente hasta estar seguro de lo que va a hacer.

Page 23: Tema 4.2 Estructura de Un Programa

Realice modificaciones y observe