MicroLog.MyPower.CZ

… designed for freedom of automation.

Uživatelské nástroje

Nástroje pro tento web


mmdl

Toto je starší verze dokumentu!


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.

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.
  • # 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

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í, č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

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

Příklad programu

$x1 = 17.8523
$x2 = 2000
$x3 = 975231.667

#
Test desetin-
nych mist

#
$x1 | $x1.0
$x1. | $x1.1

#
$x1.2 | $x1.3
$x1.4 | $x1.5
  
#
$x1.R | :)
---

#
$x2 | $x2.0
$x2. | $x2.1

#
$x2.2 | $x2.3
$x2.4 | $x2.5
  
#
$x2.R | :)
---

#
$x3 | $x3.0
$x3. | $x3.1

#
$x3.2|$x3.3
$x3.4|$x3.5
  
#
$x3.R | :)
---

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

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

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

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

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

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

Výsledek:

Menic:     0.00W
Cas:       17:29

#
Moje FVE
$@Td#.$@Tm#.$@TY

Výsledek:

    Moje FVE    
   12.09.2013   

#
Datum a cas
$@Td#.$@Tm#.$@TY $@TH:$@Ti

Výsledek:

   Datum a cas  
12.09.2013 17:29

#
Datum|$@Td#.$@Tm#.$@TY
Cas|$@TH:$@Ti:$@Ts

Výsledek:

Datum 12.09.2013
Cas     17:31:15
mmdl.1379185648.txt.gz · Poslední úprava: 2013/09/15 03:07 (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki