1 Naposledy upravil: ringojr (2014-10-26 22:11:31)

Téma: Zvýšená nestabilita po update FMW

Mám Micro Light E RS 232 a před týdnem jsem porušil zlaté pravidlo „Jestliže něco funguje nešťourej se v tom“ a historický FMW 230414 (či možná dokonce i 301113) nahradil aktuálním z 9.9.2014.
Mám na tom řízení TČ kdy využívám jak komunikaci přes RS232, 16 teploměrů,  PWM, odesílání dat na portál  a vlastní webovou stránku. Stále je to ve vývoji  a většinou mám v e Firefoxu otevřenu svoji stránku user.html založenou na demu, doplněnou o SVG a načítá přes get více jak 100 hodnot a v druhé záložce stránku SDS_C (cgi_pg?p=6) z které občas volám změnu uživatelských  proměnných. Doposud vše šlapalo jako hodinky (když jsem vyměnil zdroj který dříve způsoboval nečekané restarty) ale po update FMW  se chování změnilo.
Pokud dám refresh stránky uživatelských proměnných tak poměrně často dochází k restartu (nebo změně více uživatelských proměnných sys 140-149 což nejsem momentálně schopen přesně rozlišit).  V závěru sekce init mám odeslání mailu na pevnou adresu s pevným textem že došlo k restartu, ale to nyní nefunguje. Nefunguje to ani po vypnutí a zapnutí SDS přestože před tím s tím nikdy problém nebyl. Vždy v 9.00 ráno odesílám mail s různými sumacemi, tj. mnohem náročnější mail a ten přitom odejde bez problémů.
Ve vlastním SDS-C jsem se skoro nehrabal (jen ovládání relé přímo přes  konkrétní SYS() jsem nahradil obezličkou přes DEFINE) a v HTML kódu stránky jsem zaokrouhloval ve grafice SVG na jedno desetinné místo z původně vygenerovaných 5-6 pozic za tečkou.
Nepozorujete někdo podobné problémy či máte nějaký tip v čem mohl nastat nyní problém? Děkuji

2

Re: Zvýšená nestabilita po update FMW

FW 9.9. by melo byt stabilni, podobne stiznosti jsem zatim neslysel (az ted).

Zkuste to chvili provozovat bez pripojene RS232, jestli tam bude rozdil.

Dale doporucim kontrolu SDS-C programu, jestli se tam spravne pristupuje k http_get() a dalsim podobnym (tj. nevolat dokud neni predchozi funkce, napr. odeslani emailu, plne ukoncena). To by take mohla byt pricina: stary FW prerusil predchozi cinnost, napr. odesilani emailu, kdyz mu SDS-C program vnutil napr. HTTP-GET (ale pak zacaly vselijake problemy). Novy FW to uz neudela, naopak zahodi novy pozadavek dokud neni vyrizeny ten stary (takze se to nerozsype). Je potreba dusledne v programu sledovat stavy a navratove hodnoty.

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

3

Re: Zvýšená nestabilita po update FMW

Provozování bez RS232 se ztratí většina funkcionality programu ale hlavně to asi tím nebude. Pokud nechám SDS žít s interním programem v klidu tak to jede bez problémů mnoho hodin . Pokud se v tom začnu hrabat pomocí stránky  změn uživatelských proměnných (implementovanou ve FMW) a zejména pokud dám její refresh tak začnou problémy.
Adame mohl byste trošku rozepsat co se děje po resetu – jak je nulována paměť, jak jsou inicializovány  systémové proměnné apod.
Mě hlavně zaráží že po resetu přerušením napájení , kdy prokazatelně dojde k vykonání fce init() se neprovede odeslání mailu v jejím závěru.  Přitom tomu nepředcházejí žádné fce typu http_GET a pod, jen odeslání textu přes RS232, čtení  teploměrů , takže tam je i dostatek času pro nějakou inicializaci a předpokládám že sys[65] je v rámci restartu správně inicializována. Napadá mne, zda to  nemůže i souviset s vynucenou změnou NTP serveru – zda  synchronizace času nekoliduje s odesláním toho mailu?

4

Re: Zvýšená nestabilita po update FMW

Po resetu je vše nastaveno "na nulu".

Používá zařízení DHCP pro získání IP adresy ? Pak může čekání na IP adresu trvat déle, a když se předtím pokusí odeslat email tak to samozřejmě neprojde (jaký je tam vůbec výsledek sys[65] a co je v logu?)

NTP klient je zcela samostatný. Pouze HTTP, UDP a email funkce v SDS-C se navzájem vylučují.

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

5

Re: Zvýšená nestabilita po update FMW

Používá statickou adresu. Řekl bych že bude nějaký problém v inicializaci. Zkusil jsem jednoduchý program:
#define PREV_CAS ram[36]   //minutový časovač
#define AKT_CAS ram[40]
init {
echo('Start programu');
smtp_send('adresa@gmail.com', 'init Doslo k restartu SDS init','init doslo k restartu SDS init');
PREV_CAS = sys[8] * 100 + sys[9];    //připravíme čas HHMM
}

main {
AKT_CAS = sys[8] * 100 + sys[9];    //připravíme čas HHMM
if ((AKT_CAS-PREV_CAS >= 1) || (AKT_CAS-PREV_CAS < 0)) {         //od minulového časovač => akce
PREV_CAS =  AKT_CAS ;        //
smtp_send('adresa@gmail.com', 'Odeslani po jedne min','Odeslani po jedne min');
    }
}

Fungoval bez probémů. Pak jsem SDS vypnul a cca 90 min se věnoval něčemu jinému.
Po zapnutí jsem změnil v kódu časový interva místo 1 na 100,  aby mě neotravovaly časté maily. Když jsem se však podíval na ty poslední maily přišlé po zapnutí tak první byl mail z těla main a cca za 20 sec následoval teprve mail ze sekce init.

Poslední uživatelé    
Čas    IP
17:50:25 28.10.2014     (SDS-C REQUEST) 192.168.2.9
17:50:29 28.10.2014     (SDS-C ERASE PRG) 192.168.2.9
17:50:30 28.10.2014     (SDS-C UPLOAD) 192.168.2.9
17:51:18 28.10.2014     (in) 192.168.2.9


Systémová historie    
Čas    Událost
17:49:43 28.10.2014     Zařízení zapnuto
17:49:43 28.10.2014     Relé RE1: VYP
17:49:43 28.10.2014     Relé RE2: VYP
17:49:43 28.10.2014     Výstup pin D0: log0
17:49:44 28.10.2014     Ethernet připojen



Historie OSI7    
Čas    Událost
17:50:01 28.10.2014     77.75.72.48, SMTP ODESLÁNO OK
17:50:32 28.10.2014     77.75.72.48, SMTP ODESLÁNO OK