Go Down

Topic: Tutorial Comunicación WinCC V7.2 con Arduino 1.5.6-r2 Parte 1 (Read 222 times) previous topic - next topic

GuillemR

Hola a todos, como muy bien dice Jopapa, voy ha explicar que es WinCC.


WinCC es un SCADA del señor SIEMENS, el cual nos permite adquirir datos de aquellos PLC o en este caso micro-controladores que estén conectados a él, eso nos permite registrar, visualizar, manipular, re-difundir, las variables a las cuales tiene acceso, también puede enlazar con SQL server y hacer infinidad de cosas.


El motivo de hacer este tutorial es reflejar los conocimientos que he adquirido al realizar mi propio proyecto, que consiste en domotizar toda mi casa (obra nueva) y tener un control total de mi casa desde calefacción, control de persianas, consumos eléctricos (parciales y totales), consumos de agua, etc. 





MANUAL PARA ENLAZAR WinCC V7.2 con Arduino 1.5.6-r2



1.      . Configuración WinCC:

a)      Creación del proyecto.
b)      Configuración del nodo de conexión Modbus TCP.
c)      Declaración de variables.
d)      Creación de pantalla.
e)      Visualización de variables y configuración.

2.      . Configuración Arduino:

a)      Utilización de la librería  "Mudbus.h".
b)      Realización de programa.
c)      Programa.



Configuración WinCC:

Creación del proyecto:
Se supone que ya tenemos WinCC 7.2 instalado con SIMATIC NET para asegurarnos que no tendremos problemas con los drives de Motbus TCP/IP y digo que se supone que está instalado porque esto daría para otro manual.
En este caso vamos a hacer un proyecto monopuesto, vamos a lo sencillo, el que quiera experimentar……..

Captura_1

Le damos un nombre, en este caso Arduino.

Captura_2

Ya tenemos el proyecto Iniciado.
Configuración del nodo de conexión Modbus TCP.
Ahora nos aparecerá una pantalla en la que en el marguen izquierdo nos saldrá un árbol en donde aparece  Administración de variables clicamos dos veces y nos saldrá otra ventana.


Captura_3_1

En esta ventana tenemos un árbol en el cual también tenemos Administración de variables. Clicamos con el botón derecho y agregamos un driver Modbus TCPIP.

Captura_3_1

Ahora ya tendremos agregado el drive de Modbus TCPIP le podemos cambiar el nombre en este caso le ponemos Arduino.

Captura_4_1

Una vez le hayamos cambiado el nombre, hacemos clic con botón derecho y pulsamos parámetros de enlace.

Captura_5_1

Ahora sí, aquí es donde viene lo bueno. Aquí es donde tendremos que poner la IP del esclavo Modbus, en nuestro caso IP: 192.168.0.69 por el puerto 502, lo demás no lo tocaremos.

Captura_6_1


Declaración de variables.
Bien ahora ya tenemos el drive o nodo configurado, vamos a declarar variables, para ello vamos a la parrilla que nos sale a la derecha y al lio. Nombre de variable, tipo de dato, cuidado con esto es muy importante ya que Arduino nos va enviar enteros con  signo, también puede enviar booleanos, pero yo utilizo enteros sin signo para enviar booleanos, multiplexo en arduino y desmultiplexo en WinCC.

Captura_7_1

Si clicamos en los puntos suspensivos de la pestaña Dirección nos saldrá una ventanita donde debemos seleccionar el tipo de área de memoria en este caso 4x Holding Registers  400001 es donde iremos a leer el valor de Arduino tenemos que tener en cuenta que en Arduino vamos a escribir en un array donde el primer registro es 0 mientras que en WinCC es  1.
También se pueden separar las variables en grupos.


Captura_10_2

Ordenamos las variables y les asignamos las áreas de memoria.

Captura_11.1


Creación de pantalla.
Ahora iremos a crear lo que nos interesa, pantallas.
Vamos a ir a lo más básico, enviar y recibir dos tipos de datos, enteros y booleanos entre Arduino y WinCC.
De momento vamos a por la pantalla, en Graphic Designer - Nueva imagen


Captura_12


Nos aparecerá un nuevo archivo en la ventana de la derecha en el que tendremos que clicar con el botón derecho y clicar en Definir imagen como imagen inicial no hace falta explicar que hace esto.


Captura_13_1


Visualización de variables y configuración.
Una vez hecho esto abriremos el archivo que ya habremos cambiado de nombre, en este caso lo he nombrado Principal, con la extensión *.Pdl.


Captura_14

Seleccionaremos, en el árbol de la izquierda, donde nos aparecen muchos de los controles de WinCC. Campo E/S. Una vez que ya tengamos seleccionado este campo iremos a la parrilla central para marcar un rectángulo.


Captura_15_1

Nos aparecerá una ventana que nos mostrará que Variable queremos poner, tiempo de Actualización, si es Entrada, Salida o E/S Tamaño de fuente Tipo de fuente. Color.


Captura_16_1

Seleccionamos La variable del desplegable, Integer_IN y en el tipo de campo marcamos Salida.


Captura_18_1

En la ventana inferior tenemos una pestaña Propiedades donde podremos configurar el objeto seleccionado.


Captura_19_1


Captura_20_1

Para las entradas y salidas booleanas tendremos que modificar el formato de dato y el formato de salida para poder ver los bits correctamente.


Captura_22_1

El resultado final sería este.


Captura_22_2  

Importante: Las variables de Arduino à  WinCC las tendremos que marcar como Salidas y las variables de WinCC à Arduino como Entradas .


Captura_18_2


Ni sí, ni no, tot el contrari.

GuillemR

Configuración Arduino:


Utilización de la librería  "Mudbus.h".

Nos descargamos la librería de https://code.google.com/p/mudbus/downloads/list
Abriremos el ejemplo que trae la misma librería y la modificaremos. Suponemos que ya sabemos instalar librerías en Arduino, http://www.arduino.cc/en/Guide/Libraries.
Muy importante utilizar la versión de Arduino 1.5.6-r2 las versiones posteriores no compila la librería.


Realización de programa.

Bien ya tenemos la librería instalada en nuestro Arduino 1.5.6-r2, vamos a abrir el ejemplo y a modificar cuatro cosas para comunicar con WinCC.
Lo primero modificar la IP que trae por defecto y poner la que hemos configurado en el drive de WinCC IP: 192.168.0.69, también modificaremos el gatway: 192.168.0.1.


Captura_A1

Bien, ahora vamos a trabajar un poco con las variables booleanas, para ello vamos a crear una nueva pestaña, en este caso IO_Modbbus.
El fin de esto es enviar o recibir 16 valores booleanos en una sola transferencia, para ello vamos a crear un array de 16 valores booleanos D_OUT_Modbus[15] en el caso  de las salidas digitales y D_IN_Modbus[15] para las entradas, tener en cuenta que el primer registro es 0.
Utilizaremos las funciónes bitWrite http://www.arduino.cc/en/Reference/BitWrite.
bitRead http://www.arduino.cc/en/Reference/BitRead. para poder realizar todo esto.

Declaramos las array y los enteros que van a contener esos valores.


Captura_A2

Declararemos también un entero que es donde almacenaremos el valor recibido por WinCC,


Captura_A9

Introducimos el valor del bit en el entero para el envío a WinCC.


Captura_A3

Extraemos los valores del entero recibido de WinCC.


Captura_A4

Todo esto en la nueva pestaña, donde habremos creado una función que será llamada desde inicio de programa.


Captura_A11

Aquí está la llamada.


Captura_A6

En ésta parte colocaremos los envíos y recepciones de datos.


Captura_A12

Seguidamente haremos la comprobación de los datos recibidos y enviados para visualizar en Arduino que realmente tenemos comunicación.


Captura_A8

Visualizar por serie el valor del entero enviado desde WinCC.


Captura_A10
Ni sí, ni no, tot el contrari.

GuillemR

Decir que también funciona con WinCC 7.3, que además tiene la función Webserver para poder ver todas las pantallas que hagamos en WinCC en cualquier dispositivo tablet, Iphone, Android, PC. etc.

Aquí un enlaze donde explica como configurar para hacer esta función, una página muy recomendable de mi amigo Jose Manuel Luque.

Aquí esta todo el proyecto:

https://www.dropbox.com/s/2wkdom424qev6ew/Manual%20WinCC%20Arduino.rar?dl=0

Ni sí, ni no, tot el contrari.

Jopapa

GuillemR, gracias por tu esfuerzo, pero...
Cuando se hace una publicación, lo primero primero es describir de que va la cosa y aunque sea brevemente hay que explicar que es WinCC, para que nos puede servir y cosas así.
Si lo primero que me explicas es la configuración sin saber de que va, pues termino de leer.

Un saludo

Jopapa

P.D. Si, ya se que todo está en Inet, pero eso no exime.
Jopapa
www.jopapa.me

GuillemR

Lo tenia tan metido en la cabeza.....  que se me pasó por alto.

Ahora edito y explico un poco que es WinCC, doy por supuestas cosas que quizás no se entiende.

Al estar trabajando con WinCC en el curro lo daba por supuesto.
Ni sí, ni no, tot el contrari.

Go Up