Rámpagenerátor


A Siemens oldalakat tallózva találtam egy ilyet.

Mi ez és mire jó?
A rámpagenerátor egy olyan funkció blokk, ami a bemenő értéket a kimenetére továbbítja, de az érték változásának a sebességét korlátozza a blokknak megadott paraméterek szerint. tehát egy gyorsan változó érték változásait "kisimítja".
Használható pl. proporcionális szelep, vagy frekvenciaváltó vezérlésére analóg kimeneteken keresztül. Segítségével meg tudjuk akadályozni hogy a beavatkozó szerv túl gyorsan akarjon beavatkozni, nemkívánatos rántásokat, esetleg kárt okozva ezzel.
Persze a frekvenciaváltók pl. tartalmaznak saját rámpa funkciót is, de ha a referenciát ezzel a rámpafunkcióval kezeljük, akkor lehetőségünk van a rámpaidőket programból "menet közben" megváltoztatni. (egyébként ehhez a frekvenciaváltó paramétereit kellene módosítani).
Ez a rámpagenerátor lineáris rámpát hoz létre.

A funkció működése
A blokk Actual_Value kimenete előre beállított sebességgel, lineárisan közelíti a maximum vagy minimum bemenet értékét.



A blokk:




Activate A blokk engedélyezése. FALSE állapotban a blokk Actual_value kimenete azonnal (rámpa nélkül) felveszi a Null_Point paraméter értékét a többi paraméter értékétől függetlenül.
R_Max Az Actual_Value kimenet ezt az értéket közelíti a rámpával, ha az Activate=TRUE és R_Max=TRUE
R_Min Az Actual_Value kimenet ezt az értéket közelíti a rámpával, ha az Activate=TRUE és R_Min=TRUE
R_OK Kimenő jelzés. TRUE értéket vesz fel, amikor Activate=TRUE és a rámpázás befejeződik. FALSE értékű, amikor az Actual_Value éppen közelíti az Min_Value vagy Max_Value értéket. Akkor is FALSE, ha a közelítés ezek valamelyikének megváltozása miatt következik be.
Max_Value Maximális kimenő érték, amit az Actual_Value akkor vesz fel, amikor R_Max=TRUE és Activate=TRUE
Min_Value Minimális kimenő érték, amit az Actual_Value akkor vesz fel, amikor R_Min=TRUE és Activate=TRUE
Null_Point Alapérték, amit az Actual_Value akkor vesz fel, amikor Activate=FALSE és/vagy R_Min és R_Max is FALSE
Actual_Value Aktuális kimenő érték, ami a rámpaműveletet végzi
R_Plus Felfutó rámpánál a rámpa ezzel az értékkel nő
R_Minus Lefutó rámpánál a rámpa ezzel az értékkel csökken
R_Time A rámpa egy lépéséhez szükséges idő ezred másodpercben
MEG_Time A CPU ciklus ideje (ezred másodpercben), amit az OB1 PREV_CYCLE változójából olvashatunk ki. Erre azért van szükség, hogy timer interrupt nélkül is biuzosítható legyen a PLC ciklus idejétől független, időben lineáris rámpa.

Mivel a fel és lefutó rámpák növekményét külön lehet megadni, elérhető hogy eltérő meredekségű legyen a fel és a lefutó rámpa.
Ezt a blokkot nem csak arra lehet használni, hogy az Actual_Value-t a Null_Point, a Max_Value és a Min_Value között sétáltassuk, az R_Min R_Max bemenetek kapcsolgatásával.
Azt is megtehetjük, hogy egy érték követésére kényszerítjük. Ehhez kapcsoljuk be fixen pl. az R_Max bemenetet és a követendő értéket adjuk meg neki a Max_Value bemeneten.
Az eredmény az lesz, hogy az Actual_Value szépen követni fogja a Max_Value értékét, de csak a rámpa paraméterekben megadott meredekséggel! ha tehát a Max_Value ekkor gyorsabban változik mint ahogy azt a rámpa engedi, akkor a kimenő Actual_Value a rámpa betartásával fogja felvenni az új értéket.

Mindezt ki is lehet próbálni, mert a Siemens oldalairól nem csak a rámpagenerátor blokk tölthető le, hanem egy hozzá készített Step7 és HMI project is.

Itt található a rámpagenerátorral foglalkozó oldal
Az FC10 rámpagenerátor blokk forrásprogramja PDF-ben
A funkcióblokkot és a példaprogramot tartalmazó Step7 project
WinCC Flexible példa project, amivel a rámpagenerátort tesztelni lehet

(Az oldalról letölthető még WinCC 6.2 és WinCC 7.0 project is)

A rámpagenerátor kipróbálása
Ehhez szükségünk lesz a Step7-re, ami tartalmazza a PLC szimulátort, valamint a WinCC Flexible HMI szoftverre. (vagy a WinCC SCADA programra, de ez a leírás a Flexible változattal foglalkozik).
Töltsük le a Step7 példaprojectet: Rampe_1.zip
Bontsuk ki a ZIP-et. A project egy Rampe_1 könyvtárban van. Indítsuk el a Simatic managert és töltsük be a Rampe_1 nevű projectet. Egy OB1 és egy FC10 blokkot találunk benne, valamint egy változótáblát.



Indítsuk el a PLC szimulátort. ha 5.4-es verzióval rendelkezünk, akkor meg fogja kérdezni melyik interfészt használja:



Válasszuk a PROFIBUS(1) adr:2 sort (A HMI project erre az interfészre van beállítva).
Miután a PLCSIM elindult, töltsük fel rá az OB1 és FC10 blokkokat.
Töltsük le a Siemens oldaláról a WinCC Flexible projectet: WinCC_flexible_Sample_1.zip
Ezt is bontsuk ki valahova, majd indítsuk el a WinCC Flexible ES programot és töltsük be ezt a projectet.
Most már csak el kell indítani a WinCC Flexible runtime-ot a runtime ikonnal vagy a Project > Compiler > Start runtime menü kiválasztásával.

A Runtime képernyő egy grafikont tartalmaz. A grafikon vízszintes tengelye az idő, függőleges a rámpagenerátor  Actual_Value kimenete:

A runtime képernyőn gyakorlatilag a rámpagenerátor minden kimenete látható és minden bemenő paramétere állítható. Kivéve a MEG_Time paramétert, amit az OB1 állítbe a PLC aktuális ciklus idejére.
Az R_OK jelzés zöldre vált, amikor az FC10 R_OK kimenete aktív (TRUE) vagyis amikor a rámpaművelet véget ért.
A paraméterek állítgatásával a grafikonon nyomon követhető az Actual_Value időbeni változása.



Szirty