Adattípusok és paramétertípusok



Hasonló dokumentumok
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}

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Informatikai Rendszerek Alapjai

Assembly programozás: 2. gyakorlat

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

Aritmetikai utasítások I.

Fixpontos és lebegőpontos DSP Számrendszerek

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

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

LEBEGŐPONTOS SZÁMÁBRÁZOLÁS

Dr. Oniga István DIGITÁLIS TECHNIKA 2

Programozás alapjai. 10. előadás

Készítette: Nagy Tibor István

Bevezetés a programozásba. 5. Előadás: Tömbök

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

5. Fejezet : Lebegőpontos számok

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

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

A C programozási nyelv I. Bevezetés

Java II. I A Java programozási nyelv alapelemei

A C programozási nyelv I. Bevezetés

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

2. Fejezet : Számrendszerek

C programozási nyelv

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Óbudai Egyetem. C programozási nyelv

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

Programozás alapjai. 5. előadás

Digitális technika VIMIAA01

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

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

1. Jelölje meg az összes igaz állítást a következők közül!

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

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

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

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

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

Programozott soros szinkron adatátvitel

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

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

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Digitális technika VIMIAA02 1. EA Fehér Béla BME MIT

A PiFast program használata. Nagy Lajos

Az Informatika Elméleti Alapjai

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

Java II. I A Java programozási nyelv alapelemei

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

A 32 bites x86-os architektúra regiszterei

Matematikai alapok. Dr. Iványi Péter

A C programozási nyelv III. Pointerek és tömbök.

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Digitális technika VIMIAA02 1. EA

A C programozási nyelv III. Pointerek és tömbök.

Matematikai alapok. Dr. Iványi Péter

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

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

Számítógép és programozás 2

Adattípusok. Dr. Seebauer Márta. Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár

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

5.1.4 Laborgyakorlat: A Windows számológép használata hálózati címeknél

Harmadik gyakorlat. Számrendszerek

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

Programozas 1. Strukturak, mutatok

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

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

(jegyzet) Bérci Norbert szeptember 10-i óra anyaga. 1. Számrendszerek A számrendszer alapja és a számjegyek

5. Gyakorlat. struct diak {

OOP. Alapelvek Elek Tibor

A STEP 7 programozás alapjai

Felvételi tematika INFORMATIKA

Adatelérés és memóriakezelés

Komputeralgebra Rendszerek

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

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.

APB mini PLC és SH-300 univerzális kijelző Általános használati útmutató

KARAKTERFELISMERÉS AZ EVASYS-BEN

INFO1 Számok és karakterek

a statisztikai értékek feldolgozása

Gyakorló feladatok az 1. nagy zárthelyire

9. Képaláírás, kereszthivatkozás, tárgymutató és jegyzékek

Occam 1. Készítette: Szabó Éva

Programozás I gyakorlat

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

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Struktúra nélküli adatszerkezetek

Digitális technika VIMIAA01

Algoritmizálás és adatmodellezés tanítása 1. előadás

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

7. fejezet: Mutatók és tömbök

Digitális technika VIMIAA01

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék. Önálló laboratórium

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Feladat: Indítsd el a Jegyzettömböt (vagy Word programot)! Alt + számok a numerikus billentyűzeten!

OOP #14 (referencia-elv)

Átírás:

SIMATIC STEP 7 programozás Adattípusok és paramétertípusok Kivonatos ismertetés, 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. 2010. STEP 7 adattípusok és paramétertípusok 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 SIMATIC internet oldal címe: www.siemens.com/simatic Információ-kérés magyar nyelven: simatic.tamogatas.hu@siemens.com STEP 7 adattípusok és paramétertípusok 2

Tartalom 1. Elemi adattípusok 2. Összetett adattípusok 3. Paramétertípusok STEP 7 adattípusok és paramétertípusok 3

Adat- és paramétertípusok Bevezetés A felhasználói programokban alkalmazott Minden adatnak rendelkeznie kell valamilyen típusmegnevezéssel. A típuscsoportok a következők: elemi adattipusok, összetett adattipusok, paramétertipusok, amelyekkel olyan paramétereket definiálnak, amiket FB-k ill. FC-knek átadnak. Allgemeine Information Néhány adattipus különböző formátum-lehetőségekkel rendelkezik. Míg a bit, vagyis egy adat, amelynek csak két lehetséges értéke van, magától értetődően csak un. Bitminta formátumban jelenhet meg, addig pl. A szó (Word) megjelenítése több formátumban is lehetséges. A következő táblázat formátumokat mutat be, amelyekkel a változókat vagy állandókat meg lehet jeleníteni. Formátum Bitek száma Számábrázolás (példa) Hexadecimális 8, 16 und 32 W#16#A123 ( Bináris 8, 16 und 32 2#1011 IEC-Dátum 16 D# IEC-Idő 32 T# Fixpontos (integer) 16 132 Karakter 8 A W#16#A123 W szóméretű (16-bites) 16 hexadecimális szám A123 hexadecimális ábrázolás (41251 decimális szám) # elválasztójel Ábrázoláskor alapvetően a szabály: ha a szám írásmódjában kifejezi típusát, akkor nem szükséges egyéb megkülönböztető jelzést alkalmazni. Pl. 132 kifejezi, hogy egészszám, és ennek legcélszerűbb megjelenítési módja a tizes számrendszer. A szám más formátumú megjelenítése esetén a fenti jeleket kell alkalmazni, tehát: A decimális 132 = B#16#84 hex. Formátumban. (A fenti ismertetés csak példa, a teljes formátum-szabályokat a következőkben látható táblázatok tartalmazzák.) Elemi adattípus A Siemens S7-es rendszerében minden olyan tipus elemi adattipus, amely maximálisan 32 bit hosszú, és nem áll más elemi adattipusból (pl. Ha egy nyolcbites tárolási egységet bájtként kezel a program, akkor az elemi adattipus, ha azonban nyolcbites tömbként (array, Feld, tömb), STEP 7 adattípusok és paramétertípusok 4

akkor az összetett adattipus, mert nyolc darab elemi bit-ből áll, amelyek a tömbön belül különkülön megszólíthatók). Minden elemi adattipus meghatározott hosszal rendelkezik. A következő táblázat tartalmazza, az elemi típusokat. Típus (név) Bitek száma Formátumok Tartomány és számábrázolás (legalacsonyabb és legmagasabb érték) Példa BOOL (Bit) 1 Bool-Szöveges IGAZ/HAMIS IGAZ, 1 BYTE (bájt) 8 hexadecimális B#16#0. B#16#FF B#16#10 WORD (szó) 16 Bináris szám DWORD (duplaszó) INT (egészszám) DINT (egészszám) REAL (valós szám) S5TIME (SIMATIC-idő) TIME (IEC-idő) DATE (IEC-Dátum) TIME_OF_DAY (időpont) CHAR (karakter) hexadecimális szám BCD decimális szám előjel nélkül 32 Bináris szám hexadecimális szám decimális szám előjel nélkül 16 decimális szám előjellel 32 decimális szám előjellel 32 IEEE lebegőpontos szám 16 S7-időadat 10 ms lépésekben 32 IEC-időadat 1 ms lépésekben előjellel 16 IEC-Dátum 1- napos lépésekben 32 Időpont 1 ms lépésekben 2#0.. 2#1111_1111_1111_1111 W#16#0... W#16#FFFF C#0... C#999 B#(0,0)... B#(255,255) 2#0. 2#1111_1111_1111_1111_ 1111_1111_1111_1111 DW#16#0000_0000. DW#16#FFFF_FFFF B#(0,0,0,0). B#(255,255,255,255) -32768 bis 32767 1 L#-2147483648. L#2147483647 Fölső határ: 3.402823e+38 Alsó határ: 1.175 495e-38 S5T#0H_0M_0S_10MS... S5T#2H_46M_30S_0MS és S5T#0H_0M_0S_0MS - T#24D_20H_31M_23S_648MS. T#24D_20H_31M_23S_647MS D#1990-1-1... D#2168-12-31 TOD#0:0:0.0. TOD#23:59:59.999 8 ASCII-karakter A, B stb. E 2#0001_0000_0000_0000 W#16#1000 word#16#1000 C#998 B#(10,20) byte#(10,20) 2#1000_0001_0001_1000_ 1011_1011_0111_1111 DW#16#00A2_1234 dword#16#00a2_1234 B#(1, 14, 100, 120) byte#(1,14,100,120) L#1, 1 1.234567e+13 S5T#0H_1M_0S_0MS S5TIME#0H_1H_1M_0S_0MS T#0D_1H_1M_0S_0MS TIME#0D_1H_1M_0S_0MS D#1994-3-15 DATE#1994-3-15 TOD#1:10:3.3 TIME_OF_DAY#1:10:3.3 STEP 7 adattípusok és paramétertípusok 5

Az INT adattípus formátuma (16-Bites egészszám) Az egészszám előjellel rendelkezik, ami jelzi, hogy negatív vagy pozitív számról van szó. Az egészszám a tárban 16 bitet, tehát egy szó helyet foglal el. A következő ábra az INT tipus tartományát mutatja. Formátum Tartomány 16-Bites egészszám -32 768. +32 767 A +44 egészszám látható alábbiakban bináris alakban előjel Decimális érték: STEP 7 adattípusok és paramétertípusok 6

A DINT adattípus formátuma (32-Bites egészszám) Az egészszám előjellel rendelkezik, ami jelzi, hogy negatív vagy pozitív számról van szó. Az egészszám a tárban 32 bitet, tehát egy szó helyet foglal el. A következő ábra az DINT tipus tartományát mutatja. Formátum Tartomány 32-Bites egészszám -2 147 483 648... +2 147 483 647 A -500 000 egészszám látható alábbiakban bináris alakban. A bináris számrend-szerben egy egészszám negatív értékét a pozitív érték kettes komplemensével ábrázolják. Egy szám kettes komplemensét úgy képzik, hogy a szám minden bitjét megfordítják (invertálják), és az eredményhez +1-et hozzáadnak. elő jel STEP 7 adattípusok és paramétertípusok 7

A REAL adattipus formátuma (lebegőpontos szám, valós szám) A valós számokat a következő általános alakban ábrázolják a matematikában: "szám = m b E ". A "b" alap és az "E" kitevő egészszámok, az m mantissza valós szám. Ennek az ábrázolási módnak az a nagy előnye, hogy igen kis helyen igen nagy és igen kis értékeket lehet ábrázolni. A mantissza és a kitevő megadására használt korlátozott mennyiségű bittel igen nagy számtartományt lehet átfogni. Hátránya a korlátozott számítási pontosság. A lebegőpontos formátum a STEP7-ben A STEP7 által használt lebegőpontos formátum megfelel az egyszerű szélességű alapformátumnak a 754-1985, IEEE Standard for Binary Floating-Point Arithmetic ANSI/IEEE szabvány szerint. A számábrázoláshoz alkalmazott képlet elemei a következők: V előjel e a +127 -es állandóval megnövelt kitevő, tehát e = E + 127 m a mantissza törtrésze, maga a mantissza nem kerül a képletbe, mert az az érvényes számtartományban mindig = 1. A három alkotórész egy duplaszó helyet foglal a tárban. el őj expon ens:e Manti ssza: A következő táblázat az egyes bitek értékét mutatja A lebegőpontos szám részei Bit-szám Érték V Előjel 31-es bit e exponens 30 2 7......... e exponens 24 2 1 e exponens 23 2 0 m mantissza 22 2-1......... m mantissza 1 2-22 m mantissza 0 2-23 A három összetevő alkalmazásával az ebben a formátumban ábrázolt szám a következő képlet szerint történik: szám = 1,m 2 e-127 a képletben: e: 1 e 254 V: pozitív számnál V = 0, negatív számnál V = 1. A lebegőpontos számok tartománya a fenti képlet szerint ábrázolt lebegőpontos szám szerint: STEP 7 adattípusok és paramétertípusok 8

Formátum Tartomány Az ANSI/IEEE szerinti lebegőpontos számok -3,402 823E+38... -1,175 495E-38 és 0 és +1,175 495E-38.+3,402 823E+38 Pontosság a lebegőpontos számokkal történő számításoknál A nagy nagyságrendi különbségeket felmutató számokkal végrehajtott számításoknál (több tizes hatvány) pontetlanságok léphetnek fel a számítási eredményekben. A STEP7-ben használt lebegőpontos számok 6 tizedesjegyig pontosak. Ezért lebegőpontos állandók megadásánál csak max. 6 tizedesjeyet adhat meg. A 6-tizedes számítási pontosság pl. A következőt jelenti: a szám1 + szám2 = szám1 lehet, ha a szám1 nagyobb mint a szám2 * 10 y ahol az y>6. Pl.: 100 000 000 + 1 = 100 000 000. Példa a lebegőpontos számok ábrázolására A következő ábra az alábbi tizedes törteket (valós számokat) mutatja lebegőpontos számként bitminta formátumban. 10,0 Pi (3,141593) a 2 négyzetgyőke (1,414214) A 10,0 a fenti képlet szerint a következő képet mutatja lebegőpontos számként: e = 2 7 + 2 1 = 130 m = 2-2 = 0,25 Ezzel: (1 + m) 2 (e-127) = 1,25 2 3 = 10,0 [1,25 2 (130-127) = 1,25 2 3 = 10,0] STEP 7 adattípusok és paramétertípusok 9

Decimális érték: 10,0 STEP 7 adattípusok és paramétertípusok 10

Az S5TIME adattipus formátuma (időtartam) Ha az időműveleteknél az időtartam megadására az S5TIME adattipust használják, akkor a beadott értéket a rendszer BCD-formátumban fogja tárolni. A következő ábra az így beadott érték bitmintáját mutatja. A beadott érték 127 s: Időalap: Időérték BCD 1s formátumban Lényegtelen: ezeket az operációs rendszer figyelmen kívül hagyja Ha az S5TIME időadattal dolgoznak, akkor időértékre 0...999 között lehet adatot bevinni, és meg kell adni az időalapot (lásd az alábbi táblázatot). Az időalap azt az intervallumot határozza meg, amellyel az operációs rendszer az időértéket visszaszámolja nulláig. Időalapok az S5TIME- adattipusnál Időalap Bináris kód 10 ms 00 100 ms 01 1 s 10 10 s 11 Ha tehát a 13-as és 12-es bitre az 10 kódot adják be, akkor az időalap 1 s, vagyis a beadott időértéket 1 másodpercenként számolja vissza nulláig. A következő szintaktikával be lehet vinni egy adott időértéket: L W#16#wxyz ahol: - w = időalap - xyz = időérték BCD-Formátumban L S5T#aH_bbM_ccS_dddMS ahol: - a = óra, bb = perc, cc = másodperc és ddd = Millisekundum ennél a szintaxisnál az időalapot az operációs rendszer automatikusan választja ki, és az értéket kerekíti az időalapnak megfelelő legkisebb következő értékre. A maximálisan bevihető időtartam ennél az időmegadásnál 9990 másodperc (10 s időalap, 999-es időérték) vagy 2H_46M_30S STEP 7 adattípusok és paramétertípusok 11

Összetett adattipusok A Siemens S7-es rendszerében minden olyan tipus összetett adattipus, amely vagy 32 bit-nél hosszabb, vagy más elemi adattipusból tevődik össze (pl. Ha egy nyolcbites tárolási egységet bájtként kezel a program, akkor az elemi adattipus, ha azonban nyolcbites tömbként (array, Feld, tömb), akkor az összetett adattipus, mert nyolc darab elemi bit-ből áll, amelyek a tömbön belül külön-külön megszólíthatók). A STEP 7 a következő összetett adattipusokat tudja kezelni: DATE_AND_TIME STRING ARRAY (tömb, mátrix) STRUCT (Struktura) UDT (felhasználó által definiált típus) FB és SFB (ill. annak instant-db-je) A következő táblázat felsorolja és jellemzi az összetett adattipusokat. Ezeket vagy a függvények (FC, FB, OB) deklarációs részében vagy az adatmodulokban (adatblokkokban) lehet alkalmazni. Adattipus DATE_AND_TIME DT STRING ARRAY STRUCT UDT FB, SFB Leírás 64-bites területet határoz meg a tárban, amely a dátum és az időpont tárolására alkalmas. Az adatokat BCD-formátumban tárolja. Maximum 254 írásjel tárolására alkalmas területet határoz meg (254 db CHAR típus). A maximális méret e karaktersorozat számára 256 bájt: 254 karakter + 2 bájt fej. A karaktersorozat területét csökkenteni lehet azzal, hogy definiáláskor a hosszat is megadják. Ez a következőképpen történik: nev[9] siemens. Egy adott adattípus (lehet elemi vagy összetett) többdimenziós csoportját definiálja. Például: az ARRAY [1..2,1..3] OF INT definíció 2 x 3 egészszámból álló tömböt hoz létre. Az elemekhez az index megadásával lehet hozzáférni, a dimenziók száma max. 6 lehet. (részletek később) Tetszőleges adattipusokból álló változók csoportját definiálja. Az alkotó részek lehetnek elemi tipusok vagy összetett tipusok. (részletek később) Lehetővé teszi nagy adatmennyiség strukturálását és az adattipusok és adataik egyszerűbb bevitelét. Saját struktúrákat lehet létrehozni, és többszörösen felhasználni (tehát a programozó hozza létre a struktúrát és azt saját típusként deklarálja. Az UDT-k saját névvel rendelkeznek (legegyszerűbb esetben UDT1, UDT2 stb.). Az FB-k és SFB-k nem adattipusok, de a velük összekapcsolódó instant-db-k mintegy összetett adatként felfohatók, amelyeken keresztül sz FB-nek adatokat lehet egy tömbben átadni. A DATE_AND_TIME (Dátum és időpont) összetett tipus szerkezete Ha a STEP 7-es programozás során a dátumot és az időpontot a DATE_AND_TIME adattipussal akarják beadni, akkor bevitelük a tárban 8 bájtban fog elhelyezkedni, és a bevitt tartalom BCD-formátumban található. A DATE_AND_TIME adattipus (DT) a következő tartományt tudja befogadni: STEP 7 adattípusok és paramétertípusok 12

DT#1990-1-1-0:0:0.0... DT#2089-12-31-23:59:59.999 A következő pédák mutatják azt a szintaxist, amellyel a dátumot és az időpontot egy DTváltozóban 1993. december 25. 8:12, 34,567 másodperc-re lehet beállítani. A következő két megadás lehetséges: DATE_AND_TIME#1993-12-25-8:12:34.567 DT#1993-12-25-8:12:34.567 A következő táblázat tartalmazza azt az összeállítást, amit fenti időpont megadása után a 8 egymás utáni bájt tartalmaz. A példa tehát az 1993.december 25., 8:12 óra és 34,567 másodperc adatot jeleníti meg: Bájt A tartalom megnevezése A bájt tartalma 0 év B#16#93 1 hónap B#16#12 2 nap B#16#25 3 óra B#16#08 4 perc B#16#12 5 másodperc B#16#34 6 Az MSEC két magasabb értékű számjegye B#16#56 7 (4MSB) 7 (4LSB) Az MSEC alacsonyabb értékű számjegye A hét napja 1 = vasárnap 2 = hétfő... 7 = szombat A "DATE_AND_TIME" lehetséges értékei: min.: DT#1990-1-1-0:0:0.0 max.: DT#2089-12-31-23:59:59.999 B#16#7_ B#16#_5 Möglicher Wertebereich Év 1990-1999 2000-2089 BCD-Code 90-99 00-89 Hónap 1-12 01-12 Nap 1-31 01-31 Óra 00-23 00-23 Perc 00-59 00-59 Másodperc 00-59 00-59 Milliszekundum 0-999 000-999 A hét napja Vasárnap - szombat 1-7 STEP 7 adattípusok és paramétertípusok 13

Tömb (mátrix) alkalmazása az adatkezelésben Tömbök létrehozása A tömb egyfajta típusu (elemi vagy összetett) adatok összefüggő csoportját kapcsolja össze. Tömböt tömbökből nem lehet létrehozni. A tömb használata a Siemens PLC-iben a STEP7 bevezetésekor vált lehetségessé. A jólismert STEP5-ös rendszerben összetett típusokat és így természetesen a tömböt sem lehetett alkalmazni. Ennek ellenére minden műszaki feladatot meg lehetett oldani az S5-ös készülékekkel is. A tömb használata tehát nem elengedhetetlen, de jelentősen növeli az adatkezelés matematikai szinvonalát, rugalmasságát és áttekinthetőségét, egyszerűbb feladatoknál azonban szükségtelen. A tömb használatához először is olyan adatok kellenek, amelyek tömbbe szervezhetők. Ezekhez az adatokhoz a felhasználónak a tömböt létre kell hozni, másként kifejezve deklarálni kell. Tömböket DB-kben vagy a programmodulok (OB, FC, FB) deklarációs részében lehet deklarálni. Ez a deklarációs rész a STEP7 5-ös verziójában két különböző megjelenítési módban fordul elő. Az ábrán látható egy DB deklarációs táblája. A DB-ben deklaráltak egy tömböt, amelynek a Waerme_2x3 nevet adták. A deklarációhoz a Typ oszlopba az ARRAY kulcsszót kellett beadni, ez jelenti a tömböt, majd meg kellett adni a tömb tulajdonságait. A tömb két fontos tulajdonsággal rendelkezik: szerkezete és mérete: ezt a szögletes zárójelben megadott számok mutatják [1..2,1..3] A mező méretét egy indexel kell megadni. Az egyes dimenziók (max. 6 dimenzió) első és utolsó elemszámát kell ebben az idexben megadni. Az elemszámokat két ponttal, a dimenziókat vesszővel kell egymástól elválasztani. Az indexet szöletes zárójelben kell megadni. a benne tárolt adatok típusa: ezt a következő sor tartalmazza INT STEP 7 adattípusok és paramétertípusok 14

A szögletes zárójelben látható, hogy a példa szerinti tömb kétdimenziós, a számok pedig azt mutatják, hogy a dimenziók hány elemet tartalmaznak. Az első dimenzió két elemű (1..2), a második háromelemű (1..3). Kezdeti érték beadása a tömb egyes elemeibe A tömb létrehozatalakor minden elemnek kezdeti értéket lehet beadni. Erre a STEP7-ben két lehetőség kínálkozik: az értékek egyenkénti beadása: a tömb elemeibe érvényes adatot adhat be (jelen esetben az INT típusnak megfelelő). A beadás a kezdeti érték (Anfangswert) nevű oszlopba történik, szögletes zárójelek közé az elemek sorrendjében: [1,1]. Az egyes elemeket egymástól vesszővel kell elválasztani. ismétlési tényező alkalmazása: abban az esetben, ha az egymás utáni elemek kezdeti értéke megegyezik, akkor a bevitel ismétlési tényező alkalmazásával egyszerüsíthető. Az ismétlési tényező beviteléhez a formátum x(y), ahol az x az ismétlési tényező, az y pedig az érték, amit ismételni kell. Ha a fenti példa szerinti tömböt használják, akkor a kezdeti értékeket az összes hat elemre, amennyiben ezek mind különböznek, a következő módon adhatják meg: 17, 23, -45, 556, 3342, 0. Ha azonban pl. minden elem kezdeti értéke 10, akkor célszerűbb a következő megoldást használni: 6(10). Az is lehetséges, hogy az első két elem eltérő, de a többi pl. mind 0, ekkor a megadás legcélszerűbb módja: 17, 23, 4(0). Hozzáférés a tömb elemeihez A tömb elemeihez az elem indexein keresztül lehet hozzáférni. Az előbbi példában egy DB látható, és benne egy tömb. Ha az első dimenzió második eleméhez akarnak hozzáférni, akkor a következő utasítást kell programozni: L Motor.Waerme_2x3[1,2]. Az utasítás az AKKU1-be tölti a Motor nevű DB Waerme_2x3 nevű tömbjéből az első dimenzió második elemét. Példák: 1. A következő ábra három egészszámot tartalmazó tömböt mutat. Az elemekhez a hozzáférés az indexszel lehetséges. Az index a szögletes zárójelben lévő szám. A második egészszám indexe pl. Op_Temp[2]. Az index tetszőleges egészszám lehet a -32768 bis 32767 tartományban, tehát akár negatív szám is lehet. STEP 7 adattípusok és paramétertípusok 15

Ha feltesszük, hogy a fenti ábra egy Hőmérsékletek nevű DB deklarációs része (a név a globális szimbólumok listájában keresendő, erre utal az idézőjel!), akkor a hozzáférés a második elemhez: L Hőmérsékletek.Op_Temp[2] Hogy miért Hőmérsékletek., azt a struktúrákkal foglalkozó rész tartalmazza. 2. A következő ábrán kétdimenziós tömb látható, amelynek elemei ugyancsak egészszámok. A többdimenziós tömbben is az index nyújt lehetőséget az elemekhez való hozzáférésre. A kétdimenziós tömböt úgy lehet tekinteni, mint ha a második dimenzióban lévő elemekből az első dimenzióban megadott számú készlet lenne. Így hozzáféréskor, először meg kell adni a készlet sorszámát (1. vagy 2.), majd a megadott készletben az elemszámot (1., 2. vagy 3.), tehát: Betr_Temp[2, 2] vagyis ez a második készlet 2. eleme, másként kifejezve az össz elemszámból az 5. A STEP7 nyelvben maximálisan 6 dimenzió lehet (hat index) egy tömbben. Tehát a fenti tömböt hatdimenziós változatban pl. így deklarálhatnák. ARRAY [1..3,1..2,1..3,1..4,1..3,1..4] Az első elem indexe ebben az esetben Betr_Temp[1,1,1,1,1,1] lenne, míg az utolsó elemé Betr_Temp[3,2,3,4,3,4]. Tömb átadása paraméterként Tömbök paraméterként való használata rendkívül megkönnyíti nagyobb mennyiségű adatok átadását FC-nek vay FB-nek. Egy paraméterrel gyakorlatilag egy egész tömb átadható. Ez azonban feltételezi, hogy az adatokat tömbbe szervezték, és az FC ill. FB is tartalmaz deklarációjában egy ugyanolyan szerkezetű tömböt. A két tömb nevének nem kell mefelelni, csak az aktuális paraméternek és a formális paraméternek kell egyforma szerkezettel rendelkezni. Struktúra alkalmazása az adatkezelésben Struktúra A struktúra többféle típusú (elemi vagy összetett, beleértve a tömböket és struktúrákat) adatok összefüggő csoportját kapcsolja össze. STEP 7 adattípusok és paramétertípusok 16

A tömb használata a Siemens PLC-iben a STEP7 bevezetésekor vált lehetségessé. A jólismert STEP5-ös rendszerben összetett típusokat és így természetesen a struktúrákat sem lehetett alkalmazni. Ennek ellenére minden műszaki feladatot meg lehetett oldani az S5-ös készülékekkel is. A struktúra használata tehát nem elengedhetetlen, de jelentősen növeli az adatkezelés matematikai szinvonalát, rugalmasságát és áttekinthetőségét, egyszerűbb feladatoknál azonban szükségtelen. A struktúra használatához először is olyan adatok kellenek, amelyek struktúrába szervezhetők. Ezen adatok kezeléséhez a felhasználónak a struktúrát létre kell hozni, másként kifejezve deklarálni kell. Struktúrákat DB-kben vagy a programmodulok (OB, FC, FB) deklarációs részében lehet deklarálni. Ez a deklarációs rész a STEP7 5-ös verziójában két különböző megjelenítési módban fordul elő. A következő ábrán egy struktúra látható, amely egy egészszámból, egy bájtból, egy karakterből és újra egy valós szám végül egy bitméretű változóból áll. A struktúrát max. 8 síkon lehet egymásba ágyazni, tehát struktúra, ami struktúrából, ami viszont tömbökből stb. áll. STEP 7 adattípusok és paramétertípusok 17

A struktúra létrehozása Struktúrákat DB-kben vagy a programmodulok (OB, FC, FB) deklarációs részében lehet deklarálni. A következő ábrán struktúra deklarációja látható. A struktúrának nevet kell adni (itt. Stapel_1). A mellette beadandó változótípus STRUCT kulcsszó jelenti, hogy struktúráról van szó. Ezt követően be kell vinni a struktúra elemeit: Menge Ursprungsdaten Steuercode Temperatur Ende INT BYTE CHAR REAL BOOL A struktúra végét az END_STRUCT kulcsszó jelzi. A kezdeti értékek megadása itt egyszerűbb mint a tömb esetében, amennyiben elemi adatokról van szó. Az értéket egyszerűen a kezdeti érték oszlopba (Anfangswert) kell beírni. Hozzáférés a struktúra elemeihez Struktúrákat DB-ben vagy programmodulok deklarációs részében lehet létrehozni. A struktúra elemeihez való hozzáférés a számítástechnika szokásos szintaktikájával történik, de a STEP7- ben néhány eltérő sajátosságot is szem előtt kell tartani. Alapvetően igaz, hogy ey elem elérése a struktúra nevének, és az elem nevének megadásával történik, a két név egymástól ponttal van elválasztva. Tehát: ha a struktúra neve Stapel_1 és az elem neve Temperatur, akkor: L Stapel_1.Temperatur Az utasítás betölti az AKKU1-be a Stapel_1 nevű struktúra Temperatur nevű változóját. Ez a helyzet, ha a struktúrát egy programmodul deklarációjában hozták létre. Ha azonban ez a szerkezet egy DB-ben van, akkor figyelembe kell venni, hogy a DB már eleve egy struktúra, tehát a létrehozott struktúra már a DB-Struktúrába ágyazott második struktúra. STEP 7 adattípusok és paramétertípusok 18

Tehát: ha a struktúra neve Stapel_1 és az elem neve Temperatur, és ezek az Daten nevű DBben vannak, akkor: L Daten. Stapel_1.Temperatur Daten az adatmodul szimbólikus neve globális szimbólummal, ezért az idézőjel Stapel_1 a Daten struktúrában elemként (ezért van ponttal elválasztva) definiált Stapel_1 struktúra Temperatur a Stapel_1 struktúrában elemként (ezért van ponttal elválasztva) definiált Temperatur nevű valós szám A PLC-ben lehetőség van azonban az abszolút címzésre is. Az általános szabály a címzéseknél, ha azok több részből (mint itt) tevődnek össze: vagy minden rész szimbólikus, vagy minden rész abszolút. A fenti ábrából megállapítható az elem abszolút címe, és tegyük fel, hogy a Daten nevű DB abszolút címe a DB20, akkor a fenti cím abszolút változatával az utasítás: L DB20.DBD6 Struktúra átadása paraméterként Struktúrák paraméterként való használata rendkívül megkönnyíti nagyobb mennyiségű adatok átadását FC-nek vagy FB-nek. Egy paraméterrel gyakorlatilag egy egész struktúra átadható. Ez azonban feltételezi, hogy az adatokat struktúrába szervezték, és az FC ill. FB is tartalmaz deklarációjában egy ugyanolyan szerkezetű struktúrát. A két sruktúra nevének nem kell mefelelni, csak az aktuális paraméternek és a formális paraméternek kell egyforma szerkezettel rendelkezni. A felhasználó által definiált adattipus (UDT) alkalmazása az adatkezelésben Felhasználó által definiált adattipus (UDT) A felhasználó által definiált adattipusok elemi és/vagy összetett adattípusokat kapcsolnak össze egy egységbe. Hasonlóak a korábban ismertetett struktúrákhoz. Ezeknek azonban úgy lehet nevet adni, hogy általuk a létrehozott adatcsomag a programban globálisan ismert többszörfelhasználható egységgé, tehát a felhasználók által definiált adattípussá válik. A létrehozott UDT a tervezet tartalomjegyzékében a program- és adatmodulokkal egyenrangúan, alkotóelemként megjelenik, önálló adatmodulként azonban nem használható, de mind a szabályos adatmodulokban mind a programmodulok deklarációs részében mint adattípus felhasználható. A következő ábra egy UDT szerkezetét mutatja. Ez az UDT ugyanolyan szerkezetű mint az előbb létrehozott struktúra, és ténylegesen is egy struktúra, de olyan, amely névvel rendelkezik, és adattípusként minden olyan helyen, ahol adattípusok előfordulnak készen felhasznáéható. Vagyis ezeken a helyeken anélkül, hogy az illető struktúrát újra létre kellene hozni, vagy az adatokat egyenként kellene deklarálni, az ábrán STEP 7 adattípusok és paramétertípusok 19

látható névvel (UDT20) beilleszthető, és akár tetszőleges számban. Felhasználó által definiált adattípus létrehozása Az UDT létrehozása a STEP7 fejlesztőben történik úgy, hogy a létrehozandó objektum fajtájaként nem DB-t, nem FC-t stb. hanem UDT-t adnak meg. Az UDT szerkesztője tulajdonképpen a DB-szerkesztő, és ugyanolyan szabályok szerint kell az UDT-t létrehozni mint a DB-t. A következő ábrán az előbbi UDT látható úgy, ahogy a szerkesztőben létrehozták. Tároláskor, ha más nevet nem adtak, UDTx-ként (jelen esetben UDT20) kerül a többi objektum közé. Ha akarják, természetesen a létrehozatalkor vagy később a szimbólumszerkesztőben nevet is adhatnak az UDT-nek, pl. Prozessdaten. Miután létrehozták az UDT-t, a továbbiakban ugyanúgy használhatják, mint bármelyik összetett adattipust, pl. az előbbi DB-ben (DB20) létrehoztak egy struktúrát, az UDT-vel már egyszerűbb a feladat, mert ezt adattipusként használva, és beillesztve, a struktúra automatikusan létrejön, és annyiszor, ahányszor akarják. Milyen előnyöket eredményez az UDT használata DB-k esetében Az egyszer létrehozott UDT segítségével DB-k sokaságát lehet létrehozni ugyanolyan adatstruktúrával. Ezeket az adatmodulokat különböző aktuális értékek bevitelével könnyen lehet a feladathoz célszerűen illeszteni. Pl. létrehoznak egy UDT-t egy festék-recepthez majd ezzel az UDT-vel egy sorozat DB-t lehet készíteni, amelyben csak az összetevők arányát kell különkülön módosítani. STEP 7 adattípusok és paramétertípusok 20

Paramétertípusok Az elemi és összetett adattípusok mellett, a programmodulok közötti adatátvitel céljából formális paraméterként paramétertípusokat is megadhatnak. A STEP7-ben a következő paramétertípusok alkalmazhatók. TIMER vagy COUNTER: ezek a paramétertípusok meghatározott időműveletet vagy számlálóműveletet (T... vagy C...) adnak át paraméterként, amelyekkel a függvény (FC vagy FB) feldolgozásakor a programnak alkalmaznia kell. Ha TIMER vagy COUNTER paramétertípust használnak, akkor a hozzá tartozó aktuális paraméternek természetesen egy bizonyos időműveletre vagy számlálóra kell mutatni, azaz Txx vagy Cxx címet kell megadni, ahol xx pozitív egészszám. BLOCK: a BLOCK paramétertípus egy olyan programmodul címét adja meg, amely a másik programmodul számára paraméterként bemenet vagy kimenet lesz. A paraméter deklarácója meghatározza a felhasználandó modul fajtáját (FB, FC, DB stb.). Ha BLOCK típusu paramétert használnak, akkor aktuális paraméterként egy FC, FB vagy DB címét kell meadni. Pl. FC101. POINTER: a POINTER (mutató) egy változó címét adja meg. A pointer tehát paraméterként érték helyett címet tartalmaz. Ha egy függvény POINTER típusú formális paraméterét kell aktuális paraméterrel ellátni, akkor címet adnak meg. A cím megadása történhet ppinter formátumban (ekkor: P#M50.0) vagy egyszerűen címként (ekkor: M50.0). Természetesen minden esetben az utóbbit használják, kívételt képez, amikor a pointer típusú megadás egyébb előnnyel szolgál. ANY: akkor használják, ha az aktuális paraméter adattípusa nem ismert, vagy nem lényeges és amikor egy függvény bemenetként vagy kimenetként egy területet akarnak típusfüggetlenül megadni (pl. adatátvitel a különböző típusu kommunikációkban (Profibus, Ethernet, Profinet stb.)). Közelebbi információ a továbbiakban. A POINTER típus formátuma A STEP 7-ben a POINTER paramétertipus 6 bájton tárolódik. A következő ábra mutatja a 6 bájt tartalmát. A POINTER lényegében egy indirekt cím és egy DB-cím. A 2., 3., 4. és 5. bájt a korábban ismertetett tartományon átnyúló indirekt címet tartalmazza, az első két bájt pedig a DB címét, ha a POINTER egy DB-ben lévő változóra mutat. Ha a változó nem DB-ben van, akkor ez a két bájt üresspeichert den Parametertyp POINTER in 6 Bytes (48 Bits). Nachfolgendes Bild zeigt die Art der Daten, die in jedem Byte gespeichert werden. Tárterület DB-szám vagy 0 A következő táblázat mutatja azokat a hexadecimális kódokat, amelyek a 2-es bájtban a tárterületeket azonosítják. Hexadecimális kód Tárterület Leírás b#16#81 E Bemenetek b#16#82 A Kimenetek b#16#83 M Belső változók b#16#84 DB Adatmodul STEP 7 adattípusok és paramétertípusok 21

Hexadecimális kód Tárterület Leírás b#16#85 DI b#16#86 L Instant adatmodul b#16#87 V Előző lokális adatok A pointer megadása: P#M50.0 Ha a formális paramétert POINTER típusura választották, akkor elég az M50.0 A POINTER használata Pointert (mutató) alkalmazása akkor célszerű, ha az utasítás operandusát futás közben változtatni akarják. STEP 7 adattípusok és paramétertípusok 22

Az ANY paramétertipus formátuma Az ANY paramétertipus használata Paraméterezhető programmodulok (FC, FB) számára olyan formális paramétert is megadhatnak, amelynél az adattípus változtatható, tehát a hozzárendelt aktuális paraméter típusa tetszőleges lehet. Ebben az esetben a programmodul deklarációs táblájában az említett formális paramétert ANY típusura kell választani. Másik nagy előnye ennek a paramétertípusnak az, hogy több elemi típust tud átadni egyszerre, ezért azoknál a programmoduloknál amelyek feladata adatátvitel egész területeket lehet átvinni ennek sgítségével. Az ANY formátuma adattípusoknál Elemi ill. Összetett adattípusoknál a következő adatokat tartalmazza: Adattípus Ismétlési tényező DB-szám Tárterület Az adatok kezdőcíme Az elemi és összetett adatok tárolt adatai 10 H ha S7 adattípus Ismétlési tényező DB-szám vagy 0 Tárterület Az ismétlési tényező határozza meg, hogy az adott adattipusból hány darabot kell átadni. A 0. bájt az S7-nél mindig 10 Hexa, adattípusok kódja, ha DB-re vonatkozik, akkor a DB címe, egyébként 0, és az utolsó 4 bájt a szokásos indirekt cím. STEP 7 adattípusok és paramétertípusok 23

A következő táblázatok az adattípusok ill. tárterületek kódját tartalmazza. Adattípusok Hexadezimalcode Megnevezés b#16#00 NIL nulla-mutató b#16#01 BOOL bit b#16#02 BYTE bájt b#16#03 CHAR karakter b#16#04 WORD szó b#16#05 INT egészszám b#16#06 DWORD duplaszó b#16#07 DINT egészszám b#16#08 REAL Lebegőpontos szám b#16#09 DATE Datum b#16#0a TIME_OF_DAY (TOD) időpont b#16#0b TIME időtartam b#16#0c S5TIME S5TIME b#16#0e DATE_AND_TIME (DT) Dátum és időpont b#16#13 STRING karaktersorozat Tárterületek Leírás Hexadezimalcode b#16#81 E Bemenetek b#16#82 A Kimenetek b#16#83 M Belső változók b#16#84 DB Adatmodul b#16#85 DI Instant adatmodul b#16#86 L Előző lokális adatok b#16#87 V STEP 7 adattípusok és paramétertípusok 24