<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[SDS PLC/PAC: Měření Energie & OnlineTechnology.cz - [vyřešeno] Počet záznamů if]]></title>
		<link>https://forum.sds.an-d.cz/viewtopic.php?id=712</link>
		<atom:link href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=712&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Nejnovější příspěvky v [vyřešeno] Počet záznamů if.]]></description>
		<lastBuildDate>Thu, 15 Oct 2015 16:25:10 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5391#p5391</link>
			<description><![CDATA[<p>Děkuji za vysvětlení.</p>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Thu, 15 Oct 2015 16:25:10 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5391#p5391</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5390#p5390</link>
			<description><![CDATA[<p>Ano, SDS si v pevné paměti (ta co se načítá po resetu) pamatuje poslední hodnotu z &quot;ručního&quot; 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).<br />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.<br />Až to bude, bude to nová BETA FW.</p><p>Chyba 2 pro HTTP (viz návod na WiKi . . .) znamená &quot;no connection&quot;, 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.</p>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Thu, 15 Oct 2015 16:02:42 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5390#p5390</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5382#p5382</link>
			<description><![CDATA[<p>V poloze &quot;SDS-C&quot; 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 &quot;SDS-C&quot; a výsledek je ten, že po restartu SDS se relé zapne a pak ho program &quot;SDS-C&quot; zase vypne.</p><p>Vyzkoušel jsem to i obráceně relé jsem dal do ruční polohy vyp. restartoval a pak zase do &quot;SDS-C&quot;. Po druhém restartu to vypadá že při náběhu se relé už nezapne.&nbsp; Je možný, že se to takto chová?</p><p>Ještě po neustálých restartech mi to hlásí chybu<br />77.93.211.207, DNS resolv ok<br />77.93.211.207, HTTP GET chyba 2</p><p>CONSOLE hlásí -&nbsp; Chyba komunikace s www serverem, http: 0</p><p>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.</p><p>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.</p>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Thu, 15 Oct 2015 01:36:07 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5382#p5382</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5378#p5378</link>
			<description><![CDATA[<p>Stav relé, pokud se ovládá &quot;RUČNĚ&quot;, se ukládá do pevné (NVM) paměti.<br />Proto se po zapnutí načte.</p><p>Musíte ho přepnou do polohy &quot;SDS-C&quot; a pak by to mělo být OK.</p>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Wed, 14 Oct 2015 17:27:49 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5378#p5378</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5375#p5375</link>
			<description><![CDATA[<p>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é?&nbsp; 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.</p>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Wed, 14 Oct 2015 06:23:36 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5375#p5375</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5234#p5234</link>
			<description><![CDATA[<p>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. <br />Ještě jednou díky.</p>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Sun, 20 Sep 2015 04:54:58 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5234#p5234</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5230#p5230</link>
			<description><![CDATA[<p>Díky moc za pomoc.</p><p>Já si myslel, že tam bude někde v tomto zakopaný pes, protože když jsem tu funkci smazal tak to šlapalo. <br />Snažil jsem se i nastavit IF tak jak tu píšete&nbsp; &nbsp;if (rozdil_napeti &gt;= 95557 &amp;&amp; rozdil_napeti &lt; 98982) { newProud=100; };<br />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.&nbsp; Díky moc.</p>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Sat, 19 Sep 2015 06:58:28 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5230#p5230</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5229#p5229</link>
			<description><![CDATA[<p>Teď už je to jasné - překačujete maximální počet funkcí, které lze v programu zadat (48). </p><p>Tzn. počet &quot;if&quot; není omezený, celé to skončí na tom, že od vaší &quot;proud_5650()&quot; 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 &quot;processes: X of 48&quot;).</p><p>Řešením je napsat to tak, aby jste nepotřeboval sto funkcí na nastavení hodnoty do sys[146].<br />To je čistě o způsobu psaní programu. Např.<br /></p><div class="codebox"><pre><code> var newProud;

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

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

 // hotovo</code></pre></div><p> To volání funkcí jen pro nastavení sys[] na nějakou hodnotu je zcela zbytečné-</p>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Sat, 19 Sep 2015 06:42:17 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5229#p5229</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5227#p5227</link>
			<description><![CDATA[<p>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 &quot;if&nbsp; &nbsp; (rozdil_napeti&gt;=95557&amp;&amp;rozdil_napeti&lt;98982){sys[146]=100}; &quot;&nbsp; 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&nbsp; &quot;507: coding error : error in IF code: &gt; invalid definition for true-IF-result&quot;</p><p>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 &quot;361: coding error : invalid declaration found !&quot;&nbsp; Pokud odeberu if až k proud_3400(); tak to hodí chybu u &quot;if&nbsp; &nbsp; (rozdil_napeti&gt;=95557&amp;&amp;rozdil_napeti&lt;98982){sys[146]=100}; &quot; 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.</p><div class="codebox"><pre><code>#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 &gt; 3 ) &amp;&amp; ( MON &lt; 10 )) { GMT = 2; return; }
  if (( MON &lt; 3 ) || ( MON &gt; 10 )) { GMT = 1; return; }
  if ( MON ==  3 )
  {
    lc = 31 - (( 5 * YER / 4 + 4 ) % 7 );
    if ( DAY &gt;  lc ) { GMT = 2; return; }
    if (( DAY == lc ) &amp;&amp; ( HRS &gt;= 2 )) { GMT = 2; }
  }
  if ( MON == 10 )
  {
    zc = 31 - (( 5 * YER / 4 + 1 ) % 7 );
    if ( DAY &gt;  zc ) { GMT = 1; return; }
    if (( DAY == zc ) &amp;&amp; ( HRS &gt;= 3 )) { GMT = 1; }
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//pošli email pro relé 1 zap.
posli_email_pro_rele_1
{
smtp_send(&#039;lada@trachemyska.cz&#039;, &#039;Zaplo se rele 1&#039;,
                                 &#039;Zapnula se nabijecka, protoze napeti na baterii je &#039;,napetiAD1_vypocet,&#039;,&#039;,napetiAD1_vypocet1,&#039; V a to je min nez nastavena mez &#039;,dolni_vypocet,&#039;,&#039;,dolni_vypocet1,&#039; V.\n\n&#039;,
                                 &#039;Napeti na solarnim panelu je &#039;,napetiAD3_vypocet,&#039;,&#039;,napetiAD3_vypocet1,&#039; V.\n\n&#039;,
                                 &#039;Aktualni cas udalosti je &#039;,DAY,&#039;.&#039;,MON,&#039;.&#039;,YER,&#039; &#039;,HRS,&#039;:&#039;,MIN,&#039;.\n\n&#039;,
                                 &#039;Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n&#039;);
                                 
//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(&#039;lada@trachemyska.cz&#039;, &#039;Vyplo se rele 1&#039;,
                                 &#039;Vypnula se nabijecka, protoze napeti na baterii je &#039;,napetiAD1_vypocet,&#039;,&#039;,napetiAD1_vypocet1,&#039; V a to je vic nez nastavena horni mez &#039;,horni_vypocet,&#039;,&#039;,horni_vypocet1,&#039; V.\n\n&#039;,
                                 &#039;A nebo napeti na baterii je vetsi nez &#039;,stred_vypocet,&#039;,&#039;,stred_vypocet1,&#039; V  a zaroven na vystupu solarniho panelu je vetsi nez &#039;,napeti_solar_vypocet,&#039;,&#039;,napeti_solar_vypocet1,&#039; V.\n\n&#039;,  
                                 &#039;Napeti na solarnim panelu je &#039;,napetiAD3_vypocet,&#039;,&#039;,napetiAD3_vypocet1,&#039; V.\n\n&#039;,
                                 &#039;Aktualni cas udalosti je &#039;,DAY,&#039;.&#039;,MON,&#039;.&#039;,YER,&#039; &#039;,HRS,&#039;:&#039;,MIN,&#039;.\n\n&#039;,
                                 &#039;Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n&#039;);
                                 
//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 &quot;cekam&quot;

}

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(&#039;lada@trachemyska.cz&#039;, &#039;Zaplo se rele 2&#039;,
                                 &#039;Prepla se spotreba na nizky tarif.\n\n&#039;,
                                 &#039;Aktualni cas udalosti je &#039;,DAY,&#039;.&#039;,MON,&#039;.&#039;,YER,&#039; &#039;,HRS,&#039;:&#039;,MIN,&#039;.\n\n&#039;,
                                 &#039;Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n&#039;);
                                 
//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(&#039;lada@trachemyska.cz&#039;, &#039;Vyplo se rele 2&#039;,
                                 &#039;Prepla se spotreba na vysoky tarif.\n\n&#039;,
                                 &#039;Aktualni cas udalosti je &#039;,DAY,&#039;.&#039;,MON,&#039;.&#039;,YER,&#039; &#039;,HRS,&#039;:&#039;,MIN,&#039;.\n\n&#039;,
                                 &#039;Odkaz pro kontrolu nastaveni SDS - http://sdszahrada.trachemyska.cz:8091.\n\n&#039;);
                                 
//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 &lt; dolni) sepni_rele_1();
if ((napetiAD1 &gt; stred) &amp;&amp; (napetiAD3 &gt; napeti_solar)) vypni_rele_1();
if (napetiAD1 &gt; 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&gt;=PON1 &amp;&amp; CAS&lt;=POF1) &amp;&amp; (dow==5)) sepni_rele_2();
if ((CAS&gt;=PON2 &amp;&amp; CAS&lt;=POF2) &amp;&amp; (dow==6)) sepni_rele_2();
if ((CAS&gt;=PON3 &amp;&amp; CAS&lt;=POF3) &amp;&amp; (dow==0)) sepni_rele_2();
if ((CAS&lt;PON1) &amp;&amp; (dow==5)) vypni_rele_2();
if ((CAS&gt;POF3) &amp;&amp; (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&lt;955575)proud_0();
if (rozdil_napeti&gt;=95557&amp;&amp;rozdil_napeti&lt;98982){sys[146]=100;};
if (rozdil_napeti&gt;=989825&amp;&amp;rozdil_napeti&lt;1024075)proud_250();
if (rozdil_napeti&gt;=1024075&amp;&amp;rozdil_napeti&lt;1058325)proud_400();
if (rozdil_napeti&gt;=1058325&amp;&amp;rozdil_napeti&lt;1092575)proud_550();
if (rozdil_napeti&gt;=1092575&amp;&amp;rozdil_napeti&lt;1126825)proud_700();
if (rozdil_napeti&gt;=1126825&amp;&amp;rozdil_napeti&lt;1161075)proud_850();
if (rozdil_napeti&gt;=1161075&amp;&amp;rozdil_napeti&lt;1195325)proud_1000();
if (rozdil_napeti&gt;=1195325&amp;&amp;rozdil_napeti&lt;1229575)proud_1150();
if (rozdil_napeti&gt;=1229575&amp;&amp;rozdil_napeti&lt;1263825)proud_1300();
if (rozdil_napeti&gt;=1263825&amp;&amp;rozdil_napeti&lt;1298075)proud_1450();
if (rozdil_napeti&gt;=1298075&amp;&amp;rozdil_napeti&lt;1332325)proud_1600();
if (rozdil_napeti&gt;=1332325&amp;&amp;rozdil_napeti&lt;1366575)proud_1750();
if (rozdil_napeti&gt;=1366575&amp;&amp;rozdil_napeti&lt;1400825)proud_1900();
if (rozdil_napeti&gt;=1400825&amp;&amp;rozdil_napeti&lt;1435075)proud_2050();
if (rozdil_napeti&gt;=1435075&amp;&amp;rozdil_napeti&lt;1469325)proud_2200();
if (rozdil_napeti&gt;=1469325&amp;&amp;rozdil_napeti&lt;1503575)proud_2350();
if (rozdil_napeti&gt;=1503575&amp;&amp;rozdil_napeti&lt;1537825)proud_2500();
if (rozdil_napeti&gt;=1537825&amp;&amp;rozdil_napeti&lt;1572075)proud_2650();
if (rozdil_napeti&gt;=1572075&amp;&amp;rozdil_napeti&lt;1606325)proud_2800();
if (rozdil_napeti&gt;=1606325&amp;&amp;rozdil_napeti&lt;1640575)proud_2950();
if (rozdil_napeti&gt;=1640575&amp;&amp;rozdil_napeti&lt;1674825)proud_3100();
if (rozdil_napeti&gt;=1674825&amp;&amp;rozdil_napeti&lt;1709075)proud_3250();
if (rozdil_napeti&gt;=1709075&amp;&amp;rozdil_napeti&lt;1743325)proud_3400();
if (rozdil_napeti&gt;=1743325&amp;&amp;rozdil_napeti&lt;1777575)proud_3550();
if (rozdil_napeti&gt;=1777575&amp;&amp;rozdil_napeti&lt;1811825)proud_3700();
if (rozdil_napeti&gt;=1811825&amp;&amp;rozdil_napeti&lt;1846075)proud_3850();
if (rozdil_napeti&gt;=1846075&amp;&amp;rozdil_napeti&lt;1880325)proud_4000();
if (rozdil_napeti&gt;=1880325&amp;&amp;rozdil_napeti&lt;1914575)proud_4150();
if (rozdil_napeti&gt;=1914575&amp;&amp;rozdil_napeti&lt;1948825)proud_4300();
if (rozdil_napeti&gt;=1948825&amp;&amp;rozdil_napeti&lt;1983075)proud_4450();
if (rozdil_napeti&gt;=1983075&amp;&amp;rozdil_napeti&lt;2017325)proud_4600();
if (rozdil_napeti&gt;=2017325&amp;&amp;rozdil_napeti&lt;2051575)proud_4750();
if (rozdil_napeti&gt;=2051575&amp;&amp;rozdil_napeti&lt;2085825)proud_4900();
if (rozdil_napeti&gt;=2085825&amp;&amp;rozdil_napeti&lt;2120075)proud_5050();
if (rozdil_napeti&gt;=2120075&amp;&amp;rozdil_napeti&lt;2154325)proud_5200();
if (rozdil_napeti&gt;=2154325&amp;&amp;rozdil_napeti&lt;2188575)proud_5350();
if (rozdil_napeti&gt;=2188575&amp;&amp;rozdil_napeti&lt;2222825)proud_5500();
if (rozdil_napeti&gt;=2222825&amp;&amp;rozdil_napeti&lt;2257075)proud_5650();
if (rozdil_napeti&gt;=2257075&amp;&amp;rozdil_napeti&lt;2291325)proud_5800();
if (rozdil_napeti&gt;=2291325&amp;&amp;rozdil_napeti&lt;2325575)proud_5950();
if (rozdil_napeti&gt;=2325575&amp;&amp;rozdil_napeti&lt;2359825)proud_6100();
if (rozdil_napeti&gt;=2359825&amp;&amp;rozdil_napeti&lt;2394075)proud_6250();
if (rozdil_napeti&gt;=2394075&amp;&amp;rozdil_napeti&lt;2428325)proud_6400();
if (rozdil_napeti&gt;=2428325&amp;&amp;rozdil_napeti&lt;2462575)proud_6550();
if (rozdil_napeti&gt;=2462575&amp;&amp;rozdil_napeti&lt;2496825)proud_6700();
if (rozdil_napeti&gt;=2496825&amp;&amp;rozdil_napeti&lt;2531075)proud_6850();
if (rozdil_napeti&gt;=2531075&amp;&amp;rozdil_napeti&lt;2565325)proud_7000();
if (rozdil_napeti&gt;=2565325&amp;&amp;rozdil_napeti&lt;2599575)proud_7150();
if (rozdil_napeti&gt;2633825)proud_7300();

//a porad dokola
goto smycka_rizeni;
}

init
{
    
 echo(&#039;Start programu.&#039;);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Fri, 18 Sep 2015 21:19:34 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5227#p5227</guid>
		</item>
		<item>
			<title><![CDATA[Re: [vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5224#p5224</link>
			<description><![CDATA[<p>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.<br />Tzn. ty &quot;if&quot; jsou v nějaké funkci, např. main().</p><p>Jsou tam chyby v textu programu, který vidím ve výpisu. Po jejich odstranění lze dát &quot;ifů&quot; klidně sto a funguje to.</p><p>Především: schválně kde je rozdíl (následující řádek je už správně):<br /></p><div class="codebox"><pre><code>if (rozdil_napeti&gt;=95557&amp;&amp;rozdil_napeti&lt;98982){sys[146]=100;};</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Fri, 18 Sep 2015 17:56:22 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5224#p5224</guid>
		</item>
		<item>
			<title><![CDATA[[vyřešeno] Počet záznamů if]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=5222#p5222</link>
			<description><![CDATA[<p>Měl bych dotaz. Do SDS MICRO Light E - R2 jsem chtěl vytvořit program, který obsahuje dost podmínek &quot;if&quot;. 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.<br />Pokud jich přidám kolem 40 tak program při compilaci hlásí &quot;coding error : invalid declaration found !&quot;</p><p>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].</p><p>Vypadá to asi takto. Možná by se to dalo napsat jinak. Jestli má někdo nějaký nápad nepomohl by mě&nbsp; jak to řešit.</p><br /><div class="codebox"><pre><code>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&lt;95557)proud_0();
if    (rozdil_napeti&gt;=95557&amp;&amp;rozdil_napeti&lt;98982){sys[146]=100};
if    (rozdil_napeti&gt;=98982&amp;&amp;rozdil_napeti&lt;102407)proud_250();
if    (rozdil_napeti&gt;=102407&amp;&amp;rozdil_napeti&lt;105832)proud_400();
if    (rozdil_napeti&gt;=105832&amp;&amp;rozdil_napeti&lt;109257)proud_550();
if    (rozdil_napeti&gt;=109257&amp;&amp;rozdil_napeti&lt;112682)proud_700();
if    (rozdil_napeti&gt;=112682&amp;&amp;rozdil_napeti&lt;116107)proud_850();</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Pigom)]]></author>
			<pubDate>Thu, 17 Sep 2015 12:07:08 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=5222#p5222</guid>
		</item>
	</channel>
</rss>
