S7-300 elem kimerülésének érzékelése


6ES7 971-1AA00-0AA0

A legtöbb S7-300 CPU-ban van 3.6V-os lítium telep, ami a RAM memóriát és a valós idejű óra táplálását hivatott elvégezni, amikor a CPU nincs feszültség alatt.
Az elem biztosítja, hogy a RAM memória ne veszítse el tartalmát kikapcsolt állapotban sem. Ez az elem az évek során kimerül. A gyártó elő is írja a rendszeres cserét bizonyos időközönként.
A mai rohanó világban egy termelő üzemben az illetékes szakembernek kisebb gondja is nagyobb annál, mint hogy ezeknek az elemeknek az állapotát és korát figyelemmel kísérje.
Akár így, akár úgy összejöhet hogy senki nem veszi észre amikor a lítium elem lemerült és világít a piros ERROR a CPU egységen. A PLC ettől megy tovább, hiszen amikor feszültség alatt van és dolgozik, akkor nincs szüksége az elem által szolgáltatott feszültségre. Baj akkor lesz, amikor a berendezést kikapcsolják, vagy áramszünet lesz. Rosszabb esetben a program a PLC-ből elvész. Jobb esetben bekapcsoláskor visszatöltődik a flash kártyára mentett példány. Amennyiben adatblokkban vagy merkerekben voltak fontos adatok (pl. beállítások), azoktól ilyenkor is el lehet búcsúzni. El kell tehát kerülni a bajt.

Egy egyszerű megoldás leírása következik, ami talán segít megelőzni a bajt.
Amikor a szóban forgó elem feszültsége egy bizonyos szint alá esik, azt a CPU érzékeli és a hibajelző LED-ek segítségével ezt a külvilág tudomására hozza. Ezzel egyi dőben a hiba észlelésekor megpróbálja meghívni az OB81 "Power Supply Fault" hibakezelő blokkot. Ha az OB81 nem létezik, akkor semmilyen további akció nem történik, a program fut tovább.
S7 programból az elem kimerülésének ténye tehát az OB81 segítségével érzékelhető. Egy egyszerű OB81-el megoldható, hogy elemhiba esetén 1 állapotba billenjen egy merker bit és a hiba megszűnésekor 0 állapotú legyen. Ezzel további intézkedések programozására nyílik lehetőség. pl.:
Az OB blokkoknak előre kitöltött változódeklarációs részük (interface) van. Az itt található változók tartalmazzák a blokk meghívásakor azokat az információkat, amik lehetővé teszik a hibák korrekt kezelését.
Természetesen saját TEMP változókat is rakhatunk az OB-kba, de nagyon fontos, hogy a gyári változókat mindenféleképpen hagyjuk érintetlenül. Ne változtassuk meg sem a nevüket, sem a címüket!

Az alábbi példa egy olyan OB81-et mutat be, amelyik az M3.1-es merkert használja az elemhiba jelzésére.
Az M3.1 TRUE lesz ha az elem gyenge és FALSE ha minden rendben van vele. A CPU rack elem állapotát figyeli.



Az OB81 változói. A #BATF változó nem "gyári", azt a példa használja.

A program:


A programrész használatba vételéhez csak két dolog kell. A fenti kódot írjuk be az OB81-be (ne felejtsük el létrehozni a #BATF boolean változót).
Az M3.1 merker bitet ne használjuk fel más célra (a program más részén ne változtassuk meg az állapotát). Ha a programban az M3.1 már használatban van, akkor az OB81-ben természetesen átírhatjuk egy szabad merkerre is. Fontos, hogy ebben az esetben két helyen kell átírni. Az S és az R utasításnál is!

Vegyük figyelembe, hogy az OB81 nem csak a CPU elem kimerülésének kezelésére hivatott, hanem egyéb hibaesemények bekövetkezésekor is lefut. Az OB81, a tápegység és tápfeszültség hibák kezelésére való.
Továbbá bizonyos hardver konfigurációk esetén nem a CPU az egyetlen amiben elem van és ami kimerülhet. Ezek kimerülésekor is az OB81 kerül meghívásra, de más #OB81_FLT_ID-vel, ezért ilyen konfigurációhoz a példát módosítani kell.
Ezért az OB81 leírásának áttanulmányozását javaslom.



Szirty