====== Automatický restart sběrnice 1-Wire ======
Sběrnice 1-Wire je náchylná k EMI, což může vést k "zaseknutí" senzorů a deaktivaci celé komunikace na sběrnici. S našimi PLC můžete vypnout napájení pro celou 1-Wire sběrnici a donutit senzory k resetování.
;;#
Patron \\
Neuron \\
Axon
;;#
V Mervis se vlastnost ovládající napájení zdroje pro 1-Wire bus nazvaná **OW_off_1**. Nastavením hodnoty na ''TRUE'' bude sběrnice odpojena od napájení a nastavením zpět na ''FALSE'' bude napájení znovu obnoveno.
Můžete resetovat napájení i ručně, ale pomocí atributů **commerror** můžete nechat Mervis, aby to dělal automaticky. Atributy jsou k dispozici na konkrétním zařízení nebo na celém kanálu a ukazují, kdy Mervis nedokázal přečíst datové body pro dané zařízení či celý kanál.
Zahájíme projekt v **Plném módu**, připojíme se ke kontroléru, vytvoříme program FBD a nastavíme úlohu provádějící tento program. Dále vytvoříme 1-Wire kanál pro 1-Wire sběrnici. **Nahrajte sestavu** a detekujte senzory 1-Wire. Váš pracovní prostor by měl vypadat následovně:
{{ :en:sw:01-mervis:automatic-restart-of-the-1-wire-01-workspace.png?direct |}}
Jak můžete vidět, máme jeden 1-Wire teploměr a ten jsme přejmenovali na "Kancelar". Nyní dvakrát klikněte na kanál **1-Wire** na **levém panelu**. Zobrazí se vám všechny dostupné datové body:
{{ :en:sw:01-mervis:automatic-restart-of-the-1-wire-02-attributes.png?direct |}}
Nejdůležitější je atribut **commerror**, který označuje, zda došlo k chybě komunikace s některými připojenými senzory. Typ atributu je bool a pokud je hodnota ''TRUE'', znamená to, že došlo k chybě komunikace a jakmile chyba zmizí, je hodnota ''FALSE''. Jak vidíte, atribut se stejným názvem je také v sekci **Kancelar**. Tento atribut označuje chybu komunikace pouze pro senzor zvaný **Kancelar**.
Program sestavy pro automatický restart kontroluje hodnotu **commerror** a když je ''TRUE'', musíme krátce nastavit **OW_off_1** na hodnotu ''TRUE'' a poté ji nastavit zpět na ''FALSE''. Ještě lepším řešením je, že když **commerror** zůstane v ''TRUE'', zkoušíme periodicky resetovat sběrnici. Pro tuto funkci můžeme použít blok **Pulse Generator (BD2)**:
{{ :en:sw:01-mervis:automatic-restart-of-the-1-wire-03-pulse-generator.png?direct |}}
Ve výchozím nastavení má blok viditelný vstup **Enable**. Pokud je vstupem ''TRUE'', bude generovat čtvercový signál na výstupu **Out**. Délka impulsu a pauzy můžete nastavit pomocí skrytých vstupů **Tfalse** a **Ttrue**.
Jak jste pravděpodobně uhodli, jako vstup použijeme atribut **commerror** a můžeme přímo propojit výstup **Out** s proměnnou **OW_off_1**:
{{ :en:sw:01-mervis:automatic-restart-of-the-1-wire-04-complete-project.png?direct |}}
Potřebujeme pouze změnit délku impulsu a pauzu mezi impulzy na rozumné hodnoty, např: Ttrue = 1 s a Tfalse = 4 s. **Nahrajte sestavu** a klikněte na **Start ladění**. Poté můžete odpojit snímač 1-Wire a uvidíte, že naměřené hodnoty jsou červené, atribut **commerror** je ''TRUE'' a **Pulse Generator** odesílá resetovací impulzy pro napájení sběrnice 1-Wire:
{{ :en:sw:01-mervis:automatic-restart-of-the-1-wire-05-debugging.png?direct |}}