Analóg késleltetővonal SIMATIC S7-300/400-ra


Ebben a példában egy funkció blokkal megvalósított késleltetővonalról lesz szó.
Tulajdonképpen nagyon kicsi a valószínűsége annak, hogy aki ide betéved annak pontosan egy ilyenre van szüksége. Viszont ez engem egyáltalán nem gátol meg abban, hogy ezt ide kirakjam :)
Hogy mire jó?
Eredetileg az ugyanitt már közölt PID controller teszthez készült. Ezzel akartam szimulálni a PID számára a beavatkozó jel mért értékre gyakorolt késleltetett hatását. Azonban a mai napig nem került bele.

A késleltetővonal lényege, hogy egy bemeneten érkező numerikus értékből meghatározott időközönként mintát vesz, és eltárolja. Az eltárolt mintákat egy paraméterben megadott idő letelte után a bemeneti mintavétel gyakoriságának megfelelő sebességgel a kimenetére írja. Eközben természetesen a bemenetről folyamatosan továbbra is mintákat vesz és tárolja azokat. A működése tehát folyamatos.

A késleltetővonalat megvalósító blokk hívása:


A blokk működése:

Az "Orajel" nevű logikai bemenetre egy folyamatos impulzus sorozatot kell küldeni. Az impulzus sorozat gyakorisága fogja meghatározni a késleltető vonal időalapját. A blokk az órajel minden felfutó élénél  hajt végre egy műveletet.
A "Hossz" paraméter határozza meg a késleltetés mértékét az óraütések számában mérve. Ez a blokk 60 mintát tud tárolni. A legnagyobb megadható érték a hossz számára 59.
A blokk egy belső számláló segítségével címzi az adatok tárolására szolgáló instance adatblokkot (a példában DB5). 
Az órajel felfutó élénél először kiolvassa a számláló által mutatott elemet a tárolóból (azaz a legrégebben táblába írt bejövő adatot) és kiküldi a "kimenet"-re. Ezután a "Bemenet"-en érkező bemenő adatot eltárolja az adattároló számláló által címzett rekeszébe, vagyis ugyanoda, ahonnan az előbb kiolvasta az adatot.
Ezután növeli egyel a számláló értékét, ha az nem nagyobb  a hossz paraméternél, különben nullázza.
A folyamat az órajel minden felfutó élénél megismétlődik.

Ha a blokk működése átmenetileg állt (egy ideig került meghívásra vagy az órajel bemeneten nem érkeztek impulzusok), vagy működés közben megnöveljük a hossz paraméter értékét, akkor átmenetileg a kimenet a blokk belső adattárolójának olyan rekeszeinek tartalmát fogja kiküldeni, ahol korábbi adatok vannak. Ilyen esetben a kimeneten "zavarjel" keletkezik. A zavar megszűnik, amikor a blokk a tárolót teljesen teleírja az aktuális adatokkal (vagyis a belső számláló tesz egy teljes kört).

A blokkon belül használt változók listája



A késleltetővonal blokkjának STL forrásprogramja:


A késleltető vonalhoz készült egy komplett project OP270-es operátorpanellel. Az OP270 és az S7 PLC is szimulálható PC-n, ha a fejlesztőrendszer szükséges komponensei rendelkezésre állnak. Az OP270 kijelzőjén egy-egy real time grafikon mutatja a késleltetővonal bemenetét és a kimenetét.
A bemenet értéke egy slider (csúszka) objektummal egérrel állítható. A sliderrel egy görbét rajzolva a bemeneti grafikonra, a kimeneti grafikon időbeli eltolódása és a jel időbeni változása jól látható.
Mivel az OP270 grafikonjának a mintavételei és a késleltetővonal órajele nincs szinkronban egymással, a két grafikon kisebb torzulásokat mutathat.

A késleltető működését szemléltetni hivatott grafikon OP270-en.
0 késleltetéssel:



20-as késleltetéssel:



30-as késleltetéssel:



A Step7 project letölthető ZIP file-ban (220k)

 Vissza a főoldalra

Szirty