Step 7 AWL utasításkészlet

Utasítás jegyzé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ó, VKESTA,  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.

 

VKE, STA, STANDARD
1. ábra Példaprogram állapotok

A fenti példaprogramon látszik, hogy a számértékeket a STANDARD oszlopban jeleníti meg a szerkesztőprogram. Az MW10 tartalma 1792, a konstans 12-é meglepő módon 12. A VKE é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ó.

VKE, STA, STANDARD
2. ábra STANDARD kijelzés módja

A STANDARD oszlop kijelzési módját megváltoztathatjuk, úgy, hogy az oszlop felett a jobb egérgombra kattintunk. Itt a „Dartstellung” pontnál választhatunk a decimális, hexadecimális és törtszám kijelzések között.

Státusz szó

Az 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:

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

x

x

x

1

1. Táblázat Státusz szó tartalma

A jelzések jelentése:

-     nem írja vagy olvassa a bitet
*     olvassa a bitet
x    „0” vagy „1”-et írhat a bitbe     
0    „0”-ra állítja a bitet
1    „1”-re állítja a bitet

 

Státusz szó
3. ábra Státusz szó példa

/ER Kiértékelő (0.) bit

Erstabfragebit

Az ER bit állapota irányítja egy kiértékelési lánc lekérdezését. Az ER bit a 0. a státusz szóban (balról a legutolsó).

Minden utasítás előtt a program lekérdezi az ER állapotát.

Ha az ER „0”, akkor új kiértékelési lánc indul, a művelet eredményét csak beírja a program a „VKE”-be.

Ha az ER „1”, akkor a kiértékelési lánc tart, a VKE-t a művelet előtt beolvassa, majd a művelet kiértékelése után visszamásolja a program.

Az állítási műveletek (S, R, =) törlik az ER tartalmát, csakúgy, mint a VKE függő ugrásműveletek.

VKE (1.) bit

Verknüpfungseredmé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”.

 

S7 OR
4. ábra OR bit állapota (1.változat)

 

S7 OR
5. ábra OR bit állapota (2. változat)

OS (4.) bit

Überlauf, speichernd

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

 

S7 OS bit
6. ábra OS, OV bitek állapota

OV (5.) bit

Überlauf

Az OS bit a túlcsordulást jelzi. Az OV bit az 5. a státusz szóban (jobbról a tagolás után a második).
Az OS bit túlcsordulás esetén lép fel aritmetikai műveleteknél vagy egész számok összehasonlításánál. Az OV csak a következő műveletig áll fenn, míg az OS tárolja az OV állapotát (lásd a lenti ábrát).

S7 OV bit
7. ábra OS, OV bitek állapota

A1, A0 (6., 7.) bit

Anzeigenbits

Az ábrázolóbitek a műveletek eredményeit tartalmazzák. Az A1 és A0 eredményeit az ugrásműveletek olvassák. Az eredmények képzését és jelentését a lenti táblázat tartalmazza.

A1

A0

Jelentése

Aritmetikai művelet túlcsordulás nélkül

0

0

Eredmény = 0

0

1

Eredmény < 0

1

0

Eredmény > 0

Aritmetikai művelet (egész szám aritmetika) túlcsordulással

0

0

Negatív irányú túlcsordulás +I, +D műveleteknél

0

1

Negatív irányú túlcsordulás *I, *D műveleteknél
Pozitív irányú túlcsordulás +I, -I, +D, -D, NEGI, NEGD műveleteknél

1

0

Negatív irányú túlcsordulás +I, -I, +D, -D műveleteknél
Pozitív irányú túlcsordulás *I, /I, *D, /D műveleteknél

1

1

0-val való osztás /I, /D, MOD műveleteknél

Aritmetikai művelet (törtszám aritmetika) túlcsordulással

0

0

Fokozatos értékvesztés

0

1

Túlcsordulás negatív irányban

1

0

Túlcsordulás pozitív irányban

1

1

Érvénytelen törtszám

Léptetés/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

Az BIE bit az AWL bináris eredményt tárolja és átviszi a további – nem AWL - műveletekbe. A BIE bit a 8. a státusz szóban.

Ha a műveleteket AWL-ben kezdtük írni, és KOP/FUP programozásra akarunk áttérni, a művelet addigi eredményét a BIE biten keresztül tudjuk átvinni, úgy, hogy a VKE-t a BIE-be mentjük. A BIE-t a SAVE, SPBB és SPBNB műveletekkel kezelhetjük.

Ha a program egy SFB-t vagy egy SFC-t hajt végre, a végrehajtás eredményességét a BIE bitben közli. Ha a BIE értéke a végrehajtást követően „1”, akkor az eljárás hiba nélkül lefutott, ha a „BIE” értéke „0”, akkor a futás során hiba lépett fel.

Zárójel verem (Klammerstack)

Zárójel verem (németül: Klammerstack, angolul: MCR-Stack)

Minden zárójeles bináris művelet - U(, O(, X(, UN(, ON(, XN( - egy új szintet nyit a zárójel veremben. A verem mélysége maximum 7 szintet tesz lehetővé, ez azt jelenti, hogy maximum hétszer lehet egymás után zárójelet nyitni zárás nélkül. A verem minden szintjén a státusz szóból két bit, a VKE, BIE, OR és egy funkcióazonosító szerepel. A zárójel bezárás – „)” – mindig lezár egy szintet, és a megelőző szinten állítja az OR bitet és felülbírálhatja az eredménytől függően a VKE bitet. A  kiértékelési láncnak pontosan annyi zárójel zárást kell tartalmaznia, mint amennyi megnyitásra került, egyébként a szerkesztőprogram hibát jelez letöltés / beforgatás közben:


8. ábra Zárójelezési probléma

 

Utasításkészlet

Ebben a fejezetben összefoglalom az AWL utasításokat.  Az összes utasítást összefoglaló abc rendbe szedett táblázatot a Teljes Simatic AWL utasításkészlet pont alatt találja meg a mellékletben.

A példaprogramokat a Simatic program on-line státuszából emeltem ki, így az ott megjelenő állapotjelöléseket ismertetem itt is. Egyszerűbb esetben ez így néz ki:


9. ábra Példaprogram állapotok


 

Bit logikai műveletek

U (és)

 

Az ÉS művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a VKE értéket.

 

U

0

1

0

0

0

1

0

1

3. Táblázat A művelet igazságtáblázata

Az ÉS művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:
==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

x

x

x

1

4. Táblázat Státusz szó változásai

 

S7 U (AND) example
10. ábra Példaprogram állapotok

UN (és nem)

 

Az ÉS NEM művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a VKE értéket.

UN

0

1

0

0

0

1

1

0

5. Táblázat A művelet igazságtáblázata

Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:
==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

x

x

x

1

6. Táblázat Státusz szó változásai

 

S7 UN (AND NOT) example
11. ábra Példaprogram állapotok

 

O (vagy)

A VAGYművelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a VKE értéket.

UN

0

1

0

0

1

1

1

1

7. Táblázat A művelet igazságtáblázata

Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:
==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

x

1

8. Táblázat Státusz szó változásai

KOP

AWL

S7 O (OR) example

S7 O (OR) example

Az első VAGY ág teljesül (az első vagy ágat nem kell „O” utasítással kezdeni).

S7 O (OR) example

S7 O (OR) example

A második VAGY ág teljesül.

S7 O (OR) example

S7 O (OR) example

A harmadik vagy ág teljesül

S7 O (OR) example

S7 O (OR) example

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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

x

1

9. Táblázat Státusz szó változásai

Bár a KOP programozással ebben a fejezetben nem foglalkozok, megemlítem, hogy KOP-ban nincs ON, ehelyett az adott elágazás összes feltételét negálni kell.

S7 ON (OR NOT) example
12. ábra Példaprogram állapotok

X (kizáró vagy)

A kizáró vagy művelet a megcímzett bit „1” állapotától függően egy logikai műveletben állítja a VKE értéket. A kizáró vagy abban az esetben „1”, ha a páratlan számú X művelet értéke „1”.

 

UN

0

1

0

0

1

1

1

0

10. Táblázat A művelet igazságtáblázata

Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:
==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

x

1

11. Táblázat Státusz szó változásai

S7 X (XOR) example
13. ábra Példaprogram állapotok

XN (kizáró vagy nem)

A kizáró vagy nem művelet a megcímzett bit „0” állapotától függően egy logikai műveletben állítja a VKE értéket.

Az ÉS NEM művelettel a státusz szó állapotát is lekérdezhetjük, az alábbi operandusokat:
==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BIE.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

x

1

12. Táblázat Státusz szó változásai

S7 XN (XOR NOT) example
14. ábra Példaprogram állapotok

= (egyenlő)

= <bit> az VKE értékét (a megelőző bitműveletek végeredményét) kiírja a megcímzett bitre.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

-

0

13. Táblázat Státusz szó változásai

S7 = example
15. ábra Példaprogram állapotok

R (reset)

R <bit> ha a VKE értéke (a megelőző bitműveletek végeredményét) „1”, akkor törli a címzett bitet.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

-

0

14. Táblázat Státusz szó változásai

 

S7 R (reset) example
16. ábra Példaprogram állapotok

S (set)

S <bit> ha a VKE értéke (a megelőző bitműveletek végeredményét) „1”, akkor állítja a címzett bitet.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

x

-

0

15. Táblázat Státusz szó változásai

 

S7 S (set) example
17. ábra Példaprogram állapotok

 

NOT (VKE negálás)

A NOT negálja a VKE értékét.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

1

x

-

16. Táblázat Státusz szó változásai

 

S7 NOT example
18. ábra Példaprogram állapotok

SET (VKE állítás)

A SET a VKE-t „1”-re állítja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

1

1

0

17. Táblázat Státusz szó változásai

 

S7 S (set) example
19. ábra Példaprogram állapotok

CLR (VKE törlés)

A CLR a VKE-t „0”-ra állítja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

0

0

0

18. Táblázat Státusz szó változásai

 

S7 CLR (clear) example
20. ábra Példaprogram állapotok


Összehasonlítási műveletek

 ? I (16 bites egész szám összehasonlítás)

==I, <>I, >I, <I, >=I, <=I
Az egész szám összehasonlítás az AKKU2-L tartalmát hasonlítja össze az AKKU1-L-lel. Az összehasonlítás csak fél akku hosszon, 16 biten történik. Az eredmény a VKE-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

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

0

-

0

x

x

1

20. Táblázat Státusz szó változásai

 

S7 integer operations
21. ábra Példaprogram állapotok

? D (32 bites egész szám összehasonlítás)

==D, <>D, >D, <D, >=D, <=D
Az egész szám összehasonlítás az AKKU2 tartalmát hasonlítja össze az AKKU1 -el. Az összehasonlítás egész akku hosszon, 32 biten történik. Az eredmény a VKE-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

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

0

-

0

x

x

1

22. Táblázat Státusz szó változásai

 

S7 double word (DW) operations
22. ábra Példaprogram állapotok

? R (32 bites törtszám összehasonlítás)

==R, <>R, >R, <R, >=R, <=R
A törtszám összehasonlítás az AKKU2 tartalmát hasonlítja össze az AKKU1 -el. Az összehasonlítás egész akku hosszon, 32 biten történik, az akkumlátorok tartalma IEEE-FP formátumban kerül kiértékelésre. Az eredmény a VKE-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

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

0

x

x

1

24. Táblázat Státusz szó változásai

 

S7 real (R) operations
23. ábra Példaprogram állapotok


Transzformációk

 

 BTI (BCD konvertálás egész szám formátumra)

A BTI egy előjeles, 3 számjegyű BCD  formátumú számot alakít át integer formátumúra. Az eredmény az AKKU1-H-ban tárolódik, az AKKU1-L és AKKU2 értéke a művelet során nem változik.

Az átalakítandó értéket az AKKU1-L-be tárolja az utasítás, „-999”-től „+999” értékig. A 0.bit-től a 11.bit-ig az érték tárolása történik, az 15.bit az előjel (0: pozitív, 1: negatív). A 12-bit-től a 14.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, BCDF hiba lép fel. Amennyiben a hibát nem kezelik le az OB121-ben, a PLC stop-ba megy:

S7 BCD error, than PLC stop
24. ábra BCD transzformáció hiba a diagnózis ablakban

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

25. Táblázat Státusz szó változásai

 

S7 BTI operation
25. ábra Példaprogram

A példaprogram első két sorában konstans 123-at BCD formátumban (c#) betölti a program az MW10-be, majd az MW10 tartalmát konvertálja MW12-be.

ITB (egész szám konvertálás BCD formátumra)

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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

x

x

-

-

-

-

26. Táblázat Státusz szó változásai

 

S7 ITB operation
26. ábra Példaprogram

BTD (BCD konvertálás 32 bites egész szám formátumra)

 

A BTD egy előjeles, 7 számjegyű BCD  formátumú számot alakít át integer formátumúra. Az eredmény az AKKU1-ben tárolódik, az AKKU2 értéke a művelet során nem változik.

Az átalakítandó értéket az AKKU1-L-be tárolja az utasítás, „-9999999”-től „+9999999” értékig. A 0.bit-től a 27.bit-ig az érték tárolása történik, az 31.bit az előjel (0: pozitív, 1: negatív). A 28.-bit-től a 30.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, BCDF hiba lép fel. Amennyiben a hibát nem kezelik le az OB121-ben, a PLC stop-ba megy:

S7 BCD error, than PLC stop
27. ábra BCD transzformáció hiba a diagnózis ablakban

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

27. Táblázat Státusz szó változásai

 

S7 BTD operation
28. ábra Példaprogram

DTB (32 bites egész szám konvertálás BCD formátumra)

A DTB az AKKU1 terület 32 bites egész szám értékét alakítja át BCD kóddá. Az eredmény az AKKU1-ben tárolódik.

Az átalakítandó értéket az AKKU1-be tárolja az utasítás, „-9999999”-től „+9999999” értékig. A 0.bit-től a 27.bit-ig az érték tárolása történik, a 28. - 31.bit az előjel (0000: pozitív, 1111: negatív). A 12-bit-től a 14.bit-ig a tárolónak nincs része a műveletben. Amennyiben érvénytelen érték érkezik konvertálásra, az OV és OS értékét „1”-re állítja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

x

x

-

-

-

-

28. Táblázat Státusz szó változásai

 

S7 DTB operation
29. ábra Példaprogram

ITD (16 bites egész szám átalakítása 32 bitessé)

A 16 bites egész számot az eljárás az AKKU1-L-be tölti be, az eredmény 32 biten az AKKU1-ben jelenik meg. Az AKKU2 nem vesz részt a műveletben.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

29. Táblázat Státusz szó változásai

S7 ITD operation
30. ábra Példaprogram

DTR (32 bites egész szám átalakítása IEEE-FP törtszámmá)

Az AKKU1-be töltött 32 bites egész számot IEEE-FP (real) típusúvá alakítja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

30. Táblázat Státusz szó változásai

S7 DTR operation
31. ábra Példaprogram

INVI (egyes inklementer képzés 16 bites egész számon)

A eljárás egy 16 bites egész számot beolvassa az AKKU1-L-ből és bitenként felcseréli az értékeket. Az eredményt az AKKU1-L-be tárolja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

31. Táblázat Státusz szó változásai

 

S7 INVI operation
32. ábra Példaprogram

INVD (egyes inklementer képzés 32 bites egész számon)

A eljárás egy 16 bites egész számot beolvassa az AKKU1-ből és bitenként felcseréli az értékeket. Az eredményt az AKKU1-be tárolja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

32. Táblázat Státusz szó változásai

 

S7 INVD operation
33. ábra Példaprogram

 

NEGI (16 bites egész szám negálása)

A eljárás egy 16 bites egész számot (INTEGER) beolvassa az AKKU1-L-ből és negálja. Az eredményt az AKKU1-L-be tárolja. Az A1, A0, OS és OV státuszbiteket állítja az eljárás.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

33. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Eredmény = 0

0

0

0

-

-32 768 <= Eredmény <= -1

0

1

0

-

32 767 >= Eredmény >= 1

1

0

0

-

Eredmény = 32 768

0

1

1

1

34. Táblázat Státuszbitek képzése

 

S7 NEGI operation
34. ábra Példaprogram

 

NEGD (32 bites egész szám negálása)

A eljárás egy 32 bites egész számot beolvassa (DINT) az AKKU1-ből és negálja. Az eredményt az AKKU1-be tárolja. Az A1, A0, OS és OV státuszbiteket állítja az eljárás.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

35. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Eredmény = 0

0

0

0

-

-2 147 483 648 <= Eredmény <= -1

0

1

0

-

2 147 483 647 >= Eredmény >= 1

1

0

0

-

Eredmény = 2 147 483 648

0

1

1

1

36. Táblázat Státuszbitek képzése

 

S7 NEGD operation
35. ábra Példaprogram

 

NEGR (IEEE-FP törtszám negálása)

A eljárás egy 32 bites törtszámot (REAL) beolvassa az AKKU1-ből és negálja. Az eredményt az AKKU1-be tárolja.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

37. Táblázat Státusz szó változásai

 

S7 NEGR operation
36. ábra Példaprogram

 

TAW (bájtok cseréje az AKKU1-L-ben)

A TAW utasítás felcseréli a bájtok sorrendjét az AKKU1-L-ben. (A lenti ábra ezt szemlélteti). Az AKKU1-H és AKKU2 nem vesz részt a műveletben.
 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

38. Táblázat Státusz szó változásai

 

S7 TAW operation logic
51. ábra TAW

 

S7 TAW operation
37. ábra Példaprogram

 

TAD (bájtok cseréje az AKKU1-ben)

A TAW utasítás felcseréli a bájtok sorrendjét az AKKU1-ben. (A lenti ábra ezt szemlélteti). Az AKKU2 nem vesz részt a műveletben.
 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

39. Táblázat Státusz szó változásai

S7 TAD operation logic


38. ábra TAD

 

S7 TAD operation
39. ábra Példaprogram

 

RND (törtszám kerekítése egész számra)

A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites egész számra kerekíti. Ha a törtszám pont egy páros és páratlan szám közé esik, akkor a kerekítés a páros számra történik (IEEE kerekítési mód: „Round”). Amennyiben az eredmény a DINT típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

x

x

-

-

-

-

40. Táblázat Státusz szó változásai

 

S7 RND operation
40. ábra Példaprogram

 

RND+ (törtszám felkerekítése egész számra)

A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites következő (eggyel nagyobb) egész számra kerekíti (IEEE kerekítési mód: „Round to +infinity”). Amennyiben az eredmény a DINT típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

x

x

-

-

-

-

41. Táblázat Státusz szó változásai

 

S7 RND+ operation
41. ábra Példaprogram

 

RND- (törtszám lekerekítése egész számra)

A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites megelőző (eggyel kisebb) egész számra kerekíti (IEEE kerekítési mód: „Round to infinity”). Amennyiben az eredmény a DINT típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

x

x

-

-

-

-

42. Táblázat Státusz szó változásai

 

S7 RND- operation
42. ábra Példaprogram

 

TRUNC (törtszám csonkolása egész számra)

A művelet az AKKU1-be töltött IEEE-FP törtszámot (real) 32 bites egész számra alakítja úgí, hogy a törtrészt levágja (csonkolja) (IEEE kerekítési mód: „Round to Zero”). Amennyiben az eredmény a DINT típus számábrázolási határain kívül esik, az „OV” és „OS” státuszbitek értéke „1”-re vált, és az eljárás a műveletet nem hajtja végre. Az eredmény az AKKU1-ben tárolódik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

x

x

-

-

-

-

43. Táblázat Státusz szó változásai

 

S7 TRUNC operation
43. ábra Példaprogram

 

 


Számláló (Zähler) műveletek

 

A számláló egy programozási elem a STEP7-ben. Ezeknek a funkcióknak egy külön terület van fenntartva a CPU-ban, és itt minden számláló 16 bitet foglal. Az AWL programozási nyelv 256 számláló használatát teszi lehetővé, de az adott CPU-tól függ, hogy mennyit lehet ebből használni. A számlálókhoz a számláló műveleteken keresztül lehet hozzáférni, és ezek az alábbiak:

FR

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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

45. Táblázat Státusz szó változásai

L (számlálóérték betöltése egész számként)

Formátuma: L <számláló>

A számláló értékét betölti az AKKU1-L-be egész számként, időalap nélkül, miután lementette az AKKU1 és AKKU2 értékét. A számláló maximális értéke „999” lehet, ennek ábrázolására 10 bit elegendő, így az AKKU1-L felső 6 bitjét nem tölti ki a művelet.

Az AKKU1-L-ből akkor is be kell tölteni a számláló értéket, ha a számláló nem kerül elindításra (VKE = 0).

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

46. Táblázat Státusz szó változásai

LC (számlálóérték betöltése BCD-ként)

Formátuma: LC <számláló>

A számláló értékét betölti az AKKU1-L-be BCD-ként, miután lementette az AKKU1 és AKKU2 értékét. A számláló maximális értéke „999” lehet, ennek ábrázolására 12 bit (3*4) elegendő, így az AKKU1-L felső 4 bitjét nem tölti ki a művelet.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

47. Táblázat Státusz szó változásai

 

R (számláló nullázása)

Formátuma: R <számláló>

„0” értéket tölt be a számlálóba, ha a VKE = 1.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

48. Táblázat Státusz szó változásai

S (számláló beállítása)

Formátuma: S <számláló>

Betölti az AKKU1-L tartalmát a számlálóba, ha a VKE „0”-ról „1”-re változik. A számláló értéket „0” és „999” között kell megadni, BCD formátumban.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

49. Táblázat Státusz szó változásai

ZV (számláló előre)

Formátuma: ZV <számláló>

A számláló értékét „1”-gyel növeli, amennyiben a VKE értéke „0”-ról „1”-re vált, és a számláló értéke nem érte el a „999” értéket. Amennyiben a számláló elérte a felső határértékét, a VKE változása a számlálóra hatástalan marad. A „999” elérése esetén a művelet nem állítja az (OV) túlcsordulás bitet.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

50. Táblázat Státusz szó változásai

S7 ZV operation
44. ábra ZV példaprogram

 

L MW 10
L 1
+I 
T MW 10

L C#0      // Számlálóba betöltendő érték
U M 11.7   // A számláló inicializálását végző bit
S Z 12     // a 12. számláló

U M 11.1   // Számlálást vezérlő bit
ZV Z 12    // Minden VKE 0->1 után számol egyet

U Z 12     // Ha a számlálás ismét a "0" értéken áll
= A 11.0   // a kimenet "0"-ra vált, egyébként "1"

L Z 12

3. Példaprogram ZV

ZR (számláló hátra)

Formátuma: ZR <számláló>

A számláló értékét „1”-gyel csökkenti, amennyiben a VKE értéke „0”-ról „1”-re vált, és a számláló értéke nem érte el a „0” értéket. Amennyiben a számláló elérte a alsó határértékét, a VKE változása a számlálóra hatástalan marad, a számláló nem használja a negatív értéktartományt.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

51. Táblázat Státusz szó változásai

 

L MW 10
L 1
+I 
T MW 10

L C#55     // Számlálóba betöltendő érték
U M 11.7   // A számláló inicializálását végző bit
S Z 12     // a 12. számláló

U M 11.1   // Visszaszámlálást vezérlő bit
ZR Z 12    // Minden VKE 0->1 után számol egyet

U Z 12     // Ha a számlálás elérte a "0" értéket
= A 11.0   // a kimenet "0"-ra vált, egyébként "1"

L Z 12

4. Példaprogram ZR


Adatblokk műveletek

 

Az „AUF” művelettel egy globális vagy egy instant adatblokkot (DB-t) nyithatunk meg. Egyidejűleg egy globális és egy instant DB lehet nyitva. Ebben a fejezetben az alábbi utasítások állnak rendelkezésére:

AUF

Datenbaustein öffnen

Adatblokk (DB) nyitása

TDB

Tausche Global-DB und Instanz-DB

Globális DB és instant DB cseréje

L DBLG

Lade Länge Global-DB in AKKU 1

Globális DB hosszának betöltése az AKKU1-be

L DBNO

Lade Nummer Global-DB in AKKU 1

Globális DB számának betöltése az AKKU1-be

L DILG

Lade Länge Instanz-DB in AKKU 1

Instant DB hosszának betöltése az AKKU1-be

L DINO

Lade Nummer Instanz-DB in AKKU 1

Instant DB számának betöltése az AKKU1-be

52. Táblázat Adatblokk műveletek összefoglalása

AUF (Adatblokk nyitása)

Formátuma: AUF <Adatblokk>

  • Az AUF művelet a DI-k és DB-k nyitására alkalmas.
  • Az adatblokk száma 1 és 65535 között lehet, de ennek értékét az adott PLC is behatárolhatja.

Az AUF művelet egy adatblokkot nyit, mely lehet instant DI vagy globális DB. Egyidejűleg egy DI és egy DB lehet nyitva.

 

AUF DB 10    // 10. globális DB nyitása
L DBW 12     // 12.word a DB-ből
T MW 10      // memóriába másol

AUF DI 11    // 11. instant DI nyitása
L DIB 12     // 12 byte olvasása a DI-ből
T DBB 24     // átmásolása a DB-be

5. Példaprogram AUF

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

53. Táblázat Státusz szó változásai

Az adatblokkok tartalmát direkt hivatkozásokkal is el lehet érni, például : db10.dbx12.2 vagy db10.dbd12.

 

Amennyiben a meghívni kívánt DB és az OB121 sincs letöltve, akkor a PLC „stop”-ba megy az alábbi hibával „DB nicht geladen”. Előfordulhat, hogy az OB121 lekezeli a hibát, de az új funkciónk akkor is furcsa dolgokat művel. Ilyenkor érdemes a ránézni a diagnózisra, mert ha a lenti hibaüzenetet találja ott, biztos lehet a hiba okában: elfelejtette letölteni a DB-t.

 

DB not found error, than PLC stop
45. ábra DB nincs letöltve hiba

TDB (Globális DB és instant DB cseréje)

Formátuma: TDB
A TDB felcseréli a adatblokk regiszter tartalmát, ezáltal felcseréli egymással a nyitott instant DI-t és a globális DB-t.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

54. Táblázat Státusz szó változásai

L DBLG (Globális DB hosszának betöltése az AKKU1-be)

Formátuma: L DBLG

A nyitott globális DB hosszát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

55. Táblázat Státusz szó változásai

AUF DB 10 // DB10 nyitása
L DBLG    // hossz lekérdezése
L 4       // a DB10 REAL típusú array
/I        // így a byte-ok számát 4-gyel
T MW 10   // kell osztani az elemek számához.

6. Példaprogram L DBLG

 

S7 L DBLG operation
46. ábra Példaprogram futás közben

 

L DBNO (Globális DB számának betöltése az AKKU1-be)

Formátuma: L DBNO

A nyitott globális DB számát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

56. Táblázat Státusz szó változásai

 

S7 L DBNO operation
47. ábra Példaprogram

 

L DILG (Instant DB hosszának betöltése az AKKU1-be)

Formátuma: L DILG

A nyitott instant DB hosszát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

57. Táblázat Státusz szó változásai

L DINO (Instant DB számának betöltése az AKKU1-be)

Formátuma: L DINO

A nyitott instant DB számát betölti az AKKU1-be, miután az AKKU1 és AKKU2 tartalmát lementi.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

58. Táblázat Státusz szó változásai


Ugrás műveletek

Az ugrás művelet lehetővé teszi, hogy a program futását egy adott ponton megszakítsa úgy, hogy a végrehajtást egy – a program későbbi szakaszában található – pontra irányítja át. Az ugrás műveletével lehetővé válik, hogy egy programrészt többször is lefuttasson (LOOP).

 

A LOOP-olással azért óvatosan kell bánni. Minden PLC-nek van egy ciklus felügyeleti ideje (Baugruppezustand » Zykluszeit » Zyklusüberwachungszeit). Amennyiben a program futásideje ezt az időt meghaladja, a PLC „stop”-ba megy. Ezt az időt nem lehet felülbírálni, OB-vel kezelni, a „stop” elkerülhetetlen. Gyakran előfordul, hogy egymás után egy eljárást copy – paste technikával sokszorosítunk.
Amennyiben egy ugrásban a címkét nem sikerül átírni a sajátjára, hanem a korábbi címkén marad, a PLC „stop”-ba fog szaladni, ami például egy erőműi rendszer esetén túlmutat a kínos programozói elírás fogalmán.

A lenti példán ezt a programot mutatom be. Látszik, hogy a második ugrásnál „elfelejtettem” átírni az ugrási címkét (piros), és ebben az esetben kínos leálláshoz vezet a LOOP „alkalmazása”.


U  M  11.1
SPBN m001

xxx          // itt számolok, és ezt sokszorosítom  

m001: NOP 0

U  M  11.2
SPBN m001

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).

 

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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

60. Táblázat Státusz szó változásai

 

U M 10.0      // ugrási feltételek
U M 11.0
SPB M011      // ha a feltételek igazak, ugrik

SET           // egyébként végrehajtja ezt a részt
= M 12.0

SPA M012      // majd feltétel nélkül ugrik

M011: NOP 0   // feltételes ugrás címke

CLR           // feltételek teljesülése esetén
= M 13.0      // ez a rész végrehajtásra kerül
= M 14.0

M012: NOP 0   // feltétel nélküli ugrás címke

8. Példaprogram SPA

 

SPL (Ugráslista)

Formátuma: SPL <címke>

Lista szerinti ugrás. A lista elemeinek maximális száma 255 (címke). A műveletet feltétlenül az SPL-lel kell kezdeni. Minden ugrási címkét SPA utasítással kell definiálni, melyek közül az a számú kerül meghívásra, mely érték az AKKU1-L-L-ben van (0 – 255). Ha az AKKU1-L-L nagyobb számot tartalmaz, mint amennyi SPA felsorolásra került, akkor az ugrás az SPL-nél definiált címkére történik.

Az ugrás minden célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkéknek az adott eljáráson belül kell lennie, és mindegyik csak egyszer szerepelhet. Több SPA-ban és SPL-ben is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

61. Táblázat Státusz szó változásai

L MB 20      // ugráspozíció megadása
SPL mas      // minden más esetben ide ugrik
SPA ide0     // MB20 = 0 esetén ide ugrik
SPA ide1     // MB20 = 1 esetén ide ugrik
SPA ide2     // MB20 = 2 esetén ide ugrik
SPA ide3     // MB20 = 3 esetén ide ugrik

mas: L 100   // MB20 > 3 esetén 100-at tölt az AKKU1-be
SPA tov
ide0: L 0    // MB20 = 0 esetén 0-át tölt az AKKU1-be
SPA tov
ide1: L 1    // MB20 = 1 esetén 1-et tölt az AKKU1-be
SPA tov
ide2: L 2    // MB20 = 2 esetén 2-t tölt az AKKU1-be
SPA tov
ide3: L 3    // MB20 = 3 esetén 3-at tölt az AKKU1-be
SPA tov
tov: T MW 30 // AKKU1 mentése MW30-ba

9. Példaprogram SPL

 

SPB (Ugrás, ha a VKE = 1)

Formátuma: SPB <címke>

A VKE = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli.

Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

1

1

0

62. Táblázat Státusz szó változásai

 

U M 10.0     // ugrási feltételek
U M 11.0
SPB M011     // ha a feltételek igazak, ugrik

SET          // egyébként végrehajtja ezt a részt
= M 12.0

SPA M012     // majd feltétel nélkül ugrik

M011: NOP 0  // feltételes ugrás címke

CLR          // feltételek teljesülése esetén
= M 13.0     // ez a rész végrehajtásra kerül
= M 14.0

M012: NOP 0  // feltétel nélküli ugrás címke

10. Példaprogram SPB

A VKE leírását a státusz szó fejezetben találja.

 

SPBN (Ugrás, ha a VKE = 0)

Formátuma: SPBN <címke>

A VKE = 0 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli.

Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

1

1

0

63. Táblázat Státusz szó változásai

 

U M 10.0     // ugrási feltételek
U M 11.0
SPBN M011    // ha a feltételek nem igazak, ugrik

SET          // egyébként végrehajtja ezt a részt
= M 12.0

SPA M012     // majd feltétel nélkül ugrik

M011: NOP 0  // feltételes ugrás címke

CLR          // feltételek teljesülése esetén
= M 13.0     // ez a rész végrehajtásra kerül
= M 14.0

M012: NOP 0  // feltétel nélküli ugrás címke

11. Példaprogram SPBN

A VKE leírását a státusz szó fejezetben találja.

 

SPBB (Ugrás, ha a VKE = 1, és menti a VKE-t a BIE-be)

Formátuma: SPBB <címke>

A VKE = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást, a VKE állapotot átmásolja a BIE bitbe.

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

x

-

-

-

-

0

1

1

0

64. Táblázat Státusz szó változásai

 

U M 10.0      // ugrási feltételek
U M 11.0
SPBB M011     // ha a feltételek igazak, ugrik

SET           // egyébként végrehajtja ezt a részt
= M 12.0

SPA M012      // majd feltétel nélkül ugrik

M011: NOP 0   // feltételes ugrás címke

CLR           // feltételek teljesülése esetén
= M 13.0      // ez a rész végrehajtásra kerül
= M 14.0

M012: NOP 0   // feltétel nélküli ugrás címke

12. Példaprogram SPBB

A VKE, BIE leírását a státusz szó fejezetben találja.

 

SPBNB (Ugrás, ha a VKE = 0, és menti a VKE-t a BIE-be)

Formátuma: SPBNB <címke>

A VKE = 0 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást, a VKE állapotot átmásolja a BIE bitbe.

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

x

-

-

-

-

0

1

1

0

65. Táblázat Státusz szó változásai

 

U M 10.0       // ugrási feltételek
U M 11.0
SPBN M011      // ha a feltételek nem igazak, ugrik

SET            // egyébként végrehajtja ezt a részt
= M 12.0

SPA M012       // majd feltétel nélkül ugrik

M011: NOP 0    // feltételes ugrás címke

CLR            // feltételek teljesülése esetén
= M 13.0       // ez a rész végrehajtásra kerül
= M 14.0

M012: NOP 0    // feltétel nélküli ugrás címke

13. Példaprogram SPBNB

A VKE, BIE leírását a státusz szó fejezetben találja.

 

SPBI (Ugrás, ha a BIE = 1)

Formátuma: SPBI <címke>

A BIE = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli.

Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

1

-

0

66. Táblázat Státusz szó változásai

 

SPBIN (Ugrás, ha a BIE = 0)

Formátuma: SPBIN <címke>

A BIE = 0 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az ugrás célsorát egy négy karakteres címke jelöli.

Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

1

-

0

67. Táblázat Státusz szó változásai

 

SPO (Ugrás, ha az OV = 1)

Formátuma: SPO <címke>

A OV = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az OV státusz bit akkor vált egyre, ha a számolási műveletben túlcsordulás történik. Az SPO csak közvetlenül a túlcsordulást produkáló művelet után használható, a következő – nem túlcsordulásos – művelet az OV bitet „0”-ra állítja.

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

68. Táblázat Státusz szó változásai

L 23333       // túlcsordulás képzése
L 234
*I            // túlcsordulás OV=1
T MW 22

// L 12       // kikommentelve, mert itt
// L 14       // nincs túlcsordulás, az
// *I         // OV visszaíródna 0-ra (lásd: SPS)
// T MW 24

SPO m012      // ha OV=1, ugrás

BEA           // eljárás vége, ha OV=0

m012: NOP 0   // túlcsordulás kezelése

SET 
= M 122.2     // pl. hibaüzenet generálása 

14. Példaprogram SPO

A VKE, BIE, OV, OS leírását a státusz szó fejezetben találja.

 

SPS (Ugrás, ha az OS = 1)

Formátuma: SPS <címke>

A OS = 1 állapot estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az OV státusz bit akkor vált egyre, ha a számolási műveletben túlcsordulás történik. Az SPO csak közvetlenül a túlcsordulást produkáló művelet után használható, a következő – nem túlcsordulásos – művelet az OV bitet „0”-ra állítja.

Az OS bit ezzel szemben tárolja a túlcsordulás tényét

  • az SPS műveletig,
  • az eljárás végéig,
  • az első CALL parancsig.

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

69. Táblázat Státusz szó változásai

L 23333       // túlcsordulás képzése
L 234
*I            // túlcsordulás OV=1
T MW 22

L 12          // nincs túlcsordulás, az
L 14          // OV visszaíródik 0-ra
*I            // de az OS=1 továbbra is
T MW 24

SPS m012      // ha OS=1, ugrás

BEA           // eljárás vége, ha OV=0

m012: NOP 0   // túlcsordulás kezelése

SET 
= M 122.2     // pl. hibaüzenet generálása

15. Példaprogram SPS

A VKE, BIE, OV, OS leírását a státusz szó fejezetben találja.

 

SPZ (Ugrás, ha az eredmény = 0)

Formátuma: SPZ <címke>

Az A1 = 0 és A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az A1 = 0 és A0 =0 abban az esetben következik be, ha a megelőző összehasonlítási művelet eredménye egyenlőség (lásd A1, A0 státuszbitek jelentése).

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

70. Táblázat Státusz szó változásai

 

L 123       // viszonylag egyszerű összehasonlítás
L 123       // melynek várható eredménye egyenlőség
SPZ ide     // lesz.

SPA tov     // ha nem egyenlő, tov

ide: NOP 0

SET 
= M 123.0   // ha egyenlő, állítja a bitet

tov: NOP 0 

16. Példaprogram SPZ

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

SPN (Ugrás, ha az eredmény <> 0)

Formátuma: SPN <címke>

Az A1 = 0/A0 = 1 vagy A1 = 1/A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az A1 = 0/A0 = 1 vagy A1 = 1/A0 = 0 állapot abban az esetben következik be, ha a megelőző összehasonlítási művelet eredménye egyenlőtlenség (lásd A1, A0 státuszbitek jelentése).

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

71. Táblázat Státusz szó változásai

 

L 123       // viszonylag egyszerű összehasonlítás
L 122       // melynek várható eredménye <>
SPN ide     // lesz.

SPA tov     // ha egyenlő, tov

ide: NOP 0

SET 
= M 123.0   // ha nem egyenlő, állítja a bitet

tov: NOP 0  // tov

17. Példaprogram SPN

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

SPP (Ugrás, ha az eredmény > 0)

Formátuma: SPP <címke>

Az A1 = 1 és A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az A1 = 1 és A0 =0 abban az esetben következik be, ha az AKKU1 < AKKU2 (lásd 13. Táblázat A1, A0 státuszbitek jelentése).

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

72. Táblázat Státusz szó változásai

 

L 124       // AKKU2
L 120       // AKKU1
==I 
SPP ide     // ha AKKU2 > AKKU1, ugrás

SPA tov     //egyébként, tov

ide: NOP 0

SET 
= M 123.0   // ha a feltétel igaz, állítja a bitet

tov: NOP 0  // tov

18. Példaprogram SPP

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

SPM (Ugrás, ha az eredmény < 0)

Formátuma: SPM <címke>

Az A1 = 0 és A0 = 1 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. Az A1 = 0 és A0 =1 abban az esetben következik be, ha az AKKU1 > AKKU2 (lásd 13. Táblázat A1, A0 státuszbitek jelentése).

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

73. Táblázat Státusz szó változásai

 

L 100        // AKKU2
L 120        // AKKU1
==I 
SPM ide      // ha AKKU2 < AKKU1, ugrás

SPA tov      //egyébként, tov

ide: NOP 0

SET 
= M 123.0    // ha a feltétel igaz, állítja a bitet

tov: NOP 0   // tov

19. Példaprogram SPM

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

SPPZ (Ugrás, ha az eredmény >= 0)

Formátuma: SPPZ <címke>

Az A1 = 0/A0 = 0 vagy A1 = 1/A0 = 0 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. A fenti állapot abban az esetben következik be, ha az AKKU1 <= AKKU2 (lásd 13. Táblázat A1, A0 státuszbitek jelentése).

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

74. Táblázat Státusz szó változásai

 

L 124          // AKKU2
L 120          // AKKU1
==I 
SPPZ ide       // ha AKKU2 >= AKKU1, ugrás

SPA tov        //egyébként, tov

ide: NOP 0

SET 
= M 123.0      // ha a feltétel igaz, állítja a bitet

tov: NOP 0     // tov

20. Példaprogram SPPZ

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

SPMZ (Ugrás, ha az eredmény < 0)

Formátuma: SPMZ <címke>

Az A1 = 0/A0 = 0 vagy A1 = 0/A0 = 1 állapotok estén megszakítja a program futását, és a címke által megjelölt sorra viszi át a végrehajtást. A fenti állapot abban az esetben következik be, ha az AKKU1 >= AKKU2 (lásd 13. Táblázat A1, A0 státuszbitek jelentése).

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

75. Táblázat Státusz szó változásai

 

L 100       // AKKU2
L 120       // AKKU1
==I 
SPM ide     // ha AKKU2 <= AKKU1, ugrás

SPA tov     //egyébként, tov

ide: NOP 0

SET 
= M 123.0   // ha a feltétel igaz, állítja a bitet

tov: NOP 0  // tov

21. Példaprogram SPMZ

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

SPU (Ugrá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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

76. Táblázat Státusz szó változásai

 

L 100           // AKKU2
L 0             // AKKU1
/I 
SPU ide         // érvénytelen művelet esetén ugrás

SPA tov         //egyébként, tov

ide: NOP 0

SET 
= M 123.0       // a nullával való osztás érvénytelen

tov: NOP 0      // tov

22. Példaprogram SPU

Az A1, A0 státuszbitek leírását a státusz szó fejezetben találja.

 

LOOP (hurok)

Formátuma: LOOP <címke>

A LOOP művelet ugrik, és csökkenti az AKKU1-L értékét, ha az AKKU1-L <> 0. A hurokszámláló egy előjel nélküli (16 bites) egész szám változó, melynek értéke betöltésre kerül az AKKU1-be. A LOOP mindaddig végrehajtásra kerül, amíg az AKKU1-L <> 0.

Az ugrás célsorát egy négy karakteres címke jelöli. Az ugrás történhet a programkódban előre és hátra is, de a címkének az adott eljáráson belül kell lennie, és csak egyszer szerepelhet. Több ugrásban is szerepelhet viszont az adott címke. Az ugrás maximum 32768 soron keresztül történhet - előre és hátra is.

 

A LOOP-olással azért óvatosan kell bánni. Minden PLC-nek van egy ciklus felügyeleti ideje (Baugruppezustand » Zykluszeit » Zyklusüberwachungszeit). Amennyiben a program futásideje ezt az időt meghaladja, a PLC „stop”-ba megy. Ezt az időt nem lehet felülbírálni, OB-vel kezelni, a „stop” elkerülhetetlen.
Gyakran előfordul, hogy egymás után egy eljárást copy – paste technikával sokszorosítunk. Amennyiben egy ugrásban a címkét nem sikerül átírni a sajátjára, hanem a korábbi címkén marad, a PLC „stop”-ba fog szaladni, ami például egy erőműi rendszer esetén túlmutat a kínos programozói elírás fogalmán.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

77. Táblázat Státusz szó változásai

 

L 7
T MW 8        // Faktoriális alap (7)
L 0
T MW 10       // Lépegelő (0)
L 1
T MW 12       // Szorozgató (1)

L MW 8        // Alap betöltése a számlálóba
itt: T MW 14  // Ennek értékét csökkenti ciklusonként a LOOP

L MW 10       // Lépegetés
L 1
+I 
T MW 10       // Lépegető
L MW 12       // szorozva a szorozgatóval
*I 
T MW 12       // eredmény vissza a szorozgatóba



L MW 14       // számláló csökkentése
LOOP itt      // LOOP-olásonként



L MW 10       // eredmény: faktoriális alap (7)
L MW 12       // eredmény: faktoriális (7!) (5040)

              // ha ez utóbbi két változó nem "látszik"
              // a státuszban, akkor új Netzwerk-be kell másolni ezeket.

23. Példaprogram LOOP „Faktoriális számolás”


Egész szám műveletek

 

Egész szám műveletek esetén a program az AKKU1 és AKKU2 között végzi a műveletet. Az eredmény az AKKU1-ben jelenik meg.
Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.
Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

+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

Az egész szám műveletek befolyásolják azA1, A0, OV és OS státuszbiteket, az alábbi táblázat szerint.

Érvényesség

A1

A0

OV

OS

Érvényes műveleti tartomány esetén

 

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

*

Érvénytelen műveleti tartomány esetén

 

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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

80. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Összeg = 0

0

0

0

-

-32768 <= Összeg < 0

0

1

0

-

32767 >= Összeg > 0

1

0

0

-

Összeg = -65536

0

0

1

1

65534 >= Összeg > 32767

0

1

1

1

-65535 <= Összeg < -32768

1

0

1

1

81. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L MW 10        // AKKU2
L MW 12        // AKKU1
+I             // összeadás
T MW 14        // eredmény -> AKKU1-be

24. Példaprogram +I

A VKE, A1, A0, OV, OS leírását a státusz szó fejezetben találja.

 

-I (AKKU1 kivonása AKKU2-ből 16 bites egész számként)

Formátuma: -I

AKKU1-L kivonása AKKU2-L-ből 16 bites egész számként, az eredmény az AKKU1-L-be kerül mentésre. Az akku-k tartalmát a művelet egész számként (INT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

82. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Különbség = 0

0

0

0

-

-32768 <= Különbség < 0

0

1

0

-

32767 >= Különbség > 0

1

0

0

-

65534 >= Különbség > 32767

0

1

1

1

-65535 <= Különbség < -32768

1

0

1

1

83. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L MW 10      // AKKU2
L MW 12      // AKKU1
-I           // kivonás
T MW 14      // eredmény -> AKKU1-be

25. Példaprogram -I

A VKE, A1, A0, OV, OS leírását a státusz szó fejezetben találja.

 

*I (AKKU1 és AKKU2 összeszorzása 16 bites egész számként)

Formátuma: *I

AKKU1-L és AKKU2-L összeszorzása 16 bites egész számként, az eredmény az AKKU1-L-be kerül mentésre. Az akku-k tartalmát a művelet egész számként (INT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

84. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Szorzat = 0

0

0

0

-

-32768 <= Szorzat < 0

0

1

0

-

32767 >= Szorzat > 0

1

0

0

-

Szorzat  > 32767

1

0

1

1

Szorzat < -32768

0

1

1

1

85. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L MW 10      // AKKU2
L MW 12      // AKKU1
*I           // szorzás
T MW 14      // eredmény -> AKKU1-ből

26. Példaprogram *I

A VKE, A1, A0, OV, OS leírását a státusz szó fejezetben találja.

 

/I (AKKU2 osztása AKKU1-gyel 16 bites egész számként)

Formátuma: /I

AKKU2 osztása AKKU1-gyel 16 bites egész számként, az eredmény az AKKU1-be kerül mentésre, úgy hogy az osztási eredmény az AKKU1-L-be kerül, az osztási maradék pedig az AKKU1-H-ba. Az akku-k tartalmát a művelet egész számként (INT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

86. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Osztási eredmény = 0

0

0

0

-

-32768 <= Osztási eredmény < 0

0

1

0

-

32767 >= Osztási eredmény > 0

1

0

0

-

Osztási eredmény = 32 768

1

0

1

1

Nullával való osztás

1

1

1

1

87. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L 254
T MW 10     // AKKU2 tartalma
L 5
T MW 12     // AKKU1 tartalma

L MW 10     // AKKU2
L MW 12     // AKKU1
/I          // összeadás
T MD 20     // eredmény -> AKKU1-be

27. Példaprogram /I

S7 /I integer operation
48. ábra Példaprogram /I státusz

 

Osztott érték                (AKKU2)          hex: fe             dec: 254
Osztó érték                  (AKKU1)          hex: 5              dec: 5
Osztási eredmény       (AKKU1-L)       hex: 32              dec: 50
Osztási maradék         (AKKU1-H)      hex: 4              dec: 4

 

A VKE, 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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

88. Táblázat Státusz szó változásai

 

L 100
T MW 100     // kezdőérték betöltése
L 100
T MD 200     // szintén



L MW 100     // 16 bites egész szám
+ 12         // 16 bites egész konstans
T MW 100     // eredmény

L MD 200     // 32 bites egész szám
+ L#40000    // 32 bites egész konstans
T MD 200     // eredmény

28. Példaprogram +konstans

 

+D (AKKU1 és AKKU2 összeadása 32 bites egész számként)

Formátuma: +D

AKKU1 és AKKU2 összeadása 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként (DINT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

89. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Összeg = 0

0

0

0

-

-2.147.483.648 <= Összeg < 0

0

1

0

-

2.147.483.647 >= Összeg > 0

1

0

0

-

Összeg = -4.294.967.296

0

0

1

1

4.294.967.294 >= Összeg > 2.147.483.647

0

1

1

1

-4.294.967.295 <= Összeg < -2.147.483.648

1

0

1

1

90. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L MD 8    // AKKU2
L MD 12   // AKKU1
+D        // összeadás
T MD 16   // eredmény -> AKKU1-be

29. Példaprogram +D

A VKE, A1, A0, OV, OS leírását a státusz szó fejezetben találja.

 

-D (AKKU1 kivonása AKKU2-ből 32 bites egész számként)

Formátuma: -D

AKKU1 kivonása AKKU2-ből 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként (DINT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

91. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Különbség = 0

0

0

0

-

-2.147.483.648 <= Különbség < 0

0

1

0

-

2.147.483.647 >= Különbség > 0

1

0

0

-

4.294.967.295 >= Különbség > 2.147.483.647

0

1

1

1

-4.294.967.295 <= Különbség < -2.147.483.648

1

0

1

1

92. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L MD 8     // AKKU2
L MD 12    // AKKU1
-D         // kivonás
T MD 16    // eredmény -> AKKU1-be

30. Példaprogram -D

A VKE, A1, A0, OV, OS leírását a státusz szó fejezetben találja.

 

*D (AKKU1 és AKKU2 összeszorzása 32 bites egész számként)

Formátuma: *D

AKKU1 és AKKU2 összeszorzása 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az akku-k tartalmát a művelet egész számként (INT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

93. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Szorzat = 0

0

0

0

-

-2.147.483.648 <= Szorzat < 0

0

1

0

-

2.147.483.647 >= Szorzat > 0

1

0

0

-

Szorzat  > 2.147.483.647

0

0

1

1

Szorzat  < -2.147.483.648

0

1

1

1

94. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L MD 8      // AKKU2
L MD 12     // AKKU1
*D          // szorzás
T MW 16     // eredmény -> AKKU1-be

31. Példaprogram *D

A VKE, A1, A0, OV, OS leírását a státusz szó fejezetben találja.

 

/D (AKKU2 osztása AKKU1-gyel 32 bites egész számként)

Formátuma: /D

AKKU2 osztása AKKU1-gyel 32 bites egész számként, az eredmény az AKKU1-be kerül mentésre. Az eredmény csak az osztási eredményt tartalmazza, a maradékot nem. (A MOD művelettel kaphatja meg a maradékot).
Az akku-k tartalmát a művelet egész számként (DINT formátumként) értelmezi. A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

95. Táblázat Státusz szó változásai

 

Státuszbitek képzése

A1

A0

OV

OS

Osztási eredmény = 0

0

0

0

-

-2147483648 <= Osztási eredmény < 0

0

1

0

-

2147483647 >= Osztási eredmény > 0

1

0

0

-

Osztási eredmény = 2147483648

1

0

1

1

Nullával való osztás

1

1

1

1

96. Táblázat A1, A0, OV, OS státuszbitek képzése

 

L 10000
T MD 100     // kezdőérték betöltése
L 3
T MD 104     // szintén



L MD 100     // AKKU2
L MD 104     // AKKU1
/D           // 32 bites osztás
T MD 108     // csak az eredmény, maradék nélkül

32. Példaprogram /D

Osztott érték                (AKKU2)          dec: 10 000
Osztó érték                  (AKKU1)          dec: 3
Osztási eredmény       (AKKU1)          dec: 3 333
Osztási maradék         nincs

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

 

Státuszbitek képzése

A1

A0

OV

OS

Osztási eredmény = 0

0

0

0

-

-2147483648 <= Osztási maradék < 0

0

1

0

-

2147483647 >= Osztási maradék > 0

1

0

0

-

Nullával való osztás

1

1

1

1

98. 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
MOD          // 32 bites osztás maradéka
T MD 108     // csak a maradék

33. Példaprogram MOD

 

Törtszám műveletek

A törtszám műveletek befolyásolják az A1, A0, OV és OS státuszbiteket, az alábbi táblázat szerint.

 

Érvényesség

A1

A0

OV

OS

Érvényes műveleti tartomány esetén

+0, -0 (Nulla)

0

0

0

-

-3,402823E+38 < eredmény < -1,175494E-38 (negatív szám)

0

1

0

-

+1,175494E-38 < eredmény < 3,402824E+38 (pozitív szám)

1

0

0

-

Érvénytelen műveleti tartomány esetén

Alulhaladott érték -1,175494E-38 < eredmény < - 1,401298E-45 (negatív szám)

0

0

1

1

Alulhaladott érték +1,401298E-45 < eredmény < +1,175494E-38 (pozitív szám)

0

0

1

1

Felülhaladott érték < -3,402823E+38 (negatív szám)

0

1

1

1

Felülhaladott érték  > 3,402823E+38 (pozitív szám)

1

0

1

1

Érvénytelen érték vagy érvénytelen művelet (bemeneti érték kívül esik az érvényes tartományon)

1

1

1

1

99. Táblázat Törtszám műveletek eredményei

+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

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

102. Táblázat Státusz szó változásai

L 2.200000e+001  // értékek állítása
T MD 8
L 3.300000e+001
T MD 12

L MD 8          // AKKU2
L MD 12         // AKKU1
+R              // művelet
T MD 16         // AKKU1 -> MD16

34. Példaprogram +R

 

-R (AKKU1 kivonása AKKU2-ből 32 bites törtszámként)

AKKU2 kivonása AKKU1-ből 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként).A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- végtelen

0

1

1

1

Túlcsordult

- qNaN

1

1

1

1

 

103. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

104. Táblázat Státusz szó változásai

L 2.200000e+001   // értékek állítása
T MD 8
L 3.300000e+001
T MD 12

L MD 8            // AKKU2
L MD 12           // AKKU1
-R                // művelet
T MD 16           // AKKU1 -> MD16

35. Példaprogram -R

 

*R (AKKU1 és AKKU2 összeszorzása 32 bites törtszámként)

AKKU1 szorzása AKKU2-vel 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként).A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- végtelen

0

1

1

1

Túlcsordult

- qNaN

1

1

1

1

 

105. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

106. Táblázat Státusz szó változásai

L 2.200000e+001 // értékek állítása
T MD 8
L 3.300000e+001
T MD 12

L MD 8          // AKKU2
L MD 12         // AKKU1
*R              // művelet
T MD 16         // AKKU1 -> MD16

36. Példaprogram *R

 

/R (AKKU2 osztása AKKU1-gyel 32 bites törtszámként)

AKKU2 osztása AKKU1-vel 32 bites (IEEE-FP) törtszámként. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként).A művelet a VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- végtelen

0

1

1

1

Túlcsordult

- qNaN

1

1

1

1

 

107. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

108. Táblázat Státusz szó változásai

L 2.200000e+001 // értékek állítása
T MD 8
L 3.300000e+001
T MD 12

L MD 8          // AKKU2
L MD 12         // AKKU1
/R              // művelet
T MD 16         // AKKU1 -> MD16

37. Példaprogram /R

 

ABS (32 bites törtszám abszolút értéke)

Az ABS a 32 bites (IEEE-FP)  AKKU1 abszolút értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A művelet a státuszbitek értékét nem befolyásolja.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

109. Táblázat Státusz szó változásai

 

L -1.172200e+002 // értékek állítása
T MD 8

L MD 8
ABS              // abszolút érték
T MD 12          // eredmény az MD12-be

38. Példaprogram ABS

 

SQR (32 bites törtszám négyzete)

Az SQR a 32 bites (IEEE-FP)  AKKU1 négyzetértékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- qNaN

1

1

1

1

 

110. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

111. Táblázat Státusz szó változásai

 

L 2.000000e+001 // értékek állítása
T MD 8

L MD 8
SQR             // négyzetérték
T MD 12         // eredmény az MD12-be

39. Példaprogram SQR

 

SQRT (32 bites törtszám négyzetgyöke)

Az SQRT a 32 bites (IEEE-FP)  AKKU1 négyzetgyökét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma csak egy pozitív szám vagy nulla lehet. A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- qNaN

1

1

1

1

 

112. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

113. Táblázat Státusz szó változásai

 

L 2.250000e+002 // értékek állítása
T MD 8

L MD 8
SQRT           // négyzetgyök érték
T MD 12        // eredmény az MD12-be

40. . -Példaprogram SQRT

 

EXP (32 bites törtszám exponenciális értéke)

Az EXP a 32 bites (IEEE-FP)  AKKU1 exponenciális értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- qNaN

1

1

1

1

 

114. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

115. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
EXP             // exponenciális érték
T MD 12         // eredmény az MD12-be

41. Példaprogram EXP

 

LN (32 bites törtszám természetes logaritmusa)

Az LN a 32 bites (IEEE-FP)  AKKU1 természetes alapú logaritmusát állítja. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma csak egy pozitív szám lehet. A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ végtelen

1

0

1

1

Túlcsordult

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- végtelen

0

1

1

1

Túlcsordult

- qNaN

1

1

1

1

 

116. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

117. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
LN              // természetes alapú logaritmus
T MD 12         // eredmény az MD12-be

42. Példaprogram LN

 

SIN (32 bites törtszám szinusz értéke)

A SIN a 32 bites (IEEE-FP)  AKKU1 szinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- qNaN

1

1

1

1

 

118. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

119. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
SIN             // sinus
T MD 12         // eredmény az MD12-be

43. Példaprogram SIN

 

COS (32 bites törtszám koszinusz értéke)

A COS a 32 bites (IEEE-FP)  AKKU1 koszinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- qNaN

1

1

1

1

 

120. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

121. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
SIN             // cosinus
T MD 12         // eredmény az MD12-be

44. Példaprogram COS

 

TAN (32 bites törtszám tangens értéke)

A TAN a 32 bites (IEEE-FP)  AKKU1 tangens értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- qNaN

1

1

1

1

 

122. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

123. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
TAN             // tangens
T MD 12         // eredmény az MD12-be

45. Példaprogram TAN

 

ASIN (32 bites törtszám arkusz szinusz értéke)

Az  ASIN a 32 bites (IEEE-FP)  AKKU1 arkusz szinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma -1 < érték < 1 lehet. A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- qNaN

1

1

1

1

 

124. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

125. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
ASIN            // arcussinus
T MD 12         // eredmény az MD12-be

46. Példaprogram ASIN

 

ACOS (32 bites törtszám arkusz koszinusz értéke)

Az ACOS a 32 bites (IEEE-FP)  AKKU1 arkusz koszinusz értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). Az AKKU1 tartalma -1 < érték < 1 lehet. A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- qNaN

1

1

1

1

 

126. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

127. Táblázat Státusz szó változásai

 

L 1.500000e-001 // értékek állítása
T MD 8

L MD 8
ACOS            // arcuscosinus
T MD 12         // eredmény az MD12-be

47. Példaprogram ACOS

 

ATAN (32 bites törtszám arkusz tangens értéke)

Az ATAN a 32 bites (IEEE-FP)  AKKU1 arkusz tangens értékét veszi. Az eredmény az AKKU1-be kerül, törtszám (REAL) formában. Az akkumlátorok tartalma törtszámként kerül kiértékelésre (REAL-ként). A VKE bit értékét nem befolyásolja, ellenben az A1, A0, OS és OV státuszbiteket állítja illetve állíthatja.

Két akku-s CPU-s esetén az AKKU2 tartalma a művelet után is változatlan marad.

Négy akku-s CPU esetében az AKKU3 tartalma az AKKU2-be, az AKKU4 tartalma az AKKU3-ba kerül átmásolásra, az AKKU4 tartalma nem változik.

 

Eredmény az AKKU1-ben

A1

A0

OV

OS

Notesz

+ qNaN

1

1

1

1

 

+ normalizált

1

0

0

-

 

+ denormalizált

0

0

1

1

Túlcsordult

+ nulla

0

0

0

-

 

- nulla

0

0

0

-

 

- denormalizált

0

0

1

1

Túlcsordult

- normalizált

0

1

0

-

 

- qNaN

1

1

1

1

 

128. Táblázat A1, A0, OV, OS státuszbitek állapota

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

x

-

-

-

-

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

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

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

 

Forráscím

L

BYTE

E, A, PE, M, L, D

0..65535

WORD

Pointer, paraméter

0..65534

DWORD

 

0..65532

131. Táblázat L operandusok

Az L – betöltés művelet a megcímzett adatterület tartalmát vagy a megadott konstanst betölti az AKKU1-ből, miután azt első lépésben „0”-ra állította.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

132. Táblázat Státusz szó változásai

 

// byte hosszú betöltések
L B#16#12             // hex 12 az AKKU1-L-L-be
L MB 10               // MB10 az AKKU1-L-L-be
L DB10.DBB 10         // DB10.DBB10 az AKKU1-L-L-be
L EB 10               // EB10 az AKKU1-L-L-be
L AB 10               // AB10 az AKKU1-L-L-be

// word hosszú betöltések
L B#(255, 255)        // két 8 bites szám az AKKU1-L-be
L MW 10               // MW10 az AKKU1-L-be
L DB10.DBW 10         // DB10.DBW10 az AKKU1-L-be
L P#0.0               // null pointer az AKKU1-L-be

// dword hosszú betöltések
L 1.210000e+001       // real konstans az AKKU1-be
L MD 10               // MD10 az AKKU1-be
L DB10.DBD 10         // DB10.DBD10 az AKKU1-be

49. Példaprogram L

 

L STW (Státusz szó betöltése az AKKU1-be)

Státusz szó betöltése az AKKU1-be. Sok –főleg S7-300-as PLC-k esetében – nem minden státusz bit kerül átmásolásra, ezért ezt a funkciót PLC függően ellenőrizni kell.   

 

Ellenkező irányú művelete a T STW.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

133. Táblázat Státusz szó változásai

 

L STW      // Státusz szó betöltése
T MW 10    // átmásolása az MW10-be

50. Példaprogram L STW

 


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.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

134. 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>.

  

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

135. Táblázat Státusz szó változásai

 

LAR1 P#111.3    // direkt pointeres megadás
                // vagy
L P#133.1       // direkt pointer az MD4-be
T MD 4

LAR1 MD 4       // MD4 átmásolása az 1. címregiszterbe

52. Példaprogram LAR1 <D>

 

S7 LAR1 operation
51. ábra Példaprogram státusza

A fenti programban a konstans 360-at betöltjük az AR1-be, majd a LAR1 művelettel a 360-at áttöltjük az 1. címregiszterbe. Mivel pointer-ként visszük át a 360-at, így a 8 bites címzést kell alkalmaznunk, ez szerint 360 bit = 45.0 byte.

 

LAR1 AR2 (2. címregiszter betöltése az 1. címregiszterbe)  

A 2. címregiszter betöltése az 1. címregiszterbe. Az AKKU1 és AKKU2 tartalma nem változik. A művelet a státuszbitek állapotát nem befolyásolja.

Ellenkező irányban (1. címregiszter a 2. címregiszterbe) mozgat a TAR1 AR2.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

136. 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

 

S7 LAR1 operation
52. ábra Példaprogram státusza

 

A fenti programban a konstans 123-et betöltjük 1.címregiszterbe, majd a LAR2 művelettel a 321-et áttöltjük a 2. címregiszterbe. Mivel pointer-ként visszük át a 321-at, így a 8 bites címzést kell alkalmaznunk, ez szerint 321 bit = 40.1 byte. Ugyanígy a 123 bit = 15.3 byte. A LAR1 AR2 –vel az AR2 tartalmát (40.1-et) az AR1-be átmásoljuk. A TAR1 AR2 –vel pedig az AR1 tartalmát (15.3-at) másoljuk át az AR2-be.

LAR2 (2. címregiszter feltöltése AKKU1-ből)

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.

  

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

137. 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

 

S7 LAR2 operation
53. ábra Példaprogram státusza

 

A fenti programban a konstans 360-at betöltjük az AR1-be, majd a LAR2 művelettel a 360-at áttöltjük a 2. címregiszterbe. Mivel pointer-ként visszük át a 360-at, így a 8 bites címzést kell alkalmaznunk, ez szerint 360 bit = 45.0 byte. Az AR1-ben marad a régi érték (40.1).

LAR2 <D> (2. címregiszter betöltése 32 bites pointerrel)

2. címregiszter feltöltése 32 bites pointer-ként egy duplaszóból (DWORD) vagy pointer konstansból. A művelet a státuszbitek állapotát nem befolyásolja.

Ellenkező irányú művelete a TAR2 <D>.

  

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

138. Táblázat Státusz szó változásai

 

LAR2 P#444.2   // direkt pointeres megadás
// vagy
L P#222.4      // direkt pointer az MD4-be
T MD 4

LAR2 MD 4      // MD4 átmásolása a 2. címregiszterbe

55. Példaprogram LAR2 <D>

 

S7 LAR2 operation
54. ábra Példaprogram státusza

 

T (Mozgatás)  

művelet

Adattípus

 

Forráscím

T

BYTE

E, A, PA, M, L, D

0..65535

WORD

 

0..65534

DWORD

 

0..65532

139. Táblázat T operandusok

A T <operandus> művelet átmozgatja (átmásolja) az AKKU1 tartalmát a célcímre, ha a Master Control Relay be van kapcsolva (MCR = 1). Azt, hogy az AKKU1-ből hány byte hossz tartalom kerül átmásolásra, a célterület hossza határozza meg. A T művelet alkalmas az AKKU1 direkt kimenetre másolására (PA vagy A). A T művelet nem befolyásolja a státusz szó tartalmát.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

140. Táblázat Státusz szó változásai

// byte hosszú mozgatás az AKKU1-ből
T MB 10           // MB10 az AKKU1-L-L-ből
T DB10.DBB 10     // DB10.DBB10 az AKKU1-L-L-ből
T AB 10           // AB10 az AKKU1-L-L-ből

// word hosszú mozgatás az AKKU1-ből
T MW 10           // MW10 az AKKU1-L-ből
T DB10.DBW 10     // DB10.DBW10 az AKKU1-L-ből

// dword hosszú mozgatás az AKKU1-ből
T MD 10           // MD10 az AKKU1-ből
T DB10.DBD 10     // DB10.DBD10 az AKKU1-ből

56. Példaprogram T

 

T STW (Státusz szó feltöltése az AKKU1-ből)  

Státusz szó feltöltése az AKKU1-ből 9 bit hosszan. A művelet a teljes státusz szó tartalmat felülírja.

Ellenkező irányú művelete a L STW.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

x

x

x

x

x

x

x

x

x

141. Táblázat Státusz szó változásai

L 2#10000 // maszk (4.bit) (OS bit)
L STW     // státusz szó betöltése
OW        // össze vagy-ol
T STW     // 5.bit állítása a státusz szóban

57. Példaprogram T STW

 

S7 L STW operation
55. ábra Példaprogram státusza

A fenti program az OS bitet „forszolja” a státusz szóban. Az OS bit a 4. státusz bit, így 2#10000 értékkel lehet a pozícióját állítani. Ezek után csak be kell tölteni a státusz szót, majd egy OW-val össze kell VAGY-olni. Az eredményt a T STW viszi vissza a státusz szóba.

TAR (1. és 2. címregiszter cseréje)  

Az 1. és 2. címregiszter cseréje. A művelet a státusz szó tartalmát nem befolyásolja.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

142. Táblázat Státusz szó változásai

LAR1 P#111.1   // 1.címregiszter feltöltése
LAR2 P#333.3   // 2.címregiszter feltöltése
TAR            // a kettő cseréje

58. Példaprogram TAR

 

S7 TAR operation
56. ábra Példaprogram státusza

 

TAR1 (1. címregiszter mozgatása az AKKU1-be)  

1. címregiszter másolása az AKKU1-be, 32 bites pointer formátumban. A művelet a státusz szó tartalmát nem befolyásolja.

 

Ellenkező irányú művelete a LAR1.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

143. Táblázat Státusz szó változásai

LAR1 P#111.1 // 1.címregiszter feltöltése
TAR1         // 1.címregiszter másolása az AKKU1-be
T MW 10      // AKKU1 az MW10-be

59. Példaprogram TAR1

 

S7 TAR1 operation
57. ábra Példaprogram státusza

 

A fenti példaprogram szerint a LAR1 111.1-et betölti az 1. címregiszterbe. Ezt olvassa vissza a TAR1 a STANDARD-ba (889 bit = 111.1 byte), majd a következő sor ezt az értéket viszi át az MW10-be.

 

TAR1 <D> (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>.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

144. Táblázat Státusz szó változásai

LAR1 P#111.1   // 1.címregiszter feltöltése
TAR1 LD 10     // 1.címregiszter másolása az LD10-be

L LD 10        // a másolás ellenőrzése

60. Példaprogram TAR1 <D>

 

S7 TAR1 operation
58. ábra Példaprogram státusza

A fenti példaprogram szerint a LAR1 111.1-et betölti az 1. címregiszterbe. Ezt olvassa vissza a TAR1 a STANDARD-ba (889 bit = 111.1 byte), majd a következő sor ezt az értéket viszi át az MW10-be.

 

TAR1 AR2 (1. címregiszter mozgatása a 2. címregiszterbe)  

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.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

145. Táblázat Státusz szó változásai

 

L 123      // 123 (bit) másolása
LAR1       // a 2.címregiszterbe

L 321      // 321 (bit) másolása
LAR2       // a 2.címregiszterbe

LAR1 AR2   // a 2.regiszer másolása az 1.-be

L 123      // 123 (bit) másolása
LAR1       // a 2.címregiszterbe

L 321      // 321 (bit) másolása
LAR2       // a 2.címregiszterbe
TAR1 AR2   // a 1.regiszer másolása az 2.-be

61. Példaprogram TAR1 AR2

 

S7 TAR1 operation
59. ábra Példaprogram státusza

 

A fenti programban a konstans 123-et betöltjük 1.címregiszterbe, majd a LAR2 művelettel a 321-et áttöltjük a 2. címregiszterbe. Mivel pointer-ként visszük át a 321-at, így a 8 bites címzést kell alkalmaznunk, ez szerint 321 bit = 40.1 byte. Ugyanígy a 123 bit = 15.3 byte. A LAR1 AR2 –vel az AR2 tartalmát (40.1-et) az AR1-be átmásoljuk. A TAR1 AR2 –vel pedig az AR1 tartalmát (15.3-at) másoljuk át az AR2-be.

 

TAR2 (2. címregiszter mozgatása az AKKU1-be)   

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.

  

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

146. Táblázat Státusz szó változásai

 

L 321     // 321 (bit) másolása
LAR2      // a 2.címregiszterbe

TAR2      // 2.címregiszter az AKKU1-be

T MW 10   // AKKU1 az MW10-be

62. Példaprogram TAR2

 

S7 TAR2 operation
60. ábra Példaprogram státusza

 

A fenti programban a konstans 321-et betöltjük az AR2-be, majd a TAR2-vel visszaolvassuk az AKKU1-be, majd onnan az MW10-be.

TAR2 <D> (2. címregiszter mozgatása a 32 bites pointer által megjelölt célcímre)  

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>.

  

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

147. Táblázat Státusz szó változásai

 

L 321       // 321 (bit) másolása
LAR2        // a 2.címregiszterbe

TAR2 MD 10  // 2.címregiszter az MD10-be

63. Példaprogram TAR2 <D>


+AR1 (AKKU1 értékének hozzáadása az 1. címregiszterhez)  

Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR1-hez.

 

L 355        // 355 érték (INT)
+AR1         // hozzáadása az 1.címregiszter értékéhez

AR1 p#300.0   // a pointer által kijelölt érték hozzáadása az AR1-hez

63b. Példaprogram +AR1

+AR2 (AKKU1 értékének hozzáadása a 2. címregiszterhez)  

Egy INT érték (AKKU1-L), vagy egy pointer által kijelölt érték hozzáadása az AR2-höz.

 

L 355        // 355 érték (INT)
+AR1         // hozzáadása a 2.címregiszter értékéhez

AR1 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űveletek

A 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.

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).

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

149. Táblázat Státusz szó változásai

L 3       // AKKU2 (léptetések száma)
L 125     // AKKU1 (léptetendő érték)
SSI       // léptetés

T MW 10   // AKKU1 -> MW10

64. Példaprogram SSI

Az egyszerűbb példaprogram esetén a 125 értéket léptethetjük 3-szor jobbra, így az eredmény (125 / 2^3 ) 15 lesz, és ezt az MW10-ben találjuk meg.

UN T 12     // ha lefutott az idő
SPB ide     // bejut a végrehajtáshoz

L MW 20     // MW20 értékét lépteti eggyel balra
SSI 1
T MW 20     // eredmény vissza

L STW       // státusz szó olvasása
T MW 22     // státusz szó -> MW22

U M 23.7    // státusz szó A1 -> MW20 bal utolsó bitjébe
= M 20.7

ide: NOP 0  // ugrás vége

L S5T#500MS // futás időzítés : 500 ms
UN T 12
SE T 12

65. Példaprogram SSI <léptetés_szám>

Ez a program az MW20 értékét forgatja folyamatosan, és minden lépés után 500 ms-ot vár. (MW20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.)

SSD (előjeles 32 bites szám léptetése)

Az előjeles 32 bites szám (DINT) léptetése jobbra az AKKU1 területet mozgatja bitenként jobbra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó A1 pozíciójába másolja.

Amennyiben az SSD-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).

Ha az SSD <léptetés_szám> megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).

A megadott érték mindkét esetben 0 és 32 között lehet. Az A0 és OV státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás).

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

150. Táblázat Státusz szó változásai

L 4        // AKKU2 (léptetések száma)
L 13400    // AKKU1 (léptetendő érték)
SSD        // léptetés

T MD 10    // AKKU1 -> MD10

66. Példaprogram SSD

Az egyszerűbb példaprogram esetén a 13400 értéket léptethetjük 4-szor jobbra, így az eredmény (13400 / 2^4 ) 837 lesz, és ezt az MD10-ben találjuk meg.

 

UN T 12 // ha lefutott az idő
SPB ide // bejut a végrehajtáshoz

L MD 20 // MW20 értékét lépteti eggyel balra
SSD 1
T MD 20 // eredmény vissza

L STW // státusz szó olvasása
T MW 10 // státusz szó -> MW10

U M 11.7 // státusz szó A1 -> MD20 bal utolsó bitjébe
= M 20.7

ide: NOP 0 // ugrás vége

L S5T#200MS // futás időzítés : 500 ms
UN T 12
SE T 12

67. Példaprogram SSD <léptetés_szám>

Ez a program az MD20 értékét forgatja folyamatosan, és minden lépés után 200 ms-ot vár. (MD20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.)

SLW (16 bites szó balra léptetése)

A 16 bites szó (WORD) léptetése balra csak az AKKU1-L területet mozgatja bitenként balra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó A1 pozíciójába másolja.

Amennyiben az SLW-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).

Ha az SLW <léptetés_szám> megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).

A megadott érték mindkét esetben 0 és 255 között lehet. Az A0 és OV státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  16, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás).

 

Az ellenkező irányú szó hosszú forgatás az SRW művelettel történik.
Azonos irányban duplaszó hosszon a SLD,
ellenkező irányban duplaszó hosszon az SRD művelet végzi a léptetést.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

151. Táblázat Státusz szó változásai

L 4      // AKKU2 (léptetések száma)
L 500    // AKKU1 (léptetendő érték)
SLW      // léptetés

T MW 10  // AKKU1 -> MW10

68. Példaprogram SLW

Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 * 2^4 ) 8 000 lesz, és ezt az MW10-ben találjuk meg.

 

UN T 12      // ha lefutott az idő
SPB ide      // bejut a végrehajtáshoz


L MW 20      // MW20 értékét lépteti eggyel balra
U M 1.0      // irányválasztó bit 0:jobbra, 1: balra
SPB bal
SRW 1        // irány: jobbra
SPA tov
bal: SLW 1   // irány: balra
tov: T MW 20 // eredmény vissza

L STW        // státusz szó olvasása
T MW 10      // státusz szó -> MW10

U M 1.0      // irányválasztó
SPB ball
U M 11.7     // státusz szó A1
= M 20.7     // ha jobbra, akkor elöl pótolja a kiesett bitet
SPA tovv
ball: U M 11.7
= M 21.0     // ha balra, akkor hátul pótolja a kiesett bitet
tovv: NOP 0
ide: NOP 0   // ugrás vége

L S5T#200MS  // futás időzítés : 500 ms
UN T 12
SE T 12

69. Példaprogram SLW <léptetés_szám>

Ez a program az MW20 értékét forgatja az M1.0 bitnek megfelelő irányba (0: jobbra, 1:balra), és minden lépés után 200 ms-ot vár. (MW20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.)  A program az SLW -t és az SRW –t is tartalmazza.

SRW (16 bites szó jobbra léptetése)

A 16 bites szó (WORD) léptetése jobbra csak az AKKU1-L területet mozgatja bitenként jobbra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó A1 pozíciójába másolja.

Amennyiben az SRW-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).

Ha az SRW <léptetés_szám> megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).

A megadott érték mindkét esetben 0 és 255 között lehet. Az A0 és OV státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  16, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás).

 

Az ellenkező irányú szó hosszú forgatás az SLW művelettel történik.
Azonos irányban duplaszó hosszon a SRD,
ellenkező irányban duplaszó hosszon az SLD művelet végzi a léptetést.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

152. Táblázat Státusz szó változásai

L 4 // AKKU2 (léptetések száma)
L 500 // AKKU1 (léptetendő érték)
SRW // léptetés

T MW 10 // AKKU1 -> MW10

70. Példaprogram SRW

Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer jobbra, így az eredmény (500 / 2^4 ) 31 lesz, és ezt az MW10-ben találjuk meg.

 

UN T 12        // ha lefutott az idő
SPB ide        // bejut a végrehajtáshoz


L MW 20        // MW20 értékét lépteti eggyel balra
U M 1.0        // irányválasztó bit 0:jobbra, 1: balra
SPB bal
SRW 1          // irány: jobbra
SPA tov
bal: SLW 1     // irány: balra
tov: T MW 20   // eredmény vissza

L STW          // státusz szó olvasása
T MW 10        // státusz szó -> MW10

U M 1.0        // irányválasztó
SPB ball
U M 11.7       // státusz szó A1
= M 20.7       // ha jobbra, akkor elöl pótolja a kiesett bitet
SPA tovv
ball: U M 11.7
= M 21.0       // ha balra, akkor hátul pótolja a kiesett bitet
tovv: NOP 0
ide: NOP 0     // ugrás vége

L S5T#200MS    // futás időzítés : 500 ms
UN T 12
SE T 12

71. Példaprogram SRW <léptetés_szám>

Ez a program az MW20 értékét forgatja az M1.0 bitnek megfelelő irányba (0: jobbra, 1:balra), és minden lépés után 200 ms-ot vár. (MW20 értékét például a VAT táblázatban lehet megadni, és bit szinten figyelemmel kísérni.)  A program az SLW -t és az SRW –t is tartalmazza.

 

SLD (32 bites duplaszó balra léptetése)

A 32 bites szó (DWORD) léptetése balra az AKKU1 területet mozgatja bitenként balra. A léptetett területet a művelet „0”-kal tölti fel. A léptetés során utoljára kimozgatott bitet a művelet a státusz szó A1 pozíciójába másolja.

Amennyiben az SLD-hez nem adunk meg értéket, úgy az AKKU2-L-L értéke szerint hajtja végre a léptetést (lsd. első példaprogram).

Ha az SLD <léptetés_szám> megadást alkalmazzuk, akkor a léptetés szám szerint hajtja végre a léptetéseket (második példaprogram).

A megadott érték mindkét esetben 0 és 255 között lehet. Az A0 és OV státuszbitek is „0” értéket vesznek fel, ha sikerült ennek a kritériumnak a programunkban megfelelni. Ha a megadott léptetés szám >  32, akkor AKKU1-L = 0, A1 = 0, A0 = 0 és az OV = 0. A „0” léptetés szám esetén a művelet működése azonos a NOP műveletével (üres utasítás).

 

Az azonos irányú szó hosszú forgatás az SLW művelettel,
az ellenkező irányú szó hosszú forgatás az SRW művelettel történik.
ellenkező irányban duplaszó hosszon az SRD művelet végzi a léptetést.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

153. 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. 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 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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

154. Táblázat Státusz szó változásai

L 4       // AKKU2 (léptetések száma)
L 500     // AKKU1 (léptetendő érték)
SRD       // léptetés

T MD 10   // AKKU1 -> MD10

74. Példaprogram SRD

Az egyszerűbb példaprogram esetén az 500 értéket léptethetjük 4-szer balra, így az eredmény (500 / 2^4 ) 31 lesz, és ezt az MD10-ben találjuk meg.

 

UN T 12            // ha lefutott az idő
SPB ide            // bejut a végrehajtáshoz


L MD 20            // MD20 értékét lépteti eggyel balra
U M 1.0            // irányválasztó bit 0:jobbra, 1: balra
SPB bal
SRD 1              // irány: jobbra
SPA tov
bal: SLD 1         // irány: balra
tov: T MD 20       // eredmény vissza

L STW              // státusz szó olvasása
T MW 10            // státusz szó -> MW10

U M 1.0            // irányválasztó
SPB ball
U M 11.7           // státusz szó A1
= M 20.7           // ha jobbra, akkor elöl pótolja a kiesett bitet
SPA tovv
ball: U M 11.7
= M 23.0           // ha balra, akkor hátul pótolja a kiesett bitet
tovv: NOP 0
ide: NOP 0         // ugrás vége

L S5T#200MS        // futás időzítés : 500 ms
UN T 12
SE T 12

75. 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.

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.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

156. Táblázat Státusz szó változásai

L 31      // AKKU2 (léptetések száma)
L 500     // AKKU1 (léptetendő érték)
RLD       // léptetés

T MD 10   // AKKU1 -> MD10

76. Példaprogram RLD

Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel balra forgatjuk. Ez egy kettővel való osztásnak felel meg, így az MD10-be 250-et kapunk eredményül.

 

UN T 12      // ha lefutott az idő
SPB ide      // bejut a végrehajtáshoz

L MD 20      // MD20 értékét lépteti eggyel balra
RLD 1
T MD 20      // az eredményt visszateszi az MD20-ba

ide: NOP 0
L S5T#200MS  // futás időzítés : 250 ms
UN T 12
SE T 12

77. Példaprogram RLD <forgatás_szám>

RRD (32 bites duplaszó forgatása jobbra)

A művelet 32 bites duplaszó forgatását végzi bitenként jobbra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.

RRD <forgatás_szám>: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.

RRD: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

157. Táblázat Státusz szó változásai

L 31      // AKKU2 (léptetések száma)
L 500     // AKKU1 (léptetendő érték)
RRD       // léptetés

T MD 10   // AKKU1 -> MD10

78. Példaprogram RRD

Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel jobbra forgatjuk. Ez egy kettővel való szorzásnak felel meg, így az MD10-be 1000-et kapunk eredményül.

 

UN T 12       // ha lefutott az idő
SPB ide       // bejut a végrehajtáshoz

L MD 20       // MD20 értékét lépteti eggyel jobbra
RRD 1
T MD 20       // az eredményt visszateszi az MD20-ba

ide: NOP 0
L S5T#200MS   // futás időzítés : 250 ms
UN T 12
SE T 12

79. Példaprogram RRD <forgatás_szám>

RLDA (32 bites duplaszó forgatása balra)

A művelet 32 bites duplaszó forgatását végzi bitenként balra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.

RLDA <forgatás_szám>: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.

RLDA: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

158. Táblázat Státusz szó változásai

L 31      // AKKU2 (léptetések száma)
L 500     // AKKU1 (léptetendő érték)
RLDA      // léptetés

T MD 10   // AKKU1 -> MD10

80. Példaprogram RLDA

Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel balra forgatjuk. Ez egy kettővel való osztásnak felel meg, így az MD10-be 250-et kapunk eredményül.

 

UN T 12       // ha lefutott az idő
SPB ide       // bejut a végrehajtáshoz

L MD 20       // MD20 értékét lépteti eggyel balra
RLDA 1
T MD 20       // az eredményt visszateszi az MD20-ba

ide: NOP 0
L S5T#200MS   // futás időzítés : 250 ms
UN T 12
SE T 12

81. Példaprogram RLDA <forgatás_szám>

RRDA (32 bites duplaszó forgatása jobbra)

A művelet 32 bites duplaszó forgatását végzi bitenként jobbra. A forgatandó duplaszót az AKKU1-ből veszi, és az eredményt is ide másolja vissza. A „kieső” bitet a művelet az A1 státuszbitbe másolja át. A forgatandó bitek számát vagy a <forgatás_szám> paraméterrel, vagy az AKKU2-L-L területen kell átadni a műveletnek.

RRDA <forgatás_szám>: A <forgatás_szám> paraméter adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 32 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a <forgatás_szám> paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.

RRDA: Az AKKU2-L-L tartalma adja meg a műveletnek, hogy hány bitet kell átforgatnia, és ez az érték 0 és 255 között lehet. Ha a megadott szám nagyobb, mint nulla, a művelet az A0 és OV státuszbiteket „0”-ra állítja. Amennyiben a megadott paraméter = 0, akkor a művelet egy NOP parancsnak felel meg.

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

x

x

x

-

-

-

-

-

159. Táblázat Státusz szó változásai

L 31      // AKKU2 (léptetések száma)
L 500     // AKKU1 (léptetendő érték)
RRDA      // léptetés

T MD 10   // AKKU1 -> MD10

82. Példaprogram RRDA

Az AKKU2-L-L-be 31-et töltünk, és az 500-at 31 bit-tel jobbra forgatjuk. Ez egy kettővel való szorzásnak felel meg, így az MD10-be 1000-et kapunk eredményül.

 

UN T 12     // ha lefutott az idő
SPB ide     // bejut a végrehajtáshoz

L MD 20     // MD20 értékét lépteti eggyel jobbra
RRDA 1
T MD 20     // az eredményt visszateszi az MD20-ba

ide: NOP 0
L S5T#200MS // futás időzítés : 250 ms
UN T 12
SE T 12

83. Példaprogram RRDA <forgatás_szám>
 

Időfunkciók

Az időfunkció egy programozási elem a STEP7-ben. Ezeknek a funkcióknak egy külön terület van fenntartva a CPU-ban, és itt minden számláló 16 bitet foglal. Az AWL programozási nyelv jellemzően 256 időfunkció használatát teszi lehetővé, de az adott CPU-tól függ, hogy mennyi időfunkció áll a rendelkezésünkre. A számlálókhoz a számláló műveleteken keresztül lehet hozzáférni, és ezek az alábbiak:

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 Einschaltver-zö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.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

161. Táblázat Státusz szó változásai

L (Időérték megadása AKKU1-be, egész szám formátumban)

Formátuma L <idő>

Az idő értékét betölti az AKKU1-L-be egész számként, miután lementette az AKKU1 és AKKU2 értékét.  Betöltéskor a 0.-9. biten található a bináris formátumú számérték (0 – 999), és az 12. és 13. biten kerül megadásra az időalap (00: 10 ms, 01: 100 ms, 10: 1 s, 11: 10 s). Az AKKU1-L-be, csak az időérték kerül betöltésre, időalap nélkül.

Az AKKU1-L-ből akkor is be kell tölteni az időértéket, ha az időfunkció nem kerül elindításra (VKE = 0).

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

162. Táblázat Státusz szó változásai

LC (Időérték megadása AKKU1-be, BCD formátumban)

Formátuma: LC <idő>

Az idő értékét betölti az AKKU1-L-be BCD-ként, miután lementette az AKKU1 és AKKU2 értékét. A megadott idő maximális értéke „999” lehet, ennek ábrázolására 12 bit (3*4) elegendő, az időalap 2 további biten kerül ábrázolásra, így az AKKU1-L felső 2 bitjét nem tölti ki a művelet.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

-

-

-

-

163. Táblázat Státusz szó változásai

R (Timer nullázása)

Formátuma: R <idő>

A művelet megszakítja az elindított időfunkció futását, és törli annak időértékét. Az indítása akkor történik, amikor a VKE státusz bit értéke „0”-ról „1”-re vált.

 

BIE A1 A0 OV OS OR STA VKE /ER

Írja:

-

-

-

-

-

0

-

-

0

164. Táblázat Státusz szó változásai

 

SI (Impulzus időfunkció)

Formátuma: SI <idő>


1:              időfunkció indítása
2:              időfunkció „rendes” lefutása,az indító bit a lefutás alatt „1”, és csak később „0”
3:              időfunkció indítása
4:              időfunkció indító bitjének a lefutás előtti visszavétele
5:              időfunkció indítása
6:              időfunkció futásának megszakítása reset-tel
7:              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ó)


1:              időfunkció indítása
2:              időfunkció „rendes” lefutása,az indító bit a lefutás alatt „1”, és csak később „0”
3:              időfunkció indítása
4:              időfunkció indító bitjének a lefutás előtti visszavétele, az idő ennek ellenére lefut
5:              időfunkció indítása
6:              időfunkció ismételt indítása („beleindítás”). Az időzítés újból indul
7:              ismételt időfunkció lefutása. A két időfunkció futásideje összeadódott.
8:              időfunkció indítása
9:              időfunkció futásának megszakítása reset-tel
10:            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ó)

 


1:              időfunkció indítása
2:              időfunkció „rendes” lefutása,az indító bit a lefutás alatt „1”
3:              idő indítása „0”-ra. Amint lefutott az idő, és ez a bit „1”, addig a kimenet is „1”.
4:              időfunkció indítása
5:              időfunkció indító bitjének a lefutás előtti visszavétele
6:              időfunkció indítása
7:              időfunkció futásának megszakítása reset-tel
8:              reset kint van és az időfunkciót megkíséreljük indítani

63. ábra SE funkció diagramm

 

SS () Tárolt bekapcsolás késleltetési időfunkció
SA () Kikapcsolás késleltetési időfunkció

 


 

 

 

 

felhasznált források

license

Creative Commons License
Erre a dokumentumra a Creative Commons-Lizenz 3.0 szabályai érvényesek.
A dokumentum továbbfelhasználása engedélyhez kötött. Részleteiben is csak forrásmegjelöléssel
(pl: forrás:wwww.ob121.com) használható.
Engedélykérés, további információ: mail kukac ob121.com