<?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 - SDS MICRO Light E - RS485]]></title>
		<link>https://forum.sds.an-d.cz/viewtopic.php?id=273</link>
		<atom:link href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=273&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Nejnovější příspěvky v SDS MICRO Light E - RS485.]]></description>
		<lastBuildDate>Thu, 11 Oct 2012 09:46:41 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2408#p2408</link>
			<description><![CDATA[<p>No myslel jsem, že jsem jediný komu papouch nejel. Taky šel na reklamaci <img src="https://forum.sds.an-d.cz/img/smilies/hmm.png" width="15" height="15" alt="hmm" /></p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Thu, 11 Oct 2012 09:46:41 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2408#p2408</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2401#p2401</link>
			<description><![CDATA[<p>Tímto chci poděkovat p. Prejdovi za snahu a pomoc při řešení problému v komunikaci Macro a IO desky 485 od Papoucha. Sice se mi u Papoucha nepřiznali, že chyba byla u nich, ale po výměně jejich desky vše funkuje naprosto korektně.</p><p>Nemáte někdo představu co znamená chyba 2 v historii OS17 při odeslíní HTTP GET? Vždy mi to na Endoru fungovalo bez problémů a poslední dobou mi vynechává posílání, vždy to hodí chybu 2.&nbsp; Zlobí to ze dvou různých SDS.</p>]]></description>
			<author><![CDATA[null@example.com (karel)]]></author>
			<pubDate>Wed, 10 Oct 2012 18:34:21 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2401#p2401</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2220#p2220</link>
			<description><![CDATA[<p>Nejprve je potřeba ověřit funkčnost sériové linky.<br />1. připojit MACRO (MICRO) a desku s relé přes sériovou linku<br />2. připojit PC k SDS<br />3. (Windows) spustit telnet.exe, otevřít spojení &quot;o 192.168.1.250&quot; &lt;enter&gt;<br />4. napsat příkaz, např: *B$OS1H (znaky se ihned odešlou přes TCP spojení do SDS, který to ihned předá do zařízení na sériové lince - terminál nemá automatické &quot;echo&quot; psaných znaků, pozor)<br />5. zařízení na sériové lince sepne relé (nebo rozepne, dle příkazu)<br />6. na obrazovce terminálu musí být vidět odpověď (podle funkce desky s relé).</p><p>Samozřejmě je možné udělat i test samotného SDS - pokud má RS232 nebo UART, stačí přímo spojit RX a TX drát, a co se pak v telnet terminálu napíše, se ihned zobrazí. Ve webovém rozhraní zařízení se pak musí úměrně počtu přenesených znaků zvyšovat počítadla znaků.<br />Pro RS485 je potřeba takový test udělat např. s druhým SDS MACRO - připojit se telnetem na oba (dva terminály) a co se napíše na jednom, se zobrazí i na druhém. Pozor u RS485, klasická chyba: pro RS485 se nekříží vodiče tak jako např. u RS232 (rx na tx, a tx na rx) - RS485 má A na A a B na B, pro všechny zařízení na RS485 sběrnici!</p><p>Pokud se tedy provede úvodní test, mělo by vše fungovat. Pokud ne, je potřeba zkontrolovat nastavení linky (bps, parita, počet stop bitů) - lze si napsat jednoduchý SDS-C program, který to obslouží:<br /></p><div class="codebox"><pre><code>main
{
 echo(&#039;nastavuji seriovou linku&#039;);

 // nastav seriovou linku
 serial_set(9600, 8, 1, 0); // 9600bps 8n1

 // a zde se zastavime, protoze nechci aby mi SDS-C program interferoval s pokusy pres telnet
 x: goto x;
}</code></pre></div><p>Program co bude co 1 sec zapínat a vypínat první relé (bez kontroly zda se to povedlo):<br /></p><div class="codebox"><pre><code>main
{
 echo(&#039;nastavuji seriovou linku&#039;);

 // nastav seriovou linku
 serial_set(9600, 8, 1, 0); // 9600bps 8n1

 // nasledujici kod se bude neustale opakovat
znovu:

 echo(&#039;ZAP&#039;);

 serial_text_out(&#039;*B$OS1H&#039;, 0x0D);
 
 wait(1000);


 echo(&#039;VYP&#039;);

 serial_text_out(&#039;*B$OS1L&#039;, 0x0D);
 
 wait(1000);

 goto znovu;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Tue, 04 Sep 2012 16:28:16 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2220#p2220</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2219#p2219</link>
			<description><![CDATA[<p>j@m<br />Díky, program z text jsem zkusil. Tady je konzole:<br />Pokus o sepnuti vstupu 8<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 8<br />Odpoved zarizeni <br />sepnuti se nezdarilo!<br />Pokus o sepnuti vstupu 9<br />Odpoved zarizeni *B10</p><p>9sepnuto<br />Pokus o sepnuti vstupu 10<br />Odpoved zarizeni *B10</p><p>10sepnuto<br />Pokus o sepnuti vstupu 11<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 11<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 11<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 11<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 11<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 11<br />Odpoved zarizeni <br />sepnuti se nezdarilo!<br />Pokus o sepnuti vstupu 12<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 12<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 12<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 12<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 12<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 12<br />Odpoved zarizeni <br />sepnuti se nezdarilo!<br />Pokus o sepnuti vstupu 13<br />Odpoved zarizeni <br />Pokus o sepnuti vstupu 13<br />Odpoved zarizeni <br />Náhodně se výstupy zapínají a vypínají. Vzdávám to, domluvil jsem se p. Prejdou, že mi Macro i papoucha odzkouší, takže to zasílám zpět.Jsem jen zvědavý, co to bylo, jestli macro, papouch nebo nějaká kravina u mne.<br />Díky všem za pomoc.</p>]]></description>
			<author><![CDATA[null@example.com (karel)]]></author>
			<pubDate>Tue, 04 Sep 2012 16:09:24 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2219#p2219</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2217#p2217</link>
			<description><![CDATA[<p>Takhle se myslím kdysi dávno v době vývoje RS485 choval FW u MACRA. Pak se to ale vše odladilo a je to 100% funkční (tedy netestoval jsem poslední FW). Jestli je to MICRO-E, chtělo by to pro jistotu otestovat i FW.</p><p>Nezkoušel jsi ten poslední c-prog co jsem tu dal včera? Ten vypisuje to text[] odpovědi a vypisuje je do konzoly.</p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Tue, 04 Sep 2012 08:54:57 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2217#p2217</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2213#p2213</link>
			<description><![CDATA[<p>Díky za snahu a za nový testovací prográmek. Nepotřebuju nic složitého, potřebuju korektně nahodit jeden <br />výstup a zas ho shodit. Něco podobného:<br />Příklad: Dotaz – sepne relé 10<br />*B1OS10H<br />Odpověď<br />*B10<br />Dal jsem nový firmware, bohužel stále stejné. Díky j@m jsem zjistil, že alespoň nějaká snaha IO papoucha </p><p>reagovat je v sys140=1000, u ostatních sys to nedělá nic.</p><p>Pokud si dám echa do sys 140 =1000, tak vypisuju potvrzení:<br />66049048013042066049048013042, to jest přijmul paket a odpovídá ok /ty nuly mezi jsou sys48/ a náhodně </p><p>spíná výstupy, ale opravdu náhodně.<br />Myslím, že pokud papouch nemá vyjmuté všechny znaky z bufferu, tak neprovede pokyn-je to tak?</p><p>A tady asi je nějaký zádrhel, ale stále nevím, jestli je zádrhel u papoucha nebo u macra nebo u mne, fakt </p><p>nevím.</p><p>Pokud si dám tento pokus:<br />var _s;<br />init<br />{<br />echo(&#039;go&#039;);<br />serial_set(9600, 8, 1, 0);<br />}</p><p>main<br />{<br />echo (&#039; 48:&#039;sys[48]);<br />echo (&#039; 49:&#039;sys[49]);<br />echo (&#039; 49:&#039;sys[49]);<br />echo (&#039; 49:&#039;sys[49]);<br />echo (&#039; 49:&#039;sys[49]);<br />echo (&#039; 49:&#039;sys[49]);<br />if (sys[140]==1000) {<br />&nbsp; &nbsp;_s=0x4c;&nbsp; //L</p><p>if (sys[49]==-1)<br />{<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x31, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(500);<br />//sys[140]=0;<br />echo (&#039;VYP 48:&#039;sys[48]);<br />echo (&#039;VYP 49:&#039;sys[49]);<br />}<br />}<br />&nbsp; &nbsp;wait(1000);</p><p>if (sys[140]==100) {</p><p>&nbsp; &nbsp;_s=0x48;<br />if (sys[49]==-1)<br />{<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x31, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />echo (&#039;ZAP 48:&#039;sys[48]);<br />echo (&#039;ZAP 49:&#039;sys[49]);<br />//sys[140]=0;<br />}<br />}<br />}</p><p>Tak při sys1000:<br /> 49:-1<br />VYP 48:1<br />VYP 49:-1<br /> 48:1<br /> 49:-1<br /> 49:-1<br /> 49:-1<br /> 49:-1<br /> 49:-1<br />VYP 48:1<br />VYP 49:-1<br /> 48:1<br /> 49:-1<br /> 49:-1</p><p>Při sys 100:<br />49:-1<br /> 49:-1<br /> 49:-1<br /> 49:-1<br /> 49:-1<br />ZAP 48:1<br />ZAP 49:-1<br /> 48:1<br /> 49:-1<br /> 49:-1<br /> 49:-1</p><p>A někdy s velkým spožděním to zapne nebo vypne výstup 1 a samozřejmě u toho vypíše potvrzovací sekvenci v sys49.<br />Co s tím??</p>]]></description>
			<author><![CDATA[null@example.com (karel)]]></author>
			<pubDate>Mon, 03 Sep 2012 19:16:21 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2213#p2213</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2212#p2212</link>
			<description><![CDATA[<p>Nevím, možná jsem se špatně díval. Je někde napsáno, že max.velikost text[] pole je 512?</p><p>Dá se do pole nějak dostat proměnnou jako znaky? Tedy mám x=12, v text[0] chci mít znak &quot;1&quot; v text[1] chci mít znak &quot;2&quot;. Je to pro tohle &#039;*B$OS1H&#039; resp. &#039;*B$OS12H&#039;.</p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Mon, 03 Sep 2012 10:26:04 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2212#p2212</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2211#p2211</link>
			<description><![CDATA[<p>Zde program vyuzivajici text[]. netestoval jsem přímo na zařízení, tak snad bude OK.</p><p>var _pom;<br />var _in;<br />var _s;<br />var _ovl;<br />var _txt;</p><p>init<br />{<br /> echo(&#039;start&#039;);<br /> serial_set(9600, 8, 1, 0); //nastav linku</p><p> sprintf(text[10], &#039;*B$OS1L&#039;); //1vyp<br /> sprintf(text[20], &#039;*B$OS2L&#039;); //2vyp<br /> sprintf(text[30], &#039;*B$OS3L&#039;); //3vyp<br /> sprintf(text[40], &#039;*B$OS4L&#039;); //…<br /> sprintf(text[50], &#039;*B$OS5L&#039;);<br /> sprintf(text[60], &#039;*B$OS6L&#039;);<br /> sprintf(text[70], &#039;*B$OS7L&#039;);<br /> sprintf(text[80], &#039;*B$OS8L&#039;);<br /> sprintf(text[90], &#039;*B$OS9L&#039;);<br /> sprintf(text[100], &#039;*B$OS10L&#039;);<br /> sprintf(text[110], &#039;*B$OS11L&#039;);<br /> sprintf(text[120], &#039;*B$OS12L&#039;);<br /> sprintf(text[130], &#039;*B$OS13L&#039;);<br /> sprintf(text[140], &#039;*B$OS14L&#039;);<br /> sprintf(text[150], &#039;*B$OS15L&#039;);<br /> sprintf(text[160], &#039;*B$OS16L&#039;);</p><p> sprintf(text[210], &#039;*B$OS1H&#039;); //1zap<br /> sprintf(text[220], &#039;*B$OS2H&#039;); //2zap<br /> sprintf(text[230], &#039;*B$OS3H&#039;); //3zap<br /> sprintf(text[240], &#039;*B$OS4H&#039;);<br /> sprintf(text[250], &#039;*B$OS5H&#039;);<br /> sprintf(text[260], &#039;*B$OS6H&#039;);<br /> sprintf(text[270], &#039;*B$OS7H&#039;);<br /> sprintf(text[280], &#039;*B$OS8H&#039;);<br /> sprintf(text[290], &#039;*B$OS9H&#039;);<br /> sprintf(text[300], &#039;*B$OS10H&#039;);<br /> sprintf(text[310], &#039;*B$OS11H&#039;);<br /> sprintf(text[320], &#039;*B$OS12H&#039;);<br /> sprintf(text[330], &#039;*B$OS13H&#039;);<br /> sprintf(text[340], &#039;*B$OS14H&#039;);<br /> sprintf(text[350], &#039;*B$OS15H&#039;);<br /> sprintf(text[360], &#039;*B$OS16H&#039;);</p><p>}</p><p>485<br />{<br /> _pom=0;<br /> 485_0:<br /> _ovl=_in*10+_s*200;&nbsp; //ukazatel do predchystaneho pole ovl.stringu<br /> if (_s==0) {<br />&nbsp; echo (&#039;Pokus o rozepnuti vstupu &#039;, _in);<br /> } else {<br />&nbsp; echo (&#039;Pokus o sepnuti vstupu &#039;, _in);<br /> }<br /> serial_text_out(text[_ovl], 0x0D);<br /> wait(100);&nbsp; //dat mu cas na odezvu<br /> _txt=400;<br /> //celou odpoved do pole<br /> if(sys[48]==0) {<br />&nbsp; 485_1:<br />&nbsp; text[_txt]=sys[49];<br />&nbsp; _txt++;<br />&nbsp; if (sys[48]==0 &amp;&amp; _txt&lt;420) goto 485_1;<br /> }<br /> text[_txt]=0x00; //konec pro echo<br /> //potvrzeni OK<br /> echo (&#039;Odpoved zarizeni &#039;, text[400]);<br /> if (text[400]==42 &amp;&amp; text[401]==66 &amp;&amp; text[402]==49 &amp;&amp; text[403]==48 &amp;&amp; text[404]==13) {<br />&nbsp; if (_s==1) {<br />&nbsp; &nbsp;echo (_in, &#039;sepnuto&#039;);<br />&nbsp; } else {<br />&nbsp; &nbsp;echo (_in, &#039;rozepnuto&#039;);<br />&nbsp; }<br />&nbsp; return;<br /> }<br /> //akce se nezdarila opakuju<br /> wait(100);<br /> _pom++;<br /> if (_pom&gt;5) {<br />&nbsp; if (_s==1) {<br />&nbsp; &nbsp;echo (&#039;sepnuti se nezdarilo!&#039;);<br />&nbsp; } else {<br />&nbsp; &nbsp;echo (&#039;rozepnuto se nezdarilo!&#039;);<br />&nbsp; }<br />&nbsp; return;<br /> }<br /> goto 485_0;<br />}</p><br /><p>main<br />{<br /> _in=1;<br /> _s=1;&nbsp; //zap<br /> label main_0:<br /> 485();<br /> if (_in&lt;=16) {<br />&nbsp; _in++;<br />&nbsp; goto main_0;<br /> }</p><p> _in=1;<br /> _s=0;&nbsp; //vyp<br /> label main_1:<br /> 485();<br /> if (_in&lt;=16) {<br />&nbsp; _in++;<br />&nbsp; goto main_1;<br /> }<br />}</p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Mon, 03 Sep 2012 10:18:21 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2211#p2211</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2210#p2210</link>
			<description><![CDATA[<p>V předchozím příspěvku je ladicí program který dle nastavení v sys[140] (první web proměnná) posílá příkazy na linku. Možné hodnoty jsou 10, 100, 1000, 10000. Vyzkoušej funkce a uvidíš. Jinak kdybys napsal co by to mělo dělat, můžeme tě navést správným směrem. Záměrně jsem tam nechal i všechny zaremované řádky. Zkusím to rychle přepsat do text[] příkazu.</p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Mon, 03 Sep 2012 07:01:07 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2210#p2210</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2209#p2209</link>
			<description><![CDATA[<p>var _pom;<br />var _zap;<br />var _vyp;<br />var _in;<br />var _s;<br />var _ram;<br />var _ret;</p><p>init<br />{<br /> echo(&#039;go&#039;);<br /> serial_set(9600, 8, 1, 0);<br /> _zap=49;&nbsp; //1<br /> _vyp=49;&nbsp; //1<br />}</p><p>485<br />{<br /> _pom=0;<br /> 485_0:<br /> serial_text_out(&#039;*B$OS&#039;, _in, _s , 0x0D);<br /> wait(100);&nbsp; //dat mu cas na odezvu<br /> _ram=0;<br /> //celou odpoved do pole<br /> if(sys[48]==0) {<br />&nbsp; 485_1:<br />&nbsp; ram[_ram]=sys[49];<br />&nbsp; //echo ram[_ram];<br />&nbsp; _ram++;<br />&nbsp; if (sys[48]==0) goto 485_1;<br /> }<br /> //if (sys[48]==1 &amp;&amp; _ram==0) {<br /> // echo (sys[48]);<br /> // echo (sys[49]);<br /> //}<br /> //_ret=0;<br /> //if (_ram&gt;0) {<br /> // 485_2:<br /> // echo ram[_ret];<br /> // _ret++;<br /> // if (_ret&lt;_ram) goto 485_2;<br /> // wait(500);<br /> //}<br /> //potvrzeni OK<br /> if (ram[0]==42 &amp;&amp; ram[1]==66 &amp;&amp; ram[2]==49 &amp;&amp; ram[3]==48 &amp;&amp; ram[4]==13) {<br />&nbsp; if (_s==0x48) {<br />&nbsp; &nbsp;echo (_in, &#039;sepnuto&#039;);<br />&nbsp; } else {<br />&nbsp; &nbsp;echo (_in, &#039;rozepnuto&#039;);<br />&nbsp; }<br />&nbsp; return;<br /> }<br /> //akce se nezdarila opakuju<br /> wait(100);<br /> _pom++;<br /> if (_pom&gt;5) {<br />&nbsp; if (_s==0x48) {<br />&nbsp; &nbsp;echo (&#039;sepnuti se nezdarilo!&#039;);<br />&nbsp; } else {<br />&nbsp; &nbsp;echo (&#039;rozepnuto se nezdarilo!&#039;);<br />&nbsp; }<br />&nbsp; return;<br /> }<br /> goto 485_0;<br />}</p><br /><p>main<br />{<br /> //if (sys[141]==0) {<br />&nbsp; //echo (_vyp, _zap);</p><p>&nbsp; if (sys[140]==10) {<br />&nbsp; &nbsp;_s=0x4c;&nbsp; //vyp<br />&nbsp; &nbsp;_in=0x31;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x32;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x33;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x34;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x35;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x36;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x37;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x38;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;_in=0x39;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;wait(500);<br />&nbsp; &nbsp;sys[140]=11;<br />&nbsp; }<br />&nbsp; if (sys[140]==100) {<br />&nbsp; &nbsp;_in=0x31;<br />&nbsp; &nbsp;_s=0x48;&nbsp; //zap<br />&nbsp; &nbsp; 485();<br />&nbsp; &nbsp;wait(1000);<br />&nbsp; &nbsp;_in=0x31;<br />&nbsp; &nbsp;_s=0x4c;&nbsp; //vyp<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;wait(1000);<br />&nbsp; }</p><p>&nbsp; if (sys[140]==1000) {<br />&nbsp; &nbsp;//_s=72;&nbsp; //H<br />&nbsp; &nbsp;//_s=0x48;&nbsp; //H<br />&nbsp; &nbsp;//_s=76;&nbsp; //L<br />&nbsp; &nbsp;_s=0x4c;&nbsp; //L<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x31, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x32, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x33, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x34, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x35, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x36, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x37, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x38, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x39, _s, 0x0D); //hex cislo 2</p><p>&nbsp; &nbsp;//serial_text_out(&#039;*B$OS&#039;,0x31, 0x32,&#039;L&#039;, 0x0D); //hex cislo 12<br />&nbsp; &nbsp;//serial_text_out(&#039;*B$OS&#039;,49,&#039;L&#039;, 0x0D); // dekadicky cislo 1<br />&nbsp; &nbsp;//echo(sys[48], &#039; data: &#039;, sys[49]);<br />&nbsp; &nbsp;wait(1000);</p><p>&nbsp; &nbsp;_s=0x48;<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x31, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x32, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x33, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x34, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x35, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x36, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x37, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x38, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; &nbsp;serial_text_out(&#039;*B$OS&#039;,0x39, _s, 0x0D); //hex cislo 2<br />&nbsp; &nbsp;wait(100);<br />&nbsp; }</p><p>&nbsp; if (sys[140]==10000) {<br />&nbsp; &nbsp;_s=0x48;&nbsp; //zap<br />&nbsp; &nbsp;s1:<br />&nbsp; &nbsp;_in=0x31;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;if (_in&lt;0x38) {<br />&nbsp; &nbsp; _in++;<br />&nbsp; &nbsp; goto s1;<br />&nbsp; &nbsp;}</p><p>&nbsp; &nbsp;wait(1000);</p><p>&nbsp; &nbsp;_s=0x4c;&nbsp; //vyp<br />&nbsp; &nbsp;s2:<br />&nbsp; &nbsp;_in=0x31;<br />&nbsp; &nbsp;485();<br />&nbsp; &nbsp;if (_in&lt;0x38) {<br />&nbsp; &nbsp; _in++;<br />&nbsp; &nbsp; goto s2;<br />&nbsp; &nbsp;}</p><p>&nbsp; &nbsp;wait(1000);<br />&nbsp; }</p><p>&nbsp; //serial_text_out(&#039;*B$OS&#039;,49,&#039;H&#039;, 0x0D);<br />&nbsp; //serial_text_out(&#039;*B$OS&#039;,0x31, 0x32,&#039;H&#039;, 0x0D);<br />&nbsp; //serial_text_out(0x2A,0x61,0x00,0x06,0x01,0x02,0x20,0x82,0xC9,0x0D);<br />&nbsp; //serial_text_out(&#039;*B$OS&#039;,0x32,&#039;H&#039;, 0x0D); //hex cislo 2<br />&nbsp; //echo(sys[48], &#039; data: &#039;, sys[49]);</p><p>&nbsp; //_vyp=_zap;<br />&nbsp; //_zap++;<br />&nbsp; //if (_zap&gt;15) { _zap=0x00; }<br /> //}</p><br /><p> //wait(1000);<br />}</p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Mon, 03 Sep 2012 06:57:10 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2209#p2209</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2208#p2208</link>
			<description><![CDATA[<p>Hodím sem ještě pár testovacích procedurek co jsem udělal když jsem si lámal hlavu s moduly od Papoucha. Jak krásné by bylo mít i RS485 moduly z vlastní dílny ;-)</p>]]></description>
			<author><![CDATA[null@example.com (j@m)]]></author>
			<pubDate>Mon, 03 Sep 2012 06:50:09 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2208#p2208</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2204#p2204</link>
			<description><![CDATA[<p>Ten výpis ram[] od 100 nahoru nemá v tomto programu význam.<br />Větší význam by mělo to echo() přepsat ať vypíše ram[0] až [20], tak by se vidělo co je přijato po sériové lince.</p><p>Ten program by ale stálo za to přepsat celý - jaký je vlastně cíl toho čeho se snažíte dosáhnout ? Podle toho pak něco vymyslíme...</p><br /><p>Jinak zkuste nový beta firmware (2.9.) pro SDS MACRO, jsou tam nějaké drobné opravy v SDS-C, možná to nějak pomůže při ladění programu...</p>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Sun, 02 Sep 2012 21:14:34 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2204#p2204</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2203#p2203</link>
			<description><![CDATA[<p>Koupil jsem další macro , nyní s 485. Dle j@m jsem koupil u Papoucha Quido 485/2/16 výstupů. Použil jsem tady uvedený program, bohužel, jak už to mě bývá , tak se trápím a nevím.<br />Program:<br />// *******&nbsp; procedury pro ovladani sbernice RS485&nbsp; **********<br />// rs485 pouziva RAM[0-99] pro prijem dat po serial_text_out</p><br /><p>var(_pruchod,_val,_rs485in,_rs485s,_ram,_pom );</p><p>rs485<br />{<br /> _pruchod=0;<br /> rs485_0:<br /> if (_val&lt;10) {<br />&nbsp; _rs485in=0x30+_val;<br />&nbsp; serial_text_out(&#039;*B$OS&#039;, _rs485in, _rs485s , 0x0D);<br /> } else {<br />&nbsp; _rs485in=0x30+_val-10;<br />&nbsp; serial_text_out(&#039;*B$OS&#039;, 0x31, _rs485in, _rs485s , 0x0D);<br /> }<br /> wait(50);&nbsp; //dat mu cas na odezvu<br /> _ram=0;<br /> //celou odpoved do pole<br /> if(sys[48]==0) { // pokud je nejaky znak prijaty ze seriove sbernice<br />&nbsp; rs485_1:<br />&nbsp; ram[_ram]=sys[49]; // prevezmi prijaty znak ze seriove sbernice do urcene pozice pole ram[]<br />&nbsp; _ram++; // dalsi pozice v ram[], kam se zapise dalsi znak<br />&nbsp; if (sys[48]==0&nbsp; &amp;&amp; _ram&lt;100) goto rs485_1;&nbsp; //at se odpoved nedostane do ram100 !!!<br /> }<br /> //potvrzeni OK - porovnej prijate znaky ulozene v ram[]<br /> if (ram[0]==42 &amp;&amp; ram[1]==66 &amp;&amp; ram[2]==49 &amp;&amp; ram[3]==48 &amp;&amp; ram[4]==13) {<br />&nbsp; _pom=_val+99;<br />&nbsp; // zpracuj hodnotu<br />&nbsp; if (_rs485s==0x48) {<br />&nbsp; &nbsp;echo (_val, &#039; zapnuto&#039;);<br />&nbsp; &nbsp;ram[_pom]=1;<br />&nbsp; } else {<br />&nbsp; &nbsp;echo (_val, &#039; vypnuto&#039;);<br />&nbsp; &nbsp;ram[_pom]=0;<br />&nbsp; }<br />&nbsp; goto rs485_end;<br /> }<br /> //akce se nezdarila opakuju<br /> wait(50);<br /> _pruchod++;<br /> if (_pruchod&gt;5) {<br />&nbsp; if (_rs485s==0x48) {<br />&nbsp; &nbsp;echo (&#039;zapnuti se nezdarilo!&#039;);<br />&nbsp; } else {<br />&nbsp; &nbsp;echo (&#039;vypnuti se nezdarilo!&#039;);<br />&nbsp; }<br />&nbsp; goto rs485_end;<br /> }<br /> goto rs485_0;</p><p>label rs485_end:<br />}</p><p>nastav485<br />{<br /> _val=sys[140];&nbsp; //1-16<br /> if (_val==0 || _val&gt;16) goto nastav485_end;&nbsp; //zadna zmena<br /> echo (&#039;Pozadavek na rs485 - &#039;, _val);<br /> _pom=99+_val;<br /> if (ram[_pom]==0) {<br />&nbsp; _rs485s=0x48;&nbsp; //zap<br />&nbsp; rs485();<br /> } else {<br />&nbsp; _rs485s=0x4c;&nbsp; //vyp<br />&nbsp; rs485();<br /> }<br /> sys[140]=0;&nbsp; //vynulovat prikaz</p><p> // pozn. echo ram[100] az ram[115] nesouvisi s predchozim kodem<br /> echo (&#039;vypis RAM: &#039;, ram[100], &#039;,&#039;, ram[101], &#039;,&#039;, ram[102], &#039;,&#039;, ram[103], &#039;,&#039;, ram[104], &#039;,&#039;, ram[105], &#039;,&#039;, ram[106], &#039;,&#039;, ram[107], &#039;,&#039;, ram[108], &#039;,&#039;, ram[109], &#039;,&#039;, ram[110], &#039;,&#039;, ram[111], &#039;,&#039;, ram[112], &#039;,&#039;, ram[113], &#039;,&#039;, ram[114], &#039;,&#039;, ram[115] );</p><p>label nastav485_end:<br />}</p><br /><p>main<br />{</p><p>nastav485();<br />wait (500);<br />}</p><p>Konzole:<br />is RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />Pozadavek na rs485 - 1<br />zapnuti se nezdarilo!<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />Pozadavek na rs485 - 1<br />zapnuti se nezdarilo!<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />Pozadavek na rs485 - 1<br />zapnuti se nezdarilo!<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />Pozadavek na rs485 - 11<br />11 zapnuto<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0<br />Pozadavek na rs485 - 11<br />11 vypnuto<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />Pozadavek na rs485 - 11<br />11 zapnuto<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0<br />Pozadavek na rs485 - 11<br />11 vypnuto<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />Pozadavek na rs485 - 11<br />11 zapnuto<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0<br />Pozadavek na rs485 - 5<br />5 zapnuto<br />vypis RAM: 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0<br />Pozadavek na rs485 - 5<br />5 vypnuto<br />vypis RAM: 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0<br />Pozadavek na rs485 - 5<br />5 zapnuto<br />vypis RAM: 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0</p><p>Během výpisu v konzoli se nahodil fyzicky pouze výstup 11. </p><p>Laboruju s tím celý víkend, někdy se nějaký výstup podaří nahodit, zdá se mi to ale náhodné. Zaráží mě taky, že pokud F5 obnovím pouze&nbsp; výpis konzole, tak mi problikne příjmací LED dioda na IO modulu Papoucha. To znamená, že F5 pošlu dodaz na Papoucha-to je divné.</p><p>Zkoušel jsem i jiný protokol, i jiné dotazy na Papoucha, ale je to stále stejné. Papouch blikne , že přijal asi paket, ale zpět se nic do SYS48/49 nedostane. Pokud se to dostane, tak vyloženě náhodně , třeba po 20 x F5 nebo po 2-3 minutách po odeslání a nebo vůbec.<br />Je nějaká šance odzkoušet&nbsp; výstup 485 na Macru? Nevím, kde je chyba, jestli u Papoucha nebo u Macra nebo u mně. <br />Pls... a díky.</p>]]></description>
			<author><![CDATA[null@example.com (karel)]]></author>
			<pubDate>Sun, 02 Sep 2012 18:10:57 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2203#p2203</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2197#p2197</link>
			<description><![CDATA[<p>Je to jednoduché - použijte úplně stejný program, ale <strong>ram[]</strong> nahraďte za <strong>text[]</strong>.<br />Jde o to, že je škoda &quot;zabít&quot; si pole ram[] na zpracování textu.</p><p>Každopádně, pro ovládání RS485 nebo RS232 modulu není potřeba něco složitého vymýšlet, jde jen o správné sestavení textu pro odeslání do modulu - viz funkce serial_text_out() - popis chování funkce je na WiKi.<br /></p><div class="codebox"><pre><code>serial_text_out(&#039;*B$OS&#039;, _rs485in, _rs485s , 0x0D);
//
// výsledný odeslaný text: *B$OS + obsah _rs485in + obsah _rs485s + ASCII znak 0x0D</code></pre></div><p>Samozřejmě záleží na protokolu, kterému cílové zařízení rozumí. Tady je příklad pro zařízení které rozumí jednoduchým textovým příkazům.</p><p>Složitější to bude až v okamžiku kdy se bude provádět příjem ze zařízení. Potom bude potřeba správně přijaté data zpracovat, vybrat si pouze platnou odpověď, a vytáhnout z ní požadované informace.<br />Proto např. výše uvedený ukázkový příklad přijaté znaky ze sériové sběrnice ukládá do pole (původně ram[], nově text[]), a následně zpracovává obsah tohoto pole. Pokud tam nalezne to co hledá, tak to (v tomto příkladě) vypíše na webovou stránku (konzole).</p>]]></description>
			<author><![CDATA[null@example.com (adamn)]]></author>
			<pubDate>Fri, 31 Aug 2012 16:40:52 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2197#p2197</guid>
		</item>
		<item>
			<title><![CDATA[Re: SDS MICRO Light E - RS485]]></title>
			<link>https://forum.sds.an-d.cz/viewtopic.php?pid=2196#p2196</link>
			<description><![CDATA[<p>Také sleduji pravidelně toto téma, ale naprosto chápu, že v těch vedrech co byla tento a hlavně minulý týden, se nikomu nechtělo nic vymýšlet....</p><div class="quotebox"><cite>karel napsal:</cite><blockquote><p>Převodník od Papoucha jsem si již koupil, nechce se mi to vymýšlet - nebyl by již ten slibovaný prográmek s text[]??<br />Díky.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (krevla)]]></author>
			<pubDate>Fri, 31 Aug 2012 13:00:00 +0000</pubDate>
			<guid>https://forum.sds.an-d.cz/viewtopic.php?pid=2196#p2196</guid>
		</item>
	</channel>
</rss>
