S7 változótípusok, OB-k

en: S7 Software

Az S7 programozáshoz az alapfogalmak tisztázását az "alapok" fejezetben találhatja meg.

Az S7 változótípusok bemutatása szintén ott található.

Az S7 AWL (IL) utasításjegyzék itt található.

Ebben a fejezetben a német szintaktikát alkalmazom (azaz nem A, mint AND, hanem U, mint UND a parancs például).

A Simatic Step 7 változótípusai

A változótípusok csoportosítása hosszuk szerint:

Bit (1 bit) Byte (8 bit) Szó (16 bit) Duplaszó (32 bit) 64 bit

BOOL

BYTE

WORD

DWORD

 

 

CHAR

 

 

 

 

 

INT

DINT

 

 

 

DATE

 

 

 

 

S5TIME

 

 

 

 

 

REAL

 

 

 

 

TIME

 

 

 

 

TOD

 

 

 

 

 

DT

    TIMER
COUNTER
BLOCK_FB
BLOCK_FC
BLOCK_DB
BLOCK_SDB
   

A fentiektől eltérő hosszú paraméter-típusok: POINTER (3 szó), ANY (5 szó)

Egyéb (változó hosszú) deklarációk: ARRAY, STRUCT, UDT, STRING[n]

Simatic S7 változójegyzék

ANY

Az ANY típussal összefüggő adatmezők definiálhatók, az alábbi struktúra szerint:

p# [kezdőcím BYTE.BIT] [Adattípus] [Ismétlési faktor]

Legjellemzőbb alkalmazása a BLKMOV funkció hívása.

Példák az ANY típus megadására
Megadott ANY paraméter Leírása
p# M 70.0 BYTE 11 10 byte-os merker terület kijelölése
MB70 - MB80
p# DB22.DBX5.0 S5TIME 3 Három, a DB22-be lementett S5TIME változó kijelölése (az S5TIME szó hosszú változó)
DB 22 Byte 5 - DB 22 Byte 10.
p# A 21.3 BOOL 4 4 bit kijelölése a kimeneten
A 21.3 - A 21.6
SCL ANY típus definició

 

FUNCTION FC111 : INT

VAR_TEMP
Quelle : ANY;
i : DINT;
test : WORD;
QuellPointer AT Quelle : STRUCT
SyntaxID : BYTE;
Datentyp : BYTE;
Laenge : INT;
db_Nummer : INT;
BytePointer : DWORD;
END_STRUCT;

END_VAR

//AnyPointer kezelese

QuellPointer.SyntaxID    := b#16#10;
QuellPointer.Datentyp    := b#16#4;  // Datentyp WORD
QuellPointer.Laenge      := 10;      // 10 szo
QuellPointer.db_nummer   := 100;     // peldaul DB100
QuellPointer.BytePointer := dw#16#84000000 OR SHL(IN := DINT_TO_DWORD(i),N:=3);


FC111 := 100;
END_FUNCTION

ARRAY

Az array-jel tömböt lehet definiálni, mely maximum 6 dimmenziós lehet, és csak egy változótípust tartalmazhat.  Az alábbi paraméter típusokat NEM tartalmazhatja: TIMER, COUNTER, BLOCK_FB, BLOCK_FC, BLOCK_DB, BLOCK_SDB, POINTER, ANY.

Az ARRAY indexe nem eshet kívül az alábbi tartományon: -32768 - +32767.

A típus nem dinamikus, és legalább két elemet kell, hogy tartalmazzon. Minden dimmenzió két határértékkel definiálható, pl: ARRAY [a1..a2]. A két határérték lehet negatív, pozitív érték vagy nulla, de az a2-nek mindenképpen nagyobbnak kell lennie, mint az a1-nek. Erre néhány példa:

Egy dimmenziós tömb: ARRAY [-10..-1]

Három dimmenziós tömb: ARRAY [1..12, 0..1, -5..-2]

A lenti példán egy kezdőérték megadás látható, ahol az 5 elsődleges dimmenzió rendre 0.0, +100.0, 0.0 értékekkel kerül feltöltésre:

 

Meres : ARRAY [1 .. 5, 1 .. 3 ] OF REAL := 0.0, +100.0, 0.0, 0.0, +100.0, 0.0, 0.0, +100.0, 0.0, 0.0, +100.0, 0.0, 0.0, +100.0, 0.0;

BOOL

Bit változó típus. A bit a legkisebb egység a plc-n, értéke TRUE vagy FALSE lehet.

Az AWL-ben elvégezhető bit logikai műveleteket itt találja.

BYTE

A byte 8 bitet tartalmaz. A biteket hátulról előre számozzuk, a byte 0.bitje mindig a legutolsó.
Egy byte értéke 0 – 255 –ig terjedhet (B#16#0 - B#16#FF).

7

6

5

4

3

2

1

0

MSB

LSB

A byte felső és alsó 4 bitjét rendre MSB (Most Significant Bit) és LSB (Least Significant Bit) nevek­kel illetjük.

CHAR

A karakter változótípust plc-n meglehetősen ritkán alkalmazzuk.  Általában az RS232-vel kommunikáló egységek kapcsán szokott felbukkanni ez a típus. Ebben az esetben is, mint a byte-nál, a változó 8 bitből áll, és 0 - 255 közötti értéket vehet fel. Az ASCII kódtáblázat szerinti hozzárendeléssel egy byte – egy char – egy karakter.

Az Ascii kódtáblázatot a raktár fejezetben találja.

DATE

A dátum típus 2 byte-on, előjel nélkül a napok számát adja  a kezdeti időponttól. A kezdet az S7 esetén 1990.01.01, ezen időpont előtti dátum ezzel a típussal nem írható le. A maximálisan leírható dátum pedig: 2168.12.31.
A biteket ebben az esetben is hátulról előre számozzuk:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

DATE_AND_TIME (DT)

A típus 64 bites, és BCD formátumban tartalmazza az információkat az alábbi tagolás szerint:

0. byte 1. byte 2. byte 3. byte 4. byte 5. byte 6. byte 7. byte
MSB LSB

Év
90 .. 89

Hónap
01 .. 12

Nap
01 .. 31

Óra
00 .. 23

Perc
00 .. 59

Másodperc
00 .. 59

MSec
00 .. 99
(MSD)

Msec
0 .. 9
(LSD)

Munkanap
1 .. 7

Év
(0.byte)

90-nel indul (1990) és 89-nel ér véget (2089)

Hónap
(1.byte)

Január – December

Msec
(6.byte és 7.byte MSB)

A milliszekundum egy 3 jegyű szám (000 – 999). A BCD egy byte-on csak két számjegyet „engedélyez”. Ezért a felső két számjegyet a 6.byte tartalmazza, a hiányzó, legkisebb helyiértéket a 7.byte felső (MSB) 4 bitje tartalmazza.

Munkanap
(7.byte LSB)

A munkanap kódját a 7.byte alsó (LSB) négy bitje tartalmazza:
1: vasárnap
2: hétfő
3: kedd
4: szerda
5: csütörtök
6: péntek
7: szombat

A DT típus alkalmazási intervalluma: DT#1990-1-1-0:0:0.0 - DT#2089-12-31-23:59:59.999.

BCD kód: a számjegyeknek azok kettes számrendszerbeli értéke felel meg. Egy számjegyet 4 helyi értéken ábrázolunk. Bővebb leírás itt található.

DINT

Dupla integer (32 bit), működése megegyezik az integer-rel, azaz, kettes komplementer képzéssel lehet „bevinni” az értéket, és az első bit itt is az előjel, a többi pedig a számértéket tartalmazza. A változó csak egész számokra (de: Ganzzahl) alkalmazható.
A DINT minimuma -2.147.483.648, a maximuma +2.147.483.647. (Egyszerűbben megjegyezhető az, hogy a DINT nagyjából mínusz kétmilliárdtól plusz kétmilliárdig használható). A DINT felépítése:

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

0. byte

1.byte

2.byte

3.byte

Az első pozícióban (0. byte 7. bit) található bit az előjel (0: plusz, 1: mínusz).
Látható, hogy a biteket hátulról előre, míg a byte-okat előről hátrafelé számozzuk.

DWORD

A DWORD 32 bitet tartalmaz. A bitek számot „nem írnak le”, tartalma pusztán bitek halmaza.

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

0. byte

1.byte

2.byte

3.byte

Intervalluma:

formátum minimuma maximuma
bineáris 0 1111 1111 1111 1111 1111 1111 1111 1111
hexadecimális DW#16#0000 0000 DW#16#FFFF FFFF
BCD 0 9999 9999
előjel nélküli decimális B#(0,0,0,0) B#(255,255,255,255)

A típus lényege, hogy tartalmára nem vonatkozik formai megkötés.
Két – egymást követő - Word típusú változó egy Dword-öt ír le.

INT

Az integer (16 bit) működése megegyezik a DINT-tel, azaz, kettes komplementer képzéssel lehet „bevinni” az értéket, és az első bit itt is az előjel, a többi pedig a számértéket tartalmazza. A változó csak egész számokra (Ganzzahl) alkalmazható.

Az INT minimuma -32.768, a maximuma +32.767. (Egyszerűbben megjegyezhető az, hogy az INT nagyjából mínusz harminckétezertől plusz harminckétezerig használható). Az INT fel­építése:

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

0. byte

1.byte

Az első pozícióban (0. byte 7. bit) található bit az előjel (0: plusz, 1: mínusz).
Látható, hogy a biteket hátulról előre, míg a byte-okat elölről hátrafelé számozzuk.

REAL

A real típus 32 biten a számokat lebegőpontos formátumban tárolja. A belső szerkezet kialakítása az IEEE FP32 szabványa szerint történik. (Például 2334.342487e-6)

Az IEEE (Institute for Electrical and Electronics Engineers) standard 754. definiálja a lebegőpontos (en: floating point) számok tárolását és feldolgozását.

A Real típusú számok tárolási határai:

Minimum pozitív:

Maximum pozitív:

+1.175495e-38

+3.402823e+38

Minimum negatív:

Maximum negatív:

-1.175495e-38

-3.402823e+38

A Real típus felépítése:

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

0.byte

1.byte

2.byte

3.byte

elő
jel
Karakterisztika
8 bit
Mantissza
23 bit
  • Az előjel 1: negatív szám, 0: pozitív szám
  • Karakterisztika: 0-255 közötti számérték, e + 127 –tel kerül megjelenítésre. Decimális szám.
  • Mantissza: A szám kerekített pontosságú leírása

S5TIME

Az S5time (16 bit) típus még az S7 előtti S5 termékcsaládból öröklődött. Kissé körülményesebb használni, mint a normál idődefiníciót, ezért viszonylag ritkán bukkan fel.

Felépítése:

0.byte

1.byte

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

szó

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

üres

Időköz

2.BCD

1.BCD

0.BCD

Az idő definiciójánál 4 időbázis közűl választhatunk, melyeknek a felbontása és a teljes definiálható időhossza eltérő. A bázist a 12. és 13. bitekkel definiálhatjuk:

időbázis

(felbontás)

bineáris kód
(12 - 13 bit)
teljes definiálható időhossz
minimum

teljes definiálható időhossz
maximum

10 ms 00 10MS 9S_990MS
100 ms 01 100MS 1M_39S_900MS
1 s 10 1S 16M_39S
10 s 11 10S 2H_46M_30S

A BCD kódokkal  0 – 999 –ig definiálhatók számok.

A lenti példán a 173 sec megadása látható, másodperces bázisban:

 

BCD definition example: 173 sec

STRING

A String típussal szövegeket tudunk tárolni. Hossza maximum 254 byte, tetszőleges. A String[n] esetén n hosszú szöveg tárolására alkalmas a változó, de a valóságban 2 byte-tal többet foglal el, mert az első byte-ján tárolja a maximális hosszat (n), a második byte-on pe­dig a valós hosszat. Ha például String[6] változónkba a „BUMM” szót tároljuk, akkor a változó 8 byte-ot foglal el, első byte-ja 6-t, második pedig 4-et fog tárolni. A tartalma így néz ki ebben az esetben:

0.byte

1.byte

2.byte

3.byte

4.byte

5.byte

6.byte

7.byte

6

4

„B”

„U”

„M”

„M”

 

 

STRUCT

A struktúra egy összegző adattípus, melyben maximum 8 szint mélységig lehet változó-struktúrákat definiálni. A Struct az alábbi paraméter típusokat NEM tartalmazhatja: TIMER, COUNTER, BLOCK_FB, BLOCK_FC, BLOCK_DB, BLOCK_SDB, POINTER, ANY.

A típusnak legalább két komponenst kell tartalmaznia. A struktúra definiciója a STRUCT és az END_STRUCT kulcsszavak között található. A Struct alkalmazását tekintve gyakorlatilag megegyezik az UDT-vel.

A lenti példán egy "kezel" nevű struktúra definiciója és kezelése látható az AWL editorban:

S7 Sturture in AWL-editor

"kezel" struktúra definiciója és felhasználása az FC1-ben

TIME

A különböző időfunkciókhoz leginkább a Time típusú definíciót szokás használni. A típus 32 bites, gyakorlatilag egy előjeles egész számot tartalmaz, melynek értéke -65.535 és +65.535 között változhat. Ez az érték a milliszekundumokat jelenti, és hogy ne legyen ilyen bonyolult az életünk (v.ö.: minden időt milliszekundumban kellene megadni), a definíciónál  megengedi a „részletes” időleírást, mint például T#2d1h12m32s210ms, mely 2 nap, 1 óra, 12 perc 32 másodperc és 210 milliszekundum jelentéssel bír.

  • A megadható idő maximuma: T#+24d20h31m23s647ms
  • A megadható idő minimuma:  T# -24d20h31m23s648ms

Persze nem kell mindig, minden paramétert kitölteni, érvényes definíció a T#12h23s és a T#123ms is.

A „time” típus felépítése:

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

0. byte

1.byte

2.byte

3.byte

A 0.byte 7.bitje az előjelet tartalmazza. Képzése megegyezik a Dint típussal – kettes komplementer képzéssel állítja elő a negatív számokat.

TIME_OF_DAY (TOD)

A TOD típus 32 bites, tartalma egy előjel nélküli egész szám, mely a milliszekundumokat tárolja.  A típus az egy napon belüli pontos idő definiálására alkalmas, így értéke a TOD#00:00:00.000 és TOD#23:59:59.999  értékek között változhat. A milliszekundum megadása a definícióban nem kötelező. Érvényes megadás például a TOD#21:12:10 és a TOD#05:14:22.100 is.

Felépítése:

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

0. byte

1.byte

2.byte

3.byte

TIMER

Az időfunkciók legegyszerűbb kezelési módja a timer. Gyakorlatilag minden időméréshez független timer funkció rendelhető, saját egyedi beállításokkal. A FUP 256 timer alkalmazását engedi meg, de mert ezek önálló memóriaterületet foglalnak, melynek mérete hardware-függő, így a timer-ek számát a CPU típusa határolja be.

 

UDT

en: user definied type, hu: Felhasználó által definiált típus

A típus gyakorlatilag a magas szintű nyelvek cluster változó-típusának felel meg, a többi típustól annyi eltéréssel, hogy ezt a változót gyakorlatilag az FB-n / FC-n kívül, a Simatic Manager / Bausteine ablakban kell definiálni, csakúgy, mint a "normál" FB-ket, FC-ket. (Gyakorlatilag az ablakra bökve a jobb egérgomb alatt a Neues Objekt Einfügen » Datentyp pontot kell választani, és az UDT adatait meg kell adni.)

Az UDT megadható az AWL editorban, vagy file-ból is generálható, a lényeg, hogy az adott számú (vagy szimbolikus nevű) UDT létezzen, amire a programban hivatkozunk.

S7 UDT

UDT1 definiálása az AWL editorban

 

A már létrehozott UDT-t a strukturához hasonló hivatkozással, a többi változóval megegyező módon alkalmazhatjuk, mint ahogy a lenti ábra is szemlélteti.

 

S7 UDT

A fent definiált UDT 1 felhasználása az FC 1-ben, IN típusú változóként

 

WORD

 

A Word (Wort) típus 16 bitet tartalmaz. A bitek számot „nem írnak le”, tartalma pusztán bitek halmaza.

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

0. byte

1.byte

Intervalluma:

formátum minimuma maximuma
bineáris 0 1111 1111 1111 1111
hexadecimális W#16#0 W#16#FFFF
BCD 0 9999
előjel nélküli decimális B#(0,0) B#(255,255)

A típus lényege, hogy tartalmára nem vonatkozik formai megkötés.
Két – egymást követő - Word típusú változó egy Dword -öt ír le.

 

A Simatic Step 7 változóknál konstansok megadása

Konstansok megadásánál figyelni kell a pontos formátumra, mert amennyiben ezt nem sikerül eltalálnunk, teljesen más számértékeket fogunk találni az elvártak helyett.

Formátum

Megadási forma

Típus

bináris

TRUE vagy FALSE
0 vagy 1

BOOL

Előjel nélküli 16 bites egész szám

B#(0,0) -től
B#(255,255) - ig         

WORD

Előjel nélküli 32 bites egész szám

B# (0,0,0,0) -től
B#(255, 255,255,255) -ig       

DWORD

Előjeles 16 bites egész szám

-32768 -tól
32767 –ig

INT

Előjeles 32 bites egész szám

-2.147.483.648 -tól
+2.147.483.647 –ig

DINT

Hexadecimális
megadás

B#16#0 -től
B#16#FF -ig   

BYTE

B#16#0 -től
B#16#FFFF -ig           

WORD

B#16#0 -től
B#16#FFFFFFFF –ig

DWORD

Dual megadás

2#0 -től
2#1111111111111111 -ig      

WORD

2#0 -től
2#11111111111111111111111111111111 -ig –ig

DWORD

IEEE típusú törtszám

+1.175495e-38 (pozitív minimum)
+3.402823e+38 (pozitív maximum)
-1.175495e -38 (negatív minimum)
-3.402823e +38 (negatív maximum)

REAL

BCD megadás

C#0 -tól
C#999 –ig

WORD (BCD formában)

S5TIME          

S5T#0ms -tól
S5T#2h46m30s –ig

S5TIME

CPU idő konstans
TIME

T# -24d20h31m23s647ms -tól
T#+24d20h31m23s647ms –ig

TIME

T# -65535ms -tól
T#+65535ms –ig

TIME

CPU idő konstans
DATE

D#1990-01-01 -tól
D#2168-12-31 –ig

DATE

CPU idő konstans
TIME_OF_DAY

TOD#00:00:00.000 -tól
TOD#23:59:59.999 –ig

TIME_OF_DAY

CPU idő konstans
DATE_AND_TIME

DT#89-12-31-23:59:59.999

DATE_AND_TIME

karakter

„a”
(ASCII kód)

CHAR

karakterlánc

2-től 254 karakterig a vezérlőkarakterekkel együtt
Vezérlőkarakterek:
$L : soremelés
$P : oldaltörés
$R : fej vissza
$T : tabulátor

STRING

Pointer
konstansok

P#x.y (megadott tartományon belül)

POINTER

P#[tartomány]x.y

POINTER

P#[tartomány]x.y TYPE z (típusmegjelöléssel)

ANY

Néhány példa a konstansok alkalmazására

Példa a konstans alkalmazására
(több sor esetén azonos az eredmény)

Leírás

L + 12

Egy előjeles egész szám (16 bit) betöltése az AKKU1-L-L-be.

L 1.2345e-2
L 0.012345

Egy IEEE formátumú törtszám (32 bit) betöltése az AKKU1-be

L  2#1010101010101010       

Bináris szó konstans (16 bit) betöltése az AKKU1-L-be

L B#(12,22)

Két előjel nélküli byte (16 bit) betöltés az AKKU1-L-be

L B#(12,22,32,42)

Négy előjel nélküli byte (32 bit) betöltés az AKKU1-be

L  B#16#FF    

8 bites hexadecimális konstans betöltése az AKKU1-L-L-be

L  W#16#FFFF          

16 bites hexadecimális konstans betöltése az AKKU1-L-be

L  DW#16#FFFFFFFF           

32 bites hexadecimális konstans betöltése az AKKU1-be

L S5T#20.4 S

20,4 sec betöltése S5T formátumban az AKKU1-L-be

L C#123

123 betöltése BCD formátumban az AKKU1-L-be

OW  W#16#AAAA      

VAGY szóművelet hexadecimális „AAAA”-val. Az érték az AKKU1-L-be kerül.

Adatterületek csoportosítása az S7 esetén

Operand terület

Megnevezés

S7
jelölés

Jellemzés

Bementi változók

Prozessabbild der
Eingänge

Bemenet (bit)
Eingang

E

Minden ciklus kezdetén a CPU beolvassa a bemeneteket a bemeneti változókba.

Bemeneti byte
Eingangsbyte

EB

Bemeneti szó
Eingangswort

EW

Bemeneti duplaszó
Eingangsdoppelwort

ED

Kimeneti változók

Prozessabbild der
Ausgänge

Kimenet (bit)
Ausgang

A

Minden ciklus végeztével a CPU a kimeneti változókat kiadja a kimenetekre.

Kimeneti byte
Ausgangsbyte

AB

Kimeneti szó
Ausgangswort

AW

Kimeneti duplaszó
Ausgangsdoppelwort

AD

Merker
Merker

Merker (bit)
Merker

M

Merker memória

Merkerbyte
Merkerbyte

MB

Merker-szó
Merkerwort

MW

Merker-duplaszó
Merkerdoppelwort

MD

Idők
Zeiten

Timer
Zeit

T

Időfunkciók

Számlálók
Zähleren

Számláló
Zähler

Z

Számláló funkciók

DB
Datenbaustein

 

 

Adatterületek, melyek lehetnek global és instant típusúak

Global DB
Global Datenbaustein
AUF DB-vel hívható

DB

Globális DB jelölések
Global Datenbaustein Notation

DB bit
Datenbit

DBX

DB byte
Datenbyte

DBB

DB szó
Datenwort

DBW

DB duplaszó
Datendoppelwort

DBD

Instant DI
Instanz Datenbaustein
AUF DI-vel hívható

DI

Instant DB változók
Instanz Datenbaustein Notation

DI bit
Datenbit

DIX

DI byte
Datenbyte

DIB

DI szó
Datenwort

DIW

DI duplaszó
Datendoppelwort

DID

Lokális változók
Lokaldaten

Lokális bit
Lokaldatenbit

L

A lokális változók az OB-ken és FC-ken belül definiált változók.

Lokális byte
Lokaldatenbyte

LB

Lokális szó
Lokaldatenwort

LW

Lokális duplaszó
Lokaldatendoppelwort

LD

Periféria bemenetek
Peripheriebereich:
Eingänge

Periféria bemeneti byte
Peripherieeingangsbyte

PEB

A periféria be- és kimenetek direkt hozzáférést nyújtanak a központi egységre és a decentralizált egységre csatolt kártyákhoz.

Periféria bemeneti szó
Peripherieeingangswort

PEW

Periféria bemeneti duplaszó
Peripherieeingangsdoppelwort

PED

Periféria kimenetek
Peripheriebereich:
Ausgänge

Periféria kimeneti byte
Peripherieausgangsbyte

PAB

Periféria kimeneti szó
Peripherieausgangswort

PAW

Periféria kimeneti duplaszó
Peripherieausgangsdoppelwort

PAD

 

S7 OB-k teljes jegyzéke, leírással

OB
száma
megnevezés leírás PLC
megkötésesk
OB1 ciklikus végrehajtás
Zyklisches Programm
Az OB1 a PLC-n ciklikusan kerül végrehajtásra. Ha véget ért, PLC elküldi a Global-adatokat és lezárja a ciklust.
Ez a legalacsonyabb prioritású OB, azaz minden más OB ennek a futását szakítja meg. További információ itt található.
minden PLC típuson fut
OB10 -
OB17
egyszeri vagy periodikus hívású
OB-k
Uhrzeitalarm-OBs
Ezeknek az OB-knak a hívás-sűrűsége az alábbiak szeint állítható:
  • egyszeri
  • percenkénti
  • óránkénti
  • naponta
  • hetente
  • havonta
  • évenként
  • hónap végén
Az OB-k beállítását az SFC 28 "SET_TINT", aktiválásukat az SFC 30 "ACT_TINT" végzi.
minden PLC típuson fut, de a 300-asokon csak az OB10 áll rendelkezésre.
OB20 -
OB23
Késleltetett hívású OB-k
Verzögerungsalarm-OBs
Késleltetett indítású OB-k. Az OB-kat az SFC 32 "SRT_DINT" -en keresztül lehet indítani. A késleltetési idő álló PLC-n nem fut, és minden hidegindítás újra indítja a késleltetést. A 300-as PLC-ken jellemzően csak az OB20 hívható, és csak a 317/319-en érhető el az OB21.
OB30 -
OB38
időzített OB-k
Weckalarm-OBs

A wekker OB-k meghatározott idok szerint kerülnek hívásra. A magasabb prioritású OB-k az alacsonyabb prioritással rendelkezoket megszakítják. (Az OB1-et alapértelmezés szeint mindegyik megszakítja). Az alapértelmezett idők átállíthatók.

További információ itt található.

OB alapértelmezett
idő-raszter
Prioritás
osztály
OB 30 5 s 7
OB31 2 s 8
OB32 1 s 9
OB33 500 ms 10
OB34 200 ms 11
OB35 100 ms 12
OB36 50 ms 13
OB37 20 ms 14
OB38 10 ms 15
A 300-as PLC-ken jellemzően csak az OB35 hívható, és csak a 317/319-en érhető el az OB32, 33, 34.
OB40 -
OB47
Folyamat OB-k
Prozessalarm-OBs
Folyamatokhoz köthető ezeknek az OB-knak a futtatása. Jellemzően az I/O vagy FM kártyákon definiált csatornák értékváltásai tudják aktiválni a hozzájuk rendelt folyamat OB-t. Az S7- 300-asokon csak az OB40 áll rendelkezésre.
OB55 DPV1-állapot OB
Statusalarm-OB
Akkor aktiválódik, ha valamelyik, DPV1-gyel aktivált slave állapotváltozás jelzéssel (például RUN » STOP) kiváltja azt. A kiváltó eseményeket a DPV1 slave egység dokumentációjából lehet kibogarászni. Csak a DP-s CPU-kon áll rendelkezésre - S7-300-asokon is.
OB56 DPV1 update OB
Update-Alarm-OB
Akkor aktiválódik, ha valamelyik, DPV1-gyel aktivált slave paraméterváltozás jelzéssel (ez történhet helyi- vagy távoli eléréssel) kiváltja azt. A kiváltó eseményeket a DPV1 slave egység dokumentációjából lehet kibogarászni. Csak a DP-s CPU-kon áll rendelkezésre - S7-300-asokon is.
OB57 DPV1 gyártóspecifikus OB
OB für herstellerspezifische Alarme
Akkor aktiválódik, ha valamelyik, DPV1-gyel aktivált slave valamilyen gyártóspecifikus jelzéssel kiváltja azt. A kiváltó eseményeket a DPV1 slave egység dokumentációjából lehet kibogarászni. Csak a DP-s CPU-kon áll rendelkezésre - S7-300-asokon is.
OB 60 Multicomputingalarm-OB Ezzel a OB-vel elérhető, hogy egy adott eseményre több CPU szinkronizáltan egyszerre reagáljon. Az OB aktiválását az SFC 35 "MP_ALM" funkcióval lehet elérni az összes , adott busz-szegmensben elérhető CPU-n, ha azokon nincs aktiválva a letiltó hatályú SFC 39 "DIS_IRT", vagy a késleltető SFC 41 "DIS_AIRT". S7-300-as PLC-n nem áll rendelkezésre.
OB 61-
OB 64
DP-szinkron OB-s
Taktsynchronalarm-OBs
Az OB lehetővé teszi a DP hivásokkal szinkronban történő végrehajtást. S7-300 esetén csak az OB61, és csak a CPU315-2PN/DP / 317 / 319 -n futtatható.
OB 65 Technologiesynchronalarm-OB Az OB lehetővé teszi, hogy a technológiai DB aktualizálásával szinkronban futtasunk programot. Csak a "T" PLC-ken érhető el. Ezekről bővebben itt.
OB 70 Peripherie-Redundanzfehler-OB A H-CPU akkor hívja fel az OB-t, ha redundancia-kiesés lép fel a Profibus-DP-n ( például buszkiesés az aktív DP-master-en, vagy hiba a DP-Slave-re váltáskor). Amennyiben az OB70 felhívásra került, a PLC nem áll le, hanem redundáns módban marad. Csak H-s PLC-ken érhető el. Ezekről bővebben itt.
OB 72 CPU-Redundanzfehler-OB Az OB72 futását az alábbi események válthatják ki:
  • Redundanciakiesés a CPU-n
  • Tartalék - Master átkapcsolás
  • Szikronizációs hiba
  • Hiba egy SYNC modulban
  • Átváltás megszakítása
  • Hasonlítási hiba (RAM, PAA)
Csak H-s PLC-ken érhető el. Ezekről bővebben itt.
OB 73 Kommunikations-Redundanzfehler-OB A H-CPU az első "H"-s S7-kapcsolat (S7-Verbindung) kiesésésnél hívja fel az OB-t. A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül. Csak a 417-4H-n érhető el, a V2.0.x firmware verziótól
OB 80 Ciklusidő túllépés OB
Zeitfehler-OB
Ciklusidő túllépés (Überschreiten der Zykluszeit) esetén kerül meghívásra az OB. A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül. Amennyiben azomban az adott ciklusban másodszor is meghívásra kerül az OB, a STOP elkerülhetetlen. (Végtelenített ciklusokra az OB nem ad megoldást.)  
OB 81 Tápellátás hiba OB
Stromversorgungsfehler-OB
Az OB a tápellátás hiba ("Fehler in der Stromversorgung")bekövetkezése vagy az akkumlátor kiesése esetén kerül meghívásra. A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül. Az OB futását az akkumlátor hiba ("Batteriefehler") is kiváthatja, ha az akkumlátor ellenőrzését a BATT.INDIC-kel aktiváltuk. csak s7-400-on működik
OB 82 diagnózis hiba OB
Diagnosealarm-OB
Az OB-t a beérkező (kommendes Ereignis) és a kifutó (gehendes Ereignis) hibák aktiválják. Ezek a hibák azokról a modulokról érkezhetnek, amiken a diagnózishibák kezelése (Diagnosealarm) engedélyezett.  
OB 83 Ki / Becsatlakoztatás OB
Ziehen/Stecken-OB
Az OB az alábbi esetekben kerül meghívásra:
  • Projektált kártya kihúzása vagy beillesztése esetén
  • CiR-re alkalmas kártya menet közbeni beillesztése esetén
A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül.
az s7-300 esetén csak az alábbi típusokon:
CPU IM151, 315PN és 317PN
OB 84 CPU-Hardwarefehler-OB Az OB az alábbi esetekben kerül meghívásra:
  • Memóriahiba beazonosítása esetén
  • S7-400H esetén: csökkent átviteli képesség a redundáns CPU-k között a redundanciát biztosító csatornán
  • WinAC RTX esetén: Hiba a PC operációs rendszerével (pl. kék halál)
A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül.
Az OB működését az SFC 39 - SFC 42 befolyásolhatja.
 
OB 85 Programmablauffehler-OB Az OB az alábbi esetekben kerül meghívásra:
  • meghívás egy be nem töltött OB-re (kivétel: OB 80, 81, 82, 83, 86)
  • egy (pl. meghívott) program-modul nem hívható meg.
  • periféria aktualizálási hiba
A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül.
 
OB 86 Baugruppenträgerausfall-OB Az OB az alábbi esetekben kerül meghívásra:
  • ha kiesik egy bővítőegység (pl. ET)
  • ha kiesik egy DP-Master-rendszer
  • ha kiesik egy decentrális periféria (Profibus DP vagy ProfiNet IO)
A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül.
Az OB működését az SFC 39 - SFC 42 befolyásolhatja.
Csak a DP-s és PN-IO-s CPU-kon áll rendelkezésre 
S7-300 PLC-ken nem érhető el.
OB 87 Kommunikationsfehler-OB Az OB kommunikációs hiba hatására kerül meghívásra. A CPU nem megy STOP-ba,
  • ha az adott esemény bekövetkezésekor az OB 87 meghívásra kerül.
  • S7-400 CPU esetén
Az OB működését az SFC 39 - SFC 42 befolyásolhatja.
 
OB 88 Bearbeitungsabbruch-OB Az OB akkor kerül meghívásra, ha a program-modul (Programmbaustein) feldolgozása valamilyen oknál fogva megszakad. Ennek oka lehet:
  • a túl mély struktúra szinkron-hibát okoz
  • túl mély struktúra eljáráshívásnál (U-Stack kiakadás)
  • hiba lép fel a lokális adatok (Lokaldaten) allokálásánál
A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül.
Az OB működését az SFC 39 - SFC 42 befolyásolhatja.
 
OB 90 Hintergrund-OB Az S7 felügyeli a maximális ciklusidőt és garantálja annak minimális szintjét. Amennyiben az aktuális ciklusidő kisebb - minden egyéb OB megszakítással és a rendszer által foglalt időkkel - mint a minimális ciklusidő, akkor
  • ha a CPU-ra fel lett töltve az OB90, akkor meghívja azt
  • ha a CPU-n nem található az OB, akkor a rendszer késlelteti a következő OB1 indítást, ezáltal tartja a garantált minimum ciklusidőt
Amennyiben a minimális ciklusidő és a ciklus felügyeleti idő egymáshoz közel lettek definiálva, az OB 90-ből felhívott SFB-k és SFC-k váratlan leállást is eredményezhetnek.
 
OB
100 -
OB
102
felfutás OB-k
Anlauf-OBs
A felfutás lehetséges oka, és az ezáltal meghívott OB:
  • Ismételt felfutás (Wiederanlauf) : OB 101
  • Újraindítás (Neustart - Warmstart) : OB 100
  • Hideg indítás (Kaltstart) : OB 102
Az ismételt felfutás (Wiederanlauf) S7-300 és S7-400H esetén nem lehetséges.
OB
121
programozói hiba OB
Programmierfehler-OB
Programozói hiba fellépése esetén az OB 121 kerül meghívásra. Ennek oka lehet:
  • Olyan program felhívása, ami nem került a CPU-ra letöltésre
  • Kicímzés a DB-ből
  • Pontatlan pointer-használat
A CPU nem megy STOP-ba, ha az adott esemény bekövetkezésekor az OB meghívásra kerül.
Az SFC 36 "MSK_FLT", SFC 37 "DMSK_FLT" és SFC 38 "READ_ERR" segítségével a befutó hibák maszkolhatók.
 
OB
122
Peripheriezugriffsfehler-OB Periféria olvasási hiba esetén az OB meghívásra kerül. Ha az OB a hiba bekövetkezésének idején le van töltve a CPU-ra, akkor a CPU nem megy STOP-ba, egyébként viszont igen.
Az SFC 36 "MSK_FLT", SFC 37 "DMSK_FLT" és SFC 38 "READ_ERR" segítségével a befutó hibák maszkolhatók.
 

Minden OB-nak van lokális adatterülete, ahonnan a részletes információk kiolvashatók. A fellépő hibákról és a meghívott OB-król a CPU diagnózis is tájékoztatást ad.

A hibakezelő OB-k használata fejlesztés alatt nem előnyös, mert ilyenkor sokkal egyszerűbben visszakereshető egy hiba forrása, ha a PLC rögtön,  a hibát követően kiesik és a CPU diagnózisból visszakövethető az események sora.


felhasznált források

license

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