kategória | ||||||||||
|
||||||||||
|
||
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
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
BCD: Az időtag pillanatnyi értéke BCD formában
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ő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!
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)
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:
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:
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:
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:
S7 300/400-ban
á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)
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
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
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
:
4514