S7 300/400 időzítők és számlálók

Időzítők
Számlálók

Időzítők

PLC programokban az egyik leggyakrabban használt funkció az időzítő funkció.
Az S7 többféle időzítőt ismer, ezek működéséről lesz szó. Egy bármilyen időzítőt kétféle módon is beletehetünk a programunkba ha azt létradiagramban (LAD) vagy funkcióblokk diagramban (FBD) írjuk.
Az egyik mód az, amikor a timer önálló blokként jelenik meg:



A másik, amikor a timer különböző be és kimeneteire külön, a program más-más részeiben hivatkozunk.


Működés szempontjából nincs különbség a két módszer között attól eltekintve, hogy az első módszer szerint használva van lehetőségünk az időtag pillanatnyi tartalmát kiolvasni bináris és BCD formában (lásd később).
S7 programba a következő időzítőket használhatjuk:
Mind az öt fajta ugyanolyan be és kimenetekkel rendelkezik:
Bemenetek:
S:     Logikai indító bemenet, élvezérelt
TV:  A beállított idő S5TIME formátumban
R:    Logikai bemenet, reset, alaphelyzetbe állítás (nem élvezérelt)

Kimenetek:
Q:     Logikai érték. Amikor a TV idő letelt, Q értéke TRUE lesz
BI:    Az időtag pillanatnyi értéke bináris formában (WORD)
BCD:  Az időtag pillanatnyi értéke BCD formában (WORD)

Az időtagok R bemenete, a BI, BCD és Q kimenete elhagyható, kitöltése nem kötelező. Vagyis nem kötelező használni pl. a reset bemenetet vagy a számláló pillanatnyi értékeit visszaadó kimeneteket. Ha a Q kimenetet nem használjuk fel, az időtagra annak számával (pl.: T1) hivatkozhatunk.

Az időzítőnek a TV paraméterben kell megadni az időt amennyit időzítenie kell. A TV paraméter egy speciális adatformátumot igényel, aminek a neve S5TIME. Mérete 16 bit (word).
A TV lehet konstans, vagy kimeneti (QW), bemeneti (IW), merker (MW), és DB (DBW) memóriaterületen.
 
Az S5TIME
Az időzítők olyan számlálók, amik egy időalap (órajel) szerint számlálnak visszafele. Amikor a számláló eléri a nullát, az időtag letelt. Az időtagokban ez a belső számláló 12 bites, és BCD-ben számlál. Mivel a 12 bit 3 digitnek felel meg, a legnagyobb számlálóérték 999. Az időtagoknak adott TV paraméter 16 bites, ami az alsó 12 biten hordozza az emített számláló értéket, a maradék négy bitből kettő (12-es és 13-as bit) pedig az időalapot határozza meg:


Az időalap Az időalap kódja
10 ms 00
100 ms 01
1 s 10
10 s 11

Az időtag által időzített időt tehát az időalap és az időzítési érték szorzata lesz.
Pl.: időzítés: 642, időalap 100 ms = 64.2 másodperc.
A fentiekből adódik, hogy a legkisebb beállítható idő 10 ezredmásodperc (10 ms * 1) a legnagyobb pedig 2 óra 46 perc 30 másodperc (999*10 s = 9990 másodperc).
Ha ennél hosszabb idejű késleltetésre van szükség, akkor több, sorbakötött, egymást indító időtagra lesz szükségünk, vagy az időzítést megírjuk saját magunk (esetleg külső funkcióblokkot használunk a célra).
Ha felhasználjuk az időtag belső pillanatnyi értékét pl. a BI vagy BCD kimenet segítségével, akkor vegyük figyelembe, hogy a kapott érték az időalap által meghatározott ütemben fog csökkenni.
Az S5TIME formátum konstansként is beírható. Ennek szintaxisa a következő:

S5#oHpMaSeMS
Ahol: o=óra, p=perc, a=másodperc, e=ezred másodperc
Példák:
S5T#1M 1 perc
S5T#120MS 120 ezredmásodpec (0.12 mp)
S5T#1H6M 1 óra 6 perc
S5T#4S60MS 4 másodperc és 60 ezredmásodperc (4.06 mp)
S5T#1H6M30S 1óra, 6 perc 30 másodperc
Amikor egy időtag értéket a fenti módon adunk meg valahol Step7-ben (pl. időtag TV paraméterében) beíráskor a Step7 ellenőrzi a beírt konstanst és kiszámolja a megadott időhöz szükséges időalapot, valamint a számított időalaphoz kiszámolja az időzítési értéket, amit a timer kap majd. Nekünk nem kell törődni sem az időalappal, sem a timerbe kerülő BCD értékkel, a fejlesztői környezet átalakítja az S5T# formátumot.
Jó ha ismerjük azonban az S5TIME formátumot és hogy mi húzódik meg a háttérben, mert akkor könnyebben megérthetjük, hogy ha egy időtagnak beírjuk a S5T#1H6M23S vagy S5T#1H6M22S450MS időértéket, akkor miért javítja át a Step7 S5T#1H6M20S-re. :)

Megjegyzés: Az S7 300/400 PLC nem keverendő az S7 200-al. Annak programozása és az időtagok működése is gyökeresen eltér az S7 300/400 időzítőinek működésétől!

Bekapcsolásra késleltető időtag (S_ODT)

On delay timer




Működés:
Ha az R bemenet inaktív (FALSE), akkor az S bemeneten érkező felfutó él a TV-t betölti az időtagba, ami azonnal csökkenni kezd. Amikor eléri a nullát, bekapcsolja Q kimenetét.
Ha S a TV  idő letelte előtt megszűnik, akkor az idő futása megáll, Q kimenet inaktív marad és az időrelé tartalma változatlanul azon az értéken marad, amennyi S megszünésekor volt. S újabb felfutó éle a beállított TV időtől újraindítja az időt.


S_ODT idődiagram:

tv: a beállított idő (5 másodperc)

Bekapcsolásra késleltető-tartó időtag (S_ODTS)

Retentive on delay timer




Működés:
Ha az R bemenet inaktív (FALSE), akkor az S bemeneten érkező felfutó él a TV-t betölti az időtagba, ami azonnal csökkenni kezd. Amikor eléri a nullát, bekapcsolja Q kimenetét.
Ha S a TV  idő letelte előtt megszűnik, az idő futása folytatódik, letelésekor Q bekapcsol. Ha az időtag futása közben az S bemeneten újabb felfutó él keletkezik (futás közben S ki majd újra bekapcsol), akkor a TV időtől újraindítja az időzítőt.
Amikor az idő letelt és Q bekapcsolt, a timer ebben az állapotban marad az R bemenet aktiválásáig. Vagyis S bemenettel nem lehet újraindítani az időtagot, ha az már lejárt.
Hasonlóan működik mint egy RS tároló ami az S bemenetre adott felfutó éltől számított késleltetés után kerül bekapcsolt állapotba.
Bár az S_ODTS típusú időtag R bemenete is elhagyható, mint a többi időtagnál de ha elhagyjuk, akkor az első bekapcsolás után bekapcsolva marad, nem tudjuk újraindítani.

S_ODTS idődiagram:


Impulzus időtag (S_PULSE)

Pulse timer



Működés:
S_PULSE működése hasonló S_ODT működéséhez azzal a különbséggel, hogy Q kimenet nem akkor kapcsol be amikor TV idő letelik, hanem addig van bekapcsolva, amíg TV idő telik (vagyis amíg a timer fut)
Ha az R bemenet inaktív (FALSE), akkor az S bemeneten érkező felfutó él a TV-t betölti az időtagba, ami azonnal csökkenni kezd. Az S bemenettel egyidőben bekapcsol Q kimenet is
Amikor az idő eléri a nullát, a Q kimenet kikapcsol.
Ha S a TV  idő letelte előtt megszűnik, akkor az idő futása megáll, Q kimenet inaktívvá válik és az időtag tartalma változatlanul azon az értéken marad, amennyi S megszünésekor volt. S újabb felfutó éle a TV értéktől újraindítja az időt a Q kimenet ismét bekapcsol.

S_PULSE idődiagram:


Bővített impulzus időtag (S_PEXT)

Extended pulse timer   



Működés:
S_PEXT működése hasonló S_PULSE működéséhez azzal a különbséggel, hogy Q kimenet nem lesz inaktív akkor, ha a timer futása közben az S bemenet inaktívvá válik.
S_PEXT timert tehát egy felfutó éllel lehet indítani, ezzel egyidőben Q kimenete bekapcsol és S bemenet további állapotától függetlenül az idő tovább fut benne.
Amikor az idő eléri a nullát, a Q kimenet kikapcsol.
Ha S a TV  idő letelte előtt megszűnik, akkor az idő futása rendületlen, Q kimenet továbbra is aktív az idő lefutásáig.
Ha a timer futása közben S bemeneten újabb felfutó él keletkezik (vagyis futás közben S kikapcsol, majd újra be) akkor a TV értéke újra betöltődik és a timer futása elölről kezdődik TV értékről. Közben a Q kimenet bekapcsolva marad.

Az S_PEXT idődiagramja:


Kikapcsolás késleltető időtag (S_OFFDT)

Off-delay timer   



Működés:
Q kimenet az S bemenettel egyidőben bekapcsol, de sz idő csak akkor kezd el telni, amikor S bemenet lefut. Az időtag futása alatt Q kimenet bekapcsolva marad az idő leteléséig. Amikor az idő letelik, Q kikapcsol.
Ha a timer futása közben S újra bekapcsol, akkor a timer futása megáll, a pillanatnyi értékét megtartja, Q kimenet bekapcsolva marad. Amikor S ismét kikapcsol, annak lefutó élénél a timer újratöltődik TV idővel és a futása elölről kezdődik, Q továbbra is bekapcsolva marad, amíg az idő le nem telik.
Ha aktív S bemenet mellett az R bemenet is bekapcsol, akkor a Q kimenet kikapcsolódik R bekapcsolásának idejére. Ha R bemenet a timer futása közben aktiválódik,  az időtag nullázódik és Q kimenet kikapcsol, R inaktivvá válása után is úgymarad (mint ha letelt volna TV idő).

Az S_OFFDT idődiagramja:

Számlálók

S7 300/400-ban háromféle számláló használható: lefele számláló, felfele számláló és két irányú (le/fel) számláló.
Programozása hasonló az időtagéhoz, a számlálót is lerakhatjuk egy egységként, vagy "alkatrészenként" is.

Lefele számláló Felfele számláló Két irányú számláló

Az S7 számlálók 12 bites BCD-ben számolnak. Így a számláló tartalma (és beállított végértéke is)  000-999 tartomyánba eshet.

Bemenetek:
CD: Lefele számláló léptető bemenet, logikai érték. Felfutó élre vezérelt (Count down)
CU: Felfele számláló léptető bemenet, logikai érték. Felfutó élre vezérelt (Count up)
S: Alaphelyzetbe állító bemenet, logikai érték. Felfutó élre vezérelt (Set)
R: Törlő bemenet, logikai érték (Reset)
Kimenetek:
f: A számláló kapcsoló kimenete, logikai érték
CV: A számláló pillanatnyi tartalma binárisan, word (Counter Value)
CV_BCD: A számláló pillanatnyi tartalma BCD-ben, word (Counter Value BCD)

Lefele számláló (S_CD)

Down counter

Működés:
Az S bemeneten érkező felfutó él a PV értékét beleírja a számlálóba (ha R inaktív).
A CD bemenet minden felfutó élével a számláló tartalma egyel csökken. Amikor a számláló tartalma eléri a nullát, Q kimenet kikapcsol. Ha elérte a nullát, nem számol tovább, újabb CD léptetőimulzusokra sem.
Az R bemenet TRUE állapota a számláló tartalmát törli mindaddig, amíg R aktív (nem élvezérelt). Így aktív R mellett a számláló tartalma mindig nulla, nem léptethető és nem reagál az S bemenetre sem.
Q kimenet állapota mindig bekapcsolt (TRUE), amikor a számláló tartalma nem nulla.

S_CD idődiagramja


Felfele számláló (S_CU)

Up counter


Működés:
Az S bemeneten érkező felfutó él a PV értékét beleírja a számlálóba (ha R inaktív).
A CU bemenet minden felfutó élével a számláló tartalma egyel nő. A számláló a CU léptetőimpulzusokra mindaddig számol, amíg tartalma el nem éri a 999-et, ott megáll. A számlálás során nem veszi figyelembe PV értékét, PV-nek csak S bemenet felfutó élénél van jelentősége.
Az R bemenet TRUE állapota a számláló tartalmát törli, mindaddig, amíg R aktív (nem élvezérelt). Így aktív R mellett a számláló tartalma mindig nulla, nem léptethető és nem reagál az S bemenetre sem.
Q kimenet állapota mindig bekapcsolt (TRUE), amikor a számláló tartalma nullától eltér.

S_CU idődiagramja

Le/fel számláló (S_CUD)

Up-down counter


Működés:
Az S bemeneten érkező felfutó él a PV értékét beleírja a számlálóba (ha R inaktív).
A CU bemenet minden felfutó élével a számláló tartalma egyel nő. A számláló a CU léptetőimpulzusokra mindaddig számol, amíg tartalma el nem éri a 999-et, ott megáll. A számlálás során nem veszi figyelembe PV értékét, PV-nek csak S bemenet felfutó élénél van jelentősége.
A CD bemenet minden felfutó élével a számláló tartalma egyel csökken. Amikor a számláló tartalma eléri a nullát, Q kimenet kikapcsol. Ha elérte a nullát, nem számol tovább, újabb CD léptetőimulzusokra sem.
Az R bemenet TRUE állapota a számláló tartalmát törli, mindaddig, amíg R aktív (nem élvezérelt). Így aktív R mellett a számláló tartalma mindig nulla, nem léptethető és nem reagál az S bemenetre sem.
Q kimenet állapota mindig bekapcsolt (TRUE), amikor a számláló tartalma nullától eltér.

S_CUD idődiagramja





Szirty