cz
en

Latchování, co to je a jak na ně

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í.

Latchovací logika pracuje takto:

  • Zápisem náběžné hrany log. 1 do registru latch enable vynulujeme případně zachycený předchozí impuls v latched value a „nastražíme past“ (stav 1).
  • Pravidelným čtením latched value kontrolujeme, zda nedošlo k záchytu impulsu (stav 2).
  • Jestliže v latched value vyčteme log. 1, od předchozího čtení byl zachycen impuls (stav 3).
  • Zpracujeme ho v aplikačním programu.
  • Do registru latch enable zapíšeme log. 0 (stav 4) a počkáme, až se hodnota propíše do I/O modulu – zkontrolujeme periodickým čtením tohoto registru.
  • Jakmile se v registru latch enable objeví log. 0 (stav 5), tedy došlo k propsání, zápisem náběžné hrany log. 1 do registru latch enable zachycený impuls v latched value vynulujeme a znovu „nastražíme past“.

Jde v podstatě o RS klopný obvod. V Modbusové tabulce k němu najdeme tři registry:

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

Soubory ke stažení

velikost 417 KB