U vstupních modulů na sběrnici Modbus se někdy setkáváme s problémem při čtení krátkých vstupních signálů, jako je třeba stisknutí tlačítka nebo signál z čidla přítomnosti. Latchovací funkce ve vstupních modulech umožňuje načíst i krátké impulsy, které by mohly být při vzorkování přehlédnuty. V následujícím textu si ukážeme, jak je v I/O modulech implementována a především jak ji využít při čtení vstupů v programu v PLC.
V modulu jsou vstupy čteny buď pomocí přerušení, nebo – častěji – v rámci hlavní programové smyčky, která vyčítá vstupy s frekvencí řádově 10 Hz. Vstupní impuls by tedy mít délku alespoň 100 ms, což nebývá problém zaručit. (Pro detekci impulsů s ještě kratší délkou lze použít čítací vstupy, které zpracovávají vstupní signál o frekvenci až 50 Hz.)
Běžné vstupní signály jsou z modulu do PLC čteny periodicky s takovou frekvencí, jakou dovolí počet I/O modulů na sběrnici (resp. počet dotazů), délka telegramů a případně mezera mezi telegramy. Typicky se signál obnovuje 1 - 2× za sekundu. Pro některé velmi krátké signály to ale nemusí být dostatečně často a může dojít k hazardnímu stavu, který vidíme na obrázku vpravo.Jelikož se druhý vstupní impuls „trefil“ mezi dva okamžiky odečtu, vstupní modul vrátil logické nuly a PLC vůbec nezjistilo, že tento krátký impuls nastal.
Některé vstupní moduly, jako např. Domat R420, R430, RCIO, RMIO, RXIO, ale i MW240 nebo MW241, umožňují i tyto krátké impulsy zachytávat a podržet v paměti modulu pro vyčtení při příštím vzorkování. K práci s takto zachycenými neboli latchovanými hodnotami slouží několik Modbusových registrů. Jejich čísla mohou být u různých modulů různá, princip funkce si ukážeme na příkladu s malým I/O modulem MW240. Ten má dva reléové výstupy a dva binární vstupy. Tyto vstupy budeme číst právě pomocí latchovacích funkcí.
Latch state: Konfigurační registr. Můžeme určit, zda se bude zachycovat logická 1 – tedy náběžná hrana vstupního signálu (jako je tomu na předchozím ilustračním obrázku), nebo logická 0. Většinou chceme zachycovat náběžnou hranu a proto je třeba při konfiguraci I/O modulu pomocí programu ModComTool toto nastavení zadat a zapsat do paměti EEPROM. Z programu v PLC pak již s tímto registrem komunikovat nemusíme.
Latch enable: Zápis náběžné hrany resetuje registr Latched value a znovu „natahuje past“. Aby bylo možné zapsat náběžnou hranu, musí být předtím do registru prokazatelně zapsána log. 0. To se kontroluje čtením podle kroku (5) v obrázku výše.
Latched value: Z tohoto registru se vyčítá zachycená hodnota, je to vlastně paměť klopného obvodu.
V příslušném registru jsou bitově namapovány všechny digitální vstupy modulu, takže každý vstup je možné zpracovávat zvlášť. Možná to vypadá poněkud komplikovaně, ale ošetření v Merbon IDE tak složité není. Musíme jen definovat příslušné proměnné (latched value pro čtení, latch enable pro čtení i pro zápis) a použít jednoduchý funkční blok (nebo – pro malý počet vstupů – tuto strukturu tří funkcí kopírovat přímo v programu):
Funkce TOF (zpožděné vypnutí) zajistí prodloužení detekovaného impulzu tak, aby ho šlo bezpečně zpracovat v aplikačním programu. Obvykle stačí 1-2 s. Na vstupy bloku se připojí latched value (LI) a latch enable pro čtení a pro zápis (LE_read a LE_write):
Proměnná pulz1_out už obsahuje detekovaný a prodloužený impulz ze vstupu DI1 modulu MW240. Při testování si pak můžeme důležité hodnoty otevřít v grafu a vidíme, jak i impuls, běžným čtením přímo ze vstupu DI1 zmeškaný, je zachycen a prodloužen v proměnné pulz1_out právě díky latchovací funkci.
Příklad projektu s prototypem I/O modulu MW240 je ke stažení níže. V případě dotazů kontaktujte prosím technickou podporu na support@domat.cz.