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

en: S7 Software

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

További kapcsolódó oldalak:
S7 szoftver alapfogalmak
S7 AWL utasításkészlet

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]

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éterLeírása
p# M 70.0 BYTE 1110 byte-os merker terület kijelölése
MB70 - MB80
p# DB22.DBX5.0 S5TIME 3Há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 44 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: S7 AWL Bit logikai műveletek

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

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

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. byte1. byte2. byte3. byte4. byte5. byte6. byte7. byte
Év
90 .. 89
Hónap
01 .. 12
Nap
01 .. 31
Óra
00 .. 23
Perc
00 .. 59
Másodperc
00 .. 59
MSec
00 .. 99
(MSD)
MSB\\Msec
0 .. 9
(LSD)
LSB\\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ása 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:

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

76543210765432107654321076543210
0. byte 1.byte 2.byte 3.byte

Intervalluma:

formátumminimumamaximuma
bineáris01111 1111 1111 1111 1111 1111 1111 1111
hexadecimálisDW#16#0000 0000DW#16#FFFF FFFF
BCD09999 9999
előjel nélküli decimálisB#(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:

7654321076543210
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 számábrázolás-sal 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, erről bővebben itt olvashat.

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:

76543210765432107654321076543210
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 ms0010MS9S_990MS
100 ms01100MS1M_39S_900MS
1 s101S16M_39S
10 s1110S2H_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:

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

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

WORD MSB-LSB

Intervalluma:

formátumminimumamaximuma
bineáris01111 1111 1111 1111
hexadecimálisW#16#0W#16#FFFF
BCD09999
előjel nélküli decimálisB#(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.
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
OB
száma
megnevezésleírásPLC
megkötésesk
OB1ciklikus 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.
OB _ default idő-raszter _ Prioritás
OB30 _ 5s _ 7
OB31 _ 2s _ 8
OB32 _ 1s _ 9
OB33 _ 500ms _ 10
OB34 _ 200ms _ 11
OB35 _ 100ms _ 12
OB36 _ 50ms _ 13
OB37 _ 20ms _ 14
OB38 _ 10ms _ 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.
OB55DPV1-á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.
OB56DPV1 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.
OB57DPV1 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 60Multicomputingalarm-OBEzzel 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 65Technologiesynchronalarm-OBAz 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 70Peripherie-Redundanzfehler-OBA 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 72CPU-Redundanzfehler-OBAz 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 73Kommunikations-Redundanzfehler-OBA 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 80Ciklusidő 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 81Tá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 82diagnó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 83Ki / 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 84CPU-Hardwarefehler-OBAz 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 85Programmablauffehler-OBAz 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 86Baugruppenträgerausfall-OBAz 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 87Kommunikationsfehler-OBAz 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 88Bearbeitungsabbruch-OBAz 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 90Hintergrund-OBAz 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-OBPerifé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.