Sei sulla pagina 1di 184

Programación de la Tarjeta

Arduino con Diagramas de


Escalera utilizando
MikroPLAN
Versión 2018R5
BIOS: PLCmDuino UNO v4.60, PLCmDuino MEGA v1.20

Incluye Adquisición y Señalización Digital con


Arduino desde STEP7 MicroWin, FluidSIM y
LabVIEW

Jorge García Aguirre


2

ÍNDICE

CAPÍTULO 1. INTRODUCCIÓN AL MANEJO DE MikroPLAN 6


1.1 DESCRIPCIÓN DEL SOFTWARE 6
1.2 LO QUE HAY DE NUEVO EN ESTA VERSIÓN 8
1.2.1 Historial 9
1.3 INSTALACIÓN DEL PROGRAMA 10
1.4 INSTALACIÓN DEL BIOS PLCmDuino EN LA TARJETA Arduino 12
1.5 DETECCIÓN DEL BIOS DESDE MikroPLAN 16
1.6 PLCmDuino EN MODO DE EVALUACIÓN 20
1.7 GENERACIÓN DE LA SOLICITUD DE LICENCIA DE ACTIVACIÓN
DE PLCmDuino 20
1.7.1 Solicitud de licencia de activación de primera vez 21
1.7.2 Recepción e instalación del archivo de licencias 25
1.7.3 Solicitud de licencia portátil 28
1.7.4 Reprogramación de Arduino con su IDE original 33
1.8 PROGRAMACIÓN DE PLCmDuino 33
1.8.1 Captura de una red de arranque y paro 33
1.8.2 Asignación de entradas y salidas 37
1.8.3 Guardado del programa 41
1.8.4 Simulación del programa en código AWL 43
1.8.5 Simulación del programa en KOP 47
1.8.6 Circuito de prueba con la tarjeta Arduino para el programa
de arranque y paro 49
1.8.7 Carga del programa en la tarjeta Arduino 50
1.8.8 Emulación de código AWL y de diagramas KOP 52
1.8.9 Paro del programa 52
1.8.10 Arranque del programa 53
1.8.11 Borrado del programa 54
1.8.12 Paro forzado al arranque 56
1.9 CONEXIÓN DE MikroPLAN Y PLCmDuino VÍA BLUETOOTH 58
1.9.1 Emparejamiento de dispositivos Bluetooth 61

CAPÍTULO 2. CARACTERÍSTICAS DE PLCmDuino 66


2.1 MARCAS ESPECIALES 66
2.1.1 Marca de ejecución continua 66

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
3

2.1.2 Marca de primer ciclo 66


2.1.3 Marca de reloj de 1 minuto 67
2.1.4 Marca de reloj de 1 segundo 67
2.1.5 Marca de conmutación de ciclo 67
2.2 REGISTROS IMAGEN DE LAS ENTRADAS 67
2.3 REGISTROS IMAGEN DE LAS SALIDAS 67
2.4 REGISTROS EN MEMORIA 68
2.5 CONTADORES 68
2.6 TEMPORIZADORES 68
2.7 PILA 68
2.8 JUEGO DE INSTRUCCIONES AWL 68

CAPÍTULO 3. PLCmDuino Y MobilePorts 71


3.1 INSTALACIÓN DE MobilePorts EN UN TELÉFONO MÓVIL 71
3.2 EMPAREJAMIENTO DEL MÓDULO BLUETOOTH CON EL MÓVIL 75
3.3 CONTROL DEL PROGRAMA EN PLCmDuino DESDE MobilePorts 76
3.3.1 Conexión de MobilePorts con PLCmDuino 76
3.3.2 Arranque, paro y estado de un programa desde MobilePorts 79

CAPÍTULO 4. EJEMPLOS DE APLICACIONES CON LÓGICA


PROGRAMABLE 84
4.1 CONTROLADOR DE NIVEL DE AGUA 84
4.1.1 Descripción de la acción de control 84
4.1.2 Falla en el sensor de fondo 87
4.1.3 Falla por falta de paso de agua 89
4.1.4 Falla por exceso de tiempo en el llenado 91
4.2 SEMÁFORO 93

CAPÍTULO 5. CONTROL DE MOVIMIENTO 97


5.1 CARACTERÍSTICAS DE CONTROL DE MOVIMIENTO CON PLCmDuino 97
5.2 ACCIONAMIENTO DE MOTORES A PASOS 98
5.3 ACCIONAMIENTO DE SERVOMOTORES 101
5.4 ACCIONAMIENTO DE MOTORES A PASOS Y SERVOS 103

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
4

CAPÍTULO 6. PLCmDuino Y STEP7 MicroWin 106


6.1 EJEMPLO DE SIMULACIÓN/EMULACIÓN 106

CAPÍTULO 7. PLCmDuino Y FluidSIM 120


7.1 PREPARACIÓN DE FluidSIM PARA LA COMUNICACIÓN CON MikroPLAN 121
7.2 ADQUISICIÓN DE DATOS Y SEÑALIZACIÓN CON PLCmDuino DESDE
FluidSIM 123
7.2.1 Preparación de FluidSIM como maestro 123
7.2.2 Preparación de PLCmDuino como esclavo 127
7.2.3 Activación de MikroPLAN como interfaz de comunicación 128
7.3 CONTROL DE PROTOTIPOS VIRTUALES EN FluidSIM DESDE PLCmDuino 134
7.3.1 Preparación de FluidSIM como esclavo 134
7.3.2 Preparación de PLCmDuino como maestro 135
7.3.3 Activación de MikroPLAN como interfaz de comunicación 138
7.4 CONTROL DE PROTOTIPOS VIRTUALES EN FluidSIM DESDE MikroPLAN 142
7.4.1 Preparación de FluidSIM como esclavo 142
7.4.2 Activación de MikroPLAN como maestro 142

CAPÍTULO 8. PLCmDuino y LabVIEW 147


8.1 INSTALACIÓN DE LA PALETA PLCmDuino DACQS 147
8.2 ACCESO A PLCmDuino DESDE LabVIEW 151
8.2.1 Corrida del instrumento virtual 158
8.3 ESCRITURA DE UN BIT A UN PUERTO DE SALIDA 159
8.4 ESCRITURA DE UN BYTE A UN PUERTO DE SALIDA 162
8.5 ESCRITURA DE UNA PALABRA A UN PUERTO DE SALIDA 164
8.6 LECTURA DE UN BIT DE UN PUERTO DE ENTRADA 165
8.7 LECTURA DE UN BYTE DE UN PUERTO DE ENTRADA 167
8.8 LECTURA DE UNA PALABRA DE UN PUERTO DE ENTRADA 168
8.9 LECTURA DE UN CANAL ANALÓGICO 170

CAPÍTULO 9. Control de un LCD 172


9.1 CONEXIÓN DEL LCD 172
9.2 BLOQUES DE CONTROL 173
9.3 EJEMPLOS DE APLICACIÓN 175
9.3.1 Activación del LCD y envío de mensajes 175
9.3.2 Escritura del valor de un registro en el LCD 177

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
5

CAPÍTULO 10. PLCmDuino sin Arduino 180

APÉNDICE 1. Hoja de datos del LCD 16x2 183

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
6

CAPÍTULO 1

INTRODUCCIÓN AL MANEJO DE
MikroPLAN

1.1 DESCRIPCIÓN DEL SOFTWARE


MikroPLAN es una aplicación de 32 bits para Windows™ que permite al usuario
programar a la tarjeta Arduino UNO o MEGA 2560 en dos tipos de lenguajes:
- KOP (kontaktplan – esquema de contactos) también conocido como lenguaje de
escalera (ladder)
- AWL (Anweisungsliste – Lista de Instrucciones)

Una vez que el usuario ha terminado de capturar el esquema de su estrategia de


control de su programa en KOP o AWL, el compilador de MikroPLAN lo traduce a
códigos numéricos (ByteCode) y lo envía al área de memoria no volátil del micro
de la tarjeta. Por el momento, MikroPLAN permite programar las tarjetas Arduino
UNO con el micro ATMEGA328P-PU en su versión DIP y la tarjeta Arduino MEGA
2560 cuyas fotos se muestran en las figura 1.1 y 1.2 respectivamente.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
7

Figura 1.1. Tarjeta Arduino UNO R3

Figura 1.2. Tarjeta Arduino MEGA 2560

Sin embargo, para que MikroPLAN pueda grabar algún programa creado por el
usuario, es indispensable que en el microcontrolador de la tarjeta Arduino se
encuentre cargado un firmware o software embebido denominado BIOS (Basic
Input Output System – Sistema Básico de Entrada / Salida). Gracias a este
programa alojado en la memoria FLASH del micro, es que MikroPLAN puede
transferir los códigos generados por su compilador al micro destino. El BIOS se
encarga entonces de recibir estos datos y grabarlos en la memoria no volátil
disponible del micro. El nombre del BIOS para la tarjeta Arduino se denomina
PLCmDuino.

Tu mismo(a) puedes cargar el BIOS en cualquier tarjeta Arduino (UNO o MEGA


2560) y con MikroPLAN programarla mediante KOP en modo evaluación. Esto
significa que tendrás acceso a todas las características que el firmware te ofrece
pero el programa que cargues solamente se grabará en RAM. Por tanto, al

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
8

desenergizar la tarjeta, se perderá.

Para eliminar esta restricción y hacer que un programa permanezca en su


memoria no volátil, requieres de una licencia de activación. El procedimiento para
solicitarla se describe más adelante en este manual.

A partir de la versión 9.0 de MikroPLAN se incorpora, a la simulación AWL que ya


estaba disponible originalmente, la simulación y emulación de KOP y AWL;
herramientas cuyo propósito son facilitar la depuración de programas. Los modos
de emulación tienen el propósito de interactuar con las entradas y salidas de
PLCmDuino en tiempo real desde la corrida de la estrategia en KOP o AWL en la
PC. Los modos de simulación se pueden utilizar sin restricción alguna, pero los
modos de emulación requieren conectividad con PLCmDuino además de una
licencia válida de activación.

Junto con MikroPLAN y PLCmDuino se incluyen también el software STEPControl


y la aplicación móvil MobilePorts. STEPControl es una aplicación de escritorio que
permite acceder a la tarjeta Arduino (UNO o MEGA 2560) desde el programa
STEP7 MicroWin 5.5 para utilizarlo como hardware de adquisición y señalización
digitales. MobilePorts permite interactuar desde tu móvil con el programa que
hayas cargado en tu Arduino con MikroPLAN mediante un enlace Bluetooth

1.2 LO QUE HAY DE NUEVO EN ESTA VERSIÓN


16/04/2018
Se simplificó la secuencia de carga y detección del BIOS

1.2.1 HISTORIAL
26/03/2018
- Se corrigieron omisiones de máscaras en MikroPLAN para la activación de
puertos tanto en la simulación como en la grabación de los programas en modo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
9

evaluación así como para el acceso de los mismos desde FluidSIM para el
BIOS MEGA 2560

- El BIOS para cada una de sus dos versiones se adaptó para su acceso desde
LabVIEW utilizando las bibliotecas PLGDCOM32 y PLGDCOM64 en sus
versiones de 32 bit y 64 bit respectivamente. El acceso desde LabVIEW es más
rápido en comparación con los bloques VISA de la versión anterior por lo cual
los bloques con estos elementos ya no están soportados. En cambio se
agregaron los SubVIs correspondientes para las bibliotecas mencionadas

18/02/2018
- Se incluye la primera versión del BIOS PLCmDuino para Arduino MEGA

- La configuración de los pines de entrada y salida así como su asignación a los


puertos correspondientes cambió respecto a la manera como se hacía en
versiones anteriores. Ahora los bits del mismo peso en los registros asignados a
los puertos de entrada y salida están asociados físicamente a un mismo pin de
la tarjeta, por lo que al configurarlos como pines de entrada o salida los hace
exclusivos de utilizarlos únicamente o en un registro de entrada (I) o un registro
de salida (Q)

- Se eliminaron los registros “S”, por lo que solamente hay cuatro tipos de
registros: “I”, “Q”, “SM” y “M”. Además se incrementó la cantidad de registros
“M” de 32 a 40

- Para la simulación de los programas se requiere la misma configuración de los


pines como entradas y salidas que se utiliza para cargar los programas en la
tarjeta

- Los temporizadores ya admiten registros para los valores de comparación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
10

- Para cuando MikroPLAN actúa como interfaz entre la comunicación con


FluidSIM como maestro y PLCmDuino como esclavo, ahora el usuario puede
seleccionar en FluidSIM únicamente los puertos que va a utilizar. Hasta 6
puertos de 8 bits para Arduino UNO y 20 puertos para Arduino MEGA 2560.
Esto aumenta la velocidad de comunicación entre ambas aplicaciones al
acceder de forma selectiva a los puertos deseados por el usuario. Esto también
sucede cuando MikroPLAN actúa como interfaz entre PLCmDuino como
maestro y FluidSIM como esclavo. En este caso, se pueden acceder hasta 4
puertos de 8 bits

- La aplicación STEPDuino cambió el nombre a STEPControl debido a que este


programa permitirá realizar también la interfaz entre Arduino y otras
aplicaciones de control y simulación de sistemas automatizados. Por tanto, la
utilización de STEPControl como interfaz entre PLCmDuino y STEP7 MicroWin
es una de entre otras posibles opciones que se irán incluyendo en la aplicación.
En particular, esa opción de interfaz se designa como “STEPDuino”. Si
adquiriste una licencia para STEPDuino, ésta seguirá siendo funcional pero
solamente te permitirá acceder a esa opción

- Se simplificó el control de prototipos virtuales desde PLCmDuino o MikroPLAN y


se reestructuraron los métodos de acceso a FluidSIM y desde PLCmDuino y
MikroPLAN

- Se incluyeron “SubVI’s” para acceso a PLCmDuino desde cualquier versión de


LabVIEW

1.3 INSTALACIÓN DEL PROGRAMA


MikroPLAN y todas las aplicaciones que se describen en este documento se
encuentran en una carpeta comprimida que puedes descargar del blog:

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
11

programaciondearduinoconlenguajedeplc.blogspot.mx

Para su instalación en tu PC sigue los siguientes pasos:

1. Copia el contenido de la carpeta comprimida ProyexDuino.ZIP a la unidad C: de


tu computadora, de tal manera que en el directorio raíz quede la carpeta como:
c:\ProyexDuino

OBSERVACIÓN
El contenido de la carpeta ZIP debe descomprimirse en el directorio raíz de unidad
c: de tal manera que quede como se muestra en la siguiente figura

De lo contrario, MikroPLAN no funcionará adecuadamente o no se ejecutará

2. En la carpeta:
c:\ProyexDuino\Proyectos\PLCmDuino\Programación\Ladder

Ubica el programa MikroPLAN.exe

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
12

Y crea un acceso directo desde el escritorio

OBSERVACIÓN
El funcionamiento del programa MikroPLAN se ha probado para las versiones de
Windows™ XP, Vista, 7, 8, 8.1 y 10

1.4 INSTALACIÓN DEL BIOS PLCmDuino EN LA TARJETA


ARDUINO
Una vez que hayas instalado los “drivers” para acceder a la tarjeta Arduino en tu
computadora, necesitas cargar el BIOS PLCmDuino en tu tarjeta Arduino. Sigue
los siguientes pasos:

1. En la carpeta

c:\ProyexDuino

Ubica y ejecuta el programa

JOGATECHProyex.exe

2. Aparecerá la ventana principal del programa. Después se mostrará una ventana


emergente de presentación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
13

A continuación aparecerá un cuadro de diálogo para que selecciones la versión


de Windows en a que estás trabajando. Después oprime “Aceptar”

3. En el menú principal, selecciona la opción “Firmware”->”Carga …”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
14

4. Aparecerá un cuadro de diálogo. Introduce el número de puerto COM que


Windows haya asignado a tu tarjeta

5. Haz clic en “Firmware” y selecciona la versión a cargar en tu tarjeta. Para


Arduino UNO R3 selecciona “PLCmDuino_UNO_R3”. Para la MEGA 2560
selecciona “PLCmDuino_MEGA_2560”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
15

6. Oprime “Cargar”. Aparecerá otro cuadro de diálogo

Oprime “Sí”. Aparecerá una ventana que te indicará que se está cargando el
BIOS en tu tarjeta

Después aparecerá otra ventana que te indicará que “JOGATECHProyex.exe”


está intentando detectar el BIOS que se cargó

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
16

Si la detección tuvo éxito, aparecerá un cuadro de diálogo que te informará el


nombre del BIOS que se grabó en la tarjeta

7. Oprime “Aceptar”. Los campos “Controlador” y “Versión BIOS” mostrarán la


información que proporciona el BIOS PLCmDuino que cargaste en Arduino

1.5 DETECCIÓN DEL BIOS DESDE MikroPLAN


Una vez cargado el BIOS, comprueba que MikroPLAN puede acceder a él. Para
ello realiza un proceso de detección de la tarjeta

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
17

1. Haz doble clic sobre el icono de MikroPLAN

2. Aparecerá la ventana principal del programa y después un cuadro emergente


de presentación

3. A continuación aparecerá un cuadro de diálogo solicitándote que elijas la


versión de Windows™ bajo la cual está corriendo el programa:

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
18

Por defecto, está enfocada la versión 10 de Windows. Oprime “Aceptar” para


continuar

4. Finalmente aparecerá un cuadro de diálogo semejante al que apareció en la


aplicación “JOGATECHProyex” con el que podrás detectar el BIOS.

5. Introduce el valor del puerto COM. Si vas a utilizar la tarjeta Arduino UNO,
asegúrate que la casilla “Esperar inicialización del BIOS antes de detectar” esté
desactivada. Para el caso de la tarjeta Arduino MEGA, pudiera ser que
requieras activar la casilla si observas que tu tarjeta tiene el chip de
comunicación CH340G. La apariencia de este tipo de tarjeta se muestra a
continuación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
19

Esto es necesario ya que cuando MikroPLAN accede a este tipo de tarjeta, el


BIOS podría reinicializarse y por ello la aplicación debe esperar a que termine
este proceso. Oprime entonces “Detectar”. Si la detección tuvo éxito aparecerá
el cuadro de diálogo

Y PLCmDuino responderá con la información que se muestra abajo

Oprime “Salir” para continuar

OBSERVACIÓN
Cada vez que vayas a cargar un programa en PLCmDuino o realizar cualquier otra
acción que involucre acceder al BIOS, MikroPLAN realiza un procedimiento de
detección. Por tanto, es indispensable que te asegures que el software puede
detectar correctamente el BIOS de acuerdo a la configuración que proporciones en
el cuadro de diálogo de arriba

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
20

1.6 PLCmDuino EN MODO DE EVALUACIÓN


Una vez que hayas detectado con éxito PLCmDuino, puedes programarlo sin
necesidad de utilizar una licencia de activación. En este caso, estarás utilizando
PLCmDuino en modo de evaluación. Todas las funciones de PLCmDuino están
habilitadas en este modo; sin embargo, los programas que cargues se
almacenarán únicamente en la RAM disponible de Arduino. Esto significa que al
desenergizar la tarjeta, el código del programa se perderá. Si deseas programar
PLCmDuino en modo de evaluación ve al apartado “1.8 PROGRAMACIÓN DE
PLCmDuino” ya que el procedimiento que se explica ahí se aplica tanto para
cuando tienes una licencia o cuando trabajas en modo evaluación.

1.7 GENERACIÓN DE LA SOLICITUD DE LICENCIA DE


ACTIVACIÓN DE PLCmDuino
Como ya se había comentado anteriormente, necesitas una licencia de activación
del BIOS PLCmDuino que te permitirá grabar un programa en la memoria no
volátil de tu tarjeta Arduino mediante los lenguajes KOP y AWL desde la o las
computadoras que desees.

Para obtener la licencia, necesitas generar una solicitud de licencia de activación.


Éste es un archivo que se crea desde la aplicación “JOGATECHProyex”. Una vez
que hayas generado la solicitud, deberás enviarla a:

jogatech@hotmail.com

En respuesta, te proporcionaré el precio de la misma y después de confirmar el


depósito de tu pago, te enviaré un archivo que corresponde a la licencia de
activación que solicitaste. Dicho archivo contiene un código de referencia que está
vinculado a un código de preactivación que se graba en la tarjeta Arduino que
aloja el BIOS. Incluye también un sello digital del equipo de cómputo que se utiliza

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
21

para programarlo. Por tanto, la licencia que hayas solicitado te será útil para
programar una sola tarjeta Arduino y únicamente desde el equipo de cómputo que
utilizaste para generar la solicitud la cual tiene dos modalidades:

1. Solicitud de licencia de activación de primera vez. Se requiere cuando vas a


utilizar por primera vez la nueva copia del BIOS PLCmDuino que cargaste en tu
tarjeta Arduino y que vas a programar desde la computadora desde la cual
donde generas la solicitud de licencia. En este proceso, MikroPLAN genera un
código de preactivación y lo graba en la tarjeta Arduino que aloja el BIOS.
Además genera un sello digital para el equipo desde el cual se realiza la
solicitud

2. Solicitud de licencia portátil. Se requiere cuando deseas programar PLCmDuino


en una computadora diferente a la que utilizaste para generar la solicitud de
licencia de primera vez. En este tipo de solicitud, MikroPLAN genera solamente
un sello digital único para el equipo desde el que se realiza la solicitud y no se
graba ni se modifica el código de preactivación que esté presente en tu tarjeta
Arduino

1.7.1 Solicitud de licencia de activación de primera vez


Como ya se había mencionado, esta licencia te permite utilizar PLCmDuino en la
tarjeta Arduino que aloja el BIOS y en la computadora desde la que vas a generar
este tipo de licencia. Para generarla sigue los siguientes pasos:

1. Conecta tu tarjeta Arduino con el BIOS PLCmDuino

2. Corre la aplicación “JOGATECHProyex” y selecciona la opción “Firmware”-


>”Detectar”. El proceso para detectar el BIOS en PLCmDuino desde esta
aplicación es el mismo que hiciste para MikroPLAN. Sigue los pasos 4 y 5 del
apartado 1.5

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
22

3. En el menú principal selecciona la opción “Licencias”->”Solicitar licencia de


activación de primera vez”

4. Aparecerá un cuadro de diálogo que te permitirá seleccionar el producto para el


cual deseas solicitar la licencia

5. Selecciona la opción “PLCmDuino UNO” para solicitar la licencia del BIOS


PLCmDuino para la tarjeta Arduino UNO R3

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
23

OBSERVACIONES
a. La opción “AlarmDuinoSMS MEGA” es una aplicación embebida que se utiliza
para controlar una alarma vecinal vía SMS. Si este proyecto es de tu interés
consulta el documento “Prueba y Activación de AlarmDuino.PDF” ubicado en la
carpeta “c:\ProyexDuino\Proyectos\AlarmDuino\Documentación”

b. La opción “PLCmDuino UNO XT” es la versión extendida de PLCmDuino que te


permitirá realizar aplicaciones de control de movimiento, así como también
acceder a FluidSIM desde Arduino o viceversa

c. La opción “PLCmDuino MEGA” es la versión del BIOS para la tarjeta Arduino


MEGA 2560. Tiene las mismas características que el BIOS “PLCmDuino UNO
XT”

d. Si deseas solicitar la licencia para STEPDuino selecciona la opción


“Aplicaciones para PC”. Sin embargo, antes debes tener una licencia para
PLCmDuino UNO XT o PLCmDuino MEGA

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
24

6. Oprime “Generar”. Aparecerá entonces el siguiente cuadro de diálogo.

Puesto que es la primera vez que vas a generar la licencia, oprime “Si”

7. Aparecerá entonces el siguiente cuadro de diálogo

8. Oprime “Aceptar”. Aparecerá un cuadro de diálogo solicitando que cambies, si


así lo deseas, el nombre del archivo de solicitud generado (extensión SOL). Te
sugiero que no lo modifiques y únicamente ubiques la carpeta en donde
guardarlo. Si lo deseas, puedes guardarlo en la carpeta
“c:\ProyexDuino\Solicitudes”. Después oprime “Guardar”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
25

9. Aparecerá finalmente el cuadro

1.7.2 Recepción e instalación del archivo de licencias


El archivo de licencias que recibirás del autor es una biblioteca DLL (Dynamic Link
Library – Biblioteca de Enlace Dinámico) única para tu tarjeta y para el equipo que
vas a utilizar para programar PLCmDuino. El nombre del archivo es:

JOGATECHLicencias.DLL

Sigue los siguientes pasos para instalar el archivo de licencias en tu equipo.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
26

1. Una vez que hayas recibido este archivo por parte de un servidor, asegúrate de
que ni “MikroPLAN” ni “JOGATECHProyex” estén corriendo y cópialo a la
carpeta
c:\ProyexDuino\DLL

Ahí ya estará un archivo con el mismo nombre que es el original que está en la
carpeta ZIP y que no tiene licencia alguna, por tanto simplemente deja que
Windows lo reemplace

2. Ejecuta MikroPLAN y después del proceso de detección, selecciona la opción


“Licencias->Seleccionar …”. Aparecerá una lista con las licencias disponibles
para ese equipo. En este caso, aparecerá la licencia de activación que
solicitaste con un código de referencia

OBSERVACIONES
a. Puesto que no hay límite en el número de licencias que desees solicitar, se te
sugiere encarecidamente que etiquetes la tarjeta Arduino que aloja al BIOS
preactivado con el código de referencia que aparezca en tu caso en la tercera
columna de la lista del cuadro de diálogo

b. La indicación de la disponibilidad de la licencia en la columna de extrema


derecha de la lista significa únicamente que el equipo que vas a utilizar para
programar PLCmDuino está registrado en la licencia seleccionada, por lo que

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
27

puedes programar la tarjeta Arduino con él. Sin embargo, no significa que la
clave de referencia que aparece ahí esté efectivamente ligada a la tarjeta
Arduino que estés utilizando. Esto último lo podrás comprobar únicamente al
momento de grabar cualquier programa en ella

c. Como ya se mencionó anteriormente, al descargar por primera vez la carpeta


ZIP, la biblioteca no tiene licencia alguna, por lo cual, al hacer clic en esta
opción en el menú principal aparecerá el cuadro de diálogo

d. Cuando solicites una nueva licencia, el archivo de licencia que recibirás


contendrá las licencias que ya tengas más la nueva licencia solicitada. De esta
forma las licencias que hayas solicitado anteriormente se conservan

e. Del archivo de licencias, no se pueden eliminar referencias no válidas o que ya


no utilices

ADVERTENCIA
Una vez que recibas el archivo de licencia, no intentes generar una nueva
solicitud con la tarjeta ya activada pues esto destruirá el código de
preactivación en tu tarjeta Arduino y ya no habrá forma de recuperarlo. Por
tanto, si después deseas utilizar PLCmDuino en tu Arduino nuevamente, la
licencia que recibiste ya no será válida y solamente podrás programarlo en
modo evaluación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
28

1.7.3 Solicitud de licencia portátil


Como ya se había comentado anteriormente, necesitas realizar esta solicitud
cuando deseas programar a PLCmDuino en una computadora distinta a la que
utilizaste para generar la licencia de primera vez. Cuando se realiza esta solicitud,
MikroPLAN genera un sello digital para el nuevo equipo desde el cual vas a
programar a PLCmDuino. Este sello se incorporará en el archivo de licencias que
recibirás de un servidor. Para ello sigue los siguientes pasos:

1. Descomprime el contenido de la carpeta “ProyexDuino.zip” en la computadora


desde la cual también deseas programa PLCmDuino (computadora destino)

2. Ubica el archivo “JOGATECHLicencias.dll” de la computadora desde donde


realizaste la solicitud de licencia de primera vez y cópialo a la computadora
destino

3. Conecta tu tarjeta Arduino que aloja el BIOS PLCmDuino preactivado a la


computadora destino

4. En la computadora destino, carga JOGATECHProyex.exe y después realiza el


proceso de detección de la tarjeta

OBSERVACIÓN
Si la única licencia que tienes es la de primera vez, ve directamente al paso 7

5. Elije la opción “Licencias”->”Seleccionar ...”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
29

6. Aparecerá la lista de licencias disponibles como anteriormente se mostró.


Selecciona la licencia cuyo código de referencia coincide con el que marcaste
en tu tarjeta y que conectaste a la computadora destino. Oprime “Aceptar” para
cerrar la lista

7. En el menú principal haz clic en la opción “Licencias”->”Solicitar licencia de


activación portátil”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
30

8. Aparecerá el cuadro de diálogo

9. Oprime “Sí”. Si la referencia de la clave de preactivación está registrada en la


licencia actual, aparecerá el mensaje

10. Oprime “Aceptar”. Aparecerá el cuadro de diálogo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
31

OBSERVACIÓN
Este cuadro de diálogo es meramente informativo de la licencia en la que se
incluirá el sello digital del equipo por lo que no se te permitirá modificar o
seleccionar alguno de los campos

11. Oprime “Generar”. Aparecerá un cuadro de diálogo similar al del paso 6 del
apartado 1.7.1

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
32

12. Nuevamente te sugiero que no cambies el nombre y lo guardes en la carpeta


de tu preferencia para que después lo envíes al autor.

OBSERVACIONES
a. Si intentas generar la licencia portátil desde la misma computadora que
utilizaste para generar la licencia de primera vez, aparecerá el mensaje

b. Si la clave de preactivación de PLCmDuino no coincide con la de su referencia


en la licencia de activación seleccionada, aparecerá el mensaje

Y después de hacer clic en “Aceptar”, aparecerá el mensaje

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
33

COMENTARIO
Por cada nueva copia del BIOS PLCmDuino que cargues en alguna tarjeta
Arduino, necesitarás realizar el proceso de solicitud de licencia de activación
descrito arriba en cualquiera de sus dos modalidades

1.7.4 Reprogramación de Arduino con su IDE original


Se ha comprobado que el código de preactivación de PLCmDuino prevalece en la
tarjeta Arduino UNO tras programarla nuevamente con su IDE (Integrated
Development Environment – Entorno de Desarrollo Integrado) original. Esto
significaría entonces que puedes realizar aplicaciones a través de su IDE
utilizando Processing, que es el lenguaje nativo de la tarjeta Arduino, o bien
cuando desees utilizar KOP, puedes recargar el BIOS nuevamente en la tarjeta
Arduino como se describió en la sección 1.4 y utilizar MikroPLAN sin necesidad de
comprar una nueva licencia de activación. Sin embargo, no te garantizo que esta
práctica no llegue a dañar alguna vez la integridad del código de preactivación o
bien, que la ejecución del programa que cargues en Arduino con su IDE original
llegue a alterarlo también. Por tanto, si esto llegara a suceder, tendrás que generar
un nuevo código de preactivación y pagar por una nueva licencia.

1.8 PROGRAMACIÓN DE PLCmDuino

1.8.1 Captura de una red de arranque y paro


Se realizará un esquema que representa una red de arranque y paro
1. Entra a MikroPLAN y después del procedimiento de detección, en la barra de
botones de acceso rápido oprime el botón

OBSERVACIÓN
Para la captura del diagrama o para la simulación de su funcionamiento no se

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
34

requiere realizar una detección de la tarjeta, por lo cual puedes omitir esta acción

2. Aparecerá el editor de esquemas de contactos

3. En el extremo izquierdo de la barra de iconos aparecen botones que identifican


los grupos en los que se encuentran agrupados los elementos disponibles en el
editor KOP de MikroPLAN. A su derecha aparecen los elementos que
conforman el grupo seleccionado. Observa en el área clara del editor que
aparece el cursor resaltado mostrado como un rectángulo de color rojo

Para insertar un símbolo, simplemente coloca el cursor en la posición deseada.


Después selecciona el grupo y el elemento que desees agregar. Por ejemplo
para la red de arranque y paro procedemos primero a agregar dos contactos

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
35

4. Agrega después una bobina. Para ello elije el grupo

Después selecciona la bobina

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
36

5. Agrega otro contacto en la parte inferior

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
37

6. Coloca el cursor en el primer contacto que agregaste y luego oprime

Se realizará la conexión hacia el contacto de abajo

1.8.2 Asignación de entradas y salidas


Como ya se había comentado, a partir de esta nueva de MikroPLAN, los bits del
mismo peso en los puertos de entrada y salida comparten un mismo pin en la
tarjeta Arduino. Por ejemplo, el bit 0 del puerto I0 y el bit 0 del puerto Q0
comparten el pin 2. El bit 1 del puerto I0 y el bit 1 del puerto Q0 comparten el pin 3
y así sucesivamente. Por tanto, si en la tarjeta Arduino vas a utilizar el pin 2 como
entrada, entonces tendrás que configurar ese pin de esa manera pero ya no lo
podrás utilizar como salida. La designación de los pines como entradas o salidas
se define a través de una cadena de caracteres de configuración que deberás
introducir en el cuadro de diálogo que se activa oprimiendo el botón “ARDUINO”
en el editor KOP

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
38

Al hacer clic en ese el botón, aparecerá el cuadro de diálogo

Para el ejemplo, captura entonces la siguiente cadena de configuración en el


campo “2 a 12 (IW0/QW0)”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
39

El carácter ‘i’ se utiliza para designar una entrada y los caracteres ‘q’ u ‘o’ se
utilizan para designar una salida. Si deseas que en la lectura del estado lógico de
un pin se invierta, entonces escribe ‘I’. Si deseas que su estado lógico se invierta
a la salida, escribe ‘Q’. Para los bits y puertos que no se utilizan, puedes escribir ‘x’
o ‘X’

Para la configuración mostrada en el cuadro de diálogo anterior, los pines 2 y 3 se


asignarán a los bits I0.0 e I0.1 respectivamente y el pin 4 a Q0.2. Ninguno de ellos
tendrá un estado lógico invertido.

OBSERVACIONES
a. Para PLCmDuino, los registros asociados a los puertos de entrada/salida
digitales disponibles para la tarjeta Arduino son:

I0/Q0 Registros imagen de 16 bits asignados a los pines 2 a 12 de la tarjeta


Arduino UNO o MEGA

I1/Q1 Registros imagen de 16 bits asignados a los pines 14 a 19 para la tarjeta


Arduino UNO (terminales A0 a A5) y a los pines 54 a 69 (terminales A0 a
A15) para la Arduino MEGA

I3/Q3 Registros imagen de 16 bits asignados a los pines 14 a 29 de la tarjeta

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
40

Arduino MEGA únicamente

I4/Q4 Registros imagen de 16 bits asignados a los pines 30 a 45 de la tarjeta


Arduino MEGA únicamente

I5/Q5 Registros imagen de 16 bits de los cuales sólo los primeros 8 bits están
asignados a los pines 46 a 53 de la tarjeta Arduino MEGA únicamente

b. I2/Q2 son puertos de entrada y salida respectivamente de 16 bits pero no tienen


conexión física hacia el exterior y son independientes entre sí. Están soportados
para las dos versiones del BIOS (UNO y MEGA 2560). Se utilizan en la
aplicación del usuario para recibir o enviar datos vía Bluetooth desde o hacia
MobilePorts. También se utilizan para que PLCmDuino controle prototipos
virtuales en FluidSIM a través de MikroPLAN. En este caso, a través de I2,
PLCmDuino puede monitorear el estado del prototipo virtual en FluidSIM y con
los bits de Q2 puede accionarlo. En este caso, la tarjeta Arduino actúa como
maestro; FluidSIM como esclavo y MikroPLAN como interfaz entre ellos

c. A los puertos I0/Q0, I1/Q1, I3/Q3, I4/Q4 e I5/Q5 también se les puede acceder
desde FluidSIM cuando esta aplicación funciona como maestro y PLCmDuino
como esclavo. En este caso, Arduino funciona como tarjeta de adquisición y
señalización digitales y MikroPLAN como interfaz en este enlace de
comunicación

d. Los pines 0 y 1 está reservados para la comunicación serial con la computadora


cuando se programa PLCmDuino. También para cuando se conecta la tarjeta
con otros Arduinos o bien para la comunicación Bluetooth de PLCmDuino con
MobilePorts

e. El pin 13 está reservado para mostrar el estado del programa. Si hay un

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
41

programa corriendo (RUN), el LED conectado a este pin estará encendido. Si


está apagado, indicará que el programa está detenido (STOP) o no hay
programa cargado

2. Para terminar con el diagrama en el editor KOP captura los identificadores para
los pines. Haz clic sobre el signo de interrogación y escribe el que corresponda

OBSERVACIÓN
Puedes utilizar etiquetas para designar los bits para los pulsadores. En el editor
KOP oprime el botón “ETIQUETAS”. En la primera columna anota el nombre de la
etiqueta y en la segunda, el bit que desees asignarle

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
42

Una vez hecho esto, ya puedes utilizar esas etiquetas para la designación de los
pines. El diagrama quedaría entonces como:

1.8.3 Guardado del programa


1. En la barra de botones de acceso rápido, oprime el botón

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
43

2. Aparecerá el cuadro de diálogo solicitándote que cambies el nombre del archivo

3. Ubica la carpeta y selecciona el nombre para el archivo. Después oprime


“Guardar”

1.8.4 Simulación del programa en código AWL


Esta es la simulación original de MikroPLAN. A partir de la versión 9, ésta se
realiza utilizando una máquina virtual de PLCmDuino integrada en MikroPLAN. De
esta manera, la forma en que se ejecute el código en la PC, es como se ejecutará
en PLCmDuino. Por supuesto, debido a la arquitectura RISC (Reduced Instruction
Set Computer – Computadora con Conjunto Reducido de Instrucciones) del micro
de Arduino, el código se ejecutará más rápido en la tarjeta que en la PC.

1. Haz clic en la opción “Simulación”->”Tarjeta” y selecciona el tipo de tarjeta que


se utilizará en la simulación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
44

2. Se seleccionará el tipo de tarjeta que se utilizará para la simulación y aparecerá


un cuadro de diálogo en el cual podrás habilitar los puertos que se mostrarán en
el tablero de simulación

OBSERVACIONES
a. El tipo de tarjeta utilizado en la simulación es independiente del tipo de tarjeta
que MikroPLAN detecta antes de cargar el programa

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
45

b. Para el caso de Arduino MEGA 2560 podrás seleccionar el byte alto del puerto
Q1, así como los puertos I3/Q3 a I5L/Q5L

3. Oprime el icono

4. Se generará el código AWL equivalente del diagrama y se realizará la


compilación del mismo. Si no hubo error, aparecerá la ventana

5. Oprime “Aceptar”. Aparecerá un tablero que tiene pulsadores para generar las
entradas al autómata e indicadores para mostrar el estado lógico de las salidas
del autómata durante la simulación

6. Oprime el pulsador que representa a la entrada I0.0. Se realizará el enclave

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
46

7. Regresa el pulsador a su posición de apagado. Oprime ahora el pulsador I0.1


para desenclavar la bobina

8. Para terminar la simulación, oprime el botón

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
47

1.8.5 Simulación del programa en KOP


Es la simulación del funcionamiento del diagrama de escalera

1. Oprime el icono

2. Aparecerá el mismo tablero de control de la simulación en AWL pero ahora se


mostrarán resaltados en fondo de color ciano los valores de las marcas y
registros que estés utilizando en el diagrama de escalera. Cuando el estado
lógico del contacto (no de la marca) es cierto, éste se mostrará en amarillo

3. Oprime el pulsador I0.0

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
48

4. Libera el pulsador I0.0. Checa que en color rojo se muestra resaltada la bobina
así como también la trayectoria del diagrama que la está energizando
(enclavamiento)

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
49

5. Oprime el pulsador I0.1. Checa cómo se realiza el desenclave

6. Para terminar la simulación, oprime el botón

1.8.6 Circuito de prueba con la tarjeta Arduino para el programa


de arranque y paro
Arma el circuito que se muestra en la figura 1.3

Figura 1.3. Circuito de prueba para el programa de arranque y paro

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
50

OBSERVACIONES
a. En los pines 2 y 3 se han colocado dos pulsadores que corresponderán a los
contactos I0.0 e I0.1 del diagrama en KOP

b. En el pin 4 se ha colocado un LED que corresponderá a la bobina Q0.2

1.8.7 Carga del programa en la tarjeta Arduino


Elige la opción del menú “PLCmDuino”->”Cargar programa”. También puedes

cargar el programa oprimiendo

Se generará el código AWL del diagrama en KOP

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
51

Oprime “Aceptar” para continuar. Se cargará el código del programa en la tarjeta

2. Una vez cargado el programa, PLCmDuino lo ejecutará. En el circuito de prueba


de la figura 1.1 verifica el funcionamiento del programa. Al oprimir el pulsador

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
52

I0.0 deberá encenderse el LED colocado en Q0.2 y deberá permanecer así


hasta que se oprima el pulsador I0.1, que es cuando el LED deberá apagarse

OBSERVACIÓN
Una vez que el compilador haya generado el código, intentará enviarlo a
PLCmDuino para que se cargue en Arduino utilizando la licencia seleccionada
actual. Sin embargo, si no se tiene una licencia o no es la correcta para la tarjeta
Arduino que tengas conectada en la PC, aparecerá el mensaje

1.8.8 Emulación de código AWL y de diagramas KOP


En este modo se efectúa la simulación del código AWL o del diagrama en KOP
desde la computadora, pero realizando simultáneamente la adquisición de datos y
señalización digital en tiempo real en PLCmDuino. Como ya se había comentado,
necesitas tener conectada la tarjeta Arduino junto con una licencia de activación

válida. Para la emulación AWL oprime y para la emulación KOP oprime .

1.8.9 Paro del programa


Para detener el programa que se está ejecutando en PLCmDuino, desde tu equipo
de cómputo, elige la opción “PLCmDuino”->”STOP”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
53

Aparecerá el mensaje

1.8.10 Arranque del programa


Para ejecutar el programa cargado en Arduino, elige la opción
“PLCmDuino>”RUN”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
54

Aparecerá el mensaje

1.8.11 Borrado del programa


Cuando deseas utilizar PLCmDuino como interfaz para utilizar Arduino como
tarjeta de adquisición de datos o señalización digital desde otros programas como
LabVIEW, Visual Basic o FluidSIM, deberás borrar el programa previamente
cargado ahí. Para ello elije la opción “PLCmDuino”->”Borrar programa”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
55

Aparecerá un mensaje solicitándote la confirmación de la operación

Si estás seguro, haz clic en “Sí”. Después de unos segundos aparecerá otro
mensaje

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
56

OBSERVACIÓN
La operación de borrado del programa no elimina ni modifica el código de
preactivación

1.8.12 Paro forzado al arranque


En el código AWL o en los esquemas KOP con PLCmDuino, es posible compartir
el módulo de comunicación serial a través del cual se comunica con MikroPLAN.
Así, el usuario puede utilizar los bloques de comunicación serial incluidos en este
software tanto para transmitir datos o bien para recibirlos y procesarlos en sus
propias aplicaciones. Sin embargo, en tu aplicación deberás evitar una transmisión
permanente de datos ya que si esto llega a suceder se bloqueará la comunicación
entre PLCmDuino y MikroPLAN.

En la figura 1.4 se muestra un programa que después de cargarse en PLCmDuino,


bloqueará la comunicación con MikroPLAN

Figura 1.4. Programa que bloqueará la comunicación de PLCmDuino con MikroPLAN

En el diagrama, SM0.0 es la marca de ejecución continua del autómata y tiene


siempre un valor de 1. Esta marca es compatible con los PLC SIMATIC 21X. El
bloque RS232.TX transmite la cadena de caracteres que aparece en su nodo de
entrada cuando se activa su nodo de habilitación “EN”. Puesto que cuando la
tarjeta Arduino se energiza, PLCmDuino ejecuta cualquier programa que se
encuentre cargado en memoria, el contacto siempre permanecerá cerrado en la
red, haciendo entonces que el bloque transmita continuamente el mensaje “ESTE

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
57

PROGRAMA ESTA INCORRECTO” desde PLCmDuino. Esto impedirá que


PLCmDuino pueda comunicarse apropiadamente con MikroPLAN y por tanto, NO
HABRÁ POSIBILIDAD de detenerlo desde MikroPLAN ni tampoco se podrá cargar
otro programa.

Una situación similar puede ocurrir cuando el código del programa del usuario se
corrompe, por ejemplo, cuando sucede una inestabilidad del voltaje en el riel de
alimentación de la tarjeta. Si bien PLCmDuino tiene un algoritmo interno para
verificar la integridad del código del programa alojado en la memoria de tu tarjeta,
pudiera suceder que aún así no se llegaran a reconocer adecuadamente los
códigos de instrucción, haciendo entonces que la ejecución del programa sea
incorrecta o errática. Si esto llegara a suceder, se deberá realizar un
procedimiento de paro forzado al arranque o en frío del programa defectuoso
como se describe a continuación:
1. Desconecta la tarjeta de cualquier fuente de alimentación y de cualquier
conexión externa

2. Realiza un puente entre el pin 0 de la tarjeta y tierra de tal manera que después
puedas removerlo manualmente de forma rápida y sin dificultad tal como se
muestra en el diagrama de la figura 1.5

Figura 1.5. Conexión del puente para realizar el paro forzado del programa al arranque

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
58

3. Energiza la tarjeta. El LED indicador del pin 13 se encenderá


momentáneamente y luego deberá apagarse. Esto significa que el programa se
ha detenido (condición de STOP) y ya no se ejecutará

4. Con la tarjeta energizada, remueve rápidamente el puente que colocaste. En el


primer instante en que PLCmDuino detecte que el pin 0 ya no está conectado a
tierra, el LED se encenderá y realizará tres parpadeos en un tiempo aproximado
de 1.5 s (0.5 s por parpadeo). Después de ese período, PLCmDuino habilitará
el módulo de comunicación serial. El BIOS proporciona este intervalo de tiempo
al usuario para remover el puente, pues pasado ese tiempo, si se detecta que el
pin 0 aún sigue conectado a tierra, el módulo de comunicación serial pudiera no
inicializarse correctamente, impidiéndose así que PLCmDuino pueda
comunicarse posteriormente con MikroPLAN. Si esto llegara a suceder, repite el
procedimiento mencionado aquí desde el paso 1

OBSERVACIONES
a. El paro forzado al arranque únicamente detiene la ejecución del programa más
no lo borra. Para borrarlo, tendrás que hacerlo desde el menú principal de
MikroPLAN como se explicó en el apartado 1.8.10

b. Si realizaste el paro forzado y mantienes energizada la tarjeta, ya no podrás


ordenar a PLCmDuino desde MikroPLAN que ejecute el programa almacenado
a no ser que cargues otro programa o bien que apagues la tarjeta y la energices
nuevamente

1.9 CONEXIÓN DE MikroPLAN Y PLCmDuino VÍA BLUETOOTH


La carga de un programa en PLCmDuino incluyendo las acciones de paro,
arranque, detección y estado del autómata pueden realizarse de forma inalámbrica
desde MikroPLAN utilizando un enlace vía Bluetooth. De esta manera también se
pueden realizar todas las acciones de adquisición de datos y señalización digital

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
59

desde FluidSIM, LabVIEW y VisualBasic hacia PLCmDuino. Para ello deberá


utilizarse el módulo HC-05 o HC-06 de comunicación Bluetooth que se muestra en
la figura 1.5.

(a)

(b)

Figura 1.5. Módulo de comunicación Bluetooth HC-06: (a) Anverso y (b) reverso

Este dispositivo es fabricado por la empresa HC Information Technology Co. Ltd y


sus claves pueden ser HC-05 o HC-06. El módulo HC-05 puede programarse en
modo maestro o esclavo. Generalmente, el modo esclavo es el que viene
programado por defecto para este dispositivo. El HC-06 no es programable y viene
configurado de fábrica en sólo uno de los dos modos posibles. Para este caso se
debe conseguir el HC-06 en modo esclavo. En la figura 1.6 se muestra la conexión
de este módulo a la tarjeta Arduino UNO R3.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
60

Figura 1.6. Conexión del módulo HC-05 o HC-06 a la tarjeta Arduino

OBSERVACIONES
a. Cuando se conecta el módulo Bluetooth, el enlace de comunicación a través del
cable USB ya no es posible, pues el puerto COM asignado a la comunicación
alámbrica interferirá con el puerto COM asignado al módulo HC. Por tanto, el
cable USB solamente te servirá para energizar la tarjeta. Sin embargo, desde
MikroPLAN puedes seguir realizando todas las acciones que tienen que ver con
PLCmDuino como la detección y carga de programas pero ahora lo realizarás
de forma totalmente inalámbrica. De hecho, podrías colocar una fuente de
alimentación exclusiva para tu tarjeta y de esa manera podrías acceder a ella
de forma remota desde tu equipo de cómputo

b. Las terminales 0 (RX) y 1 (TX) de Arduino se han conectado respectivamente a


las terminales TX y RX del módulo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
61

Debería ser claro que para realizar el enlace Bluetooth con PLCmDuino desde
MikroPLAN, la PC deberá tener integrado un módulo para este tipo de conexión.
Si embargo, si esto no es así, se puede utilizar un radio Bluetooth o “dongle” de
bajo costo que se puede conectar a cualquier PC. Este dispositivo es básicamente
“plug-and-play” por lo cual el proceso de instalación del software para acceder a
este dispositivo desde Windows inicia al momento que tu equipo detecta su
conexión. En la figura 1.7 se muestra una imagen de un radio genérico Bluetooth.

Figura 1.7. Radio Bluetooth o “Bluetooth dongle” de uso genérico

1.9.1 Emparejamiento de dispositivos Bluetooth


Una vez que la tarjeta y el módulo HC-06 estén debidamente interconectados y
energizados, así como la conectividad Bluetooth de la PC esté funcionando
correctamente, el paso siguiente es agregar el módulo a las conexiones Bluetooth
disponibles en tu PC. Esto es, se tiene que “emparejar” o “vincular” el dispositivo
Bluetooth con tu PC. Desde Windows Vista™, los pasos para el emparejamiento
son los siguientes:

1. En la barra de tareas, haz clic en y luego en la opción “Agregar un dispositivo


Bluetooth”. Aparecerá el siguiente cuadro de diálogo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
62

Suponiendo que el HC-06 sea el único dispositivo activo, el cuadro de diálogo


de emparejamiento de dispositivos tendrá la apariencia que se muestra arriba.
El dispositivo HC-06 tiene el nombre “linvor”.

2. Selecciónalo y después oprime el botón “Siguiente”. Aparecerá el siguiente


cuadro de diálogo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
63

3. Haz clic en la opción “Escribir el código de emparejamiento del dispositivo”.


Aparecerá el siguiente cuadro de diálogo

4. En el campo de captura de texto anota los números “1234”. Después oprime


“Siguiente”. Una vez que Windows termine de instalar el software de
emparejamiento, aparecerá el siguiente cuadro de diálogo.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
64

5. A continuación, hay que asegurarse de que se haya instalado también un


puerto de comunicación serie para el acceso al dispositivo. Haz clic
nuevamente sobre el icono de Bluetooth y elige la opción “Mostrar dispositivos
Bluetooth”. En el cuadro de diálogo deberá aparecer el nombre “linvor” como
uno de los dispositivos que ya se han vinculado.

6. Haz clic con el botón derecho sobre el dispositivo “linvor”. Aparecerá un menú
emergente. Selecciona la opción “Propiedades”. Aparecerá un cuadro de
diálogo. Selecciona entonces la ficha “Servicios”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
65

7. Deberá aparecer una casilla y la leyenda ‘Puerto serie (SPP) “Dev B”’, junto con
el identificador del puerto serie a través del cual se puede acceder al módulo.
Este valor es el que se deberá de utilizar desde MikroPLAN, LabVIEW o Visual
Basic para acceder de forma inalámbrica a la tarjeta Arduino cargada con
PLCmDuino

8. Finalmente, oprime “Aceptar”.

OBSERVACIÓN
Si no aparece el puerto, quita el dispositivo de la lista de equipos vinculados y
vuelve a repetir el proceso de instalación para el módulo HC-06. Si el problema
persiste, apaga o reinicia el equipo y repite el proceso

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
66

CAPÍTULO 2

CARACTERÍSTICAS DE
PLCmDuino

Lo que a continuación se describe es válido para las versiones del BIOS tanto
para la tarjeta Arduino UNO R3 como para la MEGA 2560.

2.1 MARCAS ESPECIALES


MikroPLAN soporta tres registros de marcas especiales: SM0 a SM2. Cada uno de
ellos de 16 bits. Las marcas que están en el byte SM0.H (byte superior de SM0) y
todas las marcas que están en los registro SM1 y SM2 están reservadas para uso
de PLCmDuino. Se describirán más adelante en este manual. Por otra parte, cinco
de las 8 marcas del registro SM0L (byte inferior de SM0) son compatibles con los
PLC SIMATIC 21X y se describen a continuación.

2.1.1 Marca de ejecución continua


Es la marca SM0.0 y siempre se encuentra en 1. Esta marca se utilizó en el
diagrama de la figura 1.4.

2.1.2 Marca de primer ciclo


Es la marca SM0.1. Se pone en 1 solamente en el primer ciclo del programa.
Luego se pone en 0. Se utiliza comúnmente para inicializar algunos bloques de

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
67

función

2.1.3 Marca de reloj de 1minuto


Es la marca SM0.4. Conmuta entre 1 y 0 cada 30 segundos por lo que a partir de
esta marca se puede generar una señal de reloj de período de 1 minuto

2.1.4 Marca de reloj de 1 segundo


Es la marca SM0.5. Conmuta entre 1 y 0 cada medio segundo por lo que a partir
de esta marca se puede generar una señal de reloj de frecuencia de 1 Hz.

2.1.5 Marca de conmutación de ciclo


Es la marca SM0.6. El estado inicial de este bit es de 1 en el primer ciclo. Después
conmuta a 0 en el segundo ciclo. En los siguientes ciclos conmuta a 1 (número de
ciclo impar) o 0 (número de ciclo par). Esto se repite de forma permanente
mientras PLCmDuino ejecuta el programa del usuario.
Las otras tres marcas: SM0.2, SM0.3 y SM0.7 están reservadas para
PLCmDuino

2.2 REGISTROS IMAGEN DE LAS ENTRADAS


Son cinco registros de 16 bits: I0, I1, I3, I4 e I5 cuya utilidad ya se describió en el
capítulo 1. Como ya se comentó, el registro I2 es la imagen de los datos que
PLCmDuino recibe de la aplicación para Android MobilePorts cuando PLCmDuino
se enlaza con ella vía Bluetooth. Esto se comentará más ampliamente en el
capítulo 3. Su función como interfaz para recepción de datos de prototipos
virtuales se comentará en el capítulo 5.

2.3 REGISTROS IMAGEN DE LAS SALIDAS


Son cinco registros de 16 bits: Q0, Q1, Q3, Q4 y Q5 cuya utilidad ya se describió
en el capítulo 1.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
68

2.4 REGISTROS EN MEMORIA


PLCmDuino soporta 40 registros “M” cada uno de una longitud de 16 bits y se
pueden utilizar cualquier tipo de dato.

2.5 CONTADORES
Tiene 16 contadores de 16 bits cada uno: C0 a C15. Cualquiera de ellos puede ser
programado para conteo hacia arriba, hacia abajo o con ambos modos.

2.6 TEMPORIZADORES
Tiene 16 temporizadores de 16 bits cada uno y separados en dos grupos: 8
temporizadores de 10 ms (T33 a T36 y T97 a T100) y 8 temporizadores de 100 ms
(T56 a T63). Cualquiera de ellos puede ser programado en modo TON, TOFF o
TONR.

2.7 PILA
La pila de PLCmDuino es de 16 bits.

2.8 JUEGO DE INSTRUCCIONES AWL


PLCmDuino soporta 90 instrucciones en AWL. De éstas, 56 instrucciones, tienen
una sintaxis en AWL y un funcionamiento que es similar al que tienen algunas de
las instrucciones de los PLC SIMATIC 21X aunque sus mnemónicos pueden ser
diferentes. Ellas se muestran en la tabla 2.1.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
69

Tabla 2.1. Instrucciones AWL de PLCmDuino compatibles con algunas instrucciones de los PLC
SIMATIC 21X
Grupo Instrucciones AWL Total
Contactos de comparación LDB>=, OB>=, AB>=, LDB=, OB=, AB=, 18
LDB<=, OB<=, AB<=, LDW>=, OW>=,
AW>=, LDW=, OW=, AW=, LDW<=, OW<=,
AW<=

Contactos LD, O, A, LDN, ON, AN, NOT, EU, EP 9


Operaciones lógicas, de transferencia y de MOVB, ANDB, ORB, XORB, INVB, SLB, 9
SRB, RLB, RRB
corrimiento con palabras de 8 bits
Operaciones aritméticas con palabras de ADDW, SUBW, INCW, DECW 4
16 bits
Control de pila LPP, LPS, LRD, LSS, ALD, OLD 6
Operaciones aritméticas con palabras de 8 ADDB, SUBB, INCB, DECB, MOVB 5
bits
Bobinas =, S, R, NOP 4
Temporizadores TON, TOFF, TONR 3
Control de programa MEND, STOP 2
Contadores CTU, CTUD 2
Total 62

Las otras 28 instrucciones son exclusivas para PLCmDuino y pueden o no tener


correspondencia con instrucciones de otros autómatas. Ellas se muestran en la
tabla 2.2.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
70

Tabla 2.2. Instrucciones AWL particulares para PLCmDuino


Grupo Instrucciones AWL Total
Accionamiento de motores a pasos y SERVO_CFG, SERVO_SETVSM, 9
SERVO_MOVETO, SERVO_INCAX,
servomotores
SERVO_DECAX, SERVO_MOVE0,
SERVO_MOVEAX, SERVO_MOVE,
SERVO_ENABLE

Manejo del LCD LCD_EN, LCD_MSG, LCD_CLR, LCD_CMD 4


Comunicación con MobilePorts vía MPORTS_SMS_TX, MPORTS_SMS_RX, 4
MPORTS_RX, MPORTS_TX
Bluetooth utilizando los pines 0 y 1 de
Arduino
Contactos de comparación para cadenas LDSTR=, OSTR=, ASTR= 3
de caracteres
Comunicación alámbrica o inalámbrica por RS232_TX, RS232_RX 2
RS232 utilizando los pines 0 y 1 de
Arduino
Infrarrojos utilizando los pines 2 o 3 de IR_RX 1
Arduino
Conversión analógica a digital de 10 bits ADC 1
Contador rápido de eventos externos XCNT 1
Modulación de Ancho de Pulso PWM_CFG, PWM_WIDTH, PWM_ONOFF 3
Total 28

A excepción de las 6 instrucciones de control de pila, las demás instrucciones de


las tablas 2.1 y 2.2 tienen su correspondiente representación en KOP.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
71

CAPÍTULO 3

PLCmDuino Y MobilePorts

MobilePorts es una aplicación móvil para Android desarrollada específicamente


para interactuar con PLCmDuino. La aplicación te permitirá correr o detener el
programa cargado en Arduino y además te permitirá interactuar con él. El paquete
de instalación para tu móvil (archivo APK) está ubicado en la carpeta:

c:/ProyexDuino/Proyectos/PLCmDuino/Señalización y adquisición/Android

3.1 INSTALACIÓN DE MobilePorts EN UN TELÉFONO MÓVIL


1. Transfiere al archivo MobilePorts.apk a tu teléfono

2. En tu móvil selecciona “Ajustes”->”Seguridad” y activa la casilla “Fuentes


desconocidas”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
72

3. Ubica la carpeta en donde se descargó MobilePorts. Haz clic sobre el nombre


del archivo

Aparecerá una pantalla con un mensaje preguntándote si deseas instalar la


aplicación. Elige “Instalar”.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
73

Comenzará entonces la instalación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
74

4. Al terminar, oprime “Hecho”

Cierra las ventanas. El acceso directo al programa aparecerá en la ventana de


aplicaciones

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
75

3.2 EMPAREJAMIENTO DEL MÓDULO BLUETOOTH CON EL


MÓVIL
1. Arma el circuito de prueba de la figura 1.6

2. En tu móvil entra a “Ajustes”->”Bluetooth”

3. Si el módulo Bluetooth que estás utilizando es el dispositivo HC-06, debería


aparecer ese nombre o bien la dirección MAC (Media Access Control – Control
de Acceso de Medios) del mismo. Este identificador es único para cada
dispositivo y está conformado de 6 números hexadecimales separados entre sí
por “:”

OBSERVACIÓN
Si estás utilizando el HC-05, deberás localizarlo con la aplicación “Bluetooth Class
Zero”. Esta aplicación puedes descargarla desde Google Play

4. Haz clic sobre el nombre del dispositivo. Aparecerá una pantalla indicándote
que introduzcas el PIN del dispositivo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
76

5. Introduce los números 1234 y después oprime “Aceptar”. El dispositivo se habrá


vinculado

3.3 CONTROL DEL PROGRAMA EN PLCmDuino DESDE


MobilePorts

3.3.1 Conexión de MobilePorts con PLCmDuino


1. En tu móvil corre la aplicación MobilePorts. La pantalla principal de la aplicación
tendrá la apariencia que se muestra

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
77

2. En el campo “Dirección” deberás introducir la dirección MAC del dispositivo.


Esta información aparece en ocasiones en tu móvil, pero si no es así, la puedes
conocer desde tu PC. Para ello, entra al grupo Bluetooth de tu PC y elige la
opción “Mostrar dispositivos Bluetooth” y haz clic sobre el módulo HC que
instalaste en el capítulo I. La dirección MAC aparece en la parte inferior de la
ventana

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
78

3. Una vez que hayas introducido la dirección MAC, oprime el botón “PLCMicro”.
MobilePorts se conectará con PLCmDuino, el cual a su vez le enviará el nombre
del BIOS alojado en la tarjeta Arduino y que se mostrará brevemente en la
franja verde

OBSERVACIÓN
El botón “RS232” se utiliza cuando deseas enviar datos por medio de un enlace
Bluetooth a cualquier otro dispositivo que soporte este tipo de comunicación. El
botón “PLCMicro” se utiliza para que MobilePorts se comunique exclusivamente
con el BIOS PLCmDuino alojado en Arduino

4. Finalmente, la pantalla principal tendrá la siguiente apariencia

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
79

Para desconectar MobilePorts de Arduino, oprime simplemente “Desconectar”

3.3.2 Arranque, paro y estado de un programa desde MobilePorts


1. Arma el circuito de prueba de la figura 4.1

Figura 4.1. Circuito para probar la conexión de MobilePorts con Arduino

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
80

2. En MikroPLAN captura el programa que se muestra en la figura 4.2. Se trata de


la red de arranque y paro que se mostró en el capítulo 1, sólo que ahora en
lugar de utilizar pulsadores conectados en el exterior de la tarjeta, la acción de
arranque y paro se realizará desde dos pulsadores en la pantalla de
MobilePorts. Con I2.0 se activará el LED y con I2.1 se apagará

Figura 4.2. Activación y desactivación de Q0.2 desde MobilePorts

Para los pines puedes utilizar la misma configuración que se utilizó en el


ejemplo del capítulo 1. Sin embargo, ya que no vas a utilizar los pines 2 y 3, la
configuración podría quedar como:

Por supuesto, puedes utilizar como salida cualquier otro bit distinto a Q0.2

OBSERVACIÓN
Cada uno de los 16 bits del puerto I2 se identifica con un pulsador en MobilePorts

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
81

3. Antes de cargar el programa, modifica la dirección del puerto COM al que


corresponda al módulo Bluetooth y activa o desactiva la casilla “Detectar BIOS
en tarjeta MEGA 2560” en el cuadro de diálogo para detección del BIOS según
sea la tarjeta que utilices

4. Conecta ahora MobilePorts a PLCmDuino. Oprime el pulsador I2.0

En el circuito deberá encenderse el LED. Oprime ahora el pulsador I2.1

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
82

En el circuito, el LED deberá apagarse. Oprime nuevamente el pulsador I2.0. El


LED deberá encenderse nuevamente.

5. Oprime en MobilePorts el botón “Paro”. Aparecerá brevemente en el campo “P /


R” (Petición / Respuesta”) el mensaje “STOP>OK”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
83

El programa en PLCmDuino, se detendrá totalmente y bajo esta condición,


todas las terminales de PLCmDuino se habilitarán como entradas, por lo que
cualquier dispositivo conectado a las terminales que se hayan configurado
como salidas se desactivará. Oprime ahora “Estado”. Aparecerá brevemente el
mensaje “STATUS>STOP”. Esto te indica que PLCmDuino está en modo de
alto. Oprime “RUN”. Aparecerá brevemente el mensaje “RUN>OK”
reanudándose la ejecución del programa.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
84

CAPÍTULO 4

EJEMPLOS DE APLICACIONES
CON LÓGICA PROGRAMABLE

4.1 CONTROLADOR DE NIVEL DE AGUA

4.1.1 Descripción de la acción de control


En la figura 4.1 se muestra el esquema simplificado de un sistema de control de
nivel de agua para una casa habitación.

Figura 4.1. Sistema doméstico de control de nivel de agua

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
85

El sistema está conformado de la cisterna, el tinaco, la bomba de agua, el


controlador, un actuador y dos electroniveles que funcionan como sensores
digitales de nivel de líquido: TOPE y FONDO. El controlador recibe estas señales
y genera la señal digital BOMBA a través de la cual se acciona la bomba de agua
vía un actuador electromecánico. Cuando el controlador detecta que el tinaco está
vacío (TOPE = FONDO = 0), activará la bomba, haciendo que permanezca así
hasta que el nivel del agua en el tinaco alcance el tope (TOPE = 1). En este caso,
la bomba se apagará y permanece así hasta que el tinaco se vacía totalmente,
reiniciando nuevamente operación del controlador. Para esta primera
implementación, se considera que hay agua en la cisterna; que los sensores de
nivel funcionan correctamente y que no habrá falla al drenar el agua cuando la
bomba se active. A partir del ejercicio 4.1.2 se examinarán posibles perturbaciones
que podrían llegar a afectar la acción de control y cómo el controlador deberá
responder ante ellas.
En la figura 4.2 se muestra el diagrama de escalera de la estrategia de control
que realiza la acción de control descrita y que se grabará en la tarjeta Arduino

Figura 4.2. Diagrama de escalera para la acción de control de nivel de agua

En la figura 4.3 se muestra el diagrama del circuito que se utiliza para el sistema
de control de nivel de líquido. Observa en esa figura que se ha añadido un LED
para indicar al usuario que la bomba está activa. Los pines 6 y 7 de la tarjeta
Arduino se utilizan para leer el estado de los sensores de nivel de fondo y de tope
respectivamente. El pin 2 se utiliza para activar la bomba.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
86

Figura 4.3. Diagrama electrónico del sistema de control de nivel de agua con Arduino

La cadena de configuración de pines quedaría como

OBSERVACIONES
a. Si se utiliza una bomba sumergible basada en un motor de CD para probar el
sistema de la figura 4.3, es posible que se necesiten capacitores en paralelo de
100 a 220 nF con los resistores de 100 k para eliminar o disminuir los picos de
voltaje en las entradas a la tarjeta que pudieran originarse por el encendido del
motor de la bomba

b. También es posible que requiera un capacitor en paralelo con el motor para


disminuir ese mismo efecto

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
87

4.1.2 Falla en el sensor de fondo


Debido al contacto continuo con el agua, el sensor de nivel de fondo del tinaco
(FONDO) puede llegar a cubrirse de suciedad. Si esto ocurre, éste proporcionará
un 0 lógico al controlador aún cuando haya agua a ese nivel en el tinaco. En esta
circunstancia, cada vez que el TOPE conmute a 0 cuando descienda el nivel del
agua debido al consumo del líquido, entonces la bomba se activará de forma
intermitente, lo que podría llegar a dañarla.

En la figura 4.4 se muestra el programa de control con detección de falla en el


sensor FONDO. La red 2 activa la bandera S_F_SUCIO (sensor de fondo sucio)
cuando se detecta que FONDO = 0 y TOPE = 1. Esta misma bandera se utiliza
también para activar un LED que indicará al usuario que se produjo la falla. La red
3 monitorea el estado de un botón de restauración (RESET) que permitirá al
usuario restablecer la operación del controlador una vez que se haya reparado la
falla que se haya detectado. También apagará el LED indicador de falla si
estuviera encendido.

La cadena de configuración de los pines es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
88

Figura 4.4. Programa de control de nivel de agua con detección de falla en el sensor de fondo

En la figura 4.5 se muestra el diagrama electrónico del controlador con detección


de falla en el sensor de fondo.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
89

Figura 4.5. Controlador de nivel de agua con indicador de detección de falla en el sensor de fondo

4.1.3 Falla por falta de paso de agua


Si la válvula de retención (válvula check) que está inmersa en la cisterna está
sucia o ya no funciona, la tubería de bombeo podría descargarse causando que la
bomba no pueda impulsar el agua hasta el tinaco cuando ésta se active. Esto hará
que la bomba trabaje en seco, lo que también podría originar un daño a la misma.
Esto también sucederá si el agua en la cisterna llega a agotarse.

Para tratar con esta posible condición de falla, se coloca un sensor de paso de
agua el cual consiste de un par de electrodos: uno de ellos conectado al común y
el otro conectado hacia el controlador. Este par se coloca en el extremo del tubo
que abastece al tinaco, de tal manera que el chorro de agua que sale por el mismo
ponga en contacto ambos electrodos, generando de esta forma la señal P_A (paso
de agua) para el controlador. La ausencia de esta señal permitirá al controlador
activar un temporizador con retardo a la desconexión (TON 56) siempre y cuando
la bomba esté activa. Si esto es así, después de dos segundos el temporizador
activará la bandera N_H_P_A (no hay paso de agua), la cual desactivará la bomba

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
90

y activará también un LED indicador. En la figura 4.6 se muestra el diagrama en


KOP del controlador con esta nueva función.

Figura 4.6. Programa de control de nivel con detección de fallas en el sensor de fondo y en el
sensor de paso de agua

En la figura 4.7 se muestra el diagrama del controlador con el indicador de falla en


el sensor de paso.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
91

Figura 4.7. Controlador de nivel de agua con indicadores de detección de fallas en el sensor de
fondo y en el sensor de paso de agua

4.1.4 Falla por exceso de tiempo de llenado


En caso de que ocurra alguna falla en el sensor de tope, el controlador no podrá
determinar cuando el agua en el tinaco ya ha alcanzado su nivel máximo. Por
tanto, si la bomba está energizada, el agua llegará eventualmente a desbordarse
del tinaco. Para prevenir esto, se ha agregado al programa de control otro
temporizador con retardo a la desconexión (TON 57) de tal manera que se active
cuando la bomba entra en funcionamiento. Si después de transcurrido cierto
tiempo para el cual se considera que el tinaco se ha llenado la bomba aún
permanece encendida, el temporizador activará la bandera E_T_LL (exceso de
tiempo de llenado) que le permitirá al controlador no sólo desactivar la bomba sino
también encender un LED indicador de esta falla. En la figura 4.8 se muestra el
diagrama en KOP del controlador con esta nueva función. La bandera del TON 57
se activará después de 10 s. En la figura 4.9 se muestra el diagrama del
controlador con los tres indicadores de falla vistos. La cadena de configuración
queda para este programa queda como ejercicio para el usuario.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
92

Figura 4.8. Programa de control de nivel de agua con detección de fallas en el sensor de fondo; en
el sensor de paso de agua y por exceso de tiempo de llenado

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
93

Figura 4.9. Diagrama electrónico del controlador de nivel de agua con indicadores de detección de
fallas en el sensor de fondo; en el sensor de paso de agua y por exceso de tiempo de llenado

4.2 SEMÁFORO

4.2.1 Descripción de la acción de control


El semáforo deberá encender secuencialmente tres lámparas de acuerdo a los
diagramas de tiempo que se muestran en la figura 4.10. Observa en esa figura
que la lámpara verde debe parpadear 3 veces antes de que se active la lámpara
de color ámbar. Después de que ésta se apague, deberá reiniciarse la secuencia.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
94

Figura 4.10. Diagramas de tiempo para encendido de las lámparas del semáforo

En la figura 4.11 se muestra el diagrama en escalera de la estrategia de control.


Las etiquetas L_ROJA, L_AMBAR y L_VERDE están asignadas a los pines 2 a 4 y
a través de ellas se activan las lámparas de CA roja, ámbar y verde
respectivamente. Además se está utilizando el temporizador T56 que cuenta
eventos de 100 ms

En la figura 4.12 se muestra el diagrama electrónico del circuito del semáforo. La


cadena de configuración para este programa queda como ejercicio para el usuario.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
95

Figura 4.11. Diagrama KOP para el controlador del semáforo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
96

Figura 4.12. Diagrama electrónico del circuito del semáforo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
97

CAPÍTULO 5

CONTROL DE MOVIMIENTO

5.1 CARACTERÍSTICAS DE CONTROL DE MOVIMIENTO CON


PLCmDuino
MikroPLAN permite realizar aplicaciones de control de movimiento con motores a
pasos y servomotores. Las rutinas permiten la acción coordinada de hasta 11 ejes
a los que se les puede asignar un servomotor o un motor a pasos. Para el caso de
servomotores, se pueden accionar 11 servos simultáneamente (1 pin por servo),
Para el caso de motores a pasos se pueden accionar hasta 3 motores
simultáneamente (4 pines por motor). La secuencia de códigos de activación
energiza dos fases para cada motor y es la siguiente:
01012
01102
10102
10012

Los ejes para los servos se asignan desde el eje 1 (pin 2) hasta el eje 11 (pin 12).
Para el caso de motores a pasos, los ejes posibles son el eje 1 (pines 2 a 5); el eje
5 (pines 6 a 9) y el eje 9 (pines 10,11, 12 y A0 para Arduino UNO o MEGA).
También se puede combinar el accionamiento de motores a pasos con
servomotores pero debería ser claro que los servomotores tendrían que asignarse
de tal manera que no haya traslape con los pines que energizarán las fases del o

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
98

de los motores a pasos.

Las rutinas de control de movimiento se encuentran agrupadas en el conjunto


definido por el icono en el editor KOP

El acceso a las rutinas de control de movimiento desde el programa del usuario se


puede realizar sin restricción utilizando PLCmDuino en modo evaluación. Sin
embargo, una vez que se adquiere una licencia válida, únicamente se puede
acceder a ellas si el usuario la adquirió en su modo extendido. No tendrá acceso a
ellas si tiene una licencia en modo estándar.

5.2 ACCIONAMIENTO DE MOTORES A PASOS


Se pueden accionar desde uno hasta tres motores a pasos de tipo unipolar o
bipolar. Esto dependerá por supuesto del tipo de circuito “driver” (manejador) que
el usuario utilice para energizar las fases del o de los motores. En el ejemplo que
sigue se accionará un motor a pasos en el eje 1 y se utilizarán dos pulsadores
conectados en los pines 6 y 7 para accionar el motor en uno u otro sentido. La
velocidad rotacional del motor será de 30 r.p.m.

Para este ejemplo, la cadena de configuración es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
99

Para el pin 2 (eje 1) se utiliza el carácter ‘p’ para especificar que a partir de ese pin
se energizará un motor a pasos.

OBSERVACIÓN
1. Los pines que se configuran para accionar motores a pasos o servos se
consideran como bits de salida por lo que estarán asociados tanto en Arduino
UNO como en Arduino MEGA a los 11 bits menos significativos del registro Q0.
El cuarto bit para accionar la fase del motor 3 (eje 9) estará asignado al bit Q1.0
(pin A0) para cualquier versión del BIOS (Arduino UNO o MEGA). Sin embargo,
a la salida solamente se consideran los valores de bit generados por las rutinas
de control de movimiento

2. Para prevenir cualquier traslape de valores lógicos de los bits que se utilicen
para energizar las fases de los motores a pasos con cualquiera de los bits de
los otros puertos (I0 o Q0), éstos se deberán marcan con ‘x’ como se muestra
en la cadena de configuración

En la figura 5.1 se muestra el diagrama en KOP del programa descrito.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
100

Figura 5.1. Diagrama KOP del programa de control del sentido de giro del motor a pasos

OBSERVACIONES
a. El bloque “SetVSM” en la primera red pone la velocidad de rotación del motor
en r.p.m.

b. El bloque en la segunda red incrementa la posición angular del eje especificado


mientras esté habilitada su terminal de entrada

c. El bloque en la tercera red decrementa la posición angular del eje especificado


mientras esté habilitada su terminal de entrada

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
101

En la figura 5.2 se muestra el diagrama del circuito con Arduino que activa el
motor. En él se utiliza un ULN2803.

Figura 5.2. Diagrama para el controlador de un motor a pasos

5.3 ACCIONAMIENTO DE SERVOMOTORES


Cuando los servos se activan, el valor de posición angular que se envía a cada
uno es de 90o, el cual se considera como la posición origen. Desde ahí, un valor
positivo o negativo en el programa, se sumará a ese valor, dando el
desplazamiento final. Por ejemplo, un valor de desplazamiento en el programa de
+90, en realidad corresponderá a 180o en el servomotor. Un valor de -90, en
realidad corresponderá a 0o en el servomotor.

En el siguiente ejemplo se controlarán dos servomotores con 5 pulsadores: un


pulsador en I0.0 hará que los dos servos regresen a la posición de 0 grados. Los
pulsadores I0.1 e I0.2 controlarán el sentido giro de un servo y los pulsadores I0.3
e I0.4 controlarán el sentido de giro del otro servo. Los pulsadores se conectarán
en los pines 2 a 6. Los servomotores se conectarán en el pin 7 (eje 6) y el pin 8
(eje 7) respectivamente. La cadena de configuración es en este caso:

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
102

Observa en la cadena de configuración que se ha utilizado el carácter ‘s’ para


indicar que en ese pin se asignará un servo. En la figura 5.3 se muestra el
diagrama KOP.

Figura 5.3. Diagrama KOP para el control de dos servos

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
103

El bloque “MoveToOrigin” de la red 1 realiza el desplazamiento angular


simultáneo hacia la posición 0 de todos los motores que estén activos (motores a
pasos y/o servos).

Figura 5.4. Diagrama para el controlador de dos servomotores

5.4 ACCIONAMIENTO DE MOTORES A PASOS Y SERVOS


En el ejemplo que sigue se activarán 2 servomotores y dos motores a pasos a
través de 2 pulsadores los cuales estarán asignados a las entradas I0.0 e I0.1.
Cuando se pulse I0.1, los motores incrementarán simultáneamente su posición
angular. Los dos servomotores incrementarán su posición en 1 o a la vez; un motor
a pasos incrementará su posición 10 pasos (+ 9o) y el otro decrementará su
posición 10 pasos (- 9o). Cuando se pulse I0.0, todos los motores regresarán a su
posición inicial. La cadena de configuración es, este caso:

OBSERVACIÓN
Cuando se activa el motor a pasos en el eje 9, no es necesario especificar que los
pines que siguen son de salida (pines 11 y 12). Tampoco es necesario que el pin
A0 en el grupo de pines analógicos se especifique como salida

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
104

En la figura 5.5 se muestra el diagrama KOP del programa de control

Figura 5.5. Diagrama KOP para el control de los cuatro motores

OBSERVACIONES
a. El bloque “MoveTo” realiza el desplazamiento angular de todos los ejes de
acuerdo a los parámetros en la entrada “COORS”

b. Los desplazamientos angulares se separan con el carácter ‘,’

c. Si se desea que durante el desplazamiento de los ejes, uno de ellos mantenga


su posición angular permanezca sin cambio se utiliza el carácter ‘x’. Esto
también se aplica cuando el eje no se utiliza

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
105

d. Si se desea realizar un incremento angular de n pasos a partir del


desplazamiento angular actual, se utilizan “++” precediendo al valor. Si se
desea realizar un decremento, se precede el valor con “--”

e. Cuando se desea que el eje alcance un valor de desplazamiento fijo, solamente


se anota el valor con un valor positivo o negativo. Si es positivo se puede
escribir opcionalmente el carácter ‘+’ precediendo al valor, pero solamente una
vez. Si es negativo, se requiere anotar el carácter ‘-’ precediendo al valor

En la figura 5.5 se muestra el diagrama del circuito para este ejemplo.

Figura 5.5. Diagrama del circuito para accionar dos motores a pasos y dos servomotores

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
106

CAPÍTULO 6

PLCmDuino Y STEP7 MicroWin

STEPControl es una aplicación de escritorio que funciona como interfaz entre


STEP7 MicroWin 5.5 y PLCmDuino para realizar acciones de adquisición de datos
y señalización digital desde una PC. Para realizar esto, el usuario utiliza el
software STEP7 MicroWin 5.5 para crear una estrategia de control en cualquier de
los lenguajes soportados por esa aplicación (AWL, KOP o FUP) que
posteriormente podrá cargar en el simulador. Después, desde el módulo software
denominado STEPDuino que ya está incorporado en la aplicación STEPControl, el
usuario podrá correr el programa que se cargó al simulador de STEP7 MicroWin
5.5. La aplicación STEPDuino se comunicará entonces con este programa y
también con PLCmDuino de tal manera que los datos que le envíe el simulador de
MicroWin, los enviará a la tarjeta Arduino para generar señalización en sus
terminales de salida. También STEPDuino recibirá datos que le envía PLCmDuino
para que los envíe al simulador de MicroWin.
Los requerimientos para trabajar con STEPControl son:
1. Visual Basic 2010 Express o posterior
2. STEP7 MicroWin 5.5
3. Licencia de activación de PLCmDuino
4. Licencia de activación de STEPDuino

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
107

6.1 EJEMPLO DE SIMULACIÓN/EMULACIÓN


1. Ejecuta el Administrador de SIMATIC de STEP7 MicroWin 5.5

2. Haz clic en el botón “Cancelar” si aparece el asistente de STEP7

3. Desde el manejador de proyectos, abre el archivo que se encuentra en la


carpeta:

c:\ProyexDuino\Proyectos\STEPControl\Ejemplos\STEPDuino\Controlador de Nivel de
Agua

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
108

4. Haz doble clic sobre el elemento OB1

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
109

5. Aparecerá el diagrama KOP de un programa de control de nivel de agua todo o


nada con histéresis

OBSERVACIÓN
El programa realiza la acción de control de llenado de un tinaco semejante al
que se explicó en el ejemplo del capítulo 5

6. En el administrador, haz clic sobre el icono del simulador

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
110

7. Aparecerá el simulador

Si lo deseas, configura las ventanas de selección de registros a los que requiera tu


aplicación. Los registros que utiliza el software STEP7 MicroWin 5.5 y sus
equivalentes con STEPDuino y PLCmDuino se muestran en la siguiente tabla

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
111

STEP7 MicroWin 5.5 STEPDuino/PLCmDuino


E0.0 a E0.7 (EB0) I0.0 a I0.7 (IOL)
E1.0 a E1.7 (EB1) I0.7 a I0.15 (IOH)
E2.0 a E2.7 (EB2) I1.0 a I1.7 (I1L)
E3.0 a E3.7 (EB3) I1.8 a I1.15 (I1H) - Sólo Arduino MEGA
A0.0 a A0.7 (AB0) Q0.0 a Q0.7 (Q0L)
A1.0 a A1.7 (AB1) Q0.8 a Q0.15 (Q0H)
A2.0 a A2.7 (AB2) Q1.0 a Q1.7 (Q1L)
A3.0 a A3.7 (AB3) Q1.8 a Q1.15 (Q1H) – Sólo Arduino MEGA

8. Arma el circuito de prueba que se muestra en la figura 6.1. Representa un


simulador hardware para un sistema de control de nivel de agua cuyo control se
realizará desde STEP7 MicroWin. En la tabla 6.1 se muestra la correspondencia
entre los pines de la tarjeta con las entradas y salidas al diagrama en KOP

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
112

Figura 6.1. Simulador hardware para el programa de control de nivel de agua utilizando MicroWin

Tabla 6.1. Correspondencia de entradas y salidas entre el circuito de la figura 6.1 y STEP7
MicroWin
Etiqueta en MicroWin Bit en PLCmDuino Bit en MicroWin
FONDO I0.0 E0.0
TOPE I0.1 E0.1
PASO_DE_AGUA I0.2 E0.2
RESET I0.3 E0.3
BOMBA Q0.4 A0.4
FALLA_SENSOR_SUCIO Q0.5 A0.5
FALLA_PASO_DE_AGUA Q0.6 A0.6

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
113

9. Corre la aplicación STEPControl. Aparecerá una pequeña ventana para que


selecciones la versión Windows de tu equipo

10. Oprime “Aceptar”. Aparecerá la ventana principal de STEPControl

10. Activa el editor KOP de MicroWin y carga el programa al simulador haciendo


clic en el icono del mismo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
114

11. Activa STEPControl. Establece la conexión entre esta aplicación y el


simulador de STEP7 haciendo clic en el botón “Conectar”

12. Selecciona la pestaña “Conexión con PLCmDuino”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
115

13. Selecciona las licencias para STEPDuino y PLCmDuino haciendo clic en los
botones correspondientes

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
116

14. Prepara la comunicación con PLCmDuino. Introduce el valor del puerto de


comunicación. Si vas a utilizar la tarjeta Arduino UNO, asegúrate que la
casilla “Esperar inicialización del BIOS” esté desactivada. Recuerda que si
vas a utilizar una tarjeta MEGA 2560 con el chip CH340G, es posible que
tengas que activarla. Después oprime “Detectar”

14. Configura los pines de Arduino de acuerdo al circuito de la figura 3.1

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
117

15. Oprime “RUN” para correr el programa cargado en el simulador desde


STEPControl. Si las dos conexiones tuvieron éxito, se activará la pestaña
“Panel” e iniciará la corrida del programa

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
118

Los LEDs en el circuito con Arduino deberían encenderse de acuerdo al


algoritmo de tu diagrama KOP en STEP7. Además, el programa debería
responder a las señalizaciones a mano que realices a través de los pulsadores.
El pulsador en I0.2 simula un sensor de paso de agua. Si no se detecta paso de
agua, el controlador activará el LED en Q0.2 indicando falla de paso de agua.
Oprime I0.3 para reiniciar la acción del controlador. Si presionas el pulsador I0.0
y luego presionas I0.1, la bomba (Q0.4) se apagará, ya que esto simula que el
tinaco se ha llenado. Si presionas I0.1 sin presionar I0.0, la bomba se apagará y
se encenderá el LED en Q0.1 indicando que el sensor de fondo está sucio.

OBSERVACIONES
a. Si solamente se tiene alguna de las dos licencias, aparecerán algunos
mensajes de error

Por tanto, el programa correrá en modo evaluación por lo que únicamente


tendrán efecto en el comportamiento del programa las entradas presentes en
Arduino y no se realizará señalización alguna (no se activarán los LEDs)

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
119

b. Para detener la simulación, oprime “STOP”. STEPControl detendrá el simulador


de STEP7 pero no se perderá el enlace con el simulador ni con PLCmDuino.
Esto te permitirá conmutar al editor KOP; modificar tu programa; volverlo a
cargar al simulador y después correrlo desde STEPDuino

c. Oprime “Salir” para suspender la conectividad de STEPDuino con STEP7; con


PLCmDuino y para que después se cierre la aplicación

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
120

CAPÍTULO 7

PLCmDuino Y FluidSIM

FluidSIM puede comunicarse con PLCmDuino utilizando MikroPLAN como interfaz


de comunicación o intérprete. MikroPLAN se comunica con FluidSIM utilizando
peticiones o solicitudes por medio de un enlace DDE (Dynamics Data Exchange –
Intercambio Dinámico de Datos). Para con PLCmDuino, MikroPLAN utiliza
comandos. La comunicación entre FluidSIM y PLCmDuino puede darse de dos
modos:

Modo 1. FluidSIM es maestro y PLCmDuino es esclavo. En este modo FluidSIM


puede acceder a los puertos de PLCmDuino (hasta 6 puertos de 8 bits
para la versión UNO y hasta 20 puertos de 8 bits para la versión MEGA)
y enviarles o recibir datos hacia o desde ellos. De esta manera, Arduino
junto con PLCmDuino actúa como una tarjeta de adquisición de datos y
señalización digitales

Modo 2. PLCmDuino es maestro y FluidSIM es esclavo. En este modo,


PLCmDuino puede controlar el prototipo virtual de un circuito neumático
implementado en FluidSIM. Para ello, PLCmDuino se comunica con
FluidSIM utilizando 4 puertos de 8 bits

Para ambos modos de comunicación, se requiere la licencia “PLCmDuino UNO

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
121

XT” o una licencia para “PLCmDuino MEGA”.

Adicionalmente se puede utilizar MikroPLAN para controlar el prototipo virtual en


FluidSIM. En este caso, MikroPLAN actúa como maestro y FluidSIM como esclavo
de la misma forma a cómo la realiza PLCmDuino en el modo 2. De esta forma se
puede simular el funcionamiento del programa que se cargaría en PLCmDuino
para controlar el prototipo virtual en FluidSIM. Este modo de operación de
MikroPLAN es libre y no se requiere licencia alguna para trabajar con ella.

7.1 PREPARACIÓN DE FluidSIM PARA LA COMUNICACIÓN CON


MikroPLAN
Las versiones 3.6 y 4.2 de FluidSIM son las soportadas por MikroPLAN para
realizar la interfaz DDE de comunicación entre ese software y PLCmDuino. En lo
que sigue se trabajará con la versión 4.2 de este programa. Realiza los siguientes
pasos:

1. Ejecuta FluidSIM y elige la opción “Options”->”EasyPort/OPC/DDE Connection”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
122

2. Aparecerá el cuadro de diálogo

Activa la opción “DDE mode”. Asegúrate que en los campos “Servidor” y “Topic”
aparezcan respectivamente las palabras: “FLSIMP” y “IOPanel” tal como se

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
123

muestra en la siguiente figura (estas palabras deberían aparecer por defecto al


activar esa opción). Luego oprime “Aceptar”

7.2 ADQUISICIÓN DE DATOS Y SEÑALIZACIÓN DIGITAL CON


PLCmDuino DESDE FluidSIM

7.2.1 Preparación de FluidSIM como maestro


Para que MikroPLAN pueda comunicarse con FluidSIM, este software incorpora
dos elementos gráficos de interfaz. El bloque “FluidSIM OUT” a través del cual
FluidSIM enviará a MikroPLAN los datos que desea que aparezcan en alguno de
los puertos de salida de PLCmDuino

0 1 2 3 4 5 6 7

Auto

FluidSIM Out
Module 1 - Port 1

Y el bloque “FluidSIM In” a través del cual FluidSIM recibirá datos de MikroPLAN

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
124

que corresponden a los que aparecen en alguno de los puertos de entrada de


PLCmDuino

Auto

FluidSIM In
Module 1 - Port 1
0 1 2 3 4 5 6 7

Ubica estos elementos en el panel de iconos y agrégalos al documento de la


estrategia que va a utilizar PLCmDuino

En la tabla 7.1 se muestran los puertos de PLCmDuino a los que se puede


acceder desde FluidSIM en este modo. Todos los puertos son de 8 bits.

Tabla 7.1. Acceso a los puertos de salida de PLCmDuino desde FluidSIM. El carácter ‘L’ al final de
la designación del puerto indica el byte bajo del puerto de 16 bits que corresponda. El carácter ‘H’
designa el byte alto
Puertos de salida Tipo de puerto Designación del puerto en Disponibilidad en versión BIOS
en PLCmDuino FluidSIM
I0L Entrada PLCmDuino_I0L UNO XT, MEGA
I0H Entrada PLCmDuino_I0H UNO XT, MEGA
I1L Entrada PLCmDuino_I1L UNO XT, MEGA
I1H Entrada PLCmDuino_I1H MEGA
I3L Entrada PLCmDuino_I3L MEGA
I3H Entrada PLCmDuino_I3H MEGA
I4L Entrada PLCmDuino_I4L MEGA
I4H Entrada PLCmDuino_I4H MEGA
I5L Entrada PLCmDuino_I5L MEGA
Q0L Salida PLCmDuino_Q0L UNO XT, MEGA
Q0H Salida PLCmDuino_Q0H UNO XT, MEGA
Q1L Salida PLCmDuino_Q1L UNO XT, MEGA
Q1H Salida PLCmDuino_Q1H MEGA
Q3L Salida PLCmDuino_Q3L MEGA
Q3H Salida PLCmDuino_Q3H MEGA
Q4L Salida PLCmDuino_Q4L MEGA
Q4H Salida PLCmDuino_Q4H MEGA
Q5L Salida PLCmDuino_Q5L MEGA

Para demostrar el acceso de los puertos de PLCmDuino cuando FluidSIM


funciona como maestro, realiza el siguiente ejemplo:

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
125

1. Una vez que hayas agregado los elementos gráficos de interfaz a tu estrategia,
completa el diagrama como se muestra en la figura de abajo

2. Haz doble clic en el bloque “FluidSIM Out”. Aparecerá un cuadro de diálogo.


Modifica la etiqueta que aparece ahí por “PLCmDuino_Q1L”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
126

3. Ahora haz doble clic en el bloque de “FluidSIM In” y modifica la etiqueta que ahí
aparece por defecto por la etiqueta “PLCmDuino_I0L”

4. Oprime “OK”. El diagrama debería tener la apariencia que se muestra

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
127

OBSERVACIONES
a. A través del bloque “FluidSIM Out”, MikroPLAN hará que los datos digitales que
aparecen a la entrada de ese bloque en FluidSIM se transfieran al puerto Q0L
(8 bits menos significativos de Q0) de PLCmDuino

b. A través del bloque “FluidSIM In”, MikroPLAN hará que los datos digitales
presentes en el puerto I1L (8 bits menos significativos de I1) de PLCmDuino se
transfieran a las salidas de ese bloque en FluidSIM

7.2.2 Preparación de PLCmDuino como esclavo


Cuando MikroPLAN acceda a PLCmDuino en este modo, cualquier programa que
esté cargado se borrara. También debes asegurarte que las terminales de Arduino
estén conectadas a los elementos que vas a utilizar para tu proyecto. Para el
ejemplo, arma el circuito que se muestra en la figura 7.1 en donde se está
utilizando la tarjeta Arduino MEGA 2560 como hardware de adquisición y
señalización digital.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
128

Figura 7.1. Circuito de prueba para FluidSIM en modo maestro

7.2.3 Activación de MikroPLAN como interfaz de comunicación


1. Conecta la tarjeta Arduino con el BIOS PLCmDuino a tu PC

2. Sin salirte de FluidSIM, corre MikroPLAN. Elige la opción “PLCmDuino” ->


“Detectar” y realiza la detección de la tarjeta

3. En el menú principal de MikroPLAN, elige la opción “Licencias”->”Seleccionar” y


escoge la licencia adecuada

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
129

4. Elige ahora la opción “Interfaz”->”FluidSIM (M) – MikroPLAN – PLCmDuino (E)”

5. Aparecerá un cuadro de diálogo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
130

6. Oprime “Sí”. Se realizará la detección de la tarjeta y aparecerá el cuadro de


diálogo

7. Oprime “Aceptar”. Aparecerá el cuadro de diálogo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
131

8. Escribe las cadenas de configuración de los pines que vas a utilizar de acuerdo
al circuito de la figura 7.1. Selecciona también los puertos que vas a utilizar en
FluidSIM

9. Sin salirte de MikroPLAN, activa FluidSIM y corre la simulación del circuito

oprimiendo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
132

10. Activa MikroPLAN y en el cuadro de diálogo del paso 8, oprime “Iniciar”.


Aparecerá el cuadro de diálogo

11. Oprime “Aceptar”. Activa FluidSIM. Oprime el pulsador “Q1.0”. Deberá


encenderse en bit correspondiente en el circuito de la figura 7.1

12. Ahora en el circuito de la figura 7.1, oprime el pulsador “I0.0”. Deberá


activarse el indicador luminoso correspondiente en el circuito en FluidSIM

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
133

OBSERVACIONES
a. En la tarjeta Arduino, los LED indicadores de comunicación serial, tanto RX
como TX, deberán estar encendidos. Esto indica que la comunicación entre
MikroPLAN y PLCmDuino es correcta

b. Si en FluidSIM, oprimes el botón de paro , únicamente suspenderás la


simulación de la estrategia neumática, más no la adquisición y señalización que
MikroPLAN está realizando con PLCmDuino. Para terminar esta acción, activa
MikroPLAN y oprime después el botón “Terminar”. Se suspenderá la adquisición
y señalización. Después se cerrará el cuadro de diálogo

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
134

7.3 CONTROL DE PROTOTIPOS VIRTUALES EN FluidSIM DESDE


PLCmDuino

7.3.1 Preparación de FluidSIM como esclavo


En la estrategia de control que se grabará en PLCmDuino, se deberá utilizar el
puerto Q2 para generar señales digitales que accionarán dispositivos neumáticos
en el prototipo virtual en FluidSIM. Este puerto se distribuye en 2 puertos de 8 bits
cada uno: Q2L y Q2H. Por tanto, para que FluidSIM pueda obtener el estado
lógico de los bits de cualquiera de esos puertos se deberá utilizar el bloque

Auto

FluidSIM In
Module 1 - Port 1
0 1 2 3 4 5 6 7

Por otro lado, es a través del puerto I2 que PLCmDuino podrá monitorear el
estado lógico de algún elemento electro neumático en el prototipo virtual. Este
puerto se divide también en dos puertos de 8 bits cada uno: I2L e I2H. Por tanto,
para que PLCmDuino pueda obtener el estado lógico de los elementos electro
neumáticos que se deseen monitorear en el prototipo virtual, se deberá utilizar el
siguiente bloque con cualquiera de esos puertos

0 1 2 3 4 5 6 7

Auto

FluidSIM Out
Module 1 - Port 1

A continuación se realizará un ejemplo.


1. Abre FluidSIM y captura el siguiente esquema del prototipo virtual a controlar.
Se trata de un circuito neumático que consta de un cilindro de doble efecto que
está conectado a una válvula 5/2. El cilindro tiene dos sensores S2 y S3.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
135

Cuando el usuario presione el pulsador I0.0 en Arduino y el vástago se


encuentre en la posición del detector de fin de carrera S2, la válvula se
energizará. Cuando el vástago alcance el detector de fin de carrera S3, el
sensor enviará una señal a PLCmDuino. El autómata des energizará la válvula.
Esto hará que el vástago regrese a S2. Modifica las etiquetas en los bloques de
entrada y salida como se muestra

2. Corre el programa en FluidSIM. Tu prototipo virtual estará esperando los datos


enviados por PLCmDuino

7.3.2 Preparación de PLCmDuino como maestro


1. Captura la siguiente estrategia de control con MikroPLAN. Para probar el
circuito, puedes utilizar el mismo hardware de la figura 7.1

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
136

Figura 7.2. Estrategia en KOP para controlar el prototipo virtual en FluidSIM del cilindros de doble
efecto

2. Agrega las etiquetas:

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
137

3. La cadena de configuración para este programa es:

4. Guarda el programa y después cárgalo en Arduino. Al correr el programa en tu


tarjeta, el LED Q1.0 se encenderá pero después de dos segundos
aproximadamente se apagará ya que por el momento no se ha activado aún la
conexión entre PLCmDuino y FluidSIM

OBSERVACIONES
a. La red 1 activa al inicio la marca especial SM1.15 identificada con la bobina
“PV_CONEXION”. Esto permite que PLCmDuino le indique a MikroPLAN que
desea conectarse con el prototipo virtual en FluidSIM. Si en dos segundos,
PLCmDuino no recibe respuesta de MikroPLAN, desactivará esa marca. Como
se puede observar en las demás redes del programa, esta marca está
conectada en serie con los demás contactos, por lo cual al desactivarse, evitará
la activación de las bobinas o salidas en las demás redes. Esta red deberá
incluirse SIEMPRE en cualquier aplicación de este tipo

b. La red 2 activa un LED (Q1.0) dependiendo del estado de la marca SM1.15.


Esto permite que desde el hardware conectado a la tarjeta Arduino se visualice
si hay o no conexión con el prototipo virtual. Se recomienda que esta red se
incluya también en aplicaciones de este tipo

c. En la red 3 se ha colocado también un LED (Q1.1) que en Arduino se activará

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
138

cuando la bobina “Q2.0” activa la válvula en el prototipo virtual

7.3.3 Activación de MikroPLAN como interfaz de comunicación


1. En el menú principal de MikroPLAN, elige la opción “Licencias”->”Seleccionar” y
escoge la licencia adecuada

2. En el menú principal, elije la opción “Interfaz”->”PLCmDuino (M) – MikroPLAN –


FluidSIM (E)”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
139

3. Aparecerá el siguiente cuadro de diálogo

4. Oprime “Sí”. Se detectará la tarjeta y aparecerá el siguiente cuadro de diálogo.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
140

5. Oprime “Aceptar”. Aparecerá el siguiente cuadro de diálogo. Selecciona los


puertos con los que se realizará la comunicación. Oprime “Iniciar”

6. Aparecerá un cuadro de diálogo que te informará que se estableció la


comunicación con el prototipo virtual en FluidSIM

7. Oprime “Aceptar”. Comenzará la comunicación entre PLCmDuino y FluidSIM a


través de MikroPLAN. En el circuito de la figura 7.1, pulsa el interruptor I0.0.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
141

Puesto que FluidSIM ya estaba corriendo, observa que la válvula se energiza.


Además, en el circuito de la figura 7.1, el LED se deberá encender

Después de activarse el cilindro y cuando el pistón llega a S3, el pistón se


desenclava

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
142

7.4 CONTROL DE PROTOTIPOS VIRTUALES DESDE MikroPLAN

7.4.1 Preparación de FluidSIM como esclavo


Para la simulación del control de tu prototipo virtual en FluidSIM desde MikroPLAN
no se requiere licencia alguna. La preparación del prototipo virtual en FluidSIM es
la misma que se comentó para cuando PLCmDuino se comporta como maestro.

7.4.2 Activación de MikroPLAN como maestro


1. Asegúrate de que esté corriendo la simulación del prototipo en FluidSIM

2. En la barra de botones de acceso rápido, haz clic en

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
143

3. Aparecerá el cuadro de diálogo

4. Por el momento, la única aplicación disponible para hacer el enlace es


FluidSIM. Selecciona los puertos que vas a utilizar en la simulación y después
oprime “Iniciar”

5. Aparecerá otro cuadro de diálogo

6. Oprime “Sí”. Se activará el enlace con FluidSIM

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
144

7. Oprime “Aceptar”. Se compilará el programa

8. Oprime “Aceptar”. Se realizará la simulación del programa

9. Observa que el LED “Q1.0” está activo. Esto indica que el enlace entre FluidSIM

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
145

y MikroPLAN es correcto. Oprime el pulsador “I0.0”. La válvula se activará en


FluidSIM y el LED en Q1.1 en el tablero se encenderá indicando esto

10. Verifica en FluidSIM que el cilindro se haya activado y que el vástago


alcance el sensor S3

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
146

En FluidSIM el prototipo funcionará como cuando PLCmDuino funcionó en


modo maestro

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
147

CAPÍTULO 8

PLCmDuino y LabVIEW

Al cargar PLCmDuino en tu tarjeta Arduino, también puedes utilizarla como


sistema de adquisición de datos y señalización digital al que puedes acceder
desde LabVIEW. Para este caso no se requiere licencia alguna, pero asegúrate de
que PLCmDuino no tenga grabado algún programa antes de utilizarla con el
software. Los subVI’s para acceder a PLCmDuino se encuentran en la carpeta:

“c:\ProyexDuino\Proyectos\PLCmDuino\Señalización y
adquisición\LabVIEW\Bibliotecas\DACQS”

Están agrupados en dos carpetas: “x32” y “x64”. Dependiendo de la versión que


utilices de LabVIEW, deberás utilizar los de la carpeta “x32” para versiones de 32
bits y los de la “x64” para versiones de 64 bits. Sólo para este último caso deberás
instalar previamente la versión redistribuible de Visual Basic 2017. Los subVI’s
utilizan los archivos PLGDCOM32.DLL y PLGDCOM64.DLL que están incluídos
en la carpeta “c:\ProyexDuino\DLL”.

8.1 INSTALACIÓN DE LA PALETA PLCmDuino DACQS


Esta paleta te permitirá acceder a los subVI’s que te permitirán realizar acciones
de adquisición de datos y señalización digital con Arduino utilizando PLCmDuino.
Sigue los siguientes pasos:

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
148

1. Entra a LabVIEW. Crea un nuevo VI (Virtual Instrument) y desde el menú


principal del diagrama de bloques haz clic en la opción “Tools”->”Advanced”-
>”Edit Palette Set …”

2. Aparecerán tres cuadros de diálogo. Elige el cuadro “Functions” y haz clic con el
botón derecho sobre él. Elige la opción “Insert”->”Subpalette”

3. Aparecerá el cuadro de diálogo de abajo. Elige la opción “Link to an existing


palette file (.mnu)”. Luego oprime “OK”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
149

4. Aparecerá un cuadro de diálogo para que elijas el archivo de menú. Selecciona


el archivo “PLCmDuino_DACQS.mnu”. Se encuentra en la misma carpeta

“c:\ProyexDuino\Proyectos\PLCmDuino\Señalización y
adquisición\LabVIEW\Bibliotecas\DACQS”

5. En el cuadro de diálogo “Functions” aparecerá el icono

6. También aparecerá el cuadro de diálogo de abajo. Selecciona “Save changes”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
150

7. Aparecerá otro cuadro de diálogo informándote sobre la adición del menú a la


paleta de funciones de LabVIEW. Oprime “Continue”

8. Observa que en la paleta de funciones de LabVIEW se ha añadido el grupo


“PLCmDuino DACQS”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
151

8.2 ACCESO A PLCmDuino DESDE LabVIEW


Los ejemplos que se analizarán a continuación se encuentran en la carpeta que ya
se había especificado anteriormente:

“c:\ProyexDuino\Proyectos\PLCmDuino\Señalización y
adquisición\LabVIEW\Ejemplos\DACQS”

Todos se realizaron con la versión 2014 de LabVIEW en sus modalidades de 32 y


64 bits. El circuito de prueba para estos ejemplos es el que aparece en la figura
7.1 y que por conveniencia se muestra aquí nuevamente en la figura 8.1

Figura 8.1. Circuito de prueba para adquisición y señalización digital con PLCmDuino desde
LabVIEW

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
152

En el ejemplo que sigue, se mostrarán los elementos que deberán añadirse


invariablemente en cualquier instrumento virtual (VI – Virtual Instrument) que
utilice PLCmDuino

1. Crea un nuevo VI y activa el diagrama de bloques

2. Haz clic sobre lapaleta “PLCmDuino DACQS”. Aparecerán dos subgrupos

Haz clic en el grupo “x32”. Elige el subVI “PLGDCOM32_Open”. Arrástralo y


pégalo en algún lugar del diagrama de bloques

La designación de pines para este elemento es:

3. Crea controles en los nodos “Wait for BIOS Initialization” y “COM Port”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
153

4. Crea un indicador de tipo “boolean” (booleano) en el nodo “Error” y dos


indicadores de tipo “string” (cadena) en los nodos “Controller” y “BIOS Version”

5. Agrega ahora el subVI “PLGDCOM32_GetErrorMessage”. Sus nodos son:

Alámbralo al anterior como se muestra a través del nodo “error out”

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
154

6. Agrega un indicador en el nodo “Error Message”

7. Agrega el elemento “PLGDCOM32_Close” y alámbralo como se muestra

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
155

OBSERVACIONES
a. El subVI “PLGDCOM32_Open” se utiliza para abrir el acceso a PLCmDuino
desde LabVIEW. Este elemento genera una señal de error en el nodo “Error” en
caso de que haya habido algún error al acceder a PLCmDuino

b. El subVI PLGDCOM32_GetErrorMessage” muestra un mensaje de error en


caso de por alguna razón no se haya abierto el enlace a PLCmDuino

c. El “subVI PLGDCOM32_Close”

8. En la paleta de funciones, elige “Data Communication”->”Local Variable”

Agrega dos de estos elementos

9. Haz clic sobre uno de ellos con el botón izquierdo y elige la opción “BIOS

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
156

Version”

El elemento tendrá la apariencia que se muestra

10. Acerca el cursor en el nodo de la variable local, Haz clic con el botón “Empty
String Constant”

El elemento tendrá ahora la apariencia

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
157

11. Repite las acciones anteriores con la otra variable local pero ahora elige el
elemento “Controller”

OBSERVACIONES
Se agregaron estas variables locales para que al comienzo de la ejecución del
instrumento, se limpie el contenido de los indicadores “BIOS Version” y “Controller”

12. El diagrama de bloques debería tener la apariencia que se muestra

Y el panel frontal

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
158

8.2.1 Corrida del instrumento virtual


1. Conecta tu tarjeta Arduino con PLCmDuino a la PC

2. En el panel frontal, en el indicador “COM Port” escribe el puerto COM que


utilizará LabVIEW para comunicarse con tu Arduino

3. Únicamente en caso de que vayas a utilizar la tarjeta Arduino MEGA 2560 con
el chip CH340G puede que requieras oprimir el interruptor “Wait for BIOS
Initialization” antes de correr el instrumento

4. Oprime el botón de corrida de una sola vez

5. Los indicadores “Controller” y “BIOS Version” deberían contener la info que se


muestra resultado de la respuesta de PLCmDuino

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
159

8.3 ESCRITURA DE UN BIT A UN PUERTO DE SALIDA


El instrumento que se analiza a continuación realiza la escritura de un bit a uno de
los puertos de salida de Arduino

1. Carga el instrumento “Ejemplo 02x32 Escritura de Bit a puerto”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
160

OBSERVACIONES
a. El elemento

Se utiliza para configurar los pines de la tarjeta Arduino como entradas o como
salidas. A través del parámetro “N Port” se especifica el número de grupo de
pines o puerto que se va a configurar de acuerdo a la siguiente tabla

Grupo Puerto Pines


0 I0/Q0 2 a 11 (UNO/MEGA)
1 I1/Q1 A0 a A5 (UNO)
A0 a A15 (MEGA)
3 I3/Q3 14 a 29 (MEGA)
4 I4/Q4 30 a 45 (MEGA)
5 I5/Q5 46 a 53 (MEGA)

A través del nodo “Pins Configuration” se especifica la configuración de los


pines del puerto como una cadena de caracteres. En el panel frontal

El primer carácter a la izquierda especifica el bit menos significativo o bit 0. El


segundo carácter el bit 1 y así sucesivamente. El carácter “o” especifica una
salida; “i” especifica una entrada. Si utilizas mayúsculas, la salida o la entrada
se invertirán. Puedes especificar los 16 bits del puerto, pero dependiendo de la
tarjeta que utilices, sólo se tomarán en cuenta los que tienen salida física al
exterior (los primeros 5 para Arduino UNO o 16 para MEGA 2560)

b. Para este instrumento y de acuerdo al circuito de la figura 8.1 se utilizará el

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
161

puerto 1 para escribir datos

c. La estructura

Representa un ciclo “While”. La acción de todos los elementos que se coloquen


dentro de la estructura se repetirá continuamente hasta que la entrada al

elemento sea cierta. En este VI, el ciclo se suspende cuando el usuario


oprime el botón “Alto” desde el panel frontal o cuando ocurre algún error al
intentar escribir el valor del bit

d. El elemento

Se utiliza para activar o desactivar un bit en el número puerto (N Port) y número


de bit (N Bit) especificados de acuerdo al valor booleano dado por “Value”

2. El panel frontal deberá tener la apariencia que se muestra

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
162

OBSERVACIÓN
En el control “N bit” se especifica el número de bit del puerto que puede ser desde
0 hasta 15

3. Corre el instrumento. Modifica el valor “N bit” y conmuta el interruptor “Valor”.


Observa cómo se enciende o se apaga el LED conectado al pin que
corresponde al bit que estás activando o desactivando

8.4 ESCRITURA DE UN BYTE A UN PUERTO DE SALIDA


1. Carga el instrumento “Ejemplo 03x32 Escritura de Byte a puerto.vi”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
163

OBSERVACIÓN
El elemento

Escribe un valor de un byte dado por el parámetro “Value” en el puerto


especificado por “N Port”. Si la entrada “(F) Low Byte/(T) High Byte” es falsa, el
valor se escribe en el byte menos significativo (byte bajo), Si es cierta, se escribe
en el byte más significativo (byte alto)

2. El panel frontal debe tener la apariencia que se muestra

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
164

8.5 ESCRITURA DE UNA PALABRA A UN PUERTO DE SALIDA


1. Carga el instrumento “Ejemplo 04x32 Escritura de Word a puerto.vi”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
165

OBSERVACIÓN
El elemento

Escribe el valor de una palabra de 16 bits dado por “Valor” al puerto especificado
por “N Port”

3. El panel frontal es

8.6 LECTURA DE UN BIT DE UN PUERTO DE ENTRADA


1. Carga el instrumento “Ejemplo 05x32 Lectura de Bit de puerto.vi”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
166

OBSERVACIÓN
El elemento

Lee el valor del bit dado por “N Bit” del puerto “N Port”. El valor leído se
proporciona en “Value”

3. El panel frontal es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
167

8.7 LECTURA DE UN BYTE DE UN PUERTO DE ENTRADA


1. Carga el instrumento “Ejemplo 06x32 Lectura de Byte de puerto.vi”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
168

OBSERVACIÓN
El elemento

Lee un byte, alto o bajo dependiendo de la entrada “(F) Low Byte/(T) High Byte”,
del puerto especificado por “N Port” y lo proporciona en la salida “Value”

3. La apariencia del panel frontal es

8.8 LECTURA DE UNA PALABRA DE UN PUERTO DE ENTRADA


1. Carga el instrumento “Ejemplo 07x32 Lectura de Word de puerto.vi”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
169

OBSERVACIÓN
El elemento

Lee la palabra de 16 bits del puerto especificado por “N Port” y lo proporciona en


“Value”

3. El panel frontal tiene la apariencia que se muestra

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
170

8.9 LECTURA DE UN CANAL ANALÓGICO


1. Carga el instrumento “Ejemplo 08x32 Lectura de canal analógico.vi”

2. El diagrama de bloques es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
171

OBSERVACIÓN
El elemento

Lee un valor de 10 bits (0 a 1023) correspondiente al voltaje presente en


cualquiera de los 6 canales analógicos (A0 a A5) para el Arduino UNO o de
cualquiera de los 16 canales analógicos (A0 a A15) para Arduino MEGA 2560
especificado por “N Channel” y lo proporciona en “Value”

3. El panel frontal es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
172

CAPÍTULO 9

Control de un LCD

9.1 CONEXIÓN DEL LCD


En la figura 9.1 se muestra la conexión de un LCD (Liquid Crystal Display –
Display de Cristal Líquido) de 16 columnas x 2 filas a la tarjeta Arduino UNO con
PLCmDuino.

Figura 9.1. Diagrama de conexión de un LCD a la tarjeta Arduino con PLCmDuino

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
173

Para el caso de la tarjeta Arduino MEGA, se utiliza la misma asignación de pines


(pin 7 a pin 12). Es fija y no puede modificarse desde el programa.

9.2 BOQUES DE CONTROL


MikroPLAN incorpora 4 bloques para acceder al LCD:

LCD.EN

Descripción
Se utiliza para activar o habilitar el LCD

Entradas
“EN” debe energizarse sólo una vez

LCD.MSG

Descripción
Se utiliza para enviar un mensaje al LCD

Entradas
- “EN” Cada vez que este nodo se energiza, se envía el mensaje al LCD
- “IN” En este nodo se escribe la cadena o el conjunto de parámetros que se van
a enviar al LCD. Si se va a enviar una cadena de caracteres, éstos deben

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
174

escribirse entre “”. Se pueden enviar valores constantes o de registros pero


deben ir separados por “,”

LCD.CMD

Descripción
Se utiliza para enviar un comando al LCD

Entradas
- “EN” Cada vez que este nodo se energiza, se envía el comando al LCD
- “IN” En este nodo se anota el valor del comando a enviar al LCD. Tiene un
tamaño de un byte y sigue al formato del apéndice 1

LCD.CLR

Descripción
Se utiliza para limpiar la pantalla del LCD

Entrada
“EN” Cuando se energiza esta entrada se limpia el LCD

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
175

9.3 EJEMPLOS DE APLICACIÓN

9.3.1 Activación del LCD y envío de mensajes


En la figura 9.2 se muestra el diagrama en KOP de un programa para enviar
mensajes a un LCD. Puedes encontrar este ejemplo en la carpeta:

“C:\ProyexDuino\Proyectos\PLCmDuino\Programación\Ladder\Ejemplos\Específi
cos para PLCmDuino\LCD”

Figura 9.2 Activación de un LCD y envío de mensajes

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
176

Cada vez que el usuario oprime alguno de los pulsadores conectados en I0.0 o
I0.1, se enviará un mensaje distinto. Si el usuario oprime el pulsador I0.2, el
contenido del LCD se borrará.

OBSERVACIONES
a. En la segunda red, la primera instancia del bloque “LCD.CMD” se utilizó para
situar el cursor en la primera fila y la primera columna del LCD (valor 0x80 de
acuerdo al apéndice 1)

b. En la segunda red, la segunda instancia del bloque “LCD.CMD” se utilizó para


situar el cursor en la segunda fila y la primera columna del LCD (valor 0xC0 de
acuerdo al apéndice 1)

c. En la segunda red, la tercera instancia del bloque “LCD.CMD” se utilizó para


enviar un comando que oculte o no haga visible el cursor pero que mantenga
encendido el LCD (0x0C según el apéndice 1)

d. En la última red del programa, se utiliza el bloque “LCD.CLR” para que cuando
el usuario oprime el pulsador I0.2, se borre el contenido del LCD

En la figura 9.3 se muestra el diagrama del circuito para el ejercicio 9.3.1 con una
tarjeta Arduino UNO. La cadena de configuración de los pines es

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
177

Figura 9.3. Diagrama del circuito para el ejemplo 9.3.1

9.3.2 Escritura del valor de un registro en el LCD


En la figura 9.4 se muestra un programa que envía el valor de un registro al LCD.
El circuito para este programa es el mismo al del ejemplo 9.3.1. Con el pulsador
I0.1 se incrementará en 1 el valor de 16 bits del registro. Con el pulsador I0.2 se
decrementará en 1 su valor. Con el pulsador I0.0 se pondrá en 0 su valor. Este
ejercicio se encuentra en la misma carpeta en donde se encuentra el programa del
ejercicio 9.3.1.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
178

Figura 9.4. Programa para el ejemplo 9.3.2

OBSERVACIONES
a. En la red 2, el bloque “MOVW” se utiliza para transferir un valor de 16 bits al
registro M0 cuando la entrada “EN” se energiza

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
179

b. En la red 3, el bloque “INCW” incrementa en 1 el valor de 16 bits almacenado


en el registro M0 cuando se energiza la entrada “EN”

c. En la red 4, el bloque “DECW” decrementa en 1 el valor de 16 bits almacenado


en el registro M0 cuando se energiza la entrada “EN”

d. En la red 5, el bloque “LCD.MSG” envía una cadena que despliega el valor del
contenido M0. El carácter de control de despliegue “W” que se coloca entre la
letra inicial del registro y el número de registro, indica que el valor en el LCD se
mostrará en decimal. En la tabla 9.1 se muestran los caracteres de control
posibles que se utilizan para desplegar valores de registros en el LCD

Tabla 9.1. Caracteres de control de despliegue


Caracter(es) Representación Ejemplos
de control
Ninguno Para los registros I, Q, M o SM: valor de 8 bits sin M0, I1, Q2
signo en formato decimal
Para temporizadores y contadores: valor de 16 bits
con signo en formato decimal
‘.n’ Valor del n-ésimo bit del registro que le precede M0.1, I1.0, Q2.3
‘B’ Valor de 8 bits sin signo en formato decimal MB0, IB1, QB2
‘L’ Valor de 8 bits sin signo del byte inferior del registro ML0, IL1, QL2
en formato decimal
‘H’ Valor de 8 bits sin signo del byte superior del MH0, IH1, QH2
registro en formato decimal
‘W’ Valor de 16 bits sin signo en formato decimal MW0, IW1, QW2
‘$C’ Cadena con terminación de carácter nulo M$C0, I$C1, Q$C2
‘$B’ Valor de 8 bits sin signo en formato hexadecimal M$B0, I$B1, Q$C2
‘$W’ Valor de 16 bits sin signo en formato hexadecimal M$W0, I$W1, Q$W2

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
180

CAPÍTULO 10

PLCmDuino sin Arduino

Es posible utilizar únicamente el BIOS PLCmDuino sin el hardware de Arduino.


Esta característica es muy útil cuando se desean realizar aplicaciones embebidas
de bajo costo de un solo chip. En la figura 10.1 se muestra un esquema en donde
aparecen las conexiones mínimas que requiere el microcontrolador ATMEL 328P-
PU para poder trabajar con PLCmDuino sin requerir el hardware de la tarjeta
Arduino.

Figura 10.1 Sistema mínimo con el microcontrolador ATMEL 328P-PU

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
181

La lista de componentes del diagrama de la figura 10.1 se muestra en el listado


10.1.

1 microcontrolador ATMEGA328P-PU cargado con el BIOS PLCmDuino-UNO


1 módulo de comunicación Bluetooth HC-06 esclavo
1 cristal de cuarzo de 16 MHz
2 capacitores de 22 pf
1 resistor de 10 kOhm ¼ W
1 LED de color verde
1 resistor de 1 MOhm ¼ W
1 capacitor electrolítico de 1 F 16V
1 conector hembra (jack) USB tipo “A” para circuito impreso

Listado 10.1. Lista de material para armar el circuito de la figura 10.1

El módulo HC-06 permite la programación inalámbrica de PLCmDuino desde


MikroPLAN. En la figura 10.2 se muestra el diagrama electrónico del autómata
PLCmDuino basado en el microcontrolador ATMEG328P-PU con alimentación al
conector USB o con alimentación auxiliar desde una fuente de CD o CA externa.

Figura 10.2 Autómata PLCmDuino basado en el microcontrolador ATMEGA328P-PU

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
182

Si tienes la versión R3 de la tarjeta Arduino UNO con el micro ATMEGA 328P-PU


en su versión DIP, puedes probar cualquiera de los circuitos anteriores
desmontando cuidadosamente el chip de la tarjeta.

En los diagramas de la figuras 10.1 y 10.2, el módulo Bluetooth puede omitirse


para una aplicación embebida que no requiera conexión Bluetooth. Además, si no
se desea comunicación inalámbrica, este módulo puede reemplazarse con
cualquier adaptador USB a serie.

Es importante mencionar que para el caso de utilizar un chip nuevo ATMEGA


328P-PU, se debe cargar el “bootloader” original de Arduino en el dispositivo antes
de cargar PLCmDuino. Consulta el sitio www.arduino.cc para conocer cómo cargar
el “bootloader” a un nuevo microcontrolador desde una tarjeta Arduino.

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
183

APÉNDICE 1
Hoja de datos del LCD
16x2

Versión 2018R6
Fecha de creación: 1/8/2016
Fecha de última revisión: 03/05/2018
The Concise LCD Data Sheet. http://www.senet.com.au/~cpeacock

Instruction RS RW D7 D6 D5 D4 D3 D2 D1 D0 Description Clocks


NOP 0 0 0 0 0 0 0 0 0 0 No Operation 0
Clear Display 0 0 0 0 0 0 0 0 0 1 Clears display & sets address counter to zero. 165
Cursor Home 0 0 0 0 0 0 0 0 1 0 Sets address counter to zero, returns shifted 3
display to original position.
DDRAM contents remains unchanged.
Entry Mode Set 0 0 0 0 0 0 0 1 I/D S Sets cursor move direction, and specifies 3
automatic shift.
Display Control 0 0 0 0 0 0 1 D C B Turns display (D), cursor on/off (C) or cursor 3
blinking(B).
Cursor/display shift 0 0 0 0 0 1 S/C R/L 0 0 Moves cursor and shift display. DDRAM contents 3
remains unchanged.
Function Set 0 0 0 0 1 DL N M G 0 Sets interface data width(DL), number of display 3
lines (N,M) and voltage generator control (G).
Set CGRAM Addr 0 0 0 1 Character Generator RAM Sets CGRAM Address 3
Set DDRAM Addr 0 0 1 Display Data RAM Address Sets DDRAM Address 3
Busy Flag & Addr 0 1 BF Address Counter Reads Busy Flag & Address Counter 0
Read Data 1 0 Read Data Reads data from CGRAM or DDRAM 3
Write Data 1 1 Write Data Writes data from CGRAM or DDRAM 3

Write Cycle

RS
tas tah
R/W

tw
tf
Enable

tr tds th
Data Valid Data

tc

(2)
Parameter Symbol Min (1) Typ (1) Max (1) Unit
Enable Cycle Time tc 500 - - ns
Enable Pulse Width tw 230 - - ns
(High)
Enable Rise/Fall Time tr,tf - - 20 ns
Address Setup Time tas 40 - - ns
Address Hold Time tah 10 - - ns Pin No Name I/O Description
Data Setup Time 80 - ns 1 Vss Power GND
tds
2 Vdd Power +5v
Data Hold Time th 10 - - ns 3 Vo Analog Contrast Control
4 RS Input Register Select
Note 1 The above specifications are a indication only. Timing will vary from manufacturer 5 R/W Input Read/Write
to manufacturer. 6 E Input Enable (Strobe)
7 D0 I/O Data LSB
8 D1 I/O Data
Note 2 A 2 line by 16 Character LCD Module is Pictured. Data will work on most 1 line x 9 D2 I/O Data
16 character, 1 line x 20 character, 2 line x 16 character, 2 line x 20 character, 4 lines x 10 D3 I/O Data
20 character, 2 lines x 40 character etc. modules compatible with the HD44780 LCD 11 D4 I/O Data
Module. 12 D5 I/O Data
13 D6 I/O Data
14 D7 I/O Data MSB

Potrebbero piacerti anche