-
Notifications
You must be signed in to change notification settings - Fork 0
Slozite akce
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é".
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.
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
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
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.t:n !t:n
- 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
.
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
uvede-li se za podmínku hvězdička, jedná se o následnou podmínku (viz výše)WAC:podmínka WAC:podmínka*
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
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.WAT:+ WAT:- WAT:!
Zrušení sekvence se provede příkazem
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.CAN:x CAN:x:podmínka
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
kde "x" jeJMP:x JMP:x:podmínka
- 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