Acceso a M241 mediante OPC UA

De ISAwiki
(Diferencia entre revisiones)
(Página creada con «== Localización == Aula Schneider (laboratorio 4.B.12), situado en la planta baja del bloque 4 de los edificios departamentales de la zona oeste. == Objetivos de la práct...»)
 
(Funciones de la librería opcua útiles para la práctica)
 
(No se muestran 9 ediciones intermedias realizadas por 2 usuarios)
Línea 9: Línea 9:
  
 
== Funciones de la librería opcua útiles para la práctica ==
 
== Funciones de la librería opcua útiles para la práctica ==
 +
<pre>
  
import opcua                                    - importa la librería
+
from opcua import Client
from opcua import Client
+
from opcua import ua
opc = OpenOPC.client()                         - construye un objeto cliente OPC DA
+
 
opc.servers()                                  - lista los servidores disponibles
+
cliente = Client("opc.tcp://10.0.0.52:4840")             # construye un objeto cliente OPC UA para un servidor
opc.connect()                                   - conecta el objeto cliente al servidor indicado
+
 
opc.read('MBT:10.0.0.11/T!%M0', sync='TRUE')   - ejemplo de lectura del bit %M0 del dispositivo con dirección 10.0.0.11, a través de Modbus/TCP
+
cliente.connect()                                         # conecta el objeto cliente
opc.write(('MBT:10.0.0.11/T!%M0',1))           - ejemplo de escritura en el bit %M0 del dispositivo con dirección 10.0.0.11, a través de Modbus/TCP
+
 
+
root = cliente.get_root_node()                            # navegación a través del árbol de objetos
 +
objects = root.get_child(['0:Objects'])
 +
m241=objects.get_child(['2:M241-M251 data'])
 +
sens1=m241.get_child(['2:Programa.Sensor1 (%IX0.0)'])
 +
bombilla=m241.get_child(['2:Programa.Bombilla (%QX0.0)'])
 +
 
 +
sens1.get_value()                                         # lectura de variable del autómata
 +
 
 +
bombilla.set_value(ua.DataValue(ua.Variant(True,ua.VariantType.Boolean)))  #escritura de un valor "True" en una variable tipo "Boolean" del autómata
 +
 
 +
cliente.disconnect()                                      # desconecta el objeto cliente
 +
 
 +
</pre>
  
 
== Enlaces a material adicional ==
 
== Enlaces a material adicional ==
  
*[https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi  Instalador de Python 2.7.14] Se recomienda emplear la última versión disponible de Python 2, por mantener la compatibilidad con OpenOPC
+
*[http://freeopcua.github.io/ FreeOpcUa: Open Source C++ and Python OPC-UA Server and Client Libraries and Tools]
*[https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win32-py2.7.exe/download Descarga de Python for Windows extensions (pywin32)]
+
*[https://www.unified-automation.com/downloads/opc-ua-clients.html UA Expert] Cliente OPC UA para pruebas.
*[https://sourceforge.net/projects/openopc/files/latest/download?source=files Descarga de OpenOPC]
+
*[https://media.readthedocs.org/pdf/python-opcua/latest/python-opcua.pdf Python OPC-UA Documentation]
*[http://openopc.sourceforge.net/api.html Tutorial de OpenOPC]
+
*[https://www.youtube.com/watch?time_continue=96&v=-tDGzwsBokY What is OPC? UA in a Minute]
 +
*[https://opcfoundation.org/ OPC Foundation]
  
  
 
[[Category:Prácticas]]
 
[[Category:Prácticas]]

Última revisión de 14:28 15 ene 2021

Tabla de contenidos

[editar] Localización

Aula Schneider (laboratorio 4.B.12), situado en la planta baja del bloque 4 de los edificios departamentales de la zona oeste.

[editar] Objetivos de la práctica

Al término de esta práctica el alumno deberá ser capaz de:

  • Configurar el servidor OPC UA del M241 para servir las variables deseadas.
  • Configurar en Python una conexión como cliente al servidor OPC UA.
  • Navegar a través del árbol de objetos del servidor y leer y acceder a las variables configuradas del autómata.
  • Controlar el Lexium desde Python través de OPC UA y CANopen.

[editar] Funciones de la librería opcua útiles para la práctica


from opcua import Client
from opcua import ua

cliente = Client("opc.tcp://10.0.0.52:4840")              # construye un objeto cliente OPC UA para un servidor

cliente.connect()                                         # conecta el objeto cliente

root = cliente.get_root_node()                            # navegación a través del árbol de objetos 
objects = root.get_child(['0:Objects'])
m241=objects.get_child(['2:M241-M251 data'])
sens1=m241.get_child(['2:Programa.Sensor1 (%IX0.0)'])
bombilla=m241.get_child(['2:Programa.Bombilla (%QX0.0)'])

sens1.get_value()                                         # lectura de variable del autómata

bombilla.set_value(ua.DataValue(ua.Variant(True,ua.VariantType.Boolean)))  #escritura de un valor "True" en una variable tipo "Boolean" del autómata

cliente.disconnect()                                       # desconecta el objeto cliente

[editar] Enlaces a material adicional

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Tipos de páginas
Bloques temáticos
Herramientas