Existen varias librerías:
- MinimalModbus: Implementación de Modbus RTU para python.
- modbus-tk: Permite crear aplicaciones Modbus facilmente con python.
- pymodbus: Es una implementación completa del protocolo Modbus en python usando twisted para comunicaciones asincronas.
Un ejemplo del uso de pymodbus lo pueden encontrar en el blog de Juanjo Conti.
En el caso de modbus-tk se encuentra un ejemplo de pruebas con modbus escrito por Thiago Freitas en su blog. Un vídeo de la demostración de lo escrito por Thiago lo pueden ver en el vídeo a continuación:
Buenas, soy Ángel y me gustaría comentarle una duda a ver si me puede echar una mano.
ResponderEliminarHe implementado un script usando pymodbus que lee registros de un PLC. Hasta ahí todo perfecto. El problema es que la lectura se efectúa cada cierto tiempo, y de vez en cuando se me aborta la ejecución del programa mostrando por terminal el siguiente error:
Traceback (most recent call last):
File "lectura_reg.py", line 107, in
hora_plc = client.read_holding_registers(read_register, read_qty)
File "build/bdist.linux-armv7l/egg/pymodbus/client/common.py", line 110, in read_holding_registers
File "build/bdist.linux-armv7l/egg/pymodbus/client/sync.py", line 79, in execute
File "build/bdist.linux-armv7l/egg/pymodbus/transaction.py", line 66, in execute
File "build/bdist.linux-armv7l/egg/pymodbus/client/sync.py", line 159, in _send
AttributeError: 'NoneType' object has no attribute 'send'
Me gustaría saber como puedo controlar este error para que cuando se efectúe no se aborte el programa, sino que siga ejecutándose y efectuando lecturas de registros.
Muchas gracias por adelantado.
Un saludo =D