Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Poslední návštěva: pon led 25, 2021 2:26 am
Peroslav píše:Děkuji za odpověď,
toto vše vím. P=U*I je jasný,
umí SDS ve webovém rozhraní přímo ukázat výkon?
Díky
Peroslav píše:Díky Frenky,
tvůj výtvor by mě úplně stačil. Nemůžeš sem prosím dát presně tu stránku diskuze?
Nemohu to na foru SDS najít.
Děkuji Pepa
Peroslav píše:Už asi rozumím,
a nemohl bys sem dát zdrojový kod toho tvého print screenu?
Takto by mi to úplně stačilo.
/*
Program pro ovladani a dohled male FVE
Verze pro SDS MACRO s komunikaci RS232 pro releovou desku QUIDO od Papouch + ovladani a dohled FV systemu
Datum otestovani programu: 29.5.2016 16:00 hod
*********** obsahuje **************
1) Program pro odesilani informaci na portal eportal.merenienergie.cz (autor viz portal)
2) Uprava pro merení napeti a proudu na AD1-AD4, proudy pomoci cidel Amploc (autor Ing. Lastovicka Jaromir)
3) Uprava pro ctení promennych pro html pres ram (autor Ing. Lastovicka Jaromir)
4) Ovladani releove desky QUIDO od papouch přes RS232 a WEB stranku (autor diskuzni forum mereni energie)
5) Oprava ovladani releove desky QUIDO. (verze z fora posilala instrukce pro neexistujici rele "0")
6) Uvolneni RAM(0-100) prechod na "TEXT" (TEXT[400-420])
7) Posilani hodnot ram na uzivatelsky WEB
8) Posilani hlaseni o vykonech na elektromerech do konzole
9) Statistiky (Ing. Nešvara)
10) Vypis hodnot na LCD displej s prepinanim obrazovek pomoci volnych opto vstupu opto1-opto4.
11) Ovladani ventilatoru rozvadece dle teplotnich cidel jednotlivych komponentu (XTS, VT-80, cidlo rozvadec)
12) Ovladani spotreby (zapinani XTS) pres rele Re3 dle napeti AKU LiFePo
13) Posilani dat na server raspberry
//------------------------------------------ obsazení RAM ------------------------------------------------------------
RAM[60-63] prenos statistik
RAM[101-104] prenos statistik
RAM[180-194] prenos statistik
RAM[111-130] rs232 - (16 pozic)
RAM[131] prenos informace o vybijeni/nabijeni baterie na uzivatelsky WEB
RAM[135-138] prenos AD1-AD4 na uzivatelsky WEB
RAM[139-145] prenos vypocitanych udaju na uzivatelsky WEB
RAM[148-149] vypocty proudu (AD3 a AD4)
RAM[150-155] lcdtime a echotime pouziva
RAM[156-161] lcddate a echodate pouziva
RAM[162-165] stanoveni hodnot systemu RAM[162-165] misto povodnich SYS[140-147]
RAM[190-195] vypocty elektromeru do konzole
RAM[201-219] vypocty teploty s teplomeru na displej
RAM[220-225] vypocty elektromeru na displej
pokud se bude pouzivat dalsi http_get, e-mail, atd., pozor na timeouty pro dobehnuti GETu
pozor na pouzivani sys[64] odpocitavani casu - muze dojit k omezeni funkce portalu
*/
//----------------------------- promenne define -----------------------------------------------
#define ODPOCITAVAC_SEKUND sys[64]
#define POCET_MERENI 10 // mereni napeti Baterie na AD1-AD4
#define CYKLUS_TEPLOTA 1 // mereni teploty
#define REL_DEL 5 //1-155 a 0.5 s // stanoveni casoveho spozdeni rele (QUIDO)
#define SEC2MIN 166
#define SEC2HR 2777
#define MAXPAGE 5 // pocet stranek hlavniho menu
#define MAXPAGERELE 22 // pocet stranek rele (pocet rele 16 + 5)
#define STOZAP 267 // Hladina napeti Ubat LiFePo kdy sepne Re3 (Vystup ze stridace STUDER) (267 = 26,7V)
#define STOVYP 250 // Hladina napeti Ubat LiFePo kdy vypne Re3 (Vystup ze stridace STUDER) (264 = 25,0V)
//----------------------------- promenne k odesilani udaju na portal ----------------------------
var _portal_vstup; //index S0 vstupu
var _portal_konst; //prepoctova konst S0 vstupu
var _portal_ram; //index ram pole
var _portal_pom; //pomocna
var _portal_dns; //je dostupny preklad dns
var _portal_data; //typ odesilanych dat
var _portal_timeout; //timeout pro odesilani dat
var _portal_timeoutget; //timeout pro chybu serveru
var _portal_timeoutdns; //timeout pro dns_resolve
var _disp; //display sds macro ano/ne
var _PHP_timeout, _PHP_timeout1, _teploty_timeout;
//----------------------------- promenne FVE -----------------------------------------------
var PV_volt_a, PV_volt_b, PV_curr_a, PV_curr_b;
var b1_volt_a, b1_volt_b, b2_volt_a, b2_volt_b, b3_amp_v, b4_amp_v;
var b3_amp_a, b3_amp_b, b4_amp_a, b4_amp_b;
var PV_volt, PV_curr, b1_volt, b2_volt, batt_chrg, b3_amp, b4_amp;
var batwat, panelbat;
var last_volt;
var nabijim, vybijim, stav;
var znak,_text;
var c, i, ct;
var _pruchod, _val, _rs232in, _ram, _ram2, _sys, _txt, _pom, _rs232s, _relspo, H, _rele, _va;
var relst1, relst2, relst3, relst4, D0;
var _consoletime, _consoletime2, _consoletime3, _consoletime4, _termostattime, _raspberrytime;
var sec2Hr; //Prevod wat-sekunda na kWh
var _beh_min; //probihajici minuta
var _beh_min24; //probihajici minuta 1x za 24hod
var VDC, DCB, DCP, SDC, SDCm, NBAT, SBAT;
var VDCmin, SDCmin, NBATmin, sec2min, VDCm1, SDCm1, NBATm1;
var VDC24h, SDC24h, NBAT24h, VDC24, SDC24, VDCd, SDCd;
var page, maxpage, pageindex, pagerele, maxpagerele, _r, _q, SoC, _a, automat;
var teplotaStuder, teplotaTristar, teplotaRozvadec, email1, email2, email3, email4;
//-------------------- procedury ziskani analogovych hodnot AD1-AD4 ----------------------------------------
//------------------------------------------ AD1 ------------------------------------------------------------
nacti_hodnoty
{
// snimani z cidel 0-30V , sejmuta hodnota je 0-1023
//pri deleni je nutne desetinna mista doplnovat po jednom (delit 10)!
b1_volt = 0;
c = POCET_MERENI; //mereni napeti baterie LiFePo 24V na AD1
label cyklus1:
b1_volt += sys[431]; //secteni x vzorku (pocet mereni)
wait(1);
c--;
if(c > 0) goto cyklus1;
b1_volt = b1_volt / POCET_MERENI; //prumerovani
b1_volt_a = sys[431] * 100 / sys[436]; //vypocet pred desetinnou teckou
b1_volt_b = (((sys[431] * 100) % sys[436]) * 100) / sys[436]; //vypocet za desetinnou teckou
ram[135] = sys[431] * 100000 / sys[436]; //vypocet napeti pro WEB
//------------------------------------------ AD2 ------------------------------------------------------------
b2_volt = 0;
c = POCET_MERENI; //mereni napeti baterie Pb 12V na AD2
label cyklus2:
b2_volt += sys[432]; //secteni x vzorku (pocet mereni)
wait(1);
c--;
if(c > 0) goto cyklus2;
b2_volt = b2_volt/POCET_MERENI; //prumerovani
b2_volt_a = (sys[432] * 100) / sys[440]; //vypocet pred desetinnou teckou
b2_volt_b = ((sys[432] * 100) % sys[440])*100) / sys[440]; //vypocet za desetinnou teckou
ram[136] = sys[432] * 100000 / sys[440]; //vypocet napeti pro WEB
//------------------------------------------ AD3 ------------------------------------------------------------
b3_amp = 0;
c = POCET_MERENI; //mereni proudu FV panelu na AD3
label cyklus3:
b3_amp += sys[433]; //secteni x vzorku (pocet mereni)
wait(1);
c--;
if(c > 0) goto cyklus3;
b3_amp = b3_amp / POCET_MERENI; //prumerovani
b3_amp_v = sys[433] * 100000 / sys[444] - 2500; //vypocet napeti cidla (odecteni půlky (5V))
ram[137] = sys[433] * 100000 / sys[444]; //vypocet napeti cidla pro WEB
ram[142] = (b3_amp_v * 1000) / 37; //vypocet proudu cidla (37 mV = Amploc 25A)
ram[148] = (b3_amp_v * 100) / 37;
b3_amp_a = ram[148] / 100; //vypocet pred desetinnou teckou
b3_amp_b = ram[148] % 100; //vypocet za desetinnou teckou
if (b3_amp_b >= 0) goto minuss; // osetreni zaporneho cisla desetinne tecky
b3_amp_b = 0 - b3_amp_b; // rucni doplneni cisla 0 pokud hodnota je 0-9
label minuss:
//------------------------------------------ AD4 ------------------------------------------------------------
b4_amp = 0;
c = POCET_MERENI; //mereni proudu baterie LiFePo 24V na AD4
label cyklus4:
b4_amp += sys[434]; //secteni x vzorku (pocet mereni)
wait(1);
c--;
if(c > 0) goto cyklus4;
b4_amp = b4_amp / POCET_MERENI; //prumerovani
b4_amp_v = (sys[434] * 100000) / sys[448] - 2500; //vypocet napeti cidla
ram[138] = sys[434] * 100000 / sys[448]; //vypocet napeti cidla pro WEB
ram[143] = (b4_amp_v * 10000) / 95; //vypocet proudu cidla (9,5 mV = Amploc 100A)
ram[149] = (b4_amp_v * 1000) / 95;
b4_amp_a = ram[149] / 100; //vypocet pred desetinnou teckou
b4_amp_b = ram[149] % 100; //vypocet za desetinnou teckou
if (b4_amp_b >= 0) goto minus; // osetreni zaporneho cisla desetinne tecky
b4_amp_b = 0 - b4_amp_b; // rucni doplneni cisla 0 pokud hodnota je 0-9
label minus:
//------------------------------------------ vypocty ------------------------------------------------------------
batwat = ((ram[135]) * (ram[143] / 100)) / 10000; //vypocet vykonu baterie pro displej
panelbat = ((ram[135]) * (ram[142] / 100)) / 10000;
ram[139] = (ram[135] / 1000) * (ram[143] /10 ; //vypocet vykonu baterie pro WEB
ram[140] = (ram[135] / 1000) * (ram[142] /10 ; //vypocet vykonu panelu pro WEB
// vypocet teploty procesoru (matematicka kouzla dle dokumentace na Wiky)
ram[213] = 879 * sys[46]; //1426910
ram[214] = 590000 - ram[213]; //16192700
ram[215] = 5 * ram[214]; //80963500
ram[216] = ram[215] / 2; //40481750
ram[217] = ram[216] / 10000;
ram[218] = ram[215] / 200;
ram[219] = ram[218] % 100;
ram[146] = ram[216] / 100;
}
//------------------------------------------ globalni procedury --------------------------------------------------
echorele
{
echo('stav rele QUIDO: ',ram[111],',',ram[112],',',ram[113],',',ram[114],',',ram[115],',',ram[116],',',ram[117],',',ram[118],','
,ram[119],',',ram[120],',',ram[121],',',ram[122],',',ram[123],',',ram[124],',',ram[125],',',ram[126]);
}
echotime // cas do konzole
{
ram[150] = sys[8] / 10;
ram[151] = sys[8] % 10;
ram[152] = sys[9] / 10;
ram[153] = sys[9] % 10;
ram[154] = sys[10] / 10;
ram[155] = sys[10] % 10;
echo (ram[150], ram[151]':', ram[152], ram[153]':', ram[154], ram[155]);
}
//------------------------------------------ procedury portalu ------------------------------------------------------------
portal_ad
{
_portal_vstup = 431;
_portal_konst = 436;
_portal_ram = 101;
label portal_ad_1:
//AD
_portal_pom = sys[_portal_vstup]*100000/sys[_portal_konst]; //3205 jako 3.205 V
ram[_portal_ram] = _portal_pom; //schovat akt.napeti
_portal_vstup++;
_portal_konst += 4;
_portal_ram++;
if (_portal_vstup < 435) goto portal_ad_1;
}
odesli_data_na_portal
{
if (_portal_timeoutget == 0) goto odesli_data_na_portal_get; //odeslat data
//pred odeslanim dat zkontrolovat zda nebezi predchozi pozadavek
if (sys[65] == 0 && _portal_timeoutget >= sys[3]) goto odesli_data_na_portal_end; //jeste bezi, ale mam cas delam neco jineho
if (_portal_timeoutget < sys[3]) goto odesli_data_na_portal_chyba; //uz neni cas - chyba
if ((sys[65] != 1024) || (sys[75] != 200)) {
goto odesli_data_na_portal_chyba;
} else {
if (_portal_data == 1) {
echotime();
echo('S0 odeslano na server, OK.');
}
if (_portal_data == 2) {
echo('Temp A odeslano na server, OK.');
}
if (_portal_data == 3) {
echo('AD odeslano na server, OK.');
// echo('FVE panely: ',b3_amp_a,'.',b3_amp_b,' A');
// echo('Baterie: ',b4_amp_a,'.',b4_amp_b,' A');
echo('MPPT: Napeti ',b1_volt_a,'.',b1_volt_b,' V',' Proud ',b3_amp_a,'.',b3_amp_b,' A',' Vykon ',panelbat,' W',' Energia za 1 den ',VDCd,' Wh');
echo('Baterie: Napeti ',b1_volt_a,'.',b1_volt_b,' V',' Proud ',b4_amp_a,'.',b4_amp_b,' A',' Vykon ',batwat,' W',' Energia za 1 den ',SDCd,' Wh');
}
_portal_data++;
_portal_timeoutget = 0;
if (_portal_data > 3) {
_portal_timeout=sys[3] + 90000; //90000 = 15 min interval mereni
_portal_data = 0; //vynulovat
goto odesli_data_na_portal_end;
}
}
label odesli_data_na_portal_get:
if (_portal_dns == 1) {
//mam dns
if (_portal_data == 1) {
http_get(sys[66], sys[67], sys[68], sys[69], 'eportal.merenienergie.cz', '/datas0.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal', '&t0v1=', sys[493], '&t0v2=', sys[494], '&t0v3=', sys[495], '&t0v4=', sys[496], '&t0v5=', sys[497], '&t0v6=', sys[498], '&t0v7=', sys[499], '&t0v8=', sys[500], '&t1v1=', sys[526], '&t1v2=', sys[527], '&t1v3=', sys[528], '&t1v4=', sys[529], '&t1v5=', sys[530], '&t1v6=', sys[531], '&t1v7=', sys[532], '&t1v8=', sys[533], '&av1=', sys[592], '&av2=', sys[593], '&av3=', sys[594], '&av4=', sys[595], '&av5=', sys[596], '&av6=', sys[597], '&av7=', sys[598], '&av8=', sys[599], '&tt=', sys[459]);
}
if (_portal_data == 2) {
http_get(sys[66], sys[67], sys[68], sys[69], 'eportal.merenienergie.cz', '/datatemp.php?ver=1&line=a&devid=', 'tady nahraj tvuj kod od eportal', '&t1=', sys[310], '&t2=', sys[311], '&t3=', sys[312], '&t4=', sys[313], '&t5=', sys[314], '&t6=', sys[315], '&t7=', sys[316], '&t8=', sys[317], '&t9=', sys[318], '&t10=', sys[319], '&t11=', sys[320], '&t12=', sys[321], '&t13=', sys[322], '&t14=', sys[323], '&t15=', sys[324], '&t16=', sys[325]);
}
if (_portal_data == 3) {
portal_ad();
http_get(sys[66], sys[67], sys[68], sys[69], 'eportal.merenienergie.cz', '/dataad.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal', '&ad1=', ram[101], '&ad2=', ram[102], '&ad3=', ram[142], '&ad4=', ram[143]);
}
} else {
//nemam dns
if (_portal_data == 1) {
http_get(77, 93, 211, 207, 'eportal.merenienergie.cz', '/datas0.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal', '&t0v1=', sys[493], '&t0v2=', sys[494], '&t0v3=', sys[495], '&t0v4=', sys[496], '&t0v5=', sys[497], '&t0v6=', sys[498], '&t0v7=', sys[499], '&t0v8=', sys[500], '&t1v1=', sys[526], '&t1v2=', sys[527], '&t1v3=', sys[528], '&t1v4=', sys[529], '&t1v5=', sys[530], '&t1v6=', sys[531], '&t1v7=', sys[532], '&t1v8=', sys[533], '&av1=', sys[592], '&av2=', sys[593], '&av3=', sys[594], '&av4=', sys[595], '&av5=', sys[596], '&av6=', sys[597], '&av7=', sys[598], '&av8=', sys[599], '&tt=', sys[459]);
}
if (_portal_data == 2) {
http_get(77, 93, 211, 207, 'eportal.merenienergie.cz', '/datatemp.php?ver=1&line=a&devid=', 'tady nahraj tvuj kod od eportal', '&t1=', sys[310], '&t2=', sys[311], '&t3=', sys[312], '&t4=', sys[313], '&t5=', sys[314], '&t6=', sys[315], '&t7=', sys[316], '&t8=', sys[317], '&t9=', sys[318], '&t10=', sys[319], '&t11=', sys[320], '&t12=', sys[321], '&t13=', sys[322], '&t14=', sys[323], '&t15=', sys[324], '&t16=', sys[325]);
}
if (_portal_data == 3) {
portal_ad();
http_get(77, 93, 211, 207, 'eportal.merenienergie.cz', '/dataad.php?ver=1&devid=', 'tady nahraj tvuj kod od eportal, '&ad1=', ram[101], '&ad2=', ram[102], '&ad3=', ram[142], '&ad4=', ram[143]);
}
}
_portal_timeoutget=sys[3] + 1500; //15 s pro potvrzeni ze serveru
goto odesli_data_na_portal_end;
label odesli_data_na_portal_chyba:
echo('Chyba komunikace s www serverem, http: ', sys[75]);
_portal_timeout = sys[3] + 90000; //90000 = 5 min interval
_portal_data = 0; //vynulovat
_portal_timeoutget = 0; //vynulovat
_portal_timeoutdns = 0; //vynulovat
label odesli_data_na_portal_end:
}
portal_nastav
{
_portal_timeout = 0; //zrovna se odesilaji data
_portal_timeoutget = 0; //vynulovat timeout predchozich get pozadavku
_portal_timeoutdns = 0; //vynulovat timeout predchoziho dns resolveru
_portal_dns = 0; //nemam dns
_portal_data = 1;
}
portal_dns
{
if (_portal_timeoutdns == 0) {
echotime();
echo('dns_resolv()');
dns_resolv('eportal.merenienergie.cz');
_portal_timeoutdns = sys[3] + 1500; //15 s timeout
}
if (sys[65] == 512) {
echotime();
echo ('dns_resolv() OK:', sys[65]);
_portal_dns = 1;
return;
}
if (_portal_timeoutdns < sys[3] ) {
echotime();
echo ('dns_resolv() chyba:', sys[65]);
_portal_dns = 2;
}
}
//---------------------------- procedury pro ovladani rele QUIDO po sbernici RS232 ------------------------------------
// rs232 pouziva TEXT[400-420] pro prijem dat po serial_text_out
// rs232 pouzivá RAM[111-126] pro stav rele 1-16
//*B$OS1H zapnuti 1.Rele
//*B$OS1L vypnuti 1.Rele
//*B$OT1L2 vypnuti 1.Rele se spozdenim 1s (1-255 a 0,5s)
//0x48 je hexa H
//0x4c je hexa L
//0x30 je hexa 0
//0x31 je hexa 1
rs232
{
_pruchod = 0;
rs232_0:
// serial_text_out('*B$OS1H', 0x0D); //sepnuti 1.rele pred HW zmenou (rozpinaci rele)
// serial_text_out('*B$OS2H', 0x0D); //sepnuti 2.rele pred HW zmenou (rozpinaci rele)
// serial_text_out('*B$OS3H', 0x0D); //sepnuti 3.rele pred HW zmenou (rozpinaci rele)
// wait(50);
ram[111] = 0; //ovladani barvy tlacitka 1.rele na panelu v user.htm
ram[112] = 0; //ovladani barvy tlacitka 2.rele na panelu v user.htm
ram[113] = 0; //ovladani barvy tlacitka 3.rele na panelu v user.htm
if (_val > 0 && _val < 4) { //ovladani 1. - 3. rele <RESTART>
_rs232in=0x30+_val; //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
_relspo=0x30+REL_DEL; //0+DEFINE=delka spozdeni rele pri restartu
H=0x48;
serial_text_out('*B$OT', _rs232in, H, _relspo, 0x0D);
}
if (_val > 3 && _val < 10) { //ovladani 4. - 9. rele <ZAP/VYP>
_rs232in = 0x30 + _val; //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
serial_text_out('*B$OS', _rs232in, _rs232s, 0x0D);
}
if (_val >= 10 && _val <= 16) {//ovladani 10. - 16. rele <ZAP/VYP>
_rs232in = 0x30 + _val - 10; //stanoveni tlacitka 1-16 0+sys[141] (user.htm)
serial_text_out('*B$OS', 0x31, _rs232in, _rs232s, 0x0D);
}
wait(50); //dat mu cas na odezvu
_txt = 400;
//celou odpoved do pole
if(sys[48] == 0) { // pokud je nejaky znak prijaty ze seriove sbernice
rs232_1:
text[_txt] = sys[49]; // prevezmi prijaty znak ze seriove sbernice do urcene pozice pole text[]
_txt++; // dalsi pozice v text[], kam se zapise dalsi znak
if (sys[48] == 0 && _txt < 420) goto rs232_1; //at se odpoved nedostane do text[420] !!!
}
text[_txt] = 0x00; //konec pro echo
//potvrzeni OK - porovnej prijate znaky ulozene v ram[]
if (text[400] == 42 && text[401] == 66 && text[402] == 49 && text[403] == 48 && text[404] == 13) {
_pom= _val + 110;
// zpracuj hodnotu
if (_rs232s == 0x48) { //hexa H
if (_val > 0){ //odstraneni automatickeho vysilani "0 zapnuto"
// echotime();
echo (_val, ' Zapnuto');
lcd_echo(1, 400, 0, 'Rele QUIDO ', _val, ' ZAP');
wait(1000);
lcd_echo(1, 400, 0, ' ');
ram[_pom]=1;
}
} else {
if (_val > 0){ //odstraneni automatickeho vysilani "0 vypnuto"
// echotime();
echo (_val, ' Vypnuto');
lcd_echo(1, 400, 0, 'Rele QUIDO ', _val, ' VYP');
wait(1000);
lcd_echo(1, 400, 0, ' ');
ram[_pom] = 0;
}
}
goto rs232_end;
}
//akce se nezdarila opakuju
wait(50);
_pruchod++;
if (_pruchod > 5) {
if (_rs232s == 0x48) { //hexa H
if (_val > 0){ //odstraneni automatickeho vysilani "0 zapnuti se nezdarilo!"
echotime();
echo ('Zapnuti se nezdarilo!');
}
} else {
if (_val > 0){ //odstraneni automatickeho vysilani "0 vypnuti se nezdarilo!"
echotime();
echo ('Vypnuti se nezdarilo!');
}
}
goto rs232_end;
}
goto rs232_0;
label rs232_end:
}
nastav232
{
_val = sys[141]; //1-16
if (_val == 0 || _val > 16) goto nastav232_end; //zadna zmena
echotime();
echo ('Pozadavek na rs232 sepni/vypni rele - ', _val);
_pom = 110 + _val;
if (ram[_pom] == 0) {
_rs232s = 0x48; //zap hexa H
rs232();
} else {
_rs232s = 0x4c; //vyp hexa L
rs232();
}
sys[141] = 0; //vynulovat prikaz
//Vypis stavu rele QUIDO, nesouvisi s predchozim kodem
echotime();
echorele();
label nastav232_end:
}
//Pozn. sys[141] je pouzit pro ovladani tohoto programu - je to hodnota tzv. uzivatelske promenne nastavitele pres web (viz webove rozhrani vyrobku SDS - stranka SDS-C - odkaz uzivatelske promenne
//------------------------ procedury pro zobrazování stavu akumulátoru ------------------------------------------
akustav
{
// if (ram[131] == 0) { // if (ram[136] == 0) { // podminka kdyz zrovna nenebijim
if (sys[431] <= 809) { stav = 0; ram[141] = stav; } // 804/3370=0,2385 to je 23,85 V
if (sys[431] == 810) { stav = 1; ram[141] = stav; } // 806/3370=0,2391 to je 23,91 V
if (sys[431] == 811) { stav = 2; ram[141] = stav; }
if (sys[431] == 812) { stav = 3; ram[141] = stav; }
if (sys[431] == 813) { stav = 4; ram[141] = stav; }
if (sys[431] == 814) { stav = 5; ram[141] = stav; }
if (sys[431] == 815) { stav = 6; ram[141] = stav; }
if (sys[431] == 816) { stav = 7; ram[141] = stav; }
if (sys[431] == 817) { stav = 8; ram[141] = stav; }
if (sys[431] == 818) { stav = 9; ram[141] = stav; }
if (sys[431] == 819) { stav = 10; ram[141] = stav; }
if (sys[431] == 820) { stav = 11; ram[141] = stav; }
if (sys[431] == 821) { stav = 12; ram[141] = stav; }
if (sys[431] == 822) { stav = 13; ram[141] = stav; }
if (sys[431] == 823) { stav = 14; ram[141] = stav; }
if (sys[431] == 824) { stav = 15; ram[141] = stav; }
if (sys[431] == 825) { stav = 16; ram[141] = stav; }
if (sys[431] == 826) { stav = 17; ram[141] = stav; }
if (sys[431] == 827) { stav = 18; ram[141] = stav; }
if (sys[431] == 828) { stav = 19; ram[141] = stav; }
if (sys[431] == 829) { stav = 20; ram[141] = stav; } // 808/3370=0,2397 to je 23,97 V
if (sys[431] == 830) { stav = 21; ram[141] = stav; }
if (sys[431] == 831) { stav = 22; ram[141] = stav; }
if (sys[431] == 832) { stav = 23; ram[141] = stav; }
if (sys[431] == 833) { stav = 24; ram[141] = stav; }
if (sys[431] == 834) { stav = 25; ram[141] = stav; }
if (sys[431] == 835) { stav = 26; ram[141] = stav; }
if (sys[431] == 836) { stav = 27; ram[141] = stav; }
if (sys[431] == 837) { stav = 28; ram[141] = stav; }
if (sys[431] == 838) { stav = 29; ram[141] = stav; }
if (sys[431] == 839) { stav = 30; ram[141] = stav; }
if (sys[431] == 840) { stav = 31; ram[141] = stav; }
if (sys[431] == 841) { stav = 32; ram[141] = stav; }
if (sys[431] == 842) { stav = 33; ram[141] = stav; }
if (sys[431] == 843) { stav = 34; ram[141] = stav; }
if (sys[431] == 844) { stav = 35; ram[141] = stav; }
if (sys[431] == 845) { stav = 36; ram[141] = stav; }
if (sys[431] == 846) { stav = 37; ram[141] = stav; }
if (sys[431] == 847) { stav = 38; ram[141] = stav; }
if (sys[431] == 848) { stav = 39; ram[141] = stav; }
if (sys[431] == 849) { stav = 40; ram[141] = stav; }
if (sys[431] == 850) { stav = 41; ram[141] = stav; }
if (sys[431] == 851) { stav = 42; ram[141] = stav; }
if (sys[431] == 852) { stav = 43; ram[141] = stav; }
if (sys[431] == 853) { stav = 44; ram[141] = stav; }
if (sys[431] == 854) { stav = 45; ram[141] = stav; }
if (sys[431] == 855) { stav = 46; ram[141] = stav; }
if (sys[431] == 856) { stav = 47; ram[141] = stav; }
if (sys[431] == 857) { stav = 48; ram[141] = stav; }
if (sys[431] == 858) { stav = 49; ram[141] = stav; }
if (sys[431] == 859) { stav = 50; ram[141] = stav; }
if (sys[431] == 860) { stav = 51; ram[141] = stav; }
if (sys[431] == 861) { stav = 52; ram[141] = stav; }
if (sys[431] == 862) { stav = 53; ram[141] = stav; }
if (sys[431] == 863) { stav = 54; ram[141] = stav; }
if (sys[431] == 864) { stav = 55; ram[141] = stav; }
if (sys[431] == 865) { stav = 56; ram[141] = stav; }
if (sys[431] == 866) { stav = 57; ram[141] = stav; }
if (sys[431] == 867) { stav = 58; ram[141] = stav; }
if (sys[431] == 868) { stav = 59; ram[141] = stav; }
if (sys[431] == 869) { stav = 60; ram[141] = stav; }
if (sys[431] == 870) { stav = 61; ram[141] = stav; }
if (sys[431] == 871) { stav = 62; ram[141] = stav; }
if (sys[431] == 872) { stav = 63; ram[141] = stav; }
if (sys[431] == 873) { stav = 64; ram[141] = stav; }
if (sys[431] == 874) { stav = 65; ram[141] = stav; }
if (sys[431] == 875) { stav = 66; ram[141] = stav; }
if (sys[431] == 876) { stav = 67; ram[141] = stav; }
if (sys[431] == 877) { stav = 68; ram[141] = stav; }
if (sys[431] == 878) { stav = 69; ram[141] = stav; }
if (sys[431] == 879) { stav = 70; ram[141] = stav; }
if (sys[431] == 880) { stav = 71; ram[141] = stav; }
if (sys[431] == 881) { stav = 72; ram[141] = stav; }
if (sys[431] == 882) { stav = 73; ram[141] = stav; }
if (sys[431] == 883) { stav = 74; ram[141] = stav; }
if (sys[431] == 884) { stav = 75; ram[141] = stav; }
if (sys[431] == 885) { stav = 76; ram[141] = stav; }
if (sys[431] == 886) { stav = 77; ram[141] = stav; }
if (sys[431] == 887) { stav = 78; ram[141] = stav; }
if (sys[431] == 888) { stav = 79; ram[141] = stav; }
if (sys[431] == 889) { stav = 80; ram[141] = stav; }
if (sys[431] == 890) { stav = 81; ram[141] = stav; }
if (sys[431] == 891) { stav = 82; ram[141] = stav; }
if (sys[431] == 892) { stav = 83; ram[141] = stav; }
if (sys[431] == 893) { stav = 84; ram[141] = stav; }
if (sys[431] == 894) { stav = 85; ram[141] = stav; }
if (sys[431] == 895) { stav = 86; ram[141] = stav; }
if (sys[431] == 896) { stav = 87; ram[141] = stav; }
if (sys[431] == 897) { stav = 88; ram[141] = stav; }
if (sys[431] == 898) { stav = 89; ram[141] = stav; }
if (sys[431] == 899) { stav = 90; ram[141] = stav; }
if (sys[431] == 900) { stav = 91; ram[141] = stav; }
if (sys[431] == 901) { stav = 92; ram[141] = stav; }
if (sys[431] == 902) { stav = 93; ram[141] = stav; }
if (sys[431] == 903) { stav = 94; ram[141] = stav; }
if (sys[431] == 904) { stav = 95; ram[141] = stav; }
if (sys[431] == 905) { stav = 96; ram[141] = stav; }
if (sys[431] == 906) { stav = 97; ram[141] = stav; }
if (sys[431] == 907) { stav = 98; ram[141] = stav; }
if (sys[431] == 908) { stav = 99; ram[141] = stav; }
// if (sys[431] > 902 && sys[431] < 905) { stav = 90; ram[141] = stav; } // 852/3370=0,2528 to je 25,28 V
// if (sys[431] > 907 && sys[431] < 911) { stav = 95; ram[141] = stav; } // 856/3370=0,2540 to je 25,24 V
if (sys[431] > 905) { stav = 100; ram[141] = stav; } // 860/3370=0,2551 to je 25,51 V
// zmena barvy napisu Proud Baterie v user html
if (ram[143] >= 0) { //stanoveni nabijim-vybijim pro USER.htm
ram[131] = 1;
} else {
ram[131] = 0;
}
}
//------------------------ ovladani rele SDS ------------------------------------------
releon
{
sys[_rele] = 255;
_pom = _rele - 230;
if (_disp == 1) { // pokud je zapnuty displej
lcd_echo(1, 400, 0, 'Rele ', _pom, ' ZAP');
wait(1000);
lcd_echo(1, 400, 0, ' ');
}
echotime();
echo('Rele ', _pom, ' ZAP');
if (_pom == 2) {
lcd_echo(1, 400, 0, 'Vetrak zapnut');
wait(1000);
lcd_echo(1, 400, 0, ' ');
}
}
releoff
{
sys[_rele] = 0;
_pom = _rele - 230;
if (_disp == 1) { // pokud je zapnuty displej
lcd_echo(1, 400, 0, 'Rele ', _pom, ' VYP');
wait(1000);
lcd_echo(1, 400, 0, ' ');
}
echotime();
echo('Rele ', _pom, ' VYP');
if (_pom == 2) {
lcd_echo(1, 400, 0, 'Vetrak vypnut');
wait(1000);
lcd_echo(1, 400, 0, ' ');
}
}
nastavrele
{
_va = sys[143]; //1-4 rele, 5 D0
if (_va == 0 || _va > 5) goto nastavrele_end; //zadna zmena
echo ('Pozadavek na rele - ', _va);
if (_va == 5) {
echo ('Pozadavek na S0');
_rele = 301;
if (sys[_rele] == 0) {
sys[_rele] = 1;
echotime();
echo ('S0 sepnut');
lcd_echo(1, 400, 0, 'S0 ZAP ');
wait(1000);
lcd_echo(1, 400, 0, ' ');
} else {
sys[_rele] = 0;
echotime();
echo ('S0 vypnut') ;}
lcd_echo(1, 400, 0, 'S0 VYP ');
wait(1000);
lcd_echo(1, 400, 0, ' ');
} else {
_rele = 230 + _va;
if (sys[_rele] == 0) { releon(); } else { releoff(); }
}
sys[143] = 0; //vynulovat prikaz
label nastavrele_end:
}
//------------------------------- posilani mailu pri akcich ---------------------------------------------------
posli_email1
{ // odesilani poplacove informace o zapnuti ventilatoru
email1 = 1; // pamatuj si ze si to poslal
echotime();
echo('Vetrak zapnut - email poslan');
lcd_echo(1, 400, 0, 'Vetrak zapnut');
wait(1000);
lcd_echo(1, 400, 0, ' ');
smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VENTILATOR ZAPNUT"\n'ram[150], ram[151]':' ,ram[152], ram[153]':', ram[154], ram[155]' hod\nTeplota Stridace XTS = ' ram[201] ,'.', ram[202], ' st. C\nTeplota MPPT VT-80 = ' ram[205], '.',ram[206], ' st. C\nTeplota ROZVADEC = ' ram[203], '.',ram[204], ' st. C');
}
posli_email2
{ // odesilani poplacove informace o zapnuti ventilatoru
email2 = 1; // pamatuj si ze si to poslal
echotime();
echo('Vetrak vypnut - email poslan');
lcd_echo(1, 400, 0, 'Vetrak vypnut');
wait(1000);
lcd_echo(1, 400, 0, ' ');
smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VENTILATOR VYPNUT"\n'ram[150], ram[151]':' ,ram[152], ram[153]':', ram[154], ram[155]' hod\nTeplota Stridace XTS = ' ram[201] ,'.', ram[202], ' st. C\nTeplota MPPT VT-80 = ' ram[205], '.',ram[206], ' st. C\nTeplota ROZVADEC = ' ram[203], '.',ram[204], ' st. C');
}
posli_email3
{ // odesilani poplacove informace o zapnuti ventilatoru
email3 = 1; // pamatuj si ze si to poslal
echotime();
echo('Vystup stridace zapnut - email poslan');
lcd_echo(1, 400, 0, 'Vystup stridace zapnut');
wait(1000);
lcd_echo(1, 400, 0, ' ');
smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VYSTUP STŘÍDAČE ZAPNUT"\n');
}
posli_email4
{ // odesilani poplacove informace o zapnuti ventilatoru
email4 = 1; // pamatuj si ze si to poslal
echotime();
echo('Vystup stridace vypnut - email poslan');
lcd_echo(1, 400, 0, 'Vystup stridace vypnut');
wait(1000);
lcd_echo(1, 400, 0, ' ');
smtp_send('jaromir.lastovicka@centrum.cz', 'hlaseni', '"VYSTUP STŘÍDAČE VYPNUT"\n');
}
//--------------------------------------------- procedura termostatu ---------------------------------------------------
termostat
{
// if (_termostattime>=sys[4]) return;
teplotaStuder = (sys[310] / 100);
teplotaRozvadec = (sys[311] / 100);
teplotaTristar = (sys[312] / 100);
// kdyz teplota kterehokoli prvku presahne stanovene meze, tak zapni ventilator
if (teplotaStuder > sys[147] || teplotaRozvadec > sys[147] || teplotaTristar > sys[147]) {
sys[232] = 255;
if (email1 == 0) posli_email1();
email2 = 0;
}
// kdyz vsechny prvky budou mit stanovenou teplotu "MINTEPLOTA", tak vypni ventilator
if (teplotaStuder < sys[146] && teplotaRozvadec < sys[146] && teplotaTristar < sys[146]) {
sys[232] = 0;
if (email2 == 0) posli_email2();
email1 = 0;
}
}
//------- procedura pro ovladani rele Re3 (vystup ze studeru) -----------------------------------------------
ovlrele
{
ram[144] = STOZAP*100;
ram[145] = STOVYP*100;
// kdyz napeti presahne napeti 27,7V (27700) zapne Re3 (vystup ze studeru)
if (ram[135] > ram[144]) {
sys[233] = 255;
if (email3 == 0) posli_email3();
email4 = 0;
}
// kdyz napeti presahne napeti 26,0V (26000) vypne Re3 (vystup ze studeru)
if (ram[135] < ram[145]) {
sys[233] = 0;
if (email4 == 0) posli_email4();
email3 = 0;
}
}
//------------------------ procedury pro cteni stavu rele astavu D0 ------------------------------------------
ctirele
{
if (sys[231] == 255) { relst1 = 1; } else { relst1 = 0; }
if (sys[232] == 255) { relst2 = 1; } else { relst2 = 0; }
if (sys[233] == 255) { relst3 = 1; } else { relst3 = 0; }
if (sys[234] == 255) { relst4 = 1; } else { relst4 = 0; }
if (sys[301] == 255) { D0 = 1; } else { D0 = 0; }
if (automat == 1) { _a = 1; } else { _a = 0; }
}
//------------------------ procedury pro zobrazování na displeji ------------------------------------------
ShowScreen1 // uvodni obrazovka
{
// lcd_clear(0);
lcd_echo(22, 100, 1, '1');// cislo obrazovky
lcd_echo(0, 100, 0, ' Poloostrovni FVE ');
lcd_echo(0, 200, 0, ' Mlada Boleslav ');
lcd_echo(0, 300, 0, ' V.04-23 2015 ');
lcd_echo(0, 400, 0, ' SDS MACRO + QUIDO ');
}
ShowScreen2 // hodnoty FVE
{
// lcd_clear(0);
ram[226] = ram[182] / 10000;
ram[227] = ram[183] / 10000;
lcd_echo(22, 100, 1, '2');// cislo obrazovky
ram[150] = sys[8] / 10;
ram[151] = sys[8] % 10;
ram[152] = sys[9] / 10;
ram[153] = sys[9] % 10;
ram[154] = sys[10] / 10;
ram[155] = sys[10] % 10;
lcd_echo(12, 100, 0, ram[150], ram[151]':', ram[152], ram[153]':', ram[154], ram[155]);
ram[156] = sys[5] / 10;
ram[157] = sys[5] % 10;
ram[158] = sys[6] / 10;
ram[159] = sys[6] % 10;
ram[160] = sys[7] / 10;
ram[161] = sys[7] % 10;
lcd_echo(1, 100, 0, ram[156], ram[157], '.', ram[158], ram[159], '.', ram[160], ram[161], ' ');
lcd_echo(1, 2, 0, 'B ', b1_volt_a, '.', b1_volt_b, 'V', ' ', b4_amp_a, '.', b4_amp_b, 'A ', batwat,'W');
// lcd_echo(1,200,0,text[0];
lcd_echo(1, 3, 0, 'MPPT ', b3_amp_a, '.', b3_amp_b, 'A ', panelbat,'W');
// lcd_echo(1, 4, 0, 'V ', VDCd, 'Wh ', 'S ' ,SDCd, 'Wh');
lcd_echo(1, 4, 0, 'V ', ram[226], 'Wh ', 'S ' ,ram[227], 'Wh');
}
ShowScreen3 // rele
{
lcd_echo(22, 100, 1, '3');// cislo obrazovky
lcd_echo(1, 100, 0, 'RELE QUIDO SDS');
lcd_echo(1, 200, 0, '1234567890123456 12345');
lcd_echo(1, 300, 0, ram[111], ram[112], ram[113], ram[114], ram[115], ram[116], ram[117], ram[118], ram[119], ram[120], ram[121], ram[122], ram[123], ram[124], ram[125], ram[126]);
lcd_echo(18, 300, 0, relst1, relst2, relst3, relst4, sys[301];
lcd_echo(1, 400, 0, _a, ' ');
}
PageRele
{
// RELE na SDS-ku
if (pagerele == 1) { _r = 1; lcd_echo(18, 400, 0, 'r=', _r); } // 1.rele SDS
if (pagerele == 2) { _r = 2; lcd_echo(18, 400, 0, 'r=', _r); } // 2.rele SDS
if (pagerele == 3) { _r = 3; lcd_echo(18, 400, 0, 'r=', _r); } // 3.rele SDS
if (pagerele == 4) { _r = 4; lcd_echo(18, 400, 0, 'r=', _r); } // 4.rele SDS
// RELE na vstupu D0
if (pagerele ==5) { _r = 5; lcd_echo(18, 400, 0, 'r=', _r); } // rele na S0
// RELE v sade QUIDO
if (pagerele == 6) { _q = 1; lcd_echo(18, 400, 0, 'q=', _q); } // 1.rele QUIDO
if (pagerele == 7) { _q = 2; lcd_echo(18, 400, 0, 'q=', _q); } // 2.rele QUIDO
if (pagerele == 8) { _q = 3; lcd_echo(18, 400, 0, 'q=', _q); } // 3.rele QUIDO
if (pagerele == 9) { _q = 4; lcd_echo(18, 400, 0, 'q=', _q); } // 4.rele QUIDO
if (pagerele == 10) { _q = 5; lcd_echo(18, 400, 0, 'q=', _q); } // 5.rele QUIDO
if (pagerele == 11) { _q = 6; lcd_echo(18, 400, 0, 'q=', _q); } // 6.rele QUIDO
if (pagerele == 12) { _q = 7; lcd_echo(18, 400, 0, 'q=', _q); } // 7.rele QUIDO
if (pagerele == 13) { _q = 8; lcd_echo(18, 400, 0, 'q=', _q); } // 8.rele QUIDO
if (pagerele == 14) { _q = 9; lcd_echo(18, 400, 0, 'q=', _q); } // 9.rele QUIDO
if (pagerele == 15) { _q = 10; lcd_echo(18, 400, 0, 'q=', _q); } // 10.rele QUIDO
if (pagerele == 16) { _q = 11; lcd_echo(18, 400, 0, 'q=', _q); } // 11.rele QUIDO
if (pagerele == 17) { _q = 12; lcd_echo(18, 400, 0, 'q=', _q); } // 12.rele QUIDO
if (pagerele == 18) { _q = 13; lcd_echo(18, 400, 0, 'q=', _q); } // 13.rele QUIDO
if (pagerele == 19) { _q = 14; lcd_echo(18, 400, 0, 'q=', _q); } // 14.rele QUIDO
if (pagerele == 20) { _q = 15; lcd_echo(18, 400, 0, 'q=', _q); } // 15.rele QUIDO
if (pagerele == 21) { _q = 16; lcd_echo(18, 400, 0, 'q=', _q); } // 16.rele QUIDO
if (pagerele == 22) { automat = 1; lcd_echo(18, 400, 0, 'a=', _a); } //
}
ShowScreen4 // Teploty
{
lcd_echo(22, 100, 1, '4'); // cislo obrazovky
// 1.teplomer (stridac STUDER XTS)
ram[201] = sys[310] / 100;
ram[202] = sys[310] % 100;
// 2.teplomer (ROZVADEC)
ram[203] = sys[311] / 100;
ram[204] = sys[311] % 100;
// 3.teplomer (regulator MPPT VT-80)
ram[205] = sys[312] / 100;
ram[206] = sys[312] % 100;
// 5.teplomer (BATERIE)
ram[207] = sys[314] / 100;
ram[208] = sys[314] % 100;
// 6.teplomer (VENKOVNI)
ram[209] = sys[315] / 100; // pred desetinou tecko
ram[210] = sys[315] % 100; // za desetinou tecko
if (ram[210] >= 0) goto celsius1; // osetreni zaporneho cisla desetinne tecky
ram[210] = 0 - ram[210]; // rucni doplneni cisla 0 pokud hodnota je 0-9
label celsius1:
// 7.teplomer (FV Panel)
ram[211] = sys[316] / 100;
ram[212] = sys[316] % 100;
if (ram[212] >= 0) goto celsius2; // osetreni zaporneho cisla desetinne tecky
ram[212] = 0 - ram[212]; // rucni doplneni cisla 0 pokud hodnota je 0-9
label celsius2:
// vypocet teploty procesoru
// ram[213] = 879 * sys[46]; //1426910
// ram[214] = 590000 - ram[213]; //16192700
// ram[215] = 5 * ram[214]; //80963500
// ram[216] = ram[215] / 2; //40481750
// ram[217] = ram[216] / 10000;
// ram[218] = ram[215] / 200;
// ram[219] = ram[218] % 100;
lcd_echo(0, 100, 0, 'TEPLOTY ', email1, ' ');
lcd_echo(12, 100, 0, 'SDS ', ram[217], '.', ram[219], 'C', ' ');
lcd_echo(0, 2, 0, 'XTS ', ram[201], '.', ram[202], 'C VT ', ram[205], '.', ram[206], 'C ');
lcd_echo(0, 3, 0, 'BAT ', ram[207], '.', ram[208], 'C ROZ ', ram[203], '.', ram[204], 'C ');
lcd_echo(0, 4, 0, 'OUT ', ram[209], '.', ram[210], 'C FVP ', ram[211], '.', ram[212], 'C ');
}
ShowScreen5 // Cteni hodnot z elektromeru
{
//lcd_clear(0);
lcd_echo(22, 100, 1, '5'); // cislo obrazovky
lcd_echo(0, 100, 0, 'ELEKTROMERY ');
ram[220] = 360000000 / (sys[592] * (sys[559]/10));
ram[221] = sys[493] / 1000;
lcd_echo(0, 2, 0, 'DS P=', ram[220], 'W E=', ram[221], 'kWh ');
ram[222] = 360000000 / (sys[593] * (sys[560]/10));
ram[223] = sys[494] / 1000;
lcd_echo(0, 400, 0, '?? P=', ram[222], 'W E=', ram[223], 'kWh ');
ram[224] = 360000000 / (sys[594] * (sys[561]/10));
ram[225] = sys[495] / 1000;
lcd_echo(0, 300, 0, 'FV P=', ram[224], 'W E=', ram[225], 'kWh ');
}
LCD2
{
if (_disp == 0) {
lcd_echo(1, 100, 0, 'NEMAS ZAPNUTY DISPLEJ');
echo('NEMAS ZAPNUTY DISPLEJ');
} else {
// rolovani menu obrazovky
//if((ODPOCITAVAC_SEKUND == 0 || sys[151] == 0) && automat == 1) {
if(sys[151] == 0) {
page++;
if (page > MAXPAGE){
page = 1;
}
}
// ZAP/VYP rele na SDS-ku+D0
if (pagerele > 0 && pagerele < 6) {
if(sys[152] == 0) {
sys[143] = _r;
}
}
if (pagerele > 6 && pagerele < 22) {
if(sys[152] == 0) {
sys[141] = _q;
}
}
if (pagerele == 23) {
if(sys[152] == 0) {
_a = 0;
}
}
// rolovani cisel rele
if (sys[153] == 0) {
pagerele++;
if (pagerele > MAXPAGERELE){
pagerele = 1;
}
}
if (sys[154] == 0) {
pagerele--;
if (pagerele < 1){
pagerele = MAXPAGERELE; // MAXPAGERELE = 21 16 rele quido + 4 rele SDS + D0
}
}
}
}
RefreshLCD
{
if (page == 1) { ShowScreen1();}
if (page == 2) { ShowScreen2();}
if (page == 3) { ShowScreen3(); PageRele(); }
if (page == 4) { ShowScreen4();}
if (page == 5) { ShowScreen5();}
LCD2();
nastavrele();
ctirele();
}
//------------------------ procedury pro zobrazování stavu elektromeru do konzole ---------------------------------------
writeconsole
{
if (_consoletime>=sys[4]) return;
ram[190] = 360000000 / (sys[592]* (sys[560]/10));
ram[191] = sys[493] / 1000;
echotime();
echo('OPTO 1 Verejna sit: ' 'imp.time=', sys[592], 'msec, konstanta (imp./kWh)=', sys[559], ', akt.vykon=', ram[190], 'W, energie=' ram[191], 'kWh');
ram[192] = 360000000 / (sys[593] * (sys[561]/10));
ram[193] = sys[494] / 1000;
echo('OPTO 2 Zaloha: ' 'imp.time=', sys[593], 'msec, konstanta (imp./kWh)=', sys[560], ', akt.vykon=', ram[192], 'W, energie=' ram[193], 'kWh');
ram[194] = 360000000 / (sys[594] * (sys[562]/10));
ram[195] = sys[495] / 1000;
echo('OPTO 3 FVE: ' 'imp.time=', sys[594], 'msec, konstanta (imp./kWh)=', sys[561], ', akt.vykon=', ram[194], 'W, energie=' ram[195], 'kWh');
_consoletime=sys[4] + 3600; //dalsi kontrola za x vterin
}
raspberry // popdprogram na odesilani dat do raspberry
{
if (_raspberrytime>=sys[4]) return;
sys[77]=2; //nastaveni modu http_get
http_get(192,168,1,4,'192.168.1.4','/sdsmacro.php?&t1=',sys[310],'&t2=',sys[311],'&t3=',sys[312],'&t4=',sys[313],'&t5=',sys[314],'&t6=',sys[315],'&t7=',sys[316],'&t8=',sys[317],'&t9=',sys[318],'&t10=',sys[319],'&t11=',sys[320],'&t12=',sys[321],'&t13=',sys[322],'&t14=',sys[323],'&t15=',sys[324],'&t16=',sys[325],
'&tov1=',sys[493],'&tov2=',sys[494],'&tov3=',sys[495],'&kon1=',sys[559],'&kon2=',sys[560],'&kon3=',sys[561],'&av1=', sys[592],'&av2=', sys[593],'&av3=', sys[594],'&tsds=',sys[46]);
// echotime();
// echo('Teploty odeslany na raspberry, OK.');
_raspberrytime = sys[4] + 60; //dalsi kontrola za x vterin
}
//********* kazdou minutu zobrazeni aktualnich vykonu do konzole *************
minuta
{
if (_consoletime4>=sys[4]) return;
VDCm1 += ram[140]; // Soucet DC energie panelu za minutu
SDCm1 += ram[139]; // Soucet energie baterie +/- za minutu
ram[60] = VDCm1;
ram[61] = SDCm1;
_consoletime4 = sys[4] + 10; //dalsi kontrola za x vterin
VDCmin = VDCm1 / 45; // Energie panel za 60 s
if (SDCm1 < 0) {
SDCmin = SDCm1 / 45; // 7 puvodne, Energie baterie za 60 s
} else {
SDCmin = 0;
}
if (_consoletime2>=sys[4]) return;
// if (sys[10] == 30 || sys[10] == 34){
VDC24h += VDCmin / 60; // Soucet DC energie panelu
SDC24h += SDCmin / 60; // 36 puvodne, Soucet energie baterie +/-
ram[62] = VDC24h;
ram[63] = SDC24h;
VDCd = VDC24h / 10;
SDCd = SDC24h / 10;
_consoletime2=sys[4] + 60; //dalsi kontrola za x vterin
VDCm1 = 0; // nuluj kazdou minutu
SDCm1 = 0;
NBATm1 = 0;
// }
}
mam_24_hod //nulovani pocitadel kdyz je dany cas
{
if ( sys[8] == 0 && (sys[9] == 0 || sys[9] == 2)) { // kazdy den o pulnoci
sys[140] = sys[493] ; // stav v pulnoci SPOTREBA 220 CEZ
echo('zapis den SPOTREBA 220V') ;
sys[142] = sys[495] ; // stav v pulnoci VYROBA 220 STRIDAC
echo('zapis den VYROBA 220V stridac') ;
sys[144] = VDC24h ; // stav v pulnoci VYROBA DC za MPPT
echo('zapis den VYROBA DC za MPPT') ;
sys[145] = SDC24h ; // stav v pulnoci SPOTREBA DC BATERIE
echo('zapis den SPOTREBA DC z BATERIE') ;
// sys[147] = NBAT24h ; // stav v pulnoci SPOTREBA dohledu FVE
// echo('zapis den SPOTREBA DC dohledu FVE') ;
VDCd = 0;
SDCd = 0;
}
if ( sys[5] == 1 && sys[8] == 0 && (sys[9] == 0 || sys[9] == 2) ) { // kazdého 1 v mesici
sys[100] = sys[493] ; // 1 v mesici stav v pulnoci SPOTREBA 220 CEZ
echo('zapis mesic SPOTREBA 220V') ;
sys[101] = sys[495] ; // 1 v mesici stav v pulnoci VYROBA 220 STRIDAC
echo('zapis mesic VYROBA 220V stridac') ;
sys[102] = VDC24h ; // 1 v mesici stav v pulnoci VYROBA DC za MPPT
echo('zapis mesic VYROBA DC za MPPT') ;
sys[103] = SDC24h ; // 1 v mesici stav v pulnoci SPOTREBA DC BATERIE
echo('zapis mesic SPOTREBA DC z BATERIE') ;
sys[104] = NBAT24h ; // 1 v mesici stav v pulnoci SPOTREBA dohledu FVE
echo('zapis mesic SPOTREBA DC dohledu FVE') ;
}
if ( sys[5] == 1 && sys[6] == 1 && sys[8] == 0 && (sys[9] == 0 || sys[9] == 2) ) // kazdeho 1 v roce S I L V E S T R A
{
sys[105] = sys[493] ; // 1.1 v roce stav v pulnoci SPOTREBA 220 CEZ
echo('zapis rok SPOTREBA 220V') ;
sys[106] = sys[495] ; // 1.1 v roku stav v pulnoci VYROBA 220 STRIDAC
echo('zapis rok VYROBA 220V stridac') ;
sys[107] = VDC24h ; // 1.1 v roce stav v pulnoci VYROBA DC za MPPT
echo('zapis rok VYROBA DC za MPPT') ;
sys[108] = SDC24h ; // 1.1 v roce stav v pulnoci SPOTREBA DC BATERIE
echo('zapis rok SPOTREBA DC z BATERIE') ;
sys[109] = NBAT24h ; // 1.1 v roce stav v pulnoci SPOTREBA dohledu FVE
echo('zapis rok SPOTREBA DC dohledu FVE') ;
}
_beh_min24 = sys[9]; // naplneni promenne pro zajisteni neopakovani funkce v teze sekunde
}
//------------------------------------ startovaci procedury ------------------------------------------------------
init
{
sys[146] = 45; // vychozi teplota vypnuti vetraku
sys[147] = 50; // vychozi teplota zapnuti vetraku
echotime();
echo('Start programu');
if (_disp == 1) {
lcd_clear(0);
lcd_echo(1, 400, 1, 'vitej v SDS');
}
// sys[77]=0; //http_get odpovet nechci do ram[]
// sys[78]=0; //http_get odpovet nechci do ram[]
_portal_timeout = 1; //odeslat data ihned
// ******* uzivatelsky nastavitelne promenne ***********
_disp=1; //display na sds macro (0-vypnuty, 1-zapnuty)
sys[140] = sys[493];
sys[142] = sys[495];
// ------- vase promenne sem -------
serial_set(9600, 8, 1, 0);
ShowScreen2();
}
//------------------------------------ H L A V N I P R O G R A M -----------------------------------------------
main
{
//statistiky
_beh_min = -1; // naplneni promenne pro zajisteni neopakovani funkce v teze sekunde po zacatku programu
_beh_min24 = -1; // naplneni promenne pro zajisteni neopakovani funkce v teze sekunde po zacatku programu
//odeslani dat na portal v nastaveny interval
if (_portal_timeout > 0 && _portal_timeout < sys[3]) {
portal_nastav();
}
// if (_portal_timeout > 0) {
// php();
// }
if (_portal_dns == 0) portal_dns();
if (_portal_dns != 0 && _portal_data > 0) odesli_data_na_portal();
// ------- volani vlastnich procedur sem -------
rs232();
nastav232();
akustav();
writeconsole();
minuta();
termostat();
ovlrele();
raspberry;
ODPOCITAVAC_SEKUND = 2;
cekej_dale:
nacti_hodnoty();
RefreshLCD();
// label cekej:
if (sys[8] == 0 && (sys[9] == 0 || sys[9] == 2) && sys[10] == 0 && sys[9] != _beh_min24 ) mam_24_hod(); //každy den v 00 a 02 hod NES + zajisteni neopakovani funkce v teze sekunde po zacatku programu
// (jen pro jistotu jeste navic v 02, ponevadz se to obcas neprovedlo)
if (sys[10] == 40 && sys[9] != _beh_min ) //každou minutu ve čtyřicáté sekundě NES + zajisteni neopakovani funkce v teze sekunde po zacatku programu
{
ram[180] = 1000 * (sys[493] - sys[140] ) / sys[559]; // do ram[180] se zapise 24 hod SPOTREBA 220V od CEZ
ram[181] = 1000 * (sys[495] - sys[142] ) / sys[561]; // do ram[181] se zapise 24 hod VYROBA 220V STRIDAC
ram[182] = 1000 * (VDC24h - sys[144] ); // do ram[182] se zapise 24 hod VYROBA DC za MPPT
ram[183] = 1000 * ((SDC24h - sys[145]) * (-1)); // do ram[183] se zapise 24 hod SPOTREBA DC BATERIE
// ram[184] = 1000 * (NBAT24h - sys[147] ); // do ram[184] se zapise 24 hod SPOTREBA dohledu FVE
ram[185] = 1000 * (sys[493] - sys[100] ) / sys[559]; // do ram[185] se zapise mesicni SPOTREBA 220V od CEZ
ram[186] = 1000 * (sys[495] - sys[101] ) / sys[561]; // do ram[186] se zapise mesicni VYROBA 220V STRIDAC
ram[187] = 1000 * (VDC24h - sys[102] ); // do ram[187] se zapise mesicni VYROBA DC za MPPT
ram[188] = 1000 * ((SDC24h - sys[103]) * (-1)); // do ram[188] se zapise mesicni SPOTREBA DC BATERIE
ram[189] = 1000 * (NBAT24h - sys[104] ); // do ram[189] se zapise mesicni SPOTREBA dohledu FVE
ram[190] = 1000 * (sys[493] - sys[105] ) / sys[559]; // do ram[190] se zapise rocni SPOTREBA 220V od CEZ
ram[191] = 1000 * (sys[495] - sys[106] ) / sys[561]; // do ram[191] se zapise rocni VYROBA 220V STRIDAC
ram[192] = 1000 * (VDC24h - sys[107] ); // do ram[192] se zapise rocni VYROBA DC za MPPT
ram[193] = 1000 * ((SDC24h - sys[108]) * (-1)); // do ram[193] se zapise rocni SPOTREBA DC BATERIE
ram[194] = 1000 * (NBAT24h - sys[109] ); // do ram[194] se zapise rocni SPOTREBA dohledu FVE
_beh_min = sys[9]; // zajisteni neopakovani funkce v teze sekunde po zacatku programu - dalsi krok
_beh_min24 = sys[9]; // zajisteni neopakovani funkce v teze sekunde po zacatku programu - dalsi krok
}
if (ODPOCITAVAC_SEKUND > 0) goto cekej_dale;
//konec - main bude spusteno automaticky znovu
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<TITLE>SDS-MACRO RS485 control panel</TITLE>
<TITLE>Verze 4.1 ze dne 13.4.2013 19:00 hod</TITLE>
<META content="text/html; charset=windows-1250" http-equiv=Content-Type>
<META content="jaromir.lastovicka" name=author>
<META content="sds-macro, sds-micro, sds, macro, micro, onlinetechnology, csphone" name=keywords>
<META content="sds-macro, sds-micro, sds, macro, micro, onlinetechnology, csphone" name=description>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="0">
<STYLE title=currentStyle type=text/css media=screen>
body {
font-family:verdana, arial, sans-serif; font-size:12px;
word-wrap:break-word; background:#000; padding:20px;
}
a {text-decoration:none;color:#FEFEA3;}
a:hover {text-decoration:none;color:#FEFEA3;}
#toppanel {}
#webcam {background:#222; width:640px; height:480px;}
#control {float:right; width:450px;}
#outputs {background:#aaa; float:right; width:450px;}
#bottpanel {background:#000000; width:640px; margin:10px 0px 0px 0px;}
#tempa {width:360px; float:left; margin:0px 0px 0px 0px;}
#tempb {width:310px; float:right; margin:0px 0px 0px 10px;}
#header {color:#aaa}
#footer {clear:both; padding-top:30px;}
#footer p {color:#3366CC;}
#footer a {color:#FEFEA3;}
#footer a:hover {text-decoration:none;}
h1 {font-size:18px; margin:0; padding-bottom:10px; color:#ddd;}
h2 {font-size:15px; margin:0; padding-bottom:5px; color:#3366CC;}
fieldset.rs232 {
border:1px solid #777;
margin: 0px 0px 2px 0px;
padding: 0px 0px 10px 10px;
color:#fff;
text-align:right;
}
fieldset {
border:1px solid #777;
margin: 0px 0px 10px 0px;
padding: 0px 0px 10px 10px;
color:#fff;
text-align:left;
}
legend {
margin-left: 0px;
padding: 0.2em 0.5em;
border:1px solid #777;
color:#0cc;
font-size:14px;
font-weight:bold;
}
.tlacitko{
margin: 10px 10px 0px 0px;
padding: 5px;
color:#FEFEA3;
text-align:left;
width:60px;
height:15px;
display:block;
border:1px solid #777;
float:left;
text-align:center;
}
.cislo0, .cislo1{
margin: 10px 0px 0px 0px;
padding: 5px 0px 5px 0px;
color:#0cc;
text-align:center;
width:25px;
height:15px;
border-width: 1px 0px 1px 1px;
border-style: solid;
border-color: #777;
float:left;
background:#FF3300;
}
.cislo0{
color:#777;
background:#000;
}
.cislo1{
color:#000;
background:#33FF33;
}
.cislo10, .cislo11{
width:200px;
color:#000;
line-height:20x;
margin: 0px 0px 0px 0px;
background:#000;
}
.cislo10{
color:#FF0000;
background:#000;
}
.cislo11{
color:#33CC00;
background:#000;
}
.col1, .col5 {
color:#ccc;
line-height:20px;
margin: 3px 0px 0px 0px;
}
.col1{
color:#ccc;
background:#000;
}
.col5{
width:200px;
color:#000;
text-align:center;
line-height:20x;
margin: 0px 0px 0px 150px;
background:#33FF33;
}
.col2 {
width:250px;
color:#ccc;
line-height:20x;
float:right;
}
.col23 {
width:145px;
color:#ccc;
line-height:20px;
float:right;
}
.col3 {
width:50px;
color:#FEFEA3;
line-height:20px;
float:right;
}
.col1t {
color:#ccc;
line-height:20px;
margin: 3px 0px 0px 0px;
}
.col2t {
width:120px;
color:#ccc;
line-height:20px;
float:right;
}
input{
height:17px;
}
.pwm {
width:30px;
}
</STYLE>
<!--[if lte IE 7]>
<style type="text/css">
body {word-wrap:break-word;}
#outer2 {float:left; display:inline; margin-left:10px; margin-right:10px;}
#wrapper {display:inline-block;}
</style>
<![endif]-->
<!--
sys141 - ovládání RS232
rb1, rb2, rb3, rb4, db0 - ovládací tlačítka na rele a D0
rs1, rs2, rs3, rs4, ds0 - label pro zobrazeni stavu rele a D0
sys146 - kmitičet PWM
d0 - ovládání PWM
a1, c1, a2, c2, a3, c3, a4, c4 - aktuální, celková spotřeba kwh
o1, o2, o3 - cena za energii
ad1, ad2, ad3, ad4 - napěťové vstupy
cas - aktuální čas
ip - adresa watchdog (EGON)
temp1...temp32 - čidla teploty
t1 .... t16 - čidla teploty z druhého SDS
-->
<script type="text/javascript">
var tt;
var pom;
var req232=false; //rs232
var reqRele=false; //rele
var reqS0=false; //vykony
var reqAD=false; //AD a cas
var reqTemp=false; //D0 a teploty
var reqProud=false; //Uzivatelske promenne sys[140]- sys[147]
var reqRam=false; //Hodnoty ram[137] - ram[141]
var reqDENMESROK=false; //statistiky
var firstTime=true; //jen poprve nastavit
var dc; //dc hodnoty
//Ovladani rele QUIDO tlacitky pres RS 232 rele 1 - rele 3 (RESTART)
function req232aComplete(){
if(req232a.readyState == 4){
if(req232a.status == 200){
var rE=req232a.responseText.split("|");
if (rE.length==3) {
for (i=0;i<3;i++) {
if (rE[i]==0) {
document.getElementById("cis"+(i+1)).className="cislo0";
document.getElementById("btn"+(i+1)).innerHTML="RESTART";
} else {
document.getElementById("cis"+(i+1)).className="cislo1";
document.getElementById("btn"+(i+1)).innerHTML="DELAM";
}
}
}
}
}
}
//Ovladani rele QUIDO tlacitky pres RS 232 rele 4 - rele 16 (ZAP/VYP)
function req232bComplete(){
if(req232b.readyState == 4){
if(req232b.status == 200){
var rE=req232b.responseText.split("|");
if (rE.length==16) {
for (i=3;i<16;i++) {
if (rE[i]==0) {
document.getElementById("cis"+(i+1)).className="cislo0";
document.getElementById("btn"+(i+1)).innerHTML="ZAPNI";
} else {
document.getElementById("cis"+(i+1)).className="cislo1";
document.getElementById("btn"+(i+1)).innerHTML="VYPNI";
}
}
}
}
}
}
//Změna barvy tlacitka Nabijeni Baterie v závislosti na hodnote ram[131]
function reqIbComplete(){
if(reqIb.readyState == 4){
if(reqIb.status == 200){
var rE=reqIb.responseText.split("|");
if (rE[0]==0) {
document.getElementById("Icis").className="cislo10";
document.getElementById("Ibtn").innerHTML="NABIJIM";
} else {
document.getElementById("Icis").className="cislo11";
document.getElementById("Ibtn").innerHTML="VYBIJIM";
}
}
}
}
//Hodnoty ram[139] - ram[146]
function reqRamComplete(){
if(reqRam.readyState == 4){
if(reqRam.status == 200){
var rE=reqRam.responseText.split("|");
document.getElementById("ram139").innerHTML=rE[0]/100+" W";
document.getElementById("ram140").innerHTML=rE[1]/100+" W";
document.getElementById("ram141").innerHTML=rE[2]+" %";
document.getElementById("ram142").innerHTML=rE[3]/1000+" A";
document.getElementById("ram143").innerHTML=rE[4]/1000+" A";
document.getElementById("ram144").innerHTML=rE[5]/1000+" V";
document.getElementById("ram145").innerHTML=rE[6]/1000+" V";
document.getElementById("ram146").innerHTML=rE[7]/100+" °C";
}
}
}
//rele
function reqReleComplete(){
if(reqRele.readyState == 4){
if(reqRele.status == 200){
var rE=reqRele.responseText.split("|");
for (i=1;i<=4;i++) {
if (rE[i-1]==0) {
document.getElementById("rs"+i).className="cislo0";
document.getElementById("rb"+i).innerHTML="ZAPNI";
} else {
document.getElementById("rs"+i).className="cislo1";
document.getElementById("rb"+i).innerHTML="VYPNI";
}
}
}
}
}
//ventilator
function reqVENComplete(){
if(reqVEN.readyState == 4){
if(reqVEN.status == 200){
var rE=reqVEN.responseText.split("|");
document.getElementById("sys146").value=rE[0];
document.getElementById("sys147").value=rE[1];
}
}
}
//vykony
function reqS0Complete(){
if(reqS0.readyState == 4){
if(reqS0.status == 200){
var rE=reqS0.responseText.split("|");
document.getElementById("p1a").innerHTML=rE[5];
document.getElementById("p1c").innerHTML=rE[5];
document.getElementById("p1d").innerHTML=rE[5];
document.getElementById("a1").innerHTML=rE[8];
document.getElementById("c1").innerHTML=rE[6];
document.getElementById("o1").innerHTML=rE[9];
document.getElementById("p2a").innerHTML=rE[12];
document.getElementById("p2c").innerHTML=rE[12];
document.getElementById("p2d").innerHTML=rE[12];
document.getElementById("a2").innerHTML=rE[15];
document.getElementById("c2").innerHTML=rE[13];
document.getElementById("o2").innerHTML=rE[16];
document.getElementById("p3a").innerHTML=rE[19];
document.getElementById("p3c").innerHTML=rE[19];
document.getElementById("p3d").innerHTML=rE[19];
document.getElementById("a3").innerHTML=rE[22];
document.getElementById("c3").innerHTML=rE[20];
document.getElementById("o3").innerHTML=rE[23];
document.getElementById("p4a").innerHTML=rE[26];
document.getElementById("p4c").innerHTML=rE[26];
document.getElementById("a4").innerHTML=rE[29];
document.getElementById("c4").innerHTML=rE[27];
}
}
}
//AD + cas + IP
function reqADComplete(){
if(reqAD.readyState == 4){
if(reqAD.status == 200){
var rE=reqAD.responseText.split("|");
document.getElementById("ad1").innerHTML=rE[12];
document.getElementById("ad2").innerHTML=rE[13];
document.getElementById("ad3").innerHTML=rE[14];
document.getElementById("ad4").innerHTML=rE[15];
document.getElementById("cas").innerHTML=rE[17];
document.getElementById("ip").innerHTML=rE[16];
}
}
}
//D0 + teploty
function reqTempComplete(){
if(reqTemp.readyState == 4){
if(reqTemp.status == 200){
if (reqTemp.responseText!='') {
var rE=reqTemp.responseText.split("|");
if (rE[0]==0) {
document.getElementById('ds0').className="cislo0";
document.getElementById('db0').innerHTML="ZAPNI";
} else {
document.getElementById('ds0').className="cislo1";
document.getElementById('db0').innerHTML="VYPNI";
}
var cidlo='';
for (i=1;i<=16;i++) {
cidlo='temp'+i;
pom=rE[i+8]/100;
if (pom>200) {
document.getElementById(cidlo).innerHTML="";
} else {
pom=pom.toFixed(2)
document.getElementById(cidlo).innerHTML=pom+" °C";
}
}
}
}
}
}
//Statistiky
function reqDENMESROKComplete(){
if(reqDENMESROK.readyState == 4){
if(reqDENMESROK.status == 200){
var rE=reqDENMESROK.responseText.split("|");
document.getElementById("sp_den_cez").innerHTML=rE[0]/1000+" kWh";
document.getElementById("vy_den_st").innerHTML=rE[1]/1000+" kWh";
document.getElementById("vy_den_mppt").innerHTML=rE[2]/10000000+" kWh";
document.getElementById("sp_den_bat").innerHTML=rE[3]/10000000+" kWh";
document.getElementById("sp_den_do").innerHTML=rE[4]/1000000+" kWh";
document.getElementById("sp_mes_cez").innerHTML=rE[5]/1000+" kWh";
document.getElementById("vy_mes_st").innerHTML=rE[6]/1000+" kWh";
document.getElementById("vy_mes_mppt").innerHTML=rE[7]/10000000+" kWh";
document.getElementById("sp_mes_bat").innerHTML=rE[8]/10000000+" kWh";
document.getElementById("sp_mes_do").innerHTML=rE[9]/1000000+" kWh";
document.getElementById("sp_rok_cez").innerHTML=rE[10]/1000+" kWh";
document.getElementById("vy_rok_st").innerHTML=rE[11]/1000+" kWh";
document.getElementById("vy_rok_mppt").innerHTML=rE[12]/10000000+" kWh";
document.getElementById("sp_rok_bat").innerHTML=rE[13]/10000000+" kWh";
document.getElementById("sp_rok_do").innerHTML=rE[14]/1000000+" kWh";
}
}
}
//smycka pro nacitani hodnot - timeout 2000
function sdsps(){
req232a=false;
req232b=false;
reqIb=false;
reqRele=false;
reqS0=false;
reqAD=false;
reqTemp=false;
reqRam=false;
reqVEN=false;
regDENMESROK=false;
if(window.XMLHttpRequest){
req232a=new XMLHttpRequest();
req232b=new XMLHttpRequest();
reqIb=new XMLHttpRequest();
reqRele=new XMLHttpRequest();
reqS0=new XMLHttpRequest();
reqAD=new XMLHttpRequest();
reqTemp=new XMLHttpRequest();
reqRam=new XMLHttpRequest();
reqVEN=new XMLHttpRequest();
reqDENMESROK=new XMLHttpRequest();
}
else if (window.ActiveXObject){
req232a=new ActiveXObject("Microsoft.XMLHTTP");
req232b=new ActiveXObject("Microsoft.XMLHTTP");
reqIb=new ActiveXObject("Microsoft.XMLHTTP");
reqRele=new ActiveXObject("Microsoft.XMLHTTP");
reqS0=new ActiveXObject("Microsoft.XMLHTTP");
reqAD=new ActiveXObject("Microsoft.XMLHTTP");
reqTemp=new ActiveXObject("Microsoft.XMLHTTP");
reqRam=new ActiveXObject("Microsoft.XMLHTTP");
reqVEN=new ActiveXObject("Microsoft.XMLHTTP");
reqDENMESROK=new ActiveXObject("Microsoft.XMLHTTP");
}
//rs232a - 3 pozic
if (req232a){
req232a.open("GET", "get_ram[111]?rn=3&rand="+Math.random(), true);
req232a.onreadystatechange = req232aComplete;
req232a.send(null);
}
//rs232b - 4 - 16 pozice
if (req232b){
req232b.open("GET", "get_ram[111]?rn=16&rand="+Math.random(), true);
req232b.onreadystatechange = req232bComplete;
req232b.send(null);
}
//Tlacitko mereni proudu
if (reqRam){
reqIb.open("GET", "get_ram[131]?rn=1&rand="+Math.random(), true);
reqIb.onreadystatechange = reqIbComplete;
reqIb.send(null);
}
//Hodnoty ram[139] - ram[146]
if (reqRam){
reqRam.open("GET", "get_ram[139]?rn=8&rand="+Math.random(), true);
reqRam.onreadystatechange = reqRamComplete;
reqRam.send(null);
}
//rele
if (reqRele){
reqRele.open("GET", "get_sys[231]?rn=4&rand="+Math.random(), true);
reqRele.onreadystatechange = reqReleComplete;
reqRele.send(null);
}
//ventilator
if (firstTime) {
firstTime=false;
if (reqVEN){
reqVEN.open("GET", "get_sys[146]?rn=2&rand="+Math.random(), true);
reqVEN.onreadystatechange = reqVENComplete;
reqVEN.send(null);
}
}
//vykony
if (reqS0){
reqS0.open("GET", "cgi_dyeA?rand="+Math.random(), true);
reqS0.onreadystatechange = reqS0Complete;
reqS0.send(null);
}
//AD
if (reqAD){
reqAD.open("GET", "cgi_dys?rand="+Math.random(), true);
reqAD.onreadystatechange = reqADComplete;
reqAD.send(null);
}
//D0 a teploty
if (reqTemp){
//301 je D0, 310 jsou teploty
reqTemp.open("GET", "get_sys[301]?rn=26&rand="+Math.random(), true);
reqTemp.onreadystatechange = reqTempComplete;
reqTemp.send(null);
}
//Statistiky
if (reqDENMESROK){
reqDENMESROK.open("GET", "get_ram[180]?rn=15&rand="+Math.random(), true);
reqDENMESROK.onreadystatechange = reqDENMESROKComplete;
reqDENMESROK.send(null);
}
t=setTimeout("sdsps()",1000);
}
var sub=false;
function getSub(){
sub=false;
if(window.XMLHttpRequest){
sub=new XMLHttpRequest();
}
else if(window.ActiveXObject){
sub=new ActiveXObject("Microsoft.XMLHTTP");
}
}
function reqSetComplete(){
if(sub.readyState==4){
if(sub.status==200){;}
}
}
function sdsc_S(sysn,val){
if (!sub){getSub();};
sub.open("GET", "sdscep?sys"+sysn+"="+val, true);
sub.onreadystatechange=reqSetComplete;
sub.send(null);
firstTime=true; //po vypnuti nacist data
}
function sdsc_S_ev(sysn){
if (!sub){getSub();};
aa=document.getElementById("sys"+sysn).value;
sub.open("GET", "sdscep?sys"+sysn+"="+aa, true);
sub.onreadystatechange=reqSetComplete;
sub.send(null);
firstTime=true; //po vypnuti nacist data
}
</script>
</head>
<body onLoad="sdsps();">
<div id="toppanel">
<div id="header">
<h1>Laštovičkova ostrovní fotovoltaická elektrárna s SDS-MACRO a panelem QUIDO ovládaným přes RS485</h1>
</div>
<div id="control">
<fieldset class="rs232">
<legend>Ovládaní relé modulu QUIDO</legend>
<span id="cis1" class="cislo0">upc</span><a id="btn1" class=tlacitko href="JavaScript:void(0);" title="Restart 12V Modem UPC" onclick="javascript:sdsc_S(141,'1');">RESTART</a>
<span id="cis2" class="cislo0">rou</span><a id="btn2" class=tlacitko href="JavaScript:void(0);" title="Restart 12V Router ZyXEL" onclick="javascript:sdsc_S(141,'2');">RESTART</a>
<span id="cis3" class="cislo0">sds</span><a id="btn3" class=tlacitko href="JavaScript:void(0);" title="<Restart 12V SDS>" onclick="javascript:sdsc_S(141,'3');">RESTART</a>
<span id="cis4" class="cislo0">swi</span><a id="btn4" class=tlacitko href="JavaScript:void(0);" title="12V Switch" onclick="javascript:sdsc_S(141,'4');">ZAPNI</a>
<span id="cis5" class="cislo0">rel</span><a id="btn5" class=tlacitko href="JavaScript:void(0);" title="12V IP Relé" onclick="javascript:sdsc_S(141,'5');">ZAPNI</a>
<span id="cis6" class="cislo0">EEE</span><a id="btn6" class=tlacitko href="JavaScript:void(0);" title="<12V PC-EEE>" onclick="javascript:sdsc_S(141,'6');">ZAPNI</a>
<span id="cis7" class="cislo0">B1</span><a id="btn7" class=tlacitko href="JavaScript:void(0);" title="<Hlavni Baterie>" onclick="javascript:sdsc_S(141,'7');">ZAPNI</a>
<span id="cis8" class="cislo0">B2</span><a id="btn8" class=tlacitko href="JavaScript:void(0);" title="<Zalozni Baterie>" onclick="javascript:sdsc_S(141,'8');">ZAPNI</a>
<span id="cis9" class="cislo0">TV</span><a id="btn9" class=tlacitko href="JavaScript:void(0);" title="<12V Televize>" onclick="javascript:sdsc_S(141,'9');">ZAPNI</a>
<span id="cis10" class="cislo0">stri</span><a id="btn10" class=tlacitko href="JavaScript:void(0);" title="Zapni Střídač" onclick="javascript:sdsc_S(141,'10');">ZAPNI</a>
<span id="cis11" class="cislo0">za2</span><a id="btn11" class=tlacitko href="JavaScript:void(0);" title="<220V Záloha 2>" onclick="javascript:sdsc_S(141,'11');">ZAPNI</a>
<span id="cis12" class="cislo0">lam</span><a id="btn12" class=tlacitko href="JavaScript:void(0);" title="<220V Lampička>" onclick="javascript:sdsc_S(141,'12');">ZAPNI</a>
<span id="cis13" class="cislo0">pc</span><a id="btn13" class=tlacitko href="JavaScript:void(0);" title="<220V PC>" onclick="javascript:sdsc_S(141,'13');">ZAPNI</a>
<span id="cis14" class="cislo0">mo</span><a id="btn14" class=tlacitko href="JavaScript:void(0);" title="220V Monitor" onclick="javascript:sdsc_S(141,'14');">ZAPNI</a>
<span id="cis15" class="cislo0">hdd</span><a id="btn15" class=tlacitko href="JavaScript:void(0);" title="220V Externí HDD" onclick="javascript:sdsc_S(141,'15');">ZAPNI</a>
<span id="cis16" class="cislo0">zas</span><a id="btn16" class=tlacitko href="JavaScript:void(0);" title="220V Zásuvka" onclick="javascript:sdsc_S(141,'16');">ZAPNI</a>
</fieldset>
<fieldset>
<legend>Ovládaní relé SDS a D0</legend>
<span id="rs1" class="cislo0">WD</span><a id="rb1" class=tlacitko href="JavaScript:void(0);" title="WATCHDOG PCDUINO" onclick="javascript:sdsc_S(143,'1');">ZAPNI</a>
<span id="rs2" class="cislo0">Ven</span><a id="rb2" class=tlacitko href="JavaScript:void(0);" title="Ventilátor rozvadec" onclick="javascript:sdsc_S(143,'2');">ZAPNI</a>
<span id="rs3" class="cislo0">StO</span><a id="rb3" class=tlacitko href="JavaScript:void(0);" title="Studer výstup" onclick="javascript:sdsc_S(143,'3');">ZAPNI</a>
<span id="rs4" class="cislo0">StI</span><a id="rb4" class=tlacitko href="JavaScript:void(0);" title="Studer vstup (DS)" onclick="javascript:sdsc_S(143,'4');">ZAPNI</a>
<span id="ds0" class="cislo0">D0</span><a id="db0" class=tlacitko href="JavaScript:void(0);" title="Ovládání d0" onclick="javascript:sdsc_S(143,'5');">ZAPNI</a>
<p class=col1 >_______________ StO Zapne při <label class=col1 id="ram144">0.00 V</label></p>
<p class=col1 >_______________ StO Vypne při <label class=col1 id="ram145">0.00 V</label></p>
</fieldset>
<fieldset>
<legend>Nastaveni spínání ventilátoru dle teploty</legend>
<br>
<p class=col1>
<label>Ventilátor při</label>
<input class=pwm type="text" id="sys147" name="sys147" value="" maxlength="2" onChange="javascript:sdsc_S_ev(147)">°C
<input type="hidden" value="">
<a href="JavaScript:void(0);" title="ventilátor zapni" onclick="javascript:sdsc_S_ev(147);">ZAPNI</a>
<label>. .</label>
<input class=pwm type="text" id="sys146" name="sys146" value="" maxlength="2" onChange="javascript:sdsc_S_ev(146)">°C
<input type="hidden" value="">
<a href="JavaScript:void(0);" title="ventilátor vypni" onclick="javascript:sdsc_S_ev(146);">VYPNI</a>
</p>
</fieldset>
<fieldset>
<legend>Spotřeba energie</legend>
<p class=col1><label id="p1a">Elektroměr 1.</label>-Aktuální:<label class=col2 id="a1">0.000 kW</label></p>
<p class=col1><label id="p1c">Elektroměr 1.</label>-Celková:<label class=col2 id="c1">0.000 kWh</label></p>
<p class=col1><label id="p1d">Elektroměr 1.</label>-Cena:<label class=col2 id="o1">00.00 Kč</label></p>
<hr />
<p class=col1><label id="p3a">Elektroměr 3.</label>-Aktuální:<label class=col2 id="a3">0.000 kW</label></p>
<p class=col1><label id="p3c">Elektroměr 3.</label>-Celková:<label class=col2 id="c3">0.000 kWh</label></p>
<p class=col1><label id="p3d">Elektroměr 3.</label>-Cena:<label class=col2 id="o3">00.00 Kč</label></p>
<hr />
<p class=col1><label id="p2a">Elektroměr 2.</label>-Aktuální:<label class=col2 id="a2">0.000 kW</label></p>
<p class=col1><label id="p2c">Elektroměr 2.</label>-Celková:<label class=col2 id="c2">0.000 kWh</label></p>
<p class=col1><label id="p2d">Elektroměr 2.</label>-Cena:<label class=col2 id="o2">00.00 Kč</label></p>
</fieldset>
<fieldset>
<legend>Statistiky FVE</legend>
<p class=col1>Spotřeba-ČEZ za 24 hod: <label class=col2 id="sp_den_cez">0.000 kWh</label></p>
<p class=col1>Spotřeba-DC za 24 hod: <label class=col2 id="sp_den_bat">0.000 kWh</label></p>
<p class=col1>Výroba-střídač za 24 hod: <label class=col2 id="vy_den_st">0.000 kWh</label></p>
<p class=col1>Výroba-DC (MPPT) za 24 hod: <label class=col2 id="vy_den_mppt">0.000 kWh</label></p>
<p class=col1>Nepoužito za 24h: <label class=col2 id="sp_den_do">0.000 kWh</label></p>
<hr />
<p class=col1>Spotřeba-ČEZ za měsíc: <label class=col2 id="sp_mes_cez">0.000 kWh</label></p>
<p class=col1>Spotřeba-DC za měsíc: <label class=col2 id="sp_mes_bat">0.000 kWh</label></p>
<p class=col1>Výroba-střídač za měsíc: <label class=col2 id="vy_mes_st">0.000 kWh</label></p>
<p class=col1>Výroba-DC (MPPT) za měsíc: <label class=col2 id="vy_mes_mppt">0.000 kWh</label></p>
<p class=col1>Nepoužito za měsíc: <label class=col2 id="sp_mes_do">0.000 kWh</label></p>
<hr />
<p class=col1>Spotřeba-ČEZ za rok: <label class=col2 id="sp_rok_cez">0.000 kWh</label></p>
<p class=col1>Spotřeba-DC za rok: <label class=col2 id="sp_rok_bat">0.000 kWh</label></p>
<p class=col1>Výroba-střídač za rok: <label class=col2 id="vy_rok_st">0.000 kWh</label></p>
<p class=col1>Výroba-DC (MPPT) za rok: <label class=col2 id="vy_rok_mppt">0.000 kWh</label></p>
<p class=col1>Nepoužito za rok: <label class=col2 id="sp_rok_do">0.000 kWh</label></p>
</fieldset>
<fieldset>
<legend>Aktuální čas + Stav IP Watchdog EGON</legend>
<p class=col1>Aktuální čas: <label class=col2 id="cas">00:00:00 00.00.0000</label></p>
<p class=col1>Watchdog na server: <label class=col2 id="ip">000.000.000.000 : 000</label></p>
</fieldset>
</div> <!-- control -->
</div> <!-- toppanel -->
<div id="bottpanel">
<div id="tempa">
<fieldset>
<legend>Předpověď počasí</legend>
<p class=col1t>
<a href="http://www.slunecno.cz/meteoradar/">
<img src="http://www.slunecno.cz/predpoved-na-web.php?obr=2&m=68&p1=0D0D0D&t1=FFFFFF&p2=BAD6FF&t2=0F0F0F&v=2" alt="Počasí radar" style="border: 0px;" />
</a></p>
</fieldset>
<fieldset>
<legend>Teplota procesoru SDS</legend>
<p class=col1>Teplota procesoru SDS<label class=col2t id="ram146">0.00 °C</label></p>
</fieldset>
<fieldset>
<legend>Teplotní čidla (sběrnice A)</legend>
<p class=col1>1. STUDER XTS 1200-24<label class=col2t id="temp1">0.00 °C</label></p>
<p class=col1>2. Rozvaděč<label class=col2t id="temp2">0.00 °C</label></p>
<p class=col1>3. STUDER VT-80<label class=col2t id="temp3">0.00 °C</label></p>
<p class=col1>4. Baterie<label class=col2t id="temp5">0.00 °C</label></p>
<hr />
<p class=col1>5. Pracovna<label class=col2t id="temp4">0.00 °C</label></p>
<hr />
<p class=col1>6. Venku<label class=col2t id="temp6">0.00 °C</label></p>
<p class=col1>7. FV Panel<label class=col2t id="temp7">0.00 °C</label></p>
<hr />
<p class=col1>8.<label class=col2t id="temp8">0.00 °C</label></p>
<p class=col1>9.<label class=col2t id="temp9">0.00 °C</label></p>
<p class=col1>10.<label class=col2t id="temp10">0.00 °C</label></p>
<p class=col1>11.<label class=col2t id="temp11">0.00 °C</label></p>
<p class=col1>12.<label class=col2t id="temp12">0.00 °C</label></p>
<p class=col1>13.<label class=col2t id="temp13">0.00 °C</label></p>
<p class=col1>14.<label class=col2t id="temp14">0.00 °C</label></p>
<p class=col1>15.<label class=col2t id="temp15">0.00 °C</label></p>
<p class=col1>16.<label class=col2t id="temp16">0.00 °C</label></p>
</fieldset>
<fieldset>
<legend>Analogové hodnoty FVE</legend>
<p class=col1>AD1-Napětí baterie LiFeYPO4 <label class=col2t id="ad1">0.00 V</label></p>
<p class=col1>AD2-Napětí baterie Pb <label class=col2t id="ad2">0.00 V</label></p>
<p class=col1>AD3-Napětí čidla MPPT <label class=col2t id="ad3">0.00 V</label></p>
<p class=col1>AD4-Napětí čidla LiFeYPo4 <label class=col2t id="ad4">0.00 V</label></p>
<hr />
<p class=col1>Dobíjecí Proud za MPPT <label class=col2t id="ram142">000 W </label></p>
<span id="Icis" class=cislo10>Proud Baterie LiFeYPo4 <label class=col2t id="ram143" >NABIJENI</span>
<hr />
<p class=col1>Pmppt-Výkon za MPPT (AD1*Ifv) <label class=col2t id="ram140">000 W </label></p>
<p class=col1>Pbat-Výkon baterie (AD1*Ibat) <label class=col2t id="ram139">000 W </label></p>
<hr />
<p class=col1>Kapacita Baterie podle U bat (SOC) <label class=col2t id="ram141">000 %</label></p>
<hr />
</fieldset>
</div>
</div> <!-- bottpanel -->
<div id="footer">
<div class="content">
<p>Copyright ©2012 onlinetechnology <a href="http://192.168.1.253:333/user.htm" title="sds-micro">SDS-MAKRO</a></p>
<p>Copyright ©2012 onlinetechnology <a href="http://www.onlinetechnology.cz" title="sds-micro">onlinetechnology.cz</a></p>
<p>Copyright ©2012 onlinetechnology <a href="http://www.merenienergie.cz" title="sds-micro">merenienergie.cz</a></p>
<p>Copyright ©2012 onlinetechnology <a href="http://www.eportal.merenienergie.cz" title="eportal.merenienergie">grafy a výsledky měření na eportal.merenienergie.cz</a></p>
<p>Ostrovní elektrárny <a href="http://www.ostrovnielektrarny.cz" title="ostrovnielektrarny">Materiál na ostrovní elektrárny</a></p>
<p>PAPOUCH <a href="http://www.papouch.com"title="papouch">I/O zařízení, převodníky</a></p>
</div>
</div>
<!-- end footer -->
</body>
</html>
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků