1 Základní informace
Předpovědní služba PV Forecast poskytuje předpověď osvitu na následujících 24 až 48 hodin pro libovolný bod v České republice s hodinovým nebo denním krokem. Data jsou poskytována jako průměrný osvit W/m2 v danou hodinu nebo jako celková denní suma ve Wh/m2. Hodnoty osvitu jsou vztaženy k vodorovné rovině. Pro předávání informací registrovaným uživatelům se používá rozhraní přístupné přes http protokol (web).
2 Princip získání dat
Pro získání dat je zapotřebí sestavit dotaz s klientským klíčem a polohou, která byla zadána při registraci. V dotazu je také možné zvolit požadovaný formát a délku dat. Předpovídaný osvit se aktualizuje dvakrát denně před 12. a 24. hodinou. Je třeba vzít v úvahu, že s každým dalším výpočtem se předpověď zpřesňuje. I přesto, že po 12. i po 24. hodině jsou poskytována data na stejné období, po 24. hodině je předpověď přesnější. Z toho důvodu je dobré provádět dotazování dvakrát denně.
Jako doplňková informace je poskytována předpověď teploty a srážkového úhrnu. Teplota je poskytována ve °C s hodinovým krokem nebo jako denní minimum a maximum. Srážkový úhrn je uveden v milimetrech za hodinu případně v milimetrech za celý den.
Pro předávání informací registrovaným uživatelům se používá rozhraní přístupné přes http protokol.
3 Nastavení komunikačního kanálu
Pro komunikaci se využívá ethernetového rozhraní v PLC. Velikost přijímací i vysílací zóny je 512 bytů, protokol je nastaven na TCP Client a vzdálený port je 80.
4 Funkční blok PVF_Forecast
Funkční blok slouží k získání předpovědi solárního osvitu na horizontální plochu, teploty a srážkového úhrnu pro 48 hodin v hodinovém intervalu. Předpověď se aktualizuje před 12. a 24. hodinou, od 12. hodiny je k dispozici předpověď na další den, která je dále zpřesněna předpovědí vydanou před půlnocí.
4.1 VAR_INPUT
Proměnná |
Typ |
Popis |
enable |
BOOL |
Aktivace stažení dat |
chanCode |
UINT |
Kód komunikačního kanálu (např. konstanta ETH1_uni0) |
key |
STRING[20] |
Klíč obdržený při registraci |
lat |
REAL |
Zeměpisná šířka |
lon |
REAL |
Zeměpisná délka |
4.2 VAR_IN_OUT
Proměnná |
Typ |
Popis |
data |
T_PVF_Prediction |
Struktura obsahující předpověď pro 48 hodin |
4.3 VAR_OUTPUT
Proměnná |
Typ |
Popis |
done |
BOOL |
Indikace dokončení stahování předpovědi |
busy |
BOOL |
Indikace, že právě probíhá stahování předpovědi |
error |
USINT |
Kód chyby |
errorMsg |
STRING[255] |
Popis chyby |
5 Funkční blok PVF_GetPower
Funkční blok přepočítá hodnotu slunečního osvitu na horizontální rovině na energii generovanou fotovoltaickými panely, které mají definovaný náklon, azimut, špičkový výkon kilowatt-peak a účinnost.
5.1 VAR_INPUT
Proměnná |
Typ |
Popis |
Minimum | Maximum |
enable |
BOOL |
Aktivací proměnné se provede přepočet |
||
lat |
REAL |
Zeměpisná šířka |
48,5 | 51 |
lon |
REAL |
Zeměpisná délka |
12 | 19 |
inclination |
REAL |
Náklon, ° |
0 | 90 |
azimuth |
REAL |
Azimut, ° |
-90 | 90 |
kiloWattPeak |
REAL |
kWp fotovoltaické elektrárny |
0,01 | 100 |
efficiency |
REAL |
Účinnost |
10 | 100 |
5.2 VAR_IN_OUT
Proměnná |
Typ |
Popis |
data |
T_PVF_Prediction |
Struktura obsahující předpověď pro 48 hodin |
5.3 VAR_OUTPUT
Proměnná |
Typ |
Popis |
done |
BOOL |
Indikace dokončení stahování předpovědi |
busy |
BOOL |
Indikace, že právě probíhá stahování předpovědi |
error |
USINT |
Kód chyby |
errorMsg |
STRING[255] |
Popis chyby |
6 Příklad použití
6.1 Program
V příkladu se využívají funkční bloky pro stažení předpovědi PVF_Forecast a přepočet na vyrobenou energii PVF_GetPower. V příkladu je také použit funkční blok pro vykreslování tří časových průběhů do jednoho grafu. Ten není součástí knihovny, ale v projektu je možno i upravit zdrojový kód tohoto funkčního bloku.
VAR_GLOBAL RETAIN
key : string[20];
irrad : real;
lat : real;
lon : real;
inclination : real;
azimuth : real;
kWp : real;
efficiency : real;
END_VAR
VAR_GLOBAL
graph_data : ARRAY [0..2, 0..PVF_PRED_MAX_SIZE] OF REAL;
END_VAR
PROGRAM prgMain
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
busy : BOOL;
downloadEnable : BOOL;
Forecast : PVF_Forecast;
PowerFromIrradiation : PVF_GetPower;
forecast_data : T_PVF_Prediction;
errorForecast : string[255];
errorPower : string[255];
// Graphs
Graph : fbGraph3;
Graph_Names : T3xSTRING8 := ['irr.','power','temp.'];
Graph_Enabled : T8BitArray := [true, true, true];
Graph_CanvasData : TCanvasData2048;
END_VAR
VAR_TEMP
i : UINT;
END_VAR
forecast(
enable := downloadEnable AND NOT busy,
chanCode := ETH1_uni0,
key := key,
lat := lat,
lon := lon,
data := forecast_data,
errorMsg => errorForecast);
PowerFromIrradiation(
enable := forecast.done,
lat := lat,
lon := lon,
inclination := inclination,
azimuth := azimuth,
kiloWattPeak := kWp,
efficiency := efficiency,
data := forecast_data,
errorMsg => errorPower);
IF PowerFromIrradiation.done THEN
FOR i := 0 TO (PVF_PRED_MAX_SIZE - 1) DO
graph_data[0,i] := forecast_data.irradiance[i].value;
graph_data[1,i] := forecast_data.power[i].value;
graph_data[2,i] := forecast_data.temperature[i].value;
END_FOR;
END_IF;
busy := forecast.busy or PowerFromIrradiation.busy;
IF not busy THEN
downloadEnable := false;
END_IF;
Graph(
autoSize := 1,
ratio := 1.8,
minX := 0,
maxX := 47,
numPoints := UINT_TO_UDINT(PVF_PRED_MAX_SIZE),
valid := UINT_TO_UDINT(PVF_PRED_MAX_SIZE),
data := graph_data[0,0],
enabled := Graph_Enabled,
c := void(Graph_CanvasData),
names := Graph_Names);
END_PROGRAM
6.2 Grafy
Grafy ukazují tři různé průběhy, kdy je možno mezi nimi přepínat anebo zobrazovat všechny najednou, ale využívá se jedna osa Y, což způsobí, že se především průběhy teploty a generované energie v grafu vizuálně téměř ztratí. Při kliknutí na některé místo v grafu se vypíší hodnoty průběhů v konkrétním bodě.
Připojené dokumenty
- PVForecast - Softwarový projekt s ukázkou použití
- Knihovna PV Forecast