Jste zde

Lua skripty - vlastní řídící funkce pro zásuvky Netio

V některých případech Vám u řízených Netio zásuvek nemusí vyhovovat žádný konkrétní integrovaný provozní režim a potřebuje si jeho funkci sami přizpůsobit. To lze v případě zařízení Netio PowerPDU 4C udělat snadno přímo v zařízená prostřednictvím vytvoření a vložení tzv. Lua skriptu.

Co je Lua jazyk ?

Lua je výkonný, efektivní, lehký a zabudovatelný skriptovací jazyk, který podporuje procedurální programování, objektově orientované programování, funkční programování, programování založené na datech a popis dat. Byl navržený jako skriptovací jazyk s rozšiřitelnou sémantikou vytvořený v roce 1993 trojicí programátorů Roberto Ierusalimschy, Luiz Henrique de Figueiredo a Waldemar Celes univerzitě v Rio de Janeiro v Brazílii. Název je odvozen z portugalského slova pro měsíc.

Programovací jazyk Lua není známý jako někteří jeho konkurenti. Rozhodně to ale neznamená, že je málo rozšířený. Používá se v mnoha počítačových hrách, ale i jiných aplikacích. Jedná se o jednoduše použitelný programovací jazyk, který je skutečně mezi výrobci herního softwaru z několika příčin oblíbený.

Patří do poměrně rozsáhlé a stále častěji používané skupiny vysokoúrovňových skriptovacích jazyků, do níž můžeme zařadit například populární Python, Perl, Scalu, Ruby, či na síle nabývající JavaScript. Tyto programovací jazyky nabízí vývojářům jednoduchou práci se strukturovanými daty, dynamicky typované proměnné, automatickou správu paměti (garbage collector) a mnohé další vysokoúrovňové techniky zjednodušující a zrychlující vývoj. Jazyk Lua je možné velmi jednoduše integrovat jako řídicí jazyk do různých aplikací, protože jeho interpreter je možné vtěsnat do pouhých 70 kB. Jazyk Lua je proto určen jako rozšiřující nebo skriptovací jazyk, protože je dostatečně malý, aby se vešel na nejrůznější hostitelské platformy.

Lua jazyku pro řízení zásuvek Netio

Jazyk Lua je použit i pro programování rozšiřujících funkcí v dálkově i automaticky řízených zásuvkách Netio, např. v provedení PowerPDU 4C (viz článek Netio PowerPDU 4C - vzdálené i automatické ovládání 230 V napájení).

I když jazyk Lua umožňuje vytvořit i náročné programy, při jeho použití pro vytvoření prográmku automatického řízení zapnutí / vypnutí přepnutí napájení či odesílání informačních emailů je poměrně jednoduché a stačí v nich použít jen základy jazyka. I s nimi lze však lze vytvořit s pomocí měřených veličin el. napětí, proudu, příkony a spotřeby každé zásuvky a časů a data vnitřních hodin a kalendáře velmi zajímavé možnosti regulace a kontroly napájených spotřebičů a zařízení.

 

Příklady využití Lua skriptů pro zásuvky Netio:

  • Libovolné časové řízení zapnutí a vypnutí zásuvek - např. po určité době zapnutého nebo vypnutého napájení. 
  • Automatické vypnutí zásuvek podle okamžitého nebo dlouhodobého zatížení větším či menším el. proudem než představený limit.
  • Automatické vypnutí napájení zásuvek při překročení nastavené hranice spotřebovaného výkonu Wh.
  • Bezpečnostní vypnutí zásuvek při poklesu vstupního napájecího el. napětí.
  • Odměřování spotřeby podle dnů v týdnu či denní době.
  • Automatické vynulování počítadel spotřeby v daném čase nebo po uplynulé době.
  • Kontrola kolísání napájecího el. napětí či odebíraného el. proudu - měření a uložení maximálních a minimálních hodnot.
  • Odesílání informačních e-mailů po el. spotřebě, příkonu apod.

Struktura Lua skriptů

Principiálně je struktura zápisu programu Lua skriptů je prakticky obdobná jako u jiných programovacích jazyků, např. C, a tedy již uživateli s nějakou základní zkušeností v programování již asi nebude příliš velký problém se ve struktuře Lua skriptu vyznat. Naopak pro programováním "netknuté" uživatele mohou být Lua skripty v zařízení NETIO i snadno přístupný "obecný úvod do programování".  Skrypt vložený do okna "Actions (Lua)" na webových stránkách každé jednotky Netio jednotky, která Lua skripty podporuje (např. Netio PowerPDU 4C ) se stává hned aktivní poté, co se zaškrtne položka "Enable rule". 

 

Lua skript nejdříve umožňuje si nadefinovat konstanty, tedy přednastavené hodnoty či proměnné pro řízení zapínání a vypínání zásuvek a různých limitních hodnot, jako například číslo ovládáné zásuvky, limity aktuální hodnoty el. napětí, spotřeby el. proudu či příkonu, cílové hodnoty počítadla spotřeby, hodnoty času nebo doby trvání apod. Zde například zadané hodnoty výběru zásuvek a intervalu časování:

 

Následně se definují tzv. funkce (function), což jsou krátké části programu (podprogramy), které mají vykonávat jednotlivé různé operace měření či řízení, např. funkce porovnávání aktuálních hodnot el. napětí, el. proudu či spotřeby s přednastavenými hodnotami, funkce zapínání / vypínání konkrétních zásuvek, funkce měření doby trvání zapnutí, vypnutí zásuvky či dobu trvání překročení limitních hodnot, funkce odeslání informačního emailu apod. Zde například základní funkce přepínání/zapínání/vypínání zásuvek:

 

Nakonec je zde "hlavní smyčka programu", která se hlavně skládá z volání výše vytvořených funkcí. Zde tedy volání funkce "switch", kterou jsme si nadefinovali výše:

Příklady provedení Lua skriptů a jejich zprovoznění v jednotkách NETIO

Výrobce zařízení Netio připravil velmi podrobné a inspirativní návody na použití různých Lua skriptů, které volně nabízí na svých webových stránkách - viz odkaz https://www.netio-products.com/cs/aplikacni-poznamky . Najdete zde zejména konkrétní návody na řešení nejběžnějších požadavků s velmi podrobným popisem, co která část programu nebo příkaz dělá.

Mezi základní návody pro úvod do Lua skriptů doporučuji vyzkoušet následující:

  • Automatické vypínání a zapínání zásuvky jednou za sekundu, ale pouze v nastaveném čase (například pouze přes den) - Aplikační poznámka AN02.

 

  • Automatické hlídání proudu protékající jednotlivými zásuvkami NETIO a když zásuvkou protéká proud nad nastavený limit, déle, než je nastavený čas, skript výstup vypne a pošle email - Aplikační poznámka AN03.

 

Lua skript funkce vypínacího elektroměru

Nakonec jeden příklad navíc - vypnutí zásuvky po překročení nasčítané el. spotřeby ve Wh. Níže uvedený Lua skript umožňuje nastavit hodnotu limitu spotřeby el. energie ve Wh (proměnná "output") pro konkrétní zásuvku (proměnná "spotrebalimit"), při které má být zásuvka vypnuta.  Hodnota "timeLimit" pak definuje, jak dlouho po překročení limitu má ještě být zásuvka ponechána před vypnutím. Následně dojde k automatickému vypnutí zásuvky a také k vynulování počítadla spotřeby. Tím je režim opět připraven a čeká na nové zapnutí zásuvky provedené "ručně" přes interní web Netio zařízení nebo vzdáleně pomocí externího webového příkazu, XML čin JSON souboru nebo Modbus-TCP příkazu. Pak se celý cyklus opakuje.

Tento Lua skript lze využít pro kontrolu spotřeby el. energie, zejména může být výhodné při napájení z 230VAC měniče z akumulátoru (solárně, větrně či agregátem dobíjené systémy), aby se zamezilo úplnému vybití akumulátoru.

Celý program pro vložení jako skript do zařízení NETIO PowerPDU 4C lze stáhnout zde: https://automatizace.hw.cz/files/story_automat/13381/luaskriptvypinacielektromer.txt. Protože tento skript byl vytvořen úpravou skriptu aplikační poznámky AN03 (viz Aplikační poznámka AN03), tak pro bližší popis struktury skriptu odkazuji na něj.

Závěr

Výhodou použití Lua skriptů v zásuvkách Netio je možnost si při dostatečném důvtipu vytvořit prakticky téměř neomezené množství různých aplikací, ať již má jít o různé měření či automatického řízení napájení.

Na druhou stranu běžný uživatel Lua skripty vůbec nemusí používat, pokud si vystačí s funkcí ovládání zásuvek podle kalendáře nebo jen prostřednictvím vzdáleného ovládání přes webové stránky, pomocí vizualizačních PC softwarů, jako například Node-Red nebo pomocí průmyslové MODBUS-TCP komunikace. Ta umožňuje ovládat zásuvky například z většiny programovatelných automatů PLC či programovatelných HMI panelů. Ta tento režim se podívám v dalším článku.

Odkazy:

Přílohy: 
PřílohaVelikost
Plain text icon luaskriptvypinacielektromer.txt1.12 KB
Hodnocení článku: