Logika jednostupňového vytěžovače

Odpovědět
Uživatelský avatar
marsal
Příspěvky: 615
Registrován: pát dub 09, 2021 11:10 am

Logika jednostupňového vytěžovače

Příspěvek od marsal »

Já si myslím, že ani toto fórum nemůže být o toto téma ochuzeno, už proto, že všechny verze, které jsou publikované jinde (https://forum.mypower.cz/viewtopic.php? ... ka#p178354, včetně posledního příspěvku) mají nějakou potíž ;-).
Snad to někomu tady bude k užitku.

Základní popis:
Vytěžování probíhá v dané verzi pomocí stejného měniče, který obsluhuje další AC spotřebu. Součástí vytěžování je proto omezení, pokud celkový výkon měniče dosáhne určitého limitu (rezerva výkonu měniče).
Vytěžování probíhá pomocí SSR relé řízeného fázově. Lze omezit maximální úhel spínání SSR (max. procento výkonu).
Vytěžuje se tak, že se snažím dodržet proud, který má téct do/z baterie. Co "zbude", lze pouštět do vytěžování. Cílový proud do baterie ale není vždy stejný: při nízkém napěti chci, aby vytěžování bylo žádné nebo minimální, aby se baterie nabíjela, při limitním vysokém napětí baterie může být proud do baterie již nulový a veškerý výkon generovaný panely/větrem/... může být vytěžován.
Pokud je tedy napětí baterie menší než stanovené mezní (TargetDDVoltage_1), nastavuji cílový proud do baterie na výchozí hodnotu (TargetDDCurrent_1). Tato hodnota slouží i jako ochrana baterií před nabíjením příliš velkým proudem. Horní napětí baterie a druhý příslušný cílový proud se nastavuje pomocí proměnných TargetDDVoltage_2 a TargetDDCurrent_2.
Samozřejmě lze místo napětí baterie použít i SOC, mé zkušenosti ovšem říkají, že napětí baterie je jistější kvůli potížím s výpočtem SOC v situacích, kdy proudy se potácejí dlouhodoběji v nízkých hodnotách.

Pro regulaci si tedy vypočtu cílový proud do baterie, jehož křivka vypadá takto:
CílProudBaterií.jpg
CílProudBaterií.jpg (30.39 KiB) Zobrazeno 1657 x
Cílový regulační proud do baterie mezi dvěma mezními hodnotami se nyní počítá lineárně, lze uvažovat i nelineární průběh. Jen pro pořádek ještě uvádím, že meze cílového proudu mohou být nastaveny i jako záporné, pokud striktně netrvám na tom, aby se vytěžovalo jen při nabíjení.

Pro regulaci potřebuji měřit:
- Aktuální proud baterie (BatteryCurrent)
- Aktuální napětí baterie (Uaku).
- Aktuální AC výkon (AC_Power, pokud chci limitovat vytěžování i podle aktuálního výkonu měniče)

Jednoduchou proporcionální regulací se pak nastavuje napětí SSR, které je v dané verzi pevně v rozmení 0 .. 10V (PhaseVoltage)

Další podrobnosti už je myslím nejlepší dokumentovat kódem (TECO Foxtrot, ST):

Kód: Vybrat vše

// Řízení SSR
//
// SSR řízeno napětím 0..10V  (v programu napevno)
// SSR napojeno na stejný měnič, ze kterého jde celková AC spotřeba
//
// Některé proměnné:
// AC_Power - výkon 230V měřený na výstupu měniče.
// PhaseVoltage - proměnná PLC,

//  PhaseDDType : INT := 1; // default na vytěžovač
//  // PhaseDDType = 0 - pevné
//  PhaseDDValPerc : REAL := 0;
//  // PhaseDDType = 1 - vytěžování
//  TargetDDVoltage_1 : REAL := 25.5; // napětí, pro který se reguluje proud baterie na TargetCurrent_1
//  TargetDDVoltage_2 : REAL := 27.1; // napětí, pro které se reguluje proud baterie na TargetCurrent_2
//  TargetDDCurrent_1 : REAL := 60; // cílový regulační proud do baterií při TargetVoltage_1
//  TargetDDCurrent_2 : REAL := 0; // cílový regulační proud do baterií při TargetVoltage_2
//  TargetDDCurrent_now : REAL; // cílový regulační proud do baterií při TargetVoltage_2
//  CurDDVoltage : REAL := 0; // aktuální hodnota napětí pro SSR
//  PhaseDDMaxPercVyt : REAL := 100; // maximální výkon při režimu vytěžovače
//  PhaseDDPwLim : real := 2100; // Celkový výkon AC, nad který se omezuje vytěžování "panicky"
//  DDis_0 : BOOL := False;  // proměnná pro web grafiku
//  DDis_1 : BOOL := True;   // proměnná pro web grafiku

PROGRAM PhaseD
  VAR
    A : REAL; // helper
    REGULATION_SPEED : REAL := 0.001; // rychlost regulace
    FAST_STEP_DOWN : REAL := 0.1; // krok pro "panické" snížení výkonu při překročení nastaveného maximálního AC výkonu
  END_VAR

  // Nastav zobrazování podle typu řízení
  CASE PhaseDDType OF
    0 : //Fixní vytěžování
      PhaseVoltage := LIMIT(0, PhaseDDValPerc / 10, 10); // 0 - 10V
      // grafika
      DDis_0 := True;
      DDis_1 := False;
    1 : // Dynamické vytěžování
      // Stávající hodnota do pracovní proměnné
      CurDDVoltage := PhaseVoltage;
      // bylo dosaženo limitu výkonu?
      IF AC_Power > PhaseDDPwLim THEN
        CurDDVoltage := CurDDVoltage - FAST_STEP_DOWN; // rychlé snížení výkonu
      ELSE
        //
        // propočti cílový proud
        A :=(TargetDDCurrent_2 - TargetDDCurrent_1) /(TargetDDVoltage_2 - TargetDDVoltage_1);
        TargetDDCurrent_now := TargetDDCurrent_1 + A *(UAku - TargetDDVoltage_1);
        // limits
        IF UAku > TargetDDVoltage_2 THEN
          TargetDDCurrent_now := TargetDDCurrent_2;
        ELSIF UAku < TargetDDVoltage_1 THEN
          TargetDDCurrent_now := TargetDDCurrent_1;
        END_IF;
        //
        // Reguluj s využitím P regulace a podle REGULATION_SPEED
        CurDDVoltage := CurDDVoltage -(TargetDDCurrent_now - BatteryCurrent) * REGULATION_SPEED;
      END_IF;
      // Omez hodnoty pro regulaci na 0..maximální nastavená hodnota
      CurDDVoltage := LIMIT(0, CurDDVoltage, PhaseDDMaxPercVyt / 10);
      // Přenos hodnoty pracovní proměnné na výstup
      PhaseVoltage := CurDDVoltage;
      // grafika
      DDis_0 := False;
      DDis_1 := True;
  END_CASE;
END_PROGRAM

A takto může vypadat ovládání a nastavování všeho, co pro vytěžování potřebuji:
VytěžováníAdapt.jpg
VytěžováníAdapt.jpg (21.36 KiB) Zobrazeno 1657 x
Uživatelský avatar
marsal
Příspěvky: 615
Registrován: pát dub 09, 2021 11:10 am

Re: Logika jednostupňového vytěžovače

Příspěvek od marsal »

Opravený obrázek s doplněnými hodnotami jako příklad:
targetvoltagecurrent.jpg
targetvoltagecurrent.jpg (42.7 KiB) Zobrazeno 1623 x
Uživatelský avatar
redcrown
Příspěvky: 859
Registrován: čtv dub 08, 2021 6:07 pm
Bydliště: Jizerky
Výkon panelů v FVE [Wp]: 19550
Kapacita baterie [kWh]: 36

Re: Logika jednostupňového vytěžovače

Příspěvek od redcrown »

Nebudu se tady moc rozepisovat, ale vřele doporučuji prostudovat, nebo ještě lépe vyzkoušet GBOaku. Pan Trochta je velmi chytrý pán a nemá cenu znovu objevovat Ameriku. Za mě je GB skoro až geniální produkt. S tím, že se u Aku verze měří proud na všech fázích, na DC baterce proud i napětí, tak jde postihnout celý ostrovní provoz. Celou regulaci myslím řeší PI regulátorem, uživatel má k dispozici proporcionální i integrační konstantu.
Jak říkám, nejlepší je vyzkoušet a opsat. On to vyvíjí dlouhé roky a nemá cenu do toho utápět nesmyslně času...
Ostrov s nabíjením z DS, 19,5kWp, 4x XTM4000-48, VT40-80, 30kWh LFP 14P16S + 36kWh Winston 230Ah 3P16S Batrium
2x Skútr E-Max120L
Uživatelský avatar
marsal
Příspěvky: 615
Registrován: pát dub 09, 2021 11:10 am

Re: Logika jednostupňového vytěžovače

Příspěvek od marsal »

Téma vlákna je logika jednostupňového vytěžovače jako pomůcka pro ty, kteří si ho chtějí jednoduše sami vyrobit a naprogramovat. Současně ukazuji, že jednoduše naprogramovat lze, včetně funkčního kódu.

Od dumiho jsem okopíroval celkově elegantní HW řešení: jeden DA převodník 0..10V + SSR řízené 0..10V.
Ale nelíbila se mi dumiho regulace podle napětí, protože tak nelze podle mne dobře zabránit cyklování proudu baterií +/-.

A právě proto, že není třeba prošlapávat slepé cesty vývoje, za ty dva roky, kdy si s tím hraji, nabízím přístup, který se mi osvědčil:
- vytěžování nedělat podle napětí baterie, ale podle proudu do baterie (vytěžuje se, když proud do baterie je vyšší než "cílový regulační proud")
- tento "cílový regulační proud" do baterie musí být proměnný - klesat s rostoucím napětím baterie až k nule, aby vytěžování probíhalo i pro plně nabité baterie a naopak při méně nabitých bateriích do nich teklo více proudu.
Uživatelský avatar
redcrown
Příspěvky: 859
Registrován: čtv dub 08, 2021 6:07 pm
Bydliště: Jizerky
Výkon panelů v FVE [Wp]: 19550
Kapacita baterie [kWh]: 36

Re: Logika jednostupňového vytěžovače

Příspěvek od redcrown »

jo jo, souhlas. Já jsem jen chtěl poukázat na to, že lze funkční algoritmus dobře opsat od pana Trochty. Myslím ten základ pro jednostupňový vytěžovač. Souhlasím zásadně s tím, že se musí pracovat s proudem i napětím baterie.
Ostrov s nabíjením z DS, 19,5kWp, 4x XTM4000-48, VT40-80, 30kWh LFP 14P16S + 36kWh Winston 230Ah 3P16S Batrium
2x Skútr E-Max120L
Kostěj
Příspěvky: 136
Registrován: stř čer 08, 2022 9:05 pm
Bydliště: Dobrovicko
Výkon panelů v FVE [Wp]: 9200
Kapacita baterie [kWh]: 16

Re: Logika jednostupňového vytěžovače

Příspěvek od Kostěj »

redcrown píše: ned zář 04, 2022 9:20 pm Pan Trochta je velmi chytrý pán a nemá cenu znovu objevovat Ameriku. Za mě je GB skoro až geniální produkt.
Pod to se podepíšu, možná bych vynechal to "skoro". A navíc jde o spolehlivý HW: od 1/2014 pracuje u mne GreenBono nepřetržitě, jediný problém jsem měl s externími ssr relátky, bouchnul mi v nich odrušovací kondík. Jo ty ssr relátka jsem si stavěl sám.
Noparasito
Příspěvky: 712
Registrován: pon bře 29, 2021 11:51 pm

Re: Logika jednostupňového vytěžovače

Příspěvek od Noparasito »

Kostěj píše: pon zář 05, 2022 4:55 pm
redcrown píše: ned zář 04, 2022 9:20 pm Pan Trochta je velmi chytrý pán a nemá cenu znovu objevovat Ameriku. Za mě je GB skoro až geniální produkt.
Pod to se podepíšu, možná bych vynechal to "skoro". A navíc jde o spolehlivý HW: od 1/2014 pracuje u mne GreenBono nepřetržitě, jediný problém jsem měl s externími ssr relátky, bouchnul mi v nich odrušovací kondík. Jo ty ssr relátka jsem si stavěl sám.
Proto pan Trochta doporucuje Carlo Gavazzi.(cenou to neni Cina, ale je to tam vyrobene, pravdepodobne i pohlidane)
Odpovědět

Zpět na „Automatizace, řízení“