Řízení výkonu NPA R04 – uživatelská příručka
Platí pro verzi NPA R04: 2.15.beta5 · Vytvořeno: 2026-06-17 · Aktualizováno: 2026-08-04
Tento dokument vysvětluje, jak jednotka NPA R04 řídí činný výkon výrobny: jak se nastavují rozpadová místa, jak se zadávají povely a omezení a jak se ladí regulátory. Na konci jsou praktické příklady s grafy – včetně přesného doregulování na procenta, řízení měničů s velkým dopravním zpožděním a ukázky, kdy regulátor začne kmitat.
Tato příručka popisuje regulaci činného výkonu (modul
NRegulation2). Řízení BESS, cos φ a jalového výkonu sem nepatří – mají samostatné dokumenty (BESS vizbess.md, cos φ a jalový výkon samostatně).
Obsah
- Jak řízení funguje (přehled)
- Nastavení rozpadového místa
- Povely a omezení
- Nastavení regulátorů
- Příklady s grafy
- Postup ladění (cookbook)
1. Jak řízení funguje (přehled)
Regulační smyčka běží každých 500 ms (NRegulation2::Loop). V každém kroku:
POVELY / OMEZENÍ ZPĚTNÁ VAZBA
- povel P0..P4 (DŘ) -> pomalá měření výkonu
- přetoky do DS -> rychlá výrobny
- spotové ceny, SoP |
| |
v |
[ Suma požadovaný výkon ] <-----------+
vyber přísnější (rychlá / pomalá)
|
v
[ PI regulátor reg1 / reg2 ]
|
v
[ rozpad do míst podle priority ]
Spojitá: pošle přesné %
Px: vybere nejvyšší stupeň P0..P4
|
v
[ zařízení / měniče ]
- Požadovaný výkon se počítá ze dvou větví:
- pomalý – z povelu distribuce
P0..P4(=PowerLimitv %), - rychlý – z omezení přetoku do sítě (povolený přetok, SoP rezervovaný výkon, spotové ceny).
- pomalý – z povelu distribuce
- Regulátor použije tu přísnější větev: je-li rychlý požadavek ≤ pomalý, řídí rychlý regulátor přetoků (reg2), jinak pomalý regulátor povelů (reg1).
- Výsledné procento se rozdělí do rozpadových míst podle priority a podle toho, zda místo umí spojité řízení nebo jen stupňové povely Px.
Rychlá orientace v menu
Veškeré nastavení se dělá ve webovém rozhraní jednotky (horní menu). Kde co najdete:
| Co nastavujete | Cesta v menu |
|---|---|
Vlastnosti místa, způsob řízení, povely Px (lo_*) |
Rozpadová místa → klik na místo → editace |
SoP rezervovaný výkon/příkon, úrovně P0–P4 (fs_sopRsrvPwr, fs_rgP0…4) |
Nastavení výrobny |
Omezení přetoku do sítě (fs_flwRest…) |
Nastavení výrobny |
Konstanty regulátorů činného výkonu (fs_reg1/2_k/i+/i-), spotové ceny (fs_TarifPacLimit…) |
Nastavení výrobny → dole Nastavení placených funkcí |
Editovat hodnoty placených funkcí (včetně konstant regulátorů) může jen účet s vyšším oprávněním; běžný uživatel je vidí jen ke čtení.
2. Nastavení rozpadového místa
Menu: Rozpadová místa → klikněte na konkrétní místo → tlačítko editace.
2.1 Základní údaje
| Pole | Klíč | Význam |
|---|---|---|
| Typ | lo_typeDs |
regulaci činného výkonu řeší typy FVE, MVE, KGJ, BPS, VTE, DA, HE (BESS, TUV, AKU, Wallbox mají vlastní řízení) |
| Instalovaný výkon | lo_insPower |
špičkový instalovaný výkon [Wp] — zadává uživatel |
| Skutečný činný výkon | (dopočítává se) | jmenovitý činný výkon měničů [W] = součet dd_Power zařízení v místě, jen ke čtení |
Maximální výkon místa pro regulaci = min(Σ dd_Power, lo_insPower) (když je lo_insPower zadán), jinak Σ dd_Power. Procenta se vždy počítají z tohoto maxima.
Změna od verze 2.14 (2026-07-03). Dřív se „Skutečný činný výkon" zadával ručně a ukládal do configu pod klíčem
lo_Power. Nyní je to vlastnost zařízení (dd_Power), výkon místa je jejich součet (NConfig::GetLocationPower) a klíčlo_Powerse při načtení configu z rozpadových míst maže.
2.1.1 Jmenovitý výkon měniče (dd_Power)
Menu: Zařízení → klik na zařízení → editace, pole Činný výkon měniče [W].
Chová se stejně jako kapacita BESS (viz Řízení BESS §5):
- bez fajfky „zadat ručně" (výchozí) — pole je jen ke čtení a plní se hodnotou z Modbusu; načtená hodnota je vždy vidět i v Detailu zařízení (
Vykon menice nacten [W]). - s fajfkou
dd_PowerHand— hodnotu zadává uživatel; načtená z Modbusu slouží jen jako informace. Odfajfkováním se uložená hodnota smaže, aby ji převzal Modbus.
Zápis do configu proběhne jen při změně > 10 % (aby kolísání čtení nepřepisovalo config při každém cyklu) a nikdy se nezapisuje nula ani neplatné čtení.
Odkud se hodnota čte u jednotlivých typů měničů:
| Driver | Zdroj hodnoty |
|---|---|
GoodWe (goodwe, gw_15_50kw_bess, gw_15_50kw_inverter) |
registr 35001 (Rate Power) |
| Solax DataHub 1000 | „Instalovaný výkon [W]" hlášený DataHubem |
| Solax EMS1000 | protokol registr jmenovitého výkonu nemá → štítkový součet dle typu skříně (řada TRENE), nebo u X3-AELIO největší výkon hlášený EMS v registrech 104/105 (běžící maximum, neklesá při deratingu); použitý zdroj je vidět v Detailu zařízení (od 2.15.beta4) |
Solinteg (solinteg) |
registr 10070 (Inverter Rated Power) (od 2.15.beta7); některé FW ho nepodporují a vrací 0xFFFFFFFF → výkon se vezme z názvu modelu (např. M2HT-50K-150 = 50 kW); použitý zdroj je v Detailu zařízení („Jmenovity vykon zdroj", od 2.15.beta9) |
Sinexcel (sinexcel) |
registr 53231 (Nominal online capacity – kapacita online modulů, běžící maximum, aby výkon neklesal při výpadku modulu) (od 2.15.beta8) |
| SolarEdge | Max Active Power |
| Sungrow Logger1000 | Max. total nominal active power of array (výkon celého pole) |
| Sungrow | Nominal active power |
| Deye | Rated Power |
| Sermatec | štítkový výkon podle modelu skříně (30 / 60 / 120 kW, tabulka v driveru) |
| extds (podřízené NPA/PLC) | činný výkon místa z registru 40070 + 200·n |
Ostatní drivery (např. GRES, SMA) jmenovitý výkon nehlásí — u nich se zadává ručně. Kontrola configu upozorní, když má výkonové zařízení dd_Power ≤ 0 nebo když je součet za regulované/BESS místo nulový (viz Konfigurace §Kontrola konfigurace).
2.2 Způsob regulace zařízení (lo_regDev)
Toto je klíčové rozhodnutí podle toho, co zařízení v daném místě umí:
| Volba | Klíč | Kdy použít |
|---|---|---|
| Spojitá regulace | Spojita |
Zařízení umí přijmout libovolné % (měniče FVE, KGJ s plynulým řízením…). Regulátor pošle přesné procento. |
| Regulace povely Px | Px |
Zařízení neumí plynulé řízení – jen pevné stupně (relé, přepínání odboček, starší měniče reagující jen na povelové úrovně). Regulátor vybere nejvyšší stupeň, jehož výkon nepřekročí požadované %. |
| Bez regulace | none |
Místo se nereguluje. Vypne se (0 %) jen pokud je požadováno < 100 %. |
Px = „jen pro zařízení, která neumožňují plynulé řízení". Místo plynulého procenta se používá 5 pevných stupňů
P0…P4(viz dále). Regulátor nikdy nenastaví procento „mezi" stupni – sníží se na nejbližší nižší nebo rovný stupeň, aby nedošlo k překročení limitu.
Volba se nabízí jen u míst typu FVE, MVE, KGJ, BPS, VTE, DA, HE – tedy u těch, která regulátor řadí do skupin podle priority. U míst typu BESS se nezobrazuje: způsob řízení baterií určuje regulace BESS (nabíjecí/vybíjecí limity, peak shaving), ne lo_regDev.
2.3 Mapování povelů Px na procenta (lo_rgP0…lo_rgP4)
Distribuce posílá povelové úrovně P0…P4. Pro každou úroveň se v místě nastaví, na kolik procent výkonu se má místo omezit:
| Úroveň | Klíč | Význam dle distributorů (FVE/VTE) |
|---|---|---|
| P0 | lo_rgP0 |
0 % včetně vnořené AKU (EG.D; v NPA volitelně galvanické odpojení fs_PwrDiscP0) |
| P1 | lo_rgP1 |
0 % (ČEZ SPG000) |
| P2 | lo_rgP2 |
30 % (ostatní zdroje KGJ/BPS/MVE: ČEZ 50 %, EG.D 50 %) |
| P3 | lo_rgP3 |
60 % (ostatní zdroje: ČEZ 75 %, EG.D 70 %) |
| P4 | lo_rgP4 |
100 % – základní provozní stav, povel ruší předchozí omezení |
Globální výchozí hodnoty z továrního nastavení se zobrazují vedle (fs_rgP0…fs_rgP4).
Výchozí hodnoty dle směrnic distributorů (od 2.15.beta9)
Jedna tabulka NConfig::DsoDefaultLevels() (nconfig.cpp) platí pro ČEZ Distribuce, EG.D, PREdistribuce (PN KA 508 není veřejná) i VSD. Chybějící nebo prázdný klíč se doplní při startu a při každém uložení konfigurace (NConfig::SeedDsoDefaults, záznam v logu); na stránce Nastavení výrobny jsou hodnoty vidět jako placeholder a tlačítko Výchozí dle distribuce je vyplní do polí (uložit je nutné tlačítkem Uložit). Zaškrtávátka aktivace stupňů se nemění – které stupně jsou povolené, určuje smlouva o připojení.
| Skupina | Klíče | Výchozí hodnoty | Zdroj |
|---|---|---|---|
| P | fs_rgP0…4 |
0 / 0 / 30 / 60 / 100 % | ČEZd_PI_0038 kap. 4.1.2.1 + VP_D; EG.D DŘT DECE v04 §3.2 |
| Q (% ΣPi) | fs_rgQL1, QL2, Q0, QC2, QC1 |
+37,5 / +18,5 / 0 / −18,5 / −37,5 % | EG.D §2.8: QL375 = 0,375·Pinst ind., QL185, Q0 (cos φ = 1), QC185, QC375; ±10 % |
| cos φ | fs_rgCosL1, L2, 1, C2, C1 |
0,94 / 0,98 / 1,00 / −0,98 / −0,94 | ekvivalent Q stupňů při P = Pinst (cos(atan 0,375), cos(atan 0,185)); PPDS 2025 příl. 4 §9.2.1 vyžaduje schopnost 0,90 ind.–0,90 kap. |
| nabíjení BESS | fs_BESSCh1…4 |
0 / 25 / 50 / 100 % | EG.D §4.2 a DOB/DSR v04: IP1–IP4, IP4 základní stav |
Znaménko v NPA: + induktivní (odběr Q z DS, zpožděný), − kapacitní (dodávka Q do DS). EG.D zapisuje induktivní hodnoty se záporným znaménkem – při přenosu hodnot ze smlouvy zkontrolujte orientaci. Vybíjecí stupně fs_BESSdCh0…4 distributoři nedefinují, výchozí hodnoty se pro ně nedoplňují.
Zdroje: ČEZ Distribuce Požadavky na regulaci výroben (ČEZd_PI_0038, účinnost 25. 5. 2022, cezdistribuce.cz/file/edee/distribuce/provozni-instrukce-regulace.pdf), EG.D Podklady pro dispečerské řízení a chránění DECE 100–1000 kW v04 (egd.cz/…/podklady-pro-dispecerske-rizeni-a-chraneni-dece-od-100kw-do-1000kw-v4_final.pdf), EG.D Podklady pro dispečerské řízení DOB a DSR od 250 kW v04, PPDS 2025 příloha 4 (cezdistribuce.cz/file/edee/distribuce/ppds/ppds-2025_priloha-4.pdf). Tlačítkem Nastavit u každého stupně lze povel ručně otestovat (setlocationlevelp). Pole Manuální nastavení výkonu (lo_rgGlobal, povel „Px") nastaví místo ručně na zadané % (setlocationpower).
Změna procenta u právě aktivního stupně (v místě, v Nastavení výrobny nebo u zařízení) se projeví hned po uložení – nový povel z dispečinku není potřeba. Ručně zadaný výkon (Manuální nastavení, povel P_PROC) uložení nepřepíše (od 2.15.beta9).
2.4 Priorita vypínání (lo_regPwrPriority)
Když je nutné omezit výkon, místa se obsluhují podle priority (0 = nejvyšší přednost zůstat v provozu):
- Zapíná se od nejnižšího čísla, vypíná se od nejvyššího.
- Místo s nižším číslem priority dostane výkon dřív a vypíná se jako poslední.
- Místo s vyšším číslem se omezuje/vypíná jako první.
- Místa se stejnou prioritou a stejným
lo_regDevtvoří skupinu regulovanou společně; spojitá místa se v rámci stejné priority řadí za stupňová (Px).
2.5 Řízení externím PLC přes Modbus (lo_regExtPLC)
| Volba | Klíč | Význam |
|---|---|---|
| Neaktivní | none |
bez vlivu |
| Řízení výkonu v % | regP_prc |
nadřazené PLC zapisuje DS_power_value [%] |
| Řízení výkonu v kW | regP_kw |
nadřazené PLC zapisuje Power_export_limit |
Z lokálního požadavku a hodnoty od PLC se vždy bere přísnější (nižší) hodnota.
2.6 Vypnutí ovládání zařízení (dd_ctrlEnable)
Menu: Detekce zařízení → nastavit u zařízení → Ovládání zařízení
Volba je u každého ovladatelného zařízení (měnič, BESS, podřízená NPA, modul s reléovými výstupy). Čistě měřicí zařízení (elektroměry) ji nemají.
| Volba | Klíč | Význam |
|---|---|---|
| Povoleno | chybí nebo true |
Výchozí stav. Zařízení se účastní regulace a NPA do něj zapisuje řídicí registry. |
| Vypnuto (jen čtení) | false |
Zařízení je vyřazeno z regulace a NPA do něj nezapíše žádný registr. |
Co „vypnuto" znamená v běhu:
PozadovanyVykon()iPozadovanyVykonBESS()vrátíNaN, takže zařízení nedostane povel;- všechny zápisy zařízení jsou zablokovány společně v
DeviceModbus::WriteReg*– tedy i cos φ, jalový výkon, start/stop, přepínání režimů a reléové výstupy, ne jen činný výkon; - u BESS zařízení navíc vypadne z rozdělování společného povelu mezi baterie (
BessSharePower), aby o svůj podíl neubíralo ostatním; - měření běží dál – hodnoty se čtou, ukládají do stavu, zobrazují a posílají na Modbus i do dálkového logu. Vypnutí se týká výhradně zápisů.
Stav se vypisuje v detailu zařízení („Ovládání vypnuto – zařízení je jen ke čtení…") a v měření jako položka ovladani.
Typické použití: měnič v servisu, zařízení řízené cizím systémem, nebo dočasné vyřazení jednoho kusu z regulace bez mazání z konfigurace.
2.7 Maximální výkon z rozpadového místa (lo_maxOutPwrEn, lo_maxOutPower)
Menu: Rozpadová místa → nastavit u místa → Max. výkon z rozpadového místa
Omezení výkonu tekoucího ven z rozpadového místa – typicky kvůli poddimenzovanému kabelovému přívodu do budovy. Zadává se v kW + zapínací fajfka (výchozí vypnuto); v konfiguraci se hodnota ukládá ve W (lo_maxOutPower, jako lo_insPower).
Sémantika:
- Výstup místa se měří DS elektroměrem místa (zařízení s
dd_meas="DS"v místě, kladné = výstup z místa). Zdroje v místě smí dál krýt vlastní spotřebu místa – omezuje se jen to, co teče ven: povolená výroba = aktuální výroba + (limit − měřený výstup). Strop se přepočítává každý tick regulace (500 ms); dolů okamžitě (ochrana kabeláže), nahoru omezeně (NR_MAXOUT_UP_PROC_TICK, tlumení – měření se opožďuje za povelem). Limit je suma tří fází, per-fázově se neřeší. - Bez DS měření v místě není zpětná vazba – limit se uplatní staticky na výrobu (vlastní spotřeba místa se nekryje) a konfigurace hlásí varování. Na sítích, kde jsou jako
DSoznačené samotné měniče (výstup ≈ výroba), vyjde totéž statické chování – neoznačujte ale elektroměr i měniče zároveň (GetDSFloatby sčítal obojí). - Ostatní místa nejsou dotčena: neodebraný výkon zůstává v rozpočtu výrobny a přeteče na další prioritní skupiny (stejné chování jako override
fs_DS_power_value). Uvnitř jedné skupiny (stejná priorita) se ušetřený výkon nedělí – přeteče až do další skupiny. - Limit přežije i povely DŘ/Modbus (Px,
PowerLimitper-zařízení i per-místo) a místa „Bez regulace" (lo_regDev="none") – je zapojen jako klamp vNState::PozadovanyVykona zrcadlí se do bypassu ramp (DsrStropPx), takže pokles stropu se stáhne rychle bez ohledu na rampy. - BESS v omezeném místě: vybíjení (kladný povel) je limitem omezeno, nabíjení ne – nabíjení výstup z místa snižuje. Platí i pro místa typu BESS (mimo prioritní skupiny).
- Aktuální strop je vidět v ladicím výpisu Regulace2 (řádek
maxout …) a v živém stavu místa jakomaxout_cap_proc[%].
3. Povely a omezení
Menu: Nastavení výrobny (spotové ceny jsou dole v Nastavení placených funkcí).
Zdroje požadovaného výkonu:
3.0 SoP – Celkový instalovaný výkon
| Pole | Klíč | Význam |
|---|---|---|
| SoP – Celkový instalovaný výkon | fs_sopTotalPwr |
celkový instalovaný výkon výrobny dle Smlouvy o připojení [W] – jen ke čtení, dopočítává se automaticky |
Jak se hodnota počítá nyní: pole je v menu zablokované (disabled) a nezadává se ručně. Hodnota se dopočítává v C++ a neukládá jako součet „Instalovaný výkon" (lo_insPower) všech rozpadových míst (s fallbackem na skutečný činný výkon místa, tj. Σ dd_Power, pokud je lo_insPower = 0).
Změna od verze 2.13.beta18 (2026-06-11). Dříve šlo o ručně editovatelnou položku: uživatel zadával celkový instalovaný výkon do pole a hodnota se ukládala do configu pod klíčem
fs_sopTotalPwr. Regulace ji ale nikdy nečetla – pro výpočty vždy používalaGetInstalovanyVykon()(součetlo_insPower), takže ručně zadaná hodnota mohla být s realitou nekonzistentní. Od beta18 je pole jen ke čtení a ukládaný klíčfs_sopTotalPwrse navíc při načtení configu z configu maže (hodnota se vždy dopočítá), aby v něm nezůstávala zastaralá ručně zadaná data.
3.1 Povely distribučního dispečinku (DŘ)
Povel chodí z dispečinku po sběrnici/Modbusu, v menu se nezadává. Mapování úrovní na % se nastavuje u jednotlivých míst (viz 2.3).
- Povel
P0…P4→PowerLimitv % → pomalý požadovaný výkon =PowerLimit% × instalovaný výkon. - Mapování úrovně na % řeší každé místo přes
lo_rgP0…4(viz 2.3). PowerLimitje kopie procenta aktivního stupně; po každém uložení konfigurace se přepočítá z aktuální hodnoty, takže úpravafs_rgP*/lo_rgP*/dd_regPwrP*zabere okamžitě (od 2.15.beta9).
3.2 Omezení přetoku do sítě
Menu: Nastavení výrobny → Nastavení hodnot omezení činného výkonu výrobny a SoP.
| Pole | Klíč | Význam |
|---|---|---|
| Systémové řízení přetoků | fs_flwRestsw |
zapnutí regulace přetoku (true/false) |
| Povolený přetok | fs_flwRest |
maximální dovolený přetok do DS [W] |
| Celkový rezervovaný výkon (SoP) | fs_sopRsrvPwr |
smluvní maximum přetoku – nejvyšší priorita, aplikuje se vždy (i při vypnutém fs_flwRestsw) |
| Měření | fs_mRs |
fs_measPhase = regulace po fázích (najde fázi s největším přetokem), jinak podle sumy P |
Přetok = záporná spotřeba na hlavním elektroměru (TML). Regulátor drží přetok na/pod povolenou hodnotou → rychlá větev.
BESS a nulový přetok. Ve výrobně s fs_flwRest = 0 rychlá větev omezí střídače dřív, než se přebytek stihne uložit do baterie – režim „Nabíjecí limit přetoků“ (bess.md 2.1) totiž čeká na přetok, který nikdy nenastane. Pro tyto výrobny slouží režim „Přednostní nabíjení BESS z omezené výroby (saldo)“ (fs_saldoBESS, od 2.15.beta9): když rychlá větev drží povel skupin FVE pod 98 %, baterie po rampě (fs_saldoBESSRamp, výchozí 120 s na 0→100 %) zvyšuje nabíjení, tím roste vlastní spotřeba a regulátor přetoku sám povolí střídačům víc. Strop FVE se nezvedá, přetok do sítě nevzniká. Podrobně bess.md 2.2.
3.3 Spotové ceny
Menu: Nastavení výrobny → Nastavení placených funkcí (SPOT ceny).
| Pole | Klíč | Význam |
|---|---|---|
| Tarifní limit | fs_TarifPacLimit |
zapnutí řízení podle spotových cen |
| Cena nákupu (distribuce) | fs_TarifPacLimitRate |
[Kč/MWh] |
| Cena prodeje (obchodník) | fs_TarifRedemptionPacLimitRate |
[Kč/MWh] |
| Regulovat na | fs_TarifPacLimitValue |
cílový přetok při nevýhodné ceně |
Při nevýhodné výkupní ceně se přetok omezí (nebo se při záporných cenách výkon stáhne na 0 – „vyplatí se i mařit"). Bere se vždy přísnější z nastaveného přetoku a přetoku podle cen.
3.4 Rampy – gradient změny činného výkonu
Menu: Zařízení → nastavit (u zdroje / BESS), nebo rámeček Hromadné nastavení ramp pod seznamem zařízení.
Rampa omezuje, jak rychle se smí měnit povel činného výkonu poslaný do zařízení (předpis PPDS na gradient změny výkonu). Zadává se jako x % za y min jmenovitého výkonu zařízení (dd_Power) a zapíná se fajfkou; bez fajfky je změna bez omezení.
| Položka | Klíče | Platí pro |
|---|---|---|
| Gradient zvyšování / snižování činného výkonu zdrojů | dd_rampUp{Pct,Min,En}, dd_rampDn{Pct,Min,En} |
zdroje (měniče FVE, KGJ…) |
| Ignorovat rampy jen pro povely Px z DSŘ | dd_rampIgnDsr |
zdroje |
| Gradient zvyšování / snižování – BESS vybíjení | dd_rampDchUp{…}, dd_rampDchDn{…} |
BESS |
| Ignorovat rampy jen pro povely Dchx z DSŘ | dd_rampDchIgnDsr |
BESS |
| Gradient zvyšování / snižování – BESS nabíjení | dd_rampChUp{…}, dd_rampChDn{…} |
BESS |
| Ignorovat rampy jen pro povely Chx z DSŘ | dd_rampChIgnDsr |
BESS |
Jak to funguje:
- Rampa sedí až za regulátorem – PI regulátor počítá cíl stejně jako dosud, driver dostane hodnotu, která se k cíli blíží nastavenou rychlostí. V detailu zařízení je stav vidět v řádku Rampa zdroje / Rampa BESS (
cil … %, povel … %). - Aby se regulátor při pomalé rampě „nevytočil“ a po jejím dojetí nepřestřelil, sleduje PI rampu (tracking anti-windup): smí ji předběhnout nejvýš o 2 % instalovaného výkonu. V debug výpisu Regulace2 je to řádek tracking okno PI …. Bez aktivních ramp se nic nemění.
- Po startu NPA (nebo po obnovení povelu) rampa startuje z aktuálně měřeného výkonu, takže povel neskočí.
- U BESS je + vybíjení a − nabíjení. Přechod přes nulu se dělí: nejdřív snižování jednoho režimu k nule, potom zvyšování druhého – každé svou rychlostí.
- Ignorovat rampy jen pro povely z DSŘ: když přijde z dispečinku povel k omezení (pokles stupně Px, resp. Dchx / Chx), provede se snížení bez rampy, tj. stávající maximální rychlostí PI regulátoru. Ostatní změny (přetok, spotové ceny, návrat nahoru) rampě podléhají dál. Výchozí stav: bez fajfky – rampy platí i pro povely z DSŘ.
- Hromadné nastavení ramp zapíše stejné hodnoty do všech zdrojů (položky zdrojů) a všech BESS (položky BESS). Nad formulářem je informace, zda mají všechna zařízení stejné nastavení, nebo upozornění různé nastavení na zařízeních (s výčtem, která se liší).
Pomalá rampa prodlužuje reakci na přetok: po dobu sjíždění výkonu trvá vyšší dodávka do sítě. Pro místa s tvrdým limitem přetoku zvažte rampu snižování vypnout nebo nastavit rychlejší než rampu zvyšování.
Jalový výkon / cos φ a BESS mají vlastní regulátory (reg3, reg4) a jsou popsány v samostatných dokumentech (BESS viz
bess.md). V této příručce je neřešíme.
3.5 Aktuální povel ve stavu (akt_proc) – co se ukládá a odesílá
Sloupec Aktuálně [%] v Přehledu (Rozpadová místa, Měniče, BESS) se ukládá do živého stavu (NState::mM) každého rozpadového místa a každého ovladatelného zařízení, takže je i v datech odesílaných do cloudu (m[<uuid>], viz interfaces.md §7) a v diagnostice (Info → Kopírovat diagnostiku). Regulace počítá povel po fázích, proto se ukládá vektor i přepočtený skalár:
| Klíč | Kde | Význam |
|---|---|---|
pozadovane_proc, pozadovane_proc_1..3 |
místo | výstup regulace pro místo (skalár + fáze L1..L3) před povely DŘ / Modbus (PowerLimit, stupeň Px) |
akt_proc, akt_proc_1..3 |
místo | výsledný povel místa = hodnota v Přehledu (včetně PowerLimit / stupně Px); fáze = tvar z regulace přeškálovaný na skalár |
akt_proc, akt_proc_1..3 |
zdroj (pwr) |
povel skutečně posílaný do měniče po rampě; měnič s jedním setpointem dostane akt_proc, fáze nesou tvar, který chce regulace |
akt_proc_bess, akt_proc_bess_1..3 |
BESS (bess) |
povel BESS po rampě, + vybíjení / − nabíjení; fáze přímo z regulace BESS (např. režim saldo); hybridní měnič (FVE + baterie) má oba klíče |
<klíč>_timed |
místo i zařízení | {max_v, max_t, min_v, min_t} – extrémy s časem (UTC) od posledního odeslání do cloudu, stejně jako u P, I, … |
Konvence: fáze jsou v % jmenovitého výkonu fáze (třetina dd_Power, resp. výkonu místa), vyvážený povel 60 % = 60 / 60 / 60; skalár je průměr fází. Bez povelu (vypnuté ovládání dd_ctrlEnable, chybějící regulace) se klíče odstraní; u zařízení zmizí i při výpadku komunikace (stav se maže). KGJ Tedom se řídí stupněm, ne procenty, klíče nemá. Detail zařízení ukazuje cíl regulace a posílaný povel v řádku Pozadovany vykon (cil regulace).
4. Nastavení regulátorů
Menu: Nastavení výrobny → dole Nastavení placených funkcí → tabulka Nastavení regulátoru. Konstanty mají u sebe nápovědu (najetím myší na pole). Editace jen pro účet s vyšším oprávněním.
Činný výkon řídí dva PI regulátory (další dva – reg3 pro cos φ a reg4 pro BESS – mají samostatné dokumenty):
| # | Název v UI | Klíče | Co reguluje |
|---|---|---|---|
| 1 | Regulátor pro povely Px z DŘ | fs_reg1_k, fs_reg1_i+, fs_reg1_i- |
pomalá regulace podle povelů distribuce |
| 2 | Regulátor pro přetoky do DS | fs_reg2_k, fs_reg2_i+, fs_reg2_i- |
rychlá regulace přetoku |
4.1 Význam konstant
Každý regulátor má tři konstanty:
k– proporcionální konstanta (P). Působí okamžitě úměrně regulační odchylce.k = 0→ P složka vyřazena; odchylku koriguje jen integrační složka (nad rámec stále přítomné dopředné vazby na žádanou hodnotu, viz 4.2). Výchozí stav.- Malé
k(řádově 0,001–0,01) už má silný vliv (odchylka je ve wattech, tj. velká čísla). - Příliš velké
k→ překmity až nestabilita.
i+– integrační konstanta pro stoupání (odchylka > 0, tj. měření je pod žádanou hodnotou → výkon roste).i-– integrační konstanta pro klesání (odchylka < 0, tj. měření je nad žádanou hodnotou → výkon klesá).- Integrační konstanta je časová konstanta: čím menší číslo, tím rychlejší přibližování (jednotky = velmi rychlé, ale hrozí překmit; desítky = pomalé a stabilní).
i = 0→ integrační složka vyřazena a integrátor vynulován.
Asymetrie
i+≠i-umožňuje např. rychle stáhnout přetok a pomalu najíždět zpět. Výchozí regulátor přetoků mái-= 5 (rychlý pokles) ai+= 20 (pomalý nárůst).
4.2 Vzorec regulátoru
Regulátory běží v každém kroku (0,5 s). Regulace činného výkonu (reg1, reg2) má tvar s dopřednou vazbou (výstup startuje na žádané hodnotě a PI ji jen koriguje):
odchylka = žádaná - měřená
integrátor += odchylka / i+ (když odchylka > 0)
integrátor += odchylka / i- (když odchylka < 0)
výstup = žádaná + (žádaná / y_max) * ( k * odchylka + integrátor )
y_max = maximální výkon na fázi (instalovaný výkon / 3).
Důležité vlastnosti:
- Integrátor odstraní trvalou odchylku – akumuluje se, dokud měření ≠ žádaná hodnota. Proto i při
k = 0regulátor dojede přesně na cílovou hodnotu (přesné doregulování). - Při
i+=i-= 0 je integrace vyřazena, takževýstup = žádaná– na výstup jde přímo procento z povelu a odchylka se vůbec nedoreguluje (okamžitý povel, viz 5.1 B). - Při
žádaná = 0(vypnutá regulace) a při nulovém měření se integrátor resetuje (jinak by „nafoukl" a po zapnutí způsobil překmit). - Anti-windup: při saturaci výstupu (na
y_min/y_max) se integrátor po fázích zmrazí.
5. Příklady s grafy
Grafy jsou ilustrační (perioda kroku 0,5 s). Žádaná hodnota = 60 %, místo se rozbíhá z 0.
5.1 Přesné doregulování vs. okamžitý povel
Podle nastavení integračních konstant se regulátor chová dvěma zcela odlišnými způsoby. Rozdíl je v tom, zda se vůbec řeší odchylka mezi žádanou a skutečně naměřenou hodnotou.
A) Přesné doregulování (zpětnovazební)
Regulátor sleduje odchylku a integrační složkou ji postupně vynuluje – skutečně naměřený výkon přesně dojede na žádané procento (dorovná i ztráty, derating, nepřesnost měničů). Je o něco pomalejší, protože musí doregulovat.
fs_reg1_k = 0 (P vyřazeno)
fs_reg1_i+ = 20 (doregulování nahoru)
fs_reg1_i- = 20 (doregulování dolů)
výkon [%]
100|
80|
60|..............____________________ <- žádaná 60 % (měřená DOJEDE přesně)
40| _.-'
20| _.-'
0|__.-'_____________________________ čas ->
0 2 4 6 8 10 12 14 16 [s]
integrátor dorovná odchylku, měřená se ustálí PŘESNĚ na 60 %
B) Okamžitý povel (rychlý, bez doregulování odchylky)
Vyřaď i integrační složku (vše na 0). Pak k·odchylka + integrátor = 0 a podle vzorce platí výstup = žádaná. Na výstup se v prvním kroku ihned přepíše procento z povelu a drží – odchylka se vůbec neřeší (žádná zpětná vazba). Nejrychlejší možná reakce, ale skutečně naměřená hodnota se nedoreguluje (zůstane, jaká vyjde).
fs_reg1_k = 0 (P vyřazeno)
fs_reg1_i+ = 0 (integrace vyřazena)
fs_reg1_i- = 0 (integrace vyřazena)
výkon [%]
60|__________________________________ <- výstup = povel 60 % (ihned, drží)
55| ........________________________ <- skutečná ~55 %, NEdoreguluje se
30| .
0|_.________________________________ čas ->
0 0,5 2 4 6 8 10 12 [s]
v 1. kroku (0,5 s) se na výstup zapíše 60 % z povelu a drží;
případná odchylka (zde 5 %) se nekoriguje
Shrnutí:
i+/i-> 0 → přesné doregulování (měřená dojede na cíl, pomalejší);i+=i-= 0 → okamžitý povel (na výstup se ihned zapíše % z povelu, odchylka se neřeší). Proporcionálníknech v obou případech na 0.
5.2 Měniče s velkým dopravním zpožděním
Problém: měnič na změnu žádané hodnoty zareaguje až za několik sekund (dopravní zpoždění / mrtvá doba). Agresivní regulátor „nevidí" efekt svého zásahu, přidá ještě víc – a přestřelí.
Řešení: regulátor zpomalit – integrační konstanta musí být výrazně větší než dopravní zpoždění. P složku držet na nule:
fs_reg2_k = 0 (žádné okamžité skoky)
fs_reg2_i+ = 40 (pomalé, opatrné najíždění)
fs_reg2_i- = 30
ŠPATNĚ - rychlý regulátor (i+ = 3) na měniči se zpožděním 3 s:
výkon [%]
90| /\ /\
75| / \ / \ /\
60|..../....\..../....\..../..\..... <- žádaná 60 % (překmity)
45| / \ / \ / \
30| / \/ \/ \
0|_/_______________________________ čas ->
SPRÁVNĚ - pomalý regulátor (i+ = 40) na stejném měniči:
výkon [%]
60|............____________________ <- žádaná 60 % (hladké)
45| _.-'
30| _.-'
15| _.'
0|_.'____________________________ čas ->
0 2 4 6 8 10 12 14 [s]
Pravidlo: čím větší dopravní zpoždění měniče, tím větší
i+/i-(pomalejší regulátor). Orientačně volte integrační konstantu několikanásobek mrtvé doby.
5.3 Co se stane při kmitání (špatné parametry)
Když je k příliš velké nebo i příliš malé vzhledem k dynamice soustavy (a zpoždění), regulátor se dostane do trvalého kmitání až nestability:
fs_reg2_k = 0,05 <- příliš velké
fs_reg2_i+ = 2 <- příliš rychlé
výkon [%]
100| /\ /\ /\ /\
80| / \ / \ / \ / \
60|../....\..../....\..../....\..../....\. <- žádaná 60 %
40| / \ / \ / \ / \
20|/ \/ \/ \/ \
0|_______________________________________ čas ->
0 2 4 6 8 10 12 14 16 [s]
amplituda neklesá -> systém NEDOJEDE, kmitá kolem žádané
Projevy kmitání: výkon i přetok „pendlují", měniče přepínají nahoru/dolů, na elektroměru oscilace. Náprava:
- Sniž
k(ideálně na0). - Zvětši
i+/i-(zpomalení integrace). - Pokud kmitání přetrvává, zkontroluj dopravní zpoždění měničů (viz 5.2).
Postupné tlumení po opravě (k=0, i+ zvětšeno z 2 na 25):
výkon [%]
75| /\
60|../..\._.....____________________ <- žádaná 60 % (kmit se utlumí)
45| / V
30|/
0|_________________________________ čas ->
5.4 Asymetrie i+ / i- – rychlé stažení přetoku, pomalý náběh
Pro regulaci přetoku se hodí rychle stáhnout výkon (bezpečnost – nepřekročit limit) a pomalu najíždět zpět (klid sítě):
fs_reg2_k = 0
fs_reg2_i+ = 20 (pomalý nárůst)
fs_reg2_i- = 5 (rychlý pokles)
výkon [%]
80|_____ <- výroba běží
60| \ <- PŘETOK! rychlé stažení (i- = 5)
40| \___
20| '------____ <- pomalé najíždění (i+ = 20)
0| '-------____ čas ->
0 2 4 6 8 10 12 [s]
6. Postup ladění (cookbook)
- Začni od továrního nastavení –
k = 0, integrace v desítkách (reg1i± = 20, reg2i+ = 20,i- = 5). Tento stav je stabilní a dojede přesně. - Příliš pomalá reakce? Postupně zmenšuj
i+/i-(např. 20 → 10). Po každé změně sleduj překmit. - Objeví se překmit/kmitání? Vrať
izpět na vyšší hodnotu a/nebo nechk = 0.kzvyšuj jen výjimečně a po malých krocích (0,001 → 0,005 → 0,01). - Měniče reagují se zpožděním? Drž
k = 0ainastav na několikanásobek mrtvé doby (viz 5.2). - Přetoky musí být přísné? Nastav
i-(pokles) výrazně menší neži+(nárůst) – viz 5.4. - Zařízení neumí plynulé řízení? Přepni místo na
lo_regDev = Pxa vyplňlo_rgP0…4.
| Situace | k |
i+ |
i- |
|---|---|---|---|
| Přesné doregulování (měřená dojede na cíl) | 0 | 20 | 20 |
| Okamžitý povel (ihned zapíše %, neřeší odchylku) | 0 | 0 | 0 |
| Rychlejší doregulování (svižné měniče) | 0 | 8–12 | 8–12 |
| Velké dopravní zpoždění měničů | 0 | 30–60 | 30–60 |
| Přísné přetoky (rychle dolů, pomalu nahoru) | 0 | 20 | 5 |
| ⚠️ Nestabilní (NEPOUŽÍVAT) | ≥ 0,05 | ≤ 2 | ≤ 2 |
Zlaté pravidlo: pro přesnost a stabilitu nech
k = 0a laď jen integračními konstantamii+/i-. Proporcionální složku přidávej jen, když potřebuješ rychlejší okamžitou reakci a víš, že soustava nemá velké zpoždění.
Zdrojové soubory
| Část | Soubor / symbol |
|---|---|
| Hlavní smyčka regulace | nregulation2.cpp → NRegulation2::Loop() |
| PI regulátor (činný výkon) | npicontroller.cpp → updateParam() |
| Rozpad do míst, priorita, Px | nregulation2.cpp → GetLocationPrioritySort(), GroupSetPower() |
| Povely distribuce / přetoky / SoP / spotové ceny | nregulation2.cpp → RegulacePodleDistribuce(), RegulacePodlePretoku(), RegulacePodleSpotCen() |
Regulace BESS (režimy 1–5, saldo = 5, míra omezení FVE mPvCurtailProc) |
nregulation2.cpp → BessRegulation(), GroupSetPower(); konstanty NR_SALDO_* v nregulation2.h |
| Výchozí konstanty regulátorů | nregulation2.h → NR_CONST[] |
| UI – nastavení místa | html/v2/location_edit.html |
| UI – nastavení regulátorů | html/v2/factory_settings_edit_paid_features.html |