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:
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
/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”.
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
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).
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:
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:
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.
4. Táblázat Státusz szó változásai
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.
6. Táblázat Státusz szó változásai
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.
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.
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.
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.
11. Táblázat Státusz szó változásai
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.
12. Táblázat Státusz szó változásai
= (egyenlő)
= <bit> az VKE értékét (a megelőző bitműveletek végeredményét) kiírja a megcímzett bitre.
13. Táblázat Státusz szó változásai
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.
14. Táblázat Státusz szó változásai
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.
15. Táblázat Státusz szó változásai
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)
==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
20. Táblázat Státusz szó változásai
? 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
22. Táblázat Státusz szó változásai
? 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
24. Táblázat Státusz szó változásai
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
25. Táblázat Státusz szó változásai
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.
26. Táblázat Státusz szó változásai
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
27. Táblázat Státusz szó változásai
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.
28. Táblázat Státusz szó változásai
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.
29. Táblázat Státusz szó változásai
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.
30. Táblázat Státusz szó változásai
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.
31. Táblázat Státusz szó változásai
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.
32. Táblázat Státusz szó változásai
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.
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
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.
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
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.
37. Táblázat Státusz szó változásai
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.
38. Táblázat Státusz szó változásai
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.
39. Táblázat Státusz szó változásai
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.
40. Táblázat Státusz szó változásai
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.
41. Táblázat Státusz szó változásai
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.
42. Táblázat Státusz szó változásai
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.
43. Táblázat Státusz szó változásai
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.
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).
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.
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.
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.
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.
50. Táblázat Státusz szó változásai
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.
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
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.
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.
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.
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
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.
56. Táblázat Státusz szó változásai
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.
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.
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).
Parancs | németül | magyarul |
---|---|---|
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |
---|---|---|
+I | Addiere AKKU 1 und 2 als Ganzzahl (16 Bit) | AKKU1 és AKKU2 összeadása 16 bites egész számként |
-I | Subtrahiere AKKU 1 von 2 als Ganzzahl (16 Bit) | AKKU1 kivonása AKKU2-ből 16 bites egész számként |
*I | Multipliziere AKKU 1 und 2 als Ganzzahl (16 Bit) | AKKU1 és AKKU2 összeszorzása 16 bites egész számként |
/I | Dividiere AKKU 2 durch 1 als Ganzzahl (16 Bit) | AKKU2 osztása AKKU1-gyel 16 bites egész számként |
+ | Addiere Ganzzahlkonstante (16, 32 Bit) | Egész szám konstans hozzáadása (16, 32 bit) |
+D | Addiere AKKU 1 und 2 als Ganzzahl (32 Bit) | AKKU1 és AKKU2 összeadása 32 bites egész számként |
-D | Subtrahiere AKKU 1 von 2 als Ganzzahl (32 Bit) | AKKU1 kivonása AKKU2-ből 32 bites egész számként |
*D | Multipliziere AKKU 1 und 2 als Ganzzahl (32 Bit) | AKKU1 és AKKU2 összeszorzása 32 bites egész számként |
/D | Dividiere AKKU 2 durch 1 als Ganzzahl (32 Bit) | AKKU2 osztása AKKU1-gyel 32 bites egész számként |
MOD | Divisionsrest Ganzzahl (32 Bit) | Maradék képzés 32 bites egész számon 78. Táblázat Egész szám műveletek |
78. Táblázat Egész szám műveletek
Az egész szám műveletek befolyásolják az
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.
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.
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.
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.
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.
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.
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.
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.
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.
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űvelet | Német leírás | Magyar leírás |
---|---|---|
+R | Addiere AKKU 1 und 2 als Gleitpunktzahl (32 Bit) | AKKU1 és AKKU2 összeadása 32 bites törtszámként |
-R | Subtrahiere AKKU 1 von 2 als Gleitpunktzahl (32 Bit) | AKKU1 kivonása AKKU2-ből 32 bites törtszámként |
*R | Multipliziere AKKU 1 und 2 als Gleitpunktzahl (32 Bit) | AKKU1 és AKKU2 összeszorzása 32 bites törtszámként |
/R | Dividiere AKKU 2 durch 1 als Gleitpunktzahl (32 Bit) | AKKU2 osztása AKKU1-gyel 32 bites törtszámként |
ABS | Absolutwert einer Gleitpunktzahl (32 Bit, IEEE-FP) | 32 bites törtszám abszolút értéke |
SQR | Bilden des Quadrats einer Gleitpunktzahl (32 Bit) | 32 bites törtszám négyzete |
SQRT | Bilden der Quadratwurzel einer Gleitpunktzahl (32 Bit) | 32 bites törtszám köbgyöke |
EXP | Bilden des Exponentialwerts einer Gleitpunktzahl (32 Bit) | 32 bites törtszám exponenciális értéke |
LN | Bilden des natürlichen Logarithmus einer Gleitpunktzahl (32 Bit) | 32 bites törtszám természetes logaritmusa |
SIN | Bilden des Sinus eines Winkels als Gleitpunktzahlen (32 Bit) | 32 bites törtszám szinusz értéke |
COS | Bilden des Cosinus eines Winkels als Gleitpunktzahlen (32 Bit) | 32 bites törtszám koszinusz értéke |
TAN | Bilden des Tangens eines Winkels als Gleitpunktzahlen (32 Bit) | 32 bites törtszám tangens értéke |
ASIN | Bilden des Arcussinus einer Gleitpunktzahl (32 Bit) | 32 bites törtszám arkusz-szinusz értéke |
ACOS | Bilden des Arcuscosinus einer Gleitpunktzahl (32 Bit) | 32 bites törtszám arkusz-koszinusz értéke |
ATAN | Bilden des Arcustangens einer Gleitpunktzahl (32 Bit) | 32 bites törtszám arkusz-tangens értéke |
100. Táblázat Törtszám műveletek
+R (AKKU1 és AKKU2 összeadása 32 bites törtszámként)
AKKU1 és AKKU2 összeadása 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám (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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- végtelen | 0 | 1 | 1 | 1 | Túlcsordult |
- qNaN | 1 | 1 | 1 | 1 |
101. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- végtelen | 0 | 1 | 1 | 1 | Túlcsordult |
- qNaN | 1 | 1 | 1 | 1 |
103. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- végtelen | 0 | 1 | 1 | 1 | Túlcsordult |
- qNaN | 1 | 1 | 1 | 1 |
105. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- végtelen | 0 | 1 | 1 | 1 | Túlcsordult |
- qNaN | 1 | 1 | 1 | 1 |
107. Táblázat A1, A0, OV, OS státuszbitek állapota
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.
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
110. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
112. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
114. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ végtelen | 1 | 0 | 1 | 1 | Túlcsordult |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- végtelen | 0 | 1 | 1 | 1 | Túlcsordult |
- qNaN | 1 | 1 | 1 | 1 |
116. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
118. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
120. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
122. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
124. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
126. Táblázat A1, A0, OV, OS státuszbitek állapota
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-ben | A1 | A0 | OV | OS | Notesz |
---|---|---|---|---|---|
+ qNaN | 1 | 1 | 1 | 1 | |
+ normalizált | 1 | 0 | 0 | - | |
+ denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
+ nulla | 0 | 0 | 0 | - | |
- nulla | 0 | 0 | 0 | - | |
- denormalizált | 0 | 0 | 1 | 1 | Túlcsordult |
- normalizált | 0 | 1 | 0 | - | |
- qNaN | 1 | 1 | 1 | 1 |
128. Táblázat A1, A0, OV, OS státuszbitek állapota
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ás | Németül | Magyarul |
---|---|---|
L | Lade | Betöltés |
L STW | Lade Statuswort in AKKU 1 | Státusz szó betöltése az AKKU1-be |
LAR1 | Lade Adreßregister 1 mit Inhalt von AKKU 1 | 1. címregiszter feltöltése AKKU1-ből |
LAR1<D> | Lade Adreßregister 1 mit Pointer (32 Bit-Format) | 1. címregiszter betöltése 32 bites pointerrel |
LAR1 AR2 | Lade Adreßregister 1 mit Inhalt von Adressregister 2 | 2. címregiszter betöltése az 1. címregiszterbe |
LAR2 | Lade Adreßregister 2 mit Inhalt von AKKU 1 | 2. címregiszter feltöltése AKKU1-ből |
LAR2<D> | Lade Adreßregister 2 mit Ganzzahl (32 Bit) | 2. címregiszter betöltése 32 bites pointerrel |
Mozgatás műveletek
Utasítás | Németül | Magyarul |
---|---|---|
T | Transferiere | Mozgatás |
T STW | Transferiere AKKU 1 in Statuswort | Státusz szó feltöltése az AKKU1-ből |
TAR | Tausche Adreßregister 1 mit 2 | 1. és 2. címregiszter cseréje |
TAR1 | Transferiere Adreßregister 1 in AKKU 1 | 1. címregiszter mozgatása az AKKU1-be |
TAR1<D> | Transferiere Adreßregister 1 nach Zieladresse (32-Bit-Pointer) | 1. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre |
TAR1 AR2 | Transferiere Adreßregister 1 in Adreßregister 2 | 1. címregiszter mozgatása a 2. címregiszterbe |
TAR2 | Transferiere Adreßregister 2 in AKKU 1 | 2. címregiszter mozgatása az AKKU1-be |
TAR2<D> | Transferiere Adreßregister 2 nach Zieladresse (32-Bit-Pointer) | 2. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre |
+AR1 | Addiere AKKU 1 zum Adreßregister 1 | AKKU1 értékének hozzáadása az 1. címregiszterhez |
+AR2 | Addiere AKKU 1 zum Adreßregister 2 | AKKU1 értékének hozzáadása a 2. címregiszterhez |
130. Táblázat betöltés, mozgatás műveletek
L (Betöltés)
Művelet | Adattípus | Operandus | Forráscím |
---|---|---|---|
L | BYTE | E, A, PE, M, L, D | 0..65535 |
L | WORD | Pointer, paraméter | 0..65534 |
L | DWORD | 0..65532 |
131. Táblázat L operandusok
Az L – betöltés művelet a megcímzett adatterület tartalmát vagy a megadott konstanst betölti az AKKU1-ből, miután azt első lépésben „0”-ra állította.
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.
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.
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>.
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.
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.
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>.
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>
T (Mozgatás)
Művelet | Adattípus | Operandus | Forráscím |
---|---|---|---|
T | BYTE | E, A, PE, M, L, D | 0..65535 |
T | WORD | Pointer, paraméter | 0..65534 |
T | DWORD | 0..65532 |
A T <operandus> művelet átmozgatja (átmásolja) az AKKU1 tartalmát a célcímre, ha a Master Control Relay be van kapcsolva (MCR = 1). Azt, hogy az AKKU1-ből hány byte hossz tartalom kerül átmásolásra, a célterület hossza határozza meg. A T művelet alkalmas az AKKU1 direkt kimenetre másolására (PA vagy A). A T művelet nem befolyásolja a státusz szó tartalmát.
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.
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.
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
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.
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>.
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.
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.
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>.
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űvelet | Németül | Magyarul |
---|---|---|
SSI | Schiebe Vorzeichen rechts Ganzzahl (16 Bit) | Előjeles 16 bites szám léptetése jobbra |
SSD | Schiebe Vorzeichen rechts Ganzzahl (32 Bit) | Előjeles 32 bites szám léptetése jobbra |
SLW | Schiebe links Wort (16 Bit) | 16 bites szó balra léptetése |
SRW | Schiebe rechts Wort (16 Bit) | 16 bites szó jobbra léptetése |
SLD | Schiebe links Doppelwort (32 Bit) | 32 bites duplaszó balra léptetése |
SRD | Schiebe rechts Doppelwort (32 Bit) | 32 bites duplaszó jobbra léptetése |
148. Táblázat Léptetési műveletek
SSI (előjeles 16 bites szám léptetése jobbra)
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).
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).
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.
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.
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.
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.
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.
Parancs | németül | magyarul |
---|---|---|
RLD | Rotiere links Doppelwort (32 Bit) | 32 bites duplaszó forgatása balra |
RRD | Rotiere rechts Doppelwort (32 Bit) | 32 bites duplaszó forgatása jobbra |
RLDA | Rotiere Akku 1 links über A1-Anzeige (32 Bit) | 32 bites duplaszó forgatása balra A1 bit jelzéssel |
RRDA | Rotiere Akku 1 rechts über A1-Anzeige (32 Bit) | 32 bites duplaszó forgatása jobbra A1 bit jelzéssel |
155. Táblázat Forgatási műveletek
RLD (32 bites duplaszó forgatása balra)
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.
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.
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.
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.
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:
Parancs | németül | magyarul |
---|---|---|
FR | Freigabe Timer | Timer feloldása |
L | Lade aktuellen Zeitwert als Ganzzahl in AKKU 1 | Időérték megadása AKKU1-be, egész szám formátumban |
LC | Lade aktuellen Zeitwert als BCD in AKKU 1 | Időérték megadása AKKU1-be, BCD formátumban |
R | Rücksetze Timer | Timer nullázása |
SI | Zeit als Impuls | Impulzus időfunkció |
SV | Zeit als verlängerter Impuls | Meghosszabbított impulzus időfunkció |
SE | Zeit als Einschaltverzögerung | Bekapcsolás késleltetési időfunkció |
SS | Zeit als speichernde Einschaltverzögerung | Tárolt bekapcsolás késleltetési időfunkció |
SA | Zeit als Ausschaltverzögerung | Kikapcsolás késleltetési időfunkció |
160. Táblázat időfunkciók összefoglalás
FR (Timer feloldása)
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.
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 (
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.
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.
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