1

Téma: Nový firmware a 485 problém

Na macru a  firmwaru z roku 2012 jsem používal Papouchům 485 modul s 16 výstupy. Dnes jsem dal nový firmware - 180417 a modul přestal poslouchat.

program:

//**************vynulování 485 výstupů
serial_set(9600, 8, 1, 0); // 9600bps 8n1- nastav seriovou linku
serial_text_out('*B$OS1L', 0x0D);
wait (300);
serial_text_out('*B$OS2L', 0x0D);
wait (300);

a potom jen 
if (ram[173]==0)
{
serial_text_out('*B$OS4H', 0x0D);
wait (300);
ram[173]=1;
}
}
else
{
serial_text_out('*B$OS4L', 0x0D);
ram[173]=0;
wait (300);
}
}

Co se přihodilo v novém firmwaru? Rád bych dal nový firmware do všech SDS co mám, ale mám obavy. U tohoto macra při pokusu o nahrání starého firmwaru nefunguje user.htm, který tam byl 5 let....

Poraďte, díky.

2

Re: Nový firmware a 485 problém

Funkce 'serial_text_out()' se ve firmware chová úplně stejně jako funkce 'echo()'.
Jednu krátkou dobu tam byla chyba, která byla obratem opravena - nejspíše jste zrovna měl ten starý chybný FW.

Správně se má (pro zápis na sériový port) využít funkce serial_write() - viz příklady na http://wiki.merenienergie.cz/index.php/Sdsc_sysf

Zkuste udělat vzorový program který používá funkci serial_write().

Mimochodem, v SDS-C je příkaz 'else' poměrně omezený - nikdy neuměl pracovat s bloky kódu - tj. { a }.
Jste si jistý tím kódem co jste zde poslal?

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

3

Re: Nový firmware a 485 problém

Díky Adame.

Serial_text_out() jsem používal od roku cca 2012 až do dneška na nějakým neurčeným firmwaru. Dnes na 180417 nefungoval, poté jsem dal 280316 a jede vše naprosto v pořádku. To znamená, že na to zas 5 let namáknu :-).

else
Jistý si nejsem ničím, nejsem programátor, ale amatér. Pravda, je že podobných bloků v programu mám asi 10, použitých pro ovládání topení a vesle topím od 2012. Matně si ale pamatuji, že nějaké problémy při kompilaci byly...
Else tedy v bloku raději ne? Mám to ve všech cca 15 SDS, které jsem u vás koupil...mám to předělat?

podlaha_obyvak_zapnout
{
if (((( (((( (sys[8] == (ram[109]-83)) || (sys[8] == (ram[110]-82) || (sys[8] == (ram[111]-78)) || (sys[8] == (ram[112]-77)) || (sys[8]) == (ram[113]-100)) || (sys[8] == (ram[114]-99))  || (sys[8] == (ram[115]-98)) || (sys[8] == (ram[116]-97))  ))))  ))))
{
if (ram[171]==0)
{
serial_text_out('*B$OS2H', 0x0D);
wait (300);
ram[171]=1;
}
}
else
{
serial_text_out('*B$OS2L', 0x0D);
ram[171]=0;
wait (300);
}
}

4

Re: Nový firmware a 485 problém

Včera jsem si po delší době aktualizoval firmware. Zařízení píše, že mám aktuální verzi, ale po aktualizaci mi přestalo fungovat zařízení do, kterého posílám po RS485 data pomocí serial_text_ out .Následně jsem se na fóru dočetl, že bych měl používat serial: write. (- vyzkouším dnes) ale že tato chyba již byla odstraněna  a zústává zachována zpštná kompaktibilita příkazů.
Jak to tedy je s serial_text_out?

5

Re: Nový firmware a 485 problém

Platí to co je na WIKI.

Chyba byla dočasně na mojí straně, kdy se chování funkcí změnilo (z původního správného, na chvíli nesprávné, a to se pak napravilo zpět). Došlo k tomu souhrou nových požadavků od uživatelů které se kryly - ale přišlo se na to, a spravilo se to.
Chování tedy teď (v aktuálním FW atd.) odpovídá tomu, co je na wiki a jak to bylo původně myšleno.
Funkcí co pracují se sériovou linkou je více, takže každý si vybere tu "svoji" která mu vyhovuje.

Wiki = http://wiki.merenienergie.cz/index.php/Sdsc_sysf

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

6

Re: Nový firmware a 485 problém

Ano příkaz serial write funguje, jen mi připadá strašně těžkopádné plnit jednotlivá textová pole a pak teprve vše odeslat. Zápis na řádku v serial text out byl jednodušší a přehlednější. Nejde serial write také vyplnit jednodušším způsobem?