Jste zde

TEST - HMI panel Millenium Touch MTP6/50 - 3.díl - programování Macro

Naprogramování Macra v HMI panelu umožňuje prostřednictvím programování podobné jazyku C například velmi jednoduše realizovat i složité algoritmy číslicového zpracování signálů a využít velké výpočetní možnosti 400 MHz 32bitového procesoru. Proto se dnes krátce podíváme "jak na to" a jak si naprogramovat jednoduché zpracování dvou analogových signálu ze vstupu PLC Millenium3.

Programování funkcí Macro

Výhoda HMI panelů pro realizaci složitějších aplikacích může být možnost naprogramování a použití tzv. Macra. Jde o možnost naprogramování různých více či méně složitý funkcí, které pak lze jednorázově či opakovaně spouštět na základě stisknutých tlačítek, dosažení úrovně hodnot, prošlého času, přepnutí zobrazení (přepnutí okna), zapnutí HMI panelu atd. I díky možnosti použití 32bitových datových typů Integer a Float tak lze velmi snadno naprogramovat i složitější výpočetní algoritmy, které jednoduchá PLC nezvládnou, zatímco 400 MHz 32bitový procesor v HMI panelu je provede hravě.

Macro se konkrétně vytváří volbou "Macro..." v záložce "Tools". Následně se otevře okno seznamu již vytvořených Macro, kterých lze vytvořit i několik desítek a spouštět je na sobě nezávisle různými situacemi v panelu, přičemž vždy má ve vykonávání přednost Macro s nejnižším identifikačním číslem ID. Proto je nutné při jejich vytváření je vhodně "zařadit" podle ID. Obvykle Macro ID0 by se mělo nechat pro program určený k automatickému spuštění po zapnutí a naběhnutí firmwaru panelu, tedy současně s vizualizací na displeji. Ale obecně lze vybrat Macro s libovolným ID a definuje se to v  hlavním nastavení vytvářeného programu v softwaru EasyBuilder8000 (Edit->System Parameters-> záložka "System Settings"a položka "Execute init. MACRO when power on").

Pokud má být nějaké Macro automaticky spuštěno / provedeno hned po naběhnutí HMI panelu, je nutné jej nadefinovat v hlavním nastavení. Při souběhu spuštění více Macra má přednost ve vykonávání vždy Macro s nižším ID.

Programovací jazyk Macra svojí strukturou je velmi podobný jazyku C, takže uživatelům / programátorům znalým alespoň základů "Céčka" budou všechny základní příkazy a jejich syntaxe hned jasné a srozumitelné. Pro přístup do paměťových registrů HMI panelu i připojeného PLC, použití různých matematických funkcí, pro zpracování sekvence znaků i například příjem a vyslání dat na komunikační rozhraní panelu pak slouží knihovna speciální tzv. API příkazů (zkratka pro Application Programming Interface) .

API se v programu Macra volají podobně jako podprogramy. Pro jejich snadné nalezení a použití slouží při psaní Macra vlevo dole tlačítko "GET/SET FN...", které otevře velmi dobré konfigurační okno, kde snadno bez nutností studovat syntaxi jen vybere aktuálně platné předdefinované proměnné či paměťové registry HMI či PLC obsahují potřebné hodnoty ke zpracování a samotná syntaxe se do programu již sama správně doplní. Samozřejmě po nějaké době, když se člověk syntaxi již naučí, může je psát rovnou, ale možnost vždy si takto jednoduše vybrat potřebnou funkci z menu je velmi vítaná.

V okně programování Macra je možné přes tlačítko "GET/SET FN..." volat seznam navigační okno pro výběr vhodné funkce, včetně jejího popisu a nabídky výběru vhodných proměnných.

Mimo to je pak k dispozici na výběr i celý popsaný seznam vnitřních stavových bitů a registrů HMI panelu, včetně přístupu k hodnotám vnitřního taktu či RTC hodinám, které lze velmi dobře přímo v Macru použít pro naprogramování reakce systému na různé provozní stavy či možnost periodického spouštění vykonání nějaké akce či části programu po uplynutí předefinovaného času. Nejmenší přesná časovací jednotka je pak 0,1 sekundy, což lze velmi dobře využít například pro časové vzorkování pomalých signálů, výpočet průměrů jejich hodnot či různé diskrétní / číslicové zpracování signálu (například diskrétní integraci jejich průběhů).

Předání dat mezi 16bitovými LW nebo RW registry HMI panelu a 32bitovými proměnnými nadefinovaných v Macru probíhá zcela automaticky, tedy do proměnné v Macru nadefinované jako Int (32 bitový Integer) se automaticky přenesou a složí hodnoty dvou po sobě jdoucích 16bit. registrů panelu (např. registry LW 1 + LW 2, LW 11 + LW 12 atd.), zatímco pro proměnné nadefinované jako "short" (16bitový Integer) se samozřejmě přiřadí jen ta hodnota z toho konkrétního nastaveného registru (např. LW 1, LW 2 či LW 11 atd.). V prvním případě je však nutné mít na paměti, že při definování proměnné například na zobrazovací ploše ve funkčním bloku "Numeric Input" se musí vždy vyhradit 2 registry panelu, tedy například jednu proměnnou definovat na adrese LW 1 a druhou až na LW 3. Jinak lze v Macru podobně jako v jazyku C vytvářet vektory / matice (pole hodnot).

Příklad použití Macra po výpočet

Jako jednoduchý, ale typický příklad pro použití Macra, jsem použil vytvoření úpravy dvou signálů získaných ze základního 10bitového analogového vstupu PLC Millenium3 (tedy poskytující rozsah hodnot 0 až 1023) vynásobením každého vlastním "korekčním koeficientem" a přičtením vlastního nastaveného offsetu a následně provedení jejích okamžitého i dlouhodobého průměru.

Okamžitý průměr se počítá jako obyčejný průměr aktuálně platných upravených hodnot vstupních signálů, zatímco dlouhodobý průměr je tvořen postupným průměrováním vždy předchozí průměrné hodnoty s aktuální taktovací / vzorkovací periodou 10 sekund.  

Ukázka vytvořené obrazovky se zobrazením hodnoty dvou signálu ze dvou fyzických 10bitových analogových vstupů připojeného PLC Millenium3, bloky vkládání hodnot korekcí a offsetů a zobrazení výpočtů realizované v periodicky každých 10 sekund prováděného Macra. Zde jsou zadávací bloky nastaveny 32bitový formát Integer.

Tento jednoduchý příklad by samozřejmě mohl být vytvořen i přímo v blokovém schématu v PLC, ale však pouze s využitím 16bitového výpočtu oproti možnosti použít 32bitového výpočtu v HMI. Jaký je v tom v praxi rozdíl, je dobře vidět v mé ukázce.

Zatímco v prvním případě jsem použil pro zadávání hodnot korekčních koeficientů a offsetu i výsledných výpočetních hodnot jen 16bitový režim (v blocích HMI hodnoty definované jako Unsigned 16bit. Integer a Macru jako datové typy "short"), čímž se výpočetní rozsah smrskl na pouhý rozsah hodnot 0 až 65 535, v případě 32bitových proměnných "Unsigned Int" lze bez problémů pracovat i zobrazovat výsledky na mnoho míst (0 až 4 294 967 298 ). Já konkrétně použil 6 celých a 1 desetinné = celkem 7 míst, které jsou například potřebné při násobení dvou hodnot v řádu tisíců, což je v mém příkladu aktuální, protože i hodnoty zadávané s desetinným číslem se z důvodu použití nedesetinného formátu integer jsou ve výpočtu reprezentovány jako celá čísla (např. místo zadané hodnoty korekce 99.9 se ve výpočtu využije 999 přičemž výsledek následně je opět reprezentován jako desetinné číslo, čímž je všechno výpočetně pořádku).

Ukázka porovnání možných rozsahů výpočtu provedení výpočtu v plně využitém rozsahu 16bitového formátu neznaménkového Integeru s max. zobrazitelnou pouze hodnotou 6553.5 (obr. vlevo) a je pouze částečně využitého 32bitového formátu Integeru (obr. vpravo).

Závěr 3. dílu

Dnes jsme si ukázali základ, jak prakticky na Macro. Pokud aplikace vyžaduje od řídicí jednotky i něco víc než základní ovládání čtením dvoustavových vstupů a spínání výstupů, je možnost celkem rychle provádět výpočty, práci s maticemi a vektory hodnot či i složitější práci se znakovými řetězci velmi výhodná. Pro tyto "manipulace" s daty je stále klasický příkazový řádek to nejrychlejší a nejúčinnější programování.

Užitečné odkazy k PLC a HMI Crouzet Millenium:

Odkazy na předchozí články o PLC Millenium 3:

 

Přílohy: 
PřílohaVelikost
Package icon testzakladnimacro32bit.zip26.26 KB
Hodnocení článku: