MicroLog.MyPower.CZ

… designed for freedom of automation.

Uživatelské nástroje

Nástroje pro tento web


mmdl

MMDL - Mypower Microlog Display Language

Popis jayzka

MMDL je jednoduchý programovací jazyk, určený pro specifikaci chování displaye v projektu Mypower Microlog. Sestává ze dvou sekcí. První sekcí jsou matematické výpočty hodnot, definice a nastavení hodnot proměnných. Druhou sekcí je vlastní obsah jednotlivých stránek displaye a nastavení funkcí ovládacích tlačítek displaye.

Ukázky programu

Komentáře

Komentáře jsou v programu realizovány pomocí „/⁄“ na začátku rádku. Vše s „/⁄“ na začátku je považováno za komentář a ignorováno.

Příklad komentáře v programu

// Obrazovky displaye 

Pozor! Komentáře na konci řádku nejsou funkční a jsou chápány jako syntaktická chyba

Příklad chybného komentáře v programu

$win = $win1 + $win2  // soucet vykonu

Znak „/“ je zde chápán jako operátor dělení. „/⁄“ musí být uveden na začátku řádku.

Příklad korektního komentáře v programu

// soucet vykonu
$win = $win1 + $win2  

Proměnné

Definice proměnných

  • $ Začátek proměnné.
  • @ Modifikátor určující že hodnota proměnné bude načtena z HW, například z analogového vstupu.
  • a .. z, A .. Z, 0 .. 9, _ název proměnné.
  • . Modifikátor určující počet desetinných míst v sekci pro definici obrazovek displaye. Může následovat číslo 0 .. 4 nebo písmeno R.
  • # Modifikátor vynucující ukončení názvu proměnné v sekci pro definici obrazovek displaye.

Základní proměnné

Proměnné začínají znakem $. Za tímto znakem se nachází název proměnné. V sekci pro výpočty název proměnné končí první mezerou, nebo znakem jiným než výše uvedené znaky pro název proměnné. Modifikátor pro desetinné místa i modifikátor vynucující ukončení je v sekci pro výpočty ignorován.

Příklady definice proměnných:

$uFV1
$uFV2
$iarray

V názvech proměnných jsou rozdílně vnímána malá a velká písmena. Proměnné $UFV a $uFV jsou dvě zcela odlišné proměnné

Speciální proměnné

Speciální proměnné se vyznačují použitím modifikátoru @. Jako hodnota proměnné bude použita aktuální hodnota na vstupu HW, nebo systémová proměnná, například aktuálně naměřená hodnota analogového vstupu dle jeho aktuálního nastavení, nebo také čas, datum, atd. Znakem následujícím pro modifikátoru @ je typ hodnoty, která má být použita.

Analogové vstupy

Následující příklady jsou různé hodnoty pro analogový pin 11.

$@a11 => průměrná hodnota z převodníku pinu 11, například 578
$@r11 => efektivní hodnota z převodníku pinu 11, například 572
$@s11 => okamžitá hodnota z převodníku pinu 11, například 570
$@m11 => minimální hodnota z převodníku pinu 11, například 27
$@x11 => maximální hodnota z převodníku pinu 11, například 762
$@A11 => propočtená průměrná hodnota dle nastavení rozsahu pro pin 11, například 13.753
$@R11 => propočtená efektivní hodnota dle nastavení rozsahu pro pin 11, například 231.2
$@S11 => propočtená okamžitá hodnota dle nastavení rozsahu pro pin 11, například 12.302
$@M11 => propočtená minimální hodnota dle nastavení rozsahu pro pin 11, například 21.552
$@X11 => propočtená maximální hodnota dle nastavení rozsahu pro pin 11, například 325.622

Datum a čas

(od verze 2.04)

$@Td => Den včetně dodatečné nuly. 01 - 31
$@Tj => Den. 1 - 31
$@Tm => Měsíc včetně dodatečné nuly. 01 - 12
$@Tn => Měsíc. 1 - 12
$@TY => Čtyřciferný rok. 2013
$@Ty => Dvojciferný rok. 13
$@Tg => Hodiny ve dvanáctihodinovém času. 1 - 12
$@TG => Hodiny ve čtyřiadvacetihodinovém času. 0 - 23
$@Th => Hodiny ve dvanáctihodinovém času včetně dodatečné nuly. 01 - 12
$@TH => Hodiny ve čtyřiadvacetihodinovém času včetně dodatečné nuly. 00 - 23
$@Ti => Minuty včetně dodatečné nuly. 00 - 59
$@Ts => Sekundy včetně dodatečné nuly. 00 - 59
Příklad zobrazení data a času
#
$@Td#.$@Tm#.$@TY
$@TH:$@Ti:$@Ts

Výsledek:

   12.09.2013   
    17:28:16    
Příklad výpočtu počtu sekund od půlnoci a zobrazení času
$whrs = $@TH * 3600
$wmin = $@Ti * 60
$wx = $@Ts + $wmin + $whrs

#
cas:|$@TH:$@Ti:$@Ts
sekund:|$wx.R

Výstup:

cas:    01:08:58
sekund:     4138

Další příklady pro datum a čas na displayi.

Modifikátor počtu desetinných míst

Proměnné v sekci pro stránky displaye může pomocí speciálního modifikátoru určit, kolik desetinných míst, či v jakém formátu bude číslo zobrazeno. $X je proměnná.

Pravidla

  • $X.0 zobrazí pouze celou část čísla. Například 17
  • $X.1$X.4 zobrazí 1 - 4 desetinná místa s doplněním zbývajících nul do požadovaného počtu desetinných míst. Například 17.85 pro $X.2
  • $X. zobrazí automatický počet desetinných míst. 0 - 4, bez zbývajících nul.
  • (od verze 2.04)
  • $X.R zobrazí celou část čísla. Narozdíl od výše uvedených se neprovádí se úprava na jednotky k, M, G, T.

Test formátu čísel

Sekce

Výpočty

Sekce výpočtů slouží pro přípravu a kalkulaci hodnot před jejich použitím pro zobrazení na displayi. Pro výpočty se používají základní matematické rovnice s použitím matematických operátoru pro součet +, rozdíl -, násobení * a dělení /.

Příklad sekce výpočtů

$wIN1 = $@A10 * $@A11
$wIN2 = $@A12 * $@A13
$wINsum = $wIN1 + $wIN2

Popis řádků:

$wIN1 = $@A10 * $@A11

Do proměnné $wIN1 ulož součin proudu měřeného na analogovém pinu 10 a napětí měřeném na pinu 11. Použij reálné hodnoty proudu a napětí přepočtené z hodnot převodníků na reálné hodnoty dle rozsahu v nastavení pro pin 10 a 11.

$wIN2 = $@A12 * $@A13

Do proměnné $wIN2 ulož součin proudu měřeného na analogovém pinu 12 a napětí měřeném na pinu 13. Použij reálné hodnoty proudu a napětí přepočtené z hodnot převodníků na reálné hodnoty dle rozsahu v nastavení pro pin 12 a 13.

$wINsum = $wIN1 + $wIN2

Do proměnné $wINsum ulož součet výsledných výkonů $wIN1 a $wIN2

Stránky

Sekce pro definici stránek slouží pro nastavení obsahu jednotlivých stránek displaye a následuje bezprostředně za sekcí určenou pro výpočty. Stránky jsou uloženy v pořadí za sebou. Ve stejném pořadí budou zobrazeny po stisku tlačítek UP a DOWN na LCD Keypad Shield displayi.

Definice stránky

Každá stránka začíná symbolem #. Za tímto znakem může následovat jedno z písmen R, L, nebo S, které značí tlačítko (Right, Left, nebo Select) po jehož stisku bude stránka okamžitě zobrazena. Tlačítka Up a Down si zachovávají svou funkci a jsou použita pro listování mezi stránkami v pořadí tak jak jsou napsány v programu pro display.

Příklad definice stránky s možností ji vyvolat pomocí tlačítka Right:

#R
Toto je stranka
po stisku RIGHT

Běžná stránka je bez definice tlačítka

#
Toto je bezna
stranka....

Poznámka: V případě, že se v programu vyskytne více stránek s definicí pro jedno a totéž tlačítko, bude zobrazena ta stránka, která je umístěna v programu nejdříve. Ostatní jsou ignorovány 1)

Zarovnání textu

Zarovnání textu se provádí pomocí rozdělení řádku znakem „|“. Vše vlevo od znaku „|“ je zarovnáno vlevo, vše vpravo je zarovnáno vpravo. Řádek, který neobsahuje znak „|“ je zarovnán na střed.

#
Centrovano
Vlevo|Vpravo

Proměnné

Proměnné je možno použít pomocí znaku $. Pokud je potřeba bezprostředně za proměnnou vložit text a je potřeba ukončit název proměnné, je možno použít znak #. například pro text 12.25V potřebujeme za proměnnou vložit jednotku „V“. Proměná, do které jsme si v sekci výpočtů připravili napětí na bateriích se jmenuje $uBat. Definice $uBat V by vygenerovala text 12.25 V. Bez mezery dostáváme neexistující název proměnné $uBatV. Proto v těchto případech použijeme znak #, čímž určíme, kde končí název proměnné, tedy $uBat#V vygeneruje text 12.25V.

Formát čísel

Pro definici počtu desetinných míst použijeme znak .. Pro jedno desetinné místo použijeme výraz $uBat.1. Výsledkem může být například 12.2. Pro 0 desetinných míst použijeme $uBat.0. Pro automatický počet desetinných míst znak . neuvedeme. V kombinaci se specifikací počtu desetinných míst se ukončení názvu proměnné nepoužívá. Je možno použít $uBat.3V, což vygeneruje 3 desetinná místa 12.253V.

#
Baterie|$uBat.2V
Spotreba|$woutSUM#W

Datum a čas

Příklady pro datum a čas (od verze 2.04)

#
Menic:| $wAC3k.2W
Cas: | $@TH:$@Ti

Výsledek:

Menic:     0.00W
Cas:       17:29
1)
TODO: v případě více stránek se stejným označením by mohly stránky rotovat. Dvě stránky označené R by byly stiskem každým RIGHT přepínány …. hmmm… ? :)
mmdl.txt · Poslední úprava: 2013/09/23 15:16 autor: 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki