====== 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 |}}