Funkčné bloky programu pre 1PLC: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
 
(7 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených)
Riadok 1: Riadok 1:
 
[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Operačné systémy]]
 
[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Operačné systémy]]
{{Praca_uvod|4|Návrh a realizácia jednočipového PLC|Programovateľné logické automaty|Mikrokontrolér AVR|Softvér 1PLC|Funkčné bloky programu pre 1PLC|Prepojenie 1PLC s počítačom||||||}}
+
{{Praca_uvod|4|Návrh a realizácia jednočipového PLC|Programovateľné logické automaty|Hardvér (jednočipové PLC)|Softvér 1PLC|Funkčné bloky programu pre 1PLC|Prepojenie 1PLC s počítačom||||||}}
 
__TOC__
 
__TOC__
=Funkčné bloky programu=
+
= =
 
 
 
==Riešenie funkčných blokov jazyka STL==
 
==Riešenie funkčných blokov jazyka STL==
 
Každý príkaz jazyka STL je potrebné prepísať do assembleru mikrokontroléra Atmel AVR. Keďže jazyk STL je zásobníkový jazyk, pri riešení blokov je vhodné využiť vstavaný zásobník mikrokontroléra a inštrukcie na prácu so zásobníkom. Prehľad príkazov v jazyku STL sa nachádza v nasledujúcich podkapitolách.  
 
Každý príkaz jazyka STL je potrebné prepísať do assembleru mikrokontroléra Atmel AVR. Keďže jazyk STL je zásobníkový jazyk, pri riešení blokov je vhodné využiť vstavaný zásobník mikrokontroléra a inštrukcie na prácu so zásobníkom. Prehľad príkazov v jazyku STL sa nachádza v nasledujúcich podkapitolách.  
 
 
Ku každému príkazu je uvedená tabuľka s informáciami. Je v nej uvedený príklad zápisu príkazu v jazyku STL a čo príkaz vykonáva so zásobníkom (aké dáta z neho vyberá a aké vkladá).  
+
Ku každému príkazu je uvedená tabuľka s informáciami. Je v nej uvedený príklad zápisu príkazu v jazyku STL a čo príkaz vykonáva so zásobníkom (aké dáta z neho vyberá a aké vkladá).  
 
 
Naskytajú sa dve možnosti implementácie blokov. Prvá je, že bloky budú uložené spolu s operačným systémom v mikrokontroléri ako podprogramy. Užívateľský program bude iba odkazovať na tieto bloky. Druhá možnosť je využiť v užívateľskom programe priamo napísané funkčné bloky a poskladať program z nich.
+
Naskytajú sa dve možnosti implementácie blokov. Prvá je, že bloky budú uložené spolu s operačným systémom v mikrokontroléri ako podprogramy. Užívateľský program bude iba odkazovať na tieto bloky. Druhá možnosť je využiť v užívateľskom programe priamo napísané funkčné bloky a poskladať program z nich.
 
 
Pre realizáciu jednoduchších príkazov som vybral druhú možnosť, keďže je rýchlejšia na vykonávanie.  
+
Pre realizáciu jednoduchších príkazov som vybral druhú možnosť, keďže je rýchlejšia na vykonávanie.  
Prvá možnosť bola zvolená iba pre príkazy pracujúce s premennými v plávajúcej desatinnej čiarke (ADDF, SUBF, ... ).  
+
Prvá možnosť bola zvolená iba pre príkazy pracujúce s premennými v plávajúcej desatinnej čiarke (ADDF, SUBF, ... ).  
Operácie v plávajúcej desatinnej čiarke sú pomerne pomalé, takže navýšenie času predávaním parametrov cez registre je zanedbateľný. Naproti tomu sú pomerne rozsiahle, takže ak by sa mali vkladať zakaždým, keď je v programe daný príkaz použitý, rýchlo by sa zaplnila pamäť určená pre program.
+
Operácie v plávajúcej desatinnej čiarke sú pomerne pomalé, takže navýšenie času predávaním parametrov cez registre je zanedbateľný. Naproti tomu sú pomerne rozsiahle, takže ak by sa mali vkladať zakaždým, keď je v programe daný príkaz použitý, rýchlo by sa zaplnila pamäť určená pre program.
 
 
Aritmetické príkazy využívajú rôzne veľkosti dát (8, 16, 32-bit). V tabuľke \ref{tab:konstanty} sú uvedené rozsahy daných konštánt.
+
Aritmetické príkazy využívajú rôzne veľkosti dát (8, 16, 32-bit). V tabuľke rozsah konštánt sú uvedené rozsahy daných konštánt.
 
 
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 159: Riadok 158:
 
| = PX.Y<br/>= P0.0
 
| = PX.Y<br/>= P0.0
 
|-
 
|-
|Výber zo zásobníka | operand
+
|Výber zo zásobníka  
 +
| operand
 
|-
 
|-
|Vloženie do zásobníka | operand
+
|Vloženie do zásobníka  
 +
| operand
 
|}
 
|}
  
Riadok 293: Riadok 294:
 
Napríklad MOVB&nbsp;V0,V1 skopíruje hodnotu z&nbsp;adresy&nbsp;1 do&nbsp;adresy&nbsp;0 v&nbsp;pamäťovom priestore V. Príkazy nemenia vrchol zásobníka.
 
Napríklad MOVB&nbsp;V0,V1 skopíruje hodnotu z&nbsp;adresy&nbsp;1 do&nbsp;adresy&nbsp;0 v&nbsp;pamäťovom priestore V. Príkazy nemenia vrchol zásobníka.
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 312: Riadok 313:
 
Príkazy == porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak sa hodnoty rovnajú.
 
Príkazy == porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak sa hodnoty rovnajú.
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 329: Riadok 330:
 
Príkazy <> porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak sa hodnoty nerovnajú.
 
Príkazy <> porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak sa hodnoty nerovnajú.
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 346: Riadok 347:
 
Príkazy < porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand menší ako 2. .
 
Príkazy < porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand menší ako 2. .
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 364: Riadok 365:
 
Príkazy <= porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand menší alebo rovný ako 2. .
 
Príkazy <= porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand menší alebo rovný ako 2. .
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 378: Riadok 379:
 
|}
 
|}
  
=== >B, >W, >D, >F}
+
=== >B, >W, >D, >F ===
 
Príkazy > porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand väčší ako 2. .
 
Príkazy > porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand väčší ako 2. .
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 398: Riadok 399:
 
Príkazy >= porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand väčší alebo rovný ako 2. .
 
Príkazy >= porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v&nbsp;prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand väčší alebo rovný ako 2. .
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
Riadok 417: Riadok 418:
 
Príkazy ADD sčítajú 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
 
Príkazy ADD sčítajú 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
 
|-
 
|-
|Vzor príkazu | ADDB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>ADDB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>ADDW V23,V23,V16<br/>ADDD V0,V0,2 345 790
+
|Vzor príkazu  
 +
| ADDB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>ADDB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>ADDW V23,V23,V16<br/>ADDD V0,V0,2 345 790
 
|-
 
|-
 
|Výber zo zásobníka  
 
|Výber zo zásobníka  
Riadok 433: Riadok 435:
 
Príkazy SUB odčítajú 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
 
Príkazy SUB odčítajú 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
 
|-
 
|-
|Vzor príkazu | SUBB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>SUBB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>SUBW V23,V23,V16<br/>SUBD V0,V0,2 345 790
+
|Vzor príkazu  
 +
| SUBB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>SUBB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>SUBW V23,V23,V16<br/>SUBD V0,V0,2 345 790
 
|-
 
|-
 
|Výber zo zásobníka  
 
|Výber zo zásobníka  
Riadok 449: Riadok 452:
 
Príkazy MUL vynásobia 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
 
Príkazy MUL vynásobia 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
  
Rozsah konštánt je uvedený v&nbsp;tabuľke \ref{tab:konstanty}.
+
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
  
 
{| class=wikitable border=1 cellpadding=5
 
{| class=wikitable border=1 cellpadding=5
 
|-
 
|-
|Vzor príkazu | MULB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>MULB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>MULW V23,V23,V16<br/>MULD V0,V0,2 345 790
+
|Vzor príkazu  
 +
| MULB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>MULB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>MULW V23,V23,V16<br/>MULD V0,V0,2 345 790
 +
|-
 +
|Výber zo zásobníka
 +
| povolenie
 +
|-
 +
|Vloženie do zásobníka
 +
| povolenie
 +
|}
 +
 
 +
=== DIVB, DIVW, DIVD, DIVF ===
 +
Príkazy DIV vydelia 2 hodnoty v&nbsp;prípade, že na vrchole zásobníka je 1.
 +
 
 +
Rozsah konštánt je uvedený v&nbsp;tabuľke rozsah konštánt.
 +
 
 +
{| class=wikitable border=1 cellpadding=5
 +
|-
 +
|Vzor príkazu
 +
| DIVB PX<sub>1</sub>,PX<sub>2</sub>,PX<sub>3</sub><br/>DIVB PX<sub>1</sub>,PX<sub>2</sub>,K<br/>DIVW V23,V23,V16<br/>DIVD V0,V0,2 345 790
 
|-
 
|-
 
|Výber zo zásobníka  
 
|Výber zo zásobníka  
Riadok 550: Riadok 571:
 
|-
 
|-
 
|Vzor príkazu  
 
|Vzor príkazu  
| CD CX,K<br/>CD C17,$-456$
+
| CD CX,K<br/>CD C17,-456
 
|-
 
|-
 
|Výber zo zásobníka  
 
|Výber zo zásobníka  

Aktuálna revízia z 22:05, 15. jún 2010

Riešenie funkčných blokov jazyka STL

Každý príkaz jazyka STL je potrebné prepísať do assembleru mikrokontroléra Atmel AVR. Keďže jazyk STL je zásobníkový jazyk, pri riešení blokov je vhodné využiť vstavaný zásobník mikrokontroléra a inštrukcie na prácu so zásobníkom. Prehľad príkazov v jazyku STL sa nachádza v nasledujúcich podkapitolách.

Ku každému príkazu je uvedená tabuľka s informáciami. Je v nej uvedený príklad zápisu príkazu v jazyku STL a čo príkaz vykonáva so zásobníkom (aké dáta z neho vyberá a aké vkladá).

Naskytajú sa dve možnosti implementácie blokov. Prvá je, že bloky budú uložené spolu s operačným systémom v mikrokontroléri ako podprogramy. Užívateľský program bude iba odkazovať na tieto bloky. Druhá možnosť je využiť v užívateľskom programe priamo napísané funkčné bloky a poskladať program z nich.

Pre realizáciu jednoduchších príkazov som vybral druhú možnosť, keďže je rýchlejšia na vykonávanie. Prvá možnosť bola zvolená iba pre príkazy pracujúce s premennými v plávajúcej desatinnej čiarke (ADDF, SUBF, ... ). Operácie v plávajúcej desatinnej čiarke sú pomerne pomalé, takže navýšenie času predávaním parametrov cez registre je zanedbateľný. Naproti tomu sú pomerne rozsiahle, takže ak by sa mali vkladať zakaždým, keď je v programe daný príkaz použitý, rýchlo by sa zaplnila pamäť určená pre program.

Aritmetické príkazy využívajú rôzne veľkosti dát (8, 16, 32-bit). V tabuľke rozsah konštánt sú uvedené rozsahy daných konštánt.

Rozsah konštánt
Typ konštanty Rozsah dekadicky
B 0 ... 255
W -32 768 ... 32 767
D -2 147 483 648 ... 2 147 483 647
F ±10-45 ... ±1039

Riadiace funkčné bloky

Začiatok a koniec užívateľského programu

Na začiatku užívateľského programu je potrebné zálohovanie ukazateľa zásobníka. Keďže program nemusí mať rovnaký počet inštrukcií pop a push (resp. počet inštrukcií push môže prevyšovať počet inštrukcií pop, opačne nie), program by sa na konci nevrátil späť do riadiacej slučky správne.

Na konci programu sa ukazateľ zásobníka obnoví späť na hodnotu ako mal pri zavolaní programu. Program sa ukončí inštrukciou RET (návrat z podprogramu), keďže užívateľský program je z operačného systému volaný ako podprogram (funkcia).


Funkčné bloky logických operácii

A

Príkaz A vyberie z vrcholu zásobníka hodnotu a spraví logický súčin s hodnotou zadanou ako parameter príkazu. Výsledok uloží na vrchol zásobníka.

Vzor príkazu A PX.Y
A V0.0
Výber zo zásobníka 1. operand
Vloženie do zásobníka výsledok

AN

Príkaz AN vyberie z vrcholu zásobníka hodnotu a spraví logický súčin s negovanou hodnotou zadanou ako parameter príkazu. Výsledok uloží na vrchol zásobníka.

Vzor príkazu AN PX.Y
AN V0.0
Výber zo zásobníka 1. operand
Vloženie do zásobníka výsledok

O

Príkaz O vyberie z vrcholu zásobníka hodnotu a spraví logický súčet s hodnotou zadanou ako parameter príkazu. Výsledok uloží na vrchol zásobníka.

Vzor príkazu O PX.Y
O V0.0
Výber zo zásobníka 1. operand
Vloženie do zásobníka výsledok

ON

Príkaz O vyberie z vrcholu zásobníka hodnotu a spraví logický súčet s negovanou hodnotou zadanou ako parameter príkazu. Výsledok uloží na vrchol zásobníka.

Vzor príkazu ON PX.Y
ON V0.0
Výber zo zásobníka 1. operand
Vloženie do zásobníka výsledok

ALD

Príkaz ALD vyberie 2 hodnoty z vrcholu zásobníka a spraví s nimi logický súčin. Výsledok vloží späť do zásobníka.

Vzor príkazu ALD
Výber zo zásobníka 1. operand
2. operand
Vloženie do zásobníka výsledok

OLD

Príkaz OLD vyberie 2 hodnoty z vrcholu zásobníka a spraví s nimi logický súčet. Výsledok vloží späť do zásobníka.

Vzor príkazu OLD
Výber zo zásobníka 1. operand
2. operand
Vloženie do zásobníka výsledok

NOT

Príkaz NOT neguje hodnotu na vrchole zásobníka.

Vzor príkazu NOT
Výber zo zásobníka operand
Vloženie do zásobníka výsledok

=

Príkaz = nastaví bit v zadanom bajte a zadanom pamäťovom priestore na hodnotu vrcholu zásobníka. Napríklad = P0.0 nastaví 0. bit v 0. bajte pamäťového priestoru P na hodnotu vrcholu zásobníka. Vrchol zásobníka nijako nemení.

Vzor príkazu = PX.Y
= P0.0
Výber zo zásobníka operand
Vloženie do zásobníka operand

S

Príkaz S nastaví bit v zadanom bajte a zadanom pamäťovom priestore, ak je hodnota vrcholu zásobníka 1. Napríklad S P0.0 nastaví 0. bit v 0. bajte pamäťového priestoru P na hodnotu 1, ak je na vrchole zásobníka 1. Vrchol zásobníka nijako nemení.

Vzor príkazu S PX.Y
S P0.0
Výber zo zásobníka operand
Vloženie do zásobníka operand

R

Príkaz R vynuluje bit v zadanom bajte a zadanom pamäťovom priestore, ak je hodnota vrcholu zásobníka 1. Napríklad S P0.0 nastaví 0. bit v 0. bajte pamäťového priestoru P na hodnotu 1, ak je na vrchole zásobníka 1. Vrchol zásobníka nijako nemení.

Vzor príkazu R PX.Y
R P0.0
Výber zo zásobníka operand
Vloženie do zásobníka operand

PE

Príkaz PE detekuje nábežnú hranu. Predchádzajúci stav je uložený na adrese zadanej ako argument. Príkaz vyberie z vrcholu zásobníka hodnotu a zistí, či sa zmenila zo stavu 0 do stavu 1. Ak áno uloží na vrchol zásobníka 1, inak 0.

Vzor príkazu PE PX.Y
PE V0.0
Výber zo zásobníka operand
Vloženie do zásobníka výsledok

NE

Príkaz NE detekuje dobežnú hranu. Predchádzajúci stav je uložený na adrese zadanej ako argument. Príkaz vyberie z vrcholu zásobníka hodnotu a zistí, či sa zmenila zo stavu 1 do stavu 0. Ak áno uloží na vrchol zásobníka 1, inak 0.

Vzor príkazu NE PX.Y
NE V0.0
Výber zo zásobníka operand
Vloženie do zásobníka výsledok

Funkčné bloky pre prácu so zásobníkom

LD

Príkaz LD uloží na vrchol zásobníka hodnotu bitu v zadanom bajte a pamäťovom priestore. Napríklad LD P0.0 uloží 0. bit z 0. bajtu v pamäťovom priestore P na vrchol zásobníka.

Vzor príkazu LD PX.Y
LD P1.4
Výber zo zásobníka -
Vloženie do zásobníka operand

LDN

Príkaz LDN uloží na vrchol zásobníka negovanú hodnotu bitu v zadanom bajte a pamäťovom priestore. Napríklad LD P0.0 uloží negovaný 0. bit z 0. bajtu v pamäťovom priestore P na vrchol zásobníka.

Vzor príkazu LDN PX.Y
LDN P1.4
Výber zo zásobníka -
Vloženie do zásobníka negovaný operand

LPR, LPS

Príkaz LPR, LPS skopíruje hodnotu vrcholu zásobníka na vrchol zásobníka. Takže 2 vrchné bity budú mať rovnakú hodnotu.

Vzor príkazu LPR
Výber zo zásobníka operand
Vloženie do zásobníka operand
operand

LPP

Príkaz LPP zahodí hodnotu z vrcholu zásobníka.

Vzor príkazu LPP
Výber zo zásobníka operand
Vloženie do zásobníka -

Funkčné bloky na presun dát

MOVB, MOVW, MOVD, MOVF

Príkazy MOV kopírujú dáta (veľkosti 1B pre MOVB, 2B pre MOVW a 4B pre MOVD a MOVF) z adresy zadanej ako druhý parameter do adresy zadanej ako prvý parameter. Presun sa vykoná iba vtedy ak je na vrchole zásobníka hodnota 1. Ak je ako druhý parameter zadaná konštanta, tak sa konštanta vloží na adresu, ktorá je ako prvý parameter.

Napríklad MOVB V0,V1 skopíruje hodnotu z adresy 1 do adresy 0 v pamäťovom priestore V. Príkazy nemenia vrchol zásobníka.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu MOVB PX1,PX2
MOVB PX,K
MOVB V0,V1
MOVD V0,-2 589
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

Porovnávacie funkčné bloky

==B, ==W, ==D, ==F

Príkazy == porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak sa hodnoty rovnajú.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu ==B PX1,PX2
==B PX,K
==B V0,V1
==D V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka výsledok

<>B, <>W, <>D, <>F

Príkazy <> porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak sa hodnoty nerovnajú.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu <>B PX1,PX2
<>B PX,K
<>B V0,V1
<>D V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka výsledok

<B, <W, <D, <F

Príkazy < porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand menší ako 2. .

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu <B PX1,PX2
<B PX,K
<B V0,V1
<D V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka výsledok


<=B, <=W, <=D, <=F

Príkazy <= porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand menší alebo rovný ako 2. .

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu <=B PX1,PX2
<=B PX,K
<=B V0,V1
<=D V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka výsledok

>B, >W, >D, >F

Príkazy > porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand väčší ako 2. .

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu >B PX1,PX2
>B PX,K
>B V0,V1
>D V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka výsledok

>=B, >=W, >=D, >=F

Príkazy >= porovnávajú medzi sebou dve hodnoty alebo hodnotu a konštantu, zadané ako operandy v prípade, že na vrchole zásobníka je 1. Do zásobníka uloží 1 ak je 1. operand väčší alebo rovný ako 2. .

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu >=B PX1,PX2
>=B PX,K
>=B V0,V1
>=D V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka výsledok

Aritmetické funkčné bloky

ADDB, ADDW, ADDD, ADDF

Príkazy ADD sčítajú 2 hodnoty v prípade, že na vrchole zásobníka je 1.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu ADDB PX1,PX2,PX3
ADDB PX1,PX2,K
ADDW V23,V23,V16
ADDD V0,V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

SUBB, SUBW, SUBD, SUBF

Príkazy SUB odčítajú 2 hodnoty v prípade, že na vrchole zásobníka je 1.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu SUBB PX1,PX2,PX3
SUBB PX1,PX2,K
SUBW V23,V23,V16
SUBD V0,V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

MULB, MULW, MULD, MULF

Príkazy MUL vynásobia 2 hodnoty v prípade, že na vrchole zásobníka je 1.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu MULB PX1,PX2,PX3
MULB PX1,PX2,K
MULW V23,V23,V16
MULD V0,V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

DIVB, DIVW, DIVD, DIVF

Príkazy DIV vydelia 2 hodnoty v prípade, že na vrchole zásobníka je 1.

Rozsah konštánt je uvedený v tabuľke rozsah konštánt.

Vzor príkazu DIVB PX1,PX2,PX3
DIVB PX1,PX2,K
DIVW V23,V23,V16
DIVD V0,V0,2 345 790
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

INCB, INCW, INCD

Príkazy INC pripočítajú 1 k hodnote v prípade, že na vrchole zásobníka je 1.


Vzor príkazu INCB PX
INCW V12
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

DECB, DECW, DECD

Príkazy DEC odpočítajú 1 od hodnoty v prípade, že na vrchole zásobníka je 1.

Vzor príkazu DECB PX
DECW V12
Výber zo zásobníka povolenie
Vloženie do zásobníka povolenie

Ostatné funkčné bloky

TON

Príkaz TON zapína časovač zapnutia. Ak je na vrchole zásobníka 1, časovač je rozopnutý (uloží do zásobníka 0). Po dosiahnutí zadaného času K.rozlíšenie_časovača sa časovač zopne (uloží do zásobníka 1).

Vzor príkazu TON TX,K
TON T10,8
Výber zo zásobníka povolenie
Vloženie do zásobníka stav

TOFF

Príkaz TON zapína časovač zapnutia. Ak je na vrchole zásobníka 1, časovač je zopnutý (uloží do zásobníka 1). Po dosiahnutí zadaného času K.rozlíšenie_časovača sa časovač rozopne (uloží do zásobníka 0).

Vzor príkazu TOFF TX,K
TOFF T10,8
Výber zo zásobníka povolenie
Vloženie do zásobníka stav

CU

Príkaz CU počíta impulzy na vstupe. Vyberie z vrcholu zásobníka 2 hodnoty (prvá je reset, druhá vstup) a ak na vstupe bola nábežná hrana, tak pripočíta 1. Ak hodnota dosiahne K, tak vloží do zásobníka 1.

Vzor príkazu CU CX,K
CU C5,245
Výber zo zásobníka reset
vstup
Vloženie do zásobníka stav

CD

Príkaz CD odpočítava impulzy na vstupe od hodnoty K. Vyberie z vrcholu zásobníka 2 hodnoty (prvá je reset, druhá vstup) a ak na vstupe bola nábežná hrana, tak odpočíta 1. Ak hodnota dosiahne 0, tak vloží do zásobníka 1.

Vzor príkazu CD CX,K
CD C17,-456
Výber zo zásobníka reset
vstup
Vloženie do zásobníka stav