Differences
This shows you the differences between two versions of the page.
— |
hu:s7:awl_leiras [2022/04/21 15:04] () |
||
---|---|---|---|
1: | 1: | ||
+ | ====== Simatic Step 7 AWL utasításkészlet ====== | ||
+ | |||
+ | Az AWL a Simatic Step7 PLC platformjának az IEC DIN EN 61131-3 normának megfeleltetett szövegbázisú és meglehetősen gépközeli leírónyelve (sok tekintetben a klasszikus assembly nyelveknek felel meg). A program lefutási sorrendje gyakorlatilag megegyezik a CPU végrehajtási sorrendjével. A nyelv a magasabbb szintű (kvázi pascal-)SCL nyelvvel egyetemben a Simatic S7 fejlesztői rendszerében érhető el. | ||
+ | |||
+ | ===== Utasításjegyzék ===== | ||
+ | |||
+ | |||
+ | |||
+ | ^ Német\\ szintaktika ^ Angol\\ szintaktika ^ Művelet /\\ funkció ^ Leírása | | ||
+ | | [[# | ||
+ | | ) | ) | Bit művelet | Zárójel zárása | | ||
+ | | [[#*d|*D]] | *D | Egész szám művelet | AKKU1 és AKKU2 szorzása 32 bites egész számként ([[hu: | ||
+ | |[[# | ||
+ | | [[#*r|*R]] | *R | Tizedes tört funkció | AKKU1 és AKKU2 szorzása 32 bites törtszámként ([[hu: | ||
+ | | [[#/d|/D]] | /D | Egész szám művelet | AKKU2 osztása AKKU1-el 32 bites egész számként ([[hu: | ||
+ | | [[#/a|/I]] | /I | Egész szám művelet | AKKU2 osztása AKKU1-el 16 bites egész számként ([[hu: | ||
+ | | [[#/r|/R]] | /R | Tizedes tört funkció | AKKU2 osztása AKKU1-el 32 bites törtszámként ([[hu: | ||
+ | | [[#_d_|? D]] | ? D | Összehasonlítás | 32 bites egész számok ([[hu: | ||
+ | | [[#_i_|? I]] | ? I | Összehasonlítás | 16 bites egész számok ([[hu: | ||
+ | | [[#_r_|? R]] | ? R | Összehasonlítás | 32 bites törtszámok ([[hu: | ||
+ | | [[#_+_|+]] | + | Egész szám művelet | Egész szám konstans hozzáadása (16, 32 Bit) | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[#+d|+D]] | +D | Egész szám művelet | AKKU1 és AKKU2 összeadása 32 bites egész számként ([[hu: | ||
+ | | [[#+i|+I]] | +I | Egész szám művelet | AKKU1 és AKKU2 összeadása 16 bites egész számként ([[hu: | ||
+ | | [[#+r|+R]] | +R | Tizedes tört funkció | AKKU1 és AKKU2 összeadása 32 bites törtszámként ([[hu: | ||
+ | | [[#-d|-D]] | -D | Egész szám művelet | AKKU2 kivonása az AKKU1-ből 32 bites egész számként ([[hu: | ||
+ | | [[#-i|-I]] | -I | Egész szám művelet | AKKU2 kivonása az AKKU1-ből 16 bites egész számként ([[hu: | ||
+ | | [[#-r|-R]] | -R | Tizedes tört funkció | AKKU2 kivonása az AKKU1-ből 32 bites törtszámként ([[hu: | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | BE | BE | Programvezérlés | Blokk vége | | ||
+ | | BEA | BEU | Programvezérlés | Blokk vége feltétel nélkül | | ||
+ | | BEB | BEC | Programvezérlés | Feltételes blokk vége | | ||
+ | | BLD | BLD | Akkumulátor | Képkezdés (helytartó parancs) | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | CALL | CALL | Programvezérlés | Eljárás hívása könyvtárból | | ||
+ | | CALL | CALL | Programvezérlés | Eljárás hívása | | ||
+ | | CALL | CALL | Programvezérlés | Multi instanz hívása | | ||
+ | | CC | CC | Programvezérlés | Feltételes eljáráshívás | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | DEC | DEC | Akkumulátor | AKKU 1 csökkentése | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | ENT | ENT | Akkumulátor | AKKU-Stack feltöltése (ENTER) | | ||
+ | | [[# | ||
+ | | FN | FN | Bit művelet | Negatív flanke (lefutóél) | | ||
+ | | FP | FP | Bit művelet | Pozitív flanke (felfutóél) | | ||
+ | | [[# | ||
+ | | [[#fr|FR]] | FR | Számláló funkció | Számláló szabadon hagyása (Freigabe) | | ||
+ | | INC | INC | Akkumulátor | AKKU1 növelése | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[#l|L]] | L | Betöltés/ | ||
+ | | [[# | ||
+ | | [[#l_t|L]] | L | Idő funkció | Az aktuális idő értékének a betöltése egész számként AKKU1-be | | ||
+ | | [[#l_dblg|L DBLG]] | L DBLG | Adatblokk művelet | Globális DB hosszának a másolása AKKU1-be | | ||
+ | | [[#l_dbno|L DBNO]] | L DBNO | Adatblokk művelet | Globális DB számának a másolása AKKU1-be | | ||
+ | | [[#l_dilg|L DILG]] | L DILG | Adatblokk művelet | Instant DB hosszának a másolása AKKU1-be | | ||
+ | | [[#l_dino|L DINO]] | L DINO | Adatblokk művelet | Instant DB számának a másolása AKKU1-be | | ||
+ | | [[#l_stw|L STW]] | L STW | Betöltés/ | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | LEAVE | LEAVE | Akkumulátor | AKKU Verem ürítése | | ||
+ | | [[#ln|LN]] | LN | Tizedes tört funkció | Természetes logaritmus képzése ([[hu: | ||
+ | | [[# | ||
+ | | MCR( | MCR( | Programvezérlés | MCR verem nyitása | | ||
+ | | )MCR | )MCR | Programvezérlés | MCR verem zárása | | ||
+ | | MCRA | MCRA | Programvezérlés | MCR verem aktiválása | | ||
+ | | MCRD | MCRD | Programvezérlés | MCR verem deaktiválása | | ||
+ | | MOD | MOD | Egész szám művelet | Osztási maradék ([[hu: | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | NOP 0 | NOP 0 | Akkumulátor | Null operáció 0 (helytartó parancs) | | ||
+ | | NOP 1 | NOP 1 | Akkumulátor | Null operáció 1 (helytartó parancs) | | ||
+ | | [[# | ||
+ | | O | O | Bit művelet | VAGY | | ||
+ | | [[#o|O]] | O | Bit művelet | Az első és, mint vagy | | ||
+ | | O( | O( | Bit művelet | Vagy zárójel nyitással | | ||
+ | | OD | OD | Szavak összevetése | Vagy duplaszó ([[hu: | ||
+ | | [[#on|ON]] | ON | Bit művelet | VAGY NEM | | ||
+ | | ON( | ON( | Bit művelet | Vagy nem zárójel nyitással | | ||
+ | | OW | OW | Szavak összevetése | Vagy szó ([[hu: | ||
+ | | POP | POP | Akkumulátor | POP CPU 4 AKKU-val | | ||
+ | | POP | POP | Akkumulátor | POP CPU 2 AKKU-val | | ||
+ | | PUSH | PUSH | Akkumulátor | PUSH CPU 4 AKKU-val | | ||
+ | | PUSH | PUSH | Akkumulátor | PUSH CPU 2 AKKU-val | | ||
+ | | [[#r|R]] | R | Bit művelet | RESET | | ||
+ | | [[#r_t|R]] | R | Idő funkció | Időfunkció reset | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[#s|S]] | S | Bit művelet | SET | | ||
+ | | [[# | ||
+ | | [[#sa|SA]] | SF | Idő funkció | Kikapcsolás késleltetetett idő | | ||
+ | | SAVE | SAVE | Bit művelet | VKE mentése a BIE-be | | ||
+ | | [[#se|SE]] | SD | Idő funkció | Bekapcsolás késleltetett idő | | ||
+ | | [[# | ||
+ | | [[#si|SI]] | SP | Idő funkció | Impulzus idő | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[#ss|SS]] | SS | Idő funkció | Halmozott bekapcsolás késleltetett idő | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[#sv|SV]] | SE | Idő funkció | Impulzus hosszabbított idő | | ||
+ | | [[#t|T]] | T | Betöltés/ | ||
+ | | [[#t_stw|T STW]] | T STW | Betöltés/ | ||
+ | | [[# | ||
+ | | TAK | TAK | Akkumulátor | AKKU1 és AKKU2 tartalmának cseréje | | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[# | ||
+ | | [[#u|U]] | A | Bit művelet | ÉS | | ||
+ | | U( | A( | Bit művelet | És zárójel nyitással | | ||
+ | | UC | UC | Programvezérlés | Feltétel nélküli eljáráshívás | | ||
+ | | UD | AD | Szavak összevetése | És duplaszó ([[hu: | ||
+ | | [[#un|UN]] | AN | Bit művelet | ÉS NEM | | ||
+ | | UN( | AN( | Bit művelet | És nem zárójel nyitással | | ||
+ | | UW | AW | Szavak összevetése | És szó ([[hu: | ||
+ | | [[#x|X]] | X | Bit művelet | KIZÁRÓ VAGY | | ||
+ | | X( | X( | Bit művelet | Kizáró vagy zárójel nyitással | | ||
+ | | [[#xn|XN]] | XN | Bit művelet | Kizáró vagy nem | | ||
+ | | XN( | XN( | Bit művelet | Kizáró vagy nem zárójel nyitással | | ||
+ | | XOD | XOD | Szavak összevetése | Kizáró vagy duplaszó ([[hu: | ||
+ | | XOW | XOW | Szavak összevetése | Kizáró vagy szó ([[hu: | ||
+ | | [[# | ||
+ | | [[# | ||
+ | |||
+ | ===== Státusz szó, VKE, STA, STANDARD ===== | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti példaprogramon látszik, hogy a számértékeket a STANDARD oszlopban jeleníti meg a szerkesztőprogram. Az MW10 tartalma 1792, a konstans 12-é meglepő módon 12. A [[# | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A STANDARD oszlop kijelzési módját megváltoztathatjuk, | ||
+ | |||
+ | === Státusz szó === | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | x | x | x | 1 | | ||
+ | |||
+ | 1. Táblázat Státusz szó tartalma | ||
+ | |||
+ | A jelzések jelentése: | ||
+ | |||
+ | - nem írja vagy olvassa a bitet\\ * | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === /ER Kiértékelő (0.) bit === | ||
+ | {{anchor: | ||
+ | **Erstabfragebit** | ||
+ | |||
+ | Az ER bit állapota irányítja egy kiértékelési lánc lekérdezését. Az ER bit a 0. a státusz szóban (balról a legutolsó). | ||
+ | |||
+ | Minden utasítás előtt a program lekérdezi az ER állapotát. | ||
+ | |||
+ | Ha az ER „0”, akkor új kiértékelési lánc indul, a művelet eredményét csak beírja a program a „[[# | ||
+ | |||
+ | Ha az ER „1”, akkor a kiértékelési lánc tart, a [[# | ||
+ | |||
+ | Az állítási műveletek (S, R, =) törlik az ER tartalmát, csakúgy, mint a [[# | ||
+ | |||
+ | === VKE (1.) bit === | ||
+ | {{anchor: | ||
+ | **Verknüpfungs: | ||
+ | |||
+ | A VKE bit tárolja minden műveletnek és összehasonlításnak az eredményét. A VKE bit a 1. a státusz szóban (balról az utolsó előtti). | ||
+ | |||
+ | Ha az [[# | ||
+ | |||
+ | === STA (2.) bit === | ||
+ | {{anchor: | ||
+ | **Statusbit** | ||
+ | |||
+ | A STA bit egy megcímzett bit értékét tárolja. A STA bit a 2. a státusz szóban (balról a harmadik). | ||
+ | |||
+ | Ha valaki a német definíciót értelmezhetően le tudja fordítani, annak gratula: | ||
+ | |||
+ | Der Status einer Verknüpfungsoperation, | ||
+ | |||
+ | A státuszbit gyakorlatilag különbségzi a műveletek ([[# | ||
+ | |||
+ | === OR (3.) bit === | ||
+ | {{anchor: | ||
+ | **Oder bit** | ||
+ | |||
+ | Ez a bit akkor szükséges, | ||
+ | |||
+ | A lenti példákon szemléltetem a bit működését. Az 1. változat azt az állapotot szemlélteti, | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === OS (4.) bit === | ||
+ | {{anchor: | ||
+ | **Überlauf, | ||
+ | |||
+ | Az OS bit az OV (túlcsordulás) bit értékét tárolja. Az OS bit a 4. a státusz szóban (jobbról a tagolás után az első).\\ Az OV bit túlcsordulás esetén lép fel aritmetikai műveleteknél vagy egész számok összehasonlításánál. Az OV csak a következő műveletig áll fenn, míg az OS tárolja az OV állapotát (lásd a lenti ábrát). Az OS állapotát az alábbi műveletek oldják fel: | ||
+ | |||
+ | * SPS (ugorj, ha az OS=1) | ||
+ | * Új eljárás hívása | ||
+ | * Eljárás vége | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === OV (5.) bit === | ||
+ | {{anchor: | ||
+ | **Überlauf: | ||
+ | |||
+ | Az OS bit a túlcsordulást jelzi. Az OV bit az 5. a státusz szóban (jobbról a tagolás után a második).\\ Az OS bit túlcsordulás esetén lép fel aritmetikai műveleteknél vagy egész számok összehasonlításánál. Az OV csak a következő műveletig áll fenn, míg az OS tárolja az OV állapotát (lásd a lenti ábrát). | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === A1, A0 (6., 7.) bit === | ||
+ | {{anchor: | ||
+ | **Anzeigenbits: | ||
+ | |||
+ | Az ábrázolóbitek a műveletek eredményeit tartalmazzák. Az A1 és A0 eredményeit az ugrásműveletek olvassák. Az eredmények képzését és jelentését a lenti táblázat tartalmazza. | ||
+ | |||
+ | ^ A1 ^ A0 ^ Jelentése | | ||
+ | ^ Aritmetikai művelet túlcsordulás nélkül ^^| | ||
+ | | 0 | 0 | Eredmény = 0 | | ||
+ | | 0 | 1 | Eredmény < 0 | | ||
+ | | 1 | 0 | Eredmény > 0 | | ||
+ | ^ Aritmetikai művelet (egész szám aritmetika) túlcsordulással ^^| | ||
+ | | 0 | 0 | Negatív irányú túlcsordulás +I, +D műveleteknél | | ||
+ | | 0 | 1 | Negatív irányú túlcsordulás *I, *D műveleteknél\\ Pozitív irányú túlcsordulás +I, -I, +D, -D, NEGI, NEGD műveleteknél | | ||
+ | | 1 | 0 | Negatív irányú túlcsordulás +I, -I, +D, -D műveleteknél\\ Pozitív irányú túlcsordulás *I, /I, *D, /D műveleteknél | | ||
+ | | 1 | 1 | 0-val való osztás /I, /D, MOD műveleteknél | | ||
+ | ^ Aritmetikai művelet (törtszám aritmetika) túlcsordulással ^^| | ||
+ | | 0 | 0 | Fokozatos értékvesztés | | ||
+ | | 0 | 1 | Túlcsordulás negatív irányban | | ||
+ | | 1 | 0 | Túlcsordulás pozitív irányban | | ||
+ | | 1 | 1 | Érvénytelen törtszám | | ||
+ | ^ Léptetés/ | ||
+ | | 0 | 0 | Az AKKU-ból kikerülő bit = 0 | | ||
+ | | 1 | 0 | Az AKKU-ból kikerülő bit = 1 | | ||
+ | ^ Összehasonlítás művelet eredménye ^^| | ||
+ | | 0 | 0 | AKKU2 = AKKU1 | | ||
+ | | 0 | 1 | AKKU2 < AKKU1 | | ||
+ | | 1 | 0 | AKKU2 > AKKU1 | | ||
+ | | 1 | 1 | Érvénytelen (csak egész szám összehasonlítás esetén) | | ||
+ | ^ Szavak összevetése művelet eredménye ^^| | ||
+ | | 0 | 0 | Eredmény = 0 | | ||
+ | | 1 | 0 | Eredmény <> 0 | | ||
+ | |||
+ | 2. Táblázat A1, A0 státuszbitek jelentése | ||
+ | |||
+ | === BIE (8.) bit === | ||
+ | {{anchor: | ||
+ | **Binäreredménybit: | ||
+ | |||
+ | Az BIE bit az AWL bináris eredményt tárolja és átviszi a további -- nem AWL - műveletekbe. A BIE bit a 8. a státusz szóban. | ||
+ | |||
+ | Ha a műveleteket AWL-ben kezdtük írni, és KOP/FUP programozásra akarunk áttérni, a művelet addigi eredményét a BIE biten keresztül tudjuk átvinni, úgy, hogy a [[# | ||
+ | |||
+ | Ha a program egy SFB-t vagy egy SFC-t hajt végre, a végrehajtás eredményességét a BIE bitben közli. Ha a BIE értéke a végrehajtást követően „1”, akkor az eljárás hiba nélkül lefutott, ha a „BIE” értéke „0”, akkor a futás során hiba lépett fel. | ||
+ | |||
+ | ==== Zárójel verem (Klammerstack) ==== | ||
+ | Zárójel verem (németül: Klammerstack, | ||
+ | |||
+ | Minden zárójeles bináris művelet - U(, O(, X(, UN(, ON(, XN( - egy új szintet nyit a zárójel veremben. A verem mélysége maximum 7 szintet tesz lehetővé, ez azt jelenti, hogy maximum hétszer lehet egymás után zárójelet nyitni zárás nélkül. A verem minden szintjén a státusz szóból két bit, a [[# | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | ====== Utasításkészlet ====== | ||
+ | |||
+ | Ebben a fejezetben összefoglalom az AWL utasításokat. | ||
+ | |||
+ | A példaprogramokat a Simatic program on-line státuszából emeltem ki, így az ott megjelenő állapotjelöléseket ismertetem itt is. Egyszerűbb esetben ez így néz ki: | ||
+ | |||
+ | {{wiki: | ||
+ | 9. ábra Példaprogram állapotok | ||
+ | |||
+ | ===== Bit logikai műveletek ===== | ||
+ | {{anchor: | ||
+ | |||
+ | === U (és) === | ||
+ | {{anchor: | ||
+ | Az ÉS művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a [[# | ||
+ | |||
+ | ^ U ^ 0 ^ 1 | | ||
+ | ^ 0 | 0 | 0 | | ||
+ | ^ 1 | 0 | 1 | | ||
+ | |||
+ | 3. Táblázat A művelet igazságtáblázata | ||
+ | |||
+ | Az ÉS művelettel a státusz szó állapotát is lekérdezhetjük, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | x | x | x | 1 | | ||
+ | |||
+ | 4. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === UN (és nem) === | ||
+ | {{anchor: | ||
+ | Az ÉS NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a [[# | ||
+ | |||
+ | ^ UN ^ 0 ^ 1 | | ||
+ | ^ 0 | 0 | 0 | | ||
+ | ^ 1 | 1 | 0 | | ||
+ | |||
+ | 5. Táblázat A művelet igazságtáblázata | ||
+ | |||
+ | Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | x | x | x | 1 | | ||
+ | |||
+ | 6. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === O (vagy) === | ||
+ | {{anchor: | ||
+ | A VAGYművelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a [[# | ||
+ | |||
+ | ^ UN ^ 0 ^ 1 | | ||
+ | ^ 0 | 0 | 1 | | ||
+ | ^ 1 | 1 | 1 | | ||
+ | |||
+ | 7. Táblázat A művelet igazságtáblázata | ||
+ | |||
+ | Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | x | 1 | | ||
+ | |||
+ | 8. Táblázat Státusz szó változásai | ||
+ | |||
+ | | KOP | AWL | | ||
+ | | {{wiki: | ||
+ | | Az első VAGY ág teljesül (az első vagy ágat nem kell „O” utasítással kezdeni). || | ||
+ | | {{wiki: | ||
+ | | A második VAGY ág teljesül. || | ||
+ | | {{wiki: | ||
+ | | A harmadik vagy ág teljesül || | ||
+ | | {{wiki: | ||
+ | | Az utasítás eredménye 0. || | ||
+ | |||
+ | 2. Példaprogram OR állapotok | ||
+ | |||
+ | === ON (vagy nem) === | ||
+ | {{anchor: | ||
+ | A VAGY NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a [[# | ||
+ | |||
+ | Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | x | 1 | | ||
+ | |||
+ | 9. Táblázat Státusz szó változásai | ||
+ | |||
+ | Bár a KOP programozással ebben a fejezetben nem foglalkozok, | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === X (kizáró vagy) === | ||
+ | {{anchor: | ||
+ | A kizáró vagy művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a [[# | ||
+ | |||
+ | ^ UN ^ 0 ^ 1 | | ||
+ | ^ 0 | 0 | 1 | | ||
+ | ^ 1 | 1 | 0 | | ||
+ | |||
+ | 10. Táblázat A művelet igazságtáblázata | ||
+ | |||
+ | Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | x | 1 | | ||
+ | |||
+ | 11. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === XN (kizáró vagy nem) === | ||
+ | {{anchor: | ||
+ | A kizáró vagy nem művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a [[# | ||
+ | |||
+ | Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | x | 1 | | ||
+ | |||
+ | 12. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === = (egyenlő) === | ||
+ | |||
+ | = <bit> az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | - | 0 | | ||
+ | |||
+ | 13. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === R (reset) === | ||
+ | {{anchor: | ||
+ | R <bit> ha a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | - | 0 | | ||
+ | |||
+ | 14. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === S (set) === | ||
+ | {{anchor: | ||
+ | S <bit> ha a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | x | - | 0 | | ||
+ | |||
+ | 15. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === NOT (VKE negálás) === | ||
+ | {{anchor: | ||
+ | A NOT negálja a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | 1 | x | - | | ||
+ | |||
+ | 16. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === SET (VKE állítás) === | ||
+ | {{anchor: | ||
+ | A SET a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | 1 | 1 | 0 | | ||
+ | |||
+ | 17. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === CLR (VKE törlés) === | ||
+ | {{anchor: | ||
+ | A CLR a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | 0 | 0 | 0 | | ||
+ | |||
+ | 18. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | ===== Összehasonlítási műveletek ===== | ||
+ | |||
+ | === ? I (16 bites egész szám összehasonlítás) === | ||
+ | |||
+ | **%%==%%I, <>I, >I, <I, >=I, <=I**\\ Az egész szám összehasonlítás az AKKU2-L tartalmát hasonlítja össze az AKKU1-L-lel. Az összehasonlítás csak fél akku hosszon, 16 biten történik. Az eredmény a [[# | ||
+ | |||
+ | ^ művelet ^ [[# | ||
+ | ^ %%==%%I | 0 | 1 | 0 | | ||
+ | ^ <>I | 1 | 0 | 1 | | ||
+ | ^ >I | 1 | 0 | 0 | | ||
+ | ^ <I | 0 | 0 | 1 | | ||
+ | ^ >=I | 1 | 1 | 0 | | ||
+ | ^ <=I | 0 | 1 | 1 | | ||
+ | |||
+ | 19. Táblázat | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | 0 | - | 0 | x | x | 1 | | ||
+ | |||
+ | 20. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === ? D (32 bites egész szám összehasonlítás) === | ||
+ | |||
+ | **%%==%%D, <>D, >D, <D, >=D, <=D**\\ Az egész szám összehasonlítás az AKKU2 tartalmát hasonlítja össze az AKKU1 -el. Az összehasonlítás egész akku hosszon, 32 biten történik. Az eredmény a [[# | ||
+ | |||
+ | ^ művelet ^ [[# | ||
+ | ^ %%==%%D | 0 | 1 | 0 | | ||
+ | ^ <>D | 1 | 0 | 1 | | ||
+ | ^ >D | 1 | 0 | 0 | | ||
+ | ^ <D | 0 | 0 | 1 | | ||
+ | ^ >=D | 1 | 1 | 0 | | ||
+ | ^ <=D | 0 | 1 | 1 | | ||
+ | |||
+ | 21. Táblázat | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | 0 | - | 0 | x | x | 1 | | ||
+ | |||
+ | 22. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === ? R (32 bites törtszám összehasonlítás) === | ||
+ | |||
+ | **%%==%%R, <>R, >R, <R, >=R, <=R**\\ A törtszám összehasonlítás az AKKU2 tartalmát hasonlítja össze az AKKU1 -el. Az összehasonlítás egész akku hosszon, 32 biten történik, az akkumlátorok tartalma IEEE-FP formátumban kerül kiértékelésre. Az eredmény a [[# | ||
+ | |||
+ | ^ művelet ^ [[# | ||
+ | ^ %%==%%R | 0 | 1 | 0 | | ||
+ | ^ <>R | 1 | 0 | 1 | | ||
+ | ^ >R | 1 | 0 | 0 | | ||
+ | ^ <R | 0 | 0 | 1 | | ||
+ | ^ >=R | 1 | 1 | 0 | | ||
+ | ^ <=R | 0 | 1 | 1 | | ||
+ | |||
+ | 23. Táblázat | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | 0 | x | x | 1 | | ||
+ | |||
+ | 24. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | ===== Transzformációk ===== | ||
+ | |||
+ | === BTI (BCD konvertálás egész szám formátumra) === | ||
+ | {{anchor: | ||
+ | A BTI egy előjeles, 3 számjegyű [[hu: | ||
+ | |||
+ | Az átalakítandó értéket az AKKU1-L-be tárolja az utasítás, „-999”-től „+999” értékig. A 0.bit-től a 11.bit-ig az érték tárolása történik, az 15.bit az előjel (0: pozitív, 1: negatív). A 12-bit-től a 14.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 25. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A példaprogram első két sorában konstans 123-at BCD formátumban (c#) betölti a program az MW10-be, majd az MW10 tartalmát konvertálja MW12-be. | ||
+ | |||
+ | === ITB (egész szám konvertálás BCD formátumra) === | ||
+ | {{anchor: | ||
+ | A ITB az AKKU1-L terület értékét alakítja át [[hu: | ||
+ | |||
+ | Az átalakítandó értéket az AKKU1-L-be tárolja az utasítás, „-999”-től „+999” értékig. A 0.bit-től a 11.bit-ig az érték tárolása történik, az 15.bit az előjel (0: pozitív, 1: negatív). A 12-bit-től a 14.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | x | x | - | - | - | - | | ||
+ | |||
+ | 26. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === BTD (BCD konvertálás 32 bites egész szám formátumra) === | ||
+ | {{anchor: | ||
+ | A BTD egy előjeles, 7 számjegyű [[hu: | ||
+ | |||
+ | Az átalakítandó értéket az AKKU1-L-be tárolja az utasítás, „-9999999”-től „+9999999” értékig. A 0.bit-től a 27.bit-ig az érték tárolása történik, az 31.bit az előjel (0: pozitív, 1: negatív). A 28.-bit-től a 30.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | | |^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 27. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === DTB (32 bites egész szám konvertálás BCD formátumra) === | ||
+ | {{anchor: | ||
+ | A DTB az AKKU1 terület 32 bites egész szám értékét alakítja át [[hu: | ||
+ | |||
+ | Az átalakítandó értéket az AKKU1-be tárolja az utasítás, „-9999999”-től „+9999999” értékig. A 0.bit-től a 27.bit-ig az érték tárolása történik, a 28. - 31.bit az előjel (0000: pozitív, 1111: negatív). A 12-bit-től a 14.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | x | x | - | - | - | - | | ||
+ | |||
+ | 28. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === ITD (16 bites egész szám átalakítása 32 bitessé) === | ||
+ | {{anchor: | ||
+ | A 16 bites egész számot az eljárás az AKKU1-L-be tölti be, az eredmény 32 biten az AKKU1-ben jelenik meg. Az AKKU2 nem vesz részt a műveletben. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 29. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === DTR (32 bites egész szám átalakítása IEEE-FP törtszámmá) === | ||
+ | {{anchor: | ||
+ | Az AKKU1-be töltött 32 bites egész számot IEEE-FP (real) típusúvá alakítja. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 30. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === INVI (egyes inklementer képzés 16 bites egész számon) === | ||
+ | {{anchor: | ||
+ | A eljárás egy 16 bites egész számot beolvassa az AKKU1-L-ből és bitenként felcseréli az értékeket. Az eredményt az AKKU1-L-be tárolja. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 31. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === INVD (egyes inklementer képzés 32 bites egész számon) === | ||
+ | {{anchor: | ||
+ | A eljárás egy 16 bites egész számot beolvassa az AKKU1-ből és bitenként felcseréli az értékeket. Az eredményt az AKKU1-be tárolja. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 32. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === NEGI (16 bites egész szám negálása) === | ||
+ | {{anchor: | ||
+ | A eljárás egy 16 bites egész számot (INTEGER) beolvassa az AKKU1-L-ből és negálja. Az eredményt az AKKU1-L-be tárolja. Az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | |||
+ | 33. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^ Státuszbitek képzése ^ A1 ^ A0 ^ OV ^ OS | | ||
+ | ^ Eredmény = 0 | 0 | 0 | 0 | - | | ||
+ | ^ -32 768 <= Eredmény <= -1 | 0 | 1 | 0 | - | | ||
+ | ^ 32 767 >= Eredmény >= 1 | 1 | 0 | 0 | - | | ||
+ | ^ Eredmény = 32 768 | 0 | 1 | 1 | 1 | | ||
+ | |||
+ | 34. Táblázat Státuszbitek képzése | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === NEGD (32 bites egész szám negálása) === | ||
+ | {{anchor: | ||
+ | A eljárás egy 32 bites egész számot beolvassa ([[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | |||
+ | 35. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^ Státuszbitek képzése ^ A1 ^ A0 ^ OV ^ OS | | ||
+ | ^ Eredmény = 0 | 0 | 0 | 0 | - | | ||
+ | ^ -2 147 483 648 <= Eredmény <= -1 | 0 | 1 | 0 | - | | ||
+ | ^ 2 147 483 647 >= Eredmény >= 1 | 1 | 0 | 0 | - | | ||
+ | ^ Eredmény = 2 147 483 648 | 0 | 1 | 1 | 1 | | ||
+ | |||
+ | 36. Táblázat Státuszbitek képzése | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === NEGR (IEEE-FP törtszám negálása) === | ||
+ | {{anchor: | ||
+ | A eljárás egy 32 bites törtszámot ([[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 37. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === TAW (bájtok cseréje az AKKU1-L-ben) === | ||
+ | {{anchor: | ||
+ | A TAW utasítás felcseréli a bájtok sorrendjét az AKKU1-L-ben. (A lenti ábra ezt szemlélteti). Az AKKU1-H és AKKU2 nem vesz részt a műveletben.\\ | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 38. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === TAD (bájtok cseréje az AKKU1-ben) === | ||
+ | {{anchor: | ||
+ | A TAW utasítás felcseréli a bájtok sorrendjét az AKKU1-ben. (A lenti ábra ezt szemlélteti). Az AKKU2 nem vesz részt a műveletben.\\ | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 39. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === RND (törtszám kerekítése egész számra) === | ||
+ | {{anchor: | ||
+ | A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites egész számra kerekíti. Ha a törtszám pont egy páros és páratlan szám közé esik, akkor a kerekítés a páros számra történik (IEEE kerekítési mód: „Round”). Amennyiben az eredmény a [[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | x | x | - | - | - | - | | ||
+ | |||
+ | 40. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === RND+ (törtszám felkerekítése egész számra) === | ||
+ | |||
+ | A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites következő (eggyel nagyobb) egész számra kerekíti (IEEE kerekítési mód: „Round to +infinity”). Amennyiben az eredmény a [[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | x | x | - | - | - | - | | ||
+ | |||
+ | 41. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === RND- (törtszám lekerekítése egész számra) === | ||
+ | |||
+ | A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites megelőző (eggyel kisebb) egész számra kerekíti (IEEE kerekítési mód: „Round to infinity”). Amennyiben az eredmény a [[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | x | x | - | - | - | - | | ||
+ | |||
+ | 42. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === TRUNC (törtszám csonkolása egész számra) === | ||
+ | {{anchor: | ||
+ | A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites egész számra alakítja úgí, hogy a törtrészt levágja (csonkolja) (IEEE kerekítési mód: „Round to Zero”). Amennyiben az eredmény a [[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | x | x | - | - | - | - | | ||
+ | |||
+ | 43. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | ===== Számláló (Zähler) műveletek ===== | ||
+ | |||
+ | A számláló egy programozási elem a STEP7-ben. Ezeknek a funkcióknak egy külön terület van fenntartva a CPU-ban, és itt minden számláló 16 bitet foglal. Az AWL programozási nyelv 256 számláló használatát teszi lehetővé, de az adott CPU-tól függ, hogy mennyit lehet ebből használni. A számlálókhoz a számláló műveleteken keresztül lehet hozzáférni, | ||
+ | |||
+ | ^ [[#fr|FR]] | Freigabe Zähler | Számláló feloldása | | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | |||
+ | 44. Táblázat Számláló műveletek | ||
+ | |||
+ | === FR (számláló feloldása) === | ||
+ | {{anchor: | ||
+ | Formátuma: **FR < | ||
+ | |||
+ | A számláló feloldása akkor történik meg, ha az utasítás előtt a „[[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | |||
+ | 45. Táblázat Státusz szó változásai | ||
+ | |||
+ | === L (számlálóérték betöltése egész számként) === | ||
+ | {{anchor: | ||
+ | Formátuma: **L < | ||
+ | |||
+ | A számláló értékét betölti az AKKU1-L-be egész számként, időalap nélkül, miután lementette az AKKU1 és AKKU2 értékét. A számláló maximális értéke „999” lehet, ennek ábrázolására 10 bit elegendő, így az AKKU1-L felső 6 bitjét nem tölti ki a művelet. | ||
+ | |||
+ | Az AKKU1-L-ből akkor is be kell tölteni a számláló értéket, ha a számláló nem kerül elindításra ([[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 46. Táblázat Státusz szó változásai | ||
+ | |||
+ | === LC (számlálóérték betöltése BCD-ként) === | ||
+ | {{anchor: | ||
+ | Formátuma: **LC < | ||
+ | |||
+ | A számláló értékét betölti az AKKU1-L-be BCD-ként, miután lementette az AKKU1 és AKKU2 értékét. A számláló maximális értéke „999” lehet, ennek ábrázolására 12 bit (3*4) elegendő, így az AKKU1-L felső 4 bitjét nem tölti ki a művelet. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 47. Táblázat Státusz szó változásai | ||
+ | |||
+ | === R (számláló nullázása) === | ||
+ | {{anchor: | ||
+ | Formátuma: **R < | ||
+ | |||
+ | „0” értéket tölt be a számlálóba, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | |||
+ | 48. Táblázat Státusz szó változásai | ||
+ | |||
+ | === S (számláló beállítása) === | ||
+ | {{anchor: | ||
+ | Formátuma: **S < | ||
+ | |||
+ | Betölti az AKKU1-L tartalmát a számlálóba, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | |||
+ | 49. Táblázat Státusz szó változásai | ||
+ | |||
+ | === ZV (számláló előre) === | ||
+ | {{anchor: | ||
+ | Formátuma: **ZV < | ||
+ | |||
+ | A számláló értékét „1”-gyel növeli, amennyiben a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | |||
+ | 50. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | 44. ábra ZV példaprogram | ||
+ | |||
+ | < | ||
+ | L MW 10 | ||
+ | L 1 | ||
+ | +I | ||
+ | T MW 10 | ||
+ | |||
+ | L C#0 // Számlálóba betöltendő érték | ||
+ | U M 11.7 // A számláló inicializálását végző bit | ||
+ | S Z 12 // a 12. számláló | ||
+ | |||
+ | U M 11.1 // Számlálást vezérlő bit | ||
+ | ZV Z 12 // Minden VKE 0->1 után számol egyet | ||
+ | |||
+ | U Z 12 // Ha a számlálás ismét a " | ||
+ | = A 11.0 // a kimenet " | ||
+ | |||
+ | L Z 12 | ||
+ | </ | ||
+ | 3. Példaprogram ZV | ||
+ | |||
+ | === ZR (számláló hátra) === | ||
+ | {{anchor: | ||
+ | Formátuma: **ZR < | ||
+ | |||
+ | A számláló értékét „1”-gyel csökkenti, amennyiben a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | |||
+ | 51. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L MW 10 | ||
+ | L 1 | ||
+ | +I | ||
+ | T MW 10 | ||
+ | |||
+ | L C#55 // Számlálóba betöltendő érték | ||
+ | U M 11.7 // A számláló inicializálását végző bit | ||
+ | S Z 12 // a 12. számláló | ||
+ | |||
+ | U M 11.1 // Visszaszámlálást vezérlő bit | ||
+ | ZR Z 12 // Minden VKE 0->1 után számol egyet | ||
+ | |||
+ | U Z 12 // Ha a számlálás elérte a " | ||
+ | = A 11.0 // a kimenet " | ||
+ | |||
+ | L Z 12 | ||
+ | </ | ||
+ | 4. Példaprogram ZR | ||
+ | |||
+ | ===== Adatblokk műveletek ===== | ||
+ | |||
+ | Az „AUF” művelettel egy globális vagy egy instant adatblokkot (DB-t) nyithatunk meg. Egyidejűleg egy globális és egy instant DB lehet nyitva. Ebben a fejezetben az alábbi utasítások állnak rendelkezésére: | ||
+ | |||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[#l_dblg|L DBLG]] | Lade Länge Global-DB in AKKU 1 | Globális DB hosszának betöltése az AKKU1-be | | ||
+ | ^ [[#l_dbno|L DBNO]] | Lade Nummer Global-DB in AKKU 1 | Globális DB számának betöltése az AKKU1-be | | ||
+ | ^ [[#l_dilg|L DILG]] | Lade Länge Instanz-DB in AKKU 1 | Instant DB hosszának betöltése az AKKU1-be | | ||
+ | ^ [[#l_dino|L DINO]] | Lade Nummer Instanz-DB in AKKU 1 | Instant DB számának betöltése az AKKU1-be | | ||
+ | |||
+ | 52. Táblázat Adatblokk műveletek összefoglalása | ||
+ | |||
+ | === AUF (Adatblokk nyitása) === | ||
+ | {{anchor: | ||
+ | Formátuma: **AUF < | ||
+ | |||
+ | * Az AUF művelet a DI-k és DB-k nyitására alkalmas. | ||
+ | * Az adatblokk száma 1 és 65535 között lehet, de ennek értékét az adott PLC is behatárolhatja. | ||
+ | |||
+ | Az AUF művelet egy adatblokkot nyit, mely lehet instant DI vagy globális DB. Egyidejűleg egy DI és egy DB lehet nyitva. | ||
+ | |||
+ | < | ||
+ | AUF DB 10 // 10. globális DB nyitása | ||
+ | L DBW 12 // 12.word a DB-ből | ||
+ | T MW 10 // memóriába másol | ||
+ | |||
+ | AUF DI 11 // 11. instant DI nyitása | ||
+ | L DIB 12 // 12 byte olvasása a DI-ből | ||
+ | T DBB 24 // átmásolása a DB-be | ||
+ | </ | ||
+ | 5. Példaprogram AUF | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 53. Táblázat Státusz szó változásai | ||
+ | |||
+ | Az adatblokkok tartalmát direkt hivatkozásokkal is el lehet érni, például : db10.dbx12.2 vagy db10.dbd12. | ||
+ | |||
+ | Amennyiben a meghívni kívánt DB és az OB121 sincs letöltve, akkor a PLC „stop”-ba megy az alábbi hibával „DB nicht geladen”. Előfordulhat, | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === TDB (Globális DB és instant DB cseréje) === | ||
+ | {{anchor: | ||
+ | Formátuma: **TDB**\\ A TDB felcseréli a adatblokk regiszter tartalmát, ezáltal felcseréli egymással a nyitott instant DI-t és a globális DB-t. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 54. Táblázat Státusz szó változásai | ||
+ | |||
+ | === L DBLG (Globális DB hosszának betöltése az AKKU1-be) === | ||
+ | |||
+ | Formátuma: **L DBLG** | ||
+ | |||
+ | A nyitott globális DB hosszát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 55. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | AUF DB 10 // DB10 nyitása | ||
+ | L DBLG // hossz lekérdezése | ||
+ | L 4 // a DB10 REAL típusú array | ||
+ | /I // így a byte-ok számát 4-gyel | ||
+ | T MW 10 // kell osztani az elemek számához. | ||
+ | </ | ||
+ | 6. Példaprogram L DBLG | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === L DBNO (Globális DB számának betöltése az AKKU1-be) === | ||
+ | {{anchor: | ||
+ | Formátuma: **L DBNO** | ||
+ | |||
+ | A nyitott globális DB számát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 56. Táblázat Státusz szó változásai | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === L DILG (Instant DB hosszának betöltése az AKKU1-be) === | ||
+ | {{anchor: | ||
+ | Formátuma: **L DILG** | ||
+ | |||
+ | A nyitott instant DB hosszát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 57. Táblázat Státusz szó változásai | ||
+ | |||
+ | === L DINO (Instant DB számának betöltése az AKKU1-be) === | ||
+ | {{anchor: | ||
+ | Formátuma: **L DINO** | ||
+ | |||
+ | A nyitott instant DB számát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 58. Táblázat Státusz szó változásai | ||
+ | |||
+ | ===== Ugrás műveletek ===== | ||
+ | |||
+ | Az ugrás művelet lehetővé teszi, hogy a program futását egy adott ponton megszakítsa úgy, hogy a végrehajtást egy -- a program későbbi szakaszában található -- pontra irányítja át. Az ugrás műveletével lehetővé válik, hogy egy programrészt többször is lefuttasson (LOOP). | ||
+ | |||
+ | A LOOP-olással azért óvatosan kell bánni. Minden PLC-nek van egy ciklus felügyeleti ideje (Baugruppezustand » Zykluszeit » Zyklusüberwachungszeit). Amennyiben a program futásideje ezt az időt meghaladja, a PLC „stop”-ba megy. Ezt az időt nem lehet felülbírálni, | ||
+ | Amennyiben egy ugrásban a címkét nem sikerül átírni a sajátjára, | ||
+ | A lenti példán ezt a programot mutatom be. Látszik, hogy a második ugrásnál „elfelejtettem” átírni az ugrási címkét (piros), és ebben az esetben kínos leálláshoz vezet a LOOP „alkalmazása”. | ||
+ | |||
+ | < | ||
+ | U M 11.1 | ||
+ | SPBN m001 | ||
+ | |||
+ | xxx // itt számolok, és ezt sokszorosítom | ||
+ | |||
+ | m001: NOP 0 | ||
+ | |||
+ | U M 11.2 | ||
+ | SPBN m001 << Hiba! | ||
+ | |||
+ | xxx // itt számolok, és ezt sokszorosítom | ||
+ | |||
+ | m002: NOP 0 | ||
+ | |||
+ | U M 11.3 | ||
+ | SPBN m003 | ||
+ | |||
+ | xxx // itt számolok, és ezt sokszorosítom | ||
+ | |||
+ | m003: NOP 0 | ||
+ | </ | ||
+ | 7. Példaprogram Stoppoló programozói tévedés | ||
+ | |||
+ | Az ugrási címkét egy maximum 4 karakteres mező jelöli, melyet egy kettőspont | ||
+ | |||
+ | Figyeljen arra, hogy a S7-300-as CPU-kon nem megengedett a kiértékelési láncba való beugrás, a címke csak a lánc előtt helyezkedhet el (kivétel a CPU 318-2). | ||
+ | |||
+ | ^Parancs^németül^magyarul| | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | ^ [[# | ||
+ | |||
+ | 59. Táblázat Ugrás műveletek összefoglalása | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPA (Abszolút ugrás) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPA < | ||
+ | |||
+ | Feltétel nélkül megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli. | ||
+ | |||
+ | Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 60. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | U M 10.0 // ugrási feltételek | ||
+ | U M 11.0 | ||
+ | SPB M011 // ha a feltételek igazak, ugrik | ||
+ | |||
+ | SET // egyébként végrehajtja ezt a részt | ||
+ | = M 12.0 | ||
+ | |||
+ | SPA M012 // majd feltétel nélkül ugrik | ||
+ | |||
+ | M011: NOP 0 // feltételes ugrás címke | ||
+ | |||
+ | CLR // feltételek teljesülése esetén | ||
+ | = M 13.0 // ez a rész végrehajtásra kerül | ||
+ | = M 14.0 | ||
+ | |||
+ | M012: NOP 0 // feltétel nélküli ugrás címke | ||
+ | </ | ||
+ | 8. Példaprogram SPA | ||
+ | |||
+ | === SPL (Ugráslista) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPL < | ||
+ | |||
+ | Lista szerinti ugrás. A lista elemeinek maximális száma 255 (címke). A műveletet feltétlenül az SPL-lel kell kezdeni. Minden ugrási címkét SPA utasítással kell definiálni, | ||
+ | |||
+ | Az ugrás minden célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkéknek az adott eljáráson belül kell lennie, és mindegyik csak egyszer szerepelhet. Több SPA-ban és SPL-ben is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 61. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L MB 20 // ugráspozíció megadása | ||
+ | SPL mas // minden más esetben ide ugrik | ||
+ | SPA ide0 // MB20 = 0 esetén ide ugrik | ||
+ | SPA ide1 // MB20 = 1 esetén ide ugrik | ||
+ | SPA ide2 // MB20 = 2 esetén ide ugrik | ||
+ | SPA ide3 // MB20 = 3 esetén ide ugrik | ||
+ | |||
+ | mas: L 100 // MB20 > 3 esetén 100-at tölt az AKKU1-be | ||
+ | SPA tov | ||
+ | ide0: L 0 // MB20 = 0 esetén 0-át tölt az AKKU1-be | ||
+ | SPA tov | ||
+ | ide1: L 1 // MB20 = 1 esetén 1-et tölt az AKKU1-be | ||
+ | SPA tov | ||
+ | ide2: L 2 // MB20 = 2 esetén 2-t tölt az AKKU1-be | ||
+ | SPA tov | ||
+ | ide3: L 3 // MB20 = 3 esetén 3-at tölt az AKKU1-be | ||
+ | SPA tov | ||
+ | tov: T MW 30 // AKKU1 mentése MW30-ba | ||
+ | </ | ||
+ | 9. Példaprogram SPL | ||
+ | |||
+ | === SPB (Ugrás, ha a VKE = 1) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPB < | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | 1 | 1 | 0 | | ||
+ | |||
+ | 62. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | U M 10.0 // ugrási feltételek | ||
+ | U M 11.0 | ||
+ | SPB M011 // ha a feltételek igazak, ugrik | ||
+ | |||
+ | SET // egyébként végrehajtja ezt a részt | ||
+ | = M 12.0 | ||
+ | |||
+ | SPA M012 // majd feltétel nélkül ugrik | ||
+ | |||
+ | M011: NOP 0 // feltételes ugrás címke | ||
+ | |||
+ | CLR // feltételek teljesülése esetén | ||
+ | = M 13.0 // ez a rész végrehajtásra kerül | ||
+ | = M 14.0 | ||
+ | |||
+ | M012: NOP 0 // feltétel nélküli ugrás címke | ||
+ | </ | ||
+ | 10. Példaprogram SPB | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPBN (Ugrás, ha a VKE = 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPBN < | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | 1 | 1 | 0 | | ||
+ | |||
+ | 63. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | U M 10.0 // ugrási feltételek | ||
+ | U M 11.0 | ||
+ | SPBN M011 // ha a feltételek nem igazak, ugrik | ||
+ | |||
+ | SET // egyébként végrehajtja ezt a részt | ||
+ | = M 12.0 | ||
+ | |||
+ | SPA M012 // majd feltétel nélkül ugrik | ||
+ | |||
+ | M011: NOP 0 // feltételes ugrás címke | ||
+ | |||
+ | CLR // feltételek teljesülése esetén | ||
+ | = M 13.0 // ez a rész végrehajtásra kerül | ||
+ | = M 14.0 | ||
+ | |||
+ | M012: NOP 0 // feltétel nélküli ugrás címke | ||
+ | </ | ||
+ | 11. Példaprogram SPBN | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPBB (Ugrás, ha a VKE = 1, és menti a VKE-t a BIE-be) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPBB < | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | x | - | - | - | - | 0 | 1 | 1 | 0 | | ||
+ | |||
+ | 64. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | U M 10.0 // ugrási feltételek | ||
+ | U M 11.0 | ||
+ | SPBB M011 // ha a feltételek igazak, ugrik | ||
+ | |||
+ | SET // egyébként végrehajtja ezt a részt | ||
+ | = M 12.0 | ||
+ | |||
+ | SPA M012 // majd feltétel nélkül ugrik | ||
+ | |||
+ | M011: NOP 0 // feltételes ugrás címke | ||
+ | |||
+ | CLR // feltételek teljesülése esetén | ||
+ | = M 13.0 // ez a rész végrehajtásra kerül | ||
+ | = M 14.0 | ||
+ | |||
+ | M012: NOP 0 // feltétel nélküli ugrás címke | ||
+ | </ | ||
+ | 12. Példaprogram SPBB | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPBNB (Ugrás, ha a VKE = 0, és menti a VKE-t a BIE-be) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPBNB < | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | x | - | - | - | - | 0 | 1 | 1 | 0 | | ||
+ | |||
+ | 65. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | U M 10.0 // ugrási feltételek | ||
+ | U M 11.0 | ||
+ | SPBN M011 // ha a feltételek nem igazak, ugrik | ||
+ | |||
+ | SET // egyébként végrehajtja ezt a részt | ||
+ | = M 12.0 | ||
+ | |||
+ | SPA M012 // majd feltétel nélkül ugrik | ||
+ | |||
+ | M011: NOP 0 // feltételes ugrás címke | ||
+ | |||
+ | CLR // feltételek teljesülése esetén | ||
+ | = M 13.0 // ez a rész végrehajtásra kerül | ||
+ | = M 14.0 | ||
+ | |||
+ | M012: NOP 0 // feltétel nélküli ugrás címke | ||
+ | </ | ||
+ | 13. Példaprogram SPBNB | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPBI (Ugrás, ha a BIE = 1) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPBI < | ||
+ | |||
+ | A BIE = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli. | ||
+ | |||
+ | Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | 1 | - | 0 | | ||
+ | |||
+ | 66. Táblázat Státusz szó változásai | ||
+ | |||
+ | === SPBIN (Ugrás, ha a BIE = 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPBIN < | ||
+ | |||
+ | A BIE = 0 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli. | ||
+ | |||
+ | Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | 1 | - | 0 | | ||
+ | |||
+ | 67. Táblázat Státusz szó változásai | ||
+ | |||
+ | === SPO (Ugrás, ha az OV = 1) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPO < | ||
+ | |||
+ | A OV = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az OV státusz bit akkor vált egyre, ha a számolási műveletben túlcsordulás történik. Az SPO csak közvetlenül a túlcsordulást produkáló művelet után használható, | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 68. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 23333 // túlcsordulás képzése | ||
+ | L 234 | ||
+ | *I // túlcsordulás OV=1 | ||
+ | T MW 22 | ||
+ | |||
+ | // L 12 // kikommentelve, | ||
+ | // L 14 // nincs túlcsordulás, | ||
+ | // *I // OV visszaíródna 0-ra (lásd: SPS) | ||
+ | // T MW 24 | ||
+ | |||
+ | SPO m012 // ha OV=1, ugrás | ||
+ | |||
+ | BEA // eljárás vége, ha OV=0 | ||
+ | |||
+ | m012: NOP 0 // túlcsordulás kezelése | ||
+ | |||
+ | SET | ||
+ | = M 122.2 // pl. hibaüzenet generálása | ||
+ | </ | ||
+ | 14. Példaprogram SPO | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPS (Ugrás, ha az OS = 1) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPS < | ||
+ | |||
+ | A OS = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az OV státusz bit akkor vált egyre, ha a számolási műveletben túlcsordulás történik. Az SPO csak közvetlenül a túlcsordulást produkáló művelet után használható, | ||
+ | |||
+ | Az OS bit ezzel szemben tárolja a túlcsordulás tényét | ||
+ | |||
+ | * az SPS műveletig, | ||
+ | * az eljárás végéig, | ||
+ | * az első CALL parancsig. | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 69. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 23333 // túlcsordulás képzése | ||
+ | L 234 | ||
+ | *I // túlcsordulás OV=1 | ||
+ | T MW 22 | ||
+ | |||
+ | L 12 // nincs túlcsordulás, | ||
+ | L 14 // OV visszaíródik 0-ra | ||
+ | *I // de az OS=1 továbbra is | ||
+ | T MW 24 | ||
+ | |||
+ | SPS m012 // ha OS=1, ugrás | ||
+ | |||
+ | BEA // eljárás vége, ha OV=0 | ||
+ | |||
+ | m012: NOP 0 // túlcsordulás kezelése | ||
+ | |||
+ | SET | ||
+ | = M 122.2 // pl. hibaüzenet generálása | ||
+ | </ | ||
+ | 15. Példaprogram SPS | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === SPZ (Ugrás, ha az eredmény = 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPZ < | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 70. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 123 // viszonylag egyszerű összehasonlítás | ||
+ | L 123 // melynek várható eredménye egyenlőség | ||
+ | SPZ ide // lesz. | ||
+ | |||
+ | SPA tov // ha nem egyenlő, tov | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // ha egyenlő, állítja a bitet | ||
+ | |||
+ | tov: NOP 0 | ||
+ | </ | ||
+ | 16. Példaprogram SPZ | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === SPN (Ugrás, ha az eredmény <> 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPN < | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 71. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 123 // viszonylag egyszerű összehasonlítás | ||
+ | L 122 // melynek várható eredménye <> | ||
+ | SPN ide // lesz. | ||
+ | |||
+ | SPA tov // ha egyenlő, tov | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // ha nem egyenlő, állítja a bitet | ||
+ | |||
+ | tov: NOP 0 // tov | ||
+ | </ | ||
+ | 17. Példaprogram SPN | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === SPP (Ugrás, ha az eredmény > 0) === | ||
+ | |||
+ | Formátuma: **SPP < | ||
+ | {{anchor: | ||
+ | Az [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 72. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 124 // AKKU2 | ||
+ | L 120 // AKKU1 | ||
+ | ==I | ||
+ | SPP ide // ha AKKU2 > AKKU1, ugrás | ||
+ | |||
+ | SPA tov // | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // ha a feltétel igaz, állítja a bitet | ||
+ | |||
+ | tov: NOP 0 // tov | ||
+ | </ | ||
+ | 18. Példaprogram SPP | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === SPM (Ugrás, ha az eredmény < 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPM < | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 73. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 100 // AKKU2 | ||
+ | L 120 // AKKU1 | ||
+ | ==I | ||
+ | SPM ide // ha AKKU2 < AKKU1, ugrás | ||
+ | |||
+ | SPA tov // | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // ha a feltétel igaz, állítja a bitet | ||
+ | |||
+ | tov: NOP 0 // tov | ||
+ | </ | ||
+ | 19. Példaprogram SPM | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === SPPZ (Ugrás, ha az eredmény >= 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPPZ < | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 74. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 124 // AKKU2 | ||
+ | L 120 // AKKU1 | ||
+ | ==I | ||
+ | SPPZ ide // ha AKKU2 >= AKKU1, ugrás | ||
+ | |||
+ | SPA tov // | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // ha a feltétel igaz, állítja a bitet | ||
+ | |||
+ | tov: NOP 0 // tov | ||
+ | </ | ||
+ | 20. Példaprogram SPPZ | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === SPMZ (Ugrás, ha az eredmény < 0) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SPMZ < | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 75. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 100 // AKKU2 | ||
+ | L 120 // AKKU1 | ||
+ | ==I | ||
+ | SPM ide // ha AKKU2 <= AKKU1, ugrás | ||
+ | |||
+ | SPA tov // | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // ha a feltétel igaz, állítja a bitet | ||
+ | |||
+ | tov: NOP 0 // tov | ||
+ | </ | ||
+ | 21. Példaprogram SPMZ | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === SPU (Ugráaacute; | ||
+ | {{anchor: | ||
+ | Formátuma: **SPU < | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | |||
+ | 76. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 100 // AKKU2 | ||
+ | L 0 // AKKU1 | ||
+ | /I | ||
+ | SPU ide // érvénytelen művelet esetén ugrás | ||
+ | |||
+ | SPA tov // | ||
+ | |||
+ | ide: NOP 0 | ||
+ | |||
+ | SET | ||
+ | = M 123.0 // a nullával való osztás érvénytelen | ||
+ | |||
+ | tov: NOP 0 // tov | ||
+ | </ | ||
+ | 22. Példaprogram SPU | ||
+ | |||
+ | Az [[# | ||
+ | |||
+ | === LOOP (hurok) === | ||
+ | {{anchor: | ||
+ | Formátuma: **LOOP < | ||
+ | |||
+ | A LOOP művelet ugrik, és csökkenti az AKKU1-L értékét, ha az AKKU1-L <> 0. A hurokszámláló egy előjel nélküli (16 bites) egész szám változó, melynek értéke betöltésre kerül az AKKU1-be. A LOOP mindaddig végrehajtásra kerül, amíg az AKKU1-L <> 0. | ||
+ | |||
+ | Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is. | ||
+ | |||
+ | A LOOP-olással azért óvatosan kell bánni. Minden PLC-nek van egy ciklus felügyeleti ideje (Baugruppezustand » Zykluszeit » Zyklusüberwachungszeit). Amennyiben a program futásideje ezt az időt meghaladja, a PLC „stop”-ba megy. Ezt az időt nem lehet felülbírálni, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 77. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 7 | ||
+ | T MW 8 // Faktoriális alap (7) | ||
+ | L 0 | ||
+ | T MW 10 // Lépegelő (0) | ||
+ | L 1 | ||
+ | T MW 12 // Szorozgató (1) | ||
+ | |||
+ | L MW 8 // Alap betöltése a számlálóba | ||
+ | itt: T MW 14 // Ennek értékét csökkenti ciklusonként a LOOP | ||
+ | |||
+ | L MW 10 // Lépegetés | ||
+ | L 1 | ||
+ | +I | ||
+ | T MW 10 // Lépegető | ||
+ | L MW 12 // szorozva a szorozgatóval | ||
+ | *I | ||
+ | T MW 12 // eredmény vissza a szorozgatóba | ||
+ | |||
+ | |||
+ | |||
+ | L MW 14 // számláló csökkentése | ||
+ | LOOP itt // LOOP-olásonként | ||
+ | |||
+ | |||
+ | |||
+ | L MW 10 // eredmény: faktoriális alap (7) | ||
+ | L MW 12 // eredmény: faktoriális (7!) (5040) | ||
+ | |||
+ | // ha ez utóbbi két változó nem " | ||
+ | // a státuszban, | ||
+ | </ | ||
+ | 23. Példaprogram LOOP „Faktoriális számolás” | ||
+ | |||
+ | ===== Egész szám műveletek ===== | ||
+ | |||
+ | Egész szám műveletek esetén a program az AKKU1 és AKKU2 között végzi a műveletet. Az eredmény az AKKU1-ben jelenik meg. | ||
+ | Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad. | ||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^jelölés ^németül ^magyarul ^ | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[#/ | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[#/ | ||
+ | |[[# | ||
+ | 78. Táblázat Egész szám műveletek | ||
+ | |||
+ | Az egész szám műveletek befolyásolják az | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ^hossz ^Érvényesség, | ||
+ | | | 0 (nulla) | ||
+ | |16 bit:\\ 32 bit: |-32 768 <= Eredmény < 0 (negatív szám)\\ -2 147 483 648 <= Eredmény < 0 (negatív szám) |0 |1 |0 |* | | ||
+ | |16 bit:\\ 32 bit: |32 767 >= Eredmény > 0 (pozitív szám)\\ 2 147 483 647 >= Eredmény > 0 (pozitív szám) |1 |0 |0 |* | | ||
+ | ddd | ||
+ | ^hossz ^Érvényesség, | ||
+ | |16 bit:\\ 32 bit: |Alsó határérték alatti eredmény összeadásnál\\ Eredmény = -65536\\ Eredmény = -4 294 967 296 |0 |0 |1 |1 | | ||
+ | |16 bit:\\ 32 bit: |Alsó határérték alatti eredmény szorzásnál\\ Eredmény < -32 768 (negatív szám)\\ Eredmény < -2 147 483 648 (negatív szám) |0 |1 |1 |1 | | ||
+ | |16 bit:\\ 32 bit: |Felső határérték feletti eredmény összeadásnál, | ||
+ | |16 bit:\\ 32 bit: |Felső határérték feletti eredmény szorzásnál, | ||
+ | |16 bit:\\ 32 bit: |Alsó határérték alatti eredmény összeadásnál, | ||
+ | | |Nullával való osztás |1 |1 |1 |1 | | ||
+ | |+D: |Eredmény = -4 294 967 296 |0 |0 |1 |1 | | ||
+ | 79. Táblázat Státuszbit állapotok egész szám műveletek esetén | ||
+ | |||
+ | *: az OS bit állapota nem függ az eredménytől. | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === +I (AKKU1 és AKKU2 összeadása 16 bites egész számként) === | ||
+ | Formátuma: **+I** | ||
+ | |||
+ | AKKU1-L és AKKU2-L összeadása 16 bites egész számként, az eredmény az AKKU1-L-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 80. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Összeg = 0 |0 |0 |0 |- | | ||
+ | |-32768 <= Összeg < 0 |0 |1 |0 |- | | ||
+ | |32767 >= Összeg > 0 |1 |0 |0 |- | | ||
+ | |Összeg = -65536 |0 |0 |1 |1 | | ||
+ | |65534 >= Összeg > 32767 |0 |1 |1 |1 | | ||
+ | |-65535 <= Összeg < -32768 |1 |0 |1 |1 | | ||
+ | 81. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L MW 10 // AKKU2 | ||
+ | L MW 12 // AKKU1 | ||
+ | +I // összeadás | ||
+ | T MW 14 // eredmény -> AKKU1-be | ||
+ | </ | ||
+ | 24. Példaprogram +I | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === -I (AKKU1 kivonása AKKU2-ből 16 bites egész számként) === | ||
+ | Formátuma: **-I** | ||
+ | |||
+ | AKKU1-L kivonása AKKU2-L-ből 16 bites egész számként, az eredmény az AKKU1-L-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 82. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Különbség = 0 |0 |0 |0 |- | | ||
+ | |-32768 <= Különbség < 0 |0 |1 |0 |- | | ||
+ | |32767 >= Különbség > 0 |1 |0 |0 |- | | ||
+ | |65534 >= Különbség > 32767 |0 |1 |1 |1 | | ||
+ | |-65535 <= Különbség < -32768 |1 |0 |1 |1 | | ||
+ | 83. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L MW 10 // AKKU2 | ||
+ | L MW 12 // AKKU1 | ||
+ | -I // kivonás | ||
+ | T MW 14 // eredmény -> AKKU1-be | ||
+ | </ | ||
+ | 25. Példaprogram -I | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === *I (AKKU1 és AKKU2 összeszorzása 16 bites egész számként) === | ||
+ | Formátuma: ***I** | ||
+ | |||
+ | AKKU1-L és AKKU2-L összeszorzása 16 bites egész számként, az eredmény az AKKU1-L-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 84. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Szorzat = 0 |0 |0 |0 |- | | ||
+ | |-32768 < = Szorzat < 0 |0 |1 |0 |- | | ||
+ | |32767 > = Szorzat > 0 |1 |0 |0 |- | | ||
+ | |Szorzat | ||
+ | |Szorzat < -32768 |0 |1 |1 |1 | | ||
+ | 85. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L MW 10 // AKKU2 | ||
+ | L MW 12 // AKKU1 | ||
+ | *I // szorzás | ||
+ | T MW 14 // eredmény -> AKKU1-ből | ||
+ | </ | ||
+ | 26. Példaprogram *I | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === /I (AKKU2 osztása AKKU1-gyel 16 bites egész számként) === | ||
+ | Formátuma: **/I** | ||
+ | |||
+ | AKKU2 osztása AKKU1-gyel 16 bites egész számként, az eredmény az AKKU1-be kerül mentésre, úgy hogy az osztási eredmény az AKKU1-L-be kerül, az osztási maradék pedig az AKKU1-H-ba. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 86. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Osztási eredmény = 0 |0 |0 |0 |- | | ||
+ | |-32768 <= Osztási eredmény < 0 |0 |1 |0 |- | | ||
+ | |32767 >= Osztási eredmény > 0 |1 |0 |0 |- | | ||
+ | |Osztási eredmény = 32 768 |1 |0 |1 |1 | | ||
+ | |Nullával való osztás |1 |1 |1 |1 | | ||
+ | 87. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L 254 | ||
+ | T MW 10 // AKKU2 tartalma | ||
+ | L 5 | ||
+ | T MW 12 // AKKU1 tartalma | ||
+ | |||
+ | L MW 10 // AKKU2 | ||
+ | L MW 12 // AKKU1 | ||
+ | /I // összeadás | ||
+ | T MD 20 // eredmény -> AKKU1-be | ||
+ | </ | ||
+ | 27. Példaprogram /I | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | ^ ^ ^ ^ ^ | ||
+ | |Osztott érték | ||
+ | |Osztó érték | ||
+ | |Osztási eredmény |(AKKU1-L) |hex: 32 |dec: 50 | | ||
+ | |Osztási maradék | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === + (Egész szám konstans hozzáadása (16, 32 bit)) === | ||
+ | Formátuma: **+ <egész szám** | ||
+ | |||
+ | [[# | ||
+ | |||
+ | **[[# | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | + <16 bites egész szám | ||
+ | |||
+ | **[[# | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | + <32 bites egész szám | ||
+ | |||
+ | **[[# | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 88. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 100 | ||
+ | T MW 100 // kezdőérték betöltése | ||
+ | L 100 | ||
+ | T MD 200 // szintén | ||
+ | |||
+ | |||
+ | |||
+ | L MW 100 // 16 bites egész szám | ||
+ | + 12 // 16 bites egész konstans | ||
+ | T MW 100 // eredmény | ||
+ | |||
+ | L MD 200 // 32 bites egész szám | ||
+ | + L# | ||
+ | T MD 200 // eredmény | ||
+ | </ | ||
+ | 28. Példaprogram +konstans | ||
+ | |||
+ | === +D (AKKU1 és AKKU2 összeadása 32 bites egész számként) === | ||
+ | Formátuma: **+D** | ||
+ | |||
+ | AKKU1 és AKKU2 összeadása 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 89. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Összeg = 0 |0 |0 |0 |- | | ||
+ | |-2.147.483.648 < = Összeg < 0 |0 |1 |0 |- | | ||
+ | |2.147.483.647 > = Összeg > 0 |1 |0 |0 |- | | ||
+ | |Összeg = -4.294.967.296 |0 |0 |1 |1 | | ||
+ | |4.294.967.294 > = Összeg > 2.147.483.647 |0 |1 |1 |1 | | ||
+ | |-4.294.967.295 < = Összeg < -2.147.483.648 |1 |0 |1 |1 | | ||
+ | 90. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | +D // összeadás | ||
+ | T MD 16 // eredmény -> AKKU1-be | ||
+ | </ | ||
+ | 29. Példaprogram +D | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === -D (AKKU1 kivonása AKKU2-ből 32 bites egész számként) === | ||
+ | Formátuma: **-D** | ||
+ | |||
+ | AKKU1 kivonása AKKU2-ből 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 91. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Különbség = 0 |0 |0 |0 |- | | ||
+ | |-2.147.483.648 <= Különbség < 0 |0 |1 |0 |- | | ||
+ | |2.147.483.647 >= Különbség > 0 |1 |0 |0 |- | | ||
+ | |4.294.967.295 >= Különbség > 2.147.483.647 |0 |1 |1 |1 | | ||
+ | |-4.294.967.295 <= Különbség < -2.147.483.648 |1 |0 |1 |1 | | ||
+ | 92. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | -D // kivonás | ||
+ | T MD 16 // eredmény -> AKKU1-be | ||
+ | </ | ||
+ | 30. Példaprogram -D | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === *D (AKKU1 és AKKU2 összeszorzása 32 bites egész számként) === | ||
+ | Formátuma: ***D** | ||
+ | |||
+ | AKKU1 és AKKU2 összeszorzása 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( | ||
+ | |||
+ | [[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 93. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Szorzat = 0 |0 |0 |0 |- | | ||
+ | |-2.147.483.648 <= Szorzat < 0 |0 |1 |0 |- | | ||
+ | |2.147.483.647 >= Szorzat > 0 |1 |0 |0 |- | | ||
+ | |Szorzat | ||
+ | |Szorzat | ||
+ | 94. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | *D // szorzás | ||
+ | T MW 16 // eredmény -> AKKU1-be | ||
+ | </ | ||
+ | 31. Példaprogram *D | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === /D (AKKU2 osztása AKKU1-gyel 32 bites egész számként) === | ||
+ | Formátuma: **/D** | ||
+ | |||
+ | AKKU2 osztása AKKU1-gyel 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az eredmény csak az osztási eredményt tartalmazza, | ||
+ | |||
+ | [[# | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 95. Táblázat Státusz szó változásai | ||
+ | |||
+ | ^Státuszbitek képzése ^A1 ^A0 ^OV ^OS ^ | ||
+ | |Osztási eredmény = 0 |0 |0 |0 |- | | ||
+ | |-2147483648 <= Osztási eredmény < 0 |0 |1 |0 |- | | ||
+ | |2147483647 >= Osztási eredmény > 0 |1 |0 |0 |- | | ||
+ | |Osztási eredmény = 2147483648 |1 |0 |1 |1 | | ||
+ | |Nullával való osztás |1 |1 |1 |1 | | ||
+ | 96. Táblázat A1, A0, OV, OS státuszbitek képzése | ||
+ | |||
+ | < | ||
+ | L 10000 | ||
+ | T MD 100 // kezdőérték betöltése | ||
+ | L 3 | ||
+ | T MD 104 // szintén | ||
+ | |||
+ | L MD 100 // AKKU2 | ||
+ | L MD 104 // AKKU1 | ||
+ | /D // 32 bites osztás | ||
+ | T MD 108 // csak az eredmény, maradék nélkül | ||
+ | </ | ||
+ | 32. Példaprogram /D | ||
+ | |||
+ | ^ ^ ^ ^ | ||
+ | |Osztott érték | ||
+ | |Osztó érték | ||
+ | |Osztási eredmény | ||
+ | |Osztási maradék | ||
+ | |||
+ | A [[# | ||
+ | |||
+ | === MOD (AKKU2 osztási maradéka AKKU1-gyel 32 bites egész számként) === | ||
+ | {{anchor: | ||
+ | Formátuma: **/D** | ||
+ | |||
+ | AKKU2 osztása AKKU1-gyel 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az eredmény csak az osztási maradélot tartalmazza, | ||
+ | |||
+ | [[#/d|/D]] művelettel kaphatja meg az eredményt).\\ Az akku-k tartalmát a művelet egész számként ([[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 97. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 10000 | ||
+ | T MD 100 // kezdőérték betöltése | ||
+ | L 3 | ||
+ | T MD 104 // szintén | ||
+ | |||
+ | |||
+ | |||
+ | L MD 100 // AKKU2 | ||
+ | L MD 104 // AKKU1 | ||
+ | MOD // 32 bites osztás maradéka | ||
+ | T MD 108 // csak a maradék | ||
+ | </ | ||
+ | 33. Példaprogram MOD | ||
+ | |||
+ | ===== Törtszám műveletek ===== | ||
+ | |||
+ | ^Művelet^Német leírás^Magyar leírás| | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[#/ | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | 100. Táblázat Törtszám műveletek | ||
+ | |||
+ | === +R (AKKU1 és AKKU2 összeadása 32 bites törtszámként) === | ||
+ | |||
+ | AKKU1 és AKKU2 összeadása 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám ([[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- végtelen|0|1|1|1|Túlcsordult| | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 101. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 102. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2.200000e+001 | ||
+ | T MD 8 | ||
+ | L 3.300000e+001 | ||
+ | T MD 12 | ||
+ | |||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | +R // művelet | ||
+ | T MD 16 // AKKU1 -> MD16 | ||
+ | </ | ||
+ | 34. Példaprogram +R | ||
+ | |||
+ | === -R (AKKU1 kivonása AKKU2-ből 32 bites törtszámként) === | ||
+ | AKKU2 kivonása AKKU1-ből 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám ([[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- végtelen|0|1|1|1|Túlcsordult| | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 103. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 104. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2.200000e+001 | ||
+ | T MD 8 | ||
+ | L 3.300000e+001 | ||
+ | T MD 12 | ||
+ | |||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | -R // művelet | ||
+ | T MD 16 // AKKU1 -> MD16 | ||
+ | </ | ||
+ | 35. Példaprogram -R | ||
+ | |||
+ | === *R (AKKU1 és AKKU2 összeszorzása 32 bites törtszámként) === | ||
+ | |||
+ | AKKU1 szorzása AKKU2-vel 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám ([[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- végtelen|0|1|1|1|Túlcsordult| | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 105. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 106. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2.200000e+001 // értékek állítása | ||
+ | T MD 8 | ||
+ | L 3.300000e+001 | ||
+ | T MD 12 | ||
+ | |||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | *R // művelet | ||
+ | T MD 16 // AKKU1 -> MD16 | ||
+ | </ | ||
+ | 36. Példaprogram *R | ||
+ | |||
+ | === /R (AKKU2 osztása AKKU1-gyel 32 bites törtszámként) === | ||
+ | |||
+ | AKKU2 osztása AKKU1-vel 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám ([[hu: | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- végtelen|0|1|1|1|Túlcsordult| | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 107. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 108. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2.200000e+001 // értékek állítása | ||
+ | T MD 8 | ||
+ | L 3.300000e+001 | ||
+ | T MD 12 | ||
+ | |||
+ | L MD 8 // AKKU2 | ||
+ | L MD 12 // AKKU1 | ||
+ | /R // művelet | ||
+ | T MD 16 // AKKU1 -> MD16 | ||
+ | </ | ||
+ | 37. Példaprogram /R | ||
+ | |||
+ | === ABS (32 bites törtszám abszolút értéke) === | ||
+ | {{anchor: | ||
+ | Az ABS a 32 bites (IEEE-FP) | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 109. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L -1.172200e+002 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | ABS // abszolút érték | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 38. Példaprogram ABS | ||
+ | |||
+ | === SQR (32 bites törtszám négyzete) === | ||
+ | {{anchor: | ||
+ | Az SQR a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 110. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 111. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2.000000e+001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | SQR // négyzetérték | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | |||
+ | 39. Példaprogram SQR | ||
+ | |||
+ | === SQRT (32 bites törtszám négyzetgyöke) === | ||
+ | {{anchor: | ||
+ | Az SQRT a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 112. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 113. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2.250000e+002 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | SQRT // négyzetgyök érték | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 40.Példaprogram SQRT | ||
+ | |||
+ | === EXP (32 bites törtszám exponenciális értéke) === | ||
+ | {{anchor: | ||
+ | Az EXP a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 114. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 115. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | EXP // exponenciális érték | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 41. Példaprogram EXP | ||
+ | |||
+ | === LN (32 bites törtszám természetes logaritmusa) === | ||
+ | {{anchor: | ||
+ | Az LN a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ végtelen|1|0|1|1|Túlcsordult| | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- végtelen|0|1|1|1|Túlcsordult| | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 116. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 117. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | LN // természetes alapú logaritmus | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 42. Példaprogram LN | ||
+ | |||
+ | === SIN (32 bites törtszám szinusz értéke) === | ||
+ | A SIN a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 118. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 119. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | SIN // sinus | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 43. Példaprogram SIN | ||
+ | |||
+ | === COS (32 bites törtszám koszinusz értéke) === | ||
+ | {{anchor: | ||
+ | A COS a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 120. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 121. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | SIN // cosinus | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 44. Példaprogram COS | ||
+ | |||
+ | === TAN (32 bites törtszám tangens értéke) === | ||
+ | {{anchor: | ||
+ | A TAN a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 122. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 123. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | TAN // tangens | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 45. Példaprogram TAN | ||
+ | |||
+ | === ASIN (32 bites törtszám arkusz szinusz értéke) === | ||
+ | {{anchor: | ||
+ | Az ASIN a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 124. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 125. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | ASIN // arcussinus | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 46. Példaprogram ASIN | ||
+ | |||
+ | === ACOS (32 bites törtszám arkusz koszinusz értéke) === | ||
+ | {{anchor: | ||
+ | Az ACOS a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 126. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | x | - | - | - | - | | ||
+ | 127. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | ACOS // arcuscosinus | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 47. Példaprogram ACOS | ||
+ | |||
+ | === ATAN (32 bites törtszám arkusz tangens értéke) === | ||
+ | {{anchor: | ||
+ | Az ATAN a 32 bites (IEEE-FP) | ||
+ | |||
+ | Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, | ||
+ | |||
+ | ^Eredmény az AKKU1-ben^A1^A0^OV^OS^Notesz| | ||
+ | |+ qNaN|1|1|1|1| | | ||
+ | |+ normalizált|1|0|0|-| | | ||
+ | |+ denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |+ nulla|0|0|0|-| | | ||
+ | |- nulla|0|0|0|-| | | ||
+ | |- denormalizált|0|0|1|1|Túlcsordult| | ||
+ | |- normalizált|0|1|0|-| | | ||
+ | |- qNaN|1|1|1|1| | | ||
+ | 128. Táblázat A1, A0, OV, OS státuszbitek állapota | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 129. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 1.500000e-001 // értékek állítása | ||
+ | T MD 8 | ||
+ | |||
+ | L MD 8 | ||
+ | ATAN // arkusz tangens | ||
+ | T MD 12 // eredmény az MD12-be | ||
+ | </ | ||
+ | 48. Példaprogram ATAN | ||
+ | |||
+ | ===== Betöltés/ | ||
+ | |||
+ | **Betöltés műveletek** | ||
+ | |||
+ | ^Utasítás^Németül^Magyarul| | ||
+ | |L|Lade|Betöltés| | ||
+ | |L STW|Lade Statuswort in AKKU 1|Státusz szó betöltése az AKKU1-be| | ||
+ | |LAR1|Lade Adreßregister 1 mit Inhalt von AKKU 1|1. címregiszter feltöltése AKKU1-ből| | ||
+ | |LAR1< | ||
+ | |LAR1 AR2|Lade Adreßregister 1 mit Inhalt von Adressregister 2|2. címregiszter betöltése az 1. címregiszterbe| | ||
+ | |LAR2|Lade Adreßregister 2 mit Inhalt von AKKU 1|2. címregiszter feltöltése AKKU1-ből| | ||
+ | |LAR2< | ||
+ | |||
+ | **Mozgatás műveletek** | ||
+ | |||
+ | ^Utasítás^Németül^Magyarul| | ||
+ | |T|Transferiere|Mozgatás| | ||
+ | |T STW|Transferiere AKKU 1 in Statuswort|Státusz szó feltöltése az AKKU1-ből| | ||
+ | |TAR|Tausche Adreßregister 1 mit 2|1. és 2. címregiszter cseréje| | ||
+ | |TAR1|Transferiere Adreßregister 1 in AKKU 1|1. címregiszter mozgatása az AKKU1-be| | ||
+ | |TAR1< | ||
+ | |TAR1 AR2|Transferiere Adreßregister 1 in Adreßregister 2|1. címregiszter mozgatása a 2. címregiszterbe| | ||
+ | |TAR2|Transferiere Adreßregister 2 in AKKU 1|2. címregiszter mozgatása az AKKU1-be| | ||
+ | |TAR2< | ||
+ | |+AR1|Addiere AKKU 1 zum Adreßregister 1|AKKU1 értékének hozzáadása az 1. címregiszterhez| | ||
+ | |+AR2|Addiere AKKU 1 zum Adreßregister 2|AKKU1 értékének hozzáadása a 2. címregiszterhez| | ||
+ | 130. Táblázat betöltés, mozgatás műveletek | ||
+ | |||
+ | === L (Betöltés) === | ||
+ | {{anchor: | ||
+ | ^Művelet^Adattípus^Operandus^Forráscím| | ||
+ | |L|[[hu: | ||
+ | |L|[[hu: | ||
+ | |L|[[hu: | ||
+ | 131. Táblázat L operandusok | ||
+ | |||
+ | Az L – betöltés művelet a megcímzett adatterület tartalmát vagy a megadott konstanst betölti az AKKU1-ből, miután azt első lépésben „0”-ra állította. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 132. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | // byte hosszú betöltések | ||
+ | L B# | ||
+ | L MB 10 // MB10 az AKKU1-L-L-be | ||
+ | L DB10.DBB 10 // DB10.DBB10 az AKKU1-L-L-be | ||
+ | L EB 10 // EB10 az AKKU1-L-L-be | ||
+ | L AB 10 // AB10 az AKKU1-L-L-be | ||
+ | |||
+ | // word hosszú betöltések | ||
+ | L B#(255, 255) // két 8 bites szám az AKKU1-L-be | ||
+ | L MW 10 // MW10 az AKKU1-L-be | ||
+ | L DB10.DBW 10 // DB10.DBW10 az AKKU1-L-be | ||
+ | L P#0.0 // null pointer az AKKU1-L-be | ||
+ | |||
+ | // dword hosszú betöltések | ||
+ | L 1.210000e+001 | ||
+ | L MD 10 // MD10 az AKKU1-be | ||
+ | L DB10.DBD 10 // DB10.DBD10 az AKKU1-be | ||
+ | </ | ||
+ | 49. Példaprogram L | ||
+ | |||
+ | === L STW (Státusz szó betöltése az AKKU1-be) === | ||
+ | {{anchor: | ||
+ | Státusz szó betöltése az AKKU1-be. Sok –főleg S7-300-as PLC-k esetében – nem minden státusz bit kerül átmásolásra, | ||
+ | |||
+ | Ellenkező irányú művelete a [[#t_stw|T STW]]. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 133. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L STW // Státusz szó betöltése | ||
+ | T MW 10 // átmásolása az MW10-be | ||
+ | </ | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti program szerint a „1001 0110” státusz szó decimálisan 150, hexadecimálisan 96-ot ad. A bitek sorrendjét pl. a fenti státusz szó változásai táblázatban találja meg. | ||
+ | |||
+ | === LAR1 (1. címregiszter feltöltése AKKU1-ből) === | ||
+ | {{anchor: | ||
+ | Címregiszter (1.) feltöltése AKKU1-ből 32 bites pointer-ként. A művelet a státuszbitek állapotát nem befolyásolja. | ||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 109. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 360 // konstans 360 az AR1-be | ||
+ | LAR1 // AR1 a címregiszter 1-be | ||
+ | </ | ||
+ | 51. Példaprogram LAR1 | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti programban a konstans 360-at betöltjük az AR1-be, majd a LAR1 művelettel a 360-at áttöltjük az 1. címregiszterbe. Mivel pointer-ként visszük át a 360-at, így a 8 bites címzést kell alkalmaznunk, | ||
+ | |||
+ | === LAR1 <D> (1. címregiszter betöltése 32 bites pointerrel) === | ||
+ | {{anchor: | ||
+ | Címregiszter (1.) feltöltése 32 bites pointer-ként egy duplaszóból ([[hu: | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 135. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | LAR1 P# | ||
+ | // vagy | ||
+ | L P# | ||
+ | T MD 4 | ||
+ | |||
+ | LAR1 MD 4 // MD4 átmásolása az 1. címregiszterbe | ||
+ | </ | ||
+ | 52. Példaprogram LAR1 <D> | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti programban a konstans 360-at betöltjük az AR1-be, majd a LAR1 művelettel a 360-at áttöltjük az 1. címregiszterbe. Mivel pointer-ként visszük át a 360-at, így a 8 bites címzést kell alkalmaznunk, | ||
+ | |||
+ | === LAR1 AR2 (2. címregiszter betöltése az 1. címregiszterbe) === | ||
+ | |||
+ | A 2. címregiszter betöltése az 1. címregiszterbe. Az AKKU1 és AKKU2 tartalma nem változik. A művelet a státuszbitek állapotát nem befolyásolja. | ||
+ | |||
+ | Ellenkező irányban (1. címregiszter a 2. címregiszterbe) mozgat a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 109. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 123 // 123 (bit) másolása | ||
+ | LAR1 // a 2.címregiszterbe | ||
+ | |||
+ | L 321 // 321 (bit) másolása | ||
+ | LAR2 // a 2.címregiszterbe | ||
+ | |||
+ | LAR1 AR2 // a 2.regiszer másolása az 1.-be | ||
+ | |||
+ | L 123 // 123 (bit) másolása | ||
+ | LAR1 // a 2.címregiszterbe | ||
+ | |||
+ | L 321 // 321 (bit) másolása | ||
+ | LAR2 // a 2.címregiszterbe | ||
+ | TAR1 AR2 // a 1.regiszer másolása az 2.-be | ||
+ | </ | ||
+ | 53. Példaprogram LAR1 AR2 | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti programban a konstans 123-et betöltjük 1.címregiszterbe, | ||
+ | |||
+ | === LAR2 (2. címregiszter feltöltése AKKU1-ből) === | ||
+ | {{anchor: | ||
+ | 2. címregiszter feltöltése AKKU1-ből 32 bites pointer-ként. A művelet a státuszbitek állapotát nem befolyásolja. | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 109. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 360 // konstans 360 az AR1-be | ||
+ | LAR2 // AR1 a címregiszter 1-be | ||
+ | </ | ||
+ | 54. Példaprogram LAR2 | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti programban a konstans 360-at betöltjük az AR1-be, majd a LAR2 művelettel a 360-at áttöltjük a 2. címregiszterbe. Mivel pointer-ként visszük át a 360-at, így a 8 bites címzést kell alkalmaznunk, | ||
+ | |||
+ | === LAR2 <D> === | ||
+ | (2. címregiszter betöltése 32 bites pointerrel)2. címregiszter feltöltése 32 bites pointer-ként egy duplaszóból ([[hu: | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 138. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | LAR2 P# | ||
+ | // vagy | ||
+ | L P# | ||
+ | T MD 4 | ||
+ | |||
+ | LAR2 MD 4 // MD4 átmásolása a 2. címregiszterbe | ||
+ | </ | ||
+ | 55. Példaprogram LAR2 <D> | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === T (Mozgatás) === | ||
+ | {{anchor: | ||
+ | ^Művelet^Adattípus^Operandus^Forráscím| | ||
+ | |T|[[hu: | ||
+ | |T|[[hu: | ||
+ | |T|[[hu: | ||
+ | |||
+ | A T < | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 140. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | // byte hosszú mozgatás az AKKU1-ből | ||
+ | T MB 10 // MB10 az AKKU1-L-L-ből | ||
+ | T DB10.DBB 10 // DB10.DBB10 az AKKU1-L-L-ből | ||
+ | T AB 10 // AB10 az AKKU1-L-L-ből | ||
+ | |||
+ | // word hosszú mozgatás az AKKU1-ből | ||
+ | T MW 10 // MW10 az AKKU1-L-ből | ||
+ | T DB10.DBW 10 // DB10.DBW10 az AKKU1-L-ből | ||
+ | |||
+ | // dword hosszú mozgatás az AKKU1-ből | ||
+ | T MD 10 // MD10 az AKKU1-ből | ||
+ | T DB10.DBD 10 // DB10.DBD10 az AKKU1-ből | ||
+ | </ | ||
+ | 56. Példaprogram T | ||
+ | |||
+ | === T STW (Státusz szó feltöltése az AKKU1-ből) === | ||
+ | {{anchor: | ||
+ | Státusz szó feltöltése az AKKU1-ből 9 bit hosszan. A művelet a teljes státusz szó tartalmat felülírja. | ||
+ | |||
+ | Ellenkező irányú művelete a [[#l_stw|L STW]]. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | x | x | x | x | x | x | x | x | x | | ||
+ | 141. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 2#10000 // maszk (4.bit) (OS bit) | ||
+ | L STW // státusz szó betöltése | ||
+ | OW // össze vagy-ol | ||
+ | T STW // 5.bit állítása a státusz szóban | ||
+ | </ | ||
+ | 57. Példaprogram T STW | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti program az OS bitet „forszolja” a státusz szóban. Az OS bit a 4. státusz bit, így 2#10000 értékkel lehet a pozícióját állítani. Ezek után csak be kell tölteni a státusz szót, majd egy OW-val össze kell VAGY-olni. Az eredményt a T STW viszi vissza a státusz szóba. | ||
+ | |||
+ | === TAR (1. és 2. címregiszter cseréje) === | ||
+ | {{anchor: | ||
+ | Az 1. és 2. címregiszter cseréje. A művelet a státusz szó tartalmát nem befolyásolja. | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 142. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | LAR1 P# | ||
+ | LAR2 P# | ||
+ | TAR // a kettő cseréje | ||
+ | </ | ||
+ | 58. Példaprogram TAR | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | === TAR1 (1. címregiszter mozgatása az AKKU1-be) === | ||
+ | {{anchor: | ||
+ | 1. címregiszter másolása az AKKU1-be, 32 bites pointer formátumban. A művelet a státusz szó tartalmát nem befolyásolja. | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 143. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | LAR1 P#111.1 // 1.címregiszter feltöltése | ||
+ | TAR1 // 1.címregiszter másolása az AKKU1-be | ||
+ | T MW 10 // AKKU1 az MW10-be | ||
+ | </ | ||
+ | 59. Példaprogram TAR1 | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti példaprogram szerint a LAR1 111.1-et betölti az 1. címregiszterbe. Ezt olvassa vissza a TAR1 a STANDARD-ba (889 bit = 111.1 byte), majd a következő sor ezt az értéket viszi át az MW10-be. | ||
+ | |||
+ | === TAR1 <D> === | ||
+ | {{anchor: | ||
+ | (1. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre) | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 144. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | LAR1 P# | ||
+ | TAR1 LD 10 // 1.címregiszter másolása az LD10-be | ||
+ | |||
+ | L LD 10 // a másolás ellenőrzése | ||
+ | </ | ||
+ | 60. Példaprogram TAR1 <D> | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti példaprogram szerint a LAR1 111.1-et betölti az 1. címregiszterbe. Ezt olvassa vissza a TAR1 a STANDARD-ba (889 bit = 111.1 byte), majd a következő sor ezt az értéket viszi át az MW10-be. | ||
+ | |||
+ | === TAR1 AR2 (1. címregiszter mozgatása a 2. címregiszterbe) === | ||
+ | {{anchor: | ||
+ | Az 1. címregiszter másolása a 2. címregiszterbe. Az AKKU1 és AKKU2 tartalma nem változik. A művelet a státuszbitek állapotát nem befolyásolja. | ||
+ | |||
+ | Ellenkező irányban (2. címregiszter az 1. címregiszterbe) mozgat a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 145. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 123 // 123 (bit) másolása | ||
+ | LAR1 // a 2.címregiszterbe | ||
+ | |||
+ | L 321 // 321 (bit) másolása | ||
+ | LAR2 // a 2.címregiszterbe | ||
+ | |||
+ | LAR1 AR2 // a 2.regiszer másolása az 1.-be | ||
+ | |||
+ | L 123 // 123 (bit) másolása | ||
+ | LAR1 // a 2.címregiszterbe | ||
+ | |||
+ | L 321 // 321 (bit) másolása | ||
+ | LAR2 // a 2.címregiszterbe | ||
+ | TAR1 AR2 // a 1.regiszer másolása az 2.-be | ||
+ | </ | ||
+ | 61. Példaprogram TAR1 AR2 | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti programban a konstans 123-et betöltjük 1.címregiszterbe, | ||
+ | |||
+ | === TAR2 (2. címregiszter mozgatása az AKKU1-be) === | ||
+ | {{anchor: | ||
+ | 2. címregiszter mozgatása AKKU1-be 32 bites pointer-ként. A művelet a státuszbitek állapotát nem befolyásolja. | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 146. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 321 // 321 (bit) másolása | ||
+ | LAR2 // a 2.címregiszterbe | ||
+ | |||
+ | TAR2 // 2.címregiszter az AKKU1-be | ||
+ | |||
+ | T MW 10 // AKKU1 az MW10-be | ||
+ | </ | ||
+ | 62. Példaprogram TAR2 | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | A fenti programban a konstans 321-et betöltjük az AR2-be, majd a TAR2-vel visszaolvassuk az AKKU1-be, majd onnan az MW10-be. | ||
+ | |||
+ | === TAR2 <D> (2. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre) === | ||
+ | {{anchor: | ||
+ | 2. címregiszter mozgatása egy megcímzett területre. A célcím lehet memória duplaszó (MD), lokális duplaszó (LD), globális adatblokk duplaszó (DBD), instant adatblokk duplaszó (DID). A művelet a státuszbitek állapotát nem befolyásolja. | ||
+ | |||
+ | Ellenkező irányú művelete a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 147. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 321 // 321 (bit) másolása | ||
+ | LAR2 // a 2.címregiszterbe | ||
+ | |||
+ | TAR2 MD 10 // 2.címregiszter az MD10-be | ||
+ | </ | ||
+ | 63. Példaprogram TAR2 <D> | ||
+ | |||
+ | === +AR1 (AKKU1 értékének hozzáadása az 1. címregiszterhez) === | ||
+ | {{anchor: | ||
+ | Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR1-hez. | ||
+ | |||
+ | < | ||
+ | L 355 // 355 érték (INT) | ||
+ | +AR1 // hozzáadása az 1.címregiszter értékéhez | ||
+ | |||
+ | AR1 p# | ||
+ | </ | ||
+ | 63b. Példaprogram +AR1 | ||
+ | |||
+ | === +AR2 (AKKU1 értékének hozzáadása a 2. címregiszterhez) === | ||
+ | {{anchor: | ||
+ | Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR2-höz. | ||
+ | |||
+ | < | ||
+ | L 355 // 355 érték (INT) | ||
+ | +AR2 // hozzáadása a 2.címregiszter értékéhez | ||
+ | |||
+ | AR2 p# | ||
+ | </ | ||
+ | 63c. Példaprogram +AR2 | ||
+ | |||
+ | ===== Programvezérlés ===== | ||
+ | |||
+ | Léptetés műveletekA léptetési műveletekkel az AKKU1 vagy az összes AKKU tartalmát lehet bitszinten jobbra vagy balra léptetni. Az akkumlátorokban minden lépés balra egy kettővel való szorzásnak, | ||
+ | |||
+ | ^Művelet^Németül^Magyarul| | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | 148. Táblázat Léptetési műveletek | ||
+ | |||
+ | === SSI (előjeles 16 bites szám léptetése jobbra) === | ||
+ | {{anchor: | ||
+ | Az előjeles 16 bites szám ([[hu: | ||
+ | |||
+ | Ha az **SSI < | ||
+ | |||
+ | A megadott érték mindkét esetben 0 és 15 között lehet. Az | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 149. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 3 // AKKU2 (léptetések száma) | ||
+ | L 125 // AKKU1 (léptetendő érték) | ||
+ | SSI // léptetés | ||
+ | |||
+ | T MW 10 // AKKU1 -> MW10 | ||
+ | </ | ||
+ | 64. Példaprogram SSI | ||
+ | |||
+ | Az egyszerűbb példaprogram esetén a 125 értéket léptethetjük 3-szor jobbra, így az eredmény (125 / 2^3 ) 15 lesz, és ezt az MW10-ben találjuk meg. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | L MW 20 // MW20 értékét lépteti eggyel balra | ||
+ | SSI 1 | ||
+ | T MW 20 // eredmény vissza | ||
+ | |||
+ | L STW // státusz szó olvasása | ||
+ | T MW 22 // státusz szó -> MW22 | ||
+ | |||
+ | U M 23.7 // státusz szó A1 -> MW20 bal utolsó bitjébe | ||
+ | = M 20.7 | ||
+ | |||
+ | ide: NOP 0 // ugrás vége | ||
+ | |||
+ | L S5T#500MS // futás időzítés : 500 ms | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 65. Példaprogram SSI < | ||
+ | |||
+ | Ez a program az MW20 értékét forgatja folyamatosan, | ||
+ | |||
+ | === SSD (előjeles 32 bites szám léptetése) === | ||
+ | {{anchor: | ||
+ | Az előjeles 32 bites szám ([[hu: | ||
+ | |||
+ | Ha az **SSD < | ||
+ | |||
+ | A megadott érték mindkét esetben 0 és 32 között lehet. Az | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 150. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 4 // AKKU2 (léptetések száma) | ||
+ | L 13400 // AKKU1 (léptetendő érték) | ||
+ | SSD // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 66. Példaprogram SSD | ||
+ | |||
+ | Az egyszerűbb példaprogram esetén a 13400 értéket léptethetjük 4-szor jobbra, így az eredmény (13400 / 2^4 ) 837 lesz, és ezt az MD10-ben találjuk meg. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | L MD 20 // MW20 értékét lépteti eggyel balra | ||
+ | SSD 1 | ||
+ | T MD 20 // eredmény vissza | ||
+ | |||
+ | L STW // státusz szó olvasása | ||
+ | T MW 10 // státusz szó -> MW10 | ||
+ | |||
+ | U M 11.7 // státusz szó A1 -> MD20 bal utolsó bitjébe | ||
+ | = M 20.7 | ||
+ | |||
+ | ide: NOP 0 // ugrás vége | ||
+ | |||
+ | L S5T#200MS // futás időzítés : 500 ms | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 67. Példaprogram SSD < | ||
+ | |||
+ | Ez a program az MD20 értékét forgatja folyamatosan, | ||
+ | |||
+ | === SLW (16 bites szó balra léptetése) === | ||
+ | {{anchor: | ||
+ | A 16 bites szó ([[hu: | ||
+ | |||
+ | Ha az **SLW < | ||
+ | |||
+ | A megadott érték mindkét esetben 0 és 255 között lehet. Az [[# | ||
+ | |||
+ | Az ellenkező irányú szó hosszú forgatás az [[# | ||
+ | Azonos irányban duplaszó hosszon a [[# | ||
+ | ellenkező irányban duplaszó hosszon az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 151. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 4 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | SLW // léptetés | ||
+ | |||
+ | T MW 10 // AKKU1 -> MW10 | ||
+ | </ | ||
+ | 68. Példaprogram SLW | ||
+ | |||
+ | Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 * 2^4 ) 8 000 lesz, és ezt az MW10-ben találjuk meg. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | |||
+ | L MW 20 // MW20 értékét lépteti eggyel balra | ||
+ | U M 1.0 // irányválasztó bit 0:jobbra, 1: balra | ||
+ | SPB bal | ||
+ | SRW 1 // irány: jobbra | ||
+ | SPA tov | ||
+ | bal: SLW 1 // irány: balra | ||
+ | tov: T MW 20 // eredmény vissza | ||
+ | |||
+ | L STW // státusz szó olvasása | ||
+ | T MW 10 // státusz szó -> MW10 | ||
+ | |||
+ | U M 1.0 // irányválasztó | ||
+ | SPB ball | ||
+ | U M 11.7 // státusz szó A1 | ||
+ | = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet | ||
+ | SPA tovv | ||
+ | ball: U M 11.7 | ||
+ | = M 21.0 // ha balra, akkor hátul pótolja a kiesett bitet | ||
+ | tovv: NOP 0 | ||
+ | ide: NOP 0 // ugrás vége | ||
+ | |||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 69. Példaprogram SLW < | ||
+ | |||
+ | Ez a program az MW20 értékét forgatja az M1.0 bitnek megfelelő irányba (0: jobbra, 1:balra), és minden lépés után 200 ms-ot vár. (MW20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.) | ||
+ | |||
+ | === SRW (16 bites szó jobbra léptetése) === | ||
+ | {{anchor: | ||
+ | A 16 bites szó ([[hu: | ||
+ | |||
+ | Ha az **SRW < | ||
+ | |||
+ | A megadott érték mindkét esetben 0 és 255 között lehet. Az [[# | ||
+ | |||
+ | Az ellenkező irányú szó hosszú forgatás az [[# | ||
+ | Azonos irányban duplaszó hosszon a [[# | ||
+ | ellenkező irányban duplaszó hosszon az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 152. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 4 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | SRW // léptetés | ||
+ | |||
+ | T MW 10 // AKKU1 -> MW10 | ||
+ | </ | ||
+ | 70. Példaprogram SRW | ||
+ | |||
+ | Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer jobbra, így az eredmény (500 / 2^4 ) 31 lesz, és ezt az MW10-ben találjuk meg. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | |||
+ | L MW 20 // MW20 értékét lépteti eggyel balra | ||
+ | U M 1.0 // irányválasztó bit 0:jobbra, 1: balra | ||
+ | SPB bal | ||
+ | SRW 1 // irány: jobbra | ||
+ | SPA tov | ||
+ | bal: SLW 1 // irány: balra | ||
+ | tov: T MW 20 // eredmény vissza | ||
+ | |||
+ | L STW // státusz szó olvasása | ||
+ | T MW 10 // státusz szó -> MW10 | ||
+ | |||
+ | U M 1.0 // irányválasztó | ||
+ | SPB ball | ||
+ | U M 11.7 // státusz szó A1 | ||
+ | = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet | ||
+ | SPA tovv | ||
+ | ball: U M 11.7 | ||
+ | = M 21.0 // ha balra, akkor hátul pótolja a kiesett bitet | ||
+ | tovv: NOP 0 | ||
+ | ide: NOP 0 // ugrás vége | ||
+ | |||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 71. Példaprogram SRW < | ||
+ | |||
+ | Ez a program az MW20 értékét forgatja az M1.0 bitnek megfelelő irányba (0: jobbra, 1:balra), és minden lépés után 200 ms-ot vár. (MW20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.) | ||
+ | |||
+ | === SLD (32 bites duplaszó balra léptetése) === | ||
+ | {{anchor: | ||
+ | A 32 bites szó ([[hu: | ||
+ | |||
+ | Ha az **SLD < | ||
+ | |||
+ | A megadott érték mindkét esetben 0 és 255 között lehet. Az [[# | ||
+ | |||
+ | Az azonos irányú szó hosszú forgatás az [[# | ||
+ | az ellenkező irányú szó hosszú forgatás az [[# | ||
+ | ellenkező irányban duplaszó hosszon az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 109. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 4 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | SLD // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 72. Példaprogram SLD | ||
+ | |||
+ | Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 * 2^4 ) 8 000 lesz, és ezt az MD10-ben találjuk meg. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | |||
+ | L MD 20 // MD20 értékét lépteti eggyel balra | ||
+ | U M 1.0 // irányválasztó bit 0:jobbra, 1: balra | ||
+ | SPB bal | ||
+ | SRD 1 // irány: jobbra | ||
+ | SPA tov | ||
+ | bal: SLD 1 // irány: balra | ||
+ | tov: T MD 20 // eredmény vissza | ||
+ | |||
+ | L STW // státusz szó olvasása | ||
+ | T MW 10 // státusz szó -> MW10 | ||
+ | |||
+ | U M 1.0 // irányválasztó | ||
+ | SPB ball | ||
+ | U M 11.7 // státusz szó A1 | ||
+ | = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet | ||
+ | SPA tovv | ||
+ | ball: U M 11.7 | ||
+ | = M 23.0 // ha balra, akkor hátul pótolja a kiesett bitet | ||
+ | tovv: NOP 0 | ||
+ | ide: NOP 0 // ugrás vége | ||
+ | |||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 73. Példaprogram SLD < | ||
+ | |||
+ | Ez a program az MD20 értékét forgatja az M1.0 bitnek megfelelő irányba (0: jobbra, 1:balra), és minden lépés után 200 ms-ot vár. (MD20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.) | ||
+ | |||
+ | === SRD (32 bites duplaszó jobbra léptetése) === | ||
+ | {{anchor: | ||
+ | A 32 bites szó ([[hu: | ||
+ | |||
+ | Ha az **SRD < | ||
+ | |||
+ | A megadott érték mindkét esetben 0 és 255 között lehet. Az[[# | ||
+ | |||
+ | Az azonos irányú szó hosszú forgatás az [[# | ||
+ | az ellenkező irányú szó hosszú forgatás az [[# | ||
+ | ellenkező irányban duplaszó hosszon az [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 154. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 4 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | SRD // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 74. Példaprogram SRD | ||
+ | |||
+ | Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 / 2^4 ) 31 lesz, és ezt az MD10-ben találjuk meg. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | |||
+ | L MD 20 // MD20 értékét lépteti eggyel balra | ||
+ | U M 1.0 // irányválasztó bit 0:jobbra, 1: balra | ||
+ | SPB bal | ||
+ | SRD 1 // irány: jobbra | ||
+ | SPA tov | ||
+ | bal: SLD 1 // irány: balra | ||
+ | tov: T MD 20 // eredmény vissza | ||
+ | |||
+ | L STW // státusz szó olvasása | ||
+ | T MW 10 // státusz szó -> MW10 | ||
+ | |||
+ | U M 1.0 // irányválasztó | ||
+ | SPB ball | ||
+ | U M 11.7 // státusz szó A1 | ||
+ | = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet | ||
+ | SPA tovv | ||
+ | ball: U M 11.7 | ||
+ | = M 23.0 // ha balra, akkor hátul pótolja a kiesett bitet | ||
+ | tovv: NOP 0 | ||
+ | ide: NOP 0 // ugrás vége | ||
+ | |||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | Példaprogram SRD < | ||
+ | |||
+ | Ez a program az MD20 értékét forgatja az M1.0 bitnek megfelelő irányba (0: jobbra, 1:balra), és minden lépés után 200 ms-ot vár. (MD20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.) | ||
+ | |||
+ | ===== Forgatás műveletek ===== | ||
+ | |||
+ | A forgatási műveletekkel az AKKU1 tartalmát lehet bitszinten jobbra vagy balra forgatni. A forgatásnál a felszabaduló bit pozícióba tölti a másik oldalon „kieső” bit értékét. A forgatás teljes akkumlátor hosszon (32 bit) történik, némelyik művelet az | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ^Parancs^németül^magyarul| | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | 155. Táblázat Forgatási műveletek | ||
+ | |||
+ | === RLD (32 bites duplaszó forgatása balra) === | ||
+ | {{anchor: | ||
+ | A művelet 32 bites duplaszó forgatását végzi bitenként balra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a < | ||
+ | |||
+ | **RLD < | ||
+ | |||
+ | **RLD**: Az AKKU2-L-L tartalma adja meg a műveletnek, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 156. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 31 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | RLD // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 76. Példaprogram RLD | ||
+ | |||
+ | Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel balra forgatjuk. Ez egy kettővel való osztásnak felel meg, így az MD10-be 250-et kapunk eredményül. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | L MD 20 // MD20 értékét lépteti eggyel balra | ||
+ | RLD 1 | ||
+ | T MD 20 // az eredményt visszateszi az MD20-ba | ||
+ | |||
+ | ide: NOP 0 | ||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 77. Példaprogram RLD < | ||
+ | |||
+ | === RRD (32 bites duplaszó forgatása jobbra) === | ||
+ | {{anchor: | ||
+ | A művelet 32 bites duplaszó forgatását végzi bitenként jobbra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a < | ||
+ | |||
+ | **RRD < | ||
+ | |||
+ | **RRD**: Az AKKU2-L-L tartalma adja meg a műveletnek, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 157. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 31 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | RRD // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 78. Példaprogram RRD | ||
+ | |||
+ | Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel jobbra forgatjuk. Ez egy kettővel való szorzásnak felel meg, így az MD10-be 1000-et kapunk eredményül. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | L MD 20 // MD20 értékét lépteti eggyel jobbra | ||
+ | RRD 1 | ||
+ | T MD 20 // az eredményt visszateszi az MD20-ba | ||
+ | |||
+ | ide: NOP 0 | ||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 79. Példaprogram RRD < | ||
+ | |||
+ | === RLDA (32 bites duplaszó forgatása balra) === | ||
+ | {{anchor: | ||
+ | A művelet 32 bites duplaszó forgatását végzi bitenként balra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a < | ||
+ | |||
+ | **RLDA < | ||
+ | |||
+ | **RLDA**: Az AKKU2-L-L tartalma adja meg a műveletnek, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 158. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 31 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | RLDA // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 80. Példaprogram RLDA | ||
+ | |||
+ | Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel balra forgatjuk. Ez egy kettővel való osztásnak felel meg, így az MD10-be 250-et kapunk eredményül. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | L MD 20 // MD20 értékét lépteti eggyel balra | ||
+ | RLDA 1 | ||
+ | T MD 20 // az eredményt visszateszi az MD20-ba | ||
+ | |||
+ | ide: NOP 0 | ||
+ | L S5T# | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 81. Példaprogram RLDA < | ||
+ | |||
+ | === RRDA (32 bites duplaszó forgatása jobbra) === | ||
+ | {{anchor: | ||
+ | A művelet 32 bites duplaszó forgatását végzi bitenként jobbra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a < | ||
+ | |||
+ | **RRDA < | ||
+ | |||
+ | **RRDA**: Az AKKU2-L-L tartalma adja meg a műveletnek, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | x | x | x | - | - | - | - | - | | ||
+ | 159. Táblázat Státusz szó változásai | ||
+ | |||
+ | < | ||
+ | L 31 // AKKU2 (léptetések száma) | ||
+ | L 500 // AKKU1 (léptetendő érték) | ||
+ | RRDA // léptetés | ||
+ | |||
+ | T MD 10 // AKKU1 -> MD10 | ||
+ | </ | ||
+ | 82. Példaprogram RRDA | ||
+ | |||
+ | Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel jobbra forgatjuk. Ez egy kettővel való szorzásnak felel meg, így az MD10-be 1000-et kapunk eredményül. | ||
+ | |||
+ | < | ||
+ | UN T 12 // ha lefutott az idő | ||
+ | SPB ide // bejut a végrehajtáshoz | ||
+ | |||
+ | L MD 20 // MD20 értékét lépteti eggyel jobbra | ||
+ | RRDA 1 | ||
+ | T MD 20 // az eredményt visszateszi az MD20-ba | ||
+ | |||
+ | ide: NOP 0 | ||
+ | L S5T#200MS // futás időzítés : 250 ms | ||
+ | UN T 12 | ||
+ | SE T 12 | ||
+ | </ | ||
+ | 83. Példaprogram RRDA < | ||
+ | |||
+ | ===== Időfunkciók ===== | ||
+ | |||
+ | Az időfunkció egy programozási elem a STEP7-ben. Ezeknek a funkcióknak egy külön terület van fenntartva a CPU-ban, és itt minden számláló 16 bitet foglal. Az AWL programozási nyelv jellemzően 256 időfunkció használatát teszi lehetővé, de az adott CPU-tól függ, hogy mennyi időfunkció áll a rendelkezésünkre. A számlálókhoz a számláló műveleteken keresztül lehet hozzáférni, | ||
+ | |||
+ | ^Parancs^németül^magyarul| | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[# | ||
+ | |[[#se|SE ]]|Zeit als Einschaltverzögerung|Bekapcsolás késleltetési időfunkció| | ||
+ | |[[# | ||
+ | |[[# | ||
+ | 160. Táblázat időfunkciók összefoglalás | ||
+ | |||
+ | === FR (Timer feloldása) === | ||
+ | {{anchor: | ||
+ | {{anchor: | ||
+ | Formátuma **FR < | ||
+ | |||
+ | A számláló feloldása akkor történik meg, ha az utasítás előtt a „[[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | 161. Táblázat Státusz szó változásai | ||
+ | |||
+ | === L (Időérték megadása AKKU1-be, egész szám formátumban) === | ||
+ | {{anchor: | ||
+ | Formátuma **L < | ||
+ | |||
+ | Az idő értékét betölti az AKKU1-L-be egész számként, miután lementette az AKKU1 és AKKU2 értékét. | ||
+ | |||
+ | Az AKKU1-L-ből akkor is be kell tölteni az időértéket, | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 162. Táblázat Státusz szó változásai | ||
+ | |||
+ | === LC (Időérték megadása AKKU1-be, BCD formátumban) === | ||
+ | {{anchor: | ||
+ | Formátuma: **LC < | ||
+ | |||
+ | Az idő értékét betölti az AKKU1-L-be [[hu: | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | - | - | - | - | | ||
+ | 163. Táblázat Státusz szó változásai | ||
+ | |||
+ | === R (Timer nullázása) === | ||
+ | {{anchor: | ||
+ | Formátuma: **R < | ||
+ | |||
+ | A művelet megszakítja az elindított időfunkció futását, és törli annak időértékét. Az indítása akkor történik, amikor a [[# | ||
+ | |||
+ | ^ ^[[# | ||
+ | | Írja: | - | - | - | - | - | 0 | - | - | 0 | | ||
+ | 164. Táblázat Státusz szó változásai | ||
+ | |||
+ | === SI (Impulzus időfunkció) === | ||
+ | {{anchor: | ||
+ | Formátuma: **SI < | ||
+ | |||
+ | {{wiki: | ||
+ | |||
+ | - időfunkció indítása | ||
+ | - időfunkció „rendes” lefutása, | ||
+ | - időfunkció indítása | ||
+ | - időfunkció indító bitjének a lefutás előtti visszavétele | ||
+ | - időfunkció indítása | ||
+ | - időfunkció futásának megszakítása reset-tel | ||
+ | - reset kint van és az időfunkciót megkíséreljük indítani | ||
+ | |||
+ | 61. ábra SI funkció diagramm | ||
+ | |||
+ | === SV (Meghosszabbított impulzus időfunkció) === | ||
+ | {{anchor: | ||
+ | {{wiki: | ||
+ | |||
+ | - időfunkció indítása | ||
+ | - időfunkció „rendes” lefutása, | ||
+ | - időfunkció indítása | ||
+ | - időfunkció indító bitjének a lefutás előtti visszavétele, | ||
+ | - időfunkció indítása | ||
+ | - időfunkció ismételt indítása („beleindítás”). Az időzítés újból indul | ||
+ | - ismételt időfunkció lefutása. A két időfunkció futásideje összeadódott. | ||
+ | - időfunkció indítása | ||
+ | - időfunkció futásának megszakítása reset-tel | ||
+ | - reset kint van és az időfunkciót megkíséreljük indítani | ||
+ | |||
+ | 62. ábra SV funkció diagramm | ||
+ | |||
+ | === SE (Bekapcsolás késleltetési időfunkció) === | ||
+ | {{anchor: | ||
+ | {{wiki: | ||
+ | |||
+ | - időfunkció indítása | ||
+ | - időfunkció „rendes” lefutása, | ||
+ | - idő indítása „0”-ra. Amint lefutott az idő, és ez a bit „1”, addig a kimenet is „1”. | ||
+ | - időfunkció indítása | ||
+ | - időfunkció indító bitjének a lefutás előtti visszavétele | ||
+ | - időfunkció indítása | ||
+ | - időfunkció futásának megszakítása reset-tel | ||
+ | - reset kint van és az időfunkciót megkíséreljük indítani | ||
+ | |||
+ | < | ||
+ | U E 0.0 | ||
+ | L S5T#10s | ||
+ | SE T1 | ||
+ | |||
+ | U T1 | ||
+ | = A 4.0 | ||
+ | </ | ||
+ | |||
+ | |||