A hibakezelő OB-k


Volt már szó arról, hogy néhány OB (Organisation Block) a hibakezelésre szolgál.
Bizonyos fajta hibák kezelésére ki van jelölve (fixen) egy-egy OB. Amikor az adott hiba bekövetkezik, a rendszer megpróbálja meghívni a hibához tartozó OB-t. Ha sikerül (van ilyen OB) akkor az lefut. Az OB-ban írt programmal kezelhetjük a hibát illetve annak következményeit.
Ha nincs ilyen OB, akkor a CPU vagy STOP állapotba kerül, vagy semmi nem történik attól függően, hogy  pontosan milyen hibáról van szó.

OB Leírás A CPU operációs rendszere meghívja az OB-t, ha... Kategória OB hívás a hiba
keletkezésekor
OB hívás a hiba
megszűnésekor
CPU STOP, ha
az OB nem létezik
OB70 I/O redundacy error ..a redundancia szétesik a Profibusz DP buszon a H rendszernél Redundancia  igen nem nem.
A H rendszer redundáns módban marad
OB72 CPU redundacy error ..a CPU-nak szinkronizálási problémája van H rendszer esetén Redundancia  igen igen nem
OB73 Communication redundacy error ..a redundancia szétesik fault tolerant (hibatűrő) S7 kapcsolatnál H rendszerek esetén Redundancia  igen nem nem
OB80 Time error ..a CPU programvégrehgajtási ciklus ideje meghaladja a megengedett maximumot Aszinkron igen nem igen
OB81 Power supply error 24V táp ellátási hiba Aszinkron igen igen nem
A hiba bejegyzésre kerül a diagnosztikai pufferbe
OB82 Diagnostic interrupt ..diagnosztika képes analóg bemeneti modul jelzárlatot érzékelt Aszinkron igen igen igen
OB83 Insert/Remove modul ..egy modult levettek vagy visszahelyeztek Aszinkron igen nem igen
OB84 CPU hardware fault ..hiba keletkezett a CPU-ba integrált MPI kommunikációs illesztőben Aszinkron igen igen igen
OB85 Program cycle error ..egy hibás modul problémát okozott a process image tábla frissítésében Aszinkron igen nem igen
OB86 Rack failure ..egy DP slave hibás a profibuszon vagy egy eszköz hibás a profinet IO buszon (pl. elérhetetlenné válik) Aszinkron igen igen igen
OB87 Communication error ..érvénytelen üzenet azonosítót érzékelt "globális adatok" vétele közben Aszinkron igen nem nem
OB121 Programming error ..a szükséges adatblokk nincs betöltve Szinkron igen nem igen
OB122 I/O Access error ..hozzáférési kísérlet történik nem létező ki vagy bemeneti modulhoz Szinkron igen nem igen

A hívással kapcsolatos infó oszlop néhol inkább kiragadott példa, mint teljes körű leírása a hívás okának, hiszen pl. OB83-nál az eredeti táblázat azt írja, hogy meghívja a CPU, amikor egy bemeneti modult leválasztanak. Ez igaz, de akkor is meghívódik ha kimeneti modult választanak le vagy visszahelyezik, és még egyéb esetekben is.

Az OB80 pl. nem csak akkor fut le amikor a ciklus idő túl nagy lesz, hanem akkor is, ha pl. egy Time-of-day interrupt van beállítva és a CPU időt úgy módosítjuk, hogy a megszakításnál megadott időpontot átlépjük az új CPU idővel:



A H (redundáns) rendszerektől eltekintve kétféle csoportba sorolhatóka hibák:
  1. Szinkron hibák
    Olyan hibák, amelyek meghatározható műveletek végrehajtása alatt keletkeznek és a felhasználói program egy bizonyos részéhez köthetők
    Pl.: IO hozzáférési hiba vagy programozási hiba
  2. Aszinkron hibák
    Olyan hibák, amik nem kötődnek közvetlenül a program végrehajtásához, nem köthetőek a felhasználói program egy bizonyos részéhez, a program futásától teljesen függetlenül (váratlanul) következnek be.
    Pl.: tápegység hiba, modul hiba, kommunikációs hiba
Kapcsolódó írások:
Az S7 PLC programozása: Az OB blokkok
Hibakezelés: az OB86 (Rack Failure)

Felhasznált irodalom: FAQ: Which organization blocks do you need for error handling?



Szirty