IoT2040 - Primeros Pasos
IoT2040 - Primeros Pasos
IoT2040 - Primeros Pasos
SIMATIC IOT2040:
Primera instalación y
primer programa en
node-red
SIMATIC IOT2040
V1.0, Ene. 2018
No aceptamos ninguna responsabilidad por la información contenida en este documento. Cualquier reclamo
contra nosotros, basado en cualquier razón legal, que resulte del uso de los ejemplos, información, programas,
ingeniería y datos de rendimiento, etc., descritos en este Ejemplo de aplicación se excluirán. Dicha exclusión no
se aplicará en el caso de responsabilidad obligatoria, por ejemplo en virtud de la Ley alemana de
responsabilidad por productos defectuosos ("Produkthaftungsgesetz"), en caso de intención, negligencia grave
© Siemens SA 2018 Todos los derechos reservados
o lesión de la vida, el cuerpo o la salud, garantía de la calidad de un producto, ocultación fraudulenta de una
deficiencia o incumplimiento de una condición que va a la raíz del contrato ("wesentliche Vertragspflichten").
Los daños por incumplimiento de una obligación contractual sustancial están, sin embargo, limitados al daño
previsible, típico para el tipo de contrato, excepto en caso de intención o negligencia grave o lesión a la vida, el
cuerpo o la salud. Las disposiciones anteriores no implican un cambio de la carga de la prueba en su perjuicio.
Se prohíbe cualquier forma de duplicación o distribución de estos Ejemplos de aplicación o extractos del
presente sin el consentimiento expreso de Siemens SA.
Información de seguridad
Siemens ofrece productos y soluciones con funciones de seguridad industrial con el objetivo de hacer
más seguro el funcionamiento de instalaciones, sistemas, máquinas y redes.
Para proteger las instalaciones, los sistemas, las máquinas y las redes de amenazas cibernéticas, es
necesario implementar (y mantener continuamente) un concepto de seguridad industrial integral que
sea conforme a la tecnología más avanzada. Los productos y las soluciones de Siemens constituyen
únicamente una parte de este concepto.
- 2 Cables Ethernet
- Fuente de alimentación
- SIMATIC IOT2040
- Conexión a internet
- PLC Siemens
© Siemens SA 2018 Todos los derechos reservados
Una vez se ha instalado el Win32DiskImager, se abre el programa, se selecciona el archivo .wic de la imagen
(para ello se debe descomprimir el .zip descargado), se especifica la unidad en la que se encuentra la tarjeta
microSD, y se escribe la imagen. Nota: Para escribir la imagen la tarjeta microSD debe estar vacía, en caso de
que no lo esté hay que formatearla.
Una vez que la imagen se ha escrito se puede ver que el nombre de la tarjeta ha cambiado y que dentro de ella
hay dos carpetas y un archivo.
Desde el escritorio o menú de inicio de Windows, clic con el botón derecho en Equipo.
Abrir la ranura
Una vez que la tarjeta está colocada, se alimenta el dispositivo a través del puerto X80. Se encenderá el led PWR
indicando que el dispositivo está alimentado, y unos segundos después se encenderá el led USB que indica que
el IOT ya ha arrancado.
En tercer lugar se encenderá el led SD y estará intermitentemente parpadeando o en encendido fijo durante
unos minutos. En el primer arranque del IOT el sistema redimensiona la tarjeta microSD, es decir, asigna la
Para acceder al dispositivo se conecta un cable Ethernet desde el puerto X1 del SIMATIC IOT2040 al PC. Por
defecto el dispositivo tiene asignada la IP 192.168.200.1. Para que nuestro PC pueda ver conectado el
dispositivo, debe estar en la misma red IP. Para modificar la red del PC seguimos los si guientes pasos:
Panel de control -> Redes e Internet -> Centro de redes y recursos compartidos.
Clic con el botón derecho en Conexión de área local o Local Area Connection.
Clic con el botón izquierdo en Protocolo de Internet versión 4 (TCP/IPv4) y clic en Propiedades.
© Siemens SA 2018 Todos los derechos reservados
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant.conf
© Siemens SA 2018 Todos los derechos reservados
Allow-hotplug wlan0 es para permitir detectar eventos de conexión o desconexión de hardware (cable, usb,
etc.) en la interfaz, auto wlan0 inicia automáticamente la interfaz cuando se inicia el dispositivo, iface wlan0
inet dhcp indica que se le va a asignar una dirección IP dinámica, y wpa-conf /etc/wpa_supplicant.conf indica el
directorio en el que se encuentra el archivo de configuración de la interfaz.
- Comando cd /etc
key_mgmt=WPA-PSK
ksid=”nombre_de_la_conexión”
psk=”contraseña_de_la_conexión”
En este caso se va a conectar a la conexión de internet compartida de un teléfono móvil, en el que el usuario es
AndroidAP y la contraseña kvvg6362.
© Siemens SA 2018 Todos los derechos reservados
Nuestro programa va a leer datos de un PLC utilizando el protocolo S7 y va a enviar dichos datos por email. Para
ello, en primer lugar debemos iniciar Node-red, ver qué paquetes de nodos están instalados por defecto, y qué
paquetes de nodos necesitamos instalar para las funcionalidades que queremos.
Nodo Tipo
S7 Input
Function Function
Switch Function
Debug Output
E mail Social
Todos vienen instalados por defecto con node-red, excepto el nodo S7, que debemos instalarlo.
Hay dos formas de instalar un paquete de nodos, a través del terminal, o a través de node -red. Para la
instalación es necesario que el dispositivo tenga conexión a internet. A través del terminal:
- Comando npm install nombre_del_paquete para instalar. En nuestro caso npm install node-red-
contrib-s7 para instalar los nodos de input y output de s7.
© Siemens SA 2018 Todos los derechos reservados
- Una vez se ha instalado el paquete, reiniciamos el dispositivo e iniciamos nuevamente node -red con el
comando node /usr/lib/node_modules/node-red/red &. Veremos que ya se ha instalado el paquete.
- Menú de la izquierda -> Pestaña Install -> Buscar “node-red-contrib-s7” -> Install
7. Programación en Node-red
Supongamos que estamos en una fábrica de producción de zumos, queremos que el encargado de
mantenimiento reciba una notificación cada día cuando la producción cumpla el objetivo de 4000 zumos
embotellados y además le indique el nivel de los tanques de materia prima. Uno de los PLCs de p lanta contiene
esta información; la presión, la temperatura, el nivel de los tanques, el número de zumos embotellados, la
materia prima necesaria para cada zumo, etc.
Nuestro programa de Node-red debe obtener estos datos de planta, comprobar si se ha llegado al objetivo
fijado, y enviar la notificación.
Nodo Tipo
S7 Input
Function Function
Switch Function
Debug Output
E mail Social
Seleccionando un nodo en el workspace, en la columna de la parte derecha el apartado info nos da información
sobre el funcionamiento de dicho nodo y sobre cómo configurarlo.
Con doble click se accede a la configuración del nodo. El primer paso es añadir la conexión al PLC. Para ello
pulsamos sobre el icono de modificar a la derecha de “Add new s7 endpoint”.
Aparecen 2 pestañas; la primera para definir la conexión y la segunda para definir las variables a leer.
abrimos el PLC y doble click en Configuración de dispositivos. Desde este menú podemos ver el rack y el slot del
PLC, y en el menú inferior, en el apartado Direcciones Ethernet de la pestaña General, la dirección IP.
Importante: En el PLC debemos habilitar el acceso vía comunicación PUT/GET. Para ello en el menú inferior
vamos a General -> Protección & Seguridad -> Mecanismos de conexión -> Permitir acceso vía comunicación
PUT/GET del interlocutor remoto.
ocupan dichas variables en el PLC. Para ello, lo más sencillo y recomendable es crear un DB en el programa del
PLC en el que agrupemos todas las variables que queremos leer a través del IOT.
En el programa de nuestro PLC, la variable que indica el nivel del tanque 1 se encuentra en el DB 23, es de tipo
Int, y la región de memoria es el Offset 26. En la pestaña de variables del nodo s7 definimos DB23,INT26 para
la variable nivel_tanque_1. De forma análoga definimos el resto de variables que queremos leer.
Una vez hemos terminado de añadir las variables, click en Add. En el menú del nodo seleccionamos el modo All
variables, y click en Done.
En este nodo vamos a programar una función sencilla que compruebe cuántas botellas se han producido y que
en el momento en el que se llegue a las 4000 habilite la notificación. Además vamos a definir el texto de la
notificación.
Con doble click accedemos al nodo. El apartado “Name” es para dar un nombre a la función para que desde el
workspace podamos identificar qué hace el nodo, este nombre solo es informativo. En el cuerpo de la función
copiamos el siguiente texto:
if (msg.payload.botellas_producidas == 4000){
msg.notificar = 1;
msg.topic = "Botellas producidas"
msg.payload = "Le informamos de que ya se han producido 4000 botellas y los niveles de los
tanques son los siguientes: \n\n Tanque 1: " + msg.payload.nivel_tanque_1 +"% \n Tanque 2: " +
msg.payload.nivel_tanque_2 + "% \n Tanque 3: " + msg.payload.nivel_tanque_3 + "% \n\n Un
saludo, \n PLC.";
}else{
msg.notificar = 0;
}
return msg;
La función comprueba el número de botellas, en caso de que sea 4000, pone la variable notificar a 1. Como
veremos más adelante, el nodo email indica como asunto del correo electrónico el campo topic, y en el cuerpo
del correo envía el contenido del campo payload, por lo que definimos dichos campos. En caso de que las
botellas producidas no sean 4000, la variable notificar será 0. De esta forma nos aseguramos de que solo envía
un correo electrónico.
El nodo switch sirve para definir distintos caminos del flujo en función de alguna variable. En nuestro caso lo
vamos a utilizar para que en caso de que la variable notificar esté a 1 vaya por un camino, y en caso de que esté
a 0 vaya por otro.
Para ello en el campo property, borramos payload y escribimos notificar, que es el campo que nos dice si hay
que enviar email o no. En cuanto a las posibles ramas, en la primera cambiamos el tipo de string a number y le
damos valor 1, y añadimos una segunda para el valor 0, y done. Ahora en la salida del nodo switch apar ece una
segunda rama.
© Siemens SA 2018 Todos los derechos reservados
Nodo debug.
El nodo debug se utiliza para mostrar mensajes en la pestaña debug o en la ventana de comandos. En nuestro
caso lo vamos a utilizar para que en los casos en los que no haya que notificar por email, nos muestre todas las
variables y podamos ver cómo va la producción. Para ello, doble click para acceder a la configuración del nodo,
en output seleccionamos complete msg object, y en to seleccionamos debug tab o debug tab and console en
función de si queremos que muestre los mensajes en la columna debug o en la columna y en la ventana de
comandos.
La configuración del nodo email es bastante sencilla. Debemos rellenar los datos del destinatario y del
© Siemens SA 2018 Todos los derechos reservados
remitente. En el caso del destinatario, únicamente hace falta la dirección de correo electrónico. Para el caso del
remitente, necesitamos conocer el servidor de correo electrónico y el puerto, para el caso de gmail ya viene
indicado. Además se debe indicar el usuario y contraseña del correo electrónico. Debemos pensar que el envío
de correo electrónico se hace de la misma forma en la que se hace manualmente, hay que acceder a la cuenta,
redactar el correo y enviarlo, por ello, necesitamos indicar el usuario y la contraseña , para que nuestro
programa pueda acceder a él.
En el caso de utilizar gmail, hay que indicar en la cuenta del remitente que una aplicación va a acceder a ella
para enviar correos, es decir, hay que dar permiso para que nuestro programa pueda acceder
automáticamente. Esta opción se encuentra en los ajustes de nuestra cuenta de gmail -> Aplicaciones con
acceso a la cuenta -> Permitir el acceso de aplicaciones menos seguras. Una vez se habilita el acceso a través
de estas aplicaciones, se recibe un email informativo en el correo electrónico en el que se ha habilitado.
Finalmente, para terminar el programa de node-red, el último paso es conectar los nodos.
Una vez conectados los nodos, se pulsa Deploy en la esquina superior derecha para compilar el programa. Si
hemos seguido todos los pasos correctamente, la compilación debería ser satisfactoria. En cambio, si vamos a
la pestaña debug del menú derecho, aparece un error de conexión al PLC.
A través del terminal esta configuración se realiza modificando el archivo interfaces. En él se debe asignar a la
interfaz una dirección IP que esté en la misma red que el PLC. En nuestro caso el PLC tiene la dirección
172.168.78.1, por lo que a la interfaz le vamos a asignar la dirección 172.168.78.10. Para ello:
auto eth1
iface eth1 inet static
address 172.168.78.10
netmask 255.255.255.0
Para que se apliquen los cambios reiniciamos las interfaces con el comando /etc/init.d/networking restart
Si se optase por hacer la configuración a través del menú iot2000setup, se seguirían los pasos siguientes:
En este caso no es necesario reiniciar las interfaces para que se apliquen los cambios.
9. Envío de e-mail.
Si hemos seguido todos los pasos correctamente nuestro programa debería estar funcionando y cuando el
programa alcance las 4000 botellas producidas nos enviará un e-mail como el siguiente: