hu:s7:awl_leiras

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 |
 +| [[#egyenlo|=]] | = | Bit művelet | Összehasonlítás |
 +| ) | ) | 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:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +|[[#*i|*I]]| *I | Egész szám művelet | AKKU1 és AKKU2 szorzása 16 bites egész számként  ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| [[#*r|*R]] | *R | Tizedes tört funkció | AKKU1 és AKKU2 szorzása 32 bites törtszámként ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#/d|/D]] | /D | Egész szám művelet | AKKU2 osztása AKKU1-el 32 bites egész számként ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#/a|/I]] | /I | Egész szám művelet | AKKU2 osztása AKKU1-el 16 bites egész számként ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| [[#/r|/R]] | /R | Tizedes tört funkció | AKKU2 osztása AKKU1-el 32 bites törtszámként ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#_d_|? D]] | ? D | Összehasonlítás | 32 bites egész számok ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) összehasonlítása\\  ==, <>, >, <, >=, <= |
 +| [[#_i_|? I]] | ? I | Összehasonlítás | 16 bites egész számok ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) összehasonlítása\\  ==, <>, >, <, >=, <= |
 +| [[#_r_|? R]] | ? R | Összehasonlítás | 32 bites törtszámok ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) összehasonlítása\\  ==, <>, >, <, >=, <= |
 +| [[#_+_|+]] | + | Egész szám művelet | Egész szám konstans hozzáadása (16, 32 Bit) |
 +| [[#+ar1|+AR1]] | +AR1 | Akkumulátor | AKKU1 hozzáadása az 1. címregiszterhez |
 +| [[#+ar2|+AR2]] | +AR2 | Akkumulátor | AKKU1 hozzáadása a 2. címregiszterhez |
 +| [[#+d|+D]] | +D | Egész szám művelet | AKKU1 és AKKU2 összeadása 32 bites egész számként ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#+i|+I]] | +I | Egész szám művelet | AKKU1 és AKKU2 összeadása 16 bites egész számként ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| [[#+r|+R]] | +R | Tizedes tört funkció | AKKU1 és AKKU2 összeadása 32 bites törtszámként ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#-d|-D]] | -D | Egész szám művelet | AKKU2 kivonása az AKKU1-ből 32 bites egész számként ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#-i|-I]] | -I | Egész szám művelet | AKKU2 kivonása az AKKU1-ből 16 bites egész számként ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| [[#-r|-R]] | -R | Tizedes tört funkció | AKKU2 kivonása az AKKU1-ből 32 bites törtszámként ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#abs|ABS]] | ABS | Tizedes tört funkció | Törtszám abszolút értéke ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#acos|ACOS]] | ACOS | Tizedes tört funkció | Arcus cosinus képzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#asin|ASIN]] | ASIN | Tizedes tört funkció | Arcus sinus képzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#atan|ATAN]] | ATAN | Tizedes tört funkció | Arcus tangens képzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#auf|AUF]] | OPN | Adatblokk művelet | DB kijelölése |
 +| 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) |
 +| [[#btd|BTD]] | BTD | Transzformáció | [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] átalakítása 32 bites egész számmá ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#bti|BTI]] | BTI | Transzformáció | [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] átalakítása 16 bites egész számmá ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| 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 |
 +| [[#clr|CLR]] | CLR | Bit művelet | VKE nullázása (=0) |
 +| [[#cos|COS]] | COS | Tizedes tört funkció | Cosinus képzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| DEC | DEC | Akkumulátor | AKKU 1 csökkentése |
 +| [[#dtb|DTB]] | DTB | Transzformáció | 32 bites egész szám átalakítása BCD-vé ([[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]]) |
 +| [[#dtr|DTR]] | DTR | Transzformáció | 32 bites egész szám átalakítása 32 bites törtszámmá ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| ENT | ENT | Akkumulátor | AKKU-Stack feltöltése (ENTER) |
 +| [[#exp|EXP]] | EXP | Tizedes tört funkció | Exponenciális értékképzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| FN | FN | Bit művelet | Negatív flanke (lefutóél) |
 +| FP | FP | Bit művelet | Pozitív flanke (felfutóél) |
 +| [[#fr_t|FR]] | FR | Idő funkció | Timer szabadon hagyása (Freigabe) |
 +| [[#fr|FR]] | FR | Számláló funkció | Számláló szabadon hagyása (Freigabe) |
 +| INC | INC | Akkumulátor | AKKU1 növelése |
 +| [[#invd|INVD]] | INVD | Transzformáció | Egyszeres komplementer ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#invi|INVI]] | INVI | Transzformáció | Egyszeres komplementer ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| [[#itb|ITB]] | ITB | Transzformáció | 16 bites egész szám átalakítása BCD-vé ([[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]]) |
 +| [[#itd|ITD]] | ITD | Transzformáció | 16 bites egész szám átalakítása 32 bites egész számmá ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#l|L]] | L | Betöltés/mozgatás | Betöltés (LOAD/LADE) |
 +| [[#l_zaehler|L]] | L | Számláló funkció | Az aktuális számláló értékének a betöltése egész számként AKKU1-be |
 +| [[#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/mozgatás | Státusz-szó (STATUS WORD) betöltése az AKKU1-be |
 +| [[#tar1_ar2|LAR1 AR2]] | LAR1 AR2 | Betöltés/mozgatás | A 2. címregiszter tartalmának a betöltése az 1. címregiszterbe |
 +| [[#lar1|LAR1]] | LAR1 | Betöltés/mozgatás | Az 1. címregiszter feltöltése AKKU1-ből |
 +| [[#lar1_d|LAR1 <D>]] | LAR1 <D> | Betöltés/mozgatás | Az 1. címregiszter betöltése pointerrel |
 +| [[#lar2|LAR2]] | LAR2 | Betöltés/mozgatás | Az 2. címregiszter betöltése 32 bites egész számmal |
 +| [[#lar2_d|LAR2 <D>]] | LAR2 <D> | Betöltés/mozgatás | Az 2. címregiszter betöltése AKKU1-ből |
 +| [[#lc_zaehler|LC]] | LC | Számláló funkció | Az aktuális számlálóérték betöltése [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] formában az AKKU1-be |
 +| [[#lc_t|LC]] | LC | Idő funkció | Az aktuális időérték betöltése [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] formában az AKKU1-be |
 +| LEAVE | LEAVE | Akkumulátor | AKKU Verem ürítése |
 +| [[#ln|LN]] | LN | Tizedes tört funkció | Természetes logaritmus képzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#loop|LOOP]] | LOOP | Ugrás művelet | Programciklus |
 +| 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:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#negd|NEG]]D | NEGD | Transzformáció | 32 bites egész szám kettes komplementer  ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#negi|NEGI]] | NEGI | Transzformáció | 16 bites egész szám kettes komplementer ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) |
 +| [[#negr|NEGR]] | NEGR | Transzformáció | Törtszám negálása ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| NOP 0 | NOP 0 | Akkumulátor | Null operáció 0 (helytartó parancs) |
 +| NOP 1 | NOP 1 | Akkumulátor | Null operáció 1 (helytartó parancs) |
 +| [[#not|NOT]] | NOT | Bit művelet | VKE negálása |
 +| 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:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| [[#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:s7:valtozotipusok_es_ob_k#word|WORD]]) |
 +| 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 |
 +| [[#r_zaehler|R]] | R | Számláló funkció | Számláló reset |
 +| [[#rld|RLD]] | RLD | Forgatás | Duplaszó forgatása balra ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| [[#rlda|RLDA]] | RLDA | Forgatás | Duplaszó forgatása balra ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]), A1 kijelzéssel |
 +| [[#rnd|RND]] | RND | Transzformáció | Törtszám kerekítése egész számra ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#rnd-|RND–]] | RND-- | Transzformáció | Törtszám kerekítése a nála a tizedesrésszel kisebb egész számra ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#rnd+|RND+]] | RND+ | Transzformáció | Törtszám kerekítése a nála a tizedesrésszel nagyobb egész számra ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#rrd|RRD]] | RRD | Forgatás | Duplaszó forgatása jobbra ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| [[#rrda|RRDA]] | RRDA | Forgatás | Duplaszó forgatása jobbra ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]), A1 kijelzéssel |
 +| [[#s|S]] | S | Bit művelet | SET |
 +| [[#s_zaehler|S]] | S | Számláló funkció | Számláló beállítása |
 +| [[#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ő |
 +| [[#set|SET]] | SET | Bit művelet | Állítás |
 +| [[#si|SI]] | SP | Idő funkció | Impulzus idő |
 +| [[#sin|SIN]] | SIN | Tizedestört funkció | Sinus képzése ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#sld|SLD]] | SLD | Léptetés | Duplaszó léptetése balra ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| [[#slw|SLW]] | SLW | Léptetés | Szó léptetése balra ([[hu:s7:valtozotipusok_es_ob_k#word|WORD]]) |
 +| [[#spa|SPA]] | JU | Ugrás művelet | Feltétel nélküli ugrás |
 +| [[#spb|SPB]] | JC | Ugrás művelet | Feltételes ugrás, ha VKE = 1 |
 +| [[#spbb|SPBB]] | JCB | Ugrás művelet | Feltételes ugrás, ha VKE = 1, és a VKE másolása BIE-be |
 +| [[#spbi|SPBI]] | JBI | Ugrás művelet | Feltételes ugrás, ha BIE = 1 |
 +| [[#spbin|SPBIN]] | JNBI | Ugrás művelet | Feltételes ugrás, ha BIE = 0 |
 +| [[#spbn|SPBN]] | JCN | Ugrás művelet | Feltételes ugrás, ha VKE = 0 |
 +| [[#spbnb|SPBNB]] | JNB | Ugrás művelet | Feltételes ugrás, ha VKE = 0, és a VKE másolása BIE-be |
 +| [[#spl|SPL]] | JL | Ugrás művelet | Ugráslista |
 +| [[#spm|SPM]] | JM | Ugrás művelet | Feltételes ugrás, ha az eredmény < 0 |
 +| [[#spmz|SPMZ]] | JMZ | Ugrás művelet | Feltételes ugrás, ha az eredmény <= 0 |
 +| [[#spn|SPN]] | JN | Ugrás művelet | Feltételes ugrás, ha az eredmény <> 0 |
 +| [[#spo|SPO]] | JO | Ugrás művelet | Feltételes ugrás, ha az OV = 1 |
 +| [[#spp|SPP]] | JP | Ugrás művelet | Feltételes ugrás, ha az eredmény > 0 |
 +| [[#sppz|SPPZ]] | JPZ | Ugrás művelet | Feltételes ugrás, ha az eredmény >= 0 |
 +| [[#sps|SPS]] | JOS | Ugrás művelet | Feltételes ugrás, ha az OS = 1 |
 +| [[#spu|SPU]] | JUO | Ugrás művelet | Feltételes ugrás, ha az eredmény érvénytelen |
 +| [[#spz|SPZ]] | JZ | Ugrás művelet | Feltételes ugrás, ha az eredmény = 0 |
 +| [[#sqr|SQR]] | SQR | Tizedes tört funkció | Négyzetre emelés ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#sqrt|SQRT]] | SQRT | Tizedes tört funkció | Gyökvonás ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#srd|SRD]] | SRD | Léptetés | Duplaszó léptetése jobbra ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| [[#srw|SRW]] | SRW | Léptetés | Szó léptetése jobbra ([[hu:s7:valtozotipusok_es_ob_k#word|WORD]]) |
 +| [[#ss|SS]] | SS | Idő funkció | Halmozott bekapcsolás késleltetett idő |
 +| [[#ssd|SSD]] | SSD | Léptetés | 32 bites egész szám előjelhelyes léptetése jobbra |
 +| [[#ssi|SSI]] | SSI | Léptetés | 16 bites egész szám előjelhelyes léptetése jobbra |
 +| [[#sv|SV]] | SE | Idő funkció | Impulzus hosszabbított idő |
 +| [[#t|T]] | T | Betöltés/mozgatás | Mozgatás |
 +| [[#t_stw|T STW]] | T STW | Betöltés/mozgatás | AKKU1 mozgatása a státusz szóba (STATUSWORD) |
 +| [[#tad|TAD]] | CAD | Transzformáció | A byte sorrend megfordítása 32 bit hosszan az AKKU1-ben |
 +| TAK | TAK | Akkumulátor | AKKU1 és AKKU2 tartalmának cseréje |
 +| [[#tan|TAN]] | TAN | Tizedes tört funkció | Tangens ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) |
 +| [[#tar|TAR]] | CAR | Betöltés/mozgatás | 1. és 2. címregiszter tartalmának a cseréje |
 +| [[#tar1|TAR1]] | TAR1 | Betöltés/mozgatás | 1. címregiszter mozgatása a 2. címregiszterbe |
 +| [[#tar1_ar2|TAR1 AR2]] | TAR1 AR2 | Betöltés/mozgatás | 1.címregiszter mozgatása AKKU2-be |
 +| [[#tar1_d|TAR1 <D>]] | TAR1 <D> | Betöltés/mozgatás | 1.címregiszter mozgatása a célcímre (32 bit pointer) |
 +| [[#tar2|TAR2]] | TAR2 | Betöltés/mozgatás | 2.címregiszter mozgatása AKKU1-re |
 +| [[#tar2_d|TAR2 <D>]] | TAR2 <D> | Betöltés/mozgatás | 2.címregiszter mozgatása a célcímre (32 bit pointer) |
 +| [[#taw|TAW]] | CAW | Transzformáció | A byte sorrend megfordítása 16 bit hosszan az AKKU1-L-ben |
 +| [[#tdb|TDB]] | CDB | Adatblokk művelet | Globál DB és Instant DB cseréje |
 +| [[#trunc|TRUNC]] | TRUNC | Transzformáció | Törtszám kerekítése csonkolással egész számra ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) |
 +| [[#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:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| [[#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:s7:valtozotipusok_es_ob_k#word|WORD]]) |
 +| [[#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:s7:valtozotipusok_es_ob_k#dword|DWORD]]) |
 +| XOW | XOW | Szavak összevetése | Kizáró vagy szó ([[hu:s7:valtozotipusok_es_ob_k#word|WORD]]) |
 +| [[#zr_zaehler|ZR]] | CD | Számláló funkció | Számláló visszaszámlálás |
 +| [[#zv_zaehler|ZV]] | CU | Számláló funkció | Számláló (előre)számlálás |
 +
 +===== Státusz szó, VKE,  STA,  STANDARD =====
 +
 +A [[#vke|VKE]] (Verknüpfung-eredmény) a művelet eredményét tartalmazza, a [[#sta|STA]] (status) az adott sor műveleti eredményét. A fenti esetben, a második példánál jól látható, hogy a második sorban (M4.1) értéke „0”, ezért a [[#sta|STA]] is „0”, viszont az ÉS művelet okán a „[[#vke|VKE]]” sor is ebben a sorban szakad meg, a továbbiakban ezért a „[[#vke|VKE]]” „0” marad. (VAGY láncoknál persze ez kissé másként működik). A [[#vke|VKE]], mint a státusz szó 1. bitje, a státusz szónál is tárgyalásra kerül.
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002.jpg?329x160|VKE, STA, STANDARD}}\\ 1. ábra Példaprogram állapotok
 +
 +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 [[#vke|VKE]] és [[#sta|STA]] működése megegyezik a fent leírtakkal, eszerint a fenti példában az 1792 értéke nagyobb (>I), mint a 12, így a [[#vke|VKE]] „1” és az eredmény (M1.0) szintén „1”. A második példán ennek az ellenkezője látható.
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image004.jpg?329x170|VKE, STA, STANDARD}}\\ 2. ábra STANDARD kijelzés módja
 +
 +A STANDARD oszlop kijelzési módját megváltoztathatjuk, úgy, hogy az oszlop felett a jobb egérgombra kattintunk. Itt a „Dartstellung” pontnál választhatunk a decimális, hexadecimális és törtszám kijelzések között.
 +
 +=== Státusz szó ===
 +
 +Az [[#utasitaskeszlet|utasításkészlet]]ben minden utasításnál feltüntetem a státusz szó várható állapotát a lenti táblázattal megegyező módon:
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | x | x | x | 1 |
 +
 +1. Táblázat Státusz szó tartalma
 +
 +A jelzések jelentése:
 +
 +-     nem írja vagy olvassa a bitet\\ *     olvassa a bitet\\ x    „0” vagy „1”-et írhat a bitbe     \\ 0    „0”-ra állítja a bitet\\ 1    „1”-re állítja a bitet
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image006.jpg?441x286|Státusz szó}}\\ 3. ábra Státusz szó példa
 +
 +=== /ER Kiértékelő (0.) bit ===
 +{{anchor:_er}}
 +**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 „[[#vke|VKE]]”-be.
 +
 +Ha az ER „1”, akkor a kiértékelési lánc tart, a [[#vke|VKE]]-t a művelet előtt beolvassa, majd a művelet kiértékelése után visszamásolja a program.
 +
 +Az állítási műveletek (S, R, =) törlik az ER tartalmát, csakúgy, mint a [[#vke|VKE]] függő ugrásműveletek.
 +
 +=== VKE (1.) bit ===
 +{{anchor:vke}}
 +**Verknüpfungs: eredmény**
 +
 +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 [[#_er|/ER]] bit állapota „0”, akkor az adott művelet eredményét bemásolja a program a VKE-be. Ha az [[#_er|/ER]] „1”, akkor a program az adott műveletet kiértékeli, és ennek megfelelően módosítja a VKE értékét.  Az állítási műveletekhez, vagy VKE függő ugrásokhoz érve a program a VKE tartalmától függően hajtja végre az adott műveletet. A VKE tartalma az on-line státusz ablakban külön oszlopban is kiemelhető (lásd a fejezet elején).
 +
 +=== STA (2.) bit ===
 +{{anchor:sta}}
 +**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, die Lesezugriff auf den Speicher hat (U, UN, O, ON, X oder XN), ist immer gleich dem Wert des adressierten Bits. Der Status einer Verknüpfungsoperation, die Schreibzugriff auf den Speicher hat (R, S, oder =), ist gleich dem Wert des Bits, in das die Operation schreibt. Falls nicht geschrieben wird, ist der Status gleich dem Wert des adressierten Bits. Das Statusbit hat keine Bedeutung für Verknüpfungsoperationen, die nicht auf den Speicher zugreifen. Diese Operationen setzen das Statusbit auf "1". Das Statusbit wird von Operationen nicht abgefragt. Es wird lediglich beim Anzeigen des Programmstatus von Programmvariablen ausgewertet.
 +
 +A státuszbit gyakorlatilag különbségzi a műveletek ([[#vke|VKE]]-k) eredményeit. Ez „1”, amennyiben a részművelet eredménye „1”. Ha egy [[#vke|VKE]] „0” is besikerül, akkor a kiértékelési lánc megszakad, a STA eredménye a továbbiakban „0”. VAGY műveletek esetén a lánc nem folytonosan, hanem a VAGY sorok különbségzésével értendő (lásd OR bit).\\ Amennyiben olyan művelet van soron, mely nem ad bináris eredményt, a STA állapota „1”.
 +
 +=== OR (3.) bit ===
 +{{anchor:or_bit}}
 +**Oder bit**
 +
 +Ez a bit akkor szükséges, ha a VAGY műveletet ÉS műveletek előzik meg. Az OR bit a 3. a státusz szóban (balról a negyedik). Feladata a feltétel teljesülésének tárolása, és átvitele a többi VAGY művelet „felett”.
 +
 +A lenti példákon szemléltetem a bit működését. Az 1. változat azt az állapotot szemlélteti, amikor az első VAGY feltétel nem teljesül, csak a második. Jól látható, hogy a blokk után található VAGY művelettől a kiértékelésig az OR bit értéke „1”-re vált. A 2. változat esetén már az első VAGY blokk eredménye is „1”, így az OR bit ettől a ponttól „1”.
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image008.jpg?441x227|S7 OR}} \\ 4. ábra OR bit állapota (1.változat)
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image010.jpg?441x227|S7 OR}} \\ 5. ábra OR bit állapota (2. változat)
 +
 +=== OS (4.) bit ===
 +{{anchor:os_bit}}
 +**Überlauf, speichernd: mentett túlcsordulás**
 +
 +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:s7:soft_s7_awl_utasitaskeszlet_clip_image012.jpg?441x300|S7 OS bit}}\\ 6. ábra OS, OV bitek állapota
 +
 +=== OV (5.) bit ===
 +{{anchor:ov_bit}}
 +**Überlauf: túlcsordulás**
 +
 +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:s7:soft_s7_awl_utasitaskeszlet_clip_image012_0000.jpg?441x300|S7 OV bit}}\\ 7. ábra OS, OV bitek állapota
 +
 +=== A1, A0 (6., 7.) bit ===
 +{{anchor:a1a0}}
 +**Anzeigenbits: ábrázolóbitek**
 +
 +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/forgatás művelet eredménye ^^|
 +| 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:bie}}
 +**Binäreredménybit: bináris eredmény bit**
 +
 +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 [[#vke|VKE]]-t a BIE-be mentjük. A BIE-t a SAVE, SPBB és SPBNB műveletekkel kezelhetjük.
 +
 +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, angolul: MCR-Stack)
 +
 +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 [[#vke|VKE]], BIE, OR és egy funkcióazonosító szerepel. A zárójel bezárás -- „)” -- mindig lezár egy szintet, és a megelőző szinten állítja az OR bitet és felülbírálhatja az eredménytől függően a [[#vke|VKE]] bitet. A  kiértékelési láncnak pontosan annyi zárójel zárást kell tartalmaznia, mint amennyi megnyitásra került, egyébként a szerkesztőprogram hibát jelez letöltés / beforgatás közben:
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image014.jpg?383x172}}\\ 8. ábra Zárójelezési probléma
 +
 +====== Utasításkészlet ======
 +
 +Ebben a fejezetben összefoglalom az AWL utasításokat.  Az összes utasítást összefoglaló abc rendbe szedett táblázatot a [[#_Teljes_Simatic_AWL_utasításkészlet|Teljes Simatic AWL utasításkészlet]] pont alatt találja meg a mellékletben.
 +
 +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:s7:soft_s7_awl_utasitaskeszlet_clip_image016.jpg}}\\ 
 +9. ábra Példaprogram állapotok
 +
 +===== Bit logikai műveletek =====
 +{{anchor:bit_logik}}
 +
 +=== U (és) ===
 +{{anchor:u}}
 +Az ÉS művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a [[#vke|VKE]] értéket.
 +
 +^ 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, az alábbi operandusokat:\\ %%==%%0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | x | x | x | 1 |
 +
 +4. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image016_0000.jpg?262x145|S7 U (AND) example}}\\ 10. ábra Példaprogram állapotok
 +
 +=== UN (és nem) ===
 +{{anchor:un}}
 +Az ÉS NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a [[#vke|VKE]] értéket.
 +
 +^ 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, az alábbi operandusokat:\\ %%==%%0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | x | x | x | 1 |
 +
 +6. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image018.jpg?260x145|S7 UN (AND NOT) example}}\\ 11. ábra Példaprogram állapotok
 +
 +=== O (vagy) ===
 +{{anchor:o}}
 +A VAGYművelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a [[#vke|VKE]] értéket.
 +
 +^ 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, az alábbi operandusokat:\\ %%==%%0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | x | x | 1 |
 +
 +8. Táblázat Státusz szó változásai
 +
 +| KOP | AWL |
 +| {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image020.jpg?345x150|S7 O (OR) example}} | {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image022.jpg?249x125|S7 O (OR) example}} |
 +| Az első VAGY ág teljesül (az első vagy ágat nem kell „O” utasítással kezdeni). ||
 +| {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image024.jpg?346x146|S7 O (OR) example}} | {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image026.jpg?261x126|S7 O (OR) example}} |
 +| A második VAGY ág teljesül. ||
 +| {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image028.jpg?344x151|S7 O (OR) example}} | {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image030.jpg?266x123|S7 O (OR) example}} |
 +| A harmadik vagy ág teljesül ||
 +| {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image032.jpg?342x147|S7 O (OR) example}} | {{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image034.jpg?259x129|S7 O (OR) example}} |
 +| Az utasítás eredménye 0. ||
 +
 +2. Példaprogram OR állapotok
 +
 +=== ON (vagy nem) ===
 +{{anchor:on}}
 +A VAGY NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a [[#vke|VKE]] értéket.
 +
 +Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:\\ %%==%%0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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, megemlítem, hogy KOP-ban nincs ON, ehelyett az adott elágazás összes feltételét negálni kell.
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image036.jpg?259x126|S7 ON (OR NOT) example}}\\ 12. ábra Példaprogram állapotok
 +
 +=== X (kizáró vagy) ===
 +{{anchor:x}}
 +A kizáró vagy művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a [[#vke|VKE]] értéket. A kizáró vagy abban az esetben „1”, ha a páratlan számú X művelet értéke „1”.
 +
 +^ 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, az alábbi operandusokat:\\ %%==%%0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | x | x | 1 |
 +
 +11. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image038.jpg?238x255|S7 X (XOR) example}}\\ 13. ábra Példaprogram állapotok
 +
 +=== XN (kizáró vagy nem) ===
 +{{anchor:xn}}
 +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 [[#vke|VKE]] értéket.
 +
 +Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:\\ %%==%%0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | x | x | 1 |
 +
 +12. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image040.jpg?248x258|S7 XN (XOR NOT) example}}\\ 14. ábra Példaprogram állapotok
 +
 +=== = (egyenlő) ===
 +
 += <bit> az [[#vke|VKE]] értékét (a megelőző bitműveletek végeredményét) kiírja a megcímzett bitre.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | x | - | 0 |
 +
 +13. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image042.jpg?242x199|S7 = example}}\\ 15. ábra Példaprogram állapotok
 +
 +=== R (reset) ===
 +{{anchor:r}}
 +R <bit> ha a [[#vke|VKE]] értéke (a megelőző bitműveletek végeredményét) „1”, akkor törli a címzett bitet.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | x | - | 0 |
 +
 +14. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image044.jpg?242x130|S7 R (reset) example}}\\ 16. ábra Példaprogram állapotok
 +
 +=== S (set) ===
 +{{anchor:s}}
 +S <bit> ha a [[#vke|VKE]] értéke (a megelőző bitműveletek végeredményét) „1”, akkor állítja a címzett bitet.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | x | - | 0 |
 +
 +15. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image046.jpg?242x74|S7 S (set) example}}\\ 17. ábra Példaprogram állapotok
 +
 +=== NOT (VKE negálás) ===
 +{{anchor:not}}
 +A NOT negálja a [[#vke|VKE]] értékét.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | 1 | x | - |
 +
 +16. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image048.jpg?242x148|S7 NOT example}}\\ 18. ábra Példaprogram állapotok
 +
 +=== SET (VKE állítás) ===
 +{{anchor:set}}
 +A SET a [[#vke|VKE]]-t „1”-re állítja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | 1 | 1 | 0 |
 +
 +17. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image050.jpg?228x115|S7 S (set) example}}\\ 19. ábra Példaprogram állapotok
 +
 +=== CLR (VKE törlés) ===
 +{{anchor:clr}}
 +A CLR a [[#vke|VKE]]-t „0”-ra állítja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | 0 | 0 | 0 |
 +
 +18. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image052.jpg?228x115|S7 CLR (clear) example}}\\ 20. ábra Példaprogram állapotok
 +
 +===== Ö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 [[#vke|VKE]]-ben jelenik meg. Az A1 és az A0 státuszbitek a „kisebb mint” vagy „nagyobb mint” eredmények jelzését végzik.
 +
 +^ művelet ^ [[#vke|VKE]],\\ AKKU2 > AKKU1 ^ [[#vke|VKE]],\\ AKKU2 = AKKU1 ^ [[#vke|VKE]],\\ AKKU2 < AKKU1 |
 +^ %%==%%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  A [[#vke|VKE]] értéke
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | 0 | - | 0 | x | x | 1 |
 +
 +20. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002_0000.jpg?329x160|S7 integer operations}}\\ 21. ábra Példaprogram állapotok
 +
 +=== ? 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 [[#vke|VKE]]-ben jelenik meg. Az [[#a1a0|A1]] és az A0 státuszbitek a „kisebb mint” vagy „nagyobb mint” eredmények jelzését végzik.
 +
 +^ művelet ^ [[#vke|VKE]],\\ AKKU2 > AKKU1 ^ [[#vke|VKE]],\\ AKKU2 = AKKU1 ^ [[#vke|VKE]],\\ AKKU2 < AKKU1 |
 +^ %%==%%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  A [[#vke|VKE]] értéke
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | 0 | - | 0 | x | x | 1 |
 +
 +22. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image004_0000.jpg?323x160|S7 double word (DW) operations}}\\ 22. ábra Példaprogram állapotok
 +
 +=== ? 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 [[#vke|VKE]]-ben jelenik meg. Az [[#a1a0|A1]] és az A0 státuszbitek a „kisebb mint” vagy „nagyobb mint” eredmények jelzését végzik.
 +
 +^ művelet ^ [[#vke|VKE]],\\ AKKU2 > AKKU1 ^ [[#vke|VKE]],\\ AKKU2 = AKKU1 ^ [[#vke|VKE]],\\ AKKU2 < AKKU1 |
 +^ %%==%%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  A [[#vke|VKE]] értéke
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | 0 | x | x | 1 |
 +
 +24. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image006_0000.jpg?327x160|S7 real (R) operations}}\\ 23. ábra Példaprogram állapotok
 +
 +===== Transzformációk =====
 +
 +===  BTI (BCD konvertálás egész szám formátumra) ===
 +{{anchor:bti}}
 +A BTI egy előjeles, 3 számjegyű [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]]  formátumú számot alakít át integer formátumúra. Az eredmény az AKKU1-H-ban tárolódik, az AKKU1-L és AKKU2 értéke a művelet során nem változik.
 +
 +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, BCDF hiba lép fel. Amennyiben a hibát nem kezelik le az OB121-ben, a PLC stop-ba megy:
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image008_0000.jpg?457x144|S7 BCD error, than PLC stop}}\\ 24. ábra BCD transzformáció hiba a diagnózis ablakban
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +25. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image010_0000.jpg?327x106|S7 BTI operation}}\\ 25. ábra Példaprogram
 +
 +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:itb}}
 +A ITB az AKKU1-L terület értékét alakítja át [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] kóddá. Az eredmény az AKKU1-L-ben tárolódik.
 +
 +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, az OV és OS értékét „1”-re állítja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | x | x | - | - | - | - |
 +
 +26. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image012_0001.jpg?317x104|S7 ITB operation}}\\ 26. ábra Példaprogram
 +
 +=== BTD (BCD konvertálás 32 bites egész szám formátumra) ===
 +{{anchor:btd}}
 +A BTD egy előjeles, 7 számjegyű [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]]  formátumú számot alakít át integer formátumúra. Az eredmény az AKKU1-ben tárolódik, az AKKU2 értéke a művelet során nem változik.
 +
 +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, BCDF hiba lép fel. Amennyiben a hibát nem kezelik le az OB121-ben, a PLC stop-ba megy:
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image008_0001.jpg?457x144|S7 BCD error, than PLC stop}}\\ 27. ábra BCD transzformáció hiba a diagnózis ablakban
 +
 +| |^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +27. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image014_0000.jpg?317x104|S7 BTD operation}}\\ 28. ábra Példaprogram
 +
 +=== DTB (32 bites egész szám konvertálás BCD formátumra) ===
 +{{anchor:dtb}}
 +A DTB az AKKU1 terület 32 bites egész szám értékét alakítja át [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] kóddá. Az eredmény az AKKU1-ben tárolódik.
 +
 +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, az OV és OS értékét „1”-re állítja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | x | x | - | - | - | - |
 +
 +28. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image016_0001.jpg?332x146|S7 DTB operation }}\\ 29. ábra Példaprogram
 +
 +=== ITD (16 bites egész szám átalakítása 32 bitessé) ===
 +{{anchor:itd}}
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +29. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image018_0000.jpg?332x146|S7 ITD operation}}\\ 30. ábra Példaprogram
 +
 +=== DTR (32 bites egész szám átalakítása IEEE-FP törtszámmá) ===
 +{{anchor:dtr}}
 +Az AKKU1-be töltött 32 bites egész számot IEEE-FP (real) típusúvá alakítja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +30. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image020_0000.jpg?302x89|S7 DTR operation}}\\ 31. ábra Példaprogram
 +
 +=== INVI (egyes inklementer képzés 16 bites egész számon) ===
 +{{anchor:invi}}
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +31. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image022_0000.jpg?302x89|S7 INVI operation}}\\ 32. ábra Példaprogram
 +
 +=== INVD (egyes inklementer képzés 32 bites egész számon) ===
 +{{anchor:invd}}
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +32. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image024_0000.jpg?338x91|S7 INVD operation}}\\ 33. ábra Példaprogram
 +
 +=== NEGI (16 bites egész szám negálása) ===
 +{{anchor:negi}}
 +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 [[#a1a0|A1]], A0, OS és OV státuszbiteket állítja az eljárás.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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:s7:soft_s7_awl_utasitaskeszlet_clip_image026_0000.jpg?346x91|S7 NEGI operation}}\\ 34. ábra Példaprogram
 +
 +=== NEGD (32 bites egész szám negálása) ===
 +{{anchor:negd}}
 +A eljárás egy 32 bites egész számot beolvassa ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) az AKKU1-ből és negálja. Az eredményt az AKKU1-be tárolja. Az [[#a1a0|A1]], A0, OS és OV státuszbiteket állítja az eljárás.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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:s7:soft_s7_awl_utasitaskeszlet_clip_image028_0000.jpg?302x89|S7 NEGD operation}}\\ 35. ábra Példaprogram
 +
 +=== NEGR (IEEE-FP törtszám negálása) ===
 +{{anchor:negr}}
 +A eljárás egy 32 bites törtszámot ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) beolvassa az AKKU1-ből és negálja. Az eredményt az AKKU1-be tárolja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +37. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image030_0000.jpg?338x63|S7 NEGR operation}}\\ 36. ábra Példaprogram
 +
 +=== TAW (bájtok cseréje az AKKU1-L-ben) ===
 +{{anchor:taw}}
 +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.\\  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +38. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image032.gif?603x87|S7 TAW operation logic}}\\ 51. ábra TAW
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image034_0000.jpg?343x106|S7 TAW operation}}\\ 37. ábra Példaprogram
 +
 +=== TAD (bájtok cseréje az AKKU1-ben) ===
 +{{anchor:tad}}
 +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.\\  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +39. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image036.gif?603x90|S7 TAD operation logic}}\\ 38. ábra TAD
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image038_0000.jpg?367x106|S7 TAD operation}}\\ 39. ábra Példaprogram
 +
 +=== RND (törtszám kerekítése egész számra) ===
 +{{anchor:rnd}}
 +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:s7:valtozotipusok_es_ob_k#dint|DINT]] típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | x | x | - | - | - | - |
 +
 +40. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image040_0000.jpg?333x84|S7 RND operation}}\\ 40. ábra Példaprogram
 +
 +=== 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:s7:valtozotipusok_es_ob_k#dint|DINT]] típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | x | x | - | - | - | - |
 +
 +41. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image042_0000.jpg?333x84|S7 RND+ operation}}\\ 41. ábra Példaprogram
 +
 +=== 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:s7:valtozotipusok_es_ob_k#dint|DINT]] típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | x | x | - | - | - | - |
 +
 +42. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image044_0000.jpg?333x84|S7 RND- operation}}\\ 42. ábra Példaprogram
 +
 +=== TRUNC (törtszám csonkolása egész számra) ===
 +{{anchor:trunc}}
 +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:s7:valtozotipusok_es_ob_k#dint|DINT]] típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | x | x | - | - | - | - |
 +
 +43. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image046_0000.jpg?333x84|S7 TRUNC operation}}\\ 43. ábra Példaprogram
 +
 +===== 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, és ezek az alábbiak:
 +
 +^ [[#fr|FR]] | Freigabe Zähler | Számláló feloldása |
 +^ [[#l_zaehler|L]] | Lade aktuellen Zählwert als Ganzzahl in AKKU 1 | Pillanatnyi számlálóérték betöltése AKKU1-be, egész szám formátumban |
 +^ [[#lc_zaehler|LC]] | Lade aktuellen Zählwert als BCD in AKKU 1 | Pillanatnyi számlálóérték betöltése AKKU1-be, [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] formátumban |
 +^ [[#r_zaehler|R]] | Rücksetze Zähler | Számláló nullázása |
 +^ [[#s_zaehler|S]] | Setze Zählerstartwert | Számláló beállítása |
 +^ [[#zv_zaehler|ZV]] | Zählen vorwärts | Számláló előre |
 +^ [[#zr_zaehler|ZR]] | Zählen rückwärts | Számláló hátra |
 +
 +44. Táblázat Számláló műveletek
 +
 +=== FR (számláló feloldása) ===
 +{{anchor:fr}}
 +Formátuma: **FR <számláló>**
 +
 +A számláló feloldása akkor történik meg, ha az utasítás előtt a „[[#vke|VKE]]” értéke „0”-ról „1”-re vált. Normál használat és a számláló beállítása esetén a feloldás nem szükséges.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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:z_l}}
 +Formátuma: **L <számlá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 ([[#vke|VKE]] = 0).
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +46. Táblázat Státusz szó változásai
 +
 +=== LC (számlálóérték betöltése BCD-ként) ===
 +{{anchor:z_lc}}
 +Formátuma: **LC <számláló>**
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +47. Táblázat Státusz szó változásai
 +
 +=== R (számláló nullázása) ===
 +{{anchor:z_r}}
 +Formátuma: **R <számláló>**
 +
 +„0” értéket tölt be a számlálóba, ha a [[#vke|VKE]] = 1.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | - | - | 0 |
 +
 +48. Táblázat Státusz szó változásai
 +
 +=== S (számláló beállítása) ===
 +{{anchor:z_s}}
 +Formátuma: **S <számláló>**
 +
 +Betölti az AKKU1-L tartalmát a számlálóba, ha a [[#vke|VKE]] „0”-ról „1”-re változik. A számláló értéket „0” és „999” között kell megadni, [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] formátumban.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | - | - | 0 |
 +
 +49. Táblázat Státusz szó változásai
 +
 +=== ZV (számláló előre) ===
 +{{anchor:zv}}
 +Formátuma: **ZV <számláló>**
 +
 +A számláló értékét „1”-gyel növeli, amennyiben a [[#vke|VKE]] értéke „0”-ról „1”-re vált, és a számláló értéke nem érte el a „999” értéket. Amennyiben a számláló elérte a felső határértékét, a [[#vke|VKE]] változása a számlálóra hatástalan marad. A „999” elérése esetén a művelet nem állítja az (OV) túlcsordulás bitet.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | - | - | 0 |
 +
 +50. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002_0001.jpg|S7 ZV operation}}\\ 
 +44. ábra ZV példaprogram
 +
 +<code>
 +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 "0" értéken áll
 += A 11.0   // a kimenet "0"-ra vált, egyébként "1"
 +
 +L Z 12
 +</code>
 +3. Példaprogram ZV
 +
 +=== ZR (számláló hátra) ===
 +{{anchor:zr}}
 +Formátuma: **ZR <számláló>**
 +
 +A számláló értékét „1”-gyel csökkenti, amennyiben a [[#vke|VKE]] értéke „0”-ról „1”-re vált, és a számláló értéke nem érte el a „0” értéket. Amennyiben a számláló elérte a alsó határértékét, a [[#vke|VKE]] változása a számlálóra hatástalan marad, a számláló nem használja a negatív értéktartományt.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | - | - | 0 |
 +
 +51. Táblázat Státusz szó változásai
 +
 +<code>
 +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 "0" értéket
 += A 11.0   // a kimenet "0"-ra vált, egyébként "1"
 +
 +L Z 12
 +</code>
 +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:
 +
 +^ [[#auf|AUF]] | Datenbaustein öffnen | Adatblokk (DB) nyitása |
 +^ [[#tdb|TDB]] | Tausche Global-DB und Instanz-DB | Globális DB és instant DB cseréje |
 +^ [[#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:auf}}
 +Formátuma: **AUF <Adatblokk>**
 +
 +  * 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.
 +
 +<code>
 +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
 +</code>
 +5. Példaprogram AUF
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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, hogy az OB121 lekezeli a hibát, de az új funkciónk akkor is furcsa dolgokat művel. Ilyenkor érdemes a ránézni a diagnózisra, mert ha a lenti hibaüzenetet találja ott, biztos lehet a hiba okában: elfelejtette letölteni a DB-t.
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image004_0001.jpg?418x330|DB not found error, than PLC stop}}\\ 45. ábra DB nincs letöltve hiba
 +
 +=== TDB (Globális DB és instant DB cseréje) ===
 +{{anchor:tdb}}
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +55. Táblázat Státusz szó változásai
 +
 +<code>
 +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.
 +</code>
 +6. Példaprogram L DBLG
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image006_0001.jpg?301x100|S7 L DBLG operation}}\\ 46. ábra Példaprogram futás közben
 +
 +=== L DBNO (Globális DB számának betöltése az AKKU1-be) ===
 +{{anchor:l_dbno}}
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +56. Táblázat Státusz szó változásai
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image008_0002.jpg?345x78|S7 L DBNO operation}}\\ 47. ábra Példaprogram
 +
 +=== L DILG (Instant DB hosszának betöltése az AKKU1-be) ===
 +{{anchor:l_dilg}}
 +Formátuma: **L DILG**
 +
 +A nyitott instant DB hosszát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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:l_dino}}
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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, OB-vel kezelni, a „stop” elkerülhetetlen. Gyakran előfordul, hogy egymás után egy eljárást copy -- paste technikával sokszorosítunk.\\ 
 +Amennyiben egy ugrásban a címkét nem sikerül átírni a sajátjára, hanem a korábbi címkén marad, a PLC „stop”-ba fog szaladni, ami például egy erőműi rendszer esetén túlmutat a kínos programozói elírás fogalmán.\\ 
 +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”.
 +
 +<code>
 +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
 +</code>
 +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  („:”) karakterrel kell kezdeni. A címkével kell kezdeni azt a sort, ahol a program futása folytatódik.
 +
 +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|
 +^ [[#spa|SPA]] | Springe absolut | Abszolút ugrás |
 +^ [[#spl|SPL]] | Sprungleiste | Ugráslista |
 +^ [[#spb|SPB]] | Springe, wenn [[#vke|VKE]] = 1 | Ugrás, ha a [[#vke|VKE]] = 1 |
 +^ [[#spbn|SPBN]] | Springe, wenn [[#vke|VKE]] = 0 | Ugrás, ha a [[#vke|VKE]] = 0 |
 +^ [[#spbb|SPBB]] | Springe, wenn [[#vke|VKE]] = 1 und rette [[#vke|VKE]] ins BIE | Ugrás, ha a [[#vke|VKE]] = 1, és menti a [[#vke|VKE]]-t a BIE-be |
 +^ [[#spbnb|SPBNB]] | Springe, wenn [[#vke|VKE]] = 0 und rette [[#vke|VKE]] ins BIE | Ugrás, ha a [[#vke|VKE]] = 0, és menti a [[#vke|VKE]]-t a BIE-be |
 +^ [[#spbi|SPBI]] | Springe, wenn BIE = 1 | Ugrás, ha a BIE = 1 |
 +^ [[#spbin|SPBIN]] | Springe, wenn BIE = 0 | Ugrás, ha a BIE = 0 |
 +^ [[#spo|SPO]] | Springe, wenn OV = 1 | Ugrás, ha az OV = 1 |
 +^ [[#_SPS_(Ugrás,_ha_az OS = 1)|SPS]] | Springe, wenn OS = 1 | Ugrás, ha az OS = 1 |
 +^ [[#spz|SPZ]] | Springe, wenn Eredmény = 0 | Ugrás, ha az eredmény = 0 |
 +^ [[#spn|SPN]] | Springe, wenn Eredmény <> 0 | Ugrás, ha az eredmény <> 0 |
 +^ [[#spp|SPP]] | Springe, wenn Eredmény > 0 | Ugrás, ha az eredmény > 0 |
 +^ [[#spm|SPM]] | Springe, wenn Eredmény < 0 | Ugrás, ha az eredmény < 0 |
 +^ [[#sppz|SPPZ]] | Springe, wenn Eredmény >= 0 | Ugrás, ha az eredmény >= 0 |
 +^ [[#spmz|SPMZ]] | Springe, wenn Eredmény <= 0 | Ugrás, ha az eredmény <= 0 |
 +^ [[#spu|SPU]] | Springe, wenn Eredmény ungültig | Ugrás, ha érvénytelen az eredmény |
 +
 +59. Táblázat Ugrás műveletek összefoglalása
 +
 +A [[#vke|VKE]], [[#bie|BIE]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPA (Abszolút ugrás) ===
 +{{anchor:spa}}
 +Formátuma: **SPA <címke>**
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +60. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code>
 +8. Példaprogram SPA
 +
 +=== SPL (Ugráslista) ===
 +{{anchor:spl}}
 +Formátuma: **SPL <címke>**
 +
 +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, melyek közül az a számú kerül meghívásra, mely érték az AKKU1-L-L-ben van (0 -- 255). Ha az AKKU1-L-L nagyobb számot tartalmaz, mint amennyi SPA felsorolásra került, akkor az ugrás az SPL-nél definiált címkére történik.
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +61. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code>
 +9. Példaprogram SPL
 +
 +=== SPB (Ugrás, ha a VKE = 1) ===
 +{{anchor:spb}}
 +Formátuma: **SPB <címke>**
 +
 +A [[#vke|VKE]] = 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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | 1 | 1 | 0 |
 +
 +62. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +10. Példaprogram SPB
 +
 +A [[#vke|VKE]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPBN (Ugrás, ha a VKE = 0) ===
 +{{anchor:spbn}}
 +Formátuma: **SPBN <címke>**
 +
 +A [[#vke|VKE]] = 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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | 1 | 1 | 0 |
 +
 +63. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +11. Példaprogram SPBN
 +
 +A [[#vke|VKE]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPBB (Ugrás, ha a VKE = 1, és menti a VKE-t a BIE-be) ===
 +{{anchor:spbb}}
 +Formátuma: **SPBB <címke>**
 +
 +A [[#vke|VKE]] = 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, a [[#vke|VKE]] állapotot átmásolja a BIE bitbe.
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | x | - | - | - | - | 0 | 1 | 1 | 0 |
 +
 +64. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +12. Példaprogram SPBB
 +
 +A [[#vke|VKE]], [[#bie|BIE]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPBNB (Ugrás, ha a VKE = 0, és menti a VKE-t a BIE-be) ===
 +{{anchor:spbnb}}
 +Formátuma: **SPBNB <címke>**
 +
 +A [[#vke|VKE]] = 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, a [[#vke|VKE]] állapotot átmásolja a BIE bitbe.
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | x | - | - | - | - | 0 | 1 | 1 | 0 |
 +
 +65. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +13. Példaprogram SPBNB
 +
 +A [[#vke|VKE]], [[#bie|BIE]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPBI (Ugrás, ha a BIE = 1) ===
 +{{anchor:spbi}}
 +Formátuma: **SPBI <címke>**
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | 1 | - | 0 |
 +
 +66. Táblázat Státusz szó változásai
 +
 +=== SPBIN (Ugrás, ha a BIE = 0) ===
 +{{anchor:spbin}}
 +Formátuma: **SPBIN <címke>**
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | 1 | - | 0 |
 +
 +67. Táblázat Státusz szó változásai
 +
 +=== SPO (Ugrás, ha az OV = 1) ===
 +{{anchor:spo}}
 +Formátuma: **SPO <címke>**
 +
 +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ó, a következő -- nem túlcsordulásos -- művelet az OV bitet „0”-ra állítja.
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +68. Táblázat Státusz szó változásai
 +
 +<code>
 +L 23333       // túlcsordulás képzése
 +L 234
 +*I            // túlcsordulás OV=1
 +T MW 22
 +
 +// L 12       // kikommentelve, mert itt
 +// L 14       // nincs túlcsordulás, az
 +// *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 
 +</code>
 +14. Példaprogram SPO
 +
 +A [[#vke|VKE]], [[#bie|BIE]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPS (Ugrás, ha az OS = 1) ===
 +{{anchor:sps}}
 +Formátuma: **SPS <címke>**
 +
 +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ó, a következő -- nem túlcsordulásos -- művelet az OV bitet „0”-ra állítja.
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +69. Táblázat Státusz szó változásai
 +
 +<code>
 +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, az
 +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
 +</code>
 +15. Példaprogram SPS
 +
 +A [[#vke|VKE]], [[#bie|BIE]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPZ (Ugrás, ha az eredmény = 0) ===
 +{{anchor:spz}}
 +Formátuma: **SPZ <címke>**
 +
 +Az [[#a1a0|A1]] = 0 és A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az [[#a1a0|A1]] = 0 és A0 =0 abban az esetben következik be, ha a megelőző összehasonlítási művelet eredménye egyenlőség (lásd [[#a1a0|A1]], A0 státuszbitek jelentése).
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +70. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code>
 +16. Példaprogram SPZ
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPN (Ugrás, ha az eredmény <> 0) ===
 +{{anchor:spn}}
 +Formátuma: **SPN <címke>**
 +
 +Az [[#a1a0|A1]] = 0/A0 = 1 vagy [[#a1a0|A1]] = 1/A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az [[#a1a0|A1]] = 0/A0 = 1 vagy [[#a1a0|A1]] = 1/A0 = 0 állapot abban az esetben következik be, ha a megelőző összehasonlítási művelet eredménye egyenlőtlenség (lásd [[#a1a0|A1]], A0 státuszbitek jelentése).
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +71. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +17. Példaprogram SPN
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPP (Ugrás, ha az eredmény > 0) ===
 +
 +Formátuma: **SPP <címke>**
 +{{anchor:spp}}
 +Az [[#a1a0|A1]] = 1 és A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az [[#a1a0|A1]] = 1 és A0 =0 abban az esetben következik be, ha az AKKU1 < AKKU2 (lásd 13. Táblázat [[#a1a0|A1]], A0 státuszbitek jelentése).
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +72. Táblázat Státusz szó változásai
 +
 +<code>
 +L 124       // AKKU2
 +L 120       // AKKU1
 +==I 
 +SPP ide     // ha AKKU2 > AKKU1, ugrás 
 +
 +SPA tov     //egyébként, tov
 +
 +ide: NOP 0
 +
 +SET 
 += M 123.0   // ha a feltétel igaz, állítja a bitet
 +
 +tov: NOP 0  // tov
 +</code>
 +18. Példaprogram SPP
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPM (Ugrás, ha az eredmény < 0) ===
 +{{anchor:spm}}
 +Formátuma: **SPM <címke>**
 +
 +Az [[#a1a0|A1]] = 0 és A0 = 1 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az [[#a1a0|A1]] = 0 és A0 =1 abban az esetben következik be, ha az AKKU1 > AKKU2 (lásd 13. Táblázat [[#a1a0|A1]], A0 státuszbitek jelentése).
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +73. Táblázat Státusz szó változásai
 +
 +<code>
 +L 100        // AKKU2
 +L 120        // AKKU1
 +==I 
 +SPM ide      // ha AKKU2 < AKKU1, ugrás 
 +
 +SPA tov      //egyébként, tov
 +
 +ide: NOP 0
 +
 +SET 
 += M 123.0    // ha a feltétel igaz, állítja a bitet
 +
 +tov: NOP 0   // tov
 +</code>
 +19. Példaprogram SPM
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPPZ (Ugrás, ha az eredmény >= 0) ===
 +{{anchor:sppz}}
 +Formátuma: **SPPZ <címke>**
 +
 +Az [[#a1a0|A1]] = 0/A0 = 0 vagy [[#a1a0|A1]] = 1/A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. A fenti állapot abban az esetben következik be, ha az AKKU1 <= AKKU2 (lásd 13. Táblázat [[#a1a0|A1]], A0 státuszbitek jelentése).
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +74. Táblázat Státusz szó változásai
 +
 +<code>
 +L 124          // AKKU2
 +L 120          // AKKU1
 +==I 
 +SPPZ ide       // ha AKKU2 >= AKKU1, ugrás 
 +
 +SPA tov        //egyébként, tov
 +
 +ide: NOP 0
 +
 +SET 
 += M 123.0      // ha a feltétel igaz, állítja a bitet
 +
 +tov: NOP 0     // tov
 +</code>
 +20. Példaprogram SPPZ
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPMZ (Ugrás, ha az eredmény < 0) ===
 +{{anchor:spmz}}
 +Formátuma: **SPMZ <címke>**
 +
 +Az [[#a1a0|A1]] = 0/A0 = 0 vagy [[#a1a0|A1]] = 0/A0 = 1 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. A fenti állapot abban az esetben következik be, ha az AKKU1 >= AKKU2 (lásd 13. Táblázat [[#a1a0|A1]], A0 státuszbitek jelentése).
 +
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +75. Táblázat Státusz szó változásai
 +
 +<code>
 +L 100       // AKKU2
 +L 120       // AKKU1
 +==I 
 +SPM ide     // ha AKKU2 <= AKKU1, ugrás 
 +
 +SPA tov     //egyébként, tov
 +
 +ide: NOP 0
 +
 +SET 
 += M 123.0   // ha a feltétel igaz, állítja a bitet
 +
 +tov: NOP 0  // tov
 +</code>
 +21. Példaprogram SPMZ
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja.
 +
 +=== SPU (Ugráaacute;s, ha érvénytelen az eredmény) ===
 +{{anchor:spu}}
 +Formátuma: **SPU <címke>**
 +
 +Az [[#a1a0|A1]] = 1 és A0 = 1 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az [[#a1a0|A1]] = 1 és A0 =1 abban az esetben következik be, ha az ugrást megelőző művelet érvénytelen (lásd [[#a1a0|A1]], A0 státuszbitek jelentése).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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +
 +76. Táblázat Státusz szó változásai
 +
 +<code>
 +L 100           // AKKU2
 +L 0             // AKKU1
 +/I 
 +SPU ide         // érvénytelen művelet esetén ugrás 
 +
 +SPA tov         //egyébként, tov
 +
 +ide: NOP 0
 +
 +SET 
 += M 123.0       // a nullával való osztás érvénytelen
 +
 +tov: NOP 0      // tov
 +</code>
 +22. Példaprogram SPU
 +
 +Az [[#a1a0|A1]], A0 státuszbitek leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== LOOP (hurok) ===
 +{{anchor:loop}}
 +Formátuma: **LOOP <címke>**
 +
 +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, OB-vel kezelni, a „stop” elkerülhetetlen.\\ Gyakran előfordul, hogy egymás után egy eljárást copy – paste technikával sokszorosítunk. Amennyiben egy ugrásban a címkét nem sikerül átírni a sajátjára, hanem a korábbi címkén marad, a PLC „stop”-ba fog szaladni, ami például egy erőműi rendszer esetén túlmutat a kínos programozói elírás fogalmán.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +77. Táblázat Státusz szó változásai
 +
 +<code>
 +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 "látszik"
 +              // a státuszban, akkor új Netzwerk-be kell másolni ezeket.
 +</code>
 +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, az AKKU4 tartalma nem változik.
 +
 +^jelölés ^németül ^magyarul ^
 +|[[#+i|+I]]|Addiere AKKU 1 und 2 als Ganzzahl (16 Bit) |AKKU1 és AKKU2 összeadása 16 bites egész számként| 
 +|[[#-i|-I]]|Subtrahiere AKKU 1 von 2 als Ganzzahl (16 Bit) |AKKU1 kivonása AKKU2-ből 16 bites egész számként| 
 +|[[#*i|*I]]|Multipliziere AKKU 1 und 2 als Ganzzahl (16 Bit) |AKKU1 és AKKU2 összeszorzása 16 bites egész számként| 
 +|[[#/i|/I]]|Dividiere AKKU 2 durch 1 als Ganzzahl (16 Bit) |AKKU2 osztása AKKU1-gyel 16 bites egész számként| 
 +|[[#_+_|+]]|Addiere Ganzzahlkonstante (16, 32 Bit) |Egész szám konstans hozzáadása (16, 32 bit)| 
 +|[[#+d|+D]]|Addiere AKKU 1 und 2 als Ganzzahl (32 Bit) |AKKU1 és AKKU2 összeadása 32 bites egész számként| 
 +|[[#-d|-D]]|Subtrahiere AKKU 1 von 2 als Ganzzahl (32 Bit) |AKKU1 kivonása AKKU2-ből 32 bites egész számként| 
 +|[[#*d|*D]]|Multipliziere AKKU 1 und 2 als Ganzzahl (32 Bit) |AKKU1 és AKKU2 összeszorzása 32 bites egész számként| 
 +|[[#/d|/D]]|Dividiere AKKU 2 durch 1 als Ganzzahl (32 Bit) |AKKU2 osztása AKKU1-gyel 32 bites egész számként| 
 +|[[#mod|MOD]]|Divisionsrest Ganzzahl (32 Bit) |Maradék képzés 32 bites egész számon 78. Táblázat Egész szám műveletek|
 +78. Táblázat Egész szám műveletek
 +
 +Az egész szám műveletek befolyásolják az
 +
 +[[#a1a0|A1]], A0, [[#ov_bit|OV]] és [[#os_bit|OS]] [[#statusz_szo|státuszbitek]]et, az alábbi táblázat szerint. 
 +
 +^hossz ^Érvényesség, érvényes műveleti tartomány esetén  ^A1 ^A0 ^OV ^OS ^
 +|      | 0 (nulla)                                       |0  |0  |0  |*  | 
 +|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, érvénytelen műveleti tartomány esetén ^A1 ^A0 ^OV ^OS ^
 +|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, kivonásnál\\ Eredmény > 32 767 (pozitív szám)\\ Eredmény > 2 147 483 647 (pozitív szám) |0 |1 |1 |1 |  
 +|16 bit:\\ 32 bit: |Felső határérték feletti eredmény szorzásnál, osztásnál\\ Eredmény > 32 767 (pozitív szám)\\ Eredmény > 2 147 483 647 (pozitív szám) |1 |0 |1 |1 |  
 +|16 bit:\\ 32 bit: |Alsó határérték alatti eredmény összeadásnál, kivonásnál\\ Eredmény < -32 768 (negatív szám)\\ Eredmény < -2 147 483 648 (negatív szám) |1 |0 |1 |1 |  
 +| |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 [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== +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:s7:valtozotipusok_es_ob_k#int|INT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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
 + 
 +<code>
 +L MW 10        // AKKU2
 +L MW 12        // AKKU1
 ++I             // összeadás
 +T MW 14        // eredmény -> AKKU1-be
 +</code>
 +24. Példaprogram +I
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== -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:s7:valtozotipusok_es_ob_k#int|INT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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 
 +
 +<code>
 +L MW 10      // AKKU2
 +L MW 12      // AKKU1
 +-I           // kivonás
 +T MW 14      // eredmény -> AKKU1-be
 +</code>
 +25. Példaprogram -I
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== *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:s7:valtozotipusok_es_ob_k#int|INT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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  > 32767 |1 |0 |1 |1 |
 +|Szorzat < -32768 |0 |1 |1 |1 |
 +85. Táblázat A1, A0, OV, OS státuszbitek képzése
 + 
 +<code>
 +L MW 10      // AKKU2
 +L MW 12      // AKKU1
 +*I           // szorzás
 +T MW 14      // eredmény -> AKKU1-ből
 +</code>
 +26. Példaprogram *I
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== /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:s7:valtozotipusok_es_ob_k#int|INT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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
 + 
 +<code>
 +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
 +</code>
 +27. Példaprogram /I
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002_0002.jpg?397x183|S7 /I integer operation}}\\ 48. ábra Példaprogram /I státusz
 +
 +^ ^ ^ ^ ^
 +|Osztott érték   |(AKKU2)  |hex: fe  |dec: 254 |
 +|Osztó érték     |(AKKU1)  |hex: 5   |dec: 5 |
 +|Osztási eredmény |(AKKU1-L) |hex: 32  |dec: 50 |
 +|Osztási maradék  |(AKKU1-H)  |hex: 4  |dec: 4 |
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== + (Egész szám konstans hozzáadása (16, 32 bit)) ===
 +Formátuma: **+ <egész szám**
 +
 +[[#_Konstansok_megadása|konstans formátum]]>+ <egész szám
 +
 +**[[#_Konstansok_megadása|konstans formátum]]**>\\ Az egész szám konstans az AKKU1 értékéhez kerül hozzáadásra, az eredmény az AKKU1-ben tárolódik. A művelet a státusz bitek értékét nem befolyásolja.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, az AKKU4 tartalma nem változik.
 +
 ++ <16 bites egész szám
 +
 +**[[#_Konstansok_megadása|konstans formátum]]**>\\ A 16 bites egész szám konstans az AKKU1-L értékéhez kerül hozzáadásra (a -32768 - +32767 értéktartományban), az eredmény az AKKU1-L-ben tárolódik. A művelet a státusz bitek értékét nem befolyásolja.Két akku-s CPU-s esetén az AKKU2 és AKKU1-H 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, az AKKU4 és AKKU1-H tartalma nem változik.
 +
 ++ <32 bites egész szám
 +
 +**[[#_Konstansok_megadása|konstans formátum]]**>\\ A 32 bites egész szám konstans az AKKU1 értékéhez kerül hozzáadásra (-2.147.483.648 - 2.147.483.647 értéktartományban), az eredmény az AKKU1-ben tárolódik. A művelet a státusz bitek értékét nem befolyásolja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +88. Táblázat Státusz szó változásai
 +
 +<code>
 +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#40000    // 32 bites egész konstans
 +T MD 200     // eredmény
 +</code>
 +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:s7:valtozotipusok_es_ob_k#dint|DINT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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
 +
 +<code>
 +L MD 8    // AKKU2
 +L MD 12   // AKKU1
 ++D        // összeadás
 +T MD 16   // eredmény -> AKKU1-be
 +</code>
 +29. Példaprogram +D
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== -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:s7:valtozotipusok_es_ob_k#dint|DINT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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
 +
 +<code>
 +L MD 8     // AKKU2
 +L MD 12    // AKKU1
 +-D         // kivonás
 +T MD 16    // eredmény -> AKKU1-be
 +</code>
 +30. Példaprogram -D
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== *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:s7:valtozotipusok_es_ob_k#int|INT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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  > 2.147.483.647 |0 |0 |1 |1 |
 +|Szorzat  < -2.147.483.648 |0 |1 |1 |1 |
 +94. Táblázat A1, A0, OV, OS státuszbitek képzése
 +
 +<code>
 +L MD 8      // AKKU2
 +L MD 12     // AKKU1
 +*D          // szorzás
 +T MW 16     // eredmény -> AKKU1-be
 +</code>
 +31. Példaprogram *D
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== /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, a maradékot nem. (A
 +
 +[[#mod|MOD]] művelettel kaphatja meg a maradékot).\\ Az akku-k tartalmát a művelet egész számként ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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
 + 
 +<code>
 +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
 +</code>
 +32. Példaprogram /D
 +
 +^ ^ ^ ^
 +|Osztott érték     |(AKKU2)   |dec: 10 000 |
 +|Osztó érték       |(AKKU1)   |dec: 3 |
 +|Osztási eredmény       |(AKKU1)   |dec: 3 333 |
 +|Osztási maradék         |nem szükséges | |
 +
 +A [[#vke|VKE]], [[#a1a0|A1, A0]], [[#ov_bit|OV]], [[#os_bit|OS]] leírását a [[#statusz_szo|státusz szó]] fejezetben találja. 
 +
 +=== MOD (AKKU2 osztási maradéka AKKU1-gyel 32 bites egész számként) === 
 +{{anchor:mod}}
 +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, az eredményt nem. (A
 +
 +[[#/d|/D]] művelettel kaphatja meg az eredményt).\\ Az akku-k tartalmát a művelet egész számként ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]] formátumként) értelmezi. A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 + ^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 + 97. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +33. Példaprogram MOD
 +
 +===== Törtszám műveletek =====
 +
 +^Művelet^Német leírás^Magyar leírás|
 +|[[#+r|+R]]|Addiere AKKU 1 und 2 als Gleitpunktzahl (32 Bit)|AKKU1 és AKKU2 összeadása 32 bites törtszámként|
 +|[[#-r|-R]]|Subtrahiere AKKU 1 von 2 als Gleitpunktzahl (32 Bit)|AKKU1 kivonása AKKU2-ből 32 bites törtszámként|
 +|[[#*r|*R]]|Multipliziere AKKU 1 und 2 als Gleitpunktzahl (32 Bit)|AKKU1 és AKKU2 összeszorzása 32 bites törtszámként|
 +|[[#/r|/R]]|Dividiere AKKU 2 durch 1 als Gleitpunktzahl (32 Bit)|AKKU2 osztása AKKU1-gyel 32 bites törtszámként|
 +|[[#abs|ABS]]|Absolutwert einer Gleitpunktzahl (32 Bit, IEEE-FP)|32 bites törtszám abszolút értéke|
 +|[[#sqr|SQR]]|Bilden des Quadrats einer Gleitpunktzahl (32 Bit)|32 bites törtszám négyzete|
 +|[[#sqrt|SQRT]]|Bilden der Quadratwurzel einer Gleitpunktzahl (32 Bit)|32 bites törtszám köbgyöke|
 +|[[#exp|EXP]]|Bilden des Exponentialwerts einer Gleitpunktzahl (32 Bit)|32 bites törtszám exponenciális értéke|
 +|[[#ln|LN]]|Bilden des natürlichen Logarithmus einer Gleitpunktzahl (32 Bit)|32 bites törtszám természetes logaritmusa|
 +|[[#sin|SIN]]|Bilden des Sinus eines Winkels als Gleitpunktzahlen (32 Bit)|32 bites törtszám szinusz értéke|
 +|[[#cos|COS]]|Bilden des Cosinus eines Winkels als Gleitpunktzahlen (32 Bit)|32 bites törtszám koszinusz értéke|
 +|[[#tan|TAN]]|Bilden des Tangens eines Winkels als Gleitpunktzahlen (32 Bit)|32 bites törtszám tangens értéke|
 +|[[#asin|ASIN]]|Bilden des Arcussinus einer Gleitpunktzahl (32 Bit)|32 bites törtszám arkusz-szinusz értéke|
 +|[[#acos|ACOS]]|Bilden des Arcuscosinus einer Gleitpunktzahl (32 Bit)|32 bites törtszám arkusz-koszinusz értéke|
 +|[[#atan|ATAN]]|Bilden des Arcustangens einer Gleitpunktzahl (32 Bit)|32 bites törtszám arkusz-tangens értéke|
 +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:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - | 
 +102. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +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:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként).A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - | 
 +104. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +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:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként).A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - | 
 +106. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +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:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként).A művelet a [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - | 
 +108. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code>
 +37. Példaprogram /R
 +
 +=== ABS (32 bites törtszám abszolút értéke) ===
 +{{anchor:abs}}
 +Az ABS a 32 bites (IEEE-FP)  AKKU1 abszolút értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A művelet a státuszbitek értékét nem befolyásolja. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +109. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +38. Példaprogram ABS
 +
 +=== SQR (32 bites törtszám négyzete) === 
 +{{anchor:sqr}}
 +Az SQR a 32 bites (IEEE-FP)  AKKU1 négyzetértékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +111. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +
 +39. Példaprogram SQR
 +
 +=== SQRT (32 bites törtszám négyzetgyöke) === 
 +{{anchor:sqrt}}
 +Az SQRT a 32 bites (IEEE-FP)  AKKU1 négyzetgyökét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). Az AKKU1 tartalma csak egy pozitív szám vagy nulla lehet. A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +113. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code> 
 +40.Példaprogram SQRT
 + 
 +=== EXP (32 bites törtszám exponenciális értéke) === 
 +{{anchor:exp}}
 +Az EXP a 32 bites (IEEE-FP)  AKKU1 exponenciális értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +115. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +41. Példaprogram EXP
 + 
 +=== LN (32 bites törtszám természetes logaritmusa) === 
 +{{anchor:ln}}
 +Az LN a 32 bites (IEEE-FP)  AKKU1 természetes alapú logaritmusát állítja. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). Az AKKU1 tartalma csak egy pozitív szám lehet. A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +117. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code> 
 +42. Példaprogram LN
 + 
 +=== SIN (32 bites törtszám szinusz értéke) === 
 +A SIN a 32 bites (IEEE-FP)  AKKU1 szinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +119. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code> 
 +43. Példaprogram SIN
 +
 +=== COS (32 bites törtszám koszinusz értéke) === 
 +{{anchor:cos}}
 +A COS a 32 bites (IEEE-FP)  AKKU1 koszinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +121. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code>
 +44. Példaprogram COS 
 +
 +=== TAN (32 bites törtszám tangens értéke) === 
 +{{anchor:tan}}
 +A TAN a 32 bites (IEEE-FP)  AKKU1 tangens értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +123. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +45. Példaprogram TAN
 +
 +=== ASIN (32 bites törtszám arkusz szinusz értéke) === 
 +{{anchor:asin}}
 +Az  ASIN a 32 bites (IEEE-FP)  AKKU1 arkusz szinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). Az AKKU1 tartalma -1 < érték < 1 lehet. A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +125. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code> 
 +46. Példaprogram ASIN
 +
 +=== ACOS (32 bites törtszám arkusz koszinusz értéke) === 
 +{{anchor:acos}}
 +Az ACOS a 32 bites (IEEE-FP)  AKKU1 arkusz koszinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). Az AKKU1 tartalma -1 < érték < 1 lehet. A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | x | - | - | - | - |
 +127. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code> 
 +47. Példaprogram ACOS
 +
 +=== ATAN (32 bites törtszám arkusz tangens értéke) === 
 +{{anchor:atan}}
 +Az ATAN a 32 bites (IEEE-FP)  AKKU1 arkusz tangens értékét veszi. Az eredmény az AKKU1-be kerül, törtszám ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre ([[hu:s7:valtozotipusok_es_ob_k#real|REAL]]-ként). A [[#vke|VKE]] bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.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, az AKKU4 tartalma nem változik.
 +
 +^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
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +129. Táblázat Státusz szó változásai
 +
 +<code>
 +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 
 +</code> 
 +48. Példaprogram ATAN
 +
 +===== Betöltés/mozgatás műveletek =====
 +
 +**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<D>|Lade Adreßregister 1 mit Pointer (32 Bit-Format)|1. címregiszter betöltése 32 bites pointerrel|
 +|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<D>|Lade Adreßregister 2 mit Ganzzahl (32 Bit)|2. címregiszter betöltése 32 bites pointerrel|
 +
 +**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<D>|Transferiere Adreßregister 1 nach Zieladresse (32-Bit-Pointer)|1. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre|
 +|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<D>|Transferiere Adreßregister 2 nach Zieladresse (32-Bit-Pointer)|2. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre|
 +|+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:l}}
 +^Művelet^Adattípus^Operandus^Forráscím|
 +|L|[[hu:s7:valtozotipusok_es_ob_k#byte|BYTE]]|E, A, PE, M, L, D|0..65535|
 +|L|[[hu:s7:valtozotipusok_es_ob_k#word|WORD]]|Pointer, paraméter|0..65534|
 +|L|[[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]|0..65532|
 +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.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +132. Táblázat Státusz szó változásai
 +
 +<code>
 +// byte hosszú betöltések
 +L B#16#12             // hex 12 az AKKU1-L-L-be
 +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       // real konstans az AKKU1-be
 +L MD 10               // MD10 az AKKU1-be
 +L DB10.DBD 10         // DB10.DBD10 az AKKU1-be
 +</code> 
 +49. Példaprogram L
 +
 +=== L STW (Státusz szó betöltése az AKKU1-be) === 
 +{{anchor:l_stw}}
 +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, ezért ezt a funkciót PLC függően ellenőrizni kell.   
 +
 +Ellenkező irányú művelete a [[#t_stw|T STW]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +133. Táblázat Státusz szó változásai
 +
 +<code>
 +L STW      // Státusz szó betöltése
 +T MW 10    // átmásolása az MW10-be
 +</code>  
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002_0003.jpg?427x46}}\\ 49. ábra Példaprogram státusza
 +
 +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:lar1}}
 +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 [[#tar1|TAR1]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +109. Táblázat Státusz szó változásai
 +
 +<code>
 +L 360    // konstans 360 az AR1-be
 +LAR1     // AR1 a címregiszter 1-be
 +</code> 
 +51. Példaprogram LAR1
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image004_0002.jpg?384x77}} \\ 50. ábra Példaprogram státusza
 +
 +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, ez szerint 360 bit = 45.0 byte.
 +
 +=== LAR1 <D> (1. címregiszter betöltése 32 bites pointerrel) === 
 +{{anchor:lar1_d}}
 +Címregiszter (1.) feltöltése 32 bites pointer-ként egy duplaszóból ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) vagy pointer konstansból. A művelet a státuszbitek állapotát nem befolyásolja. 
 +
 +Ellenkező irányú művelete a [[#tar1_d|TAR1 <D>]].  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +135. Táblázat Státusz szó változásai
 +
 +<code>
 +LAR1 P#111.3    // direkt pointeres megadás
 +                // vagy
 +L P#133.1       // direkt pointer az MD4-be
 +T MD 4
 +
 +LAR1 MD 4       // MD4 átmásolása az 1. címregiszterbe
 +</code> 
 +52. Példaprogram LAR1 <D>
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image006_0002.jpg?423x103|S7 LAR1 operation}}\\ 51. ábra Példaprogram státusza
 +
 +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, ez szerint 360 bit = 45.0 byte.
 +
 +=== 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 [[#tar1_ar2|TAR1 AR2]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +109. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +53. Példaprogram LAR1 AR2
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image007.jpg?461x258|S7 LAR1 operation}}\\ 52. ábra Példaprogram státusza
 +
 +A fenti programban a konstans 123-et betöltjük 1.címregiszterbe, majd a LAR2 művelettel a 321-et áttöltjük a 2. címregiszterbe. Mivel pointer-ként visszük át a 321-at, így a 8 bites címzést kell alkalmaznunk, ez szerint 321 bit = 40.1 byte. Ugyanígy a 123 bit = 15.3 byte. A LAR1 AR2 –vel az AR2 tartalmát (40.1-et) az AR1-be átmásoljuk. A TAR1 AR2 –vel pedig az AR1 tartalmát (15.3-at) másoljuk át az AR2-be.
 +
 +=== LAR2 (2. címregiszter feltöltése AKKU1-ből) ===
 +{{anchor:lar2}}
 +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 [[#tar2|TAR2]].  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +109. Táblázat Státusz szó változásai
 +
 +<code>
 +L 360   // konstans 360 az AR1-be
 +LAR2    // AR1 a címregiszter 1-be
 +</code> 
 +54. Példaprogram LAR2
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002_0004.jpg?466x62|S7 LAR2 operation}}\\ 53. ábra Példaprogram státusza
 +
 +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, ez szerint 360 bit = 45.0 byte. Az AR1-ben marad a régi érték (40.1).
 +
 +=== 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:s7:valtozotipusok_es_ob_k#dword|DWORD]]) vagy pointer konstansból. A művelet a státuszbitek állapotát nem befolyásolja.
 +
 +Ellenkező irányú művelete a [[#tar2_d|TAR2 <D>]].  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +138. Táblázat Státusz szó változásai
 +
 +<code>
 +LAR2 P#444.2   // direkt pointeres megadás
 +// vagy
 +L P#222.4      // direkt pointer az MD4-be
 +T MD 4
 +
 +LAR2 MD 4      // MD4 átmásolása a 2. címregiszterbe
 +</code> 
 +55. Példaprogram LAR2 <D>
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image004_0003.jpg?512x117|S7 LAR2 operation}}\\ 54. ábra Példaprogram státusza
 +
 +=== T (Mozgatás) === 
 +{{anchor:t}}
 +^Művelet^Adattípus^Operandus^Forráscím|
 +|T|[[hu:s7:valtozotipusok_es_ob_k#byte|BYTE]]|E, A, PE, M, L, D|0..65535|
 +|T|[[hu:s7:valtozotipusok_es_ob_k#word|WORD]]|Pointer, paraméter|0..65534|
 +|T|[[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]|0..65532|
 +
 +A T <operandus> művelet átmozgatja (átmásolja) az AKKU1 tartalmát a célcímre, ha a Master Control Relay be van kapcsolva (MCR = 1). Azt, hogy az AKKU1-ből hány byte hossz tartalom kerül átmásolásra, a célterület hossza határozza meg. A T művelet alkalmas az AKKU1 direkt kimenetre másolására (PA vagy A). A T művelet nem befolyásolja a státusz szó tartalmát.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +140. Táblázat Státusz szó változásai
 +
 +<code>
 +// 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
 +</code> 
 +56. Példaprogram T
 +
 +=== T STW (Státusz szó feltöltése az AKKU1-ből) === 
 +{{anchor:t_stw}}
 +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]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | x | x | x | x | x | x | x | x | x |
 +141. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +57. Példaprogram T STW
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image006_0003.jpg?380x90|S7 L STW operation}}\\ 55. ábra Példaprogram státusza
 +
 +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:tar}}
 +Az 1. és 2. címregiszter cseréje. A művelet a státusz szó tartalmát nem befolyásolja.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +142. Táblázat Státusz szó változásai
 +
 +<code>
 +LAR1 P#111.1   // 1.címregiszter feltöltése
 +LAR2 P#333.3   // 2.címregiszter feltöltése
 +TAR            // a kettő cseréje
 +</code>
 +58. Példaprogram TAR
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image008_0003.jpg?383x84|S7 TAR operation}}\\ 56. ábra Példaprogram státusza
 +
 +=== TAR1 (1. címregiszter mozgatása az AKKU1-be) === 
 +{{anchor:tar1}}
 +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 [[#lar1|LAR1]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +143. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +59. Példaprogram TAR1
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image010_0001.jpg?461x84|S7 TAR1 operation}}\\ 57. ábra Példaprogram státusza
 +
 +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:tar1_d}}
 +(1. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre)  1. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre, 32 bites pointer formátumban. 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átusz szó tartalmát nem befolyásolja.
 +
 +Ellenkező irányú művelete a [[#lar1_d|LAR1 <D>]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +144. Táblázat Státusz szó változásai
 +
 +<code>
 +LAR1 P#111.1   // 1.címregiszter feltöltése
 +TAR1 LD 10     // 1.címregiszter másolása az LD10-be
 +
 +L LD 10        // a másolás ellenőrzése
 +</code>
 +60. Példaprogram TAR1 <D>
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image012_0002.jpg?530x110|S7 TAR1 operation}}\\ 58. ábra Példaprogram státusza
 +
 +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:tar1_ar2}}
 +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 [[#lar1_ar2|LAR1 AR2]]. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +145. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +61. Példaprogram TAR1 AR2
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image013.jpg?461x258|S7 TAR1 operation}}\\ 59. ábra Példaprogram státusza
 +
 +A fenti programban a konstans 123-et betöltjük 1.címregiszterbe, majd a LAR2 művelettel a 321-et áttöltjük a 2. címregiszterbe. Mivel pointer-ként visszük át a 321-at, így a 8 bites címzést kell alkalmaznunk, ez szerint 321 bit = 40.1 byte. Ugyanígy a 123 bit = 15.3 byte. A LAR1 AR2 –vel az AR2 tartalmát (40.1-et) az AR1-be átmásoljuk. A TAR1 AR2 –vel pedig az AR1 tartalmát (15.3-at) másoljuk át az AR2-be.
 +
 +=== TAR2 (2. címregiszter mozgatása az AKKU1-be) ===
 +{{anchor:tar2}}
 +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 [[#_LAR2_(2._címregiszter_feltöltése AK|LAR2]].  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +146. Táblázat Státusz szó változásai
 +
 +<code>
 +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
 +</code> 
 +62. Példaprogram TAR2
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image015.jpg?461x118|S7 TAR2 operation}}\\ 60. ábra Példaprogram státusza
 +
 +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:tar2_d}}
 +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 [[#lar2_d|LAR2 <D>]].  
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +147. Táblázat Státusz szó változásai
 +
 +<code>
 +L 321       // 321 (bit) másolása
 +LAR2        // a 2.címregiszterbe
 +
 +TAR2 MD 10  // 2.címregiszter az MD10-be
 +</code> 
 +63. Példaprogram TAR2 <D>
 +
 +=== +AR1 (AKKU1 értékének hozzáadása az 1. címregiszterhez) === 
 +{{anchor:plusar1}}
 +Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR1-hez.
 +
 +<code>
 +L 355        // 355 érték (INT)
 ++AR1         // hozzáadása az 1.címregiszter értékéhez
 +
 +AR1 p#300.0   // a pointer által kijelölt érték hozzáadása az AR1-hez
 +</code> 
 +63b. Példaprogram +AR1
 +
 +=== +AR2 (AKKU1 értékének hozzáadása a 2. címregiszterhez) ===
 +{{anchor:plusar2}}
 +Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR2-höz.
 +
 +<code>
 +L 355        // 355 érték (INT)
 ++AR2         // hozzáadása a 2.címregiszter értékéhez
 +
 +AR2 p#300.0   // a pointer által kijelölt érték hozzáadása az AR2-höz
 +</code> 
 +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, jobbra pedig kettővel való osztásnak felel meg. Így például ha az AKKU értéke 5 (dec) és 3 lépéssel ezt az értéket balra toljuk akkor az AKKU a 40-es értéket fogja felvenni.
 + 
 +^Művelet^Németül^Magyarul|
 +|[[#ssi|SSI]]|Schiebe Vorzeichen rechts Ganzzahl (16 Bit)|Előjeles 16 bites szám léptetése jobbra|
 +|[[#ssd|SSD]]|Schiebe Vorzeichen rechts Ganzzahl (32 Bit)|Előjeles 32 bites szám léptetése jobbra|
 +|[[#slw|SLW]]|Schiebe links Wort (16 Bit)|16 bites szó balra léptetése|
 +|[[#srw|SRW]]|Schiebe rechts Wort (16 Bit)|16 bites szó jobbra léptetése|
 +|[[#sld|SLD]]|Schiebe links Doppelwort (32 Bit)|32 bites duplaszó balra léptetése|
 +|[[#srd|SRD]]|Schiebe rechts Doppelwort (32 Bit)|32 bites duplaszó jobbra léptetése|
 +148. Táblázat Léptetési műveletek
 +
 +=== SSI (előjeles 16 bites szám léptetése jobbra) === 
 +{{anchor:ssi}}
 +Az előjeles 16 bites szám ([[hu:s7:valtozotipusok_es_ob_k#int|INT]]) léptetése jobbra csak az AKKU1-L területet mozgatja bitenként jobbra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó [[#a1a0|A1]] pozíciójába másolja.Amennyiben az **SSI**-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).
 +
 +Ha az **SSI <léptetés_szám>** megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).
 +
 +A megadott érték mindkét esetben 0 és 15 között lehet. Az
 +
 +[[#a1a0|A0]] és [[#ov_bit|OV]] státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás).
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +149. Táblázat Státusz szó változásai
 +
 +<code>
 +L 3       // AKKU2 (léptetések száma)
 +L 125     // AKKU1 (léptetendő érték)
 +SSI       // léptetés
 +
 +T MW 10   // AKKU1 -> MW10
 +</code> 
 +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.
 +
 +<code>
 +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
 +</code>
 +65. Példaprogram SSI <léptetés_szám>
 +
 +Ez a program az MW20 értékét forgatja folyamatosan, és minden lépés után 500 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.)
 +
 +=== SSD (előjeles 32 bites szám léptetése) === 
 +{{anchor:ssd}}
 +Az előjeles 32 bites szám ([[hu:s7:valtozotipusok_es_ob_k#dint|DINT]]) léptetése jobbra az AKKU1 területet mozgatja bitenként jobbra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó [[#a1a0|A1]] pozíciójába másolja.Amennyiben az **SSD**-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).
 +
 +Ha az **SSD <léptetés_szám>** megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).
 +
 +A megadott érték mindkét esetben 0 és 32 között lehet. Az
 +
 +[[#a1a0|A0]] és [[#ov_bit|OV]] státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás). 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +150. Táblázat Státusz szó változásai
 +
 +<code>
 +L 4        // AKKU2 (léptetések száma)
 +L 13400    // AKKU1 (léptetendő érték)
 +SSD        // léptetés
 +
 +T MD 10    // AKKU1 -> MD10
 +</code> 
 +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.
 +
 +<code>
 +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
 +</code> 
 +67. Példaprogram SSD <léptetés_szám>
 +
 +Ez a program az MD20 értékét forgatja folyamatosan, é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.)
 +
 +=== SLW (16 bites szó balra léptetése) === 
 +{{anchor:slw}}
 +A 16 bites szó ([[hu:s7:valtozotipusok_es_ob_k#word|WORD]]) léptetése balra csak az AKKU1-L területet mozgatja bitenként balra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó [[#a1a0|A1]] pozíciójába másolja.Amennyiben az **SLW**-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).
 +
 +Ha az **SLW <léptetés_szám>** megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).
 +
 +A megadott érték mindkét esetben 0 és 255 között lehet. Az [[#a1a0|A0]] és [[#ov_bit|OV]] státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  16, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás). 
 +
 +Az ellenkező irányú szó hosszú forgatás az [[#srw|SRW]] művelettel történik. \\ 
 +Azonos irányban duplaszó hosszon a [[#sld|SLD]], \\ 
 +ellenkező irányban duplaszó hosszon az [[#srd|SRD]] művelet végzi a léptetést. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +151. Táblázat Státusz szó változásai
 +
 +<code>
 +L 4      // AKKU2 (léptetések száma)
 +L 500    // AKKU1 (léptetendő érték)
 +SLW      // léptetés
 +
 +T MW 10  // AKKU1 -> MW10
 +</code> 
 +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.
 +
 +<code>
 +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#200MS  // futás időzítés : 500 ms
 +UN T 12
 +SE T 12
 +</code>
 +69. Példaprogram SLW <léptetés_szám>
 +
 +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.)  A program az SLW -t és az SRW –t is tartalmazza.
 +
 +=== SRW (16 bites szó jobbra léptetése) === 
 +{{anchor:srw}}
 +A 16 bites szó ([[hu:s7:valtozotipusok_es_ob_k#word|WORD]]) léptetése jobbra csak az AKKU1-L területet mozgatja bitenként jobbra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó [[#a1a0|A1]] pozíciójába másolja.Amennyiben az **SRW**-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).
 +
 +Ha az **SRW <léptetés_szám>** megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).
 +
 +A megadott érték mindkét esetben 0 és 255 között lehet. Az [[#a1a0|A0]] és [[#ov_bit|OV]] státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  16, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás). 
 +
 +Az ellenkező irányú szó hosszú forgatás az [[#slw|SLW]] művelettel történik. \\ 
 +Azonos irányban duplaszó hosszon a [[#srd|SRD]], \\ 
 +ellenkező irányban duplaszó hosszon az [[#sld|SLD]] művelet végzi a léptetést. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +152. Táblázat Státusz szó változásai
 +
 +<code>
 +L 4 // AKKU2 (léptetések száma)
 +L 500 // AKKU1 (léptetendő érték)
 +SRW // léptetés
 +
 +T MW 10 // AKKU1 -> MW10
 +</code>
 +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.
 +
 +<code>
 +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#200MS    // futás időzítés : 500 ms
 +UN T 12
 +SE T 12
 +</code>
 +71. Példaprogram SRW <léptetés_szám>
 +
 +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.)  A program az SLW -t és az SRW –t is tartalmazza.
 +
 +=== SLD (32 bites duplaszó balra léptetése) === 
 +{{anchor:sld}}
 +A 32 bites szó ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) léptetése balra az AKKU1 területet mozgatja bitenként balra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó [[#a1a0|A1]] pozíciójába másolja.Amennyiben az **SLD**-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).
 +
 +Ha az **SLD <léptetés_szám>** megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).
 +
 +A megadott érték mindkét esetben 0 és 255 között lehet. Az [[#a1a0|A0]] és [[#ov_bit|OV]] státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  32, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás). 
 +
 +Az azonos irányú szó hosszú forgatás az [[#slw|SLW]] művelettel, \\ 
 +az ellenkező irányú szó hosszú forgatás az [[#srw|SRW]] művelettel történik. \\ 
 +ellenkező irányban duplaszó hosszon az [[#srd|SRD]] művelet végzi a léptetést. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +109. Táblázat Státusz szó változásai
 +
 +<code>
 +L 4       // AKKU2 (léptetések száma)
 +L 500     // AKKU1 (léptetendő érték)
 +SLD       // léptetés
 +
 +T MD 10   // AKKU1 -> MD10
 +</code>
 +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.
 +
 +<code>
 +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#200MS    // futás időzítés : 500 ms
 +UN T 12
 +SE T 12
 +</code>
 +73. Példaprogram SLD <léptetés_szám>
 +
 +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.)  A program az SLD –t és az SRD –t is egyaránt alkalmazza. A programban a léptetés műveletek a forgatás műveletekhez (RLD, RRD) hasonlóan működnek.
 +
 +=== SRD (32 bites duplaszó jobbra léptetése) === 
 +{{anchor:srd}}
 +A 32 bites szó ([[hu:s7:valtozotipusok_es_ob_k#dword|DWORD]]) léptetése jobbra az AKKU1 területet mozgatja bitenként jobbra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó [[#a1a0|A1]] pozíciójába másolja.Amennyiben az **SRD**-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).
 +
 +Ha az **SRD <léptetés_szám>** megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).
 +
 +A megadott érték mindkét esetben 0 és 255 között lehet. Az[[#a1a0|A0]] és [[#ov_bit|OV]] státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  32, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás). 
 +
 +Az azonos irányú szó hosszú forgatás az [[#srw|SRW]] művelettel, \\ 
 +az ellenkező irányú szó hosszú forgatás az [[#slw|SLW]] művelettel történik. \\ 
 +ellenkező irányban duplaszó hosszon az [[#sld|SLD]] művelet végzi a léptetést. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +154. Táblázat Státusz szó változásai
 +
 +<code>
 +L 4       // AKKU2 (léptetések száma)
 +L 500     // AKKU1 (léptetendő érték)
 +SRD       // léptetés
 +
 +T MD 10   // AKKU1 -> MD10
 +</code>
 +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.
 +
 +<code>
 +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#200MS        // futás időzítés : 500 ms
 +UN T 12
 +SE T 12
 +</code>
 +Példaprogram SRD <léptetés_szám>
 +
 +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.)  A program az SLD -t és az SRD –t is egyaránt alkalmazza. A programban a léptetés műveletek a forgatás műveletekhez (RLD, RRD) hasonlóan működnek.
 +
 +===== 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
 +
 +[[#a1a0|A1]] státusz bitet használja. A műveletek az [[#a1a0|A0]]-t „0”-ra állítják. 
 +
 +^Parancs^németül^magyarul|
 +|[[#rld|RLD]]|Rotiere links Doppelwort (32 Bit)|32 bites duplaszó forgatása balra|
 +|[[#rrd|RRD]]|Rotiere rechts Doppelwort (32 Bit)|32 bites duplaszó forgatása jobbra|
 +|[[#rlda|RLDA]]|Rotiere Akku 1 links über A1-Anzeige (32 Bit)|32 bites duplaszó forgatása balra A1 bit jelzéssel|
 +|[[#rrda|RRDA]]|Rotiere Akku 1 rechts über A1-Anzeige (32 Bit)|32 bites duplaszó forgatása jobbra A1 bit jelzéssel|
 +155. Táblázat Forgatási műveletek
 +
 +=== RLD (32 bites duplaszó forgatása balra) ===
 +{{anchor:rld}}
 +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 <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.
 +
 +**RLD <forgatás_szám>**: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +**RLD**: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +156. Táblázat Státusz szó változásai
 +
 +<code>
 +L 31      // AKKU2 (léptetések száma)
 +L 500     // AKKU1 (léptetendő érték)
 +RLD       // léptetés
 +
 +T MD 10   // AKKU1 -> MD10
 +</code>
 +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.
 +
 +<code>
 +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#200MS  // futás időzítés : 250 ms
 +UN T 12
 +SE T 12
 +</code>
 +77. Példaprogram RLD <forgatás_szám>
 +
 +=== RRD (32 bites duplaszó forgatása jobbra) === 
 +{{anchor:rrd}}
 +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 <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.
 +
 +**RRD <forgatás_szám>**: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +**RRD**: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +157. Táblázat Státusz szó változásai
 +
 +<code>
 +L 31      // AKKU2 (léptetések száma)
 +L 500     // AKKU1 (léptetendő érték)
 +RRD       // léptetés
 +
 +T MD 10   // AKKU1 -> MD10
 +</code>
 +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.
 +
 +<code>
 +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#200MS   // futás időzítés : 250 ms
 +UN T 12
 +SE T 12
 +</code>
 +79. Példaprogram RRD <forgatás_szám>
 +
 +=== RLDA (32 bites duplaszó forgatása balra) === 
 +{{anchor:rlda}}
 +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 <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.
 +
 +**RLDA <forgatás_szám>**: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +**RLDA**: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +158. Táblázat Státusz szó változásai
 +
 +<code>
 +L 31      // AKKU2 (léptetések száma)
 +L 500     // AKKU1 (léptetendő érték)
 +RLDA      // léptetés
 +
 +T MD 10   // AKKU1 -> MD10
 +</code>
 +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.
 +
 +<code>
 +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#200MS   // futás időzítés : 250 ms
 +UN T 12
 +SE T 12
 +</code>
 +81. Példaprogram RLDA <forgatás_szám>
 +
 +=== RRDA (32 bites duplaszó forgatása jobbra) === 
 +{{anchor:rrda}}
 +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 <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.
 +
 +**RRDA <forgatás_szám>**: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +**RRDA**: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | x | x | x | - | - | - | - | - |
 +159. Táblázat Státusz szó változásai
 +
 +<code>
 +L 31      // AKKU2 (léptetések száma)
 +L 500     // AKKU1 (léptetendő érték)
 +RRDA      // léptetés
 +
 +T MD 10   // AKKU1 -> MD10
 +</code>
 +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.
 +
 +<code>
 +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
 +</code> 
 +83. Példaprogram RRDA <forgatás_szám>\\  
 +
 +===== 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, és ezek az alábbiak:
 +
 +^Parancs^németül^magyarul|
 +|[[#t_fr|FR]]|Freigabe Timer|Timer feloldása|
 +|[[#t_l|L]]|Lade aktuellen Zeitwert als Ganzzahl in AKKU 1|Időérték megadása AKKU1-be, egész szám formátumban|
 +|[[#lc|LC]]|Lade aktuellen Zeitwert als BCD in AKKU 1|Időérték megadása AKKU1-be, [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]] formátumban|
 +|[[#t_r|R]]|Rücksetze Timer|Timer nullázása|
 +|[[#si|SI]]|Zeit als Impuls|Impulzus időfunkció|
 +|[[#sv|SV]]|Zeit als verlängerter Impuls|Meghosszabbított impulzus időfunkció|
 +|[[#se|SE ]]|Zeit als Einschaltverzögerung|Bekapcsolás késleltetési időfunkció|
 +|[[#ss|SS]]|Zeit als speichernde Einschaltverzögerung|Tárolt bekapcsolás késleltetési időfunkció|
 +|[[#sa|SA]]|Zeit als Ausschaltverzögerung|Kikapcsolás késleltetési időfunkció|
 +160. Táblázat időfunkciók összefoglalás
 +
 +=== FR (Timer feloldása) ===
 +{{anchor:t_fr}}
 +{{anchor:fr}}
 +Formátuma **FR <idő>**
 +
 +A számláló feloldása akkor történik meg, ha az utasítás előtt a „[[#vke|VKE]]” értéke „0”-ról „1”-re vált. Normál használat és a számláló beállítása esetén a feloldás nem szükséges. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Í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:t_l}}
 +Formátuma **L <idő>**
 +
 +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.  Betöltéskor a 0.-9. biten található a bináris formátumú számérték (0 – 999), és az 12. és 13. biten kerül megadásra az időalap (00: 10 ms, 01: 100 ms, 10: 1 s, 11: 10 s). Az AKKU1-L-be, csak az időérték kerül betöltésre, időalap nélkül.
 +
 +Az AKKU1-L-ből akkor is be kell tölteni az időértéket, ha az időfunkció nem kerül elindításra (
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +162. Táblázat Státusz szó változásai
 +
 +=== LC (Időérték megadása AKKU1-be, BCD formátumban) === 
 +{{anchor:lc}}
 +Formátuma: **LC <idő>**
 +
 +Az idő értékét betölti az AKKU1-L-be [[hu:s7:plc_szoftver_alapfogalmak#s7_bcd|BCD]]-ként, miután lementette az AKKU1 és AKKU2 értékét. A megadott idő maximális értéke „999” lehet, ennek ábrázolására 12 bit (3*4) elegendő, az időalap 2 további biten kerül ábrázolásra, így az AKKU1-L felső 2 bitjét nem tölti ki a művelet.
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | - | - | - | - |
 +163. Táblázat Státusz szó változásai
 +
 +=== R (Timer nullázása) === 
 +{{anchor:t_r}}
 +Formátuma: **R <idő>**
 +
 +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 [[#vke|VKE]] státusz bit értéke „0”-ról „1”-re vált. 
 +
 +^ ^[[#bie|BIE]]^[[#a1a0|A1]]^[[#a1a0|A0]]^[[#ov_bit|OV]]^[[#os_bit|OS]]^[[#or_bit|OR]]^[[#sta|STA]]^[[#vke|VKE]]^[[#_er|/ER]]|
 +| Írja: | - | - | - | - | - | 0 | - | - | 0 |
 +164. Táblázat Státusz szó változásai
 +
 +=== SI (Impulzus időfunkció) === 
 +{{anchor:si}}
 +Formátuma: **SI <idő>**
 +
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image002.gif}} \\ 
 +
 +  - időfunkció indítása 
 +  - időfunkció „rendes” lefutása,az indító bit a lefutás alatt „1”, és csak később „0” 
 +  - 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:sv}}
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image004.gif}}\\ 
 +
 +  - időfunkció indítása
 +  - időfunkció „rendes” lefutása,az indító bit a lefutás alatt „1”, és csak később „0”
 +  - időfunkció indítása
 +  - időfunkció indító bitjének a lefutás előtti visszavétele, az idő ennek ellenére lefut
 +  - 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:se}}
 +{{wiki:s7:soft_s7_awl_utasitaskeszlet_clip_image006.gif}}\\ 
 +
 +  - időfunkció indítása
 +  - időfunkció „rendes” lefutása,az indító bit a lefutás alatt „1”
 +  - 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
 +
 +<code>
 +U E 0.0
 +L S5T#10s
 +SE T1
 +
 +U T1
 += A 4.0
 +</code>
 +
 +
  
  • hu/s7/awl_leiras.txt
  • 2022/04/21 15:04
  • ()