Comunicación con dispositivos PLC con Snap7 en Python
Snap7 es un software multiplataforma para comunicarse de igual manera que lo harían de forma nativa PLCs del fabricante SIEMENS empleando tecnología Ethernet y protocolo S7. Entre sus características principales destacan:
- Arquitectura diseñada para 32 y 64 bits.
- Software Open Source.
En este tutorial aprenderemos a utilizar Snap7 para comunicarnos con dispositivos PLC en Python.
Requisitos
Para seguir este tutorial, necesitarás tener instalado Python 3.6 o superior. Además, deberás tener instalado Snap7. Puedes descargarlo desde el sitio web oficial: https://snap7.sourceforge.io/
Instalación de Snap7
Para instalar Snap7 en Windows, sigue estos pasos:
- Descarga el archivo de instalación desde el sitio web oficial.
- Ejecuta el archivo de instalación.
- Sigue las instrucciones del asistente de instalación.
Para instalar Snap7 en Linux, sigue estos pasos:
- Abre una terminal.
- Ejecuta el siguiente comando para descargar el paquete Snap7:
sudo apt-get install snap7
Iniciar sesión en Snap7
Para iniciar sesión en Snap7, abre una terminal y ejecuta el siguiente comando:
s7-client
Te aparecerá una pantalla como la siguiente:
[S7-Client]
IP: 192.168.0.100
Port: 102
[S7-Client]
Logon to PLC
Enter password:
Introduce la contraseña del PLC y pulsa Enter.
Importar la librería Snap7 en Python
Para importar la librería Snap7 en Python, ejecuta el siguiente comando:
import snap7
Crear un cliente Snap7
Para crear un cliente Snap7, utiliza el siguiente código:
client = snap7.client.Client()
Este código crea un cliente Snap7 que se conectará al PLC especificado en la variable ip
y el puerto especificado en la variable port
.
Conectarse al PLC
Para conectarse al PLC, utiliza el siguiente código:
client.connect(ip, port)
Este código intenta conectarse al PLC. Si la conexión es exitosa, devolverá True
.
Leer datos del PLC
Para leer datos del PLC, utiliza el siguiente código:
data = client.read_area(area, start_address, quantity)
Este código lee quantity
bytes de datos del área area
desde la dirección start_address
.
Escribir datos en el PLC
Para escribir datos en el PLC, utiliza el siguiente código:
client.write_area(area, start_address, data)
Este código escribe data
bytes de datos en el área area
desde la dirección start_address
.
Desconectarse del PLC
Para desconectarse del PLC, utiliza el siguiente código:
client.disconnect()
Este código desconecta al cliente del PLC.
Ejemplo
En el siguiente ejemplo, leeremos el valor de una variable BOOL del PLC:
import snap7
# Conectarse al PLC
client = snap7.client.Client()
client.connect("192.168.0.100", 102)
# Leer la variable BOOL
data = client.read_area(snap7.S7Area.DB, 0, 1)
# Imprimir el valor de la variable
print(data)
# Desconectarse del PLC
client.disconnect()
Este código imprimirá el siguiente valor:
True
Ejercicios
- Escribe un código que lea el valor de una variable INT del PLC.
- Escribe un código que escriba el valor de una variable BOOL en el PLC.
- Escribe un código que lea el valor de una variable STRING del PLC.
Conclusión
En este tutorial hemos aprendido a utilizar Snap7 para comunicarnos con dispositivos PLC en Python.