Skip to content

Slozite akce

Svata Dedic edited this page Apr 3, 2018 · 1 revision

Table of Contents

Složité akce, podmínky

V ServoPointu je několik "programátorských" akcí, které umožňují vytvářet složitější kombinace. Jejich použití je volitelné, pro pokročilejší uživatele - a mnohem méně "vyzkoušené".

Spuštění několika akcí

Nejjednodušší technika je spuštění několika sekvencí na jedno tlačítko:

DEF:1:1:+
...
FIN

DEF:2:1:+
...
FIN

jsou 2 definice, obě reagující na stisk tlačítka 1. Při jeho stisku se začnou provádět obě sekvence. Pro každou z nich platí obyklá pravidla čekání na dokončení akce - sekvence se ale neblokují navzájem.

Podmínky

Některé akce mohou být podmíněné. Podmínkou rozumím vyhodnocení okamžitého stavu ServoPointu, vstupů, výstupů a probíhajících dějů. Pokud stav odpovídá zadané podmínce, příkaz se provede, jinak se ignoruje.

Podmínky jsou pouze jednoduché, nedají se skládat. Podmínka může být

  • aktivní výstup
  • pohybující se servo
  • vykonávaná sekvence
  • stisknuté vstupní tlačítko
Za aktivní výstup se považuje takový, který je sepnutý, nebo bliká. Pohybující se servo je podmínka, která platí od chvíle, kdy se servo dá do pohybu a přestane platit ve chvíli kdy servo dokončí pohyb. Podmínka vykonávané sekvence platí, pokud se vykonávají akce příslušné k určité definici. Podmínku lze negovat, tzn. je splněna, když je výstup vypnutý, servo nečinné, tlačítko rozpojené.

S použitím podmínek lze sekvenci předčasně ukončit, opakovat, pozdržet než doběhne jiný proces atd.

Podmínka se zapisuje jako

t:n
!t:n
kde "t" je typ podmínky a "n" je číslo výstupu apod. Pokud podmínka začíná vykřičníkem, jedná se o negovanou podmínku, která je splněná při neaktivitě prvku.
k
Stisk vstupního tlačítka. "n" je číslo vstupního tlačítka 1..16, podmínka je splněna, je-li tlačítko stisknuté
o
Výstup je aktivní. "n" je číslo výstupu 1..63, podmínka je splněna, pokud je výstup aktivní (zapnutý, bliká, ohlas serva)
s
Servo je v činnosti. "n" je číslo serva.
c
Příkazová sekvence se vykonává. "n" je číslo definice odpovídající příkazu DEF.

Čekání s podmínkou

Podmíněné čekání zablokuje sekvenci do doby, než bude splěná stanovená podmínka, nebo než se vykonávání sekvence zruší (příkaz CAN). V případě čekání s podmínkou lze podmínku ještě doplnit požadavkem, že se stav (výstup, servo, tlačítko) do aktivního stavu dostane až následně.

Například podmínka, že "servo přejde do stavu neaktivní" znamená, že pokud se servo již pohybuje, jeho zastavení splní podmínku. Ale je-li servo právě zastavené, podmínka splněná není, a splní se až když se servo dá do pohybu a následně zastaví. Stejný princip se uplatní pro jiné typy podmínek.

Vázat zároveň více následných podmínek na konkretní jeden výstup, servo atp nedoporučuji, řídící program s tím moc nepočítá.

Čekání s podmínkou způsobí příkaz

WAC:podmínka
WAC:podmínka*
uvede-li se za podmínku hvězdička, jedná se o následnou podmínku (viz výše)

Cekání na dokončení

Jde jednorázově, nebo do trvale, nařídit čekání na dokončení příkazu. Nastavení platné pro celou sekvenci se uvádí v příkazu DEF. V rámci sekvence lze nastavení dále upravit

WAT:+
WAT:-
WAT:!
Způsobí, že se na dokončení akce čeká (+), nečeká (-), nebo se počká jen na bezprostředně následující akci (!), pak se čekat přestane.

Zrušení prováděné sekvence

Zrušení sekvence se provede příkazem

CAN:x
CAN:x:podmínka
kde "x" je číslo definice, jejíž sekvenci chcete zrušit. Sekvence se ukončí, pokud se pohybuje servo, zastaví se kde právě je. Blikání s určeným počtem cyklů se ukončí, neomezené blikání pokračuje.

Skok

V rámci sekvence můžeme "skočit" na jinou akci - to znamená že po akci "skok" se provede jiná akce než ta, která v definici následuje. Skok se zapisuje jako

JMP:x
JMP:x:podmínka
kde "x" je
záporné číslo
řízení se posune x akcí dozadu. Například -1 znamená vykonání akce bezprostředně předcházející akci JMP
kladné číslo
přeskočí se x následujících akcí
0
celá sekvence se ukončí, přeskočí se všechny následující akce
Není možné "skočit" před první akci v sekvenci (skok pak způsobí vykonání první akce) ani za konec (sekvence se ukončí).