A STEP 7 programozás alapjai



Hasonló dokumentumok
SIMATIC. STEP 7 Magasabb szintű műveletek (STL)

4. Fejezet : Az egész számok (integer) ábrázolása

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

5. Laborgyakorlat. Számláló funkciók, időzítő funkciók.

Fixpontos és lebegőpontos DSP Számrendszerek

Digitális ki-bemenetek kezelése, bitszintű műveletek

SZÁMÉRTÉKEK (ÁT)KÓDOLÁSA

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

A STEP 7 programozás alapjai LAD (létradiagram)

5. Fejezet : Lebegőpontos számok. Lebegőpontos számok

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Készítette: Oláh István mestertanár

1. fogalom. Add meg az összeadásban szereplő számok elnevezéseit! Milyen tulajdonságai vannak az összeadásnak? Hogyan ellenőrizzük az összeadást?

Assembly programozás: 2. gyakorlat

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

Adatok ábrázolása, adattípusok

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

Assembly utasítások listája

2. Fejezet : Számrendszerek

Aritmetikai utasítások I.

5. Fejezet : Lebegőpontos számok

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

Irányítástechnika Elıadás. PLC-k programozása

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

Máté: Számítógép architektúrák

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Bevezetés az informatikába

Amit a törtekről tudni kell Minimum követelményszint

Matematikai alapok. Dr. Iványi Péter

Dr. Oniga István DIGITÁLIS TECHNIKA 2

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Összeadás BCD számokkal

A Gray-kód Bináris-kóddá alakításának leírása

Aritmetikai és logikai műveletek. Adattömb kezelése.

Elemi adat típusok. Méret (Bit)

SzA19. Az elágazások vizsgálata

Digitális technika VIMIAA hét

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

Bevezetés a számítástechnikába

Digitális rendszerek. Utasításarchitektúra szintje

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

DIGITÁLIS TECHNIKA I BINÁRIS SZÁMRENDSZER BEVEZETŐ ÁTTEKINTÉS BINÁRIS SZÁMRENDSZER HELYÉRTÉK. Dr. Lovassy Rita Dr.

Digitális jelfeldolgozás

Bevezetés az informatikába

Digitális technika VIMIAA hét

Harmadik gyakorlat. Számrendszerek

Amit a törtekről tudni kell 5. osztály végéig Minimum követelményszint

Programozható Logikai Vezérlő

Kedves Diákok! A feladatok legtöbbször egy pontot érnek. Ahol ettől eltérés van, azt külön jelöljük.

A 32 bites x86-os architektúra regiszterei

Szoftvertervezés és -fejlesztés I.

Adattípusok és paramétertípusok

Műveletek lebegőpontos adatokkal

Mintavételes szabályozás mikrovezérlő segítségével

Készítette: Nagy Tibor István

Programozott soros szinkron adatátvitel

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

LEGO robotok. XII. rész

Rekurzió. Dr. Iványi Péter

Informatika érettségi vizsga

I+K technológiák. Számrendszerek, kódolás

I. Egyenlet fogalma, algebrai megoldása

Assembly Utasítások, programok. Iványi Péter

Raszteres elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

Máté: Számítógép architektúrák

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

VEZÉRLŐEGYSÉGEK. Tartalom

Matematikai alapok. Dr. Iványi Péter

Vezérlési szerkezetek

BASH SCRIPT SHELL JEGYZETEK

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

Kifejezések. Kozsik Tamás. December 11, 2016

az Excel for Windows programban

Laborsegédlet 3. Labor

Programozási segédlet

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

4. hét: Ideális és valódi építőelemek. Steiner Henriette Egészségügyi mérnök

3 A C programozási nyelv szintaktikai egységei

Kifejezések. Kozsik Tamás. December 11, 2016

SZÁMÍTÁSOK A TÁBLÁZATBAN

E7-DTSZ konfigurációs leírás

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Törtek. Rendelhetőek nagyon jó szemléltethető eszközök könyvesboltokban és internetek is, pl:

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Számokkal kapcsolatos feladatok.

Egész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...

2. Laborgyakorlat. Step7 programozási környezet bemutatása

Átírás:

SIMATIC A STEP 7 programozás alapjai (utasításlista) A legfontosabb alaputasítások ismertetése angol nyelvű STEP 7 szoftvert használóknak Ez a segédlet a SIMATIC S7-300, S7-400, C7, ET-200 IM CPU és az embedded, illetve PC-based (WinAC szoftver PLC) kontrollerek programozásához használható. Siemens Zrt. Ipari Szektor Industry Automation & Drive Technologies Copyright Siemens Zrt. 2009. STEP 7 utasításlista (angol rövidítésekkel) 1

Az esetleges hibákért felelősséget nem vállalunk. Részletes gépkönyvek és további dokumentumok világnyelveken letölthetők az Internetről: www.siemens.com/automation/service&support Magyar nyelvű segédletek letöltési címe: www.siemens.hu/ad Katalógusok letöltési címe: www.automation.siemens.com/infocenter STEP 7 utasításlista (angol rövidítésekkel) 2

A Siemens SIMATIC S7-es készülékeit a STEP7 szoftverrel három megjelenítési módban lehet programozni: (utasításlista), LAD (áramútterv) és FUP (funkcióterv). (Vannak további programírási lehetőségek is: S7-SCL, S7-GRAPH, S7-HiGraph, CFC). Az áramútterv és a funkcióterv grafikus megjelenítési mód, ami adott esetben (főleg tisztán vezérlési műveleteknél) jelentősen megkönnyíti a programozást. Első alkalommal mi mégis az utasítások bemutatásával kezdjük, és ennek oka, hogy a PLC természetesen csak ezt a módot ismeri, pontos, tényleges működését ezzel lehet a legjobban magyarázni, és a legtömörebb programot is ebben a megjelenítésben lehet írni. A grafikus megjelenítés csak a fejlesztőprogramban létezik (a programozó készüléken), ami minden kész függvényt azonnal -re fordít, és a PLC-be az ebből létrehozott MC7-es gépi kód kerül. Ha azonban a programot grafikus megjelenítési módban írták, akkor a fordításkor olyan utasítások is bekerülnek a PLC-be, amelyek csakis a visszaolvasott program ismételt grafikus megjelenítése érdekében vannak ott. Mindez természetesen nem von le semmit a grafikus megjelenítés létjogosultságából, sőt a STEP5- höz képest a STEP7-et a grafikus megjeleníthetőség irányában ki is bővítették, ami majd e két grafikus mód ugyancsak kiadásra kerülő segédletében látható lesz. E bevezetés után néhány, talán nem magától értetődő alapfogalmat kell tisztázni, amelyek azok számára, akik először találkoznak a SIMATIC rendszerrel sokat fognak segíteni az utasítások megértésében. RLO (Result of the Logic Operation) logikai műveleti eredmény Az RLO fizikailag a processzor státuszregiszterének egyik bitje. A programban, főleg annak vezérlési részében kitüntetett szerepe van. Ha valami a programban bekapcsol, akkor az RLO miatt kapcsol be, ha nem kapcsol be, akkor az RLO miatt nem kapcsolt be. Igen fontos tudni, hogy milyen viszonyban vannak az egyes utasítások és az RLO. STEP 7 utasításlista (angol rövidítésekkel) 3

Eszerint van: RLO-t befolyásoló utasítás (A, AN, O, ON stb.) RLO-függő utasítás (=, S, R stb.) RLO-t határoló utasítás (=, S, R ha utána lekérdezés történik) RLO-független utasítás (L, T, stb) Gyakori félreértés pl.: A I 2.2 L MW2 Az L MW2 utasításra az A I2.2 semmiféle hatással nincs, mert az első utasítás ugyan befolyásolja a RLO-t, a második azonban fügetlen attól. Tehát a fenti programban az L MW2 minden ciklusban vérehajtódik az I 2.2 állapotától függetlenül. Lekérdezés (Abfrage) Az operációs rendszer számára az A, AN, O, ON stb. alaphelyzetben nem csupán egy ÉS, VAGY stb. művelet, hanem kérdés, amit az utasítás vérehajtásakor a rendszerproram tesz fel az utasításban lévő operandus (változó) állapotára vonatkozóan. Önmagában a fenti műveletek mindegyike egy un. lekérdezés. A lekérdezésnek természetesen eredménye is van, ami az RLO-bitben (státuszregiszter) tárolódik. Első lekérdezés Minden logikai lánc elején található az első lekérdezés. Az első lekérdezést a rendszerprogram akkor érzékeli (és jegyzi meg a státuszregiszterben), ha a fentemlített RLO-határoló művelet után lekérdezés történik. Pl. = Q12.1 (RLO-határoló művelet) O M24.2 (lekérdezés) STEP 7 utasításlista (angol rövidítésekkel) 4

Az első lekérdezésnél a rendszerproram nem figyel logikai utasítás fajtájára, csak a kérdés ponált ill. negált volta érdekes (a VAGY-művelet egy változóval logikailag nem lenne értelmezhető, ebben az esetben a VAGY nem is játszik szerepet). Az első lekérdezésnél az RLO-be átkerülő eredmény attól függ, hogy a kérdésre adott válasz milyen, ha igen, akkor az RLO 1, ha nem akkor 0. A logikai lánc második műveleténél már nem csak a lekérdezés ponált vagy negált volta érdekes, hanem a logikai művelet milyensége is, és ez a logikai művelet tulajdonképpen nem a két változó hanem az éppen vizsgált utasítás általa létrehozott RLO és az előző RLO között történik. Nem szabad elfelejteni, hogy az előző RLO az adott láncban eddig megoldott összes utasítás eredménye. Uta Operandus St Megjegyzés = Q12.1 RLO-határoló művele U M24.2 1 első lekérdezés - RLO az első lekérd eredménye U I 2.2 0 RLO a két logikai művelet eredménye U I 2.6 1 RLO a három logikai művelet eredm (végeredmény) = M8.3 0 A RLO (végeredm) hozzárendelése az státuszához Lényegében a műveleti lánc eredménye úgy alakul, mint az un. kalkulátorban a számítási eredmény, vagyis minden közbenső eredményhez hozzádódik a következő érték, és a lánc végén rendelkezésre áll a végeredmény. Egyetlen különbség, hogy az előbbi logikai lánc, míg ez utóbbi számtani. Természetesen nem szabad figyelmen kívül hagyni, hogy a fenti példa egyszerű lánc mindenféle zárójelek nélkül. A zárójelezés a helyzetet kicsit bonyolítja, amit azonban itt ismertetni nem lenne helyénvaló. Azok számára, akik a grafikus mejelenítést szeretik (az ehhez szükséges dokumentáció kiadása a későbbiekben tervbe van véve), ugyancsak fel kell hívni a figyelmet, hogy a fenti logikai lánc (Verknüpfung) tulajdonképpen egy hálózat (Netzwerk) vagy másképpen egy hálózat egy logikai lánc. STEP 7 utasításlista (angol rövidítésekkel) 5

Élfigyelés Az élfigyelés azt jelenti, hogy érzékelni akarják azt a pillanatot, amikor egy bitváltozó állapotát megváltoztatja (0 - > 1 vagy 1 -> 0). Ezt csak úgy lehet érzékelni, ha a program minden ciklusban összehasonlítja az előző és az aktuális jelállapotot. Ehhez meg kell mindig jegyezni az aktuális jelállapotot, hogy a következő ciklusban mint előzőt fel lehessen használni. Erre szolgál az FN vagy FP utasítás melletti segédváltozó, amelynek természetesen szabadnak változónak kell lenni, és minden ciklusban meg kell maradni (NEM lehet TEMP!!!) és semmi másra nem használható. Az él bekövetkezését nem ez a változó, hanem az ebben a sorban keletkező RLO jelzi. Akkumulátorok Az S7-es vezérlőkben a belső adatmozgatásban (L, T) ill. a számítások elvézésében az akkumulátorok (a processzor erre a feladatra kijelölt regiszterei) vesznek részt. Az S7-300 két darab 32-bites az S7-400 néy darab 32 bites akkumulátorral rendelkezik, a fenti funkciókat azonban mindkettő lényegében az első két akkumulátorral hajtja végre. Az alábbi szövegben a következő jelölések fordulnak evvel kapcsolatban elő:.h.l H - H H - L L - H L - L Bit: 31 24 23 16 15..8 7 0 Számlálók, időműveletek Az utasításlistában található számláló és időműveletek un. S5-tipusú műveletek, amelyek ismertségük miatt kerültek az S7-es rendszerbe. Bizonyos korlátokkal rendelkeznek, amelyek ma már időnként (ritkán) szűknek bizonyulnak. Az S7-es rendszer természetesen rendelkezik ezeken túlmenő idő- és számláló funkciókkal, amelyek megfelelnek a mai igényeknek. Ezek azonban nem műveletek, hanem függvényhívások, így ebbe az ismertetésbe nem kerülhettek. STEP 7 utasításlista (angol rövidítésekkel) 6

1.1 A ÉS-művelet A <Bit> Operandus Adattipus Tárterület <Bit> BOOL I, Q, M, L, D, T, C Az A utasítás kérdést tesz fel a címzett bit logikai 1-es állapotára, és az eredményt ÉSkapcsolatba hozza a státuszregiszter RLO-bitjével. Az ÉS-művelettel közvetlenül logikai műveletet lehet végrehajtani a státuszszó bitjeivel. Ehhez a következő utasításokat kell használni.: ==0, <>0, >0, <0, >=0, <=0, OV, OS, AO, BR. írja: - - - - - x x x 1 Példa -Program Relé-kapcsolás Áramvezető sín A I 1.0 I 1.0 1-es jelállapot Záróérintkező A I 1.1 I 1.1 1-es jelállapot Záróérintkező = Q 4.0 Q 4.0 1-es jelállapot Tekercs A zárt érintkezőt jelzi STEP 7 utasításlista (angol rövidítésekkel) 7

1.2 AN ÉS-NEM-művelet AN <Bit> Operandus Adattipus Tárterület <Bit> BOOL I, Q, M, L, D, T, C Az AN utasítás kérdést tesz fel a címzett bit logikai 0 állapotára, és az eredményt ÉSkapcsolatba hozza a státuszregiszter RLO-bitjével. Az ÉS-művelettel közvetlenül logikai műveletet lehet végrehajtani a státuszszó bitjeivel. Ehhez a következő utasításokat kell használni.: ==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BR írja: - - - - - x x x 1 Példa -Program Relé - kapcsolás A I 1.0 Áramvezető sín I 1.0 0 jelállapot Záróérintkező AN I 1.1 I 1.1 1-es jelállapot Nyitóérintkező = Q 4.0 Q 4.0 0 jelállapot Tekercs STEP 7 utasításlista (angol rövidítésekkel) 8

1.3 O VAGY-művelet Formatum O <Bit> Operandus Adattipus Tárterület <Bit> BOOL I, Q, M, L, D, T, C Az O utasítás kérdést tesz fel a címzett bit logikai 1-es állapotára, és az eredményt VAGYkapcsolatba hozza a státuszregiszter RLO-bitjével. A VAGY-művelettel közvetlenül logikai műveletet lehet végrehajtani a státuszszó bitjeivel. Ehhez a következő utasításokat kell használni.: ==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BR írja: - - - - - 0 x x 1 Beispiel -Program Relais-kapcsolás O I 1.0 O I 1.1 = Q 4.0 Áramvezetősín I 1.0 1-es jelállapot záróérintkező Q 4.0 1-es jelállapot tekercs I 1.1 0-ás jelállapot záróérintkező A zárt érintkezőt jelzi STEP 7 utasításlista (angol rövidítésekkel) 9

1.4 ON VAGY-NEM művelet ON <Bit> Operandus Adattipus Tárterület <Bit> BOOL I, Q, M, L, D, T, C Az ON utasítás kérdést tesz fel a címzett bit logikai 0 állapotára, és az eredményt VAGYkapcsolatba hozza a státuszregiszter RLO-bitjével. A VAGY-NEM -művelettel közvetlenül logikai műveletet lehet végrehajtani a státuszszó bitjeivel. Ehhez a következő utasításokat kell használni.: ==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BR írja: - - - - - 0 x x 1 Példa -Program Relé-kapcsolás Áramvezető sín O I 1.0 ON I 1.1 I 1.0 0 jelállapot záróérintkező I 1.1 1-es jelállapot nyitóérintkező Q 4.0 = Q 4.0 tekercs 1 - jelállapot STEP 7 utasításlista (angol rövidítésekkel) 10

1.5 X KIZÁRÓ-VAGY X <Bit> Operandus Adattipus Tárterület <Bit> BOOL I, Q, M, L, D, T, C Az X utasítás kérdést tesz fel a címzett bit logikai 1-es állapotára, és az eredményt KIZÁRÓ-VAGY-kapcsolatba hozza a státuszregiszter RLO-bitjével. A KIZÁRÓ-VAGY műveletet többször is használhatja egymás után. Ekkor a közös logikai műveleti eredmény (RLO) akkor 1, ha a lekérdezett operandusok páratlan mennyisége adja az 1-es logikai eredményt. A KIZÁRÓ-VAGY -művelettel közvetlenül logikai műveletet lehet végrehajtani a státuszszó bitjeivel. Ehhez a következő utasításokat kell használni.: ==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BR írja: - - - - - 0 x x 1 Példa -Program Relé-kapcsolás Áramvezető sín X I 1.0 I 1.0 kontaktus X I 1.1 I 1.1 kontaktus = Q 4.0 Q 4.0 tekercs STEP 7 utasításlista (angol rövidítésekkel) 11

1.6 XN KIZÁRÓ-VAGY-NEM XN <Bit> Operandus Adattipus Tártartomány <Bit> BOOL I, Q, M, L, D, T, C Az X utasítás kérdést tesz fel a címzett bit logikai 0 állapotára, és az eredményt KIZÁRÓ- VAGY-kapcsolatba hozza a státuszregiszter RLO-bitjével. A KIZÁRÓ-VAGY-NEM művelettel közvetlenül logikai műveletet lehet végrehajtani a státuszszó bitjeivel. Ehhez a következő utasításokat kell használni.: ==0, <>0, >0, <0, >=0, <=0, OV, OS, UO, BR írja: - - - - - 0 x x 1 Példa -Program Relékapcsolás Áramvezető sín X I 1.0 I 1.0 ás kontaktus XN I 1.1 I 1.1 es kontaktus = Q 4.0 Q 4.0 tekercs STEP 7 utasításlista (angol rövidítésekkel) 12

1.7 O ÉS a VAGY előtt O A VAGY-művelet (paraméter nélkül) ÉS-kapcsolatok VAGY-műveletét hajtja végre az ÉS a VAGY előtt szabály szerint. (az értelmezőprogram, zárójel nélkül is, előbb az ÉS-műveleteket hajtja végre, és azok eredményét hozza VAGY-kapcsolatba) írja: - - - - - x 1 - x Példa -Program Relékapcsolás Áramvezető sín A I 0.0 A M 10.0 I 0.0 I 0.2 M 10.1 O A I 0.2 A M 0.3 M 10.0 M 0.3 O M 10.1 = Q 4.0 Q 4.0 tekercs STEP 7 utasításlista (angol rövidítésekkel) 13

1.8 A( ÉS elágazással A( Az A( (ÉS elágazással) művelet a RLO és OR biteket valamint a műveleti jelet tárolja a zárójel-veremtárban. A zárójel-veremtár maximum 7-es mélységgel rendelkezik (a zárójel egymásbaágyazási mélysége maximum 7 lehet). írja: - - - - - 0 1-0 Példa -Program Relékapcsolás A( O I 0.0 O M 10.0 ) A( O I 0.2 O M 10.3 ) Áramvezető sín I 0.0 I 0.2 M 10.0 M 10.3 A M 10.1 M 10.1 = Q 4.0 Q 4.0 tekercs STEP 7 utasításlista (angol rövidítésekkel) 14

1.9 = Hozzárendelés = <Bit> Operandus Adattipus Tártartomány <Bit> BOOL I, Q, M, L, D Az = <Bit> utasítás beírja a logikai műveleti eredményt (RLO) a megcímzett bitbe. Ha az eredmény 1, akkor a bit értéke is 1, ha 0 akkor a bit értéke 0. írja: - - - - - 0 x - 0 Példa -Program Relékapcsolás A I 1.0 = Q 4.0 Jelállapot - diagram Áramvezető sín I 1.0 I 1.0 Q 4.0 1 0 1 0 Q 4.0 Spule STEP 7 utasításlista (angol rövidítésekkel) 15

1.10 FN Negatív (lefutó) él figyelése FN <Bit> Operandus Adattipus Tártartomány <Bit> BOOL I, Q, M, L, D Az FN utasítás utáni bit tárolja a RLO állapotát az előző ciklusból Az FN <Bit> utasítás segítségével egy változó lefutó élét lehet érzékelni, amikor azon a jelállapot 1 ről 0 ra vált. Ekkor az FN utasításnál a RLO egy ciklusra 1-es állapotot vesz fel. Minden programciklus alatt összehasonlításra kerül a figyelt változó állapota az előző ciklus állapotával. Így megállapítható, hogy a változón jelváltás történt-e. Az összehasonlításhoz az értelmező program az előző ciklus állapotát az un. élváltozóban, az FN utáni bitben tárolja. írja: - - - - - 0 x x 1 STEP 7 utasításlista (angol rövidítésekkel) 16

Impulzusdiagram RLO 1 Felfutó él Lefutó él 0 Idő Példa Ha a PLC az I1.0-ás bemeneten negatív (lefutó) élt érzékel, akkor az Q4.0 kimenetet egy ciklusra 1-be kapcsolja. -Program Impulzusdiagramm A I 1.0 FN M 1.0 = Q 4.0 I 1.0 M 1.0 Q 4.0 1 0 1 0 1 0 ciklusok: 1 2 3 4 5 6 7 8 9 I 1.0 M 1.0 Q 4.0 a figyelt változó élváltozó (segédváltozó) az élről működtetett bit STEP 7 utasításlista (angol rövidítésekkel) 17

1.11 FP Pozitív (felfutó) él figyelése FP <Bit> Operandus Adattipus Tártartomány <Bit> BOOL I, Q, M, L, D Az FP utasítás utáni bit tárolja a RLO állapotát az előző ciklusból. Az FP <Bit> utasítás segítségével egy változó felfutó élét lehet érzékelni, amikor azon a jelállapot 0 ról 1 re vált. Ekkor az FP utasításnál a RLO egy ciklusra 1-es állapotot vesz fel. Minden programciklus alatt összehasonlításra kerül a figyelt változó állapota az előző ciklus állapotával. Így megállapítható, hogy a változón jelváltás történt-e. Az összehasonlításhoz az értelmező program az előző ciklus állapotát az un. élváltozóban, az FP utáni bitben tárolja. írja: - - - - - 0 x x 1 STEP 7 utasításlista (angol rövidítésekkel) 18

Definíció RLO 1 Felfutó él Lefutó él 0 Idő Példa Ha a PLC az E1.0-ás bemeneten pozitív (felfutó) élt érzékel, akkor az A4.0 kimenetet egy ciklusra 1-be kapcsolja. -Program Jelállapotdiagramm A I 1.0 FP M 1.0 = Q 4.0 I 1.0 M 1.0 Q 4.0 1 0 1 0 1 0 A ciklusok száma: 1 2 3 4 5 6 7 8 9 STEP 7 utasításlista (angol rövidítésekkel) 19

1.12? I Egészszámú (integer) összehasonlítás (16 Bit) ==I, <>I, >I, <I, >=I, <=I Az összehasonlítási műveletek az AKKU2-L tartalmát hasonlítják össze az AKKU1-L tartalmával. A két akkumulátor tartalmát a rendszerprogram 16 bites egészszámként értékeli. Az összehasonlítás eredményét a RLO és a státuszszó megfelelő bitje jelzi. A RLO 1-es értéke azt jelenti, hogy az összehasonlítás által feltett kérdésre a válasz igen, a 0 RLO azt jelenti, hogy nem. Az A1 és A0 státuszbitek a kisebb mint, egyenlő vagy nagyobb mint viszonyokat jelzik. írja: - x x 0-0 x x 1 A RLO értékei Összehasonlítási RLO, ha RLO, ha RLO, ha műveletek AKKU 2 > AKKU 1 AKKU 2 = AKKU 1 AKKU 2 < AKKU 1 ==I 0 1 0 <>I 1 0 1 >I 1 0 0 <I 0 0 1 >=I 1 1 0 <=I 0 1 1 Példa Kommentár L MW10 //Az MW1 tartalmának töltése az AKKU1-be (16 Bit-egészszám). L IW24 //Az IW24 tartalmának töltése az AKKU1-be (16 Bit-egészszám). >I //Az AKKU2 és AKKU1 összehasonlítása = M 2.0 //RLO = 1, ha MW10 > IW24. STEP 7 utasításlista (angol rövidítésekkel) 20

1.13 BTI BCD szám átalakítása (16 bites) egészszámmá BTI A BTI-utasítás az AKKU1-L tartalmát háromjegyű binárisan kódolt decimális számként értékeli, és ezt átalakítja 16-bites egészszámmá (integer). Az eredmény az AKKU1-L-ben marad. Az AKKU1-H és AKKU2 nem változik. A BCD-szám az AKKU1-L-ben: a megengedett értéktartomány -999...+999. A 0-ás bit...11-es bit tartomány tartalmazza a számot, a 15-ös bit az előjelet (0 = pozitív, 1 = negatív). A 12-es.14-es biteket az átalakítás figyelmen kívül hagyja. Ha egy decimális számjegy (egy 4-bites tetrád BCD-megjelenítésben) a 10 15-ös meg nem engedett tartományba kerül, az átalakító művelet hibát okoz, ami CPU-leállást okoz. Ezt a leállást az OB121-es hiba-ob segítségével lehet kezelni (mit tegyen a CPU hiba esetén). írja: - - - - - - - - - Példa Kommentár L MW10 //A BCD-számot tölti az AKKU1-L-be. BTI //a BCD-számot átalakítja T MW20 //Transferiere das Ergebnis (Ganzzahl, 16 Bit) nach MW20. " + " " 9 " " 1 " " 5 " MW10 15......8 7......0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 "+915" BCD BTI BCD átalakítása egészszámmá MW20 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 1 "+915" Egészszám STEP 7 utasításlista (angol rövidítésekkel) 21

1.14 ITB Egészszám (16 Bit) átalakítása BCD-számmá ITB Az ITB utasítás az AKKU1-L tartalmát 16-bites egészszámként (integer) értékeli ki, és ezt átalakítja háromjegyű binárisan kódolt decimális számmá (BCD) alakítja. Az eredmény az AKKU1-L-ben tárolódik. A 0...11-es bitek adják a BCD-szám értékét. A 12...15-ös bitek az előjelet jelenítik meg (0000 = pozitiv, 1111 = negativ). Az AKKU1-H és AKKU2 nem változik. A BCD-szám tartománya -999...+999". Ha a szám a megangedett tartományon kívül van, akkor a státuszszó OV és OS bitjei 1-re kerülnek. Stázuszszó írja: - - - x x - - - - Példa Magyarázat L MW10 //Egészszám töltése az AKKU1-L-be. ITB //Egészszám átalakítása (16 Bit) BCD-számmá, tárolása az AKKU1-L-ben. T MW20 //Az eredmény átvitele az MW20-ba. MW10 15......8 7......0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 "-413" egészszám ITB 16-bites egészszám átalakítása BCD-számmá MW20 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 "-413" BCD " - " " 4 " " 1 " " 3 " STEP 7 utasításlista (angol rövidítésekkel) 22

1.15 BTD BCD szám átalakítása (32 bites) egészszámmá BTD A BTD-utasítás az AKKU1 tartalmát hétjegyű binárisan kódolt decimális számként értékeli, és ezt átalakítja 32-bites egészszámmá (dupla-integer). Az eredmény az AKKU1-ben marad. Az AKKU2 nem változik. A BCD-szám az AKKU1-ben: a megengedett értéktartomány -9999999... +9999999. A 0...27-es bit tartomány tartalmazza a számot, a 31-es bit az előjelet (0 = pozitív, 1 = negatív). A 28...30-as biteket az átalakítás figyelmen kívül hagyja. Ha egy decimális számjegy (egy 4-bites tetrád BCD-megjelenítésben) a 10 15-ös meg nem engedett tartományba kerül, az átalakító művelet hibát okoz, ami CPU-leállást okoz. Ezt a leállást az OB121-es hiba-ob segítségével lehet kezelni (mit tegyen a CPU hiba esetén). írja: - - - - - - - - - Példa L BTD T Magyarázat MD10 //A BCD-szám betöltése az AKKU 1-be. // a BCD-számot átalakítja, és tárolja az AKKU1-ben. MD20 //Az eredményt átviszi az MD20-ba. " + " " 0 " " 1 " " 5 " " 7 " " 8 " " 2 " " 1 " BTD MD10 MD20 31......16 15......0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 BCD átalakítása egészszámmá "+157821" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 "+157821" STEP 7 utasításlista (angol rövidítésekkel) 23

1.16 ITD 16-bites egészszám átalakítása 32-bites egészszámmá ITD Az ITD utasítás az AKKU1-L tartalmát 16-bites egészszámként értékeli ki, és alakítja 32- bites egészszámmá. Az eredményt az AKKU1-ben tárolja, az AKKU2 nem változik. írja: - - - - - - - - - Példa Magyarázat L MW12 //Az egészszámot (16 Bit) az AKKU 1-L-be tölti. ITD //A 16-bites egészszámot 32-bites egésszszámmá alakítja és az eredményt az AKKU 1-ben tárolja. T MD20 //Az eredményt az MD20-ban tárolja. Példa: MW12 = "-10" (16-bites egészszám): Tartalom AKKU1-H AKKU1-L Bit 31.......... 16 15.......... 0 Az ITD végrehajtása előtt XXXX XXXX XXXX XXXX 1111 1111 1111 0110 Az ITD végrehajtása után 1111 1111 1111 1111 1111 1111 1111 0110 (az X jelű bitek az átalakítás szempontjából lényegtelenek) STEP 7 utasításlista (angol rövidítésekkel) 24

1.17 DTB Egészszám (32 Bit) átalakítása BCD-számmá Format DTB A DTB utasítás az AKKU1 tartalmát 32-bites egészszámként (integer) értékeli ki, és ezt átalakítja hétjegyű binárisan kódolt decimális számmá (BCD). Az eredmény az AKKU1-ben tárolódik. A 0...27-es bitek adják a BCD-szám értékét. A 28...31-es bitek az előjelet jelenítik meg (0000 = pozitiv, 1111 = negativ). Az AKKU2 nem változik. A BCD-szám tartománya -9999999...+9999999". Ha a szám a megangedett tartományon kívül van, akkor a státuszszó OV és OS bitjei 1-re kerülnek. írja: - - - x x - - - - Példa Magyarázat L MD10 // Az egészszámot (32 Bit) az AKKU 1-be tölti. DTB // Egészszám átalakítása (32 Bit) BCD-számmá, tárolása az AKKU1-ben. T MD20 // Az eredmény átvitele az MD20-ba. DTB MD10 MD20 31......16 15......0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 "-701" egészszám 32-bites egészszám átalakítása BCD-re 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 " - " " 0 " " 0 " " 0 " " 0 " " 7 " " 0 " " 1 " "-701" BCD STEP 7 utasításlista (angol rövidítésekkel) 25

1.18 DTR 32-bites egészszám átalakítása lebegőpontos számmá (32 Bit, IEEE-FP) DTR A DTR utasítás az AKKU 1 tartalmát 32-bites egészszámként értékeli, és átalakítja azt lebegőpontos számmá (32 Bit, IEEE-FP). Amennyiben szükséges, a művelet kerekíti az eredményt (egy 32-bites egészszám nagyobb pontossággal rendelkezik, mint a 32-bites IEEE-FP lebegőpontos szám). Az eredmény tárolódik az AKKU1-ben. írja: - - - - - - - - - Példa Magyarázat L MD10 //Az egészszám betöltése az AKKU1-be DTR //Az egészszám átalakítása lebegőpontos számmá, és tárolása az AKKU1-ben T MD20 //Az eredmény átvitele az MD20-ban. DTR MD10 MD20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 Az egészszám átalakítása lebegőpontos számmá "+500" egészszám 31 30... 22......0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Exponens, 8 Bits 1 Bit A mantissza előjele Mantissza, 23 Bits "+500" IEEE-FP STEP 7 utasításlista (angol rövidítésekkel) 26

1.19 INVI 16-bites egészszám 1-es komplemense INVI Az INVI utasítás az AKKU1-L tartalmának 1-es komplemensét képzi. Ennek során az eredeti tartalom minden bitjének értékét megfordítja, azaz a nullákat 1-essel, az 1-eseket nullákkal helyettesíti. Az átalakítás eredményét az AKKU1-L-ben tárolja. írja: - - - - - - - - - Példa Magyarázat L IW8 //Az érték betöltése az AKKU1-L-be. INVI //Az egyeskomplemens képzése (16 Bit). T MW10 // Az eredmény átvitele az MW10-be. Tartalom AKKU1-L Bit 15.......... 0 Az INVI végrehajtása előtt 0110 0011 1010 1110 Az INVI végrehajtása után 1001 1100 0101 0001 STEP 7 utasításlista (angol rövidítésekkel) 27

1.20 INVD 32-bites egészszám 1-es komplemense INVD Az INVD utasítás az AKKU1 tartalmának 1-es komplemensét képzi. Ennek során az eredeti tartalom minden bitjének értékét megfordítja, azaz a nullákat 1-essel, az 1-eseket nullákkal helyettesíti. Az átalakítás eredményét az AKKU1 -ben tárolja. írja: - - - - - - - - - Példa Magyarázat L ID8 //Az érték betöltése az AKKU1-be. INVD //Az egyeskomplemens képzése (32 Bit). T MD10 // Az eredmény átvitele az MD10-be. Tartalom AKKU1-H AKKU1-L Bit 31.......... 16 15.......... 0 Az INVD végrehajtása előtt 0110 1111 1000 1100 0110 0011 1010 1110 Az INVD végrehajtása után 1001 0000 0111 0011 1001 1100 0101 0001 STEP 7 utasításlista (angol rövidítésekkel) 28

1.21 NEGI 16-bites egészszám 2-es komplemense NEGI A NEGI utasítás az AKKU1-L tartalmának 2-es komplemensét képzi. Ennek során az eredeti tartalom minden bitjének értékét megfordítja, azaz a nullákat 1-essel, az 1-eseket nullákkal helyettesíti, majd hozzáad 1-et. Az átalakítás eredményét az AKKU1-L-ben tárolja A 2-es komplemens képzése művelet a -1-gyel való szorzásnak felel meg. Az A1, A0, OS és OV státuszbiteket az operációs rendszer 1-be állítja. írja: - x x x x - - - - A státuszbitek képzése: A1 A0 OV OS eredmény = 0 0 0 0 - -32768 <= eredmény <= -1 0 1 0-32767 >= eredmény >= 1 1 0 0 - eredmény = 2768 0 1 1 1 Példa Magyarázat L IW8 // Az érték betöltése az AKKU1-L-be. NEGI //A ketteskomplemens képzése (16 Bit). T MW10 // Az eredmény átvitele az MW10-be. Tartalom AKKU1-L Bit 15.......... 0 A NEGI végrehajtása előtt 0101 1101 0011 1000 A NEGI végrehajtása után 1010 0010 1100 1000 STEP 7 utasításlista (angol rövidítésekkel) 29

1.22 NEGD 32-bites egészszám 2-es komplemense NEGD A NEGD utasítás az AKKU1 tartalmának 2-es komplemensét képzi. Ennek során az eredeti tartalom minden bitjének értékét megfordítja, azaz a nullákat 1-essel, az 1-eseket nullákkal helyettesíti, majd hozzáad 1-et. Az átalakítás eredményét az AKKU1-ben tárolja A 2-es komplemens képzése művelet a -1-gyel való szorzásnak felel meg. Az A1, A0, OS és OV státuszbiteket az operációs rendszer 1-be állítja. írja: - x x x x - - - - A 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 Példa Magyarázat L ID8 // Az érték betöltése az AKKU1-be. NEGD //A ketteskomplemens képzése (32 Bit). T MD10 // Az eredmény átvitele az MD10-be. Tartalom AKKU1-H AKKU1-L Bit 31.......... 16 15.......... 0 NEGD végrehajtása előtt 0101 1111 0110 0100 0101 1101 0011 1000 NEGD végrehajtása után 1010 0000 1001 1011 1010 0010 1100 1000 STEP 7 utasításlista (angol rövidítésekkel) 30

1.23 NEGR Lebegőpontos szám negálása NEGR A NEGR utasítás (32 Bit, IEEE-FP) negálja az AKKU-1-ben lévő lebegőpontos számot. A művelet megfordítja az AKKU-1 31-es bitjének (a mantissza előjele) állapotát. Az eredmény az AKKU1-ben található. írja: - - - - - - - - - Példa Magyarázat L ID8 //Az érték betöltése az AKKU 1-be (példa ED8 = 1.5E+02). NEGR //a lebegőpontos szám negálása (32 Bit, IEEE-FP), és az eredmény tárolása az AKKU 1-ben. T MD10 // Az eredmény átvitele az MD10-be (Példa, eredmény = -1.5E+02). STEP 7 utasításlista (angol rövidítésekkel) 31

1.24 RND Lebegőpontos szám kerekítése egészszámmá RND Az RND utasítás az AKKU1 tartalmát lebegőpontos számként (32 Bit, IEEE-FP) értékeli ki, és átalakítja egészszámmá (32 bit). Átalakításkor az eredményt a következő egészszámra kerekíti. Ha a szám a megengedett tartományon túl van, akkor az op. rendszer az OV és OS státuszbiteket 1-be állítja. Ha hiba lép fel (NaN vagy olyan lebegőpontos szám, amelyet nem lehet 32-bites egészszámként megjeleníteni), akkor az op. Rendszer az utasítást nem hajtja végre, hanem túlcsordulást jelez. írja: - - - x x - - - - Példa Magyarázat L MD10 //A lebegőpontos szám betöltése az AKKU1-be (32 Bit, IEEE-FP). RND //Átalakítja a lebegőpontos számot (32 Bit, IEEE-FP) egészszámmá (32 Bit) és kerekíti az eredményt, majd elhelyezi az AKKU1-ben. T MD20 //Az eredményt átviszi az MD20-ba. Értéke az átalakítás előtt Értéke az átalakítás után MD10 = "100.5" => RND => MD20 = "+100" MD10 = "-100.5" => RND => MD20 = "-100" STEP 7 utasításlista (angol rövidítésekkel) 32

1.25 TRUNC Lebegőpontos szám kerekítése levágással TRUNC TRUNC utasítás az AKKU1 tartalmát lebegőpontos számként (32 Bit, IEEE-FP) értékeli ki, és átalakítja egészszámmá (32 bit). Átalakításkor az eredmény az átalakított számból csak az egészszámú részt őrzi meg, a tört részt egyszerűen levágja. Ha a szám a megengedett tartományon túl van, akkor az op. rendszer az OV és OS státuszbiteket 1-be állítja. Az eredmény az AKKU1-be kerül. Ha hiba lép fel (NaN vagy olyan lebegőpontos szám, amelyet nem lehet 32-bites egészszámként megjeleníteni), akkor az op. Rendszer az utasítást nem hajtja végre, hanem túlcsordulást jelez. írja: - - - x x - - - - Példa L TRUNC T Magyarázat MD10 // A lebegőpontos szám betöltése az AKKU1-be (32 Bit, IEEE-FP).. // Átalakítja a lebegőpontos számot (32 Bit, IEEE-FP) egészszámmá (32 Bit) és kerekíti az eredményt, majd elhelyezi az AKKU1-ben. MD20 // Az eredményt átviszi az MD20-ba. Érték az átalakítás előtt Érték az átalakítás után MD10 = "100.5" => TRUNC => MD20 = "+100" MD10 = "-100.5" => TRUNC => MD20 = "-100" STEP 7 utasításlista (angol rövidítésekkel) 33

1.26 RND+ Lebegőpontos szám átalakítása egészszámra felfelé kerekítéssel RND+ RND+ utasítás az AKKU1 tartalmát lebegőpontos számként (32 Bit, IEEE-FP) értékeli ki, és átalakítja egészszámmá (32 bit). Az eredményt kerekíti arra a legkisebb egészszámra, amely nagyobb vagy egyenlő az átalakított lebegőpontos számmal (IEEE-Rundungsmodus "Round to +infinity"). Ha a szám a megengedett tartományon túl van, akkor az op. rendszer az OV és OS státuszbiteket 1-be állítja. Az eredmény az AKKU1-be kerül. Ha hiba lép fel (NaN vagy olyan lebegőpontos szám, amelyet nem lehet 32-bites egészszámként megjeleníteni), akkor az op. Rendszer az utasítást nem hajtja végre, hanem túlcsordulást jelez. írja: - - - x x - - - - Példa: Magyarázat L MD10 // A lebegőpontos szám betöltése az AKKU1-be (32 Bit, IEEE-FP). RND // Átalakítja a lebegőpontos számot (32 Bit, IEEE-FP) egészszámmá (32 Bit) és kerekíti az eredményt, majd elhelyezi az AKKU1-ben. T MD20 // Az eredményt átviszi az MD20-ba. Érték az átalakítás előtt Érték az átalakítás után MD10 = "100.5" => RND+ => MD20 = "+101" MD10 = "-100.5" => RND+ => MD20 = "-100" STEP 7 utasításlista (angol rövidítésekkel) 34

1.27 RND- Lebegőpontos szám átalakítása egészszámra lefelé kerekítéssel RND- RND- utasítás az AKKU1 tartalmát lebegőpontos számként (32 Bit, IEEE-FP) értékeli ki, és átalakítja egészszámmá (32 bit). Az eredményt kerekíti arra a legkisebb egészszámra, amely kisebb vagy egyenlő az átalakított lebegőpontos számmal (IEEE-Rundungsmodus "Round to -infinity"). Ha a szám a megengedett tartományon túl van, akkor az op. rendszer az OV és OS státuszbiteket 1-be állítja. Az eredmény az AKKU1-be kerül. Ha hiba lép fel (NaN vagy olyan lebegőpontos szám, amelyet nem lehet 32-bites egészszámként megjeleníteni), akkor az op. Rendszer az utasítást nem hajtja végre, hanem túlcsordulást jelez.. írja: - - - x x - - - - Példa Magyarázat L MD10 // A lebegőpontos szám betöltése az AKKU1-be (32 Bit, IEEE-FP). RND // Átalakítja a lebegőpontos számot (32 Bit, IEEE-FP) egészszámmá (32 Bit) és kerekíti az eredményt, majd elhelyezi az AKKU1-ben. T MD20 // Az eredményt átviszi az MD20-ba. Érték az átalakítás előtt Érték az átalakítás után MD10 = "100.5" => RND- => MD20 = "+100" MD10 = "-100.5" => RND- => MD20 = "-101" STEP 7 utasításlista (angol rövidítésekkel) 35

1.28 FR A számláló újraengedélyezése FR <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER Z Az FR <számláló> utasítás törli azt az élváltozót, amely a címzett számlálót előre ill. hátra számláltatja, amikor a logikai műveleti eredmény (RLO) 0-ról 1-re vált. A számláló engedélyezése nem szükséges, ha a normális számlálási funkció kerül végrehajtásra. Ez azt jelenti, hogy az előreszámláló (CU) vagy hátraszámláló (CD) ill. előbeállítási (S) bemeneten folyamatosan fennálló 1-es jel ellenére a számláló engedélyezése után a művelet ismét végrehajtásra kerül. írja: - - - - - 0 - - 0 Példa Magyarázat A I 2.0 //Lekérdezi az I 2.0 cím állapotát. FR C3 //Újraengedélyezi a C3-as számlálót, ha a RLO "0"-ról "1"-re vált. STEP 7 utasításlista (angol rövidítésekkel) 36

1.29 L A számláló aktuális értékének betöltése az AKKU1-be egészszámként (bináris formátumban) L <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER C Az L <számláló> utasítás az AKKU1-L-be tölti a címzett számláló aktuális számlálási értékét egészszámként, miután az AKKU1 tartalmát átmásolta az AKKU2-be. írja: - - - - - - - - - Példa Magyarázat L C3 //A C3 számláló tartalmának töltése bináris formátumba az AKKU1-L-be. 2 15 2 14 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 A C3 számláló tartalma a tárban Számlálási érték (0 bis 999) bináris formátumban Az AKKU1-L tartalma a töltési utasítás után L C3 2 15 2 14 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 mind"0" STEP 7 utasításlista (angol rövidítésekkel) 37

1.30 LC A számláló aktuális értékének betöltése az AKKU1-be BCD-számként LC <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER C Az LC <számláló> az AKKU1-L-be tölti a címzett számláló aktuális számlálási értékét BCD számként, miután az AKKU1 tartalmát átmásolta az AKKU2-be. írja: - - - - - - - - - Magyarázat LC C3 // AKKU1-L-be tölti a címzett számláló aktuális értékét BCD számként. 2 15 2 14 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 A C3 számláló tartalma a tárban Számlálási érték (0 bis 999) bináris formátumban LC C3 Az AKKU1-L tartalma a töltési utasítás után 0 2 15 0 2 14 0 2 13 0 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 10 2 százasok 10 1 tizesek 10 0 egyesek Számlálási érték BCD számként STEP 7 utasításlista (angol rövidítésekkel) 38

1.31 R Számláló törlése R <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER C Az R <számláló> utasítás "0" át tölt a címzett számláló tárterületére, ha a RLO = 1. írja: - - - - - 0 - - 0 Példa Magyarázat U I 2.3 //Lekérdezi az I 2.3-as bemenet állapotát R C3 //A C3-as számláló tárterületére 0-át tölt, ha a RLO = 1 (I2.3 = 1). STEP 7 utasításlista (angol rövidítésekkel) 39

1.32 S A számláló indulási (előbeállítási) értékének beírása S <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER C Az S <számláló> utasítás betölti a az AKKU1-L tartalmát a címzett számláló tárterületére, ha a RLO 0-ról 1-re vált. Az AKKU1-ben a töltendő értéknek BCD számként kell rendelkezésre állni 0 és 999 között. írja: - - - - - 0 - - 0 Példa Magyarázat U I 2.3 // Lekérdezi az I 2.3-as bemenet állapotát. L C#3 //betölti az AKKU1-L-be az indulási értéket. S C1 //a C1-es számlálót 3-ra állítja, ha a RLO 0-ról 1-re vált. STEP 7 utasításlista (angol rövidítésekkel) 40

1.33 CU Számlálás előre CU <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER C A CU <számláló> utasítás megnöveli a címzett számláló értékét a tárterületen 1-gyel, ha a RLO 0-ról 1-re vált és az érték még nem érte el a 999-et. Ha az érték a tárterületen a 999 határértéket elérte, akkor a művelet már nem növeli továbbb a számláló értékét, és a túlcsordulási bit (OV) sem billen 1-be a státuszregiszterben. írja: - - - - - 0 - - 0 Példa Magyarázat A I 2.1 // Lekérdezi az I 2.1-es bemenet állapotát. CU C3 //A C3 tartalmát 1-gyel megnöveli, ha a RLO 0-ról 1-re vált. STEP 7 utasításlista (angol rövidítésekkel) 41

1.34 CD Számlálás visszafele CD <számláló> Operandus Adattipus Tártartomány <számláló> COUNTER C A CD <számláló> utasítás csökkenti a címzett számláló értékét a tárterületen 1-gyel, ha a RLO 0-ról 1-re vált és az érték még nem érte el a 0-át. Ha az érték a tárterületen a 0 határértéket elérte, akkor a művelet már nem csökkenti továbbb a számláló értékét, mivel a számláló a negatív tartományban nem működik. írja: - - - - - 0 - - 0 Példa Magyarázat A I 2.1 // Lekérdezi az I 2.1-es bemenet állapotát. CD C3 //A C3 tartalmát 1-gyel csökkenti, ha a RLO 0-ról 1-re vált. STEP 7 utasításlista (angol rövidítésekkel) 42

1.35 OPN Adatmodul (adatblokk) megnyitása OPN <adatmodul> Operandus Adatmodul tipusa Cím <adatmodul> DB, DI 1... 65535 Az OPN <Adatmodul> utasítás globális (DB) vagy instant-adatmodult (DI) nyit meg. Egyidejüleg egy globális és egy instant adatmodul lehet nyitva. írja: - - - - - - - - - Példa Magyarázat OPN DB10 //Megnyitja a DB10-es adatmodult globális adatmodulként. L DBW35 //A DBW35 címzésű adatszót tölti a megnyitott adatmodulból az AKKU1-L-be. T MW22 //Átviszi az AKKU1-L tartalmát az MW22-be. OPN DI20 // Megnyitja a DB20-as adatmodult instant adatmodulként. L DIB12 //Betölti a DIB12 bájtot a megnyitott instant adatmodulból az AKKU1-L-L-be. T DBB37 //Az AKKU1-L-L tartalmát átviszi a megnyitott gobális adatmodul DBB37 adatbájtjába. STEP 7 utasításlista (angol rövidítésekkel) 43

2 Ugrások 2.1 Az ugrásutasítások áttekintése Az ugrásutasítások lehetővé teszik a program futásának egy adott ponton való megszakítását, és egy másik ponton folytatását. Ha a LOOP utasítást használják, akkor egy programdarabot többször is végrehajthatnak ugyanabban a ciklusban, vagyis hurkot képezhetnek. Az ugrási művelet ill. a LOOP utasítás operandusa egy un. ugrási cimke. Az ugrási utasítás max. 4 karakterből állhat, amiből az első karakternek betünek kell lenni. A célnál elhelyezett cimke kettősponttal folytatódik, majd a végrehajtandó utasítás következik. Megjegyzés Figyelni kell arra, hogy az S7-300-CPU-k esetében ugrási műveletnél az ugrási célnak mindig a logikai lánc elején kell lenni (nem vonatkozik a 318-2 tipusra). A cél nem lehet a logikai láncon belül. A következő utasításokkal lehet a program futását feltétlenül megszakítani: JU SPL Feltétel nélküli ugrás Többszörös elágazás A következő utasításokkal lehet a program végrehajtását egy feltételtől függően megszakítani. Az ugrás végrehajtása a RLO-től függ, amit az előző utasítás képzett. JC ugrik, ha RLO = 1 JCN ugrik, ha RLO = 0 JCB JCNB ugrik, ha RLO = 1 és a RLO-t elmenti a BR státuszbitbe ugrik, ha RLO = 0 és a RLO-t elmenti a BR státuszbitbe STEP 7 utasításlista (angol rövidítésekkel) 44

A következő utasítások a programvégrehajtást megszakítják a státuszszó megadott bitjeitől függően. SPBI ugrik, ha BR = 1 SPBIN ugrik, ha BR = 0 SPO ugrik, ha OV = 1 SPS ugrik, ha OS = 1 A következő utasítások a programvégrehajtást megszakítják a számítás eredményétől függően. SPZ ugrik ha az eredmény = 0 SPN ugrik ha az eredmény <> 0 SPP ugrik ha az eredmény > 0 SPM ugrik ha az eredmény < 0 SPPZ ugrik ha az eredmény >= 0 SPMZ ugrik ha az eredmény <= 0 SPU ugrik ha az eredmény érvénytelen STEP 7 utasításlista (angol rövidítésekkel) 45

2.2 JU Feltétel nélküli (abszolút) ugrás JU <ugrási cimke> Operandus <ugrási cimke> Megnevezés Az ugrási cél szimbólikus neve. A JU <ugrási cimke> utasítás függetlenül a RLO-től megszakítja a lineáris programvégrehajtást és a megadott célra ugrik, majd ott folytatja a programutasítások végrehajtását. Az ugrás célját cimkével kell megadni. Ugrani lehet előre ill. hátra, de a programmodul (programblokk) határain nem lehet átugrani (más programmodulba). Tehát a programutasításnak és az ugrási célnak ugyanabban a programmodulban kell lenni. A célnak egyértelműnek kell lenni, vagyis csak egyszer szabad előfordulni. Ezt a programszerkesztő természetesen ellenőrzi. A maximális ugrási távolság -32768 ill. +32767 szó. Szem előtt kell tartani, hogy a programutasítások hossza különböző (egy, kettő vagy három szó). Írja: - - - - - - - - - Példa Magyarázat A I 1.0 A I 1.2 JC DELE //ugrik, ha a RLO = 1, a DELE ugrási címre. L MB10 INC 1 T MB10 JU FORW //Feltétel nélüli ugrás a FORW cimkére. DELE: L 0 T MB10 FORW: A I 2.1 //A program az ugrás után itt folytatódik. STEP 7 utasításlista (angol rövidítésekkel) 46

2.3 JL Többszörös elágazás JL <ugrási címke> Operandus <ugrási címke> Megnevezés Az ugrási cél szimbólikus neve. Az SPL < ugrási címke > utasítás lehetővé teszi egy célból kiindulva több eset (case) közüli választás, másként kifejezve a tösszörös elágazás programozását. A választható célok rögtön az SPL utasítás után következnek, számuk max. 255, és befejeződnek azon a célon, ami az SPL utasítás mellett áll. Minden ugrási cél egy SPA utasításból áll. Az ugrási utasítás számát (0...255) a program az AKKU1-L-L-ből veszi. Ameddig az akkumulátor tartalma kisebb mint az SPL utasítás és a mellette megadott ugrási címke közötti ugrási célok száma, az SPL művelet az SPA utasítások valamelyikére ugrik. Ha az AKKU1-L-L nulla, akkor a program az első SPA utasításra ugrik, ha 1, akkor a másodikra stb. Ha az ugrási cél száma az AKKU1-ben nagyobb mint a ténylegesen létező célok száma, akkor a program az utolsó SPA utasítás utáni utasításon folytatódik. Az SPL utasítás után a többszörös elágazást biztosító SPA utasítások között egyéb utasításnak nem szabad lenni. írja: - - - - - - - - - STEP 7 utasításlista (angol rövidítésekkel) 47

Példa Magyarázat L MB0 //Az ugrási cél számának (0...255) betöltése az AKKU1-L-L-be. JL LSTX //Ugrási cél, ha AKKU1-L-L > 3. JU SEG0 //Ugrási cél, ha AKKU1-L-L = 0. JU SEG1 //Ugrási cél, ha AKKU1-L-L = 1. JU COMM //Ugrási cél, ha AKKU1-L-L = 2. JU SEG3 //Ugrási cél, ha AKKU1-L-L = 3. LSTX: JU COMM SEG0: * //utasítás. * JU COMM SEG1: * //utasítás. * JU COMM SEG3: * //utasítás. * JU COMM COMM: * * STEP 7 utasításlista (angol rövidítésekkel) 48

2.4 JC Ugrik, ha RLO = 1 JC <ugrási cimke> Operandus <ugrási cimke> Megnevezés Az ugrási cél szimbólikus neve. Ha RLO = 1, akkor a JC <ugrási címke> utasítás megszakítja a lineáris programvégrehajtást és a megadott ugrási címkére ugrik. A program végrehajtása itt folytatódik. Az ugrás történhet előre is és hátrafelé, de a programmodulból (programblokkból) kiugrani nem lehet. Tehát az ugrási utasításnak és a címkének ugyanabban a programmodulban kell lenni. Az ugrási utasításnak egyértelmünek kell lenni, a címke tehát csak egyszer fordulhat elő egy adott programmodulban. A max. ugrási táv - 32768 ill. +32767 utasítás-szó lehet. A tényleges maximális utasítás, amit a program át tud ugrani, az utasítások kombinációjától függ (egy-, két- vagy háromszavas utasítás. Ha a RLO = 0, akkor az operációs rendszer nem hajtja végre az ugrást. A RLO-t 1-re állítja, és a program folytatódik a megszakítás helyétől. írja: - - - - - 0 1 1 0 Példa Magyarázat A I 1.0 A I 1.2 JC JOVR //Ugrik, ha RLO = 1, a JOVR címkére. L IW8 //Itt folytatódik a program ha az ugrás nem hajtódik végre. T MW22 JOVR: A I 2.1 //Ha az ugrás végrehajtódik, akkor a program itt folytatódik. STEP 7 utasításlista (angol rövidítésekkel) 49

2.5 JCN Ugrik ha RLO = 0 SPBN <ugrási címke> Operandus <ugrási címke> Megnevezés Az ugrási cél szimbólikus neve. Ha a RLO = 0, akkor a JCN <ugrási címke> utasítás megszakítja a lineáris programfutást és az ugrási címkénél folytatja. Az ugrás történhet előre is és hátrafele, de a programmodulból (programblokkból) kiugrani nem lehet. Tehát az ugrási utasításnak és a címkének ugyanabban a programmodulban kell lenni. Az ugrási utasításnak egyértelmünek kell lenni, a címke tehát csak egyszer fordulhat elő egy adott programmodulban. A max. ugrási táv -32768 ill. +32767 utasítás-szó lehet. A tényleges maximális utasítás, amit a program át tud ugrani, az utasítások kombinációjától függ (egy-, két- vagy háromszavas utasítás). Ha a RLO = 1, akkor az operációs rendszer nem hajtja végre az ugrást. A RLO-t 1-re állítja, és a program folytatódik a megszakítás helyétől. írja: - - - - - 0 1 1 0 Példa Magyarázat A I 1.0 A I 1.2 JCN JOVR // Ugrik, ha RLO = 0, a JOVR címkére. L IW8 // Itt folytatódik a program ha az ugrás nem hajtódik végre.. T MW22 JOVR: A I 2.1 // Ha az ugrás végrehajtódik, akkor a program itt folytatódik. STEP 7 utasításlista (angol rövidítésekkel) 50

2.6 LOOP Hurok programozása LOOP <ugrási címke> Operandus <Ugrási címke> Megnevezés Az ugrási cél szimbólikus neve. A LOOP <ugrási címke> (az AKKU1-L tartalmának csökkentése, és ugrás, ha az AKKU1-L <> 0) utasítás egyszerűbbé teszi a hurkok programozását. A hurokszámláló előjel nélküli 16-bites egészszám, és az AKKU1-L-ben kell lennie, amikor a LOOP utasítás következik. A LOOP utasításnál a program visszaugrik a LOOP után megadott címkére. Az ugrás mindaddig folytatódik, ameddig az AKKU1-L nem lesz nulla. A programnak azt a részét, amelyet többször akarnak végrehajtani az ugrási címke és a LOOP utasítás közé kell írni. írja: - - - - - - - - - Példa Magyarázat L L#1 //Állandó töltése az AKKU 1-be. T MD20 //Az AKKU 1 tartalmának átvitele az MD20-ba (inicializálás). L 5 //A hurokszám töltése az AKKU1-L-be NEXT: T MW10 //Ugrási cimke = a hurok kezdete / az AKKU1-L betöltése a hurokszámlálóba. L MD20 * D //Az MD20 tartalmának szorzása az MB10 tartalmával T MD20 //Az eredmény átvitele az MD20-ba. L MW10 //A hurokszámláló töltése az AKKU1-be. LOOP NEXT //Az AKKU 1 tartalmának csökkentése eggyel és ugrás a NEXT címkére, ha az AKKU1-L > 0. L MW24 //A hurok befejezése után a program itt folytatódik. L 200 >I STEP 7 utasításlista (angol rövidítésekkel) 51

2.7 +I Az AKKU 1 és 2 egészámként történő összeadása (16 Bit) +I A +I utasítás összeadja az AKKU1-L tartalmát az AKKU2-L tartalmával és az eredményt tárolja az AKKU1-L-ben. Az összeadás során az AKKU1-L és AKKU2-L tartalmát a program 16-bites egészszámként értékeli. A müvelet nem befolyásolja és nem veszi figyelembe a RLO-t. Az A1, A0, OS, és OV státuszbit az eredménytől függően változik. A két akkumulátorral rendelkező CPU-k esetében az AKKU2 tartalma változatlan marad. A négy akkumulátorral rendelkező CPU-k esetében az operációs rendszer az AKKU3 tartalmát az AKKU2-be, az AKKU 4 tartalmát az AKKU 3-ba másolja. Az AKKU 4 tartalma nem változik. írja: - x x x x - - - - A 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 Példa Magyarázat L IW10 //az IW10-ben lévő érték az AKKU1-L-be kerül. L MW14 //Az MW14 tartalmának betöltése az AKKU1-L-be. Ekkor az AKKU-1 korábbi tartalma átmegy az AKKU2-L-be. +I //összeadja az AKKU2-L és a AKKU1-L tartalmát, az eredményt az AKKU1- L-ben tárolja T DB1.DBW25 //Az AKKU1-L tartalma átmásolódik a DB1 DBW25-es szavába. STEP 7 utasításlista (angol rövidítésekkel) 52

2.8 -I Az AKKU1 kivonása az AKKU2-ből (16 bit) -I A -I utasítás kivonja az AKKU1-L tartalmát az AKKU2-L tartalmából, és az eredményt az AKKU1-L-ben tárolja. A kivonás során az AKKU1-L és AKKU2-L tartalmát a program 16- bites egészszámként értékeli. A müvelet nem befolyásolja és nem veszi figyelembe a RLO-t. Az A1, A0, OS, és OV státuszbit az eredménytől függően változik. A két akkumulátorral rendelkező CPU-k esetében az AKKU2 tartalma változatlan marad. A négy akkumulátorral rendelkező CPU-k esetében az operációs rendszer az AKKU3 tartalmát az AKKU2-be, az AKKU 4 tartalmát az AKKU 3-ba másolja. Az AKKU 4 tartalma nem változik. írja: - x x x x - - - - A 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-65535 >= különbség > 32767 0 1 1 1-65535 <= különbség < -32768 1 0 1 1 Példa Magyarázat L IW10 // az IW10-ben lévő érték az AKKU1-L-be kerül. L MW14 // Az MW14 tartalmának betöltése az AKKU1-L-be. Ekkor az AKKU-1 korábbi tartalma átmegy az AKKU2-L-be -I //Az AKKU1-L kivonása az AKKU2-L-ből,az eredmény tárolása az AKKU1-Lben. T DB1.DBW25 // Az AKKU1-L tartalma átmásolódik a DB1 DBW25-es szavába. STEP 7 utasításlista (angol rövidítésekkel) 53

2.9 *I AKKU1 és AKKU2 szorzása egészszámként (16 Bit) *I A *I utasítás az AKKU2-L tartalmát szorozza össze az AKKU1-L tartalmával. A szorzás során az AKKU1-L és AKKU2-L tartalmát a program 16-bites egész-számként értékeli. Az eredmény az AKKU1-ben tárolódik. Ha az OV 1 = 1 és OS = 1, akkor az eredmény túllépi a 16-bites egészszám határát. A müvelet nem befolyásolja és nem veszi figyelembe a RLO-t. Az A1, A0, OS, és OV státuszbit az eredménytől függően változik. A két akkumulátorral rendelkező CPU-k esetében az AKKU2 tartalma változatlan marad. A négy akkumulátorral rendelkező CPU-k esetében az operációs rendszer az AKKU3 tartalmát az AKKU2-be, az AKKU 4 tartalmát az AKKU 3-ba másolja. Az AKKU 4 tartalma nem változik. írja: - x x x x - - - - A 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-1.073.741.824 >= szorzat > 32767 1 0 1 1-1.073.709.056 <= szorzat < -32768 0 1 1 1 Példa Magyarázat L IW10 // az IW10-ben lévő érték az AKKU1-L-be kerül. L MW14 // Az MW14 tartalmának betöltése az AKKU1-L-be. Ekkor az AKKU-1 korábbi tartalma átmegy az AKKU2-L-be. *I //Az AKKU2-L szorzása azakku1-l-lel,az eredmény tárolása az AKKU 1- ben. T DB1.DBD25 // Az AKKU1 tartalma átmásolódik a DB1 DBD25-ös duplaszóba. STEP 7 utasításlista (angol rövidítésekkel) 54

2.10 /I Az AKKU2 osztása az AKKU1-gyel (16 Bit) /I A /I utasítás elosztja az AKKU2-L-t az AKKU1-L tartalmával. Az osztás során az AKKU1-L és AKKU2-L tartalmát a program 16-bites egész-számként értékeli. Az eredmény az AKKU1-ben tárolódik, és két egészszámból áll (16 Bit): a hányados és az osztás maradéka. A hányados az AKKU1-L-ben, a maradék pedig az AKKU1-H ban található. A müvelet nem befolyásolja és nem veszi figyelembe a RLO-t. Az A1, A0, OS, és OV státuszbit az eredménytől függően változik. A két akkumulátorral rendelkező CPU-k esetében az AKKU2 tartalma változatlan marad. A négy akkumulátorral rendelkező CPU-k esetében az operációs rendszer az AKKU3 tartalmát az AKKU2-be, az AKKU 4 tartalmát az AKKU 3-ba másolja. Az AKKU 4 tartalma nem változik. írja: - x x x x - - - - A státuszbitek képzése A1 A0 OV OS hányados = 0 0 0 0 - -32768 <= hányados < 0 0 1 0-32767 >= hányados > 0 1 0 0 - hányados = 32768 1 0 1 1 Osztás nullával 1 1 1 1 Magyarázat L IW10 //Az IW10 értéke betöltődik az AKKU1-L-be. L MW14 //Betölti az MW14 tartalmát az AKKU1-L-be, és áttolja az előző tartalmat az AKKU2-L-be /I //Az AKKU2-L osztása az AKKU1-L tartalmával, az eredmény tárolása az AKKU1- ben: AKKU1-L: hányados, AKKU1-H: maradék T MD20 //Az AKKU 1 tartalma (eredmény) átmásolódik az MD20-ba. STEP 7 utasításlista (angol rövidítésekkel) 55

2.11 + Egészszámú állandó hozzáadása (16, 32 Bit) + <egészszámú állandó> Operandus Adattipus < egészszámú állandó > állandó, (16 ill. 32 Bit) A + < egészszámú állandó > utasítás egészszámú állandót ad az AKKU1 tartalmához, és tárolja az AKKU1-ben. A művelet a státuszbitek befolyásolása nélkül kerül végrehajtásra. A + < egészszámú állandó, 16bit > utasítás egészszámú állandót ad az AKKU1-L tartalmához (tartomány -32768... +32767), és tárolja az AKKU1-L-ben. A + < egészszámú állandó, 32 bit > utasítás egészszámú állandót ad az AKKU1 tartalmához tartomány -2.147.483.648 bis 2.147.483.647, és tárolja az AKKU1-ben. írja: - - - - - - - - - Példa Magyarázat L IW10 // Az IW10 értéke betöltődik az AKKU1-L-be. L MW14 // Betölti az MW14 tartalmát az AKKU1-L-be, és áttolja az előző tartalmat az AKKU2-L-be. +I //összeadja az AKKU1-L és AKKU2-L tartalmát, az eredményt tárolja az AKKU1-L-ben. + 25 //25-öt ad az AKKU1-L-hez, és tárolja az AKKU1-L-ben. T DB1.DBW25 // Az AKKU1 tartalma átmásolódik a DB1 DBD25-ös szóba.. Magyarázat L IW12 L IW14 + 100 //Összeadja az AKKU1-L-t és a 100-at, az eredményt tárolja az AKKU1-Lben. >I //Ha AKKU 2 > AKKU 1 ill. IW 12 > (IW14 + 100), SPB NEXT //akkor ugrás a NEXT címkére. STEP 7 utasításlista (angol rövidítésekkel) 56