Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Diskuze na téma regulátorů TriStar Morningstar
drama
Příspěvky: 999
Registrován: čtv črc 28, 2011 12:01 pm

Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od drama »

Zde je kód pod GNU GPL pro vyčítání dat z Tristaru. Je to jen rychle a didakticky načrtnuto.

Kód: Vybrat vše

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <modbus/modbus.h>
#include <time.h>

int
main (void)
{
  modbus_t *mb;
  time_t timer;
  uint16_t Vhi=0, Vlo=0, Vbat=0, Ihi=0, Ilo=0, Ibat=0, Varr=0, Pout=0, Vtar=0, Wh=0;
  float Vscale, Vbattery, Iscale, Ibattery, Varray, Poutput, Vtarget, Whdaily;

  mb = modbus_new_tcp ("192.168.23.26", 502);
  modbus_set_slave (mb, 0x01);
  if (modbus_connect (mb) == -1)
    {
      fprintf (stderr, "Primary connection failed: %s\n", modbus_strerror (errno));
      exit (1);
    }
  timer=time(NULL);
  if (modbus_read_input_registers (mb, 0x0000, 0x01, &Vhi) == -1)
    {
      fprintf (stderr, "Connection failed (Vhi): %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x0001, 0x01, &Vlo) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x0018, 0x01, &Vbat) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x001B, 0x01, &Varr) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x0002, 0x01, &Ihi) == -1)
    {
      fprintf (stderr, "Connection failed (Vhi): %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x0003, 0x01, &Ilo) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x001C, 0x01, &Ibat) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x003A, 0x01, &Pout) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x0033, 0x01, &Vtar) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  if (modbus_read_input_registers (mb, 0x0044, 0x01, &Wh) == -1)
    {
      fprintf (stderr, "Connection failed: %s\n", modbus_strerror (errno));
    }
  modbus_close (mb);
  modbus_free (mb);

  Iscale = Ihi + Ilo / (2 ^ 16);
  Ibattery = Ibat * Iscale / 32768;
  Vscale = Vhi + Vlo / (2 ^ 16);
  Vbattery = Vbat * Vscale / 32768;
  Varray = Varr * Vscale / 32768;
  Poutput = Pout * Vscale * Iscale / 131072;
  Vtarget= Vtar * Vscale / 32768;
  printf ("unix=%d&u_in=%f&i_in=%f&u_bat=%f&u_tgt=%f&p_bat=%f&e_dly=%d\n", timer,Varray,Ibattery,Vbattery,Vtarget,Poutput,Wh);


  return (0);
}

je třeba mít libmodbus5 knihovnu

Kód: Vybrat vše

apt-get update
apt-get install libmodbus5 libmodbus-dev
upravit IP adresu a zkompilovat (je-li program uložen jako mppt.c):

Kód: Vybrat vše

gcc -o mppt -lmodbus mppt.c
např. z cronu lze spouštět takto:

Kód: Vybrat vše

# m h  dom mon dow   command
*   *  *   *   *     URL="http://log.mypower.cz/?fveid=VASEFVEID&"$(/plna/cesta/k/vasemu/tsmppt); wget -q -O -  $URL >/dev/null
rimi
Příspěvky: 390
Registrován: čtv říj 13, 2011 10:45 am
Bydliště: Příbor

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od rimi »

pri kompilaci mi hlasi neco jako:

root@raspberrypi:/home/pi# gcc -o mppt -lmodbus mppt.c
mppt.c: In function ‘main’:
mppt.c:10:1: error: stray ‘\302’ in program
mppt.c:10:1: error: stray ‘\240’ in program
mppt.c:11:1: error: stray ‘\302’ in program
mppt.c:11:1: error: stray ‘\240’ in program
mppt.c:12:1: error: stray ‘\302’ in program


netusi nekdo, co je spatne?
dik
007ToMMaS
Příspěvky: 1095
Registrován: sob zář 15, 2012 8:53 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od 007ToMMaS »

Je nastavená správne IP adresa a port?
3,2kWp REC320NP - juh
3,6kWp - Phonosolar PS450M5GFH-24/TH- východ
2x IGridSV-IV5.6KW, 2x Li-ion - 48V / 156Ah =312Ah
drama
Příspěvky: 999
Registrován: čtv črc 28, 2011 12:01 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od drama »

Je to odsud špatně zkopírovaný text. Jsou tam znaky, které by tam být neměly. Např. pevná mezera. Proto to hlásí tu chybu.
EdaSky
Příspěvky: 11
Registrován: čtv bře 17, 2011 9:55 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od EdaSky »

Muzu mit prozbicku na autora nebo kohokoliv kdo tomu rozumi, pridat do tohoto programku neco jako

Kód: Vybrat vše

printf ("unix=%d&u_in=%f,i_in=%f&u_bat=%f&u_tgt=%f&p_bat=%f&e_dly=%d\n", timer,Varray,Ibattery,Vbattery,Vtarget,Poutput,Wh);

if(Ibattery > 158)
        {
         (0);
        }


  return (0);

aby se v dobe kdy tristar pri prechodu ze dne na noc (a opacne) vraci 159A proud vracela nula?

nemuzu prijit nato jak to napsat aby to fungovalo, protoze vlastne nevim co delam :cry:

Dekuju.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od solárník »

Já čtu Tristar v Linuxu perl skriptem přes http pomocí MBCSV.cgi, třeba nabíjecí proud je

Kód: Vybrat vše

$request=HTTP::Request->new(GET => "http://10.0.0.3/MBCSV.cgi?ID=1&F=4&AHI=0&ALO=39&RHI=0&RLO=1");
Ale to jsem musel zpětně rozkódovat ten jejich software v Tristaru, než jsem to objevil. Ten jejich www server v Tristaru to takhle získává.
Kdyby to někoho zajímalo, stačí říct.
drama
Příspěvky: 999
Registrován: čtv črc 28, 2011 12:01 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od drama »

Před printf dodat:

Kód: Vybrat vše

if(Ibattery > 158)
        {
         Ibattery=0;
        }
drama
Příspěvky: 999
Registrován: čtv črc 28, 2011 12:01 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od drama »

solárník píše:
Já čtu Tristar v Linuxu perl skriptem přes http pomocí MBCSV.cgi, třeba nabíjecí proud je

Kód: Vybrat vše

$request=HTTP::Request->new(GET => "http://10.0.0.3/MBCSV.cgi?ID=1&F=4&AHI=0&ALO=39&RHI=0&RLO=1");
Ale to jsem musel zpětně rozkódovat ten jejich software v Tristaru, než jsem to objevil. Ten jejich www server v Tristaru to takhle získává.
Kdyby to někoho zajímalo, stačí říct.
Na fóru je použití MBCSV.cgi popsáno již dlouho. Perl může být pro někoho kanón na vrabce, odkažme proto pro pořádek zde na příkaz wget.
007ToMMaS
Příspěvky: 1095
Registrován: sob zář 15, 2012 8:53 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od 007ToMMaS »

Prosím vás vedel by ktosi pridať do programu aby vyčítal aj stav nabíjania? či je v mppt alebo float...?
Na webe som našiel že je to adresa 0X0032 a hodnoty pre stav sú: 0 START
1 NIGHT_CHECK
2 DISCONNECT
3 NIGHT
4 FAULT
5 MPPT
6 ABSORPTION
7 FLOAT
8 EQUALIZE
9 SLAVE

Ďakujem.
3,2kWp REC320NP - juh
3,6kWp - Phonosolar PS450M5GFH-24/TH- východ
2x IGridSV-IV5.6KW, 2x Li-ion - 48V / 156Ah =312Ah
Uživatelský avatar
kybos
Příspěvky: 2783
Registrován: sob zář 08, 2012 10:40 pm
Lokalita: Šternberk
Systémové napětí: 48V
Výkon panelů [Wp]: 15000
Kapacita baterie [kWh]: 40
Bydliště: v údolí mezi kopci

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od kybos »

Tyto stavy jsou u Tristaru zhola k ničemu, jelikož je hlásí předčasně. například oznámí stav Absorption a evidentně ještě pracuje v režimu MPPT (neomezuje vstupní výkon). Daleko lépe a přesněji lze určit vnitřní stav z napětí Sweep Vmp, Array Voltage a Battery Voltage. Pokud je ve stavu, kdy je Sweep Vmp totožné s Array Voltage, je ve stavu MPPT. Pokud je napětí Array Voltage vyšší, než Sweep Vmp, dochází k omezování výstupního výkonu a nějaká část výroby zůstává nevyužita.
15 kWp JJZ + 3x Tristar MPPT60 + Victron 150/100 + 48V LiFePO 850 Ah + UPS 8kW (MPP-Solar 8048 LC) + 4 x nabíječka 1,2 kW (DELTA) Start: 2012
007ToMMaS
Příspěvky: 1095
Registrován: sob zář 15, 2012 8:53 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od 007ToMMaS »

Ide mi hlavne o režim night, mppt, float. Tie fungujú ok myslím.
3,2kWp REC320NP - juh
3,6kWp - Phonosolar PS450M5GFH-24/TH- východ
2x IGridSV-IV5.6KW, 2x Li-ion - 48V / 156Ah =312Ah
007ToMMaS
Příspěvky: 1095
Registrován: sob zář 15, 2012 8:53 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od 007ToMMaS »

Vedel by to ktosi prosím vás vytiahnúť z regulátora? Ďakujem.
3,2kWp REC320NP - juh
3,6kWp - Phonosolar PS450M5GFH-24/TH- východ
2x IGridSV-IV5.6KW, 2x Li-ion - 48V / 156Ah =312Ah
Uživatelský avatar
vata
Příspěvky: 1403
Registrován: pon zář 12, 2011 11:32 am

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od vata »

kybos píše:
Tyto stavy jsou u Tristaru zhola k ničemu, ...
To bych netvrdila. Do absorpce se TS dostává v případě, že se napětí baterie blíží absorpčnímu napětí, a v tom stavu se pak příliš nezabývá hledáním MPP a koncentruje se pouze na proud a je v tom patrně dost rychlý, určitě rychlejší než vyřizuje požadavky na data. Midnite to má řešené mírně jinak, má vedle takto pojatého stavu absorpce a floatu navíc stavy Absorpce MPPT a Float MPPT, ale pro uživatele je to jedno, navenek to má stejný efekt.
Stav night check můj logger zachytí jen občas, ve faultu jsem TS ještě neviděla (krom toho vyvolaného změnou parametrů před resetem), podobně stav disconnect. Stav slave je záhada, kéž by bylo možné jej nějakým způsobem vyvolat..
Loguju přes Modbus, čili přes dokumentované rozhraní, to je pak jednoduché se ke stavu dostat.
Inteligentní ostrov - www.vati.cz
Uživatelský avatar
kybos
Příspěvky: 2783
Registrován: sob zář 08, 2012 10:40 pm
Lokalita: Šternberk
Systémové napětí: 48V
Výkon panelů [Wp]: 15000
Kapacita baterie [kWh]: 40
Bydliště: v údolí mezi kopci

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od kybos »

vata píše:
To bych netvrdila. Do absorpce se TS dostává v případě, že se napětí baterie blíží absorpčnímu napětí, a v tom stavu se pak příliš nezabývá hledáním MPP a koncentruje se pouze na proud a je v tom patrně dost rychlý, určitě rychlejší než vyřizuje požadavky na data.
Problém je v tom, co si představujeme pod pojmem absorpce. Já osobně si pod tímto pojmem představuji stav, kdy již bylo dosaženo absopčního napětí a nabíječ je ve stavu, kdy snižuje výkon nabíjení (oproti předcházejícímu stavu bulk, kdy jej udržoval na maximální možné velikosti), aby toto absorpční napětí udržel. Tristar ale oznamuje stav absorpce již v okamžiku, kdy se napětí baterie k absorpčnímu napětí zdaleka blíží a měnič ještě stále pracuje na plný výkon v režimu bulk. To může být z hlediska řízení vytěžovaže dost podstatná informace. Tato skutečnost může v podstatě znemožnit řízení vytěžování na základě stavu nabíjení oznamovaných Tristarem.
15 kWp JJZ + 3x Tristar MPPT60 + Victron 150/100 + 48V LiFePO 850 Ah + UPS 8kW (MPP-Solar 8048 LC) + 4 x nabíječka 1,2 kW (DELTA) Start: 2012
Uživatelský avatar
kybos
Příspěvky: 2783
Registrován: sob zář 08, 2012 10:40 pm
Lokalita: Šternberk
Systémové napětí: 48V
Výkon panelů [Wp]: 15000
Kapacita baterie [kWh]: 40
Bydliště: v údolí mezi kopci

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od kybos »

Tento jev mohu doložit stavem, který probíhá právě teď. Absorpční napětí tristaru je nastaveno na 54,4 V (Target Voltage). Tristar běží na plný výkon (Array voltage = Sweep Vmp) a na dosažení absorpčního napětí zbývá ještě 360mV. Přesto již ohlašuje stav absorpce ale ve skutečnosti je ještě ve stavu bulk a nějakou tu hodinku mu ještě potrvá, než baterie nabije do hodnoty absorpčního napětí a začne omezovat výstupní výkon, aby toto napětí udržel po stanovenou dobu. Ve skutečnosti ale dojde k tomu, že doba, která byla nastavena pro setrvání na hodnotě absorpčního napětí nebude dodržena, jelikož ji Tristar začne odpočítávat podstatně dřív, než baterii na absorpční napětí nabije.
ustálený stav předčasné absorpce
ustálený stav předčasné absorpce
15 kWp JJZ + 3x Tristar MPPT60 + Victron 150/100 + 48V LiFePO 850 Ah + UPS 8kW (MPP-Solar 8048 LC) + 4 x nabíječka 1,2 kW (DELTA) Start: 2012
007ToMMaS
Příspěvky: 1095
Registrován: sob zář 15, 2012 8:53 pm

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od 007ToMMaS »

Kyblos: neviem prečo tu riešite to či je to presné alebo nie. Pre potreby automatizácie stačí to aby som vedel v akom stave je regulátor. Ako som spomínal ide mi o stavy MPPT a float a tie fungujú spoľahlivo.
3,2kWp REC320NP - juh
3,6kWp - Phonosolar PS450M5GFH-24/TH- východ
2x IGridSV-IV5.6KW, 2x Li-ion - 48V / 156Ah =312Ah
Uživatelský avatar
kybos
Příspěvky: 2783
Registrován: sob zář 08, 2012 10:40 pm
Lokalita: Šternberk
Systémové napětí: 48V
Výkon panelů [Wp]: 15000
Kapacita baterie [kWh]: 40
Bydliště: v údolí mezi kopci

Re: Aplikace na vyčítání dat z TS MPPT 60 pod *NIXem

Příspěvek od kybos »

To se tu právě snažím dokumentovat, že Tristar nezobrazuje správně stav MPPT. Na uvedeném obrázku je zdokumentován stav, kdy je měnič ve stavu MPPT (ve fázi nabíjení Bulk) a přitom zobrazuje stav Absorption.
Jinými slovy i když vyčtete stav, který Tristar zveřejňuje, nebudete vědět v jakém stavu ve skutečnosti je.
15 kWp JJZ + 3x Tristar MPPT60 + Victron 150/100 + 48V LiFePO 850 Ah + UPS 8kW (MPP-Solar 8048 LC) + 4 x nabíječka 1,2 kW (DELTA) Start: 2012

  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek