Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
3
4
Python.industria(4.0)
5
6
7 PY013
8 Protocolo OPC UA
9
10
11
12
13
14
1 Indice:
2
3 01 Introducción
4 • Introducción al protocolo OPC UA
5 • Características
• Cliente y servidor
6 • Estructuras y nodos
7 • Autenticación
8
9 02 Servidor OPC UA
10
11
12 03 Cliente OPC UA
13
14
01(
1
2
3
4
5
6 Introducción
7
8 • Introducción al protocolo OPC UA
• Características
9 • Cliente y servidor
10 • Estructuras y nodos
11 • Autenticación
)
12
13
14
1
2
import OPC UA
3 A medida que la automatización industrial y los sistemas interconectados
continúan evolucionando, el protocolo OPC UA ha emergido como una
4 herramienta fundamental debido a su robustez y flexibilidad. ¡Y es Open
5 Source!
6
Entonces, ¿Qué es OPC UA?
7
8 OPC UA (Open Platform Communications Unified Architecture) es un
protocolo de comunicación máquina a máquina (M2M) especialmente diseñado
9 para que equipos en fábricas y sistemas se entiendan de manera segura.
10
A diferencia otros protocolos que hemos visto, OPC UA ofrece una manera
11
moderna y muy segura de que dispositivos y sistemas compartan
12 información. Aunque OPC UA es relativamente nuevo (se introdujo por
13 primera vez en torno al 2008) ha ganado importancia en la industria
gracias a sus características especiales y su capacidad para resolver
14 desafíos en la comunicación industrial.
1
2
import OPC UA
3 OPC UA fue diseñado para conectar dispositivos y sistemas de forma
segura y eficiente en diversas industrias. Ha ganado protagonismo
4 debido a la creciente necesidad de que todo funcione conjuntamente y
5 de manera segura.
6
Al principio, se usó en sistemas SCADA para monitorear y controlar
7 procesos industriales, demostrando su habilidad para hacer que los
8 dispositivos se comuniquen eficazmente en entornos complejos.
1
2
import OPC UA
3 Veamos una comparativa de sus ventajas y desventajas
4
5 Interoperabilidad
6
7 Seguridad
8
Información escalable
9
10 Disponibilidad
11
12 Flexibilidad
13
14
1
2
import OPC UA
3 Veamos una comparativa de sus ventajas y desventajas
4
5 Interoperabilidad Complejidad
6
7 Seguridad Consumo de recursos
8
Información escalable Costo
9
10 Disponibilidad Compatibilidad retroactiva
11
12 Flexibilidad Aprendizaje requerido
13
14
1
2
import OPC UA
3 Para implementar éste protocolo, existen dos elementos clave:
4
Servidor:
5 Un servidor OPC UA es
6 un sistema que almacena
y ofrece datos e
7 información a través de
8 una red.
9
10 Cliente:
11 un cliente OPC UA es una
entidad que solicita y
12 utiliza esos datos para
13 el monitoreo y control
de dispositivos y
14 procesos
1
2
import OPC UA
3 Para implementar éste protocolo, existen dos elementos clave:
4
Tareas del Servidor:
5
6 • Administrar y ofrecer datos y
funcionalidades a los clientes.
7
• Almacenar información y variables
8 relevantes del sistema.
1
2
import OPC UA
3 Para implementar éste protocolo, existen dos elementos clave:
4
Tareas del Cliente:
5
6 • Solicitar y recuperar datos y
funcionalidades del servidor.
7
• Visualizar y presentar los datos en
8 interfaces de usuario.
1
2
import OPC UA
3 El protocolo OPC UA tiene un modelo de información integrado. Se compone de una
estructura estandarizada, compuesta por nodos. Cada dato que se envía tiene un
4 nodo asociado, el cual tiene un ID y un Nombre
5
6 Velocidad
Los nodos pueden ser variables, objetos,
7 métodos, eventos y más.
8 Carpeta
Arranque Los nodos representan entidades en el
Actuadores
9 mundo real, como dispositivos y
componentes del sistema.
10 Servidor
Presion
Contienen información que puede ser
11 Carpeta
accedida y manipulada a través de la
Sensores
12 comunicación OPC UA, y puede tener
Temperatura propiedades, atributos y relaciones con
13 otros nodos.
Subtópico
14
1
2
import OPC UA
3 Las variables son componentes clave en OPC UA y representan datos que pueden ser
leídos o escritos. Pueden ser valores medidos, estados, configuraciones o
4 cualquier tipo de información relevante que el dispositivo o sistema industrial
5 maneja
6 Velocidad
7
8 Carpeta
Arranque
Actuadores
9
10 Servidor
Presion
11 Carpeta
Sensores
12
Temperatura
13
Subtópico
14
1
2
import AUTH
3 La autenticación en OPC UA es un componente esencial de su sistema de seguridad
que asegura que los usuarios y dispositivos que intentan acceder a un sistema
4 sean quienes dicen ser.
5
Para ello, se utilizan distintas técnicas o métodos como nombre de usuario y
6
contraseña o certificados digitales para confirmar quiénes son.
7
8
9 0. Sin Auth
10 1. Credenciales
11 2. Certificados
12
13
Sin autenticación, los datos estarán totalmente encriptados e ilegibles por
14
cualquier agente externo
02(
1
2
3
4
5
6
7
8
Servidor OPC UA
9
10
11
)
12
13
14
1
2
import OPC UA
3 Al ser un protocolo Open Source, actualmente tenemos muchísimas opciones para
generar servidores OPC UA y dejarlos corriendo en algún dispositivo.
4
5 Por lo general, también muchos equipos poseen la capacidad de funcionar como
servidores OPC UA, lo cual simplifica muchísimo la arquitectura.
6
7 Para hacer las pruebas el día de hoy, utilizaremos un servidor Open Source e
8 inyectaremos señales al sistema.
9 Prosys OPC UA Simulation Server
10 https://www.prosysopc.com/products/opc-ua-
simulation-server/
11 Server de prueba gratuito
12 requiere descarga e instalación
13
14
03(
1
2
3
4
5
6
7
8 Cliente OPC UA
9
10
11
)
12
13
14
1
2
import asyncua
Armar un cliente OPC UA es relativamente simple
3
4 Para ello, debemos importar las bibliotecas “asyncio” y “asyncua”. Recordar que como son
bibliotecas externas, deben instalarse previamente con pip install
5
6 La sintaxis para generar un cliente y leer valores de un nodo es la siguiente:
7
import asyncio
8 from asyncua import Client
9
async def main():
10 async with Client(url='opc.tcp://localhost:53530/OPCUA/SimulationServer') as client:
while True:
11 nodo = client.get_node('ns=3;i=1002')
value = await nodo.read_value()
12 print("Valor:", value)
13
if __name__ == "__main__":
14 asyncio.run(main())
1
2
import asyncua
Probemos ahora escribir valores cada 200 milisegundos!
3
import asyncio
4 from asyncua import Client
import time
5
6 async def main():
async with Client(url='opc.tcp://localhost:53530/OPCUA/SimulationServer') as client:
7 nuevo_valor = 0
while True:
8 nodo = client.get_node('ns=3;i=1009')
value = await nodo.read_value()
9 print("Valor:", value)
10
nuevo_valor = nuevo_valor +1
11 # Escribimos un valor nuevo
await nodo.write_value(nuevo_valor)
12 time.sleep(0.200)
13
if __name__ == "__main__":
14 asyncio.run(main())