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 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: 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).
A byte felső és alsó 4 bitjét rendre MSB (Most Significant Bit) és LSB (Least Significant Bit) nevekkel 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. byte | 1. byte | 2. byte | 3. byte | 4. byte | 5. byte | 6. byte | 7. 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:
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 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:
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:
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 pedig 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:
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.
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.
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.
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. 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. |
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.