PULSEGEN

Impulzus sorozat FB43 “PULSEGEN” blokkal

A PULSEGEN impulzus szélesség modulált (PWM) jelet hoz létre egy százalékos bemenő érték alapján.
A PWM jel rendkívül alkalmas teljesítmény, mennyiség szabályzásra olyan beavatkozó szerv használatával, aminek csak két állapota van (kikapcsolva/bekapcsolva, nyitva/zárva) stb).
Természetesen itt nem több kHz-es PWM jelekre kell gondolni mint a mikrovezérlőknél. Ha nagy sebességű PWM jelre van szükség, akkor más módszert kell választani a létrehozására. Ha PLC-s megoldás kell, akkor használhatunk olyan compact vagy technologytípusú CPU-t, amiben van HW-es impulzus generátor beépítve.

A szoftveres PULSEGEN igen jól használható lassú beavatkozásoknál, nagy tehetetlenségű rendszerek szabályzására.
Az FB43 PULSEGEN blokkot a Step7 tartalmazza. A PID control blokkok között találjuk.



Nem véletlenül van ott, az FB43-at a PID szabályzóhoz (CONT_C) javasolják olyankor, amikor a PID kimenetével egy két állapotú beavatkozó szervet kell működtetni.
Pl. hőmérséklet szabályzás olyan berendezésben, ahol a fűtőszálak teljesítményét nem lehet fokozatmentesen szabályozni, így a PID szabályzó kimenetét nem használhatjuk fel közvetlenül a fűtőszálak kapcsolására. Az FB43 közbeiktatásával impulzus szélesség modulált sorozatokkal kapcsoltatjuk a fűtést, amivel megvalósul a teljesítmény szabályzás.



Természetesen az FB43-at nem kötelező a CONT_C-vel együtt használni, bármilyen százalékos értékből generálhatunk vele PWM impulzusokat.

Az FB43 blokk diagramja:


Hogyan működik?

Az INV bemenő paraméterben érkező 0-100 vagy -100 - +100 értékből állít elő impulzus szélesség modulált jelet, ami a QPOS_P és QNEG_P logikai típusú kimeneten jelenik meg.
A kimenő jel tulajdonságait a blokk paraméterezésével lehet beállítani.
A blokk használatával kapcsolatban nagyon fontos, hogy az FB43-at szabályos és imert időközönként kell meghívni.Ennek több módja is van. Az egyszerűbb az, ha egy cyclic interruptot, vagyis egy ciklikus megszakítást használunk fel erre.
Az FB43 nem működik megfelelően, ha egyszerűen meghívjuk a főprogramunkból vagy valamelyik blokkból, amelyik minden PLC ciklusban lefut, mert a PLC ciklus ideje nem állandó.

A cyclic interrupt a HW configban a CPU tulajdonságai között állítható be a "Cyclix Interrupts" nevű fülön:



A cyclic interrupt egy OB programblokk, amit a CPU a HW konfigban beállított időközönként meghív. A fenti példában ez az OB35.
Ebben az esetben az FB43 hívását az OB35-be kell tenni. A ciklikus megszakítás biztosítja, hogy a PULSEGEN pontosan azonos időközönként fusson le.
Általában a 100ms-os futtatási gyakoriság megfelelő. A hívási gyakoriság meghatározásánál fontos tudni, hogy a PWM jel ciklus ideje nem lehet kevesebb a hívási gyakoriság 20x-osánál. 100ms mellett tehát2 másodperces a legkisebb alkalmazható PWM ciklus idő.

A másik mód az egyenletes idejű hívásra a blokk EN bemenete és egy timerrel vagy clock memory bittel létrehozott impulzus sorozat.


A blokk számára CYCLE paraméterben pontosan meg kell adni hogy milyen gyakran fog lefutni.
Ha itt nem azt az időt adjuk meg neki amennyi időnként lefut, vagy a lefutás ideje nem állandó, akkor az FB43 hibásan fogja kiszámolni az időket és nem fog megfelelően működni.
A blokk PER_TM paraméterében adjuk meg a kimeneten megjelenő impulzus sorozat periódus idejét.
Mint fentebb említettem a PER_TM>=CYCLE*20.
A CYCLE és a PER_TM közötti különbség hatással van a blokk pontosságára is. Minél nagyobb ez a különbség, a blokk annál precízebben tudja beállítani a kimenetén megjelenő impulzusok kitöltési tényezőjét.

Mi is az impulzus szélesség moduláció?

Egy állandó periódus idejű négyszög jel, aminek a ki és bekapcsolási ideje a moduláló jellel arányosan változik egymáshoz képest.


Ha egy ilyen jellel egy fűtőtestet kapcsolgatunk, akkor a fűtőtest által leadott teljesítmény átlaga arányos lesz a kitöltési tényezővel, ami a PWM jel perióduson belüli ki és bekapcsolási idejének aránya. Ez teszi alkalmassá teljesítmény és mennyiség szabályzására.

Paraméterek és üzemmódok

Az FB43-nak a már említett paramétereken kívül további paraméterei is vannak, amikkel az üzemmódját és működésmódját lehet beállítani.
Egy P_PB_TM paraméterben korlátozhatjuk, a legrövidebb impulzusokat a kimenetén. A paraméterben azt az időt kell megadni, amekkora a legkisebb megengedett ki és bekapcsolási idő az impulzus kimeneten.
Amikor az impulzus kimenet kitöltési tényezője közel van a 0%-hoz vagy a 100%-hoz, akkor még nagyobb PER_TM esetén is csak rövid ideig kapcsol ki vagy be az impulzus kimenet még hosszú PER_TM esetén is. Ezt a rövid ki vagy bekapcsolási időt korlátozza a P_B_TM.

ÜzemmódMAN_ONSTEP3_ONST2BI_ON
3 állapotú üzemmódFALSETRUEX
2 állapotú mód bipoláris bemenő tartománnyal (-100%-tól +100%-ig)FALSEFALSETRUE
2 állapotú mód monopoláris  bemenő tartománnyal (0%-tól +100%-ig)FALSEFALSEFALSE
Kézi üzemmódTRUEXX

3 állapotú üzemmód

Ebben a módban a QPOS_P és QNEG_P kimenetek három különböző állapotot vehetnek fel. Ez pl. hűtés és fűtés vezérléséhez használható mód, amikor a QPOS_P a fűtést, QNEG_P a hűtést kapcsolja be.
Ebben a módban az INV bemeneten -100%-tól +100%-ig változó értéket fogad. Ha a bemenő érték 0, akkor mindkét kimenet tartósan FALSE állapotban van.
0 - 100 tartományban csak a QPOS_P kimenet ad impulzusokat, 0-100 kitöltéssel, az INV bemenet pozitív értékével arányosan.
Negatív (0 - -100) tartományban csak a QNEG_P kimenet ad impulzusokat 0-100 kitöltéssel a negatív bemenő értékkel arányosan.



Látható, hogy  a 3 állapotú mód szimmetrikus, a pozitív és a negatív tartomány egyforma.
A RATIOFAC paraméterrel lehetőségünk van aszimmetrikus működést beállítani. Erre akkor lehet szükség, ha a blokkot hűtés és fűtés szabályzására használjuk, de a hűtés és fűtés beavatkozó szerveinek kapcsolásához eltérő időkre van szükség.
A szimmetrikus beállításhoz a RATIOFAC=1 beállítás szükséges. A RATIOFAC egy szorzó, amit 0.1 és 10 között állíthatjuk be.

Ha RATIOFAC<1
Ha a RATOFAC kisebb 1-nél, akkor a pozitív tartomány változatlan marad, a negatív tartomány csökken:
A pozitív impulzus kimenet alakulása: INV/100*PER_TM
A negatív impulzus kimenet alakulása: INV/100*PER_TM*RATIOFAC


Az ábra a blokk impulzuskimeneteinek kitöltését mutatja amikor RATIOFAC=0.5

Ha RATIOFAC>1
Ha a RATOFAC nagyobb 1-nél, akkor a negatív tartomány marad változatlan, a pozitív tartomány pedig megváltozik.
A pozitív impulzus kimenet alakulása: INV/100*PER_TM/RATIOFAC
A negatív impulzus kimenet alakulása: INV/100*PER_TM

2 állapotú üzemmód
2 állapotú módban a QNEG_P és a QPOS_P kimenetek mindig ellentétes állapotban vannak.
A kimenet kitöltési tényezője függ az ST2BI_ON bemenet állapotától, meghatározza a bemeneti tartományt (monopolár / bipolár).

Bipolár módban az INV bemeneti tartománya -100%-tól +100%-ig tart (ST2BI_ON=TRUE):


Monopolár módban az INV bemeneti tartománya 0%-tól +100%-ig tart (ST2BI_ON=FALSE):


A project

Talán jobban érthető a PULSEGEN működése ha egy példa segítségével ki is lehet próbálni azt.
Ezért készítettem egy projectet, ami WinCC Flexible segítségével megjeleníti a blokk kimeneteit és lehetővé teszi annak paraméterezését működés közben.
A project működtetéséhez PLCSIM és WinCC Flexible 2007 és runtime programokra van szükség.

A Step7 project tartalma:


Az OB1 csak néhány segédváltozó kitöltését tartalmazza, ami a WinCC flex runtime grafikon rajzolását segíti.
A PULSEGEN hívását az OB35 cyclic interrupt OB tartamlmazza, ami 100ms-onként fut le.



A projectben ezen kívül két adatblokk van. A DB10 az FB43 instance blokkja, amit maga a Step7 generál az FB43-hoz.
A másik a DB1, amiben a PULSEGEN paraméterei vannak:



A WinCC Flexible project két képernyőt tartalmaz.





A project letölthető innen: PULSEGEN.zip (kb 5MB)


A PULSEGEN (FB43) paraméter listája:

INV
Input Variable: Bemenő érték. (REAL) bemenet
A PULSEGEN az INV bemeneten érkező 0-100 vagy -100- +100 tartományba eső érték megfelelően szabályozza az impulzus kimenetek ki és bekapcsolási idejének arányát.

PER_TM
PERIOD TIME (TIME) bemenet
Az impulzus kimenetek impulzus szélesség modulációjának periódus ideje. Ez az az időtartam, ami alatt az impulzus kimenet a ki és bekapcsolási idejét az INV bemenettel arányosan százalékosan változtatja.

P_B_TM
MINIMUM PULSE/BREAK TIME (TIME) bemenet
Az impulzus kimenetek megengedett legkisebb kapcsolási ideje. Az impulzus kimenet nem fog az itt megadott időnél rövidebb ideig be vagy kikapcsolni.
Általában a beavatkozó elem kapcsolási tulajdonságai miatt szükséges ilyen korlátozás. Pl. ha az impulzus kimenet egy mágneskapcsolót vagy szelepet vezérel, és a beavatkozó érték, amit a PULSEGEN az INV bemeneten kap meg nagyon közel van a 100%-hoz vagy a 0%-hoz, akkor még nagy PER_TM esetén is igen rövid kapcsolási idők lennének szükségesek.
A P_B_TM-el beállítható, hogy a mágneskapcsolót az impulzus kimenet ne kapcsolja be (vagy 100% közelében ki) pl. 0.1mp-re.

RATIOFAC
RATIO FACTOR (REAL) bemenet
3 állapotú módban a pozitív és negatív tartomány aszimmetrikus beállításához szükséges szorzó

STEP3_ON
THREE STEP CONTROL ON (BOOL) bemenet
A "három állapotú" vezérlés aktiválására szolgáló bemenet. Ebben az üzemmódban mindkét kimenet aktív (és nem csupán egymás ellentétei)

ST2BI_ON
TWO STEP CONTROL FOR BIPOLAR MANIPULATED VALUE RANGE ON (BOOL) bemenet
Bipoláris működésmódot aktiválja. Bipoláris módban a 0% INV bemenő érték 50% kitöltésű impulzusokat hoz létre a kimeneten. +100-as INV 100%-os kitöltést eredményez, és -100 INV 0%-os kitöltést.

MAN_ON
MANUAL MODE ON (BOOL) bemenet
Kézi üzemmód. A QPOS_P és QNEG_P kimeneteket a POS_P_ON és a NEG_P_ON bemenetekkel lehet vezérelni. A blokk ilyenkor önállóan nem generál impulzusokat az INV bemenet értékét figyelmen kívül hagyja.

POS_P_ON és POS_P_ON
POSITIVE PULSE ON és NEGATIVE PULSE ON (BOOL) bemenet
Amennyiben három állapotú üzemmódban van (STEP3_ON=TRUE) a POS_P_ON közvetlenül kapcsolja a Q_POSP kimenetet, a NEG_P_ON pedig a Q_NEGP kimenetet.
A többi üzemmódban POS_P_ON közvetlenül kapcsolja a Q_POSP kimenetet, Q_NEGP kimenet pedig QPOS_P kimenet negáltja lesz. Ilyenkor NEG_P_ON bemenet állapota közömbös.

SYNC_ON
SYNCHRONIZATION ON (BOOL) bemenet
A bemenő érték (INV) mintavételezésére van hatással. Ha SYNC_ON=FALSE, akkor az INV bemenetet csak minden periódus végén olvassa be. Ilyenkor a periódus alatt megváltozó bemenő érték nincs semmilyen hatással a futó periódus kitöltési tényezőjére.
Ha a SYNC_ON=TRUE, akkor az INV bemenetet a periódus alatt is mintavételezi, ezért a bemenő érték megváltozása azonnal hatással van a futó periódusra.Tehát a kitöltési tényező azonnal követi a bemenő érték változását.
Megjegyzés: Ha a periódus idő nagy, és az INV bemenő érték gyorsan és nagymértékben változhat, akkor aktív (TRUE) SYNC_ON beállítás mellett a kimenő impulzusok hossza meglehetősen rabszódikusan változhat, ami alkalmazástól függően nem megfelelő működést is okozhat.

COM_RST
COMPLETE RESTART (BOOL) bemenet
A PULSEGEN újraindítása. A bemenet TRUE állapotában mindkét kimenet FALSE állapotba kerül. A COM_RST TRUE állapotba kerülésekor újraindul a periódus időt számláló időzítő is és a blokk folytatja a működést.
Általában hosszú PER_TM használatakor van rá szükség.

CYCLE
SAMPLING TIME (BOOL) bemenet
Lényeges, hogy a PULSEGEN blokkot pontosan azonos időközönként hívjuk meg. Ezen túl ebben a paraméterben meg is kell adni ezt az időt. Tehát ha a PULSEGEN-t pl. OB35-ből futtatjuk, ami 100ms időre van beállítva, akkor CYCLE paramétert 0.1mp-re kell beállítani.

QPOS_P és QNEG_P
OUTPUT POSITIVE PULSE és OUTPUT NEGATIVE PULSE (TRUE) kimenet
A blokk impulzus kimenetei szolgáltatják a kapcsoló impulzusokat amiket a blokk előállít.
Két állapotú módban a két kimenet mindig egymással ellentétes állapotban van, 3 állapotú módban vagy az egyiken, vagy a másikon érkeznek az impulzusok.

Felhasznált irodalom:
Standard Software for S7-300 and S7-400 PID Control

Kapcsolódó témák:
SIMATIC S7 standard PID control FB41 (CONT_C) teszt

Szirty