jaroslav SW ostatní 3. 10. 2022 9:33 17. 10. 2022 12:45

Zdravím,
chtěl jsem dosáhnout stavu, kdy po hot restartu celý dům se 'znovurozsvítí' a 'znovusepne' do stavu před restartem.
Bohužel, jak prvky v knihovně iControlLib (např. fb_iLight), tak prvky z LightLib32 ( např. fbLight2Web) nastaví výstup na 0 (nepřevezmou předchozí stav z RETAIN výstupní proměnné). Lze to nějak vyřešit?



 

Odpovědi 5

Luboš Urban 3. 10. 2022 9:52

Tento požadavek nelze vyřešit pouhým zálohováním výstupních proměnných. Funkční blok se v každém cyklu přepočítá a pokud je signál připojený ke vstupu up v log. 0, což v prvním cyklu je, tak se nerozsvítí. Zároveň výstupní proměnnou blok nenačítá, takže nemá jak zjistit, že výstup je sepnutý. To by musely být bloky napsané tak, že by proměnná byla jako VAR_IN_OUT.

V dané situaci se to dá vyřešit tak, že použijete funkcí ProgramIsChanged(), která vrací 1 v prvním cyklu po restartu. Když bude hodnota této funkce jedna a zároveň výstup také v 1 nebo bude stisknuté tlačítko pro rozsvícení, tak se výstup sepne. To by řešilo i výpadky napájení, nejen změnu programu. Pokud by šlo pouze o změny programu, pak by bylo nejlepší provádět je v režimu on-line změny a pak by k restartům nedocházelo.

 

jaroslav 9. 10. 2022 18:54

Zdravím,
děkuji za návrh řešení.
Po nastavení výstupu s RETAIN promennou na 1 a provedením Hot Restart se výstup vynuluje ve fyzickém CP1000, v nejjednodušším projektu se simulátorem CP1005 (přiložený projekt) se také vynuluje, po výměně za simulátor CP2005 zůstane nastavené na 1.
Může uvedené řešení fungovat v řadě Foxtrot1 ?
(Retain proměnné které ve Foxtrot1 nastavuji ručně např. přes Webmaker si stav zapamatují).

Luboš Urban 11. 10. 2022 19:34

Chování se liší podle typu centrální jednotky. Zatímco u centrálních jednotek CP-10xx dochází při restartu k reinicializaci periferních jednotek na CIB a tedy nutně musí dojít k rozepnutí a opětovnému sepnutí relé, u centrálních jednotek CP-20xx se při restartu programu reinicializace nevyvolá a tudíž relé zůstane sepnuté. Pro starší jednotky při přehrávání programu je tedy nutné použít změnu programu v on-line režimu (modrá kytička jako symbol on-line změny v záhlaví okna Mosaicu). Režim se zapne kliknutím na symbol kytičky a výběrem volby Zapnout on-line změny, první nahrávání po zapnutí tohoto režimu proběhne ještě s restartem.

V přiloženém programu je navíc ještě jeden problém, kvůli kterému se hodnota výstupní proměnné vynulovala. Centrální jednotky CP-10xx pracují jen s proměnnými VAR_GLOBAL RETAIN, nikoli VAR RETAIN. Aby se proměnná retOut opravdu zálohovala, musel byste ji deklarovat jako globální.  

jaroslav 15. 10. 2022 22:56

Nyní mi 'znovurozsvícení' funguje i ve Foxtrotu 1, přesunul jsem vše do VAR_GLOBAL RETAIN, děkuji.

Online změny jsem přestal dříve používat, občas proměnné zobrazovaly nesmyslné hodnoty a spravilo se to až po hot restartu.
 

Luboš Urban 17. 10. 2022 12:45

K on-line změnám, jsou situace, kdy on-line změnu použít nelze, např. po úpravách hardwarové konfigurace nebo obecně kdykoliv, kdy se mění inicializační tabulky, tzn. např. po přenastavení komunikačních kanálů, dataloggeru apod. Na to ale Mosaic při vysílání programu upozorňuje, že je nutné provést restart. Jinak jsem ale žádný takový problém nezaznamenal.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.