Resultados 1 al 1 de 1
- 29/01/2020, 00:35 #1Forero Junior
- Fecha de ingreso
- ene 2020
- Ubicación
- Chile
- Mensajes
- 1
Monitorización Ingeteam 3play
Hola estimados, tengo ahora mismo un script de python (Pymodbus) que se logra conectar con el inversor ingeteam 30 tl 3play, y le estoy haciendo consultas, sin embargo, las respuestas son algo ambiguas segun la documentación que entrega ingeteam.
Les dejo aquí la documentación:
el _G es el protocolo de los inputs
Start Address = 0 | 1
MB Modicon Address = 30001 | 30002 | 30003
Display order = 1
Show when = always
Description = Actual Date. Year (Uint16). | Actual Date. Month of the Year.(Uint16). | Actual Date. Day of the month.(Uint16).
Magnitude = Year | Month | Day
Aqui les dejo el codigo: Este segun la documentación, extrae el año el mes y el dia que tiene el inversor pero me arroja numeros cambiantes cada ves que lo ejecuto, desde 6543 a 228 raro
Código:from pymodbus.client.sync import ModbusTcpClient as ModbusClient from pymodbus.constants import Endian from pymodbus.payload import BinaryPayloadDecoder as Decoder import datetime as dt import time fecha = dt.datetime.now() fecha = fecha.strftime("%Y-%m-%d %H:%M:%S") intentos = 3 cont_intentos = 0 # Conexion a Inversor xxx.xxx.xx.xxx client1 = ModbusClient('xxx.xxx.xx.xxx', port=502) try: print('Conectando a Ingeteam xxx.xxx.xx.xxx') c1=client1.connect() print('Estado conexion: ' + str(c1) + ', a IP: xxx.xxx.xx.xxx') while (c1 == True and cont_intentos < intentos): try: print('Obteniendo datos de inversor') result = client1.read_input_registers(30001, 1, unit=1) decoder = Decoder.fromRegisters(result.registers, wordorder=Endian.Little, byteorder=Endian.Little) ano = decoder.decode_16bit_uint() result = client1.read_input_registers(30002, 1, unit=1) decoder = Decoder.fromRegisters(result.registers, wordorder=Endian.Little, byteorder=Endian.Little) mes = decoder.decode_16bit_uint() result = client1.read_input_registers(30003, 1, unit=1) decoder = Decoder.fromRegisters(result.registers, wordorder=Endian.Little, byteorder=Endian.Little) dia = decoder.decode_16bit_uint() print('Ano: '+str(ano) +' Mes: ' + str(mes) + ' Dia: ' + str(dia)) except Exception as e: print('Error al obtener datos: ' + str(e)) cont_intentos = cont_intentos + 1 break print('Desconectando de Inversor xxx.xxx.xx.xxx') close=client1.close() except Exception as e: print('Error al conectar: ' + str(e))
-