Sunteți pe pagina 1din 15

SECRETARÍA DE EDUCACIÓN PÚBLICA

TECNOLÓGICO NACIONAL DE MÉXICO


INSTITUTO TECNOLÓGICO DE VERACRUZ

ASUNTO:

Arduino como controlador lógico programable


(PLC)

Nombre del Alumno:


Reyes Reyes Kevin N.I.

N° de Control:
E15021089

Asignatura:
Controladores Lógico
Programables
Horario:
Lunes, Miercoles-Viernes
14-15 Hrs

Catedrático
Gómez Rodríguez Javier

H. Veracruz, Ver. a 27 de Mayo de 2019 Ene – Jun 2019

1
INTRODUCCION

El PLC (controlador lógico programable) ha sido y sigue siendo el componente


básico del mundo de la automatización industrial. La aplicación Industrial hizo que
los sistemas PLC fueran muy caros, tanto para comprar como para reparar, y
también debido a las habilidades altamente específicas solicitadas a los
diseñadores de software para extraer los máximos potenciales de los
controladores. Arduino es un tipo de controlador programable universal, aunque es
solo el "núcleo" y, en cualquier caso, se ha construido para aplicaciones generales;
sin embargo, con un poco de hardware externo (esencialmente interfaces capaces
de transferir señales de sensores y a actuadores, reduciendo el EMI que puede
dañar el microcontrolador) y un software apropiado puede convertirse en algo muy
similar a un PLC.

En este trabajo se explicará cómo “convertir” una placa Arduino en un controlador


similar a PLC, programable a través del lenguaje y la lógica de PLC, ayudando a
aquellos que deseen comenzar a estudiar este fascinante mundo sin gastar un
montón de dinero en materiales y capacitación.

Para convertir Arduino en un controlador lógico programable, hay dos enfoques. El


primero es escribir el programa usando el lenguaje KOP (escalera). Para hacer
eso, debemos usar dos aplicaciones más además de Arduino IDE: la primera es
LDmicro que es el editor y compilador de código de escalera (se puede descargar
desde http://cq.cx/dl ); el segundo consiste en una página web que nos ayudará a
crear el código para la biblioteca ladder.h ( http://adam.horcica.cz/tools/ladder-gen
); Para simplificar, consideraremos solo las E/S DIGITAL sin características
especiales.

2
UN EJEMPLO PRACTICO

Como ejemplo para entender cómo aprovechar al máximo el método descrito


anteriormente, se tratará de resolver un problema de automatización del hogar que
se encuentra en la web: automatizar los parasoles eléctricos. Luego se procederá
con una explicación paso a paso del método descrito anteriormente. Brevemente,
se quiere controlar las sombrillas para que, en caso de viento fuerte, se replieguen
automáticamente, mientras se desenrollan solo después de que el viento se haya
calmado. El comportamiento debe ser similar para las diferentes situaciones de
iluminación: enrollarlas durante la noche y desenrollarlas a la luz del día, pero
obviamente las condiciones del viento deben prevalecer sobre la iluminación.

Como una posible solución, podríamos usar un PLC real, pero dada la simplicidad
del algoritmo y el alto costo de ese PLC, usaremos el hardware que se muestra
arriba.

Usaremos dos sensores, el atardecer NO (normalmente abierto) y el viento NO que


se conectarán al shield IO. Además, se tendrá que adaptar y cambiar la
combinación de energía de los motores de las sombrillas para que Arduino pueda
gestionarlos.

Método 1: LDmicro
Antes de escribir el código de escalera
(diagrama de contacto), similar al de la figura,
necesitamos descargar el ejecutable LDmicro
desde el enlace http://cq.cx/ladder.pl . Una vez
descargado y guardado en el escritorio, hacer
doble clic en el icono de LDmicro. Ahora, antes
de continuar con la aplicación del diagrama de
escalera, se tiene que escribir un borrador del
programa que se desee crear.

3
Como el programa será simple y solo se
usará pocas variables, se podrá usar el
enfoque de programación más básico e
inmediato para el PLC: la lógica cableada.
Esta metodología consiste en ecuaciones
booleanas simples que siempre
devolverán como salida (después del
signo igual) un valor que puede ser 0 o 1.
Los únicos operadores utilizados serán
AND (serie), OR (paralelo) y NOT
(negación).

Las variables de entrada y salida en el programa serán las siguientes:

- ENTRADA:

SENSOR DE VIENTO: XSEN_VENTO

LÍMITE DEL INTERRUPTOR DE LÍMITE: XFINE_COR_A

DESMONTAJE DEL INTERRUPTOR DE LÍMITE: XFINE_COR_S

INTERRUPTOR DE TWILIGHT: XIN_CREP

- SALIDA:

RODILLO: YAVVOLG

RODILLO LED: YL_AVV

UNROLLER: YSVOLG

LED UNROLLER: YL_SVO

ESTADO IDO: YL_RIP

4
Tenga en cuenta que los pines de salida de Arduino aún no se han declarado,
mientras que la "x" y la "y" colocadas al comienzo de cada variable representan
respectivamente la entrada y la salida. El software agrega esta letra
automáticamente durante la codificación.

Una vez declaradas las variables,


podemos proceder a escribir las
ecuaciones lógicas, teniendo en
cuenta que el Arduino con el shield lee
todas las entradas como ALTAS (1)
cuando el contacto está abierto y BAJA
(0) cuando el contacto está cerrado:
por lo tanto, debemos negar la lógica
de todas las entradas para garantizar
que se ejecutan correctamente.

Ahora que tenemos las ecuaciones booleanas, podemos volver a LDmicro. Al


presionar la tecla "C" o al hacer clic en el menú "instrucción-> incluir contacto",
obtenemos la inclusión de un contacto abierto. Ahora, sin cambiar nada,
presionando "L" en el teclado (después de colocar el cursor después de Xnew, en
el lado derecho), deberíamos obtener un segmento idéntico al de la figura.

Al mover el cursor debajo de Xnew (utilizando las teclas de flecha del teclado) y
presionar "C", obtendremos un nuevo segmento, siempre llamado Xnew pero en
paralelo con el anterior; ahora, debemos hacer clic en Nuevo y colocar el cursor
verticalmente a la izquierda (antes) de la salida, debemos presionar "C" dos veces.
Al hacer esto, hemos agregado dos contactos más, en serie con los dos (paralelos)
anteriores. Para finalizar, solo tenemos que hacer clic en Ynew (pero esta vez
posicionando el cursor debajo del símbolo de salida) y luego presionar "L": por lo
tanto, hemos agregado otra salida en paralelo al Ynew existente.

Ahora necesitamos modificar todos los nombres de contacto de acuerdo con los
utilizados en las ecuaciones. Para hacer esto, simplemente hacemos doble clic en
el primer contacto nuevo que creamos, luego establecemos el nombre y el tipo de

5
contacto en la ventana emergente. Asignaremos el nombre "SEN_VIENTO" y
seleccionaremos "PIN DE ENTRADA" y "| / | NORMALMENTE CERRADO”(NC).
Recuerde que el software asigna automáticamente la letra inicial "X" o "Y" si la
variable significa ENTRADA o SALIDA, respectivamente.

Todo el procedimiento se repetirá para todos los contactos y ecuaciones restantes.

6
Para insertar un nuevo segmento, haga clic en "Editar-> Insertar segmento
detrás". Después de haber completado la configuración, en el menú
“configuración” seleccionaremos “Microcontrolador-> Código ANSI C”, luego
podremos compilarlo seleccionando desde el menú “Compilar-> Compilar
como”.

Elegimos guardar el archivo en "Escritorio" con esta configuración:

 Guardar como: Todos los archivos


 Nombre de archivo: ladder.cpp

Después de guardar el archivo, una ventana emergente nos avisará para configurar
el mapa de direcciones de E / S: hacemos clic en "Aceptar", guardamos nuestro
proyecto LDmicro (menú Archivo-> guardar como) siempre en el escritorio y lo
nombramos como "ladder.ld" .

Entonces necesitamos realizar otro paso. Abrir el archivo ladder.cpp con el bloc de
notas, seleccionar todo el texto y copiarlo y pegarlo en el sitio web
http://adam.horcica.cz/tools/ladder-gen . Después de hacer clic en "Generar",
obtendremos un nuevo código. Copiar y pegar este código en un nuevo archivo de
bloc de notas, guardándolo con los siguientes parámetros:

 Guardar como: Todos los archivos


 Nombre de archivo: ladder.h

En este ejercicio, se ha elegido establecer la configuración del pin de la siguiente


manera:

pinMode (2, ENTRADA);

pinMode (3, ENTRADA);

pinMode (4, ENTRADA);

7
pinMode (5, ENTRADA);

pinMode (8, SALIDA);

pinMode (9, SALIDA);

pinMode (10, SALIDA);

pinMode (11, SALIDA);

pinMode (12, SALIDA);

Luego, podemos modificar la biblioteca "ladder.h" con esta configuración de


asignación de pines, como se muestra en "Listado de código 1"

8
9
Una vez que haya cambiado la biblioteca
como se muestra, guardamos los
cambios sin modificar ni el nombre ni la
extensión del archivo, manteniéndolo
siempre en el "Escritorio".

En este momento necesitamos crear el


archivo "pinmap.ini". En este archivo,
tenemos que declarar los nombres de
nuestras variables y los respectivos
pines. Este paso también se puede omitir,
pero no garantizamos que el programa
funcione correctamente.

Los cambios en este archivo están estrechamente relacionados con el proyecto y


deben ser coherentes con el código ladder.h ( Listado 2 ).

Ahora podemos mover nuestros cuatro archivos:

1. "ladder.ld"
2. "ladder.cpp"
3. "ladder.h"
4. "pinmap.ini"

10
a una sola carpeta llamada "ladder". Luego mueva esta carpeta a (W7) C: \
programmiX86 \ Arduino \ bibliotecas (o para ediciones anteriores de Windows (XP)
a C: \ Archivos de programa \ Arduino \ bibliotecas).

Abra o reinicie el IDE de Arduino y escriba el siguiente código (NOTA: no está


diseñado para usar temporizadores u otras funciones especiales).

Desde el menú "SKETCH", seleccionamos


"importar biblioteca" y seleccionamos
"ladder". Ahora, escriba el siguiente código,
que es válido para todos los proyectos
similares a este:

Ahora, haga clic en la "verification check" del código y espere hasta que se compile
el boceto. Deberíamos obtener un resultado positivo, si no, vuelva a seguir las
instrucciones anteriores de manera sistemática.

Una vez finalizada la compilación, puede hacer clic en el icono lateral, para
transferir nuestro programa a Arduino; espere hasta que esté cargado y se ha
logrado convertir Arduino en un controlador muy similar a un PLC rival. Ahora solo
tiene que conectar su sistema, respetando la lógica que se ha establecido para las
entradas y salidas.

Atención: cuando se dese crear un nuevo proyecto, antes de importar la nueva


carpeta (cuyo nombre siempre debe ser "ladder" y contendrá los archivos con el
mismo nombre que antes), debe eliminar del directorio la carpeta del proyecto
anterior. En caso de que quiera conservarlo, simplemente cámbiele el nombre y
guárdelo en otro directorio. Si desea restaurarlo, simplemente llámelo "ladder" y
repita el proceso a la inversa.

11
Metodología 2: plcLIB

Para seguir este enfoque, se debe descargar la biblioteca debidamente modificada


del sitio web

La biblioteca plcLIB que ha sido modificada para interconectar de manera óptima


el shield IO con Arduino UNO, está dedicada a aquellos que desean comenzar a
estudiar el mundo de la automatización sin tener que "hackear" el código también.

Simplemente descargue la biblioteca plcLIB y, una vez descomprimida, pegue la


carpeta en "C: \ programmiX86 \ arduino \libraries" para Windows 7 o en "C: \
program files \ arduino \libraries" para versiones anteriores de Windows (XP).

Incluso en este caso, nuestra discusión se centrará principalmente en la lógica


digital sin utilizar funciones especiales, incluso si, con respecto al ejemplo anterior
de LDmicro, en este caso podríamos aprovechar fácilmente ciertas características
como los temporizadores.

Una vez que haya importado nuestra biblioteca como se describe anteriormente,
no tendremos que cambiarla, independientemente del proyecto que vamos a
realizar. Solo edite el código teniendo en cuenta algunos factores:

Las E / S digitales deben seguir el nombre que se muestra en la tabla.

12
Al reutilizar las ecuaciones booleanas enumeradas anteriormente, escribimos
nuestro código en el IDE de Arduino: considerándolas como ecuaciones reales que
respetan el orden de los operadores (calculando los paréntesis primeros y luego el
resto).

Una vez que se haya editado este código, simplemente haga clic en Verificar y
espere a que el IDE compile el boceto: debemos obtener un resultado positivo, de
lo contrario, revise las instrucciones paso a paso. Una vez que se complete la
compilación, haga clic en "Cargar" para programar el Arduino. Espere hasta que
se complete la carga y habrá convertido su Arduino a PLC.

Advertencia: Esta biblioteca ha sido modificada y ajustada para aprovechar la E /


S digital Arduino UNO. Además, para un nuevo proyecto, solo debe cambiar el
código incluido en el bucle nulo () {...}, manteniendo sin cambios la parte anterior.
Puede guardar su croquis sin cambiar la biblioteca: una operación muy ventajosa
desde un punto de vista práctico y que ahorra tiempo con respecto al ejemplo de
LDmicro. Con este método, no puede usar la GUI "LADDER" pero puede explotar
completamente la lógica de plc, con un ahorro considerable de tiempo y
reduciendo el riesgo de errores de compilación o desajustes de código sin la

13
necesidad de cambiar a otro software. De hecho, un buen programador es alguien
que puede crear un buen producto independientemente del SDK o GUI que esté
utilizando: lo importante es que la lógica del algoritmo es siempre la misma.

Tenga en cuenta que la asignación de pines de la biblioteca se ha modificado para


interactuar con el shield IO y Arduino UNO. Las nociones tomadas son válidas
solo si utilizó la biblioteca original que se encuentra en el enlace a continuación
para que todas las funciones especiales estén disponibles y se expliquen. Nuestra
biblioteca se ha adaptado para el escudo IO , por lo que algunas de las
características que puede encontrar en el enlace a continuación pueden no
funcionar correctamente debido a la adaptación realizada, y no garantizamos el
funcionamiento correcto de todas las funciones mencionadas en "electrónica". Sin
embargo, garantizamos que la función timerOn funciona bien (lo probamos con
éxito). Si desea probar todas las otras funciones, puede descargar la biblioteca
original y seguir las instrucciones paso a paso del sitio web vinculado.

Aquí un ejemplo del uso de temporizadores.

CONCLUSIONES

Se ha simulado el comportamiento de un autómata mediante una placa Arduino.


Se puede escribir un archivo de texto utilizando programación en AWL (lista de
instrucciones), para posteriormente, ejecutando un compilador conseguir la
traducción a un programa equivalente en lenguaje Arduino. Dicha traducción
contendrá todas las variables y funciones para que el programa resultante realice
el mismo cometido que un PLC.

Se ha construido una librería para Arduino que contiene todas las funciones
necesarias para adaptar cada instrucción de AWL a lenguaje de Arduino y que el
programa se comporte de la misma forma que un autómata. Dentro del cual se han
llevado a cabo con las instrucciones más representativas y comunes a la hora de
programar un autómata.

De esta forma, una persona externa no tiene por qué tener conocimientos sobre
Arduino ni de su programación. Para usar el dispositivo de bajo coste, como es un
Arduino, para tareas de automática, tan sólo debe saber cómo programar en AWL.

14
Se ha hecho una programación estructurada a base de diccionarios, con los que
se lee línea a línea el archivo de texto de entrada y va escribiendo en el de salida.

REFERENCIAS
https://www.open-electronics.org/arduino-as-a-programmable-logic-controller-plc/
http://electronics4dogs.blogspot.it/2011/07/ldmicro-and-arduino.html

15

S-ar putea să vă placă și