Téma: Časování
Pěkný den,
mam v plánu aplikaci SDS, ale nevím jestli má zařízení hodiny, tj, jestli můžu dát if (t == 07:00) do {rozsvit();}?
Nebo jestli to budu muset řídit nějakým serverem, kde poběží třeba debian a bude to mít v cronu?
Ruda
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz
Network Monitoring System - SDS - Síťový Dohledový Systém
Nejste přihlášen. Přihlaste se, nebo se zaregistrujte.
Stránky 1
Chcete-li přispívat, musíte se přihlásit nebo projít procesem registrace.
Pěkný den,
mam v plánu aplikaci SDS, ale nevím jestli má zařízení hodiny, tj, jestli můžu dát if (t == 07:00) do {rozsvit();}?
Nebo jestli to budu muset řídit nějakým serverem, kde poběží třeba debian a bude to mít v cronu?
Ruda
Zařízení má "hodiny", tj. čas který je synchronizován s NTP serverem.
Pokud zařízení není synchronizováno, je tam ještě stále dostupný čas od spuštění (uptime).
Dát jednoduše "t == 7" nejde, protože taková podmínka by byla platná po celou dobu od 7:00 do 7:59 ...
Je potřeba se zamyslet a použít trochu sofistikovanější řešení - viz řada podobných příkladů taky různě na fóru.
Děkuju za infromaci, zase jsem si něco nepřečetl, bude snažit se polepšit. Nějak mi nedocházelo jak by mohl fungovat čas když tam není baterka pro udržování hodin.
Jestli můžu vědět máte teď v plánu nějaké zásadně lepší modely SDS boardů?
Dobrý den, podívejte se prosím na wiki případně eshop na zařízení SDS-TTC, které disponuje zálohovací baterií - takže je pak možné používat NTP čas pro řízení automatizace jako spolehlivý zdroj - nebereme-li v úvahu nějaké podstatené výpadky internetové konektivity
Pěkný den,
mam v plánu aplikaci SDS, ale nevím jestli má zařízení hodiny, tj, jestli můžu dát if (t == 07:00) do {rozsvit();}?Nebo jestli to budu muset řídit nějakým serverem, kde poběží třeba debian a bude to mít v cronu?
Ruda
Ahoj,
např. pomocí
if (sys[10] == 8 ) odesli_data_na_sql();
odesílám každou 8 mou sec. v každé minutě data na sql server
L.
if (sys[10] == 8 ) odesli_data_na_sql();
odesílám každou 8 mou sec. v každé minutě data na sql server
Pozor na tohle. Pokud bude odesli_data_na_sql() kratší než 1sec, tak se to zavolá vícekrát - protože ta podmínka vyjde jako platná po celou dobu kdy sys[10] je osm.
Jo, tohle mi taky dělalo u něčeho a musel jsem doplnit wait()
lepší než wait je nastavit si příznak že jsem to co jsem udělat chtěl, tuhle minutu už udělat, asi takhle:
main
{
if (thisminute!=sys[9]){
Tady volám to co chci volat jednou za minutu
thisminute=sys[9];
}
}lepší než wait je nastavit si příznak že jsem to co jsem udělat chtěl, tuhle minutu už udělat, asi takhle:
main { if (thisminute!=sys[9]){ Tady volám to co chci volat jednou za minutu thisminute=sys[9]; } }
Anebo takhle :-)
Ale je fakt, že se mi už stalo, že v podstatě v jedné vteřině, v jednom cyklu, něco vykonal 2x .... a pak šel na wait()
Anebo v té vteřině udělal více cyklů .... nevím ...
LeosL napsal:if (sys[10] == 8 ) odesli_data_na_sql();
odesílám každou 8 mou sec. v každé minutě data na sql serverPozor na tohle. Pokud bude odesli_data_na_sql() kratší než 1sec, tak se to zavolá vícekrát - protože ta podmínka vyjde jako platná po celou dobu kdy sys[10] je osm.
Jo jasně-to se právě řeší v odesli_data_na_sql(); jinak se to stihlo zapsat i 6*
L.
Stránky 1
Chcete-li přispívat, musíte se přihlásit nebo projít procesem registrace.