Tutorial Comunicación WinCC V7.2 con Arduino 1.5.6-r2 Parte 1

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.

  1. . 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.PNG
Captura_1

Le damos un nombre, en este caso Arduino.
Captura_2.PNG
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_1

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 DesignerNueva 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.

b6bc21ddd1c7ddd985cb24b3ef52429e06fabf01.png
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.

cfa2691188684b9c58f66d8f7e2c6765b6bb965b.png
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.

4e57188e7c506caac4b554fe48bae9f1e679ee61.png
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.

a063a308d0287d771b9cc096981edc4085f20636.png
Captura_22_2

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

0bed74bd8b1f05671ec6ed9d6088a1eda6d3fefe.png
Captura_18_2

Manual enlace WinCC V7.2 to Arduino.doc (1.15 MB)

Soft Arduino.zip (1.93 KB)

Configuración Arduino:

Utilización de la librería “Mudbus.h”.

Nos descargamos la librería de Google Code Archive - Long-term storage for Google Code Project Hosting.
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.PNG
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

Captura_A5.PNG

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:

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.

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.

Captura_13_1.png

Captura_15_1.png

Captura_18_1.png

Captura_18_2.png

Captura_21_1.png

Captura_22_2.PNG

268/5000
Buen día,

Intento tu código arduino con HR911105A eathernet shield y Arduino mega pero el escudo eathernet no recibió ninguna ip?
¿Podría enviarme la biblioteca eathernet ya que puede ser el problema
Lamento el idioma porque uso el traductor de google del inglés al español

El proyecto esta realizado para el shield w5100 con el shield ENC28J60 no lo he provado.

El HR911105A que comentas es sólo el conector hembra del cable RJ45, asegurate de que el chip del shield es el W5100.

Las librerias las puedes encontrar aqui.

El manual aqui.

Dentro del último enlaze tienes un archivo comprimido con toda la información y algo más.

Espero haber ayudado.

Hola:

Iba a comprar el Logo 8, pero dicen que el S7-1200 está por los 100 €, lo puedo conectar con Arduino y sobre todo, usar Visual C# .net, crear mi interfaz y todo para controlarlo.

Ver vídeo.

Saludos.

Hola, primero muchas gracias por el aporte.

Veo que estas en el "Maravilloso" mundo de TIA Portal, no sé con qué última versión estarás trabajando (Aún no lo veo muy poco estable, cambian de versiones demasiado amenudo sobre todo si tienes Sinamics integrado). Aún estoy trabajando con WinCC Flexible 2008 SP2/SP3, Step 7, DriveMonitor incluso algo de Protool :slightly_frowning_face: .

El elegir Arduino fué una cuestión meramente económica ya que cualquier elemento de harware de la marca Siemens puede resultar un desembolso económico interesante.

El elegir WinCC fué por dos motivos:

  • Primero, la interface ya la conocía

  • Segundo, el poner un mero gauge no me supone más de un minuto.

Básicamente buscaba realizar proyectos rápidamente.

Repito muchas gracias por el aporte.