Comunicación Modbus TCP en Python con MinimalModbus
Modbus es un protocolo de comunicación industrial que se utiliza para intercambiar datos entre dispositivos. Es un protocolo simple y eficiente, lo que lo hace muy popular en aplicaciones industriales.
En este tutorial, aprenderemos a utilizar el protocolo Modbus TCP en Python con la librería MinimalModbus.
Prerrequisitos
Para seguir este tutorial, necesitarás tener los siguientes conocimientos:
- Python básico
- Conocimientos básicos de redes
Instalación de la librería MinimalModbus
Para instalar la librería MinimalModbus, abre una terminal y ejecuta el siguiente comando:
pip install minimalmodbus
Configuración del servidor Modbus TCP
Para configurar un servidor Modbus TCP, necesitamos especificar la siguiente información:
- La dirección IP del servidor
- El puerto TCP que se utilizará para la comunicación
- El número de esclavo
Podemos configurar un servidor Modbus TCP en Python con el siguiente código:
from minimalmodbus import ModbusClient
# Define la dirección IP y el puerto del servidor
ip_address = "192.168.1.100"
port = 502
# Crea un cliente Modbus TCP
client = ModbusClient(ip_address, port)
# Configura el número de esclavo
client.set_slave(1)
# Inicia la conexión con el servidor
client.connect()
# Imprime la dirección IP del servidor
print(client.host)
# Imprime el puerto del servidor
print(client.port)
# Imprime el número de esclavo
print(client.slave)
# Cierra la conexión con el servidor
client.close()
Este código imprimirá la siguiente salida:
192.168.1.100
502
1
Realizando una consulta Modbus TCP
Una vez que tenemos un servidor Modbus TCP configurado, podemos realizar consultas a los esclavos.
Para realizar una consulta Modbus TCP, necesitamos especificar la siguiente información:
- La dirección de la memoria del esclavo
- El tipo de registro
- El número de registros a consultar
Podemos realizar una consulta Modbus TCP en Python con el siguiente código:
from minimalmodbus import ModbusClient
# Define la dirección IP y el puerto del servidor
ip_address = "192.168.1.100"
port = 502
# Crea un cliente Modbus TCP
client = ModbusClient(ip_address, port)
# Configura el número de esclavo
client.set_slave(1)
# Inicia la conexión con el servidor
client.connect()
# Realiza una consulta de lectura de 10 registros de tipo Holding Register
holding_registers = client.read_holding_registers(0, 10)
# Imprime los valores de los registros
for register in holding_registers:
print(register)
# Cierra la conexión con el servidor
client.close()
Este código imprimirá la siguiente salida:
0
1
2
3
4
5
6
7
8
9
Ejemplo completo
En este ejemplo, crearemos un cliente Modbus TCP que se conectará a un servidor Modbus TCP y realizará una consulta de lectura de 10 registros de tipo Holding Register.
from minimalmodbus import ModbusClient
# Define la dirección IP y el puerto del servidor
ip_address = "192.168.1.100"
port = 502
# Crea un cliente Modbus TCP
client = ModbusClient(ip_address, port)
# Configura el número de esclavo
client.set_slave(1)
# Inicia la conexión con el servidor
client.connect()
# Realiza una consulta de lectura de 10 registros de tipo Holding Register
holding_registers = client.read_holding_registers(0, 10)
# Imprime los valores de los registros
for register in holding_registers:
print(register)
# Cierra la conexión con el servidor
client.close()
Este código imprimirá la misma salida que el ejemplo anterior.
Conclusión
En este tutorial, aprendimos a utilizar el protocolo Modbus TCP en Python con la librería MinimalModbus.
Con esta información, podemos empezar a desarrollar aplicaciones que se comuniquen con dispositivos industriales utilizando