Oldalforrás megtekintése Korábbi változatok Hivatkozások Exportálás PDF-be Share on ... Google+ Twitter LinkedIn Facebook Pinterest Telegram Tartalomjegyzék Simatic Step 7 AWL utasításkészlet Utasításjegyzék Státusz szó, VKE, STA, STANDARD Státusz szó /ER Kiértékelő (0.) bit VKE (1.) bit STA (2.) bit OR (3.) bit OS (4.) bit OV (5.) bit A1, A0 (6., 7.) bit BIE (8.) bit Zárójel verem (Klammerstack) Utasításkészlet Bit logikai műveletek U (és) UN (és nem) O (vagy) ON (vagy nem) X (kizáró vagy) XN (kizáró vagy nem) = (egyenlő) R (reset) S (set) NOT (VKE negálás) SET (VKE állítás) CLR (VKE törlés) Összehasonlítási műveletek ? I (16 bites egész szám összehasonlítás) ? D (32 bites egész szám összehasonlítás) ? R (32 bites törtszám összehasonlítás) Transzformációk BTI (BCD konvertálás egész szám formátumra) ITB (egész szám konvertálás BCD formátumra) BTD (BCD konvertálás 32 bites egész szám formátumra) DTB (32 bites egész szám konvertálás BCD formátumra) ITD (16 bites egész szám átalakítása 32 bitessé) DTR (32 bites egész szám átalakítása IEEE-FP törtszámmá) INVI (egyes inklementer képzés 16 bites egész számon) INVD (egyes inklementer képzés 32 bites egész számon) NEGI (16 bites egész szám negálása) NEGD (32 bites egész szám negálása) NEGR (IEEE-FP törtszám negálása) TAW (bájtok cseréje az AKKU1-L-ben) TAD (bájtok cseréje az AKKU1-ben) RND (törtszám kerekítése egész számra) RND+ (törtszám felkerekítése egész számra) RND- (törtszám lekerekítése egész számra) TRUNC (törtszám csonkolása egész számra) Számláló (Zähler) műveletek FR (számláló feloldása) L (számlálóérték betöltése egész számként) LC (számlálóérték betöltése BCD-ként) R (számláló nullázása) S (számláló beállítása) ZV (számláló előre) ZR (számláló hátra) Adatblokk műveletek AUF (Adatblokk nyitása) TDB (Globális DB és instant DB cseréje) L DBLG (Globális DB hosszának betöltése az AKKU1-be) L DBNO (Globális DB számának betöltése az AKKU1-be) L DILG (Instant DB hosszának betöltése az AKKU1-be) L DINO (Instant DB számának betöltése az AKKU1-be) Ugrás műveletek SPA (Abszolút ugrás) SPL (Ugráslista) SPB (Ugrás, ha a VKE = 1) SPBN (Ugrás, ha a VKE = 0) SPBB (Ugrás, ha a VKE = 1, és menti a VKE-t a BIE-be) SPBNB (Ugrás, ha a VKE = 0, és menti a VKE-t a BIE-be) SPBI (Ugrás, ha a BIE = 1) SPBIN (Ugrás, ha a BIE = 0) SPO (Ugrás, ha az OV = 1) SPS (Ugrás, ha az OS = 1) SPZ (Ugrás, ha az eredmény = 0) SPN (Ugrás, ha az eredmény <> 0) SPP (Ugrás, ha az eredmény > 0) SPM (Ugrás, ha az eredmény < 0) SPPZ (Ugrás, ha az eredmény >= 0) SPMZ (Ugrás, ha az eredmény < 0) SPU (Ugráaacute;s, ha érvénytelen az eredmény) LOOP (hurok) Egész szám műveletek +I (AKKU1 és AKKU2 összeadása 16 bites egész számként) -I (AKKU1 kivonása AKKU2-ből 16 bites egész számként) *I (AKKU1 és AKKU2 összeszorzása 16 bites egész számként) /I (AKKU2 osztása AKKU1-gyel 16 bites egész számként) + (Egész szám konstans hozzáadása (16, 32 bit)) +D (AKKU1 és AKKU2 összeadása 32 bites egész számként) -D (AKKU1 kivonása AKKU2-ből 32 bites egész számként) *D (AKKU1 és AKKU2 összeszorzása 32 bites egész számként) /D (AKKU2 osztása AKKU1-gyel 32 bites egész számként) MOD (AKKU2 osztási maradéka AKKU1-gyel 32 bites egész számként) Törtszám műveletek +R (AKKU1 és AKKU2 összeadása 32 bites törtszámként) -R (AKKU1 kivonása AKKU2-ből 32 bites törtszámként) *R (AKKU1 és AKKU2 összeszorzása 32 bites törtszámként) /R (AKKU2 osztása AKKU1-gyel 32 bites törtszámként) ABS (32 bites törtszám abszolút értéke) SQR (32 bites törtszám négyzete) SQRT (32 bites törtszám négyzetgyöke) EXP (32 bites törtszám exponenciális értéke) LN (32 bites törtszám természetes logaritmusa) SIN (32 bites törtszám szinusz értéke) COS (32 bites törtszám koszinusz értéke) TAN (32 bites törtszám tangens értéke) ASIN (32 bites törtszám arkusz szinusz értéke) ACOS (32 bites törtszám arkusz koszinusz értéke) ATAN (32 bites törtszám arkusz tangens értéke) Betöltés/mozgatás műveletek L (Betöltés) L STW (Státusz szó betöltése az AKKU1-be) LAR1 (1. címregiszter feltöltése AKKU1-ből) LAR1 <D> (1. címregiszter betöltése 32 bites pointerrel) LAR1 AR2 (2. címregiszter betöltése az 1. címregiszterbe) LAR2 (2. címregiszter feltöltése AKKU1-ből) LAR2 <D> T (Mozgatás) T STW (Státusz szó feltöltése az AKKU1-ből) TAR (1. és 2. címregiszter cseréje) TAR1 (1. címregiszter mozgatása az AKKU1-be) TAR1 <D> TAR1 AR2 (1. címregiszter mozgatása a 2. címregiszterbe) TAR2 (2. címregiszter mozgatása az AKKU1-be) TAR2 <D> (2. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre) +AR1 (AKKU1 értékének hozzáadása az 1. címregiszterhez) +AR2 (AKKU1 értékének hozzáadása a 2. címregiszterhez) Programvezérlés SSI (előjeles 16 bites szám léptetése jobbra) SSD (előjeles 32 bites szám léptetése) SLW (16 bites szó balra léptetése) SRW (16 bites szó jobbra léptetése) SLD (32 bites duplaszó balra léptetése) SRD (32 bites duplaszó jobbra léptetése) Forgatás műveletek RLD (32 bites duplaszó forgatása balra) RRD (32 bites duplaszó forgatása jobbra) RLDA (32 bites duplaszó forgatása balra) RRDA (32 bites duplaszó forgatása jobbra) Időfunkciók FR (Timer feloldása) L (Időérték megadása AKKU1-be, egész szám formátumban) LC (Időérték megadása AKKU1-be, BCD formátumban) R (Timer nullázása) SI (Impulzus időfunkció) SV (Meghosszabbított impulzus időfunkció) SE (Bekapcsolás késleltetési időfunkció) Simatic Step 7 AWL utasításkészlet Az AWL a Simatic Step7 PLC platformjának az IEC DIN EN 61131-3 normának megfeleltetett szövegbázisú és meglehetősen gépközeli leírónyelve (sok tekintetben a klasszikus assembly nyelveknek felel meg). A program lefutási sorrendje gyakorlatilag megegyezik a CPU végrehajtási sorrendjével. A nyelv a magasabbb szintű (kvázi pascal-)SCL nyelvvel egyetemben a Simatic S7 fejlesztői rendszerében érhető el. Utasításjegyzék Német szintaktika Angol szintaktika Művelet / funkció Leírása = = Bit művelet Összehasonlítás ) ) Bit művelet Zárójel zárása *D *D Egész szám művelet AKKU1 és AKKU2 szorzása 32 bites egész számként (DINT) *I *I Egész szám művelet AKKU1 és AKKU2 szorzása 16 bites egész számként (INT) *R *R Tizedes tört funkció AKKU1 és AKKU2 szorzása 32 bites törtszámként (REAL) /D /D Egész szám művelet AKKU2 osztása AKKU1-el 32 bites egész számként (DINT) /I /I Egész szám művelet AKKU2 osztása AKKU1-el 16 bites egész számként (INT) /R /R Tizedes tört funkció AKKU2 osztása AKKU1-el 32 bites törtszámként (REAL) ? D ? D Összehasonlítás 32 bites egész számok (DINT) összehasonlítása ==, <>, >, <, >=, ⇐ ? I ? I Összehasonlítás 16 bites egész számok (INT) összehasonlítása ==, <>, >, <, >=, ⇐ ? R ? R Összehasonlítás 32 bites törtszámok (REAL) összehasonlítása ==, <>, >, <, >=, ⇐ + + Egész szám művelet Egész szám konstans hozzáadása (16, 32 Bit) +AR1 +AR1 Akkumulátor AKKU1 hozzáadása az 1. címregiszterhez +AR2 +AR2 Akkumulátor AKKU1 hozzáadása a 2. címregiszterhez +D +D Egész szám művelet AKKU1 és AKKU2 összeadása 32 bites egész számként (DINT) +I +I Egész szám művelet AKKU1 és AKKU2 összeadása 16 bites egész számként (INT) +R +R Tizedes tört funkció AKKU1 és AKKU2 összeadása 32 bites törtszámként (REAL) -D -D Egész szám művelet AKKU2 kivonása az AKKU1-ből 32 bites egész számként (DINT) -I -I Egész szám művelet AKKU2 kivonása az AKKU1-ből 16 bites egész számként (INT) -R -R Tizedes tört funkció AKKU2 kivonása az AKKU1-ből 32 bites törtszámként (REAL) ABS ABS Tizedes tört funkció Törtszám abszolút értéke (REAL) ACOS ACOS Tizedes tört funkció Arcus cosinus képzése (REAL) ASIN ASIN Tizedes tört funkció Arcus sinus képzése (REAL) ATAN ATAN Tizedes tört funkció Arcus tangens képzése (REAL) 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 Transzformáció BCD átalakítása 32 bites egész számmá (DINT) BTI BTI Transzformáció BCD átalakítása 16 bites egész számmá (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 Bit művelet VKE nullázása (=0) COS COS Tizedes tört funkció Cosinus képzése (REAL) DEC DEC Akkumulátor AKKU 1 csökkentése DTB DTB Transzformáció 32 bites egész szám átalakítása BCD-vé (BCD) DTR DTR Transzformáció 32 bites egész szám átalakítása 32 bites törtszámmá (REAL) ENT ENT Akkumulátor AKKU-Stack feltöltése (ENTER) EXP EXP Tizedes tört funkció Exponenciális értékképzése (REAL) FN FN Bit művelet Negatív flanke (lefutóél) FP FP Bit művelet Pozitív flanke (felfutóél) FR FR Idő funkció Timer szabadon hagyása (Freigabe) FR FR Számláló funkció Számláló szabadon hagyása (Freigabe) INC INC Akkumulátor AKKU1 növelése INVD INVD Transzformáció Egyszeres komplementer (DINT) INVI INVI Transzformáció Egyszeres komplementer (INT) ITB ITB Transzformáció 16 bites egész szám átalakítása BCD-vé (BCD) ITD ITD Transzformáció 16 bites egész szám átalakítása 32 bites egész számmá (DINT) L L Betöltés/mozgatás Betöltés (LOAD/LADE) 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 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 Adatblokk művelet Globális DB hosszának a másolása AKKU1-be L DBNO L DBNO Adatblokk művelet Globális DB számának a másolása AKKU1-be L DILG L DILG Adatblokk művelet Instant DB hosszának a másolása AKKU1-be L DINO L DINO Adatblokk művelet Instant DB számának a másolása AKKU1-be L STW L STW Betöltés/mozgatás Státusz-szó (STATUS WORD) betöltése az AKKU1-be 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 Betöltés/mozgatás Az 1. címregiszter feltöltése AKKU1-ből LAR1 <D> LAR1 <D> Betöltés/mozgatás Az 1. címregiszter betöltése pointerrel LAR2 LAR2 Betöltés/mozgatás Az 2. címregiszter betöltése 32 bites egész számmal LAR2 <D> LAR2 <D> Betöltés/mozgatás Az 2. címregiszter betöltése AKKU1-ből LC LC Számláló funkció Az aktuális számlálóérték betöltése BCD formában az AKKU1-be LC LC Idő funkció Az aktuális időérték betöltése BCD formában az AKKU1-be LEAVE LEAVE Akkumulátor AKKU Verem ürítése LN LN Tizedes tört funkció Természetes logaritmus képzése (REAL) 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 (DINT) NEGD NEGD Transzformáció 32 bites egész szám kettes komplementer (DINT) NEGI NEGI Transzformáció 16 bites egész szám kettes komplementer (INT) NEGR NEGR Transzformáció Törtszám negálása (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 Bit művelet VKE negálása O O Bit művelet VAGY 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ó (DWORD) 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ó (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 Bit művelet RESET R R Idő funkció Időfunkció reset R R Számláló funkció Számláló reset RLD RLD Forgatás Duplaszó forgatása balra (DWORD) RLDA RLDA Forgatás Duplaszó forgatása balra (DWORD), A1 kijelzéssel RND RND Transzformáció Törtszám kerekítése egész számra (DINT) RND– RND– Transzformáció Törtszám kerekítése a nála a tizedesrésszel kisebb egész számra (DINT) RND+ RND+ Transzformáció Törtszám kerekítése a nála a tizedesrésszel nagyobb egész számra (DINT) RRD RRD Forgatás Duplaszó forgatása jobbra (DWORD) RRDA RRDA Forgatás Duplaszó forgatása jobbra (DWORD), A1 kijelzéssel S S Bit művelet SET S S Számláló funkció Számláló beállítása SA SF Idő funkció Kikapcsolás késleltetetett idő SAVE SAVE Bit művelet VKE mentése a BIE-be SE SD Idő funkció Bekapcsolás késleltetett idő SET SET Bit művelet Állítás SI SP Idő funkció Impulzus idő SIN SIN Tizedestört funkció Sinus képzése (REAL) SLD SLD Léptetés Duplaszó léptetése balra (DWORD) SLW SLW Léptetés Szó léptetése balra (WORD) SPA JU Ugrás művelet Feltétel nélküli ugrás SPB JC Ugrás művelet Feltételes ugrás, ha VKE = 1 SPBB JCB Ugrás művelet Feltételes ugrás, ha VKE = 1, és a VKE másolása BIE-be SPBI JBI Ugrás művelet Feltételes ugrás, ha BIE = 1 SPBIN JNBI Ugrás művelet Feltételes ugrás, ha BIE = 0 SPBN JCN Ugrás művelet Feltételes ugrás, ha VKE = 0 SPBNB JNB Ugrás művelet Feltételes ugrás, ha VKE = 0, és a VKE másolása BIE-be SPL JL Ugrás művelet Ugráslista SPM JM Ugrás művelet Feltételes ugrás, ha az eredmény < 0 SPMZ JMZ Ugrás művelet Feltételes ugrás, ha az eredmény ⇐ 0 SPN JN Ugrás művelet Feltételes ugrás, ha az eredmény <> 0 SPO JO Ugrás művelet Feltételes ugrás, ha az OV = 1 SPP JP Ugrás művelet Feltételes ugrás, ha az eredmény > 0 SPPZ JPZ Ugrás művelet Feltételes ugrás, ha az eredmény >= 0 SPS JOS Ugrás művelet Feltételes ugrás, ha az OS = 1 SPU JUO Ugrás művelet Feltételes ugrás, ha az eredmény érvénytelen SPZ JZ Ugrás művelet Feltételes ugrás, ha az eredmény = 0 SQR SQR Tizedes tört funkció Négyzetre emelés (REAL) SQRT SQRT Tizedes tört funkció Gyökvonás (REAL) SRD SRD Léptetés Duplaszó léptetése jobbra (DWORD) SRW SRW Léptetés Szó léptetése jobbra (WORD) SS SS Idő funkció Halmozott bekapcsolás késleltetett idő SSD SSD Léptetés 32 bites egész szám előjelhelyes léptetése jobbra SSI SSI Léptetés 16 bites egész szám előjelhelyes léptetése jobbra SV SE Idő funkció Impulzus hosszabbított idő T T Betöltés/mozgatás Mozgatás T STW T STW Betöltés/mozgatás AKKU1 mozgatása a státusz szóba (STATUSWORD) 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 Tizedes tört funkció Tangens (REAL) TAR CAR Betöltés/mozgatás 1. és 2. címregiszter tartalmának a cseréje TAR1 TAR1 Betöltés/mozgatás 1. címregiszter mozgatása a 2. címregiszterbe TAR1 AR2 TAR1 AR2 Betöltés/mozgatás 1.címregiszter mozgatása AKKU2-be TAR1 <D> TAR1 <D> Betöltés/mozgatás 1.címregiszter mozgatása a célcímre (32 bit pointer) TAR2 TAR2 Betöltés/mozgatás 2.címregiszter mozgatása AKKU1-re TAR2 <D> TAR2 <D> Betöltés/mozgatás 2.címregiszter mozgatása a célcímre (32 bit pointer) TAW CAW Transzformáció A byte sorrend megfordítása 16 bit hosszan az AKKU1-L-ben TDB CDB Adatblokk művelet Globál DB és Instant DB cseréje TRUNC TRUNC Transzformáció Törtszám kerekítése csonkolással egész számra (DINT) 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ó (DWORD) 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ó (WORD) X X Bit művelet KIZÁRÓ VAGY X( X( Bit művelet Kizáró vagy zárójel nyitással 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ó (DWORD) XOW XOW Szavak összevetése Kizáró vagy szó (WORD) ZR CD Számláló funkció Számláló visszaszámlálás ZV CU Számláló funkció Számláló (előre)számlálás Státusz szó, VKE, STA, STANDARD A VKE (Verknüpfung-eredmény) a művelet eredményét tartalmazza, a 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 is „0”, viszont az ÉS művelet okán a „VKE” sor is ebben a sorban szakad meg, a továbbiakban ezért a „VKE” „0” marad. (VAGY láncoknál persze ez kissé másként működik). A VKE, mint a státusz szó 1. bitje, a státusz szónál is tárgyalásra kerül. 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 és 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 „1” és az eredmény (M1.0) szintén „1”. A második példán ennek az ellenkezője látható. 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 utasításkészletben minden utasításnál feltüntetem a státusz szó várható állapotát a lenti táblázattal megegyező módon: BIEA1A0OVOSORSTAVKE/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 3. ábra Státusz szó példa /ER Kiértékelő (0.) bit 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”-be. Ha az ER „1”, akkor a kiértékelési lánc tart, a 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 függő ugrásműveletek. VKE (1.) bit 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 bit állapota „0”, akkor az adott művelet eredményét bemásolja a program a VKE-be. Ha az /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 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-k) eredményeit. Ez „1”, amennyiben a részművelet eredménye „1”. Ha egy 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 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”. 4. ábra OR bit állapota (1.változat) 5. ábra OR bit állapota (2. változat) OS (4.) 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 6. ábra OS, OV bitek állapota OV (5.) 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). 7. ábra OS, OV bitek állapota A1, A0 (6., 7.) bit 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 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-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, 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 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: 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 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: 9. ábra Példaprogram állapotok Bit logikai műveletek U (és) Az ÉS művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - x x x 1 4. Táblázat Státusz szó változásai 10. ábra Példaprogram állapotok UN (és nem) Az ÉS NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - x x x 1 6. Táblázat Státusz szó változásai 11. ábra Példaprogram állapotok O (vagy) A VAGYművelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 x x 1 8. Táblázat Státusz szó változásai KOP AWL Az első VAGY ág teljesül (az első vagy ágat nem kell „O” utasítással kezdeni). A második VAGY ág teljesül. A harmadik vagy ág teljesül Az utasítás eredménye 0. 2. Példaprogram OR állapotok ON (vagy nem) A VAGY NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a 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. BIEA1A0OVOSORSTAVKE/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. 12. ábra Példaprogram állapotok X (kizáró vagy) 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 é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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 x x 1 11. Táblázat Státusz szó változásai 13. ábra Példaprogram állapotok XN (kizáró vagy nem) 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 é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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 x x 1 12. Táblázat Státusz szó változásai 14. ábra Példaprogram állapotok = (egyenlő) = <bit> az VKE értékét (a megelőző bitműveletek végeredményét) kiírja a megcímzett bitre. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 x - 0 13. Táblázat Státusz szó változásai 15. ábra Példaprogram állapotok R (reset) R <bit> ha a VKE értéke (a megelőző bitműveletek végeredményét) „1”, akkor törli a címzett bitet. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 x - 0 14. Táblázat Státusz szó változásai 16. ábra Példaprogram állapotok S (set) S <bit> ha a VKE értéke (a megelőző bitműveletek végeredményét) „1”, akkor állítja a címzett bitet. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 x - 0 15. Táblázat Státusz szó változásai 17. ábra Példaprogram állapotok NOT (VKE negálás) A NOT negálja a VKE értékét. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - 1 x - 16. Táblázat Státusz szó változásai 18. ábra Példaprogram állapotok SET (VKE állítás) A SET a VKE-t „1”-re állítja. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 1 1 0 17. Táblázat Státusz szó változásai 19. ábra Példaprogram állapotok CLR (VKE törlés) A CLR a VKE-t „0”-ra állítja. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 0 0 0 18. Táblázat Státusz szó változásai 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-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, AKKU2 > AKKU1 VKE, AKKU2 = AKKU1 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 értéke BIEA1A0OVOSORSTAVKE/ER Írja: - x x 0 - 0 x x 1 20. Táblázat Státusz szó változásai 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-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, AKKU2 > AKKU1 VKE, AKKU2 = AKKU1 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 értéke BIEA1A0OVOSORSTAVKE/ER Írja: - x x 0 - 0 x x 1 22. Táblázat Státusz szó változásai 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-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, AKKU2 > AKKU1 VKE, AKKU2 = AKKU1 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 értéke BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x 0 x x 1 24. Táblázat Státusz szó változásai 23. ábra Példaprogram állapotok Transzformációk BTI (BCD konvertálás egész szám formátumra) A BTI egy előjeles, 3 számjegyű 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: 24. ábra BCD transzformáció hiba a diagnózis ablakban BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 25. Táblázat Státusz szó változásai 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) A ITB az AKKU1-L terület értékét alakítja át 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - x x - - - - 26. Táblázat Státusz szó változásai 26. ábra Példaprogram BTD (BCD konvertálás 32 bites egész szám formátumra) A BTD egy előjeles, 7 számjegyű 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: 27. ábra BCD transzformáció hiba a diagnózis ablakban BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 27. Táblázat Státusz szó változásai 28. ábra Példaprogram DTB (32 bites egész szám konvertálás BCD formátumra) A DTB az AKKU1 terület 32 bites egész szám értékét alakítja át 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - x x - - - - 28. Táblázat Státusz szó változásai 29. ábra Példaprogram ITD (16 bites egész szám átalakítása 32 bitessé) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 29. Táblázat Státusz szó változásai 30. ábra Példaprogram DTR (32 bites egész szám átalakítása IEEE-FP törtszámmá) Az AKKU1-be töltött 32 bites egész számot IEEE-FP (real) típusúvá alakítja. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 30. Táblázat Státusz szó változásai 31. ábra Példaprogram INVI (egyes inklementer képzés 16 bites egész számon) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 31. Táblázat Státusz szó változásai 32. ábra Példaprogram INVD (egyes inklementer képzés 32 bites egész számon) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 32. Táblázat Státusz szó változásai 33. ábra Példaprogram NEGI (16 bites egész szám negálása) 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 A1, A0, OS és OV státuszbiteket állítja az eljárás. BIEA1A0OVOSORSTAVKE/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 34. ábra Példaprogram NEGD (32 bites egész szám negálása) A eljárás egy 32 bites egész számot beolvassa (DINT) az AKKU1-ből és negálja. Az eredményt az AKKU1-be tárolja. Az A1, A0, OS és OV státuszbiteket állítja az eljárás. BIEA1A0OVOSORSTAVKE/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 35. ábra Példaprogram NEGR (IEEE-FP törtszám negálása) A eljárás egy 32 bites törtszámot (REAL) beolvassa az AKKU1-ből és negálja. Az eredményt az AKKU1-be tárolja. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 37. Táblázat Státusz szó változásai 36. ábra Példaprogram TAW (bájtok cseréje az AKKU1-L-ben) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 38. Táblázat Státusz szó változásai 51. ábra TAW 37. ábra Példaprogram TAD (bájtok cseréje az AKKU1-ben) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 39. Táblázat Státusz szó változásai 38. ábra TAD 39. ábra Példaprogram RND (törtszám kerekítése egész számra) 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - x x - - - - 40. Táblázat Státusz szó változásai 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - x x - - - - 41. Táblázat Státusz szó változásai 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - x x - - - - 42. Táblázat Státusz szó változásai 42. ábra Példaprogram TRUNC (törtszám csonkolása egész számra) 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - x x - - - - 43. Táblázat Státusz szó változásai 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 Freigabe Zähler Számláló feloldása 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 Lade aktuellen Zählwert als BCD in AKKU 1 Pillanatnyi számlálóérték betöltése AKKU1-be, BCD formátumban R Rücksetze Zähler Számláló nullázása S Setze Zählerstartwert Számláló beállítása ZV Zählen vorwärts Számláló előre 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) 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” é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. BIEA1A0OVOSORSTAVKE/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) 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 = 0). BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 46. Táblázat Státusz szó változásai LC (számlálóérték betöltése BCD-ként) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 47. Táblázat Státusz szó változásai R (számláló nullázása) Formátuma: R <számláló> „0” értéket tölt be a számlálóba, ha a VKE = 1. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 - - 0 48. Táblázat Státusz szó változásai S (számláló beállítása) Formátuma: S <számláló> Betölti az AKKU1-L tartalmát a számlálóba, ha a VKE „0”-ról „1”-re változik. A számláló értéket „0” és „999” között kell megadni, BCD formátumban. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 - - 0 49. Táblázat Státusz szó változásai ZV (számláló előre) Formátuma: ZV <számláló> A számláló értékét „1”-gyel növeli, amennyiben a 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 - - 0 50. Táblázat Státusz szó változásai 44. ábra ZV példaprogram L MW 10 L 1 +I T MW 10 L C#0 // Számlálóba betöltendő érték U M 11.7 // A számláló inicializálását végző bit S Z 12 // a 12. számláló U M 11.1 // Számlálást vezérlő bit ZV Z 12 // Minden VKE 0->1 után számol egyet U Z 12 // Ha a számlálás ismét a "0" értéken áll = A 11.0 // a kimenet "0"-ra vált, egyébként "1" L Z 12 3. Példaprogram ZV ZR (számláló hátra) Formátuma: ZR <számláló> A számláló értékét „1”-gyel csökkenti, amennyiben a 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 változása a számlálóra hatástalan marad, a számláló nem használja a negatív értéktartományt. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 - - 0 51. Táblázat Státusz szó változásai L MW 10 L 1 +I T MW 10 L C#55 // Számlálóba betöltendő érték U M 11.7 // A számláló inicializálását végző bit S Z 12 // a 12. számláló U M 11.1 // Visszaszámlálást vezérlő bit ZR Z 12 // Minden VKE 0->1 után számol egyet U Z 12 // Ha a számlálás elérte a "0" értéket = A 11.0 // a kimenet "0"-ra vált, egyébként "1" L Z 12 4. Példaprogram ZR Adatblokk műveletek Az „AUF” művelettel egy globális vagy egy instant adatblokkot (DB-t) nyithatunk meg. Egyidejűleg egy globális és egy instant DB lehet nyitva. Ebben a fejezetben az alábbi utasítások állnak rendelkezésére: AUF Datenbaustein öffnen Adatblokk (DB) nyitása TDB Tausche Global-DB und Instanz-DB Globális DB és instant DB cseréje L DBLG Lade Länge Global-DB in AKKU 1 Globális DB hosszának betöltése az AKKU1-be L DBNO Lade Nummer Global-DB in AKKU 1 Globális DB számának betöltése az AKKU1-be L DILG Lade Länge Instanz-DB in AKKU 1 Instant DB hosszának betöltése az AKKU1-be 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) 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. AUF DB 10 // 10. globális DB nyitása L DBW 12 // 12.word a DB-ből T MW 10 // memóriába másol AUF DI 11 // 11. instant DI nyitása L DIB 12 // 12 byte olvasása a DI-ből T DBB 24 // átmásolása a DB-be 5. Példaprogram AUF BIEA1A0OVOSORSTAVKE/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. 45. ábra DB nincs letöltve hiba TDB (Globális DB és instant DB cseréje) 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. BIEA1A0OVOSORSTAVKE/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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 55. Táblázat Státusz szó változásai AUF DB 10 // DB10 nyitása L DBLG // hossz lekérdezése L 4 // a DB10 REAL típusú array /I // így a byte-ok számát 4-gyel T MW 10 // kell osztani az elemek számához. 6. Példaprogram L DBLG 46. ábra Példaprogram futás közben L DBNO (Globális DB számának betöltése az AKKU1-be) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 56. Táblázat Státusz szó változásai 47. ábra Példaprogram L DILG (Instant DB hosszának betöltése az AKKU1-be) Formátuma: L DILG A nyitott instant DB hosszát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi. BIEA1A0OVOSORSTAVKE/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) 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. BIEA1A0OVOSORSTAVKE/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”. U M 11.1 SPBN m001 xxx // itt számolok, és ezt sokszorosítom m001: NOP 0 U M 11.2 SPBN m001 << Hiba! xxx // itt számolok, és ezt sokszorosítom m002: NOP 0 U M 11.3 SPBN m003 xxx // itt számolok, és ezt sokszorosítom m003: NOP 0 7. Példaprogram Stoppoló programozói tévedés Az ugrási címkét egy maximum 4 karakteres mező jelöli, melyet egy kettőspont („:”) 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). Parancsnémetülmagyarul SPA Springe absolut Abszolút ugrás SPL Sprungleiste Ugráslista SPB Springe, wenn VKE = 1 Ugrás, ha a VKE = 1 SPBN Springe, wenn VKE = 0 Ugrás, ha a VKE = 0 SPBB Springe, wenn VKE = 1 und rette VKE ins BIE Ugrás, ha a VKE = 1, és menti a VKE-t a BIE-be SPBNB Springe, wenn VKE = 0 und rette VKE ins BIE Ugrás, ha a VKE = 0, és menti a VKE-t a BIE-be SPBI Springe, wenn BIE = 1 Ugrás, ha a BIE = 1 SPBIN Springe, wenn BIE = 0 Ugrás, ha a BIE = 0 SPO Springe, wenn OV = 1 Ugrás, ha az OV = 1 SPS Springe, wenn OS = 1 Ugrás, ha az OS = 1 SPZ Springe, wenn Eredmény = 0 Ugrás, ha az eredmény = 0 SPN Springe, wenn Eredmény <> 0 Ugrás, ha az eredmény <> 0 SPP Springe, wenn Eredmény > 0 Ugrás, ha az eredmény > 0 SPM Springe, wenn Eredmény < 0 Ugrás, ha az eredmény < 0 SPPZ Springe, wenn Eredmény >= 0 Ugrás, ha az eredmény >= 0 SPMZ Springe, wenn Eredmény ⇐ 0 Ugrás, ha az eredmény ⇐ 0 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, BIE, OV, OS leírását a státusz szó fejezetben találja. SPA (Abszolút ugrás) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 60. Táblázat Státusz szó változásai U M 10.0 // ugrási feltételek U M 11.0 SPB M011 // ha a feltételek igazak, ugrik SET // egyébként végrehajtja ezt a részt = M 12.0 SPA M012 // majd feltétel nélkül ugrik M011: NOP 0 // feltételes ugrás címke CLR // feltételek teljesülése esetén = M 13.0 // ez a rész végrehajtásra kerül = M 14.0 M012: NOP 0 // feltétel nélküli ugrás címke 8. Példaprogram SPA SPL (Ugráslista) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 61. Táblázat Státusz szó változásai L MB 20 // ugráspozíció megadása SPL mas // minden más esetben ide ugrik SPA ide0 // MB20 = 0 esetén ide ugrik SPA ide1 // MB20 = 1 esetén ide ugrik SPA ide2 // MB20 = 2 esetén ide ugrik SPA ide3 // MB20 = 3 esetén ide ugrik mas: L 100 // MB20 > 3 esetén 100-at tölt az AKKU1-be SPA tov ide0: L 0 // MB20 = 0 esetén 0-át tölt az AKKU1-be SPA tov ide1: L 1 // MB20 = 1 esetén 1-et tölt az AKKU1-be SPA tov ide2: L 2 // MB20 = 2 esetén 2-t tölt az AKKU1-be SPA tov ide3: L 3 // MB20 = 3 esetén 3-at tölt az AKKU1-be SPA tov tov: T MW 30 // AKKU1 mentése MW30-ba 9. Példaprogram SPL SPB (Ugrás, ha a VKE = 1) Formátuma: SPB <címke> A 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 1 1 0 62. Táblázat Státusz szó változásai U M 10.0 // ugrási feltételek U M 11.0 SPB M011 // ha a feltételek igazak, ugrik SET // egyébként végrehajtja ezt a részt = M 12.0 SPA M012 // majd feltétel nélkül ugrik M011: NOP 0 // feltételes ugrás címke CLR // feltételek teljesülése esetén = M 13.0 // ez a rész végrehajtásra kerül = M 14.0 M012: NOP 0 // feltétel nélküli ugrás címke 10. Példaprogram SPB A VKE leírását a státusz szó fejezetben találja. SPBN (Ugrás, ha a VKE = 0) Formátuma: SPBN <címke> A 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 1 1 0 63. Táblázat Státusz szó változásai U M 10.0 // ugrási feltételek U M 11.0 SPBN M011 // ha a feltételek nem igazak, ugrik SET // egyébként végrehajtja ezt a részt = M 12.0 SPA M012 // majd feltétel nélkül ugrik M011: NOP 0 // feltételes ugrás címke CLR // feltételek teljesülése esetén = M 13.0 // ez a rész végrehajtásra kerül = M 14.0 M012: NOP 0 // feltétel nélküli ugrás címke 11. Példaprogram SPBN A VKE leírását a státusz szó fejezetben találja. SPBB (Ugrás, ha a VKE = 1, és menti a VKE-t a BIE-be) Formátuma: SPBB <címke> A 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 á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. BIEA1A0OVOSORSTAVKE/ER Írja: x - - - - 0 1 1 0 64. Táblázat Státusz szó változásai U M 10.0 // ugrási feltételek U M 11.0 SPBB M011 // ha a feltételek igazak, ugrik SET // egyébként végrehajtja ezt a részt = M 12.0 SPA M012 // majd feltétel nélkül ugrik M011: NOP 0 // feltételes ugrás címke CLR // feltételek teljesülése esetén = M 13.0 // ez a rész végrehajtásra kerül = M 14.0 M012: NOP 0 // feltétel nélküli ugrás címke 12. Példaprogram SPBB A VKE, BIE leírását a státusz szó fejezetben találja. SPBNB (Ugrás, ha a VKE = 0, és menti a VKE-t a BIE-be) Formátuma: SPBNB <címke> A 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 á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. BIEA1A0OVOSORSTAVKE/ER Írja: x - - - - 0 1 1 0 65. Táblázat Státusz szó változásai U M 10.0 // ugrási feltételek U M 11.0 SPBN M011 // ha a feltételek nem igazak, ugrik SET // egyébként végrehajtja ezt a részt = M 12.0 SPA M012 // majd feltétel nélkül ugrik M011: NOP 0 // feltételes ugrás címke CLR // feltételek teljesülése esetén = M 13.0 // ez a rész végrehajtásra kerül = M 14.0 M012: NOP 0 // feltétel nélküli ugrás címke 13. Példaprogram SPBNB A VKE, BIE leírását a státusz szó fejezetben találja. SPBI (Ugrás, ha a BIE = 1) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 1 - 0 66. Táblázat Státusz szó változásai SPBIN (Ugrás, ha a BIE = 0) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 1 - 0 67. Táblázat Státusz szó változásai SPO (Ugrás, ha az OV = 1) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 68. Táblázat Státusz szó változásai L 23333 // túlcsordulás képzése L 234 *I // túlcsordulás OV=1 T MW 22 // L 12 // kikommentelve, 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 14. Példaprogram SPO A VKE, BIE, OV, OS leírását a státusz szó fejezetben találja. SPS (Ugrás, ha az OS = 1) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 69. Táblázat Státusz szó változásai L 23333 // túlcsordulás képzése L 234 *I // túlcsordulás OV=1 T MW 22 L 12 // nincs túlcsordulás, 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 15. Példaprogram SPS A VKE, BIE, OV, OS leírását a státusz szó fejezetben találja. SPZ (Ugrás, ha az eredmény = 0) Formátuma: SPZ <címke> Az 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 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 70. Táblázat Státusz szó változásai L 123 // viszonylag egyszerű összehasonlítás L 123 // melynek várható eredménye egyenlőség SPZ ide // lesz. SPA tov // ha nem egyenlő, tov ide: NOP 0 SET = M 123.0 // ha egyenlő, állítja a bitet tov: NOP 0 16. Példaprogram SPZ Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. SPN (Ugrás, ha az eredmény <> 0) Formátuma: SPN <címke> Az A1 = 0/A0 = 1 vagy 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 A1 = 0/A0 = 1 vagy 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 71. Táblázat Státusz szó változásai L 123 // viszonylag egyszerű összehasonlítás L 122 // melynek várható eredménye <> SPN ide // lesz. SPA tov // ha egyenlő, tov ide: NOP 0 SET = M 123.0 // ha nem egyenlő, állítja a bitet tov: NOP 0 // tov 17. Példaprogram SPN Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. SPP (Ugrás, ha az eredmény > 0) Formátuma: SPP <címke> Az 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 A1 = 1 és A0 =0 abban az esetben következik be, ha az AKKU1 < AKKU2 (lásd 13. Táblázat 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 72. Táblázat Státusz szó változásai L 124 // AKKU2 L 120 // AKKU1 ==I SPP ide // ha AKKU2 > AKKU1, ugrás SPA tov //egyébként, tov ide: NOP 0 SET = M 123.0 // ha a feltétel igaz, állítja a bitet tov: NOP 0 // tov 18. Példaprogram SPP Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. SPM (Ugrás, ha az eredmény < 0) Formátuma: SPM <címke> Az 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 A1 = 0 és A0 =1 abban az esetben következik be, ha az AKKU1 > AKKU2 (lásd 13. Táblázat 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 73. Táblázat Státusz szó változásai L 100 // AKKU2 L 120 // AKKU1 ==I SPM ide // ha AKKU2 < AKKU1, ugrás SPA tov //egyébként, tov ide: NOP 0 SET = M 123.0 // ha a feltétel igaz, állítja a bitet tov: NOP 0 // tov 19. Példaprogram SPM Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. SPPZ (Ugrás, ha az eredmény >= 0) Formátuma: SPPZ <címke> Az A1 = 0/A0 = 0 vagy 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 74. Táblázat Státusz szó változásai L 124 // AKKU2 L 120 // AKKU1 ==I SPPZ ide // ha AKKU2 >= AKKU1, ugrás SPA tov //egyébként, tov ide: NOP 0 SET = M 123.0 // ha a feltétel igaz, állítja a bitet tov: NOP 0 // tov 20. Példaprogram SPPZ Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. SPMZ (Ugrás, ha az eredmény < 0) Formátuma: SPMZ <címke> Az A1 = 0/A0 = 0 vagy 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 75. Táblázat Státusz szó változásai L 100 // AKKU2 L 120 // AKKU1 ==I SPM ide // ha AKKU2 <= AKKU1, ugrás SPA tov //egyébként, tov ide: NOP 0 SET = M 123.0 // ha a feltétel igaz, állítja a bitet tov: NOP 0 // tov 21. Példaprogram SPMZ Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. SPU (Ugráaacute;s, ha érvénytelen az eredmény) Formátuma: SPU <címke> Az 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 A1 = 1 és A0 =1 abban az esetben következik be, ha az ugrást megelőző művelet érvénytelen (lásd 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 76. Táblázat Státusz szó változásai L 100 // AKKU2 L 0 // AKKU1 /I SPU ide // érvénytelen művelet esetén ugrás SPA tov //egyébként, tov ide: NOP 0 SET = M 123.0 // a nullával való osztás érvénytelen tov: NOP 0 // tov 22. Példaprogram SPU Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja. LOOP (hurok) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 77. Táblázat Státusz szó változásai L 7 T MW 8 // Faktoriális alap (7) L 0 T MW 10 // Lépegelő (0) L 1 T MW 12 // Szorozgató (1) L MW 8 // Alap betöltése a számlálóba itt: T MW 14 // Ennek értékét csökkenti ciklusonként a LOOP L MW 10 // Lépegetés L 1 +I T MW 10 // Lépegető L MW 12 // szorozva a szorozgatóval *I T MW 12 // eredmény vissza a szorozgatóba L MW 14 // számláló csökkentése LOOP itt // LOOP-olásonként L MW 10 // eredmény: faktoriális alap (7) L MW 12 // eredmény: faktoriális (7!) (5040) // ha ez utóbbi két változó nem "látszik" // a státuszban, akkor új Netzwerk-be kell másolni ezeket. 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 +IAddiere AKKU 1 und 2 als Ganzzahl (16 Bit) AKKU1 és AKKU2 összeadása 16 bites egész számként -ISubtrahiere AKKU 1 von 2 als Ganzzahl (16 Bit) AKKU1 kivonása AKKU2-ből 16 bites egész számként *IMultipliziere AKKU 1 und 2 als Ganzzahl (16 Bit) AKKU1 és AKKU2 összeszorzása 16 bites egész számként /IDividiere 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) +DAddiere AKKU 1 und 2 als Ganzzahl (32 Bit) AKKU1 és AKKU2 összeadása 32 bites egész számként -DSubtrahiere AKKU 1 von 2 als Ganzzahl (32 Bit) AKKU1 kivonása AKKU2-ből 32 bites egész számként *DMultipliziere AKKU 1 und 2 als Ganzzahl (32 Bit) AKKU1 és AKKU2 összeszorzása 32 bites egész számként /DDividiere AKKU 2 durch 1 als Ganzzahl (32 Bit) AKKU2 osztása AKKU1-gyel 32 bites egész számként MODDivisionsrest 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 A1, A0, OV és OS státuszbiteket, 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, A1, A0, OV, OS leírását a 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 ( INT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L MW 10 // AKKU2 L MW 12 // AKKU1 +I // összeadás T MW 14 // eredmény -> AKKU1-be 24. Példaprogram +I A VKE, A1, A0, OV, OS leírását a 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 ( INT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L MW 10 // AKKU2 L MW 12 // AKKU1 -I // kivonás T MW 14 // eredmény -> AKKU1-be 25. Példaprogram -I A VKE, A1, A0, OV, OS leírását a 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 ( INT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L MW 10 // AKKU2 L MW 12 // AKKU1 *I // szorzás T MW 14 // eredmény -> AKKU1-ből 26. Példaprogram *I A VKE, A1, A0, OV, OS leírását a 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 ( INT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L 254 T MW 10 // AKKU2 tartalma L 5 T MW 12 // AKKU1 tartalma L MW 10 // AKKU2 L MW 12 // AKKU1 /I // összeadás T MD 20 // eredmény -> AKKU1-be 27. Példaprogram /I 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, A1, A0, OV, OS leírását a státusz szó fejezetben találja. + (Egész szám konstans hozzáadása (16, 32 bit)) Formátuma: + <egész szám konstans formátum>+ <egész szám 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 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 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 88. Táblázat Státusz szó változásai L 100 T MW 100 // kezdőérték betöltése L 100 T MD 200 // szintén L MW 100 // 16 bites egész szám + 12 // 16 bites egész konstans T MW 100 // eredmény L MD 200 // 32 bites egész szám + L#40000 // 32 bites egész konstans T MD 200 // eredmény 28. Példaprogram +konstans +D (AKKU1 és AKKU2 összeadása 32 bites egész számként) Formátuma: +D AKKU1 és AKKU2 összeadása 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként ( DINT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L MD 8 // AKKU2 L MD 12 // AKKU1 +D // összeadás T MD 16 // eredmény -> AKKU1-be 29. Példaprogram +D A VKE, A1, A0, OV, OS leírását a 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 ( DINT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L MD 8 // AKKU2 L MD 12 // AKKU1 -D // kivonás T MD 16 // eredmény -> AKKU1-be 30. Példaprogram -D A VKE, A1, A0, OV, OS leírását a 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 ( INT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L MD 8 // AKKU2 L MD 12 // AKKU1 *D // szorzás T MW 16 // eredmény -> AKKU1-be 31. Példaprogram *D A VKE, A1, A0, OV, OS leírását a 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 művelettel kaphatja meg a maradékot). Az akku-k tartalmát a művelet egész számként (DINT formátumként) értelmezi. A művelet a 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. BIEA1A0OVOSORSTAVKE/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 L 10000 T MD 100 // kezdőérték betöltése L 3 T MD 104 // szintén L MD 100 // AKKU2 L MD 104 // AKKU1 /D // 32 bites osztás T MD 108 // csak az eredmény, maradék nélkül 32. Példaprogram /D Osztott érték (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, A1, A0, OV, OS leírását a státusz szó fejezetben találja. MOD (AKKU2 osztási maradéka 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 maradélot tartalmazza, az eredményt nem. (A /D művelettel kaphatja meg az eredményt). Az akku-k tartalmát a művelet egész számként (DINT formátumként) értelmezi. A művelet a 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^A1^A0^OV^OS^OR^STA^VKE^/ER| Írja: - x x x x - - - - 97. Táblázat Státusz szó változásai L 10000 T MD 100 // kezdőérték betöltése L 3 T MD 104 // szintén L MD 100 // AKKU2 L MD 104 // AKKU1 MOD // 32 bites osztás maradéka T MD 108 // csak a maradék 33. Példaprogram MOD Törtszám műveletek MűveletNémet leírásMagyar leírás +RAddiere AKKU 1 und 2 als Gleitpunktzahl (32 Bit)AKKU1 és AKKU2 összeadása 32 bites törtszámként -RSubtrahiere AKKU 1 von 2 als Gleitpunktzahl (32 Bit)AKKU1 kivonása AKKU2-ből 32 bites törtszámként *RMultipliziere AKKU 1 und 2 als Gleitpunktzahl (32 Bit)AKKU1 és AKKU2 összeszorzása 32 bites törtszámként /RDividiere AKKU 2 durch 1 als Gleitpunktzahl (32 Bit)AKKU2 osztása AKKU1-gyel 32 bites törtszámként ABSAbsolutwert einer Gleitpunktzahl (32 Bit, IEEE-FP)32 bites törtszám abszolút értéke SQRBilden des Quadrats einer Gleitpunktzahl (32 Bit)32 bites törtszám négyzete SQRTBilden der Quadratwurzel einer Gleitpunktzahl (32 Bit)32 bites törtszám köbgyöke EXPBilden des Exponentialwerts einer Gleitpunktzahl (32 Bit)32 bites törtszám exponenciális értéke LNBilden des natürlichen Logarithmus einer Gleitpunktzahl (32 Bit)32 bites törtszám természetes logaritmusa SINBilden des Sinus eines Winkels als Gleitpunktzahlen (32 Bit)32 bites törtszám szinusz értéke COSBilden des Cosinus eines Winkels als Gleitpunktzahlen (32 Bit)32 bites törtszám koszinusz értéke TANBilden des Tangens eines Winkels als Gleitpunktzahlen (32 Bit)32 bites törtszám tangens értéke ASINBilden des Arcussinus einer Gleitpunktzahl (32 Bit)32 bites törtszám arkusz-szinusz értéke ACOSBilden des Arcuscosinus einer Gleitpunktzahl (32 Bit)32 bites törtszám arkusz-koszinusz értéke ATANBilden 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A művelet a 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - végtelen0111Túlcsordult - qNaN1111 101. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 102. Táblázat Státusz szó változásai L 2.200000e+001 // értékek állítása T MD 8 L 3.300000e+001 T MD 12 L MD 8 // AKKU2 L MD 12 // AKKU1 +R // művelet T MD 16 // AKKU1 -> MD16 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként).A művelet a 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - végtelen0111Túlcsordult - qNaN1111 103. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 104. Táblázat Státusz szó változásai L 2.200000e+001 // értékek állítása T MD 8 L 3.300000e+001 T MD 12 L MD 8 // AKKU2 L MD 12 // AKKU1 -R // művelet T MD 16 // AKKU1 -> MD16 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként).A művelet a 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - végtelen0111Túlcsordult - qNaN1111 105. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 106. Táblázat Státusz szó változásai L 2.200000e+001 // értékek állítása T MD 8 L 3.300000e+001 T MD 12 L MD 8 // AKKU2 L MD 12 // AKKU1 *R // művelet T MD 16 // AKKU1 -> MD16 36. Példaprogram *R /R (AKKU2 osztása AKKU1-gyel 32 bites törtszámként) AKKU2 osztása AKKU1-vel 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként).A művelet a 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - végtelen0111Túlcsordult - qNaN1111 107. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 108. Táblázat Státusz szó változásai L 2.200000e+001 // értékek állítása T MD 8 L 3.300000e+001 T MD 12 L MD 8 // AKKU2 L MD 12 // AKKU1 /R // művelet T MD 16 // AKKU1 -> MD16 37. Példaprogram /R ABS (32 bites törtszám abszolút értéke) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A művelet a státuszbitek értékét nem befolyásolja. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 109. Táblázat Státusz szó változásai L -1.172200e+002 // értékek állítása T MD 8 L MD 8 ABS // abszolút érték T MD 12 // eredmény az MD12-be 38. Példaprogram ABS SQR (32 bites törtszám négyzete) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - qNaN1111 110. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 111. Táblázat Státusz szó változásai L 2.000000e+001 // értékek állítása T MD 8 L MD 8 SQR // négyzetérték T MD 12 // eredmény az MD12-be 39. Példaprogram SQR SQRT (32 bites törtszám négyzetgyöke) Az SQRT a 32 bites (IEEE-FP) AKKU1 négyzetgyökét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma csak egy pozitív szám vagy nulla lehet. A 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - qNaN1111 112. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 113. Táblázat Státusz szó változásai L 2.250000e+002 // értékek állítása T MD 8 L MD 8 SQRT // négyzetgyök érték T MD 12 // eredmény az MD12-be 40.Példaprogram SQRT EXP (32 bites törtszám exponenciális értéke) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - qNaN1111 114. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 115. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 EXP // exponenciális érték T MD 12 // eredmény az MD12-be 41. Példaprogram EXP LN (32 bites törtszám természetes logaritmusa) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma csak egy pozitív szám lehet. A 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-benA1A0OVOSNotesz + qNaN1111 + végtelen1011Túlcsordult + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - végtelen0111Túlcsordult - qNaN1111 116. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 117. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 LN // természetes alapú logaritmus T MD 12 // eredmény az MD12-be 42. Példaprogram LN SIN (32 bites törtszám szinusz értéke) A SIN a 32 bites (IEEE-FP) AKKU1 szinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A 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-benA1A0OVOSNotesz + qNaN1111 + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - qNaN1111 118. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 119. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 SIN // sinus T MD 12 // eredmény az MD12-be 43. Példaprogram SIN COS (32 bites törtszám koszinusz értéke) A COS a 32 bites (IEEE-FP) AKKU1 koszinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A 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-benA1A0OVOSNotesz + qNaN1111 + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - qNaN1111 120. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 121. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 SIN // cosinus T MD 12 // eredmény az MD12-be 44. Példaprogram COS TAN (32 bites törtszám tangens értéke) A TAN a 32 bites (IEEE-FP) AKKU1 tangens értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A 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-benA1A0OVOSNotesz + qNaN1111 + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - qNaN1111 122. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 123. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 TAN // tangens T MD 12 // eredmény az MD12-be 45. Példaprogram TAN ASIN (32 bites törtszám arkusz szinusz értéke) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma -1 < érték < 1 lehet. A 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-benA1A0OVOSNotesz + qNaN1111 + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - qNaN1111 124. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 125. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 ASIN // arcussinus T MD 12 // eredmény az MD12-be 46. Példaprogram ASIN ACOS (32 bites törtszám arkusz koszinusz értéke) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma -1 < érték < 1 lehet. A 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-benA1A0OVOSNotesz + qNaN1111 + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - qNaN1111 126. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - x x x x - - - - 127. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 ACOS // arcuscosinus T MD 12 // eredmény az MD12-be 47. Példaprogram ACOS ATAN (32 bites törtszám arkusz tangens értéke) 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 (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A 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-benA1A0OVOSNotesz + qNaN1111 + normalizált100- + denormalizált0011Túlcsordult + nulla000- - nulla000- - denormalizált0011Túlcsordult - normalizált010- - qNaN1111 128. Táblázat A1, A0, OV, OS státuszbitek állapota BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 129. Táblázat Státusz szó változásai L 1.500000e-001 // értékek állítása T MD 8 L MD 8 ATAN // arkusz tangens T MD 12 // eredmény az MD12-be 48. Példaprogram ATAN Betöltés/mozgatás műveletek Betöltés műveletek UtasításNémetülMagyarul LLadeBetöltés L STWLade Statuswort in AKKU 1Státusz szó betöltése az AKKU1-be LAR1Lade Adreßregister 1 mit Inhalt von AKKU 11. 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 AR2Lade Adreßregister 1 mit Inhalt von Adressregister 22. címregiszter betöltése az 1. címregiszterbe LAR2Lade Adreßregister 2 mit Inhalt von AKKU 12. 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ásNémetülMagyarul TTransferiereMozgatás T STWTransferiere AKKU 1 in StatuswortStátusz szó feltöltése az AKKU1-ből TARTausche Adreßregister 1 mit 21. és 2. címregiszter cseréje TAR1Transferiere Adreßregister 1 in AKKU 11. 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 AR2Transferiere Adreßregister 1 in Adreßregister 21. címregiszter mozgatása a 2. címregiszterbe TAR2Transferiere Adreßregister 2 in AKKU 12. 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 +AR1Addiere AKKU 1 zum Adreßregister 1AKKU1 értékének hozzáadása az 1. címregiszterhez +AR2Addiere AKKU 1 zum Adreßregister 2AKKU1 é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) MűveletAdattípusOperandusForráscím LBYTEE, A, PE, M, L, D0..65535 LWORDPointer, paraméter0..65534 LDWORD0..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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 132. Táblázat Státusz szó változásai // 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 49. Példaprogram L L STW (Státusz szó betöltése az AKKU1-be) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 133. Táblázat Státusz szó változásai L STW // Státusz szó betöltése T MW 10 // átmásolása az MW10-be 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) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 109. Táblázat Státusz szó változásai L 360 // konstans 360 az AR1-be LAR1 // AR1 a címregiszter 1-be 51. Példaprogram LAR1 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) Címregiszter (1.) feltöltése 32 bites pointer-ként egy duplaszóból (DWORD) vagy pointer konstansból. A művelet a státuszbitek állapotát nem befolyásolja. Ellenkező irányú művelete a TAR1 <D>. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 135. Táblázat Státusz szó változásai 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 52. Példaprogram LAR1 <D> 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 109. Táblázat Státusz szó változásai L 123 // 123 (bit) másolása LAR1 // a 2.címregiszterbe L 321 // 321 (bit) másolása LAR2 // a 2.címregiszterbe LAR1 AR2 // a 2.regiszer másolása az 1.-be L 123 // 123 (bit) másolása LAR1 // a 2.címregiszterbe L 321 // 321 (bit) másolása LAR2 // a 2.címregiszterbe TAR1 AR2 // a 1.regiszer másolása az 2.-be 53. Példaprogram LAR1 AR2 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) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 109. Táblázat Státusz szó változásai L 360 // konstans 360 az AR1-be LAR2 // AR1 a címregiszter 1-be 54. Példaprogram LAR2 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 (DWORD) vagy pointer konstansból. A művelet a státuszbitek állapotát nem befolyásolja. Ellenkező irányú művelete a TAR2 <D>. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 138. Táblázat Státusz szó változásai 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 55. Példaprogram LAR2 <D> 54. ábra Példaprogram státusza T (Mozgatás) MűveletAdattípusOperandusForráscím TBYTEE, A, PE, M, L, D0..65535 TWORDPointer, paraméter0..65534 TDWORD0..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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 140. Táblázat Státusz szó változásai // byte hosszú mozgatás az AKKU1-ből T MB 10 // MB10 az AKKU1-L-L-ből T DB10.DBB 10 // DB10.DBB10 az AKKU1-L-L-ből T AB 10 // AB10 az AKKU1-L-L-ből // word hosszú mozgatás az AKKU1-ből T MW 10 // MW10 az AKKU1-L-ből T DB10.DBW 10 // DB10.DBW10 az AKKU1-L-ből // dword hosszú mozgatás az AKKU1-ből T MD 10 // MD10 az AKKU1-ből T DB10.DBD 10 // DB10.DBD10 az AKKU1-ből 56. Példaprogram T T STW (Státusz szó feltöltése az AKKU1-ből) 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. BIEA1A0OVOSORSTAVKE/ER Írja: x x x x x x x x x 141. Táblázat Státusz szó változásai L 2#10000 // maszk (4.bit) (OS bit) L STW // státusz szó betöltése OW // össze vagy-ol T STW // 5.bit állítása a státusz szóban 57. Példaprogram T STW 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) Az 1. és 2. címregiszter cseréje. A művelet a státusz szó tartalmát nem befolyásolja. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 142. Táblázat Státusz szó változásai 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 58. Példaprogram TAR 56. ábra Példaprogram státusza TAR1 (1. címregiszter mozgatása az AKKU1-be) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 143. Táblázat Státusz szó változásai LAR1 P#111.1 // 1.címregiszter feltöltése TAR1 // 1.címregiszter másolása az AKKU1-be T MW 10 // AKKU1 az MW10-be 59. Példaprogram TAR1 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> (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>. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 144. Táblázat Státusz szó változásai 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 60. Példaprogram TAR1 <D> 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) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 145. Táblázat Státusz szó változásai L 123 // 123 (bit) másolása LAR1 // a 2.címregiszterbe L 321 // 321 (bit) másolása LAR2 // a 2.címregiszterbe LAR1 AR2 // a 2.regiszer másolása az 1.-be L 123 // 123 (bit) másolása LAR1 // a 2.címregiszterbe L 321 // 321 (bit) másolása LAR2 // a 2.címregiszterbe TAR1 AR2 // a 1.regiszer másolása az 2.-be 61. Példaprogram TAR1 AR2 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) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 146. Táblázat Státusz szó változásai L 321 // 321 (bit) másolása LAR2 // a 2.címregiszterbe TAR2 // 2.címregiszter az AKKU1-be T MW 10 // AKKU1 az MW10-be 62. Példaprogram TAR2 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) 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>. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 147. Táblázat Státusz szó változásai L 321 // 321 (bit) másolása LAR2 // a 2.címregiszterbe TAR2 MD 10 // 2.címregiszter az MD10-be 63. Példaprogram TAR2 <D> +AR1 (AKKU1 értékének hozzáadása az 1. címregiszterhez) Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR1-hez. L 355 // 355 érték (INT) +AR1 // hozzáadása az 1.címregiszter értékéhez AR1 p#300.0 // a pointer által kijelölt érték hozzáadása az AR1-hez 63b. Példaprogram +AR1 +AR2 (AKKU1 értékének hozzáadása a 2. címregiszterhez) Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR2-höz. L 355 // 355 érték (INT) +AR2 // hozzáadása a 2.címregiszter értékéhez AR2 p#300.0 // a pointer által kijelölt érték hozzáadása az AR2-höz 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űveletNémetülMagyarul SSISchiebe Vorzeichen rechts Ganzzahl (16 Bit)Előjeles 16 bites szám léptetése jobbra SSDSchiebe Vorzeichen rechts Ganzzahl (32 Bit)Előjeles 32 bites szám léptetése jobbra SLWSchiebe links Wort (16 Bit)16 bites szó balra léptetése SRWSchiebe rechts Wort (16 Bit)16 bites szó jobbra léptetése SLDSchiebe links Doppelwort (32 Bit)32 bites duplaszó balra léptetése SRDSchiebe 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) Az előjeles 16 bites szám (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ó 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 A0 és 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). BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 149. Táblázat Státusz szó változásai L 3 // AKKU2 (léptetések száma) L 125 // AKKU1 (léptetendő érték) SSI // léptetés T MW 10 // AKKU1 -> MW10 64. Példaprogram SSI Az egyszerűbb példaprogram esetén a 125 értéket léptethetjük 3-szor jobbra, így az eredmény (125 / 2^3 ) 15 lesz, és ezt az MW10-ben találjuk meg. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MW 20 // MW20 értékét lépteti eggyel balra SSI 1 T MW 20 // eredmény vissza L STW // státusz szó olvasása T MW 22 // státusz szó -> MW22 U M 23.7 // státusz szó A1 -> MW20 bal utolsó bitjébe = M 20.7 ide: NOP 0 // ugrás vége L S5T#500MS // futás időzítés : 500 ms UN T 12 SE T 12 65. Példaprogram SSI <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) Az előjeles 32 bites szám (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ó 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 A0 és 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). BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 150. Táblázat Státusz szó változásai L 4 // AKKU2 (léptetések száma) L 13400 // AKKU1 (léptetendő érték) SSD // léptetés T MD 10 // AKKU1 -> MD10 66. Példaprogram SSD Az egyszerűbb példaprogram esetén a 13400 értéket léptethetjük 4-szor jobbra, így az eredmény (13400 / 2^4 ) 837 lesz, és ezt az MD10-ben találjuk meg. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MW20 értékét lépteti eggyel balra SSD 1 T MD 20 // eredmény vissza L STW // státusz szó olvasása T MW 10 // státusz szó -> MW10 U M 11.7 // státusz szó A1 -> MD20 bal utolsó bitjébe = M 20.7 ide: NOP 0 // ugrás vége L S5T#200MS // futás időzítés : 500 ms UN T 12 SE T 12 67. Példaprogram SSD <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) A 16 bites szó (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ó 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 A0 és 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 művelettel történik. Azonos irányban duplaszó hosszon a SLD, ellenkező irányban duplaszó hosszon az SRD művelet végzi a léptetést. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 151. Táblázat Státusz szó változásai L 4 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) SLW // léptetés T MW 10 // AKKU1 -> MW10 68. Példaprogram SLW Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 * 2^4 ) 8 000 lesz, és ezt az MW10-ben találjuk meg. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MW 20 // MW20 értékét lépteti eggyel balra U M 1.0 // irányválasztó bit 0:jobbra, 1: balra SPB bal SRW 1 // irány: jobbra SPA tov bal: SLW 1 // irány: balra tov: T MW 20 // eredmény vissza L STW // státusz szó olvasása T MW 10 // státusz szó -> MW10 U M 1.0 // irányválasztó SPB ball U M 11.7 // státusz szó A1 = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet SPA tovv ball: U M 11.7 = M 21.0 // ha balra, akkor hátul pótolja a kiesett bitet tovv: NOP 0 ide: NOP 0 // ugrás vége L S5T#200MS // futás időzítés : 500 ms UN T 12 SE T 12 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) A 16 bites szó (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ó 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 A0 és 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 művelettel történik. Azonos irányban duplaszó hosszon a SRD, ellenkező irányban duplaszó hosszon az SLD művelet végzi a léptetést. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 152. Táblázat Státusz szó változásai L 4 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) SRW // léptetés T MW 10 // AKKU1 -> MW10 70. Példaprogram SRW Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer jobbra, így az eredmény (500 / 2^4 ) 31 lesz, és ezt az MW10-ben találjuk meg. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MW 20 // MW20 értékét lépteti eggyel balra U M 1.0 // irányválasztó bit 0:jobbra, 1: balra SPB bal SRW 1 // irány: jobbra SPA tov bal: SLW 1 // irány: balra tov: T MW 20 // eredmény vissza L STW // státusz szó olvasása T MW 10 // státusz szó -> MW10 U M 1.0 // irányválasztó SPB ball U M 11.7 // státusz szó A1 = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet SPA tovv ball: U M 11.7 = M 21.0 // ha balra, akkor hátul pótolja a kiesett bitet tovv: NOP 0 ide: NOP 0 // ugrás vége L S5T#200MS // futás időzítés : 500 ms UN T 12 SE T 12 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) A 32 bites szó (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ó 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 A0 és 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 művelettel, az ellenkező irányú szó hosszú forgatás az SRW művelettel történik. ellenkező irányban duplaszó hosszon az SRD művelet végzi a léptetést. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 109. Táblázat Státusz szó változásai L 4 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) SLD // léptetés T MD 10 // AKKU1 -> MD10 72. Példaprogram SLD Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 * 2^4 ) 8 000 lesz, és ezt az MD10-ben találjuk meg. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MD20 értékét lépteti eggyel balra U M 1.0 // irányválasztó bit 0:jobbra, 1: balra SPB bal SRD 1 // irány: jobbra SPA tov bal: SLD 1 // irány: balra tov: T MD 20 // eredmény vissza L STW // státusz szó olvasása T MW 10 // státusz szó -> MW10 U M 1.0 // irányválasztó SPB ball U M 11.7 // státusz szó A1 = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet SPA tovv ball: U M 11.7 = M 23.0 // ha balra, akkor hátul pótolja a kiesett bitet tovv: NOP 0 ide: NOP 0 // ugrás vége L S5T#200MS // futás időzítés : 500 ms UN T 12 SE T 12 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) A 32 bites szó (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ó 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. AzA0 és 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 művelettel, az ellenkező irányú szó hosszú forgatás az SLW művelettel történik. ellenkező irányban duplaszó hosszon az SLD művelet végzi a léptetést. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 154. Táblázat Státusz szó változásai L 4 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) SRD // léptetés T MD 10 // AKKU1 -> MD10 74. Példaprogram SRD Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 / 2^4 ) 31 lesz, és ezt az MD10-ben találjuk meg. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MD20 értékét lépteti eggyel balra U M 1.0 // irányválasztó bit 0:jobbra, 1: balra SPB bal SRD 1 // irány: jobbra SPA tov bal: SLD 1 // irány: balra tov: T MD 20 // eredmény vissza L STW // státusz szó olvasása T MW 10 // státusz szó -> MW10 U M 1.0 // irányválasztó SPB ball U M 11.7 // státusz szó A1 = M 20.7 // ha jobbra, akkor elöl pótolja a kiesett bitet SPA tovv ball: U M 11.7 = M 23.0 // ha balra, akkor hátul pótolja a kiesett bitet tovv: NOP 0 ide: NOP 0 // ugrás vége L S5T#200MS // futás időzítés : 500 ms UN T 12 SE T 12 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 A1 státusz bitet használja. A műveletek az A0-t „0”-ra állítják. Parancsnémetülmagyarul RLDRotiere links Doppelwort (32 Bit)32 bites duplaszó forgatása balra RRDRotiere rechts Doppelwort (32 Bit)32 bites duplaszó forgatása jobbra RLDARotiere Akku 1 links über A1-Anzeige (32 Bit)32 bites duplaszó forgatása balra A1 bit jelzéssel RRDARotiere 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) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 156. Táblázat Státusz szó változásai L 31 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) RLD // léptetés T MD 10 // AKKU1 -> MD10 76. Példaprogram RLD Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel balra forgatjuk. Ez egy kettővel való osztásnak felel meg, így az MD10-be 250-et kapunk eredményül. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MD20 értékét lépteti eggyel balra RLD 1 T MD 20 // az eredményt visszateszi az MD20-ba ide: NOP 0 L S5T#200MS // futás időzítés : 250 ms UN T 12 SE T 12 77. Példaprogram RLD <forgatás_szám> RRD (32 bites duplaszó forgatása jobbra) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 157. Táblázat Státusz szó változásai L 31 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) RRD // léptetés T MD 10 // AKKU1 -> MD10 78. Példaprogram RRD Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel jobbra forgatjuk. Ez egy kettővel való szorzásnak felel meg, így az MD10-be 1000-et kapunk eredményül. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MD20 értékét lépteti eggyel jobbra RRD 1 T MD 20 // az eredményt visszateszi az MD20-ba ide: NOP 0 L S5T#200MS // futás időzítés : 250 ms UN T 12 SE T 12 79. Példaprogram RRD <forgatás_szám> RLDA (32 bites duplaszó forgatása balra) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 158. Táblázat Státusz szó változásai L 31 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) RLDA // léptetés T MD 10 // AKKU1 -> MD10 80. Példaprogram RLDA Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel balra forgatjuk. Ez egy kettővel való osztásnak felel meg, így az MD10-be 250-et kapunk eredményül. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MD20 értékét lépteti eggyel balra RLDA 1 T MD 20 // az eredményt visszateszi az MD20-ba ide: NOP 0 L S5T#200MS // futás időzítés : 250 ms UN T 12 SE T 12 81. Példaprogram RLDA <forgatás_szám> RRDA (32 bites duplaszó forgatása jobbra) 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. BIEA1A0OVOSORSTAVKE/ER Írja: - x x x - - - - - 159. Táblázat Státusz szó változásai L 31 // AKKU2 (léptetések száma) L 500 // AKKU1 (léptetendő érték) RRDA // léptetés T MD 10 // AKKU1 -> MD10 82. Példaprogram RRDA Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel jobbra forgatjuk. Ez egy kettővel való szorzásnak felel meg, így az MD10-be 1000-et kapunk eredményül. UN T 12 // ha lefutott az idő SPB ide // bejut a végrehajtáshoz L MD 20 // MD20 értékét lépteti eggyel jobbra RRDA 1 T MD 20 // az eredményt visszateszi az MD20-ba ide: NOP 0 L S5T#200MS // futás időzítés : 250 ms UN T 12 SE T 12 83. Példaprogram RRDA <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: Parancsnémetülmagyarul FRFreigabe TimerTimer feloldása LLade aktuellen Zeitwert als Ganzzahl in AKKU 1Időérték megadása AKKU1-be, egész szám formátumban LCLade aktuellen Zeitwert als BCD in AKKU 1Időérték megadása AKKU1-be, BCD formátumban RRücksetze TimerTimer nullázása SIZeit als ImpulsImpulzus időfunkció SVZeit als verlängerter ImpulsMeghosszabbított impulzus időfunkció SE Zeit als EinschaltverzögerungBekapcsolás késleltetési időfunkció SSZeit als speichernde EinschaltverzögerungTárolt bekapcsolás késleltetési időfunkció SAZeit als AusschaltverzögerungKikapcsolás késleltetési időfunkció 160. Táblázat időfunkciók összefoglalás FR (Timer feloldása) Formátuma FR <idő> A számláló feloldása akkor történik meg, ha az utasítás előtt a „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. BIEA1A0OVOSORSTAVKE/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) 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 ( BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 162. Táblázat Státusz szó változásai LC (Időérték megadása AKKU1-be, BCD formátumban) Formátuma: LC <idő> Az idő értékét betölti az AKKU1-L-be 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. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - - - - - 163. Táblázat Státusz szó változásai R (Timer nullázása) 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 státusz bit értéke „0”-ról „1”-re vált. BIEA1A0OVOSORSTAVKE/ER Írja: - - - - - 0 - - 0 164. Táblázat Státusz szó változásai SI (Impulzus időfunkció) Formátuma: SI <idő> 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ó) 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ó) 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 U E 0.0 L S5T#10s SE T1 U T1 = A 4.0