Forgásfigyelés

Módosítva: 2015. április 13

Az idők során kiderült, hogy a régi forgásfigyelő blokk egy hibát tartalmaz!
A hiba miatt S7-300 CPU-n  ha a #Hiba kimenethez DB bitet adtunk meg és a blokkot többször (több forgás figyelésére is) használtuk, akkor egy forgáshiba (bármelyik) a többi hívás #Hiba bitjét is bekapcsolta.
Érdekes módon ezt nem tette ha a #Hiba kimenetek merker bitekbe voltak irányítva illetve S7-400 CPU-val használva sem került elő a hiba (elképzelhető, hogy egyéb körülmény, a program struktúra jelentős eltérése miatt).

A hiba pedig az, hogy az FC201-es blokkban a  #Hiba kimenő változó OUT-ként lett deklarálva. Ez önmagában még nem lenne baj, de egy RS tárolóban végződik.
A helyes működéshez a #Hiba változónak IN_OUT-nak kell lennie a blokk interface részében (lásd alább).

Köszönet shotgamer-nek a hiba feltárásáért!



Gyakori a berendezéseknél olyan üzembiztonságot szolgáló funkció, ami tengelyek forgását érzékeli.
Elsősorban szállítószalagoknál és olyan gépeknél hasznos, amelyeken folyamatosan forgó tengelyek vannak és ezek bármilyen (mechanikai) probléma miatti leállása komoly problémát okozhat.
Ilyen védelm nélkül egy szállítószalagok sorát tartalmazó rendszerben ha egy közbenső szalagdob csúszni kezd vagy elszakad a lánc hajtása, az előtte lévő szalag továbbra is üzemel, miközben a hibás szalag leáll. Mivel a vezérlő PLC nem "tud" a problémáról nincs leállás és hibajelzés, ezért nagy mennyiségű anyag halmozódik fel a meghibásodott szalag átadásánál. Ha egy ilyen berendezés nagy kiterjedésű vagy folyamatos emberi felügyelet nélkül üzemeltetik, ez a probléma hosszabb állást eredményezhet.

Ilyen esetben alkalmaznak valamilyen forgás érzékelő megoldást. Léteznek kifejezetten ilyen célra készített indukciós érzékelők és forgásfigyelő készülékek is, melyekhez hagyományos PNP vagy NPN kimenetű indukciós érzékelőt lehet kapcsolni.
A forgás érzékelésére többnyire elég ha a forgó tengely minden körülfordulásakor egy indukciós jeladó ad egy impulzust. A forgás figyelése abból áll, hogy mérjük az impulzusok között eltelt időt. Ha ez az idő üzem közben meghalad egy (beállítható) limitet, akkor a rendszert a vezérlés leállítja és hibát jelez.

Ha a forgó tengely forgási sebessége nem túl nagy, akkor a forgásfigyelést rábízhatjuk a PLC-re.



Az impulzus sorozat periódus ideje = t1+t2.
Mivel az ilyen impulzus sorozat szinte sosem 50% kitöltésű, a két idővel külön kell számolnunk ha tudni akarjuk, hogy az adott tengely forgási sebessége nem túl nagy-e a PLC-s időméréshez.
A szabály egyszerű: Sem a t1, sem at2 idő nem lehet rövidebb a PLC leghosszabb ciklusidejének kétszeresénél. Ha ez a feltétel teljesül, akkor a PLC teljes biztonsággal képes lesz érzékelni minden impulzust.

Példa:
A PLC legnagyobb ciklusideje: 30ms
Az impulzus adó kitöltési tényezője 20%
A legnagyobb impulzus sebesség paraméterei:
t1=60ms
t2=300ms
Impulzus sorozat periódus ideje: 300+60=360ms
A tengely forgási sebessége 1/0.36s=2.77 ford/mp = 166 ford/perc

Ilyen körülmények között tehát maximum 166 ford/perc sebességű tengely forgásfigyelését tudjuk megoldani, ha forgás jeladó fordulatonként 1 impulzust ad. Szállítószalagok esetén nem kritikus a dolog, mivel azok ennél jóval lassabban forognak.
A forgás jeladót közönséges 24V DC bemenetre köthetjük.
Ha a bemenet esetleg valamilyen remote I/O , akkor az idők kiszámításánál a távoli I/O ciklikus frissítési gyakoriságát is figyelembe kell venni. Ha ez a frissítési idő hosszabb mint a PLC ciklus ideje, akkor azzal kell számolni a PLC ciklus idő helyett.

A PLC program

A PLC-ben, tehát mérni kell a jeladóról érkező jelek ismétlési gyakoriságát és jelzést kell adni ha az impulzusok közötti idő túl nagy. Kézenfekvő erre a timer használata. Természetesen az időt csak akkor kell mérni, ha motor, ami a tengelyt hajtja, üzemel.
Erre egy példa:



Q4.0 a motor kapcsolója, a forgásfigyelő érzékelő pedig az I4.2-es bemeneten van.
A T1 időtag akkor telik, amikor a motor üzemel (Q4.0=ON) és az I4.2-es bemeneten éppen nincs jel, tehát két impulzus közötti 0 állapot idejét méri, vagyis a t2 időt. Ha a tengely lassul vagy megáll, a T1 időtag letelik.
Sajnos ennek a megoldásnak az a hátránya, hogy csak a t2 időt méri, a t1 időt nem. Ha az impulzus adó tengely forgása leáll és éppen úgy áll meg, hogy a forgás jeladó folyama tosan érzékel, akkor a T1 időtag nem fog letelni. Ezzel a módszerrel tehát nem tudjuk 100%-os biztonsággal megállapítani, hogy a tengely forog-e.

A megoldás: a teljes periódus időt mérni kell.
Ezt úgy tehetjük meg, ha az impulzus adó jelének fel vagy lefutó élénél impulzust hozunk létre.



Ennél a megoldásnál ha a tengelyen lévő működtető épp az érzékelőnél áll meg, a T1 akkor is le tud telni a (P) utasításnak köszönhetően, ami csak egy PLC ciklus idejű impulzust hoz létre az I4.2-es bemeneten érkező jel 0->1 átmeneténél (pozitív él figyelés).


Néhány esetben indításnál a hajtás lassan gyorsul fel. Pl. csillag-delta indítás, hidrókuplung, lágyindító, frekvenciaváltó használatakor.
Ilyenkor ha a vezérlésben rendelkezésre áll olyan jelzés ami a motor teljes kipörgésekor aktív, a motorindítás helyett azzal kell engedélyezni a forgásidő figyelést.
Pl. csillag-delta indítás esetén a delta kapcsolóval, lágyindító és frekvenciaváltó használatakor általában rendelkezésre áll olyan jel, ami akkor aktív, amikor a motor már teljes sebességgel forog így azt felhasználhatjuk. Ha ilyen nincs, akkor a forgásfigyelés élesítést időzítsük egy újabb időtaggal.

A forgásimpulzusok között eltelt idő korlátját úgy érdemes megválasztani, hogy ne okozzon hamis jelzést, de probléma esetén még időben állítsa meg a rendszert. Általában nem érdemes nagyon "kihegyezni" az időlimitet, vagyis az üzemszerű impulzus időhöz nagyon közel állítani. Általában a normál üzemű impulzus periódus idejének duplája megfelelő időlimit.

Megjegyzés: Ha nagyon lassan forgó tengely forgást szeretnénk a programban figyelni, akkor a tengelyen lévő impulzus adót úgy kell kialakítani, hogy egy körülfordulás során több impulzust is adjon.(pl. fogas tárcsa és induktív érzékelő).
A hiba bekövetkezése és a forgás hiányának érzékelése között eltelt időt (reakció időt) ugyanis az impulzus időt mérő időtag (a példákban T1) beállítása határozza meg. Ennek az időtagnak viszont nem adhatunk kisebb időt mint amennyi a forgásimpulzusok között eltelt idő.
A forgásfigyelőnk reakció ideje kb. 1.5-2 impulzus idővel lesz azonos. Ha az üzemszerűen érkező impulzusok tehát ritkák, akkor a reakció idő is hosszú lesz.
Ha változtatható sebességgel forgó tengely megállását akarjuk érzékelni, akkor a mérő időtag idejét minimum 1.5-2-szer akkorára kell választani mint amennyi idő eltelik a forgásimpulzusok között a hajtás legkisebb üzemi fordulata mellett. Ha a legkisebb és legnagyobb üzemi fordulat között nagy a különbség, akkor ez a beállítás általában túl nagy reakció időt eredményez.

Forgásfigyelő funkció blokk

Végül álljon itt egy funkció blokk, ami forgásfigyelést valósít meg a fentiek alapján.
Ha olyan programot kell írni amelyikben sok különböző tengely forgását kell érzékelni, ez a blokk hasznos lehet.

A blokk változói:


A funkció az FC201 blokkban kapott helyet. Felépítése igen egyszerű, egyetlen network-ből áll:



A blokk paraméterei és működése:
Impulzus adós forgásfigyelés szállító szalagokoz
Bemenetek:
#Imp_BE  Forgásimpulzus bemnet (élvezérelt)
#Start   A forgásfigyelés aktiválása. Ha 0, akkor impulzus bemenetet 
         nem figyeli, #Hiba kimenet állapota változatlan marad
#Torles  1 állapot a#Hiba kimenetet törli
#Idozito Egy timer, ami aforgásidőt méri
#Ido     Két impulzus között megengedett legnagyobb időtartam
#IMPTMP  Átmenti tároló bit az él figyeléshez (az itt megadott bit máshol nem
         használható fel!) 

Kimenet:
#Hiba    A kimenet állapota 1 lesz, ha aktív #Start mellett az #Imp_BE bemeneten
         #Ido időnél ritkábban keletkezik lefutó él.

Ha a #Start bemenet aktív, akkor a blokk méri az #Imp_BE bemenet lefutó élei
között eltelt időt. Ha ez az idő meghaladja az #Ido paraméterben megadott időt, 
akkor bekapcsolja #Hiba kimenetet. A #Hiba kimenet a #Torles bemenet 
aktiválásáig aktív marad.

Példa a blokk hívására:


I39.2 az impulzus adó
Q8.0 a motort kapcsoló kimenet ami a figyelt tengelyt hajtja.
A blokk a T111-es időzítőt használja. A beállított (megengedett) időt a DB1 tárolja, aminek tartalmát egy operátorpanelről módosítani lehet.
A Törlés bemeneten lévő bitek a hiba törlését végzik, illetve a hiba kialakulását akadályozzák meg (pl. a berendezés kézi üzemmódjában), valamint a forgásfigyelés kiiktatását teszik lehetővé (DB1.DBX52.0).
A blokk az M208.7-es merker bitet 1 állapotba kapcsolja amikor forgáshibát érzékel.
Ugyanezt a blokkot újra és újra felhasználhatjuk minden forgásfigyelés alkalmával a programban, de természetesen minden paramétere más-más lesz. (az Idozito IMPTMP és Hiba paraméternek kötelezően másnak kell lennie minden hívásnál)

Ezzel a módszerrel nem csak forgást, hanem a gép minden olyan üzemi tevékenységét is figyelhetjük, amelynél megoldható azonos időnként ismétlődő impulzusok visszavezetése (pl. bemenetre).



Szirty