Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUÍA DE LABORATORIO
Proceso de Aprendizaje
Equipos y materiales:
Es por ello que la integración del “cloud computing” con los sistemas ciber-físicos, ha tenido un
impacto muy favorable en todos los sectores industriales debido a gran capacidad para
garantizar una alta disponibilidad, gran escalabilidad para el almacenamiento y procesamiento
de datos.
Por lo general, el sistema físico se encarga de enviar mensajes en base a eventos, por lo que
tiene el rol de “publicador”. Por otro lado, el sistema ciber se encarga de procesar dichos
mensajes y ejecutar lógicas de comunicación, por lo que tiene el rol de “broker” y “suscriptor”.
Los protocolos de comunicación orientados al IoT más conocidos son: (i) CoAP (“Constrained
Application Protocol”) y MQTT (“Message Queuing Telemetry Transport”). Los mensajes,
también conocidos como payload tiene una estructura en formato JSON (“JavaScript Object
Notation”) (ver figura 2.).
Para entender el funcionamiento del protocolo MQTT, se debe tener en cuenta los siguientes
conceptos (ver figura 3):
Por otro lado, la comunicación entre las tecnologías de operación es a través de protocolos como
el UDP (User Datagram Protocol), y el Ethernet/IP (Industrial Protocol).
2. Arquitectura OT/IT
Durante este laboratorio, el alumno va a interactuar con 3 tecnologías: (i) CODESYS, para simular
el entorno de un HMI / PLC; Node-RED, para simular el entorno de un “Gateway” industrial; y
Amazon IoT Core, como servicio de ingesta y analítica de una arquitectura de “cloud computing”.
Así mismo, se utilizará los protocolos UDP y MQTT para realizar intercambio de mensajes en
formato JSON entre las diferentes tecnologías.
Figura 4. Arquitectura.
3. CODESYS
Librería: PRO_JSON.library
Proyecto: udp_interfaz.project.
Documento: LAB1-MEC328.json
Paso 3: Haga clic derecho en el icono de Windows y luego clic en “Ejecutar”. Se le abrirá una
ventana, ingrese la palabra “cmd”, luego clic en “Aceptar”. Se abrirá una ventana de símbolo de
sistema, ingrese en comando “ipconfig” y presione la tecla ENTER.
Paso 4: Copie la dirección IPv4 de su adaptador Ethernet LAN/WLAN, que la utilizaremos más
adelante.
Paso 8: Haga clic derecho en el PLC virtual y luego clic en “Start PLC”. Puede tomar unos
segundos para que inicie.
Paso 10: Dentro del programa, en la barra de opciones, diríjase a: Herramientas > Repositorio
de bibliotecas. Se abrirá una ventana de “Repositorio de biblioteca”, en la que debe hacer clic
en “Instalar…”.
Paso 11: Se abrirá una ventana como en la imagen inferior. Diríjase a la ruta donde guardó la
librería. Luego, selecciones la opción “*.library”.
Paso 12: Le deberá aparecer la librería que usted ha descargado. Seleccione dicha librería, y haga
clic en “Abrir”. Se cerrará esta ventana.
Paso 13: Se mostrará la primera ventana con el detalle que se muestra en la imagen inferior. La
librería ha sido correctamente instalada. Haga clic en “Cerrar”.
3.3. Configuración del proyecto
Paso 14: En la barra de opciones, diríjase a: Archivo > Abrir. Se abrirá una ventana como en la
imagen inferior, seleccione el archivo “udp_interfaz.project”. Luego haga clic en “Abrir”.
Paso 15: En la raíz del proyecto, haga doble clic en “Administrador de bibliotecas”. Luego clic en
“Agregar biblioteca”. Se abrirá una ventana donde debe colocar el nombre de la librería (“PRO
JSON”), seleccionar la librería y finalmente clic en “Ok”.
Paso 16: En la raíz del proyecto, haga clic doble clic en “PLC_PRG”. Luego edite la línea 12 de la
ventana de declaración de variable cambiando la variable IP_REMOTA con su propia dirección
IP (del paso 3 y 4).
Paso 17: En la raíz del proyecto, haga clic doble clic en “Device (CODESYS Control Win V3)”.
Paso 20: Haga clic en la puerta de enlace creada llamada “Gateway-1”. Luego clic en el botón
“Examinar red”.
Paso 21: Observe que aparecerá el PLC virtual con el nombre de su computadora o usuario de
Windows. Haga clic encima del PLC virtual. Luego clic en el botón “Establecer una ruta activa”.
Paso 22: En la barra de opciones, haga clic en el botón de compilar o presione la tecla F11.
Observe que en la parte posterior del programa se indica que la compilación ha terminado sin
errores y advertencias.
Paso 23: En la barra de opciones, haga clic en el botón de Iniciar sesión o presione Alt+F8.
Aparecerá una ventana en la que deberá seleccionar la opción “Iniciar sesión descarga”, luego
clic en “Aceptar”.
|
Paso 24: SÓLO EN CASO que aparezca los siguientes mensajes, haga clic en el botón “Si” en
ambas ventanas.
Paso 25: Al descargarse el programa en el PLC virtual, este inicia en modo “STOP” por defecto.
Haga clic en el botón “Inicio (F5)” para pasarlo al modo “RUN”. En caso se requiera actualizar
algún parámetro en la declaración de variables, deberá detener el PLC virtual (modo “STOP”),
hacer el cambio e iniciar el PLC virtual (modo “RUN”).
Paso 26: En la barra de opciones, haga clic doble clic en “Visualization”. Se mostrará una interfaz
gráfica en la cual usted va a interactuar.
3.4. Configuración del cliente UDP
Paso 27: Instale el programa “Hercules SETUP utility” desde al siguiente link. Al finalizar su
descarga, inicie el programa dándole doble clic.
Paso 28: Al inicializar el programa, aparecerá una ventana marque la opción “Don’t show later”
y luego haga clic en “Donde”
|
Paso 29: Dentro el programa, haga clic en la pestaña “UDP”.
Paso 30: Se abrirá una alerta de seguridad de Windows, en la cual deberá marcar la opción de
“Redes privadas, como las domésticas o del trabajo” y luego clic en “Permitir acceso”.
|
Paso 31: Dentro del programa, en la pestaña “UDP” deberá ingresar su dirección IP en la sección
“Module IP”, en la sección “Port” ingrese el número “8195”, en la sección “Local Port” ingrese
en número “8190”. Luego haga clic en “Listen”.
Nota:
Module IP: Es la IP del dispositivo al cual queremos enviar mensajes por el protocolo
UDP. Para este caso práctico, es la IP del PLC virtual, que hereda la IP de su computadora.
Local Port: Es el puerto de comunicación para recibir mensajes.
Port: Es el puerto de comunicación para enviar mensajes.
3.5. Prueba de concepto 1: Comunicación UDP
Paso 32: En la interfaz gráfica de CODESYS, haga clic sobre el ícono del interruptor para activar
la comunicación UDP.
Paso 33: En la interfaz gráfica de CODESYS, ingrese los datos que solicitan: Primer Nombre,
Primer Apellido y Código. Y luego haga clic sobre el botón de “Enviar Datos”.
Paso 34: Observe que en el programa “Hercules SETUP utility”, se muestra el mensaje que ha
enviado desde CODESYS.
{"Recibe":{"mensaje":"Alumno matriculado","resultado":"Ok"}}
|
Paso 36: En la interfaz gráfica de CODESYS , haga clic sobre el botón de “Recibir Datos”. Observe
que en el programa CODESYS, se muestra el mensaje que ha enviado desde “Hercules SETUP
utility”.
Nota: Notifique a su Jefe de Práctica cuando logre la comunicación bidireccional a través del
protocolo UDP.
*Para mayor información sobre cómo se ha hecho la comunicación UDP en Codesys, ve este
vídeo haciendo clic en este link.
4. Amazon IoT Core
Amazon IoT Core, es un servicio de ingesta y analítica que hace posible la comunicación
bidireccional y segura entre dispositivos conectados a Internet y a la nube de AWS a través de
los protocolos MQTT (Message Queue Telemetry Transport) y HTTP (Hypertext Transfer
Protocol). Se compone de los siguientes elementos:
Sombras: es una versión persistente de cada uno de los dispositivos que están
conectados hacia AWS IoT Core. La sombra almacena datos del dispositivo en formato
JSON, e incluye: el estado, la versión de la sombra y el timestamp. De esta forma, otros
servicios e inclusive dispositivos pueden leer (por suscripción) y/o modificar (por
publicación) el estado de las sombras. Cada sombra tiene un tema reservado: (i) desired,
se utiliza para modificar el estado deseado de la sombra, (ii) reported, se utiliza para
modificar el estado real de la sombra, (iii) delta, se utiliza para obtener la diferencia
entre los estados anteriores.
Paso 37: Inicie sesión en la consola de administración de AWS. En el formulario, ingrese su código
de alumno en “Nombre de usuario” y consulte con su Jefe de Práctica la contraseña que debe
ingresar. Haga clic en “Iniciar sesión”.
Paso 38: Luego de ingresar sus credenciales, aparecerá una ventana como en la imagen inferior,
haga clic en la “X”.
Paso 39: Al ingresar a la página de inicio de la consola, note que la región de operación es Norte
de Virginia (us-east-1). Esto significa que los servicios que se aprovisionen estarán dentro de los
límites de esa región.
Paso 40: Cambie la región de operación de acuerdo al horario que pertenece, ver tabla.
N. California
10M2
us-west-1
Ohio
10M3
us-east-2
Oregon
10M4
us-west-2
Paso 41: Busque el servicio de IoT Core. Y haga clic en la primera opción que le aparece.
Paso 42: Dentro del menú de opciones del servicio IoT Core. Diríjase a: Administración > Objetos
> Crear objetos. Luego de ello, clic en “Crear objetos”.
4.2. Creación de objeto y sombra – IoT Core
Ahora corresponde crear el primer recurso dentro del servicio IoT Core. Este recurso es un
“objeto IoT”, el cual se puede definir como una representación digital de un dispositivo físico o
una entidad lógica en AWS IoT Core.
Cabe mencionar que su dispositivo físico o entidad lógica necesita estar asociado a este “objeto
IoT” para utilizar funcionalidades del servicio Amazon IoT Core como los topics, sombras y reglas.
Paso 43: Para crear un objeto, seleccione la opción “Crear un único objeto”, luego haga clic en
“Siguiente”.
Paso 44: En el formulario de “Propiedades del objeto” defina un nombre para su “objeto IoT”
con su código de alumno (Ejemplo: Objeto_20154240).
Nota:
Para efectos prácticos, las configuraciones adicionales como tipo de objeto, atributos, grupos de
objeto y grupo de facturación manténgalo en opcional. Estas configuraciones ayudan a
organizar los diferentes “objetos IoT” creados para segmentarlos según atributos/características
y facturación.
Paso 45: En el formulario de “Sombra de dispositivo”, marque la opción de “Sombra con
nombre” y defina un nombre con su código de alumno (Ejemplo: “Sombra_20154240”).
Ahora corresponde crear una política para asociarla al certificado que ha sido creado en el
paso anterior. Para ello, haga clic en “Crear política”.
Tipo de
Acción Permiso para...
recurso
iot:Connect client Conectarse al agente de mensajes de AWS IoT Core.
iot:Publish Publicar un mensaje en un determinado topic.
iot:Receive Recibir un mensaje por parte de AWS IoT Core.
iot:GetRetainedMessage Obtener el contenido de un mensaje retenido.
topic
Recuperar una lista resumida de los mensajes
iot:ListRetainedMessages
retenidos.
iot:RetainPublish Publicar un mensaje con la etiqueta RETAIN.
iot:Subscribe topicfilter Suscribirse a un determinado tema.
iot:DeleteThingShadow Eliminar una sombra.
iot:UpdateThingShadow Actualizar una sombra del
iot:DescribeJobExecution thing Recuperar información de progreso del trabajo
iot:GetPendingJobExecutions Recuperar la lista de trabajos en espera de ejecución.
iot:UpdateJobExecutions Iniciar una ejecución de trabajo pendiente.
En cuanto a los recursos dentro del servicio Amazon IoT Core, tienen asociado un ARN, el cual
tienen a siguiente forma:
arn:aws:iot:region:AWS-account-ID:Resource-type/Resource-name
En la región Norte de Virginia (us-east-1), los ARN deben ser referenciados según los ejemplos
de siguiente tabla.
Para obtener el “region” tenga en cuenta el horario que pertenece. Para obtener el “AWS
Account ID” consulte con su Jefe de Prácticas.
Paso 48: Para crear una política haga clic en la opción “Crear política”, se abrirá una nueva
pestaña en su navegador.
Paso 49: En la nueva pestaña, aparecerán dos formularios: (i) “Propiedades de la política” y
“Documento de política”. En el primer formulario, ingrese el nombre de la política con su código
de alumno (Ejemplo: Politica_20154240).
Paso 50: En el segundo formulario, haga clic en la opción de “Agregar nueva instrucción” y
agregue los 05 parámetros que se muestran en la imagen inferior. Finalmente, haga clic en
“Crear”.
Nota:
Al colocar el símbolo “*”, usted concede permisos para que el objeto IoT: (i) se conecte
utilizando cualquier nombre, (ii) publique en cualquier tema, (iii) reciba mensajes en cualquier
tema, (iv) se suscriba en cualquier tema, y (v) actualice cualquier sombra creada. Cabe
mencionar, que no esto una buena práctica de seguridad. Sin embargo, para efectos práctico se
manejará de esa manera.
Paso 51: Retorne a la pestaña anterior, y observe que aparece la política creada en el paso
anterior. Seleccione dicha política y luego haga clic en “Crear un objeto”.
Paso 52: Le aparecerá una ventana tipo pop-up, en la cual usted deberá descargar y almacenar
05 certificados en la carpeta “Coloque aquí sus Certificados”. Para ello, haga clic en todas las
opciones que aparece con el nombre de “Descargar”. Finalmente, haga clic en “Listo”.
Nota:
Paso 53: Dentro del menú de opciones del servicio IoT Core. Diríjase a: Configuración. En el
formulario “Punto de enlace de datos de dispositivo” copie la dirección DNS que aparece como
“Punto de enlace”.
a2fgsiwcxlu3cn-ats.iot.us-east-1.amazonaws.com
¿Cuál es su punto de enlace? Recuerde que el punto de enlace varía de acuerdo a la región
seleccionada al inicio del laboratorio.
4.4. Creación de regla – IoT Core
Paso 54: Dentro del menú de opciones del servicio IoT Core. Diríjase a: Acto > Reglas. Luego haga
clic en “Crear una regla”.
Paso 55: Se abrirá un formulario de “Crear una regla”. En la primera sección ingrese el nombre
de la regla utilizando su código de alumno (Ejemplo: Regla_20154240), y una descripción en
base a lo que va a realizar dicha regla.
Paso 56: En la segunda sección del formulario, mantenga la versión de SQL en “2016-03-23” e
ingrese la siguiente sentencia SQL en la sección de “Instrucción de consulta de regla”. modifique
los parámetros sombreados en amarillo teniendo en cuenta aquellos en los que ha utilizado su
código de alumno.
SELECT
state.desired.nombre as nombre,
state.desired.apellido as apellido,
state.desired.codigo as codigo
parse_time("yyyy.MM.dd hh:mm:ss", timestamp()) as timestamp
FROM '$aws/things/Objeto_20154240 /shadow/name/Sombra_20154240/update/accepted'
Paso 57: En la tercera sección del formulario, haga clic en “Añadir acción”, luego seleccione la
acción de nombre “Volver a publicar mensajes en temas de AWS IoT”. Finalmente, haga clic en
“Configurar acción”.
Paso 58: Se abrirá un nuevo formulario “Configurar acción”. En la sección “Tema” ingrese un
nombre de tema utilizando su código de alumno (Ejemplo: data/20154240), en la sección de
“Calidad del servicio” seleccione “0 – El mensaje se entrega cero o más veces”. Finalmente
haga clic en crear un rol.
Paso 59: Se abrirá una ventana, coloque un nombre al rol utilizando su código universitario
(Ejemplo: “Rol_20154240”), y luego haga clic en “Crear un rol”.
Paso 60: De regreso al formulario anterior, haga clic en “Añadir acción”.
Paso 61: De regreso al formulario inicial de “Crear una regla”, haga clic en “Crear regla”.
Nota:
La regla recién creada consiste en “filtrar” los atributos de un mensaje inicial, que ha sido
enviado para al tema que actualiza el estado de una sombra, en un mensaje final que cuenta
con un “timestamp”, el cual es finalmente publicado en el tema “data/20154240”.
4.5. Configuración de cliente MQTT
Paso 62: Ahora corresponde, instalar el programa “MQTTBox” desde Windows Store. Ingrese al
siguiente link. Se abrirá una pestaña en su navegador, haga clic en “Get”. Nota: para sistemas
operativos que son windows 8, vea el Anexo B al final de la guía.
Paso 63: Automáticamente aparecerá un pop-up, haga clic en la opción de “Abrir Microsoft
Store”.
paso 64: En el Microsoft Store, presione “Descargar”, espere un momento y luego presione
“Abrir”.
Paso 65: En el programa “MQTT-Box”, establezca las siguientes configuraciones:
Paso 67: Verifique la conexión con el servicio de Amazon IoT Core. Se podrá dar cuenta de ello
porque aparecen una opción “Connected” en color verde.
4.6. Prueba de concepto 2: Comunicación MQTT
Paso 68: En las dos secciones que se muestran en el programa, modifique los parámetros
sombreados en amarillo teniendo en cuenta aquellos en los que ha utilizado su código de
alumno.
Publicar en un tema:
Topic to publish:
$aws/things/Objeto_20154240/shadow/name/Sombra_20154240/update
{
"state": {
"desired": {
"nombre" : "Mario",
"apellido" : "Lupaca",
"codigo" : "20131795"
}
}
}
Subscribir en un tema:
Note que cuando usted envía un mensaje (“Payload”) en el tema asociado a su sombra, de forma
casi automática, recibe un mensaje en el tema que se ha suscrito. Con esto, se valida la
comunicación bidireccional entre un dispositivo (su computadora) y el servicio Amazon IoT Core,
este concepto puede ser escalado para millones de dispositivos.
Paso 70: Haga clic derecho en el icono de Windows y luego clic en “Ejecutar”. Se le abrirá una
ventana, ingrese la palabra “cmd”, luego clic en “Aceptar”.
Paso 72: Espere hasta que se instale y luego ejecute el siguiente comando:
node-red
Paso 73: En su navegador, abra una nueva pestaña y en la barra de direcciones escriba
localhost:1880, también funciona con 127.0.0.1:1880. Aparecerá un interfaz como el de la
imagen inferior.
Paso 75: Haga clic en el ícono de menú ubicado en la esquina superior derecha. Luego haga clic
en la opción de “Import”.
Paso 76: Aparecerá una ventana como en la imagen inferior. Haga clic en “select a file to import”.
Paso 77: Seleccione el documento “LAB 1-MEC328.json”, luego haga clic en “Abrir”.
Paso 80: Edite el campo “Topic” utilizando el parámetro que colocó en el paso 68. Luego haga
clic en el lápiz.
Paso 81: Edite los campos “Name” y “Server”. En “Name” coloque “IOT_Código” (Ejemplo:
IOT_2014367). En “Server” coloqué el mismo punto de enlace que colocó en “Host” en el paso
65. Luego haga clic en el ícono del lápiz.
Nota:
Paso 82: Cargue los mismos certificados del paso 65. Luego modifique el campo “Name”
utilizando su código de alumno. Finalmente, haga clic en “Update”.
Archivo “pem.crt”
Archivo “private.pem.key”
Archivo “AmazonRootCA1.pem”
Nota:
Paso 84: Haga doble clic sobre el bloque “UDP Out – 8195”.
Paso 85: Edite el campo de “Address”, ingrese su dirección IP. Luego presione en “Done”.
Paso 86: Repita los mismos pasos para editar el bloque “UDP Out – 8190”.
Paso 87: Haga clic en “Deploy”, ubicado en la esquina superior derecha, para cargar la lógica de
los bloques.
Nota: Cada vez que modifique la lógica de los bloques debe realizar ese paso para que se
cargue los cambios.
Paso 89: Presione las teclas Ctrl+Espacio, para mostrar la ventana “debug”.
Paso 90: Haga clic en los botones de “RECIBE” y luego en “ENVIA”.
¿Qué mensaje recibe en el “Hercules SETUP utility”? ¿Qué recibe en la interfaz gráfica de
CODESYS? Muestre capturas de pantalla.
Paso 92: En la interfaz gráfica de CODESYS, presione botón de “Enviar datos”.
Paso 93: Documente su experiencia.
¿Qué mensaje recibe en el programa MQTTBOX (sección “Topic to subscribe”)? Muestre una
captura de pantalla:
6. Reto ágil 1: Comunicación bidireccional
Analice los bloques en Node-RED, y elabore la lógica para que cada vez que se presione el
botón de “Enviar Datos” con sus datos (Primer Nombre, Primer Apellido, Código), se reciba
un mensaje presionando el botón de “Recibir Datos” en la interfaz gráfica de CODESYS. Vea
el vídeo “Rego ágil 1” ubicado en la carpeta “Vídeos” para una demostración.
Diríjase a: AWS IoT > Seguridad > Políticas > Politica_Su código. Y haga clic en “Editar versión
activa”.
Finalmente, haga clic en “Establecer la versión editada como la versión activa de esta política”
y luego clic “Guardar como nueva versión”.
Realice pruebas con el programa “MQTTBox” para validar que se cumplan las nuevas
políticas establecidas. Adjunte capturas de pantalla.
Muestre una captura de su nueva política en formato JSON, para ello haga clic en “JSON”:
Anexo A. Bloques Node-RED
Los bloques que tiene no son los únicos. Usted puede instalar librerías que permiten utilizar
diferentes protocolos de comunicación industrial. Para ello, deberá buscar la librería en el
repositorio de librerías y luego ejecutar en una ventana de símbolo de sistema la instrucción
npm.
Ejemplo:
Anexo B. MQTT Box para Windows 8
Para testear el protocolo MQTT en sistemas operativos con Windows 8 descargue “MQTT.xf
v1.7.1” Haciendo clic en este link. Las configuraciones del paso 65 en este programa se deben
realizar en las siguientes secciones encerradas en rojo: