1

Téma: [vyřešeno] Počet záznamů if

Měl bych dotaz. Do SDS MICRO Light E - R2 jsem chtěl vytvořit program, který obsahuje dost podmínek "if". Dostal jsem se na počet 23 záznamů, kdy mi program funguje bez problémů. Ale jakmile přidám další a nahraju ho do SDS tak přestane fungovat.
Pokud jich přidám kolem 40 tak program při compilaci hlásí "coding error : invalid declaration found !"

Konkrétně jsem chtěl docílit toho aby mi SDS odečetlo hodnoty z AD1 a AD3 a vyhodnotilo rozdíl. Na základě vypočítaného rozdílu zapíše hodnotu do sys [146].

Vypadá to asi takto. Možná by se to dalo napsat jinak. Jestli má někdo nějaký nápad nepomohl by mě  jak to řešit.


proud_0
{
sys[146] = 8888;
}

proud_250
{
sys[146]=250;
}
proud_400
{
sys[146]=400;
}
proud_550
{
sys[146]=550;
}
proud_700
{
sys[146]=700;
}
proud_850
{
sys[146]=850;
}

if  (rozdil_napeti<95557)proud_0();
if    (rozdil_napeti>=95557&&rozdil_napeti<98982){sys[146]=100};
if    (rozdil_napeti>=98982&&rozdil_napeti<102407)proud_250();
if    (rozdil_napeti>=102407&&rozdil_napeti<105832)proud_400();
if    (rozdil_napeti>=105832&&rozdil_napeti<109257)proud_550();
if    (rozdil_napeti>=109257&&rozdil_napeti<112682)proud_700();
if    (rozdil_napeti>=112682&&rozdil_napeti<116107)proud_850();

2

Re: [vyřešeno] Počet záznamů if

To co vidím v prvním příspěvku, samozřejmě předpokládám že se jedná o vyříznuté kousky jednoho programu.
Tzn. ty "if" jsou v nějaké funkci, např. main().

Jsou tam chyby v textu programu, který vidím ve výpisu. Po jejich odstranění lze dát "ifů" klidně sto a funguje to.

Především: schválně kde je rozdíl (následující řádek je už správně):

if (rozdil_napeti>=95557&&rozdil_napeti<98982){sys[146]=100;};
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: [vyřešeno] Počet záznamů if

Děkuji za pomoc. Ano jedná se o výpis z kusu programu. Uvědomil jsem si, že jsem výše nakopíroval jednu z verzí co jsem zkoušel. Konkrétně právě tento řádek "if    (rozdil_napeti>=95557&&rozdil_napeti<98982){sys[146]=100}; "  Vidím rozdíl v tom, že jsem téměř na konci neudělal středník. Nicméně pokud jsem Vámi upravený if nakopíroval do programu tak mi to hází chybu  "507: coding error : error in IF code: > invalid definition for true-IF-result"

Dám sem celý program včetně všech if záznamů který bych potřeboval. V tomto stavu mi to hodí chybu v řádku "361: coding error : invalid declaration found !"  Pokud odeberu if až k proud_3400(); tak to hodí chybu u "if    (rozdil_napeti>=95557&&rozdil_napeti<98982){sys[146]=100}; " Jinak pokud tento if vymažu tak program funguje tak jak má, ale pouze s omezeným počten if. Berte to, že jsem začátečník. Věřím, že tam najdete zbytečně složitě napsané příkazy.

#define YER  sys[7]
#define MON  sys[6]
#define DAY  sys[5]
#define HRS  sys[8]
#define MIN  sys[9]
#define SEC  sys[10]
#define GMT  sys[26]



var napetiAD1, napetiAD1_1, napetiAD1_vypocet, napetiAD1_vypocet1, AD1_konstanta;
var napetiAD3, napetiAD3_1, napetiAD3_vypocet, napetiAD3_vypocet1, AD3_konstanta;
var napeti1, napeti_solar,stred_vypocet, stred_vypocet1, napeti_solar_vypocet, napeti_solar_vypocet1;
var horni, horni_vypocet, horni_vypocet1;
var dolni, dolni_vypocet, dolni_vypocet1;
var stred;
var uz_jsem_poslal_email_pro_rele_1, uz_jsem_poslal_email_pro_rele_1vyp;
var uz_jsem_poslal_email_pro_rele_2, uz_jsem_poslal_email_pro_rele_2vyp;
var cas_sepnuti_rele_1;
var rozdil_napeti, rozdil_napeti1;
var lc,zc,dow,con,coff,CAS,PON1,POF1,PON2,POF2,PON3,POF3,PON4,POF4;



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Nastavení datumu letní zimní čas.
summer
{
  if (( MON > 3 ) && ( MON < 10 )) { GMT = 2; return; }
  if (( MON < 3 ) || ( MON > 10 )) { GMT = 1; return; }
  if ( MON ==  3 )
  {
    lc = 31 - (( 5 * YER / 4 + 4 ) % 7 );
    if ( DAY >  lc ) { GMT = 2; return; }
    if (( DAY == lc ) && ( HRS >= 2 )) { GMT = 2; }
  }
  if ( MON == 10 )
  {
    zc = 31 - (( 5 * YER / 4 + 1 ) % 7 );
    if ( DAY >  zc ) { GMT = 1; return; }
    if (( DAY == zc ) && ( HRS >= 3 )) { GMT = 1; }
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//pošli email pro relé 1 zap.
posli_email_pro_rele_1
{
smtp_send('lada@trachemyska.cz', 'Zaplo se rele 1',
                                 'Zapnula se nabijecka, protoze napeti na baterii je ',napetiAD1_vypocet,',',napetiAD1_vypocet1,' V a to je min nez nastavena mez ',dolni_vypocet,',',dolni_vypocet1,' V.\n\n',
                                 'Napeti na solarnim panelu je ',napetiAD3_vypocet,',',napetiAD3_vypocet1,' V.\n\n',
                                 'Aktualni cas udalosti je ',DAY,'.',MON,'.',YER,' ',HRS,':',MIN,'.\n\n',
                                 'Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n');
                                 
//zapamatuji si ze uz jsem to poslal, at to neposila milion emailu za sebou
uz_jsem_poslal_email_pro_rele_1 = 1;
}

//pošli email pro relé 1 vyp.
posli_email_pro_rele_1vyp
{
smtp_send('lada@trachemyska.cz', 'Vyplo se rele 1',
                                 'Vypnula se nabijecka, protoze napeti na baterii je ',napetiAD1_vypocet,',',napetiAD1_vypocet1,' V a to je vic nez nastavena horni mez ',horni_vypocet,',',horni_vypocet1,' V.\n\n',
                                 'A nebo napeti na baterii je vetsi nez ',stred_vypocet,',',stred_vypocet1,' V  a zaroven na vystupu solarniho panelu je vetsi nez ',napeti_solar_vypocet,',',napeti_solar_vypocet1,' V.\n\n',  
                                 'Napeti na solarnim panelu je ',napetiAD3_vypocet,',',napetiAD3_vypocet1,' V.\n\n',
                                 'Aktualni cas udalosti je ',DAY,'.',MON,'.',YER,' ',HRS,':',MIN,'.\n\n',
                                 'Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n');
                                 
//zapamatuji si ze uz jsem to poslal, at to neposila milion emailu za sebou
uz_jsem_poslal_email_pro_rele_1vyp = 1;
}

sepni_rele_1
{
//provede
sys[231] = 1;

//posilal jsem uz ?
if (uz_jsem_poslal_email_pro_rele_1 == 0) posli_email_pro_rele_1();

//povolim poslani emailu pro pristi vypnutí rele 1
uz_jsem_poslal_email_pro_rele_1vyp = 0;

// Nastavím zpoždění aby se mi relé nerozpojilo i když stoupne napětí.

sys[64] = cas_sepnuti_rele_1 * 60; //nastav odpočítávač na X minut (od tohoto okamžiku, kdy do sys[64] zapíšeme hodnotu X)
label cekam1:
   if (sys[64] != 0) goto cekam1; //dokud je sys[64] nenulové (neuplynuly nastavené X minut), skoč na label "cekam"

}

vypni_rele_1
{
//provede
sys[231] = 0;

//posilal jsem uz ?
if (uz_jsem_poslal_email_pro_rele_1vyp == 0) posli_email_pro_rele_1vyp();

//povolim poslani emailu pro pristi sepnuti rele 1 
uz_jsem_poslal_email_pro_rele_1 = 0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//pošli email pro relé 2 zap.
posli_email_pro_rele_2
{
smtp_send('lada@trachemyska.cz', 'Zaplo se rele 2',
                                 'Prepla se spotreba na nizky tarif.\n\n',
                                 'Aktualni cas udalosti je ',DAY,'.',MON,'.',YER,' ',HRS,':',MIN,'.\n\n',
                                 'Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n');
                                 
//zapamatuji si ze uz jsem to poslal, at to neposila milion emailu za sebou
uz_jsem_poslal_email_pro_rele_2 = 1;
}

//pošli email pro relé 1 vyp.
posli_email_pro_rele_2vyp
{
smtp_send('lada@trachemyska.cz', 'Vyplo se rele 2',
                                 'Prepla se spotreba na vysoky tarif.\n\n',
                                 'Aktualni cas udalosti je ',DAY,'.',MON,'.',YER,' ',HRS,':',MIN,'.\n\n',
                                 'Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n');
                                 
//zapamatuji si ze uz jsem to poslal, at to neposila milion emailu za sebou
uz_jsem_poslal_email_pro_rele_2vyp = 1;
}

sepni_rele_2
{
//provede
sys[232] = 1;

//posilal jsem uz ?
if (uz_jsem_poslal_email_pro_rele_2 == 0) posli_email_pro_rele_2();

//povolim poslani emailu pro pristi vypnutí rele 1
uz_jsem_poslal_email_pro_rele_2vyp = 0;

}

vypni_rele_2
{
//provede
sys[232] = 0;

//posilal jsem uz ?
if (uz_jsem_poslal_email_pro_rele_2vyp == 0) posli_email_pro_rele_2vyp();

//povolim poslani emailu pro pristi sepnuti rele 1 
uz_jsem_poslal_email_pro_rele_2 = 0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
proud_0
{
sys[146] = 8888;
}
proud_250
{
sys[146]=250;
}
proud_400
{
sys[146]=400;
}
proud_550
{
sys[146]=550;
}
proud_700
{
sys[146]=700;
}
proud_850
{
sys[146]=850;
}
proud_1000
{
sys[146]=1000;
}
proud_1150
{
sys[146]=1150;
}
proud_1300
{
sys[146]=1300;
}
proud_1450
{
sys[146]=1450;
}
proud_1600
{
sys[146]=1600;
}
proud_1750
{
sys[146]=1750;
}
proud_1900
{
sys[146]=1900;
}
proud_2050
{
sys[146]=2050;
}
proud_2200
{
sys[146]=2200;
}
proud_2350
{
sys[146]=2350;
}
proud_2500
{
sys[146]=2500;
}
proud_2650
{
sys[146]=2650;
}
proud_2800
{
sys[146]=2800;
}
proud_2950
{
sys[146]=2950;
}
proud_3100
{
sys[146]=3100;
}
proud_3250
{
sys[146]=3250;
}
proud_3400
{
sys[146]=3400;
}
proud_3550
{
sys[146]=3550;
}
proud_3700
{
sys[146]=3700;
}
proud_3850
{
sys[146]=3850;
}
proud_4000
{
sys[146]=4000;
}
proud_4150
{
sys[146]=4150;
}
proud_4300
{
sys[146]=4300;
}
proud_4450
{
sys[146]=4450;
}
proud_4600
{
sys[146]=4600;
}
proud_4750
{
sys[146]=4750;
}
proud_4900
{
sys[146]=4900;
}
proud_5050
{
sys[146]=5050;
}
proud_5200
{
sys[146]=5200;
}
proud_5350
{
sys[146]=5350;
}
proud_5500
{
sys[146]=5500;
}
proud_5650
{
sys[146]=5650;
}
proud_5800
{
sys[146]=5800;
}
proud_5950
{
sys[146]=5950;
}
proud_6100
{
sys[146]=6100;
}
proud_6250
{
sys[146]=6250;
}
proud_6400
{
sys[146]=6400;
}
proud_6550
{
sys[146]=6550;
}
proud_6700
{
sys[146]=6700;
}
proud_6850
{
sys[146]=6850;
}
proud_7000
{
sys[146]=7000;
}
proud_7150
{
sys[146]=7150;
}
proud_7300
{
sys[146]=7300;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



main
{
//vychozi stav
vypni_rele_1();
vypni_rele_2();
summer();                 //korekce casu podle aktualniho datumu
echoclear(0);             //smazeme konzolu  ovladani();

// Nastavení při startu proměnných
sys[140] = 390;
sys[141] = 462;
sys[142] = 446;
sys[143] = 460;
sys[144] = 1;


//pockame 20 sekund, az nabehne cely system
wait(20000);


//------------------------------------------------------------

//hlavni smycka, ve ktere se vykonava proces
label smycka_rizeni:


dow = ((sys[4] / 86400) + 4) % 7;
//udelame z casu cislo HHMM
CAS=HRS*100+MIN;

//prevezmeme pozadavky na napětí V  

dolni = sys[140];  //mez kdy má zapnout relé pro nabíjení
horni = sys[141];  //mez kdy má vypnout relé nabirá baterie
stred = sys[142];  // mez kdy se má vypnout relé pro nabíjení pokud je překročena hodnota na napeti_solar
napeti_solar = sys[143];   // napětí soláru kdy se má vypnout relé pro nabíjení baterie

cas_sepnuti_rele_1 = sys[144]; // zadat čas v minutách pro zpoždění relé 1

dolni_vypocet = ((dolni * 100) / (AD1_konstanta));  // vynásobit 100 aby bylo možno dělit celou nedělenou konstantou 
dolni_vypocet1 = ((dolni * 10000) / (AD1_konstanta)) % 100;  // zobrazení cifry za desetinou čárkou

horni_vypocet = ((horni * 100) / (AD1_konstanta));    // vynásobit 100 aby bylo možno dělit celou nedělenou konstantou 
horni_vypocet1 = ((horni * 10000) / (AD1_konstanta)) % 100;  // zobrazení cifry za desetinou čárkou

stred_vypocet = ((stred * 100) / (AD1_konstanta));    // vynásobit 100 aby bylo možno dělit celou nedělenou konstantou 
stred_vypocet1 = ((stred * 10000) / (AD1_konstanta)) % 100;  // zobrazení cifry za desetinou čárkou

napeti_solar_vypocet = ((napeti_solar * 100) / (AD3_konstanta));    // vynásobit 100 aby bylo možno dělit celou nedělenou konstantou 
napeti_solar_vypocet1 = ((napeti_solar * 10000) / (AD3_konstanta)) % 100;  // zobrazení cifry za desetinou čárkou


//napětí je bráno z cidla AD1 = sys[431]
napetiAD1 = sys[431]; 
napetiAD1_1 = napetiAD1 * 100;
AD1_konstanta = sys[436];
napetiAD1_vypocet = napetiAD1 / (AD1_konstanta / 100);
napetiAD1_vypocet1 = ((napetiAD1 * 10000 / (AD1_konstanta)) % 100;  // zobrazení cifry za desetinou čárkou

//napětí je bráno z cidla AD3 = sys[433]
napetiAD3 = sys[433];
napetiAD3_1 = napetiAD3 * 100; 
AD3_konstanta = sys[444];
napetiAD3_vypocet = napetiAD3 / (AD3_konstanta / 100);
napetiAD3_vypocet1 = ((napetiAD3 * 10000 / (AD3_konstanta)) % 100;  // zobrazení cifry za desetinou čárkou

//podle aktualniho napětí se rozhodnu
if (napetiAD1 < dolni) sepni_rele_1();
if ((napetiAD1 > stred) && (napetiAD3 > napeti_solar)) vypni_rele_1();
if (napetiAD1 > horni) vypni_rele_1();


//Nastavení časového úseku pro nízký tarif relé 2
    PON1=1159; POF1=2359;   //Páte zap
    PON2=0; POF2=2359;  //Sobota zap
    PON3=0; POF3=2159;  //Neděle zap
    
//Přepínání mezi vysokým a nízkým tarifem.
if ((CAS>=PON1 && CAS<=POF1) && (dow==5)) sepni_rele_2();
if ((CAS>=PON2 && CAS<=POF2) && (dow==6)) sepni_rele_2();
if ((CAS>=PON3 && CAS<=POF3) && (dow==0)) sepni_rele_2();
if ((CAS<PON1) && (dow==5)) vypni_rele_2();
if ((CAS>POF3) && (dow==0)) vypni_rele_2();
if (dow==1) vypni_rele_2();
if (dow==2) vypni_rele_2();
if (dow==3) vypni_rele_2();
if (dow==4) vypni_rele_2();

//Výpočet pro zobrazení proudu ze solárního panelu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//Vypočítám rozdíl mezi napětím AD1 (napětí baterie) a AD3 (napětí na solárním panelu)


rozdil_napeti = (napetiAD3 - napetiAD1)*10000;
rozdil_napeti1 = (rozdil_napeti * 10) / AD1_konstanta;
sys[145] = rozdil_napeti1;



if (rozdil_napeti<955575)proud_0();
if (rozdil_napeti>=95557&&rozdil_napeti<98982){sys[146]=100;};
if (rozdil_napeti>=989825&&rozdil_napeti<1024075)proud_250();
if (rozdil_napeti>=1024075&&rozdil_napeti<1058325)proud_400();
if (rozdil_napeti>=1058325&&rozdil_napeti<1092575)proud_550();
if (rozdil_napeti>=1092575&&rozdil_napeti<1126825)proud_700();
if (rozdil_napeti>=1126825&&rozdil_napeti<1161075)proud_850();
if (rozdil_napeti>=1161075&&rozdil_napeti<1195325)proud_1000();
if (rozdil_napeti>=1195325&&rozdil_napeti<1229575)proud_1150();
if (rozdil_napeti>=1229575&&rozdil_napeti<1263825)proud_1300();
if (rozdil_napeti>=1263825&&rozdil_napeti<1298075)proud_1450();
if (rozdil_napeti>=1298075&&rozdil_napeti<1332325)proud_1600();
if (rozdil_napeti>=1332325&&rozdil_napeti<1366575)proud_1750();
if (rozdil_napeti>=1366575&&rozdil_napeti<1400825)proud_1900();
if (rozdil_napeti>=1400825&&rozdil_napeti<1435075)proud_2050();
if (rozdil_napeti>=1435075&&rozdil_napeti<1469325)proud_2200();
if (rozdil_napeti>=1469325&&rozdil_napeti<1503575)proud_2350();
if (rozdil_napeti>=1503575&&rozdil_napeti<1537825)proud_2500();
if (rozdil_napeti>=1537825&&rozdil_napeti<1572075)proud_2650();
if (rozdil_napeti>=1572075&&rozdil_napeti<1606325)proud_2800();
if (rozdil_napeti>=1606325&&rozdil_napeti<1640575)proud_2950();
if (rozdil_napeti>=1640575&&rozdil_napeti<1674825)proud_3100();
if (rozdil_napeti>=1674825&&rozdil_napeti<1709075)proud_3250();
if (rozdil_napeti>=1709075&&rozdil_napeti<1743325)proud_3400();
if (rozdil_napeti>=1743325&&rozdil_napeti<1777575)proud_3550();
if (rozdil_napeti>=1777575&&rozdil_napeti<1811825)proud_3700();
if (rozdil_napeti>=1811825&&rozdil_napeti<1846075)proud_3850();
if (rozdil_napeti>=1846075&&rozdil_napeti<1880325)proud_4000();
if (rozdil_napeti>=1880325&&rozdil_napeti<1914575)proud_4150();
if (rozdil_napeti>=1914575&&rozdil_napeti<1948825)proud_4300();
if (rozdil_napeti>=1948825&&rozdil_napeti<1983075)proud_4450();
if (rozdil_napeti>=1983075&&rozdil_napeti<2017325)proud_4600();
if (rozdil_napeti>=2017325&&rozdil_napeti<2051575)proud_4750();
if (rozdil_napeti>=2051575&&rozdil_napeti<2085825)proud_4900();
if (rozdil_napeti>=2085825&&rozdil_napeti<2120075)proud_5050();
if (rozdil_napeti>=2120075&&rozdil_napeti<2154325)proud_5200();
if (rozdil_napeti>=2154325&&rozdil_napeti<2188575)proud_5350();
if (rozdil_napeti>=2188575&&rozdil_napeti<2222825)proud_5500();
if (rozdil_napeti>=2222825&&rozdil_napeti<2257075)proud_5650();
if (rozdil_napeti>=2257075&&rozdil_napeti<2291325)proud_5800();
if (rozdil_napeti>=2291325&&rozdil_napeti<2325575)proud_5950();
if (rozdil_napeti>=2325575&&rozdil_napeti<2359825)proud_6100();
if (rozdil_napeti>=2359825&&rozdil_napeti<2394075)proud_6250();
if (rozdil_napeti>=2394075&&rozdil_napeti<2428325)proud_6400();
if (rozdil_napeti>=2428325&&rozdil_napeti<2462575)proud_6550();
if (rozdil_napeti>=2462575&&rozdil_napeti<2496825)proud_6700();
if (rozdil_napeti>=2496825&&rozdil_napeti<2531075)proud_6850();
if (rozdil_napeti>=2531075&&rozdil_napeti<2565325)proud_7000();
if (rozdil_napeti>=2565325&&rozdil_napeti<2599575)proud_7150();
if (rozdil_napeti>2633825)proud_7300();

//a porad dokola
goto smycka_rizeni;
}

init
{
    
 echo('Start programu.');
}

4

Re: [vyřešeno] Počet záznamů if

Teď už je to jasné - překačujete maximální počet funkcí, které lze v programu zadat (48).

Tzn. počet "if" není omezený, celé to skončí na tom, že od vaší "proud_5650()" a dále dojde při jejich deklaraci k překročení povoleného maximama počtu funkcí (viz okno při překladu = položka "processes: X of 48").

Řešením je napsat to tak, aby jste nepotřeboval sto funkcí na nastavení hodnoty do sys[146].
To je čistě o způsobu psaní programu. Např.

 var newProud;

 newProud = 0;
 if (rozdil_napeti < 955575) { newProud=0; };
 if (rozdil_napeti >= 95557 && rozdil_napeti < 98982) { newProud=100; };
 if (rozdil_napeti >= 989825 && rozdil_napeti < 1024075) { newProud=250; };
 if (rozdil_napeti >= 1024075 && rozdil_napeti < 1058325) { newProud=400; };
 if (rozdil_napeti >= 1058325 && rozdil_napeti < 1092575) { newProud=550; };
 if (rozdil_napeti >= 1092575 && rozdil_napeti < 1126825) { newProud=700; };
 if (rozdil_napeti >= 1126825 && rozdil_napeti < 1161075) { newProud=850; };
 // atd atd atd. kolik "if" bude potřeba, bez omezení

 // a nakonec:
 sys[146] = newProud;

 // hotovo

To volání funkcí jen pro nastavení sys[] na nějakou hodnotu je zcela zbytečné-

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: [vyřešeno] Počet záznamů if

Díky moc za pomoc.

Já si myslel, že tam bude někde v tomto zakopaný pes, protože když jsem tu funkci smazal tak to šlapalo.
Snažil jsem se i nastavit IF tak jak tu píšete   if (rozdil_napeti >= 95557 && rozdil_napeti < 98982) { newProud=100; };
ale to mi házelo chybu. Zdřejmě ten středník skoro na konci. Pokusím se to překopat tak jak radíte a snad problém bude vyřešen.  Díky moc.

6

Re: [vyřešeno] Počet záznamů if

Včera jsem to celé předělal podle Vašeho návodu a vše maká tak jak jsem si představoval. Trápil jsem se s tím celý týden.
Ještě jednou díky.

7

Re: [vyřešeno] Počet záznamů if

Měl bych ještě jeden dotaz ohledně relé. Pokud SDS vypnu a znovu zapnu Relé 1 při startu se zapne. Poté naběhne program SDS-C, který mu dá příkaz vyp. Relé 2 při startu je trvale vyp. Je to normální stav? Jak docílím toho aby Relé 1 bylo při bootu vypnuté?  Jedná se mi o to, že mi po tomto restartu Relé1 odpojí na nějakou dobu zařízení, které by mělo být v provozu.

8

Re: [vyřešeno] Počet záznamů if

Stav relé, pokud se ovládá "RUČNĚ", se ukládá do pevné (NVM) paměti.
Proto se po zapnutí načte.

Musíte ho přepnou do polohy "SDS-C" a pak by to mělo být OK.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

9

Re: [vyřešeno] Počet záznamů if

V poloze "SDS-C" jsem měl obě. Ale navedl jste mě na jednu myšlenku a vypadá to, že se mi potvrdila. Pokud dám relé ručně do polohy zap. a restartuji SDS uloží si tuto hodnotu do paměti. Potom přepnu relé do polohy "SDS-C" a výsledek je ten, že po restartu SDS se relé zapne a pak ho program "SDS-C" zase vypne.

Vyzkoušel jsem to i obráceně relé jsem dal do ruční polohy vyp. restartoval a pak zase do "SDS-C". Po druhém restartu to vypadá že při náběhu se relé už nezapne.  Je možný, že se to takto chová?

Ještě po neustálých restartech mi to hlásí chybu
77.93.211.207, DNS resolv ok
77.93.211.207, HTTP GET chyba 2

CONSOLE hlásí -  Chyba komunikace s www serverem, http: 0

Poslední záznam vidím na portálu 13.10.15 20:29:59 pak už nic. Přitom jsem žádné změny v programu nedělal.

Nemohl by jste mě poradit, kde mám hledat chybu? Do internetu by mělo SDS vidět s připojením na server by neměl být problém.

10

Re: [vyřešeno] Počet záznamů if

Ano, SDS si v pevné paměti (ta co se načítá po resetu) pamatuje poslední hodnotu z "ručního" ovládání, ale při ovládání z SDS si změny do pevné neukládá. Důvod je prostý - šetření zápisových buněk paměti - SDS totiž nemůže tušit, jak často SDS zapisuje do sys[] pro ovládání réle - a když by někdo napsal svůj program tak špatně, že by se to dělo ve smyčce pořád dokola, tak by se pamět během chvíle zničila (wear-out).
Nicméně v plánu máme i řešení této situace, ale ještě není úplně přesně dáno jak - možností je více, je potřeba provést u nás měření a vybrat nejvhodnější způsob.
Až to bude, bude to nová BETA FW.

Chyba 2 pro HTTP (viz návod na WiKi . . .) znamená "no connection", tzn. že zařízení se nemůže připojit TCP na danou IP adresu, např. proto, že server na dané IP adrese (a TCP portu) neexistuje - a nebo pro spoustu jiných důvodů, které nelze takhle na dálku říct.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

11

Re: [vyřešeno] Počet záznamů if

Děkuji za vysvětlení.