Stránka 1 z 1

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

Napsal: čtv zář 01, 2022 12:30 pm
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 1687 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 1687 x

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

Napsal: čtv zář 01, 2022 5:05 pm
od marsal
Opravený obrázek s doplněnými hodnotami jako příklad:
targetvoltagecurrent.jpg
targetvoltagecurrent.jpg (42.7 KiB) Zobrazeno 1653 x

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

Napsal: ned zář 04, 2022 9:20 pm
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...

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

Napsal: ned zář 04, 2022 10:12 pm
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.

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

Napsal: ned zář 04, 2022 10:26 pm
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.

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

Napsal: pon zář 05, 2022 4:55 pm
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.

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

Napsal: pon zář 05, 2022 9:57 pm
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)