Digitální vstupy: funkce Debounce, Counter a Direct Switch

Digitální vstupy na kontrolérech Unipi jsou vybaveny užitečnými přídavnými funkcemi, které umožňují zvýšit odezvu a přesnost regulace. Tyto funkce jsou řízeny mikroprocesorem samotné I/O desky a jsou tak nezávislé na řídicím softwaru, což výrazně zvyšuje jejich rychlost odezvy.

Patron
Neuron
Axon
Extension

Funkce Debounce je navržena pro vykrývání nepřesností, se kterými se typicky setkáte při přepínání stavu digitálního vstupu. Tyto chyby obvykle vznikají v případěch, že je vstup spínán mechanickým prvkem (např. přepínač). Signál generovaný při stisknutí a puštění spínače může vypadat např. takto:

Pro odstranění těchto odchylek by normálně bylo nutné zpomalit reakci vstupu na změnu stavu. Na úrovni hardwaru lze tohoto docílit například zapojením RC prvku. Pro usnadnění práce ale můžeme toto zpomalení provést i na úrovni softwaru.

Funkce Debounce detekuje změnu na digitálním vstupu. Pokud je signál kratší než předdefinovaný debounce čas, je ignorován. Změna je předána řídicímu SW až tehdy, pokud je délka změny delší než definovaný interval.

Z výroby jsou všechny digitální vstupy na jednotkách Unipi nastaveny na debounce interval 5 ms.

Nyní se podívejme, jak lze debounce konfigurovat v Mervis IDE. Nastavení se provádí přes vstupy zařízení, dvojitě proto klikněte na název vašeho kontroléru Unipi pod Modbus TCP kanálem. Na hlavním panelu se objeví záložka se všemi registry kontroléru. Pod kolonkou Název naleznete vyhledávací řádek, do kterého zadejte “DI_”. Zobrazí se seznam všech dostupných digitálních vstupů, či přesněji řečeno jejich datových bodů.

Ze seznamu vyberte vstup, který chcete konfigurovat. V panelu Vlastnosti jsou zobrazeny všechny možnosti nastavení daného registru. Nás zajímá kolonka Debounce, jejiž hodnota určuje délku debounce intervalu v milisekundách.

Zadání Vámi žádané hodnoty je změnou konfigurace modulu PLC, kterou nelze aplikovat nahráním sestavy. Pro uložení konfigurace modulu se řiďte návodem Unipi - konfigurace modulu.

Pokud měníte nastavení více registrů, můžete všechny změny uložit najednou později.

Druhou zajímavou funkcí digitálních vstupů je čítač. Jde o vysokorychlostní počítadlo náběžných hran signálů pro změnu stavu digitálního vstupu, které je (stejně jako funkce Debounce) nezávislé na řídicím softwaru. Jednoduše řečeno, čítač dokáže velmi přesně sčítat i velmi krátké pulzy.

Programy vytvářené v Mervis IDE nejsou dostatečně rychlé pro detekci rychlých změn digitálních vstupů (např. pomocí funkčního bloku “Pulse Counter (BD30). Pokud například vlastníte autodráhu a chcete počítat průjezdy autíček cílovou čárou, samotný Mervis IDE nebude schopný je detekovat - při rychlosti až 100 km/h a délce autíčka cca 10 cm trvá průjezd přes senzor sotva 4,5 ms.

Hardwarový čítač je závislý na nastavení intervalu funkce debounce. Interval funkce Debounce je třeba nastavit na kratší dobu, než je očekávaná délka sledovaných pulzů.

Čítačem jsou standardně vybaveny všechny digitální vstupy a pro jeho používání není třeba žádných nastavení. Výstupem čítače je globální proměnná - například vstupu Neuron_L523_DI_1.01 odpovídá proměnná Neuron_L523_CNT_1.01.

Jako důkaz nízké rychlosti softwarového čítače si prohlédněte následující program běžící v režimu ladění:

Jak můžete vidět, program detekuje náběžné hrany na vstupu Neuron_L523_DI_1.01 pomocí bloku Pulse counter (BD30), a zároveň na stejném vstupu pulzy počítá pomocí hardwarového čítače. Pokud mají čítače stejnou hodnotu, na kontroléru se rozsvítí dioda X1. Pokud čítače nejsou shodné, dioda zůstane zhasnuta.

V okamžiku spuštění ladění jsou oba čítače na hodnotě 0. Ke vstupu DI1.1 připojíme kontaktní spínač a začneme jej co nejrychleji stiskávat. Jak vidíte, softwarový čítač zachytil pouze 10 pulzů, zatímco hardwarový celých 54.

Čítačové proměnné jsou pouze pro čtení, nelze je proto nastavovat či resetovat přímo v programu či skrze prohlížeč proměnných v módu ladění. Tyto proměnné se nastavují pomocí proměnné “set”; u čítače Neuron_L523_CNT_1.01 má tato proměnná název Neuron_L523_CNT_1.01_set.

V neposlední řadě jsou jednotky Unipi vybaveny funkcí Direct Switch. Jak jsme zjistili výše, softwarová detekce změn není dostatečně rychlá - v některých projektech přitom způsobí problémy zpoždění už 20 ms, jako například u spínačů osvětlení. U nich očekáváme okamžitou reakci světla na stisknutí vypínače, na předchozích řádcích ale vidíme, že pouhým propojením digitálního vstupu s výstupem tohoto cíle nedosáhneme.

Direct Switch oproti tomu umožňuje nastavit digitální vstup tak, aby ovládal určený digitální či reléový výstup přímo skrze fyzické propojení. To je pevné a nelze jej měnit, lze jej pouze zapínat a vypínat. V I/O skupině 1 jsou na jednotkách Unipi digitální vstupy propojeny s digitálními výstupy. U skupin 2 a 3 pak jsou digitální vstupy napojeny na reléové výstupy.

U modelu Neuron L523 je vstup DI1.1 propojen s DO1.1. DI3.14 je pak propojen s RO3.14.

Konfigurace Direct Switch se provádí stejně jako u Debounce. V levém panelu dvojitě klikněte na název vašeho kontroléru Unipi pod Modbus TCP kanálem, v hlavním panelu vyhledejte příslušný DI, klikněte na nej a v panelu Vlastnosti vyhledejte kolonku Direct Switch.

Jak můžete vidět, tato možnost má rozbalovací menu obsahující různé módy funkce.

  • Blokování: funkce je vypnuta
  • Kopírovat: Stav DI je přenášen na DO či RO. Pokud se DI přepne na TRUE, stav DO se rovněž změní na TRUE. To samé platí i při změně stavu na FALSE.
  • Kopírovat inverzně: Stejný princip jako u předchozího módu, avšak inverzně, tj. pokud je DI ve stavu TRUE, DO se přepne do stavu FALSE a naopak.
  • Přepnout: Tento mód přepne DO při detekci náběžné hrany na DI. Tato funkce je praktická například pro ovládání světel digitálním spínačem.

Po dokončení konfigurace je nutné ji stáhnout do kontroléru. Viz návod Konfigurace modulu Unipi.

Funkce Direct Switch je rovněž závislá na nastavení Debounce. Aby změna na výstupu nastala okamžitě, je nutné Debounce nastavit na takovou hodnotu, která nezabrání požadované funkci Direct Switch, ale zároveň nepopře smysl funkce Debounce. Interval 5-10ms by měl v tomto případě stačit.