Página 3 de 3

Re: Fabricación PCB PVControl+

Publicado: 10 Dic 2022, 12:54
por Juanribz
Hola!

Te cuento... 14 placas JA (JAM72S30-545MR), la batería será lo próximo (phylotech), esperando la posibilidad de la subvención, que está solicitada... el inversor ya mencionado y el uso que quiero hacer es poder redirigir excedentes y controlar los equipos de aire acondicionado de casa que son 5 con bomba de calor y AA+, actualmente tengo unidades broadlink y alexa, en un par tengo configuradas escenas de temperatura, y puedo climatizar esas estancias, pero sin aprovechar las placas, que las acabo de poner en marcha y quiero aprovechar al máximo.
El protocolo de comunicación de SALICRU intentaré averiguar en breve, de momento, ni idea...


:adorar Muchas gracias por tu tiempo!!

Saludos!

Re: Fabricación PCB PVControl+

Publicado: 10 Dic 2022, 15:22
por Mleon
O sea, que NO tienes baterías, por lo que si hay excedentes inyectas a Red o simplemente deja de producir si no tienes inyeccion a red... ok?

Aclara si inyectas a red o no

Re: Fabricación PCB PVControl+

Publicado: 10 Dic 2022, 18:22
por Juanribz
Inyecto a red, de momento...

Re: Fabricación PCB PVControl+

Publicado: 10 Dic 2022, 19:29
por Mleon
Juanribz escribió: 10 Dic 2022, 18:22 Inyecto a red, de momento...
OK.... pues entonces debes capturar el valor de Wred que sera el que te indique si hay o no excedentes

Wred lo podras capturar del inversor si se consigue el protocolo o poniendo por ejemplo un SDM120 que lo mida y le pase los datos a PVControl+ por modbus (un cable USB a modbus)

Re: Fabricación PCB PVControl+

Publicado: 14 Dic 2022, 19:34
por Juanribz
Hola, ya he averiguado... el protocolo de Salicru es Modbus RTU, a través de la app de Salicru Equinox veo los excendentes en tiempo real.. me dices por favor si se puede hacer algo.

De nuevo.. muchas gracias!!

Re: Fabricación PCB PVControl+

Publicado: 15 Dic 2022, 14:23
por Mleon
En PVControl+ hay varios equipos con el protocolo Modbus RTU

Ese protocolo se basa en que definen unos "registros" a los que preguntar, por tanto hace falta saber el detalle para ese equipo en concreto

Por ejemplo el medidor que comentaba SDM120C tambien va por Modbus y puedes conseguir el detalle de los distintos registros que se pueden leer

https://www.etteam.com/productDIN/SDM12 ... TOCOL.pdf

Sin tener el detalle se complica mucho dado que hay que hacer ingenieria inversa

Re: Fabricación PCB PVControl+

Publicado: 15 Dic 2022, 16:06
por Pac0
Juanribz escribió: 14 Dic 2022, 19:34 Hola, ya he averiguado... el protocolo de Salicru es Modbus RTU, a través de la app de Salicru Equinox veo los excendentes en tiempo real.. me dices por favor si se puede hacer algo.

De nuevo.. muchas gracias!!
Ahora que ya sabes el protocolo deberías de buscar los registros donde se almacenan los datos.

Como ejemplo de lectura de un equipo Modbus RTU, tienes una aplicación en este enlace:

https://github.com/JanusHL/pvcontrol/tree/master/dds238

La aplicación lee un modulo DDS238 que es un contador de energía entre otras cosas. Tiene una clase Python que lee los registros de un dispositivo conectado en rs485. Esa clase es standard para cualquier dispositivo Modbus RTU, por lo que solo necesitas conocer que registros tienes que leer y adaptar el programa data_DDS.py a tus necesidades...

Código: Seleccionar todo

#!/usr/bin/python
# -*- coding: utf-8 -*-

# data_DDS.py
# Lee datos de DDS238 - Medidor de energía HIKING
# FAM para Control FV - 25/01/2019
#----------------------------------------------------

import struct
import time, datetime
import class_dds
import MySQLdb

# Abrir BBDD aqui

try:
   sensor = class_dds.DDS()
except:
   print('Error DDS...')

while True:   
    Data=sensor.readAll()

    print time.strftime("%Y-%m-%d %H:%M:%S")    
    print "Voltaje: ", Data[0]/10
    print "Intensidad: ", float(Data[1])/100
    print "Potencia: ", Data[2]
    print "----------------------"
    
    time.sleep(3)
La Clase tiene una función readAll():

Código: Seleccionar todo

def readAll(self):
        #Read Registers
        ArrayValue = self.f03Modbus(1,12,3) # slave,init, num registers
        #print "ArrayValue: " , len(ArrayValue)
        if len(ArrayValue)>0:
            return ArrayValue
        else:
            return(0,0,0)
Está fijada para leer el esclavo modbus 1, registro inicial y número de registros. Para el DDS son solo tres registros desde la posición 12.

Puedes modificar esos parámetros y adecuarlos a los tuyos y utilizar el código libremente. O una vez tengas los parámetros que necesitas te adapto el programa para el Salicru...

Un saludo
:snoopy