Logika jednostupňového vytěžovače
Home Assistant, Arduino, SDS, Raspberry, Linux, vzdálený dohled, automatizace, měření, opensource, closedsource, hotová řešení, DIY, stavebnice, komponenty, software, postupy, návody, schémata, rady, zkušenosti ...
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Logika jednostupňového vytěžovače
Snad může být téma užitečné pro někoho ve vyhrazeném vlákně.
Stále průběžně vylepšuji to, co jsem již opakovaně zmiňoval jinde (předešlé vylepšení díky inspiraci vlkazajac: viewtopic.php?t=4854&p=135160&hilit=log ... ho#p135160, nejnovější vylepšení: proporcionální konstanty P jsou nyní odlišné pro „standardní“ a „emergency“ vytěžování, podrobněji viz níže).
Poznámky k aktuální verzi:
- Vytěžování probíhá z měniče, který obsluhuje i běžnou AC spotřebu (-> potřebna ohlídat celkový výkon měniče)
- Vytěžování nyní míří do bojleru, někdy do přímotopu, někdy do obojího zapojeného paralelně
- Vytěžuje se pomocí fázově řízeného SSR (po diskuzích a zvažování volba ze dvou zel mezi flickeringem a rušením, viz např. viewtopic.php?t=3620&p=111744#p111723) napětím 0-10V (v ilustračním programu níže pomocí proměnné PhaseVoltage)
- Měřené veličiny:
o Celkový okamžitý proud z/do baterie (mer[29].v), kladná hodnota znamená proud do baterie (nabíjení)
(Pozn. - v mém případě jde měření ze shuntu, díky brumu beru klouzavý průměr z 50 hodnot, tj. “okamžitá” je takové relativní tvrzení)
o Celkový okamžitý výkon AC měniče (mer[49].v)
o Aktuální SOC v procentech, průměr za sekundu (mer[51].v_lsec)
- Logika vytěžování:
o Pokud je do měniče připojen spotřebič, jehož příkon v souhrnu s vytěžováním jde za hranu přípustného výkonu měniče (tj. přesahuje nastavenou hodnotu PhaseDDPwLim), pak se rychle vytěžování sníží. V praxi, pokud je měnič alespoň krátce přetížitelný, toto zabrání výpadku měniče.
o Pod zvolenou hranici SOC (PhaseDDFromAbovePercSOCVyt) se vytěžováním pouze omezuje nabíjecí proud do baterií, pokud tento proud přesáhne stanovenou mez (TargetEmergencyCurrent) – říkám tomu “emergency vytěžování”
o Nad nastavenou hranicí SOC se vytěžuje tak, aby se udržoval nastavený dobíjecí proud do baterie (TargetCurrent). Říkám tomu “standardní vytěžování”.
o Finální hodnota napětí na SSR se omezí mezi nulou a hodnotou PhaseDDTemperaturePhasePercVyt, která se nastaví ručně podle max. výkonu měniče a příkonu zapojené vytěžovací zátěže.
o Napětí SSR se proporcionálně zvyšuje nebo snižuje s využitím časové konstanty (TargS). Její hodnoty jsem postupně ručně optimalizoval pozorováním, na základě “setrvačnosti” celého systému a jsou pochopitelně závislé na délce cyklu PLC (v mém případě 10 až 20 ms). Lze využít i nějaký hotový PID funkční blok. Pokud byly konstanty příliš nízké, pozoroval jsem cyklování baterie mezi + a – proudy, což není žádoucí. Pro emergency vytěžování je nastaveno rychlejší zvyšování vytěžování a pomalejší snižování, pro standardní vytěžování naopak. Program PLC Foxtrot pro ilustraci:
A věřím, že stále bude co vylepšovat .
Stále průběžně vylepšuji to, co jsem již opakovaně zmiňoval jinde (předešlé vylepšení díky inspiraci vlkazajac: viewtopic.php?t=4854&p=135160&hilit=log ... ho#p135160, nejnovější vylepšení: proporcionální konstanty P jsou nyní odlišné pro „standardní“ a „emergency“ vytěžování, podrobněji viz níže).
Poznámky k aktuální verzi:
- Vytěžování probíhá z měniče, který obsluhuje i běžnou AC spotřebu (-> potřebna ohlídat celkový výkon měniče)
- Vytěžování nyní míří do bojleru, někdy do přímotopu, někdy do obojího zapojeného paralelně
- Vytěžuje se pomocí fázově řízeného SSR (po diskuzích a zvažování volba ze dvou zel mezi flickeringem a rušením, viz např. viewtopic.php?t=3620&p=111744#p111723) napětím 0-10V (v ilustračním programu níže pomocí proměnné PhaseVoltage)
- Měřené veličiny:
o Celkový okamžitý proud z/do baterie (mer[29].v), kladná hodnota znamená proud do baterie (nabíjení)
(Pozn. - v mém případě jde měření ze shuntu, díky brumu beru klouzavý průměr z 50 hodnot, tj. “okamžitá” je takové relativní tvrzení)
o Celkový okamžitý výkon AC měniče (mer[49].v)
o Aktuální SOC v procentech, průměr za sekundu (mer[51].v_lsec)
- Logika vytěžování:
o Pokud je do měniče připojen spotřebič, jehož příkon v souhrnu s vytěžováním jde za hranu přípustného výkonu měniče (tj. přesahuje nastavenou hodnotu PhaseDDPwLim), pak se rychle vytěžování sníží. V praxi, pokud je měnič alespoň krátce přetížitelný, toto zabrání výpadku měniče.
o Pod zvolenou hranici SOC (PhaseDDFromAbovePercSOCVyt) se vytěžováním pouze omezuje nabíjecí proud do baterií, pokud tento proud přesáhne stanovenou mez (TargetEmergencyCurrent) – říkám tomu “emergency vytěžování”
o Nad nastavenou hranicí SOC se vytěžuje tak, aby se udržoval nastavený dobíjecí proud do baterie (TargetCurrent). Říkám tomu “standardní vytěžování”.
o Finální hodnota napětí na SSR se omezí mezi nulou a hodnotou PhaseDDTemperaturePhasePercVyt, která se nastaví ručně podle max. výkonu měniče a příkonu zapojené vytěžovací zátěže.
o Napětí SSR se proporcionálně zvyšuje nebo snižuje s využitím časové konstanty (TargS). Její hodnoty jsem postupně ručně optimalizoval pozorováním, na základě “setrvačnosti” celého systému a jsou pochopitelně závislé na délce cyklu PLC (v mém případě 10 až 20 ms). Lze využít i nějaký hotový PID funkční blok. Pokud byly konstanty příliš nízké, pozoroval jsem cyklování baterie mezi + a – proudy, což není žádoucí. Pro emergency vytěžování je nastaveno rychlejší zvyšování vytěžování a pomalejší snižování, pro standardní vytěžování naopak. Program PLC Foxtrot pro ilustraci:
Kód: Vybrat vše
// Stávající hodnota do pracovní proměnné
CurDDVoltage := PhaseVoltage;
// bylo dosaženo limitu měniče?
IF REAL_TO_UINT(mer[49].v) > PhaseDDPwLim
THEN CurDDVoltage := CurDDVoltage - 0.5; // rychlé snížení výkonu
ELSE
// rozhodování podle SOC - pokud je SOC pod rozhodovací hranicí, pak jen emergency vytěžování, pokud nad ní, standardní vytěžování
IF round(mer[51].v_lsec) >= PhaseDDFromAbovePercSOCVyt THEN
// Hodnoty pro standardní vytěžování
TargC := TargetCurrent;
IF mer[29].v > TargC
THEN TargS := 0.001; // pomaleji zvyšovat standardní vytěžování
ELSE TargS := 0.01; // rychleji snižovat standardní vytěžování
END_IF;
ELSE
// Hodnoty pro emergency vytěžování
TargC := TargetEmergencyCurrent;
IF mer[29].v > TargC
THEN TargS := 0.01; // rychleji zvyšovat emergency vytěžování
ELSE TargS := 0.001; // pomaleji snižovat emergency vytěžování
END_IF;
END_IF;
// P regulace
CurDDVoltage := CurDDVoltage + (mer[29].v - TargC) * TargS;
END_IF;
// Limituj hodnoty pro regulaci na 0..maximální nastavená hodnota
CurDDVoltage := MIN(PhaseDDTemperaturePhasePercVyt / 10, CurDDVoltage);
CurDDVoltage := MAX(0, CurDDVoltage);
// Přenos hodnoty pracovní proměnné na výstup
PhaseVoltage := CurDDVoltage;
-
- Příspěvky: 2786
- 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: Logika jednostupňového vytěžovače
To je hezká hračka. Ale jako člověk pracující posledních 30 let v IT bohužel musím říci, že v každém zařízení, ve kterém je alespoň pár byte software je určitá nenulová pravděpodobnost jeho selhání. Ta je tím větší, čím větší je ta část SW, kterou nemáme pod kontrolou, která je dodávána jako černá skříňka s chráněným obsahem (například operační systém, uživatelské rozhraní, ovladače jednotlivých HW modulů a další SW komponenty). A přesto, že tu svou uživatelsky modifikovatelnou část SW napíšeme jako zcela bezpečnou a spolehlivou, není možné totéž tvrdit o zbytku SW, který bývá často poměrně rozsáhlý a komplikovaný. Proto by HW část takového zařízení měla obsahovat prvky, které zabrání zničení systému při selhání SW. Ve výsledku může nastat stav, kdy takové zabezpečovací obvody budou složitější, než kdyby se dané zařízení řešilo pouze prostřednictvím HW.
Sporadické chyby SW, které mají nízkou pravděpodobnost výskytu (třeba jednou za kvartál) se velmi těžko odstraňují, zejména když není k dispozici zdrojový kód. Bohužel se nyní až příliš často s takovými chybami zařízení setkávám (nedostatečně odladěný SW) a často mají fatální následky.
Sporadické chyby SW, které mají nízkou pravděpodobnost výskytu (třeba jednou za kvartál) se velmi těžko odstraňují, zejména když není k dispozici zdrojový kód. Bohužel se nyní až příliš často s takovými chybami zařízení setkávám (nedostatečně odladěný SW) a často mají fatální následky.
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
-
- R.I.P.
- Příspěvky: 3481
- Registrován: úte čer 11, 2013 10:40 pm
Re: Logika jednostupňového vytěžovače
Pokiaľ regulátory a istenie v systéme fungujú - čoho by som sa bál ? Ak nadstavbový SW ( vyťažovanie ( HW ) považujem už za štandardný prvok systému ) vylepšuje systém, je to fajn. A keď poskytuje také riešenie, kde sa znižuje cyklovanie aj exponovanie nabíjacím a vybíjacím prúdom, tak
Uvedomujem si, akú voľnosť poskytuje lítium oproti olovu. Tak si ho treba aj trocha hýčkať, mršku jednu ....
Uvedomujem si, akú voľnosť poskytuje lítium oproti olovu. Tak si ho treba aj trocha hýčkať, mršku jednu ....
750 Wp, LS3024B, 18650 - 198P8S 30,4 V, Multiplus C 800 nonstop / všetky slabé spotrebiče
1950 Wp, 2 x LS3024B, VS2024N, olovo - 330 Ah / 24 V, Carspa 3000 sin deň / silné spotrebiče a ohrev TUV
5995 kWh za meničmi za posledné 2 roky.
1950 Wp, 2 x LS3024B, VS2024N, olovo - 330 Ah / 24 V, Carspa 3000 sin deň / silné spotrebiče a ohrev TUV
5995 kWh za meničmi za posledné 2 roky.
-
- Příspěvky: 2037
- Registrován: stř zář 05, 2018 8:38 pm
Re: Logika jednostupňového vytěžovače
Tyhle automaty Tecomat foxtrot, jsou velmi spolehlive, interni FW dobre odladeny. Mam jich v provozu pres 2500ks a poruchovost je opravdu minimalni.
Navic jdou zapojit i redundantne, cimz se spolehlivost zvysuje.
pokud jsou navic regulatory spravne nastavene na rozumne nabijeci napeti a vytezovace jen drzi nizsi tak.je to velmi bezpecne.
Ja to mam tak ze vytezuju na 3,4V a regulator omezuje na 3,5V.
tzn pri selhani vytezovace (napriklad rozepnuti stykace bojleru) se jen baterky vice nabijou.
Navic jdou zapojit i redundantne, cimz se spolehlivost zvysuje.
pokud jsou navic regulatory spravne nastavene na rozumne nabijeci napeti a vytezovace jen drzi nizsi tak.je to velmi bezpecne.
Ja to mam tak ze vytezuju na 3,4V a regulator omezuje na 3,5V.
tzn pri selhani vytezovace (napriklad rozepnuti stykace bojleru) se jen baterky vice nabijou.
Dumiho ostruvek: 4,7kWp, 13,3kWh, 2400W inverter
-
- Příspěvky: 2786
- 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: Logika jednostupňového vytěžovače
Uvedu třeba hypotetický příklad. Regulační smyčka vytěžovače se někde zacyklí zrovna v okamžiku, kdy běží zátěž naplno. Jištění funguje, nadproud se nevyskytuje. Až se baterie vybijí na spodní přípustné napětí, tak protože jištění je dokonalé, odpojí akumulátor od zbytku systému. Protože i střídač má dokonalé jištění, dojde po snížení napětí na spodní přípustné napětí střídače (které je zákonitě nižší než spodní limit akumulátoru aby střídač odolával zátěžovým špičkám) k odstavení střídače. Protože ale ještě svítí slunce a DC sběrnice střídače zůstala fyzicky připojena (odstavilo se pouze buzení výkonových prvků), nabíjecí regulátory zareagují překmitem na DC sběrnici, která nemá nyní žádnou zátěž a prorazí se nejprve spínací prvky v nabíječi a následně dojde i k překročení přípustného napětí spínacích prvků ve střídači. Jediné, co zůstane zachráněno je odpojený a zcela vybitý akumulátor. Pokud není vypínací mez BMS nastavena dostatečně vysoko a strojník systému dostatečně blízko, pak napřímo připojená BMS dokončí dílo zkázy svou vlastní spotřebou.vlkazajac píše:Pokiaľ regulátory a istenie v systéme fungujú - čoho by som sa bál
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
-
- Příspěvky: 2037
- Registrován: stř zář 05, 2018 8:38 pm
Re: Logika jednostupňového vytěžovače
Tak tohle mam reseno tak, ze aku se odpojuje az hkuboko pod vypinanim menice. A vytezovaci rele je jeste pripojeno pres stykac, ktery se vypina kdyz se nevytezuje a v pripade napriklad prorazeni SSR umi odpojit vytezovani v pripade nutnosti. Je to hlidano jak prepnuti menice na DS tak napetovou hladinou baterie.
Staci na to obyc externi napetove rele.
Staci na to obyc externi napetove rele.
Dumiho ostruvek: 4,7kWp, 13,3kWh, 2400W inverter
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
Ano, BMS aku vypíná pod min. napětím měniče. "Zacyklení" vytěžovače se ale tuším neliší od "běžné" vysoké spotřeby?dumi píše:Tak tohle mam reseno tak, ze aku se odpojuje az hkuboko pod vypinanim menice. A vytezovaci rele je jeste pripojeno pres stykac, ktery se vypina kdyz se nevytezuje a v pripade napriklad prorazeni SSR umi odpojit vytezovani v pripade nutnosti. Je to hlidano jak prepnuti menice na DS tak napetovou hladinou baterie.
Staci na to obyc externi napetove rele.
-
- R.I.P.
- Příspěvky: 3481
- Registrován: úte čer 11, 2013 10:40 pm
Re: Logika jednostupňového vytěžovače
Kybosi, ak pre mňa v tejto chvíli dosť záhadné zacyklenie v smyčke vyťažovača vedie AŽ k podbitiu batérie, tak je niečo nesprávne v logike vyťažovania. Isteže nerozumiem všetkému, ale tento stav je pre mňa neprípustný.
( A som povinný pridať zlomyselnú poznámku či otázku - aj pwm regulátor reaguje prekmitom na DC zbernici ? Tu som jasný laik. )
( A som povinný pridať zlomyselnú poznámku či otázku - aj pwm regulátor reaguje prekmitom na DC zbernici ? Tu som jasný laik. )
750 Wp, LS3024B, 18650 - 198P8S 30,4 V, Multiplus C 800 nonstop / všetky slabé spotrebiče
1950 Wp, 2 x LS3024B, VS2024N, olovo - 330 Ah / 24 V, Carspa 3000 sin deň / silné spotrebiče a ohrev TUV
5995 kWh za meničmi za posledné 2 roky.
1950 Wp, 2 x LS3024B, VS2024N, olovo - 330 Ah / 24 V, Carspa 3000 sin deň / silné spotrebiče a ohrev TUV
5995 kWh za meničmi za posledné 2 roky.
-
- Příspěvky: 2786
- 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: Logika jednostupňového vytěžovače
Nemám až tolik praktických zkušeností s PWM regulátory nabíjení (používám totiž převážně MPPT nabíječe). Předpokládám ale, že pokud PWM regulátory neobsahují tlumivku, neměl by být k překmitu napětí při odlehčení zásadní důvod.
P.S: Ten příklad byl jen hypotetický a předpokládal použití MPPT regulátoru s tlumivkou.
P.S: Ten příklad byl jen hypotetický a předpokládal použití MPPT regulátoru s tlumivkou.
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
-
- Příspěvky: 633
- Registrován: ned úno 25, 2018 5:04 pm
- Lokalita: Havlíčkův Brod
- Systémové napětí: 48V
- Výkon panelů [Wp]: 19845
- Kapacita baterie [kWh]: 66
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Havlíčkův Brod
Re: Logika jednostupňového vytěžovače
Havarijní odpojení lifepo4 baterie a ochranu reglů jsem pořešil olověnou baterií připojenou jen přes pojistku přímo na DC sběrnici.
Vytěžuji přes měnič a pokud by se spekl stykač bojleru tak se baterie vybijí na 47V a měnič se vypne (a s ním i bojler). Restart měniče je na 51V.
Vloni jsem testoval chování baterií při vybití k spodní úrovni napětí ( do úrovně cca 47,5V a pak jsem hned zahájil nabíjení). Zjistil jsem, že při úrovni cca 51V se pokles napětí baterií zpomalí, zřejmě většinu zátěže přebere olovo a články na lifepo4 se drží celkem srovnané (rozdíl do 0,1V) až do konce testu. Odpojovací napětí článků mám na ochranné jednotce od výrobce na 2,1V a do strojovny chodím na kontrolu každý den, tak by se mi snad lifepo4 nesežralo navzájem.
Plné přeji a jsem s pozdravem. Martin P.
Vytěžuji přes měnič a pokud by se spekl stykač bojleru tak se baterie vybijí na 47V a měnič se vypne (a s ním i bojler). Restart měniče je na 51V.
Vloni jsem testoval chování baterií při vybití k spodní úrovni napětí ( do úrovně cca 47,5V a pak jsem hned zahájil nabíjení). Zjistil jsem, že při úrovni cca 51V se pokles napětí baterií zpomalí, zřejmě většinu zátěže přebere olovo a články na lifepo4 se drží celkem srovnané (rozdíl do 0,1V) až do konce testu. Odpojovací napětí článků mám na ochranné jednotce od výrobce na 2,1V a do strojovny chodím na kontrolu každý den, tak by se mi snad lifepo4 nesežralo navzájem.
Plné přeji a jsem s pozdravem. Martin P.
S-UPS.
20kWp v panelech rozdělených mezi východ, jih a západ. Do osmi stringů.
Baterie
Staré LiFePo4 o kapacitách 12, 24 kWh
Nové LiFePo4 o kapacitách 14, 14 kWh (od listopadu 2022), 14kWh (srpen 2024).
Rezerva Pb vrla 200Ah.
Systémové napětí 48V
Hlavní měnič Victron 5000VA.
Pomocné měniče 2x REVO VM 5000
Regulátory PCM60X
Systém je modulární s možností dalšího rozšíření (kdyby bylo kam) řešený tak, aby při výpadku kteréhokoliv jednoho modulu mohly ostatní fungovat dál bez omezení.
20kWp v panelech rozdělených mezi východ, jih a západ. Do osmi stringů.
Baterie
Staré LiFePo4 o kapacitách 12, 24 kWh
Nové LiFePo4 o kapacitách 14, 14 kWh (od listopadu 2022), 14kWh (srpen 2024).
Rezerva Pb vrla 200Ah.
Systémové napětí 48V
Hlavní měnič Victron 5000VA.
Pomocné měniče 2x REVO VM 5000
Regulátory PCM60X
Systém je modulární s možností dalšího rozšíření (kdyby bylo kam) řešený tak, aby při výpadku kteréhokoliv jednoho modulu mohly ostatní fungovat dál bez omezení.
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
Ještě jednu úpravu přinesl život - zjistil jsem, že (a) v mém případě SOC neměřím příliš spolehlivě a (b) starší baterky začínají být měkké - rychle nastupují k cílovému napětí a tím do floatu od regulátorů. Takže původní verzi viewtopic.php?t=6694&p=138363&hilit=log ... ho#p138331
jsem upravil tak, že hranice mezi standardním a "emergency" vytěžováním není určena pomocí SOC, ale jednoduše podle napětí baterie. Řízení vytěžování pomocí proudu (nikoli podle napětí) zůstává.
jsem upravil tak, že hranice mezi standardním a "emergency" vytěžováním není určena pomocí SOC, ale jednoduše podle napětí baterie. Řízení vytěžování pomocí proudu (nikoli podle napětí) zůstává.
-
- Příspěvky: 83
- Registrován: ned kvě 20, 2018 5:00 pm
- Lokalita: Uprostřed republiky
Re: Logika jednostupňového vytěžovače
> marsal64: Mel bych dotaz k regulacnimu cyklu tveho vytezovace. Jak dlouho cyklus v realu trva = jak rychle je schopen vytezovac reagovat -menit vystupni napeti pro SSR?
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
U mne cyklus PLC trvá obvykle mezi 10 - 20 ms, semtam (1x za hodinu např. při agregacích atp.) i výrazněji déle.JiTr píše:> marsal64: Mel bych dotaz k regulacnimu cyklu tveho vytezovace. Jak dlouho cyklus v realu trva = jak rychle je schopen vytezovac reagovat -menit vystupni napeti pro SSR?
Ale to není úplně kritické, protože časové konstanty určující setrvačnost je dobré příliš nezkracovat a poladit podle mé zkušenosti spíše experimentálně (setrvačnost systému - můj původní Axpert nebo stávající Victron se mi v tom mimochodem jevily víceméně stejně). Hlavním cílem je zabránit "makrocyklování" á la rekuperace v automobilech, kdy se střídavě za sebou relativně rychle baterie nabíjí a vybíjí, což nechceme (jen zopakuji, že proto jsem před časem přešel od regulace podle rozdílu napětí k regulaci podle proudu).
Naposledy jsem mimochodem změnu časových parametrů dělal po změně hlídání hranice mezi "emergency" a standardním vytěžováním podle napětí, nyní to u mne vypadá takto:
Kód: Vybrat vše
IF mer[29].v > TargC
THEN TargS := 0.01; // proud je větší než cílový - zvyšovat standardní vytěžování
ELSE TargS := 0.005; // proud je menší než cílový - snižovat standardní vytěžování
END_IF;
Při nastavení hranice mezi standardním a emergency vytěžováním podle napětí baterie by se zdálo, že je vhodné uplatnění hystereze (při zahájení vytěžování může snadno poklesnout napětí baterie pod nastavenou hranici), ale v praxi chybějící hystereze vlastně ničemu nevadí - vytěžování sice v mezích nastavených časových parametrů kolem hranice napěťové hranice pro rozhodování může chodit "nahoru a dolů", ale vždy se ureguluje nikoli pod nastavené proudy, takže "makrocyklování" nenastane.
Jinak se mi už zdá, že s touto poslední úpravou to vyhovuje - než přijdu na něco nového .
-
- Příspěvky: 83
- Registrován: ned kvě 20, 2018 5:00 pm
- Lokalita: Uprostřed republiky
Re: Logika jednostupňového vytěžovače
> marsal64: Diky. Ja jsem z toho pochopil,ze s periodou cca 20ms ma tvuj algoritmus moznost menit prikon vytezovace a to tak, ze jsi se snazil casovymi konstantami (klouzavy prumer z namerenych hodnot produ za 1s + dalsi konstanty, ktere ovlivnuji strmost vytezovani) docilit toho, aby byla baterie pri dostatku energie z panelu rozumne dobijena a nedochazelo k castym kratko-/dlouho-dobym zmenam toku proudu z / do baterie dle odberu domu a vytezovani ...
Zkusim to taky tak ... ridit dle produ do baterie, SOC a pak vyjit z max. napeti clanku baterie - pokud zacne balancovani, zacnu vytezovat razantneji, aby to balancer zvladl ... ale vse ukaze realita a chovani clanku Lifepo4 baterie ...
Zkusim to taky tak ... ridit dle produ do baterie, SOC a pak vyjit z max. napeti clanku baterie - pokud zacne balancovani, zacnu vytezovat razantneji, aby to balancer zvladl ... ale vse ukaze realita a chovani clanku Lifepo4 baterie ...
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
Nevím, jestli to tady ještě někoho baví , ale níže je další vylepšení algoritmu na základě pozorování provozu v praxi.
Nyní se požadavek na zvyžování vytěžování děje nejen podle rozdílu proudu (to vedlo v minulé verzi zbytečně k nevytěžování, i když bylo možné), ale i rozdílu napětí. Požadavek na snižování vytěžování zůstává zajisté podle proudu.
Význam proměnných viz první příspěvek vlákna.
Nyní se požadavek na zvyžování vytěžování děje nejen podle rozdílu proudu (to vedlo v minulé verzi zbytečně k nevytěžování, i když bylo možné), ale i rozdílu napětí. Požadavek na snižování vytěžování zůstává zajisté podle proudu.
Význam proměnných viz první příspěvek vlákna.
Kód: Vybrat vše
// Stávající hodnota do pracovní proměnné
CurDDVoltage := PhaseVoltage;
// bylo dosaženo limitu měniče?
IF REAL_TO_UINT(mer[49] .v) > PhaseDDPwLim THEN
CurDDVoltage := CurDDVoltage - 0.05; // rychlé snížení výkonu
ELSE
IF mer[11] .v_lsec < BatVFromAboveVyt THEN
// emergency vytěžování
IF mer[29].v > TargetEmergencyCurrent
THEN
// rychleji zvyšuj emergency vytěžování
CurDDVoltage := CurDDVoltage + 0.01 *(mer[29].v - TargetEmergencyCurrent);
ELSE
// pomaleji snižuj emergency vytěžování
CurDDVoltage := CurDDVoltage - 0.005 *(TargetEmergencyCurrent - mer[29].v);
END_IF;
ELSE
// standardní vytěžování
IF mer[29].v > TargetCurrent THEN
// proud je vyšší než žádoucí, zvyš vytěžování, P podle rozdílu napětí + rozdílu proudu
CurDDVoltage := CurDDVoltage + 0.002 *(mer[11].v_lsec - BatVFromAboveVyt) + 0.001 *(mer[29].v - TargetCurrent);
ELSE
// proud je nižší než žádoucí, sniž vytěžování, P podle rozdílu proudu
CurDDVoltage := CurDDVoltage - 0.005 *(TargetCurrent - mer[29].v);
END_IF;
END_IF;
END_IF;
// Omez hodnoty pro regulaci na 0..maximální nastavená hodnota
CurDDVoltage := LIMIT(0, CurDDVoltage, PhaseDDTemperaturePhasePercVyt / 10);
// Přenos hodnoty pracovní proměnné na výstup
PhaseVoltage := CurDDVoltage;
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
Jak tak postupně měknou baterky, musel jsem tam nakonec hysterezi přidat, aby vytěžování příliš často nepřepínalo mezi "emergency" a "standardním".
Pro potěšení jsem tam navíc přidal "LED" indikaci probíhajícího standardního a "emergency" vytěžování.
Vysvětlivky k proměnným apod. viz výše
Pro potěšení jsem tam navíc přidal "LED" indikaci probíhajícího standardního a "emergency" vytěžování.
Vysvětlivky k proměnným apod. viz výše
Kód: Vybrat vše
VAR_GLOBAL
PhaseDDType : INT := 1; // default na vytěžovač
// PhaseType = 0 - pevné
PhaseDDValPerc : REAL := 0;
// PhaseType = 1 - vytěžování
TargetCurrent : REAL := 2; // cílový regulační proud do baterií
TargetEmergencyCurrent : REAL := 50; // ochranný regulační proud do baterií, nad který proběhné "ochranné" vytěžování
CurDDVoltage : REAL := 0; // aktuální hodnota napětí pro SSR
BatVFromAboveVyt: REAL := 26.9; // minimální napětí baterie pro standardní vytěžování
PhaseDDTemperaturePhasePercVyt : REAL := 60; // maximální výkon při režimu vytěžovače
PhaseDDPwLim : UINT := 1600; // Celkový výkon, nad který se omezuje vytěžovač
DDis_0 : BOOL := False;
DDis_1 : BOOL := True;
is_emergency : BOOL := True; // help variable for emergency / nonemergency switch
led_emergency : BOOL := False; // LED indicator for emergency SSR load
led_standard : BOOL := False; // LED indicator for standard SSR load
END_VAR
...
CASE PhaseDDType OF
0 : //Fixní vytěžování
PhaseVoltage := MAX(0, MIN(PhaseDDValPerc / 10, 10)); // 0 - 10V
DDis_0 := True;
DDis_1 := False;
LED_emergency := False;
LED_standard := False;
1 : // Dynamické vytěžování
// Stávající hodnota do pracovní proměnné
CurDDVoltage := PhaseVoltage;
// bylo dosaženo limitu měniče?
IF REAL_TO_UINT(mer[49] .v) > PhaseDDPwLim THEN
CurDDVoltage := CurDDVoltage - 0.5; // rychlé snížení výkonu
ELSE
// Decide on emergency or standard
IF mer[11] .v_lsec < BatVFromAboveVyt - hysteresis THEN
is_emergency := True;
END_IF;
IF mer[11] .v_lsec >= BatVFromAboveVyt THEN
is_emergency := False;
END_IF;
IF is_emergency THEN
// emergency vytěžování
// napětí baterie je menší než limitní napětí pro vytěžování
IF mer[29] .v > TargetEmergencyCurrent
// rozdílné P hodnoty podle směru proudu
THEN
// rychleji zvyšuj emergency vytěžování
CurDDVoltage := CurDDVoltage + 0.01 *(mer[29] .v - TargetEmergencyCurrent);
ELSE
// pomaleji snižuj emergency vytěžování
CurDDVoltage := CurDDVoltage - 0.005 *(TargetEmergencyCurrent - mer[29] .v);
END_IF;
ELSE
// standardní vytěžování
IF mer[29] .v > TargetCurrent THEN
// proud je vyšší než žádoucí, zvyš vytěžování, P podle rozdílu napětí + rozdílu proudu
CurDDVoltage := CurDDVoltage + 0.001 *(mer[11] .v_lsec - BatVFromAboveVyt + hysteresis) + 0.001 *(mer[29] .v - TargetCurrent);
ELSE
// proud je nižší než žádoucí, sniž vytěžování, P podle rozdílu proudu
CurDDVoltage := CurDDVoltage - 0.01 *(TargetCurrent - mer[29] .v);
END_IF;
END_IF;
END_IF;
// Omez hodnoty pro regulaci na 0..maximální nastavená hodnota
CurDDVoltage := LIMIT(0, CurDDVoltage, PhaseDDTemperaturePhasePercVyt / 10);
// Obsluha zobrazovacích proměnných
IF is_emergency THEN
IF curDDVoltage > 0 THEN
LED_emergency := True;
ELSE
LED_emergency := False;
END_IF;
LED_standard := False;
ELSE //standard
IF curDDVoltage > 0 THEN
LED_standard := True;
ELSE
LED_standard := False;
END_IF;
LED_emergency := False;
END_IF;
// Přenos hodnoty pracovní proměnné na výstup
PhaseVoltage := CurDDVoltage;
DDis_0 := False;
DDis_1 := True;
END_CASE;
- Přílohy
-
- VytěžováníLED.jpg (24.07 KiB) Zobrazeno 3891 x
-
- Příspěvky: 7723
- Registrován: sob črc 19, 2014 8:56 pm
- Lokalita: severně od Brna
- Systémové napětí: 48V
- Výkon panelů [Wp]: 8kWp
- Kapacita baterie [kWh]: 12kWh
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
Re: Logika jednostupňového vytěžovače
co je "emergency vytěžování"?
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
"Emergency" vytěžování omezuje nabíjecí proud do baterií, ač je jejich napětí ještě pod úrovní, kdy se zapíná standardní vytěžování. (c) nápadu vlkazajac.kodl69 píše:co je "emergency vytěžování"?
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
Zajímavé, jak i po delším čase člověk přijde na další a dost podstatné vylepšení.
Konkrétně díky programování adaptivního wallboxu (https://solarforum.cz/viewtopic.php?p=14711#p14711).
Princip regulace podle proudu do baterie zůstává, ale změna je v tom, že si měním, jaký ten proud do baterií má zrovna být. U wallboxu používám SOC, pro vytěžování v poustevně zůstávám u napětí baterie. Měření mám sice už nové (s INA229) a čekám jen to nejlepší, ale je to v provozu tři dny...
Pokud je tedy napětí baterie na úrovni odpojovacího napětí, nastavuji, "cílový regulační proud do baterií" na požadované maximum, řekněme 60A (tím omezuji maximální nabíjení baterií a šetřím je). Pokud je napětí baterie maximální, odpovídající napětí, na které je nastaven limit regulátorů, cilový regulační proud je 0, což znamená že veškerá výroba se vytěžuje, pokud je kam. Pokud je napětí baterie něco mezi, hodnota "cílového regulačního proudu" se počítá lineární interpolací mezi dvěma krajními hodnotami. Fantazii se meze nekladou, lze případně vyzkoušet nelineární průběh interpolace.
Kromě limitních hodnot pak zadávám právě jen mezní hodnoty "cílového regulačního proudu" (tj. zrušil jsem dokonce mez, od které se má vytěžovat ):
Konkrétně díky programování adaptivního wallboxu (https://solarforum.cz/viewtopic.php?p=14711#p14711).
Princip regulace podle proudu do baterie zůstává, ale změna je v tom, že si měním, jaký ten proud do baterií má zrovna být. U wallboxu používám SOC, pro vytěžování v poustevně zůstávám u napětí baterie. Měření mám sice už nové (s INA229) a čekám jen to nejlepší, ale je to v provozu tři dny...
Pokud je tedy napětí baterie na úrovni odpojovacího napětí, nastavuji, "cílový regulační proud do baterií" na požadované maximum, řekněme 60A (tím omezuji maximální nabíjení baterií a šetřím je). Pokud je napětí baterie maximální, odpovídající napětí, na které je nastaven limit regulátorů, cilový regulační proud je 0, což znamená že veškerá výroba se vytěžuje, pokud je kam. Pokud je napětí baterie něco mezi, hodnota "cílového regulačního proudu" se počítá lineární interpolací mezi dvěma krajními hodnotami. Fantazii se meze nekladou, lze případně vyzkoušet nelineární průběh interpolace.
Kromě limitních hodnot pak zadávám právě jen mezní hodnoty "cílového regulačního proudu" (tj. zrušil jsem dokonce mez, od které se má vytěžovat ):
Kód: Vybrat vše
// Fázové řízení
VAR_GLOBAL
PhaseDDType : INT := 1; // default na vytěžovač
// PhaseType = 0 - pevné
PhaseDDValPerc : REAL := 0;
// PhaseType = 1 - vytěžování
//
TargetCurrent_minV : REAL := 60; // cílový regulační proud do baterií při minimálním napětí baterie UAKUMIN
// UAKUMIN 24.1V
UAKUMAX : REAL:= 27.1;
TargetCurrent_maxV : REAL := 0; // cílový regulační proud do baterií při odepínacím napětí baterie UAKUMAX
TargetCurrent_now : REAL; // aktuální hodnota cílového regulačního proudu
CurDDVoltage : REAL := 0; // aktuální hodnota napětí pro SSR
PhaseDDTemperaturePhasePercVyt : REAL := 60; // maximální výkon při režimu vytěžovače
PhaseDDPwLim : real := 1600; // Celkový výkon, nad který se omezuje vytěžovač
DDis_0 : BOOL := False;
DDis_1 : BOOL := True;
led_standard : BOOL := False; // LED indicator for standard SSR load
END_VAR
.................................
// Phase manage
PROGRAM PhaseD
VAR
A : REAL; // helper var.
REGULATION_SPEED : REAL := 0.001; // regulation speed
END_VAR
// Nastav zobrazování podle typu řízení
CASE PhaseDDType OF
0 : //Fixní vytěžování
PhaseVoltage := MAX(0, MIN(PhaseDDValPerc / 10, 10)); // 0 - 10V
DDis_0 := True;
DDis_1 := False;
LED_standard := False;
1 : // Dynamické vytěžování
// Stávající hodnota do pracovní proměnné
CurDDVoltage := PhaseVoltage;
// bylo dosaženo limitu měniče?
IF lreal_to_real(msoc32data[3].Power) > PhaseDDPwLim THEN
CurDDVoltage := CurDDVoltage - 0.5; // rychlé snížení výkonu
ELSE
// standardní vytěžování
//
// propočti cílový proud
A :=(TargetCurrent_minV - TargetCurrent_maxV) /(UAKUMAX - UAKUMIN);
TargetCurrent_now :=(BatteryCurrent - TargetCurrent_maxV) + A *(UAKU - UAKUMIN);
// limit
TargetCurrent_now := LIMIT(TargetCurrent_maxV, TargetCurrent_now, TargetCurrent_minV);
// regulate
CurDDVoltage := CurDDVoltage -(TargetCurrent_now - BatteryCurrent) * REGULATION_SPEED;
END_IF;
// Omez hodnoty pro regulaci na 0..maximální nastavená hodnota
CurDDVoltage := LIMIT(0, CurDDVoltage, PhaseDDTemperaturePhasePercVyt / 10);
IF curDDVoltage > 0 THEN
LED_standard := True;
ELSE
LED_standard := False;
END_IF;
// Přenos hodnoty pracovní proměnné na výstup
PhaseVoltage := CurDDVoltage;
DDis_0 := False;
DDis_1 := True;
END_CASE;
END_PROGRAM
-
- Příspěvky: 1203
- Registrován: sob čer 16, 2018 1:45 pm
- Lokalita: Velké Popovice
- Systémové napětí: 48V
- Výkon panelů [Wp]: 9,3
- Kapacita baterie [kWh]: 30
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Velké Popovice
Re: Logika jednostupňového vytěžovače
Dodal jsem nakonec nastavení napěťových úrovní, zkusím tedy shrnout jakousi "finální provozní verzi" s charakteristikami:
- vytěžování probíhá podle hodnoty proudu do baterií. Vytěžování se snaží udržet "cílový proud do baterií"
- hodnota cílového proudu do baterií se mění s napětím baterie. Pokud je napětí baterie menší než nastavená hodnota TargetDDVoltage_1, je udržován maximální cílový nabíjecí proud - vytěžování nastává pouze tehdy, když je proud překročen; cílem je tu ochrana baterií před příliš velkým nabíjecím proudem
- počínaje hodnotou TargetDDVoltage_1 cílový proud do baterií lineárně klesá až k okamžiku, kdy baterie dosáhne napětí TargetDDVoltage_2 odpovídající plně nabitým bateriím. Cílový proud při TargetDDVoltage_2 je typicky nula, v tom případě může být vytěžování maximální
- je možné jistě místo napětí použít i SOC, ale napětí se jeví jako spolehlivější
- pokud se zůstane u nastavení cílového proudu do baterie podle napětí, pak závislost nemusí být jistě lineární, může případně více kopírovat křivku napětí baterie podle SOC
Hodnota cílového proudu do baterií může vypadat tedy takto (příklad pro 24V systém): Vlastní vytěžování už je jednoduché - jde o proporcionální regulátor, který přidává nebo ubírá na intenzitě vytěžování tak, aby cílový proud do baterií zůstal co nejvíce zachován. Vlastní rychlost regulace je podle mých zkušeností dobré spíše vyzkoušet (viz parametr REGULATION_SPEED v příkladu kódu níže) - měniče i regulátory mají setrvačnost a příliš rychlá regulace není účelná.
Možné HW řešení - SSR řízené fázově napětím 0..10V (tak to předpokládá příklad kódu níže).
Ovládání v GUI může vypadat takto: Ještě tedy příklad kódu (Teco Foxtrot ST), lze to naprogramovat jednoduše, nejsou potřebné žádné hystereze (jak tomu bylo u předchozích verzí) a podobně. V kódu je ještě ošetření maxima výkonu měniče, nastavení pevné hodnoty vytěžování a nějaké grafické pomůcky:
- vytěžování probíhá podle hodnoty proudu do baterií. Vytěžování se snaží udržet "cílový proud do baterií"
- hodnota cílového proudu do baterií se mění s napětím baterie. Pokud je napětí baterie menší než nastavená hodnota TargetDDVoltage_1, je udržován maximální cílový nabíjecí proud - vytěžování nastává pouze tehdy, když je proud překročen; cílem je tu ochrana baterií před příliš velkým nabíjecím proudem
- počínaje hodnotou TargetDDVoltage_1 cílový proud do baterií lineárně klesá až k okamžiku, kdy baterie dosáhne napětí TargetDDVoltage_2 odpovídající plně nabitým bateriím. Cílový proud při TargetDDVoltage_2 je typicky nula, v tom případě může být vytěžování maximální
- je možné jistě místo napětí použít i SOC, ale napětí se jeví jako spolehlivější
- pokud se zůstane u nastavení cílového proudu do baterie podle napětí, pak závislost nemusí být jistě lineární, může případně více kopírovat křivku napětí baterie podle SOC
Hodnota cílového proudu do baterií může vypadat tedy takto (příklad pro 24V systém): Vlastní vytěžování už je jednoduché - jde o proporcionální regulátor, který přidává nebo ubírá na intenzitě vytěžování tak, aby cílový proud do baterií zůstal co nejvíce zachován. Vlastní rychlost regulace je podle mých zkušeností dobré spíše vyzkoušet (viz parametr REGULATION_SPEED v příkladu kódu níže) - měniče i regulátory mají setrvačnost a příliš rychlá regulace není účelná.
Možné HW řešení - SSR řízené fázově napětím 0..10V (tak to předpokládá příklad kódu níže).
Ovládání v GUI může vypadat takto: Ještě tedy příklad kódu (Teco Foxtrot ST), lze to naprogramovat jednoduše, nejsou potřebné žádné hystereze (jak tomu bylo u předchozích verzí) a podobně. V kódu je ještě ošetření maxima výkonu měniče, nastavení pevné hodnoty vytěžování a nějaké grafické pomůcky:
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 TargetDDCurrent_1
// TargetDDVoltage_2 : REAL := 27.1; // napětí, pro které se reguluje proud baterie na TargetDDCurrent_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
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 6 Odpovědi
- 4403 Zobrazení
-
Poslední příspěvek od cipis
-
-
Poptávka na zhotovení Kybosova vytěžovače za úplatu
od deryld » » v Boilery, ohřev TUV, vytápění, klimatizace
Poptávka na zhotovení Kybosova vytěžovače za úplatu
- 11 Odpovědi
- 1379 Zobrazení
-
Poslední příspěvek od stanekl
-