Digitális szervo hajtások

Dr. Korondi, Péter

Dr. Fodor, Dénes

Décsei-Paróczi, Annamária

A tananyag a TÁMOP-4.1.2.A/1-11/1-2011-0042 azonosító számú „ Mechatronikai mérnök MSc tananyagfejlesztés ” projekt keretében készült. A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósult meg.

A kiadásért felel a(z): BME MOGI

Felelős szerkesztő: BME MOGI

ISBN 978-963-313-138-1

2014


Tartalom
1. Bevezetés
2. Villamos motorok osztályozása
2.1. Elektromágneses motorok
2.1.1. Elektromágneses motorok nyomatéka
2.1.1.1. Egyfázisú motorok hengeres nyomatéka
2.1.1.2. Többfázisú motorok hengeres nyomatéka
2.1.1.3. Reluktancia nyomaték
2.1.1.4. Hiszterézis nyomaték
2.1.1.5. Elektronikus táplálás hatása a nyomatékra
2.1.2. Mezőorientált megközelítési mód
2.1.3. Elektromágneses motorok típusai
2.2. Elektrosztatikus motorok
3. Villamos hajtások osztályozása
3.1. Egyszerű hajtások
3.2. Négynegyedes szervohajtások
3.2.1. Nyomatékérzékelés és –mérés
4. A csúszómód szabályozás
4.1. Rövid történeti áttekintés
4.2. Bevezető példa
4.3. Jobboldalán nem folytonos differenciál egyenletek megoldása
4.4. Relés szabályozók
4.4.1. A csúszómód fennmaradásának feltétele
4.5. A bevezető példa differenciálegyenletének megoldása
4.6. Több bemenetű rendszerek csúszómódban
4.7. A csúszómód szabályozók tervezési lépései
4.7.1. A csúszófelület tervezése
4.7.2. A szabályozási törvény megválasztása
4.7.3. A csattogás elkerülése
4.7.3.1. A szakadásos jel folytonossá tétele
4.7.3.2. Állapot-megfigyelő alapú csúszómód szabályozás
4.7.4. Diszkrét idejű csúszómód szabályozás
4.8. A csúszómód szabályozók tervezési lépéseinek kísérleti alkalmazása
4.8.1. Mérési eredmények
4.9. Kéttömeg rendszer közvetlen elcsavarodás szabályozása csúszómódban
4.9.1. A nem modellezett dinamika hatása a csúszómódra
4.9.2. Kéttömeg rendszer egyenletei
4.9.3. Állapottér egyenletek
4.9.4. A csúszófelület tervezése
4.9.5. Megfigyelőre alapozott csattogásmentes szabályozási törvény
4.9.6. A kéttömeg rendszer csúszómód alapú közvetlen elcsavarodás szabályozásának kísérleti alkalmazása
4.10. Következtetés
5. Szervomotor szabályozási körének internetes távmérése (Laboratóriumi mérési gyakorlatok leírása)
5.1. A mérés célja
5.2. Bevezetés
5.3. Rendszer áttekintés
5.4. A mérésnél használt eszközök bemutatása
5.4.1. Egyenáramú szervohajtás
5.4.2. Állandó mágnessel gerjesztett egyenáramú motor
5.4.3. Motorvezérlő elektronika
5.5. Általános utasítások a mérésekhez
5.6. A PCI-1720 D/A kártya használata -- Motion control/Exercise 1 menüpont alatt található laboratóriumi mérési gyakorlat
5.6.1. A PCI 1720 kártya beállítása a „DRV_DeviceOpen” függvény segítségével
5.6.2. A feszültségszint beállítása a PCI 1720-as kártyán a DRV_AOVoltageOut függvénnyel
5.6.3. Mintaprogram a PCI 1720 kártya feszültség szintjének inicializálására és beállítására
5.7. Valós idejű óra használata a PCI 1720 D/A kártyával -- Motion control/Exercise 2 menüpont alatt található laboratóriumi mérési gyakorlat
5.7.1. Hogy valósul meg a valós idő nem valós idejű operációs rendszer alatt?
5.8. A PCI 1784 számláló használata -- Motion control/Exercise 3 menüpont alatt található laboratóriumi mérési gyakorlat
5.8.1. A PCI 1784-es kártya inicializálása a DRV_DeviceOpen függvénnyel
5.8.2. A számláló értékek visszaállítása a PCI 1784-es kártyán a DRV_CounterReset függvénnyel
5.8.3. A számlálás elindítása a PCI-1784 a kártyán a DRV_CounterEventStart függvénnyel
5.8.4. A számláló értékeinek olvasása PCI-1784 kártyán a DRV_CounterEventRead függvénnyel
5.8.5. Mintaprogram számlálási műveletekre a PCI-1784 kártyán
5.9. Nyílt szabályozó kör mérése -- Motion control/Exercise 4 menüpont alatt található laboratóriumi mérési gyakorlat
5.9.1. A DC szervomotorok elméleti háttere
5.9.2. A DC szervomotor felépítése és leíró áramköre
5.9.2.1. Egyenértékű áramkör
5.9.3. Matematikai modell
5.9.3.1. Időtartomány egyenletek
5.9.3.2. Frekvencia tartomány egyenletek
5.9.3.3. Átviteli függvények
5.9.4. A modell elemzése
5.9.4.1. Állapottér reprezentáció
5.9.4.2. Állandósult állapot
5.9.4.3. Statikus karakterisztika, munkapont
5.9.4.4. Átviteli függvény elemzése
5.9.4.5. Az átviteli függvény vizsgálata
5.9.4.6. A pontos és közelítő egyenlet:
5.9.5. A zajos fordulatszámjel szűrése
5.9.6. A mérés leírása
5.9.7. Mérési feladatok
5.10. Visszacsatolt kör mérések -- Motion control/Exercise 5 menüpont alatt található laboratóriumi mérési gyakorlat
5.10.1. Az irányításelmélet elméleti háttere
5.10.2. Áram szabályozó
5.10.3. Módszerek a PID szabályozó paramétereinek megválasztásához Ziegler-Nichols módszer
5.10.4. Mérési feladatok: fordulatszám szabályozás
5.10.5. Mérési feladatok: pozíció szabályozás
6. Mintamérések, néhány mérési feladat megoldása
6.1. A mérés célja
6.2. A PCI-1720 D/A kártya használata- 5.4 mérési feladat megoldása
6.2.1. A mintafájlból (Dasoft.cpp) a következőt kell átmásolni a szövegmezőbe:
6.2.2. A pirossal jelölt részeket töröljük ki.
6.2.3. Változtassuk meg, ahogy az zölddel van jelölve.
6.3. Valós idejű óra használata a PCI 1720 D/A kártyán - 5.5 feladat megoldása
6.4. A PCI-1784 számláló használata - 5.4 mérési feladat megoldása
6.4.1. A(Dasoft.cpp) mintafájlból a következők másolandók a szövegmezőbe:
6.4.2. Töröljük a pirossal jelölt részeket.
6.4.3. Cseréljük a kódot a zöld szerint.
6.5. Nyílt szabályozó kör mérése - Motion control/Exercise 4 menüpont alatt található laboratóriumi mérési gyakorlat megoldása
6.5.1. A motor válasza állandó nyomatékra - 5.11 feladat megoldása
6.5.2. Konstans nyomaték és digitális szűrő - 5.12 feladat megoldása
6.5.3. A motor válasza a szinuszos feszültségre és a szervoerősítő offsetjének kompenzálása - 5.13 feladat megoldása
6.5.4. Digitális szűrők összehasonlítása - 5.14 mérési feladat megoldása
6.6. Visszacsatolt kör mérések - Motion control/Exercise 5 menüpont alatt található laboratóriumi mérési gyakorlat megoldásai
6.6.1. A P szabályozó hangolása - 5.16 mérési feladat megoldása
6.6.2. A P szabályozó ugrásfüggvény válasza - 5.17 mérési feladat megoldása
6.6.3. A P szabályozó változó referenciajellel - 5.18 feladat megoldása
6.6.4. A P szabályozó válasza a terhelés ugrásszerű változásaira - 5.19 mérési feladat megoldása
6.6.5. A PI szabályozó ugrás függvényre adott válasza - 5.20 mérési feladat megoldása
6.6.6. A PI szabályozó változó referenciajellel - 5.21 mérési feladat megoldása
6.6.7. A PI szabályozó válasza a terhelés ugrásszerű változásaira - 5.22 mérési feladat megoldása
6.6.8. Hibatolerációs mérések - 5.23 mérési feladat megoldása
6.6.9. Időkésleltetett rendszer PI szabályozása - 5.24 mérési feladat megoldása
6.6.10. P és PI szabályozó ugrás függvény pozíció refereciajel válasza - 5.25 mérési feladat megoldása
6.6.11. Stick-slip jelenség - 5.26 mérési feladat megoldása
6.6.12. Pozíció szabályozás belső sebesség szabályozóval - 5.27 mérési feladat megoldása
6.6.13. Csúszómód szabályozó eredmények - 5.28 mérési feladat megoldása
6.7. Komplex tervezési és mérési feladat
6.7.1. Az állapot-visszacsatolás és tervezése
6.7.2. Alapjel korrekció alkalmazása
6.7.3. Állapot-megfigyelő tervezése
6.7.4. Integráló szabályozás
6.7.5. A rendszer identifikációja
6.7.6. A szabályozás megtervezése
6.7.7. A motor identifikációja
6.7.7.1. A karakterisztika előzetes vizsgálata
6.7.7.2. Gerjesztés megtervezése az identifikációhoz
6.7.7.3. Identifikáció MATLAB segítségével
6.7.8. Szabályozó tervezése
6.7.8.1. Integrátor nélküli szabályozó
6.7.9. Integrátoros szabályozás
6.7.10. Szűrő tervezése a sebességméréshez
6.7.11. Implementáció
6.7.12. Integrátor nélküli szabályozó
6.7.12.1. C kód
6.7.13. Eredmények
6.7.14. Integrátoros szabályozó
6.7.14.1. C kód
6.7.15. Eredmények
6.7.16. Program kód
6.7.16.1. A szabályozótervezés teljes MATLAB kódja
7. Csővezeték hálózatban használt frekvenciaváltóval ellátott aszinkron motoros hajtások gazdasági számítása
7.1. Munkapont meghatározása
7.1.1. A fojtásos szabályozás elve
7.1.2. Szabályozás a szivattyú fordulatszámának megváltoztatásával
7.1.3. A hálózatból felvett teljesítmény
7.2. Megtérülési idő számítása
8. Háromfázisú aszinkron motor matematikai modellezése
8.1. A villamos modell közös koordináta-rendszer reprezentációja
8.2. A motor mechanikai modellje
8.3. Motormodell álló koordináta rendszerben
8.4. Motormodell állapotegyenlet reprezentációja forgó és álló koordináta-rendszerben
8.5. Mezőorientáció – forgórész fluxus orientáció
8.5.1. Motormodell mágnesezési áram bevezetésével
8.5.2. Feszültségforrás jellegű feszültség inverteres szabályozott hajtás
8.6. Háromfázisú aszinkron motor folytonos és diszkrét idejű állapottér-modellje
9. Aszinkronmotor érzékelő nélküli fordulatszám becslése
9.1. A motor állapotegyenletei alapján történő fordulatszámbecslés
9.2. Modell-referenciás adaptív szabályozó
9.3. Megfigyelőn alapuló fordulatszámbecslés
9.3.1. Kalman-szűrő alapú érzékelő nélküli fordulatszám becslés
9.3.1.1. Kiterjesztett Kalman-szűrő
9.3.1.2. Aszinkron motor fordulatszámának becslése Kalman–szűrő alkalmazásával
9.3.2. Állapotbecslés diszkrét idejű H∞ szűrővel
10. H∞ szabályozó elméleti háttere
10.1. Szabályozó tervezése
Irodalmi hivatkozások
Az ábrák listája
2.1. Villamos motorok mozgástípusai
2.2. Villamos motorok energia közvetítő közege
2.3. Klasszikus és kifordított álló- és forgórész konstrukciók
2.4. Elektromágneses motorok fluxusának útja
2.5. Az elektronok perdületéből eredő áram mágneses momentumainak iránya négy szomszédos doménben
2.6. Nyomatéktípusok
2.7. Leggyakrabban előforduló motor elnevezések
2.8. Egyfázisú aszinkron motorok
2.9. Reluktancia motorok
2.10. Permanens mágneses motorok
3.1. A villamos hajtások főbb egységei
3.2. Egyszerű egyenáramú hajtás
3.3. Egyszerű váltakozó áramú hajtás
3.4. A négy síknegyed értelmezése
3.5. A feszültség és áram előjele a négy síknegyedben
3.6. Az energiaáramlási irányok a különböző üzemmódokban
3.7. Közvetlen váltakozó áramú átalakítós hajtás
3.8. Szervo hajtások szokásos felépítése
4.1. L-C áramkör
4.2. Lehetséges állapottrajektória
4.3. A hiba megszüntetése
4.4. Relés szabályozó kör
4.5. Az S felület mentén csúszó állapottrajektória
4.6. Az S felület felé mutató f(x) vektortér
4.7. Több bemenetű rendszerek csúszómódban
4.8. Relés szabályozási törvény
4.9. Folytonos átmenetű, relés jellegű szabályozási törvény
4.10. Állapot-megfigyelő alapú csúszómód szabályozás
4.11. A szervomotor csúszó egyenese a hibajel fázissíkján
4.12. Egy-szabadságfokú szervorendszer
4.13. Klasszikus csúszómód
4.14. Diszkrét idejű csúszómód
4.15. Megfigyelő alapú diszkrét idejű csúszómód
4.16. Rugalmas tengellyel összekötött, kéttömegű rendszer
4.17. A szögelfordulás időfüggvénye a három különböző csúszómód szabályozó és rugalmas tengellyel összekötött terhelés esetén
4.18. A szabályozókör egyszerűsített vázlata
4.19. fázistere
4.20. A teljes szabályozó felépítése
4.21. Szimulációs eredmények
4.22. A csattogás jelensége
4.23. A kísérleti berendezés
4.24. Mérési eredmények
5.1. A rendszer áttekintő ábrája
5.2. Maxon digitális enkóder, HEDL-5540
5.3. HEDL-5540 digitális enkóder csatlakozója
5.4. Maxon 4QD-50V/5A szervoerősítő
5.5. PWM motorszabályozás
5.6. Szervoerősítő blokkvázlata
5.7. A feladat kiválasztása
5.8. Az első feladat oldalképe
5.9. Mérési eredmény képernyőképe
5.10. Real-Time Extension architektúra
5.11. A DC szervomotor felépítése (http://dind.mogi.bme.hu/animation/chapter1/1.htm)
5.12. Egyenértékű áramkör (http://dind.mogi.bme.hu/animation/chapter1/1_1.htm)
5.13. Időtartomány egyenletek (http://dind.mogi.bme.hu/animation/chapter2/2.htm)
5.14. Frekvencia tartomány egyenletek (http://dind.mogi.bme.hu/animation/chapter2/2_1.htm)
5.15. A DC motor átviteli függvényének levezetése (http://dind.mogi.bme.hu/animation/chapter2/2_2.htm)
5.16. A DC motor idő konstansainak levezetése (http://dind.mogi.bme.hu/animation/chapter2/2_3.htm)
5.17. Az állapottér levezetése (http://dind.mogi.bme.hu/animation/chapter3/3.htm)
5.18. Állandósult állapot, állapotjelzői (http://dind.mogi.bme.hu/animation/chapter3/3_1.htm)
5.19. A statikus karakterisztikák interaktív ábrája (http://dind.mogi.bme.hu/animation/chapter3/3_2.htm)
5.20. A zavarás elemzése az átviteli függvényen (http://dind.mogi.bme.hu/animation/chapter3/3_3.htm)
5.21. MatLab motor szimuláció
5.22. Az átviteli függvény elemzése (http://dind.mogi.bme.hu/animation/chapter3/3_4.htm)
5.23. A MatLab modell a közelítésekhez
5.24. Normál harmadfokú aluláteresztő szűrő Bode diagramja
5.25. Harmadfokú Bessel alul-áteresztő szűrő Bode diagramja
5.26. Klasszikus PI szabályozó (http://dind.mogi.bme.hu/animation/chapter4/4.htm)
5.27. A fázistartalék meghatározása (http://dind.mogi.bme.hu/animation/chapter4/4_1.htm)
5.28. Alkalmazás (http://dind.mogi.bme.hu/animation/chapter4/4_2.htm)
5.29. Bode-diagram (http://dind.mogi.bme.hu/animation/chapter4/4_3.htm)
5.30. Klasszikus PID szabályozó (http://dind.mogi.bme.hu/animation/chapter4/4_4.htm)
5.31. Lépés válasz (http://dind.mogi.bme.hu/animation/chapter4/4_5.htm)
5.32. MatLab szabályozó, motor szimuláció
5.33. A PI szabályozó helye (http://dind.mogi.bme.hu/animation/chapter4/4_6.htm)
5.34. Válasz a terhelés zavarára (http://dind.mogi.bme.hu/animation/chapter4/4_7.htm)
5.35. MatLab szimuláció a sebességszabályozó hurokra
5.36. Sebesség és áramszabályozó(http://dind.mogi.bme.hu/animation/chapter4/4_8.htm)
5.37. Magyarázat kФ elhanyagolására. (http://dind.mogi.bme.hu/animation/chapter4/4_9.htm)
5.38. Tervezési koncepció http://dind.mogi.bme.hu/animation/chapter4/4_10.htm)
5.39. A Tu paraméter meghatározása (Tu≈33 ms)
5.40. Kaszkád pozíció szabályozó
6.1. Szinuszos kimeneti feszültség
6.2. Nyílt hurkú vezérlés, nyomaték=1
6.3. Nyílt hurkú vezérlés, nyomaték=0.1
6.4. A szűrt és szűretlen sebességek összehasonlítása
6.5. Különböző szűrők összehasonlítása
6.6. Digitális szűrők összehasonlítása (periódusidő 0.1 s) Színkódolás nyomaték jel: világos kék, szűrés nélküli fordulatszám jel: kék, fordulatszám jel normál szűrővel: zöld, fordulatszám jel Bessel szűrővel: piros
6.7. Digitális szűrők összehasonlítása (periódusidő 0.4 s) Színkódolás nyomaték jel:világoskék, szűrés nélküli fordulatszám jel: kék, fordulatszám jel normál szűrővel: zöld, fordulatszám jel Bessel szűrővel: piros
6.8. P szabályozó eredményei paraméter hangolásra
6.9. P szabályozó Ziegler-Nichols hangolása (P = 2.3)
6.10. P szabályozó válaszai a referencia sebesség 3 ugrásszerű változására
6.11. P szabályozó eredményei ugrásszerű terhelésre
6.12. PI szabályozó eredményei ugrásszerű referencia sebesség értékre
6.13. PI szabályozó eredménye 3 ugrásszerű változásra a referencia sebesség értékben
6.14. PI szabályozó eredményei ugrásszerű terhelés változásra
6.15. Integrátor telítődése
6.16. PI szabályozó telítődésének hatása
6.17. A hibaintegrál időfüggvénye PI szabályozás esetén
6.18. A hibaintegrál időfüggvénye PI szabályozás anti windup funkcióval
6.19. A stabilitás határa
6.20. PI szabályozás időkésleltetett rendszer esetén
6.21. P szabályozó eredményei a referencia pozíció ugrásszerű változására
6.22. P szabályozó eredményei a referencia pozíció ugrásszerű változására
6.23. PI szabályozó eredményei a referencia pozíció ugrásszerű változására
6.24. Stick-slip jelenség
6.25. Kaszkád szabályozás eredményei
6.26. Diszkrét idejű alapjel korrekció
6.27. Megfigyelőre alapozott állapot-visszacsatolás
6.28. Megfigyelőre alapozott állapo-tvisszacsatolás integrátorral
6.29. Megfigyelőre alapozott állapotvisszacsatolás integrátorral
6.30. A szöbsebesség időfüggvénye
6.31. A szöbesebesség időfüggvénye
6.32. Szögsebesség nyomaték karakterisztika
6.33. A szögsebesség változása
6.34. A modell és a mérés összehasonlítása
6.35. Ugrásválasz
6.36. Szimulációs modell
6.37. Szimulációs eredmény
6.38. Nyomaték
6.39. Állapotváltozók
6.40. Szimulációs modell integrátorral
6.41. Szimulációs eredmény
6.42. Nyomaték
6.43. Szögsebesség
6.44. Egységugrás válasz
6.45. Bode-diagram
6.46. Ugrás válasz
6.47. Szűrés
6.48. Mérési eredmény integrátor nélkül
6.49. Mérési eredmény integrátorral
7.1. Munkapont meghatározása
7.2. A fojtásos szabályozás alapelve
7.3. Fordulatszám változtatással beállított munkapont
7.4. Megtérülési idő az időbeni és mennyiségi kihasználtság függvényében
7.5. 5 évnél rövidebb megtérülési idő az időbeni és mennyiségi kihasználtság függvényében
7.6. 3 évnél rövidebb megtérülési idő az időbeni és mennyiségi kihasználtság függvényében
7.7. Az éves energia megtakarítás az időbeni és mennyiségi kihasználtság függvényében
8.1. Aszinkron motor felépítésének egyszerűsített, elvi rajza
8.2. A háromfázisú eredővektor képzése
8.3. Fluxus eloszlás az aszinkron motorban
8.4. Induktivitások modellezése
8.5. Fázis- és rendszertranszformáció
8.6. Szinkron forgó koordináta-rendszer
8.7. Az álló- és forgórész egyesítése komplex, forgó transzformátorrá
8.8. Forgórész szórt induktivitása nélküli fluxusmodell
8.9. Forgórész fluxushoz történő orientáció
8.10. Feszültségforrás jellegű feszültség inverteres szabályozott hajtás
9.1. A modell-referenciás adaptív szabályozás struktúrája
9.2. Állapot megfigyelő általános elvi struktúrája
9.3. Kalman-szűrő működési elve
9.4. Kalman-szűrő illesztése tetszőleges rendszerhez
9.5. A mezőorientációs alapú Kalman-szűrős szabályozási struktúra
10.1. H∞ szabályozási probléma
10.2. Súlyfüggvényekkel kiegészített rendszer
10.3. Aszinkron motor Simulink modellje
10.4. Rendszer Simulink modelljének felépítése
10.5. Referenciakövetés vizsgálata
10.6. Szimuláció során használt terhelő nyomaték
10.7. Nyomatékváltozás hatása a sebességre
10.8. Sebességeltérés értéke
10.9. Szimuláció során használt mérési zaj
10.10. Motor feszültégbemenete
10.11. Fluxus modell alapján becsült fluxus
10.12. Motor modelljéből számított tényleges érték
10.13. Konstans referencia erős zajok esetén
10.14. Gyorsan változó nyomaték
10.15. Referencia tartása nyomatékváltozás esetén
10.16. Mérés DS1102 DSP kártyával
10.17. DS1102 Simulink blokkok
10.18. Aszinkron motor szabályozása DS1102-vel
A táblázatok listája
5.1. A motor paraméterei
5.2. Paraméterek
5.3. Paraméterek
5.4. Paraméterek
5.5. Paraméterek:

1. fejezet - Bevezetés

A Digitális szervohajtások tananyag célja az, hogy a mechatronikai berendezések villamos mozgatásának eszközeiről adjon áttekintést. Ismertnek feltételezzük az egyenáramú és az aszinkronmotor alapvető működéselvét és az állandósult üzemét. A jegyzet kiemelt célja a meglévő ismeretek rendszerezése.

2. fejezet - Villamos motorok osztályozása

A címben a szokásos villamos gépek kifejezés helyett a villamos motorok kifejezést használjuk, ezzel azt akarjuk kifejezni, hogy a szokásoktól eltérően nem kívánjuk tárgyalni, sem a villamos gépek körébe tartozó transzformátort, sem a kifejezetten villamos energiatermelésre szolgáló erőművi generátorokat. Természetesen a legtöbb később tárgyalt motornak létezik generátoros üzemmódja, amely akár fékezésre, illetve a jobb hatásfok elérése érdekében akár energia visszatáplálásra használható, de találkozunk olyan motorral is, ahol ez nem lehetséges (pl. az ultraszonikus motorok esetében). A villamos motorok osztályozásának több különböző szempontja lehet. A felhasználó szempontjából az egyik legnagyobb különbség abban mutatkozik, hogy a motor milyen jellegű mozgást hoz létre (ld. 2-1. ábra).

Villamos motorok mozgástípusai
2.1. ábra - Villamos motorok mozgástípusai


Egy fontos alapelvként kijelenthető, hogy minden motortípusnak elvben lehet lineáris és forgó mozgású változata, ez pusztán konstrukciós kérdés. A legtöbb motor forgómozgású, ezért a későbbiekben csupán a forgó mozgást végző motorokra koncentrálunk.

A motorok működési elve szempontjából a legfontosabb kérdés, hogy milyen közeg segítségével közvetítjük a mozgási energiát az állórésztől a forgó(mozgó) rész felé (ld. 2-2. ábra).

Villamos motorok energia közvetítő közege
2.2. ábra - Villamos motorok energia közvetítő közege


E kérdés tárgyalása csak a múlt évezred végétől vált fontossá, korábban a 20. században villamos motor alatt csak az elektromágneses működéselvű motorokat értettek. Bár az elektrosztatikus motorok működési elvét kb. egy évszázaddal korábban dolgozták ki, mint az elektromágneses motorokét, valamikor a 18. század közepén, de elektrosztatikus motorokkal jelentős nyomatékot az akkori technológiai szinten nem lehetett létrehozni, így leginkább műszerként és nem energia átalakítóként használták. Jelentőségük a mikro-elektromechanikai rendszerben (MEMS-ekben) nőtt meg ismét, ahol általános szabályként kimondható, hogy a tekercseket kondenzátorokkal váltják ki. Azért lép a kondenzátor a tekercs helyébe, mert az elektrosztatikus motor olyan típusú villanymotor, amely az elektromos töltések vonzása és taszítása alapján működik. Fontos különbség a két motor típus között, hogy az elektromágneses motorok esetén a motor teljesítménye kb. egyenes arányban változik a térfogattal, addig a térfogat egységre jutó teljesítmény a méret csökkenésével jelentősen megnőhet az elektrosztatikus motornál. Ennek oka, hogy a légrésben elérhető maximális mágneses indukció a motort alkotó ferromágneses anyag telítődésétől függ. Az elektrosztatikus motorokban a maximális térerőséget a levegő átütési szilárdsága korlátozza, ugyanakkor ismert, hogy a levegő átütési szilárdsága azonos fizikai jellemzők (hőmérséklet, nyomás páratartalom) mellett a Paschen törvény szerint a kis elektróda távolságoknál megnő. Ezért sok apró elektrosztatikus motor integrálása érdekes távlatokat nyithat. A robotikában sokszor hangoztatott probléma, hogy ha összehasonlítjuk az ember izomzatának és a teljes test tömegének arányát a robotok mozgást végző motorjainak és teljes tömegének arányával, akkor azt tapasztaljuk, hogy a robotok esetén relatívan túl nehéz a mozgató mechanizmus. Megoldás lehet a jelenlegi motorok ferromágneses anyagának kiváltása. Egy irányzatként megjelentek az ún. vasmag nélküli motorok, de ezen a téren az ún. nagyteljesítményű-elektrosztatikus motorok alternatívát jelenthetnek. A jegyzet írásának időpontjában az elektrosztatikus motorok még kísérleti stádiumban vannak, ennek ellenére bíztató eredményként a piacon megjelent egy 100 W-os elektrosztatikus motor, amelynek a tömege kb. egy nagyságrenddel kisebb, mint egy hasonló elektromágneses motor tömege.

A villamos motorok legfiatalabb nemzedékébe sorolhatók a piezo-, más néven ultraszonikus motorok. Napjainkban szinte egyeduralkodóvá váltak a fényképezőgépek optikáinak mozgatásában. Előnyük a gyorsabb, halkabb fókuszálás. Egy kis zavart az okozhat, hogy védjegyoltalmi okokból a különböző gyártók különböző elnevezések használatára kényszerültek. Néhány védjegy és a gyártó:

  • USM (UltraSonic Motor) (Canon),

  • SWM (Silent Wave Motor) (Nikon),

  • HSM (HyperSonic Motor) (Sigma),

  • SSM (SuperSonic Motor) (Sony),

  • SDM (Supersonic Drive Motor) (Pentax),

  • SWD (Supersonic Wave Drive) (Olympus),

  • XSM (Extra Silent Motor), (Panasonic),

  • USD (Ultrasonic Silent Drive) (Tamron).

A fotóiparon kívül a leggyakrabban használt elnevezés az USM. A mikro- és nanotechnológiában is kiemelt szerepük van a piezoaktuátoroknak. Piezo motorokat célszerű alkalmazni olyan helyeken, ahol egyéb okok miatt nem lehet ferromágneses anyagokat használni pl. MRI berendezéseknél előfordulhat 9T nagyságú mágneses indukció, a ferromágneses anyagokban 2T is problémát okoz. De szupravezetők környezetében sem célszerű elektromágneses motorokat alkalmazni. A későbbiekben röviden bemutatjuk a piezo- és az elektrosztatikus motorokat is, de a jegyzetben elsősorban az elektromágneses kölcsönhatású motorok szabályozott hajtásait tárgyaljuk.

2.1. Elektromágneses motorok

A forgómozgású motorok egy csőszerű részből és egy hengerszerű részből állnak. A forgó mozgást csapágyazás teszi lehetővé. Általában a csőszerű rész a külső környezethez rögzített állórész, amelyben a hengerszerű rész forog, de a szerepek felcserélődhetnek, tipikusan a kerékagy motorok és a ventillátorok esetén, de ide tartoznak az ún. vasmag nélküli motorok is (ld. 2-3. ábra).

Klasszikus és kifordított álló- és forgórész konstrukciók
Klasszikus és kifordított álló- és forgórész konstrukciók
2.3. ábra - Klasszikus és kifordított álló- és forgórész konstrukciók


A villamos gépek törvényei:

  1. törvény: Az elektromágneses villamos gépek működése két egymáshoz képest relatív nyugalomban lévő villamos vagy mágneses mező kölcsönhatásán alapul.

  2. törvény: Az elektromágneses villamos gépek működése reverzibilis, azaz az energiaáramlás iránya megfordítható.

  3. törvény: Az elektromágneses villamos gépek hatásfoka elméletben tetszőlegesen megközelítheti a 100%-ot.

Az elektromágneses motorok működése szempontjából a legfontosabb lépés a mágneses tér létrehozása (gerjesztése). Gerjesztés helye lehet:

  • állórész (egy oldalról gerjesztet)

  • forgórész (egy oldalról gerjesztet)

  • mindkettő (két oldalról gerjesztet)

A gerjesztést megvalósíthatjuk

  • tekercs segítségével

  • állandó mágnes segítségével

Vagy az állórészhez képest, vagy a forgórészhez képest a gerjesztést változtatni kell, és ezt csak külső áramforráshoz kapcsolt tekercs segítségével lehet csak megvalósítani, ezért az egyik gerjesztés mindig tekercs segítségével valósul meg, a másik gerjesztést létrehozhatja akár egy tekercs, akár egy permanens mágnes. Vagyis minden elektromágneses motoron van legalább egy tényleges tekercs, de általános értelemben minden elektromágneses motor modellezhető egy állórész és egy forgórész tekercsrendszerrel, amelyek induktív kölcsönhatásban vannak.

A mágneses indukcióvonalak mindig zárt görbét alkotnak. Az elektromágneses motoroknak a mágneses tér szempontjából alapvetően két különböző típusát különböztethetjük meg (ld.2-4. ábra).

Elektromágneses motorok fluxusának útja
2.4. ábra - Elektromágneses motorok fluxusának útja


Egy menetű gerjesztő tekercs esetén a következő egyenletet írhatjuk fel

(2.1)

ahol a gerjesztő áram, a mágneses térerősség és a mágneses fluxus útját kijelölő zárt görbe.

Ismert, hogy a mágneses tér leírására két különböző fizikai mennyiséget használunk. Az egyik a mágneses indukció, amely a teljes mágneses teret írja le. A másik a mágneses térerősség, amely csak az ún. külső áramok hatását veszi figyelembe. A kettő közötti összefüggés

(2.2)

ahol a vákuum mágneses permeabilitása és a relatív permeabilitás. Az előbbi a mágneses tér két különböző megközelítése között teremt kapcsolatot, az utóbbi az anyag hatását veszi figyelembe. Az anyagban található párosítatlan elektronoknak (az adott elektronpályákon csak egy-egy elektron kering, részletek a kvantum fizika tárgykörébe tartozik) van egy állandó mágneses momentuma, amely erősítheti a külső mágneses tér hatását. Ezt egyszerűen az elektron mozgásából adódó elemi körárammal modellezhetjük. Értelmezhetjük úgy, hogy az anyagon belül kialakult elemi köráramok is elemi mágneses teret hoznak létre. Kvantumfizikai okai vannak, hogy a szomszédos elemi mágneses terek igyekeznek egymást erősítve párhuzamosan beállni (Curie pontnál jóval alacsonyabb hőmérsékleten). Az anyagon belül kialakulnak ún. domének, ahol az elemi mágneses momentumok teljesen párhuzamosak, ugyanakkor külső mágneses tér híján az egyes domének mágneses orientációja véletlenszerű, így az egyes domének egymás hatását lerontják (a mágneses erővonalak az anyagon belül záródhatnak) és kívülről csak csekély mágneses tér mérhető.

Az elektronok perdületéből eredő áram mágneses momentumainak iránya négy szomszédos doménben
2.5. ábra - Az elektronok perdületéből eredő áram mágneses momentumainak iránya négy szomszédos doménben


Külső mágneses tér hatására először a domének határa tolódik el úgy, hogy erősítse a külső mágneses teret. A faleltolódásnak van egy közel lineáris tartománya, amikor külső mágneses térrel közel arányosan változik a teljes mágneses tér, ekkor érvényes majd a domének befordulnak a külső mágneses tér irányába. Ha minden domén befordult, akkor az anyag már nem tudja tovább erősíteni a külső mágneses teret, ezt nevezzük teljes telítődésnek. A nyomaték képzés szempontjából a mágneses indukció a meghatározó. Az a cél, hogy a lehető legkisebb gerjesztéssel a lehető legnagyobb mágneses indukciót hozzuk létre és ez az oka, hogy az elektromágneses motorokat ferromágneses anyagból készítjük. Ferromágneses anyagok esetén a telítődés mentes állapotban , ez azt jelenti, hogy ugyanazt a mágneses indukciót akár több nagyságrenddel kisebb gerjesztő árammal tudjuk létrehozni és a szórt fluxust is jelentősen le lehet csökkenteni, ha a mágneses körben ferromágneses anyagot alkalmazunk és a gépet úgy tervezzük, hogy a telítődés még ne következzen be. Természetesen konstrukciós okokból az álló- és forgórész között szükségszerűen van légrés, de a mágneses kör szempontjából az a cél, hogy a légrés legyen olyan kicsi, amennyire technológiailag megoldható. Mint később látni fogjuk a légrés indukció térbeli eloszlása is fontos konstrukciós szempont lehet, és ezért vannak olyan motorok, ahol a légrés nagysága nem állandó, de azokra a motorokra is igaz, hogy a minimális légrés legyen a lehető legkisebb.

2.1.1. Elektromágneses motorok nyomatéka

Az egységes gépelmélet háromféle állandósult (nem nulla középértékű) nyomatéktípust különböztet meg (ld. 2-6. ábra)

Nyomatéktípusok
2.6. ábra - Nyomatéktípusok


Az első két nyomaték típust (az elektromágnesek behúzó erejéhez hasonlóan) az ún. virtuális munka elvét felhasználva számíthatjuk. A virtuális munka elve szerint a motor egy végtelenül kicsi elfordulása változatlan gerjesztés mellett megváltoztatja a motor mágneses terében tárolt energiát. Azt feltételezzük, hogy a mágneses tér a villamos áramkörből nem vesz fel és oda nem ad le energiát. Az energia megmaradás elve szerint a mágneses tér energiájának változása egyenlő az elforduláshoz tartozó mechanika energia megváltozásával állandó forgórész fordulatszámot feltételezve.

(2.3)

Tekercsek esetén a mágneses tér energiáját legegyszerűbben a tekercsekben, mint induktivitásában tárolt energiából tudjuk kiszámítani. tekercs esetén a tekercsekben tárolt energia

(2.4)

ahol esetén az önindukciós lényező, esetén a kölcsönös induktivitás. Szimmetria okokból.

(2.5)

Ha egy adott pillanatban az időt megállítjuk, akkor az áramokat állandónak kell tekinteni, és ezért az induktivitáson eső indukált feszültség nulla, vagyis a mágneses tér a villamos áramkörből tényleg nem vesz fel és oda nem ad le energiát. A mágneses tér energiájának változása kizárólag induktivitás megváltozásától származik. Az induktivitás a forgórész helyzetének megváltozása miatt változik. A befagyasztott áramok értékét jelölje és , így nyomaték a befagyasztott időpillanatban

(2.6)

Természetesen, ha sorra minden időpillanatot egymás után befagyasztunk, akkor felírhatjuk a következőt is

(2.7)

2.1.1.1. Egyfázisú motorok hengeres nyomatéka

A frekvencia feltétel az induktív kapcsolódású, hengeres belső részű (állandó légrésű) és mindkét oldalon tekerccsel modellezett motorokra vonatkozik, ezért ennek megfelelő nyomatékot szokás hengeres nyomatéknak nevezni.

Feltételezések:

  • mindkét oldalon egyfázisú tekercs van;

  • egyik oldalon sem alakulnak ki örvényáramok és a vasmag mágnesezési görbéjének nincs hiszterézise;

  • minden tekercs által gerjesztett légrés indukció térbeli eloszlása szinuszos;

  • a mágneses térre érvényes a szuperpozíció elve (ferromágneses anyag mágnesezettsége lineáris és nem telítődött);

  • minden tekercs áramának időbeni lefolyása szinuszos (határesetként ideértve az egyenáramot és a permanens mágneses gerjesztést is);

  • mindkét oldalt tápláló áram azonos fázisban van;

  • a tekercsek szimmetrikus elhelyezkedésűek (a kölcsönös induktivitás a forgórész szöghelyzetével szinuszosan változik, és a periódusa megegyezik egy körülfordulással).

Ismeretes, hogy és állórész és forgórész önindukciós valamint kölcsönös induktivitásban tárolt pillanatnyi energia lineáris esetben, ha az állórész és forgórész áram és és a forgórész aktuális szöghelyzete

(2.8)

(2.8) kifejezésből csak a harmadik tag függ a forgórész aktuális szöghelyzetétől, amely konstans fordulatszámot feltételezve a következő módon számítható

(2.9)

ahol a terhelési szög (a terheléstől függő kezdeti szöghelyzet). (2.3) és (2.8) alapján, a szinuszos áramokat és (2.9) behelyettesítésével

ahol az állórész áram amplitúdója, a forgórész áram amplitúdója, az állórész és forgórész kölcsönös induktivitásának maximális értéke ( szöghelyzetben), az állórész mező szögsebessége az állórészhez képest, a forgórész mező szögsebessége az forgórészhez képest, a forgórész szögsebessége az állórészhez képest. Általános esetben (2.10) lüktető (nulla középértékű) nyomatékot eredményez. Ez szoros összefüggésben van azzal, hogy az egyfázisú tekercs csak lüktető mágneses teret tud gerjeszteni. A frekvencia feltétel arra vonatkozik, hogy (2.10) kifejezésnek milyen esetben van nullától különböző középértéke. Az első feltétel, hogy a terhelési szög szinusza ne legyen nulla.

További feltételek, amelyek egyidejűleg nem teljesíthetők (ezért az egyfázisú motornak mindig van lüktető nyomatéka)

2.1.1.2. Többfázisú motorok hengeres nyomatéka

Többfázisú motorok esetén az állórész és forgórész tekercseket mindkét oldalon két-két tekerccsel modellezve,

Feltételezések:

  • egyik oldalon sem alakulnak ki örvényáramok és a vasmag mágnesezési görbéjének nincs hiszterézise;

  • mindkét oldalon a két tekercs térben egymásra merőleges elhelyezkedésű;

  • a két-két tekercs geometriailag telesen szimmetrikus, (a kölcsönös induktivitások a forgórész szöghelyzetével szinuszosan változik, és a periódusa megegyezik egy körülfordulással);

  • minden tekercs által gerjesztett légrés indukció térbeli eloszlása szinuszos;

  • a mágneses térre érvényes a szuperpozíció elve (ferromágneses anyag mágnesezettsége lineáris és nem telítődött);

  • minden tekercs áramának időbeni lefolyása szinuszos (határesetként ideértve az egyenáramot és a permanens mágneses gerjesztést is);

  • mindkét oldalon a táplálás szimmetrikus, az azonos oldali tekercsek áramának amplitúdója egyenlő;

  • az azonos oldali tekercsek árama időben 90 fokkal el vannak tolva egymáshoz képest (az egyik tekercs árama szinuszos, a másiké koszinuszos);

  • minden áramnak a kezdőfázisa nulla (vagy tisztán szinuszos, vagy tisztán koszinuszos).

A kétfázisú tekercsrendszerben tárolt energiának csak a forgórész orientációjától függő komponensét írjuk fel, mivel a többi tag a parciális deriváláskor úgy is kiesik. Mindkét oldalon a két tekercset és a hozzájuk tartozó áramokat és indexszel különböztetjük meg.

(2.3) és (2.16) alapján

A táplálásra tett feltételek és (2.9) alapján

A szinuszosságot és a tekercsek szimmetriáját kihasználva (2.18) összefüggésből a nyomaték egyszerűbb alakra hozható, mint az előző esetben. Ez szoros összefüggésben van azzal, hogy a szimmetrikusan, de időben (fázisban) eltolva táplált kétfázisú tekercs forgó mágneses mezőt tud gerjeszteni.

(2.19)

A frekvencia feltétel az egyfázisú eset egyike.

Ha a (2.20) frekvencia feltétel teljesül, akkor nyomaték konstans (nincs lüktető nyomaték):

(2.20) frekvencia feltételt kielégítő néhány eset.

Egyenárammal táplált egyenáramú motor

    

Kényszer feltétel

Kiadódó feltétel

  

(2.22)

 

Ez azt fejezi ki, hogy a kommutátor miatt a kívülről állónak látszó forgórész áram, a forgórészhez képest a forgórész forgásirányával ellentétes irányban, de azzal azonos nagyságú szögsebességgel forog.

Váltakozó árammal táplált egyenáramú motor (legyen a váltakozó áram körfrekvenciája)

    

Kényszer feltétel

Kiadódó feltétel

  

(2.23)

 

Látható, hogy nincs elvi akadálya, hogy egy egyenáramú motort váltakozó árammal tápláljunk. Ez az elméleti alapja az univerzális motornak.

Forgórészén egyenárammal/permanens mágnessel gerjesztett motor (szinkronmotor)

    

Kényszer feltétel

Kiadódó feltétel

  

(2.24)

 

Egy ilyen gépnek csak akkor van állandósult nyomatéka, ha az állórészt tápláló váltakozó áram körfrekvenciája, pontosabban az állórész tekercse által gerjesztett forgó mágneses mező fordulatszáma megegyezik a forgórész fordulatszámával, ezt a fordulatszámot nevezik szinkronfordulatszámnak. A forgó mágneses tér tengelye és a forgórész tengely az terhelési szöget zárja be. Ebből az is következik, hogy a szinkrongépeknek nincs indító nyomatéka, ha közvetlenül a szinuszos feszültségű hálózatra kapcsoljuk. Ezzel szemben, ha a szinkronfordulatszámot elektronika segítségével folyamatosan változtatjuk, akkor az üzemi tartományon belül tetszőleges fordulatszámot meg tudunk valósítani. Ennek az a feltétele, hogy ismerjük a forgórész pozícióját (pillanatnyi fordulatszámát). Ez az elméleti háttere a kefenélküli motorok működésének.

Aszinkron (indukciós) motor

    

Kényszer feltétel

Kiadódó feltétel

  

ha

(mindig teljesül)

(2.25)

 

Az aszinkronmotor forgórészén általában nincs külső táplálás (kivételt képez a kettős táplálású aszinkronmotor), így alaphelyzetben a forgórészen indukált feszültség körfrekvenciája megegyezik a szinkronfordulatszám és a forgórész fordulatszám különbségével (határesetben a szinkron fordulatszámon az indukált feszültség amplitúdója nulla). Az előző esetekben, vagy egyenáramú gerjesztés volt az egyik oldalon, vagy garantáltan mindkét oldalt azonos frekvenciájú és azonos fázisú árammal tápláltuk (váltakozó árammal táplált egyenáramú motor), ezért az utolsó feltételnek nem volt jelentősége. Az indukciós motor esetén az utolsó feltétel csak akkor teljesülne, ha a forgórész tekercs tisztán ohmos lenne, ez valóságos motor esetén soha sem teljesül. Részletes levezetés nélkül belátható, hogy tisztán induktív forgórész tekercs esetén (a forgórész áramok 90 fokos elforgatásával a (2.18) képletben) nulla középértékű nyomatékot kapnánk. Ebből az következik, ha valakinek olyan ötlete támadna, hogy az aszinkronmotor forgórész tekercsét szupravezetőből készítené, akkor azt tapasztalná, hogy az aszinkronmotornak nem lenne nyomatéka. Más megközelítésben, az aszinkronmotor esetén az egyszerűsített (2.19) alakú nyomatékegyenletben meg kell jelennie a forgórész tekercs impedanciájának fázisszögének is egy koszinuszos alakban, amelynek a maximuma a nulla fázisszögnél (ohmos forgórész tekercs impedanciánál van.) Az aszinkronmotor fordulatszám nyomaték görbéje is értelmezhető. Szinkron fordulatszámon a motornak nincs nyomatéka, mert a forgórész áram nulla. Ahogy növeljük a szlipet, úgy növekszik a forgórész oldali indukált feszültség és annak hatására kialakuló áram amplitúdója. A forgórész tekercs ohmos ellenállása független a szliptől (ha a szkin jelenséget elhanyagoljuk), ezzel szemben, a tekercs induktív reaktanciája szlip értékével növekszik, ezzel rontja forgórész áram fázisszögét a maximálisan elérhető nyomaték szempontjából. Van két ellentétes hatás, amelyik a szlip növelésével érvényesül, az egyik növeli a másik csökkenti a nyomatékot. Ilyen esetekben mindig van egy optimum, egy maximális nyomaték, amelyet billenő nyomatéknak hívnak. A mélyhornyú és kettős kalickás gépeket szándékosan úgy tervezik, hogy indításkor a szkin jelenség javítson a forgórész áram fázishelyzetén, így kisebb áramfelvétel mellett nagyobb nyomaték érhető el (ahogy ezt az aszinkron motorok üzemtanában már korábban tanulták).

Megjegyzések

  • (2.20) nem ad megkötést az áramok nagyságára, de ne feledjük, hogy az összes levezetésnél feltételül szabtuk a lineáris mágneses viselkedést, a túlzottan nagy gerjesztések telítődésbe vihetik a mágneses anyagot.

  • A legtöbb gyakorlati alkalmazásban feszültséggenerátoros a táplálásunk, ezért a levezetések megközelítésével szemben, nem az ismert áramértékből határozható meg az aktuális nyomaték, hanem az aktuális terhelőnyomaték határozza meg az aktuálisan felvett áramot.

2.1.1.3. Reluktancia nyomaték

Ha a légrés nagysága nem állandó (jellemzően a forgórészen kiálló pólusok találhatók), akkor a másik oldalon (jellemzően az állórészen) az önindukciós tényező is a forgórész szöghelyzetétől függ. Bár a reluktancia és hengeres nyomaték általában együttesen jelentkezik, itt azt az esetet vizsgáljuk, amikor az állórészt tápláljuk, a forgórész kiálló pólusú és gerjesztetlen. Ez utóbbi azt jelenti, hogy a forgórészen nem alakulnak ki örvényáramok, mert azokat forgórész gerjesztésnek kell tekinteni, és az aszinkron motorokhoz hasonló üzemmódhoz vezet. Lágyvasmagos forgórész esetén a polaritásnak nincs jelentősége, ezért a forgórész egy körülfordulása alatt az induktivitás két periódusnyit változik

Feltételezések:

  • csak az állórész oldalon van egy egyfázisú tekercs;

  • egyik oldalon sem alakulnak ki örvényáramok és a vasmag mágnesezési görbéjének nincs hiszterézise;

  • a mágneses térre érvényes a szuperpozíció elve (ferromágneses anyag mágnesezettsége lineáris és nem telítődött);

  • a kiálló pólus és az állórész oldali tekercs szimmetrikus elhelyezkedésű (az önindukciós tényező a forgórész szöghelyzetével szinuszosan változik, és a periódusa kétszerese az egy körülfordulásnak);

  • az állórész tekercs áramának időbeni lefolyása szinuszos.

Az egyfázisú esetet vizsgáljuk meg, az állórész tekercsben tárolt mágneses energia pillanatnyi értéke:

ahol az állórész önindukciós tényezőjének a pozíciótól független és pozíciófüggő része. (2.26) kifejezésből csak a második tag függ a forgórész aktuális szöghelyzetétől, amely konstans fordulatszámot feltételezve továbbra is (2.9) kifejezéssel írható le az időben. (2.3) és (2.26) alapján, a szinuszos áramokat és (2.9) behelyettesítésével

Trigonometriai átalakításokkal

Konstans nyomaték összetevőt az első tag alapján akkor kapunk, ha

Ez azt jelenti, hogy a reluktancia motornak van indító-, illetve tartónyomatéka. A második és harmadik tag alapján

vagyis mozgásban lévő reluktancia motornál a frekvencia feltétel csak a szinkronfordulatszámon elégíthető ki, de nincs kitüntetett forgásirány (ugyanolyan táplálás mellett a motor mindkét irányban foroghat). A terhelési szög kap egy kettes szorzót, vagyis a maximális nyomaték esetén jelentkezik, mindezek a megállapítások teljesen összhangban vannak a motorról alkotott fizikai elképzeléseinkkel.

Megjegyzések

  • Az egyfázisú hengeres nyomatékhoz hasonlóan az egyfázisú reluktancia motornak mindig van lüktető nyomaték összetevője, de a többfázisú hengeres nyomatékhoz hasonlóan a lüktető reluktancia nyomaték összetevő is kiküszöbölhető a többfázisú reluktancia motorokban.

  • A többfázisú reluktancia motorokban van kitüntetett forgásirány.

  • A váltakozó áramú motorokat általában szinuszos feszültséggel tápláljuk és ekkor a Faraday-féle indukciós törvény értelmében a motor fluxusa (beleértve a reluktancia motort is) szinuszos időbeni lefolyású, de ekkor a változó önindukciós tényező miatt a tekercs árama nem lehet időben szinuszos.

  • Valóságos reluktancia motorok esetén, a forgórészen kialakuló örvényáramok miatt valamilyen mértékű hengeres nyomaték kialakul, de bizonyos esetekben, a forgórészt szándékoltan gerjesztik, ekkor a hengeres és reluktancia nyomatékot összegezni kell.

2.1.1.4. Hiszterézis nyomaték

Elsősorban törpe és kis gépekben alkalmazzák. Ez egyrészről a (2.24) frekvencia feltételnek megfelelő permanens mágnessel gerjesztett forgórészű szinkron motor, amelynél aszinkron üzemmódban megengedjük a forgórész átmágneseződését. A motor örvényáramait továbbra is elhanyagoljuk, de az átmágnesezésből adódó hiszterézis veszteséggel számolnunk kell, ezért (2.3) közvetlenül nem alkalmazható.

Tegyük fel, hogy egy többfázisú tekerccsel egy forgó mágneses mezőt hozunk létre, és a motort lefogjuk. Jelölje az átmágnesezéshez szükséges energiát. A mágneses tér egyszeri körbeforgatásához szükséges mechanikai energia legyen . az energia megmaradás alapján

Ha állandó nyomatékot feltételezünk, akkor

Ha a motor forgását megengedjük, akkor egy hiszterézis hurokhoz tartozó elfordulás nem és az energia mérlegben is figyelembe kell venni a motor mozgási energiáját.

Energia helyett teljesítményekkel számolva, és figyelembe véve hogy az állórész oldali veszteségeket elhanyagoltuk, a hálózatból felvett teljesítmény megegyezik a légrés teljesítménnyel

(2.34) alakra is megegyezik az aszinkronmotorok légrés teljesítmény kifejezésével, azzal a különbséggel, hogy a tekercsveszteségi teljesítmény szerepét a hiszterézis veszteségi teljesítmény vette át, és itt is kifejezhetjük a mechanikai és hiszterézis veszteségi teljesítményt a szlippel és a légrés teljesítménnyel:

A tekercsveszteségi teljesítménnyel szemben a hiszterézisveszteségi teljesítmény független a terheléstől, és kizárólag az állórész és forgórész relatív sebességétől, vagyis a szliptől függ. Ebből következik, hogy a légrés teljesítmény állandó, de abból az is következik, hogy a hiszterézis motor nyomatéka állandó az aszinkron üzemmódban.

(2.37) alapján a tisztán hiszterézises motor aszinkron üzemmódban állandó nyomatékot leadva pörög fel a szinkronfordulatszámra, majd a szinkronfordulatszámon maradva a terhelés nagyságától függően kialakult terhelési szög mellett szinkronmotorként forog tovább. Valóságos esetben az aszinkron üzemmódban örvényáramok is kialakulnak a forgórészen, amely (2.25) frekvencia feltételnek megfelelő hengeres nyomatékkomponenst is létrehoz.

2.1.1.5. Elektronikus táplálás hatása a nyomatékra

Az előző pontokban a levezetés fontos feltétele volt a térbeli és időbeni szinuszosság. Az előbbiről a konstrukcióval lehet gondoskodni, arra a táplálásnak nincs hatása, az utóbbi viszont csak a táplálástól függ. az elektronikusan táplált motorok esetén számítanunk kell a gerjesztésben felharmonikusokra és abból eredő lüktető nyomatékra, továbbá a szinuszos tápláláshoz képest megnövekedett veszteségekre. Szélsőséges esetben az elektronikával táplált aszinkronmotor névleges fordulatszám és terhelés mellett is túlterhelődhet (túlmelegedhet). A fentiekből az is következik, ha egy indukciós motort közvetlenül a hálózatról táplálunk, és a motor közelében teljesítményelektronikai berendezést működtetünk, amely nem szinuszos áramot vesz fel a hálózatból, és ezért torzítja a hálózati feszültséget, akkor ugyanúgy számolnunk kell felharmonikusok által okozott lüktetőnyomatékra és megnövekedett veszteségre. A teljesítményelektronikai berendezések mellé célszerű különböző típusú szűrőt alkalmazni, hogy megelőzzük az ún. EMC (Electric Magnetic Compatibility) problémákat. Az elektronika segítségével fokozatosan változtatni tudjuk a szinkronfordulatszámot mind a szinkron, mind az aszinkron motorok esetén.

2.1.2. Mezőorientált megközelítési mód

A mágneses térbe helyezett árammal átjárt vezetőre erő hat.

ahol a felülvonás térbeni vektorra utal, az erő, a mágneses indukció, az árammal átjárt vezető hossza és térbeli iránya a nyomatékképző áram nagysága.

A keresztszorzat akkor a legnagyobb, ha a mágneses indukció és az áram pályája egymásra merőleges. Ez a konstrukcióval úgy érhető el, hogy vagy a mágneses tér radiális és a menet axiális irányú, vagy fordítva.

(2.38) alapján a mágneses tér nagysága a légrésben kritikus, vagyis ott kell a maximális indukciót elérni, ahol az árammal átjárt vezető található.

Cél:

  • A mágneses indukció értékét a gerjesztéssel állítsuk be a vasmag szempontjából optimális értékre (a lehető legnagyobbra, de biztonsággal a telítődésnél kisebbre);

  • fluxus gyengítés esetén is a gerjesztéssel tartsuk kézben a mágneses indukció értékét;

  • A nyomatékot pusztán segítségével tartsuk kézben.

A fenti elvet legegyszerűbben a külsőgerjesztésű egyenáramú motornál tudjuk megvalósítani, ezért ezeket a motorokat használták a klasszikus szervohajtásokban. Napjainkban ez az elv az indukciós motoroknál is megvalósítható.

Lépések

  • mérjük a motor feszültségét, áramát és fordulatszámát (az utóbbit néha becsüljük, a sensorless hajtások esetén);

  • a mérési eredményekből, a motor differenciálegyenletét megoldva kiszámítjuk a fluxusokat;

  • az áramokat transzformáljuk a szinkronforgó koordinátarendszerbe, ahol megkeressük a szinkronforgó koordinátarendszernek azt az orientációját, ahol és egyszerűen szétválasztható;

  • tervezünk egy-egy szabályozót és kézbentartására a szinkronforgó koordinátarendszerben;

  • a szabályozók beavatkozó jelét visszatranszformáljuk az állórész koordinátarendszerébe;

  • PWM segítségével rákapcsoljuk az állórészre a szükséges beavatkozó jelet.

(Megjegyzés: PWM üzemmód /Pulse Width Modulation: impulzus szélesség moduláció/: állandó periódusidejű (és frekvenciájú) jelek, ahol az átlagfeszültség beállítása a jel kitöltési tényezőjének változtatásával történik.)

2.1.3. Elektromágneses motorok típusai

A legnagyobb választék az elektromágneses, forgómozgású, radiális fluxusú motorok körében található. A későbbiekben ezeket részletesen is bemutatjuk. Itt most egy áttekintő képet szeretnénk adni a legfontosabb motornevek táblázatba foglalásával (ld. 2-7. ábra).

Leggyakrabban előforduló motor elnevezések
2.7. ábra - Leggyakrabban előforduló motor elnevezések


Az egyenáramú és a váltakozó áramú motorok alkotják a két legáltalánosabb motortípust. Az előbbieknek a forgórészét egyenfeszültséggel, az utóbbiaknak az állórészét szinuszos feszültséggel tápláljuk. A szinuszos feszültség lehet egyfázisú, de szabályozott váltakozó áramú hajtásokban szinte kizárólag háromfázisú motorokat találunk. A motorok besorolása szempontjából fontos tulajdonság, hogy az egyenáramú motorokban a légrés mező trapéz alakú, a váltakozó áramú motorokban szinuszos.

Az egyenáramú motorokat a gerjesztésük módja alapján lehet további csoportokba sorolni. A soros gerjesztésű motor esetén a forgórész és a mezőt létrehozó gerjesztő tekercs sorba van kapcsolva, a párhuzamos gerjesztésűnél párhuzamosan. A gerjesztő tekercs táplálása lehet teljesen független forgórész tekercs táplálásától (ezt nevezzük külső gerjesztésű egyenáramú motornak), illetve a gerjesztő tekercset helyettesítheti egy permanens mágnes is. Külön meg kell említeni a vasmagnélküli motorokat (ezeknek egyaránt van radiális és axiális típusa). Végül, léteznek olyan egyenáramú motorok is, amelyeknek két gerjesztőtekercse is van és az egyik sorosan, a másik párhuzamosan van kapcsolva, ezeket nevezik vegyes gerjesztésű vagy kompound motoroknak. Külön meg kell említeni az ún. vasmagnélküli motorokat, ahol ez a kifejezés csak a forgórészre értendő, a hosszabb, de pontosabb elnevezés: vasmagmentes forgórészű motorok. A forgórész csak egy epoxy alapú ragasztóval tartják egyben, ezért a forgórészen nem keletkeznek örvényáramok, ez előnyös a hatásfok szempontjából. Az egyik legnagyobb előnyük a gyorsaság, amely annak köszönhető, hogy a forgórész tekercsnek kicsi a tehetetlenségi nyomatéka. A motor mechanikai időállandója akár a milliszekundumos nagyságrendbe is eshet, de jellemzően csak a 100W alatti teljesítmény kategóriában találunk ilyen motorokat. Konstrukciós szempontból fontos megjegyezni, hogy a vasmag nélküli motorok készülhetnek mind radiáli és axiális fluxusú kivitelben, az előbbi esetben forgórész hengeres alakú az állórész körül.

A klasszikus váltakozó áramú motorok egyik legfontosabb jellemzője, hogy a légrésükben szinuszos térbeli eloszlású mágneses tér alakul ki, amely az időben is szinuszosan változik az állórészre kapcsolt időben szinuszos feszültség miatt. Ha egy tekercset táplálunk, akkor lüktető mágneses mező alakul ki. Fontos tulajdonság a fázisszám. Ha azt akarjuk, hogy a mágneses mezőnek legyen forgó komponense, akkor legalább két fázisra van szükség, amely a kerület mentén térben eltolt tekercset időben (fázisban) eltolt feszültséggel táplál. Több szempontból az optimumot a három fázis jelenti. A nem ipari fogyasztók (pl. lakások, irodák) egyfázisú táplálást kapnak, ezért szükség van egyfázisú váltakozó áramú motorokra is (pl. régebbi típusú mosógépekben, porszívókban, kézi szerszámokban), bár ezek jelentősége fokozatosan csökken, mert a legtöbb motort elektronikusan táplálunk (a korszerű háztartási gépben is), és az elektronika segítségével elő tudunk állítani tetszőleges számú fázist.

A háromfázisú motorok esetén a térben és időben eltolt táplálás miatt egy forgó mágneses tér alakul ki, és attól függően, hogy a forgórész együtt forog-e a mágneses térrel, vagy attól motoros üzemmódban lemarad-e beszélhetünk szinkron és aszinkron motorokról. A klasszikus (háromfázisú szinuszos feszültséggel táplált) szinkron motoroknál szükség van egy aszinkron üzemmódra, amely segítségével fel tudjuk pörgetni a motort a szinkronfordulatszámra. Az aszinkron motorok másik gyakori elnevezése az indukciós motor. Az aszinkron motorok forgórésze tartalmazhat tényleges tekercset, amelynek kivezetései csúszógyűrűkben végződik. Ezeket a motorokat ezért csúszógyűrűs motoroknak nevezik. A forgórész tekercs szerepét betöltheti egy rövidrezárt kalicka, ezeket a motorokat nevezik rövidrezárt forgórészű vagy kalickás motoroknak. A forgó mágneses mező és a forgórész szinkron forgását azzal érhetjük el, hogy a forgórészre egy elektro- vagy permanens mágnest helyezünk. A szinkron motorok további fajtája a hiszterézises és reluktancia motor. Főleg kézi szerszámgépekben találhatunk ún. univerzális motorokat, amelyek egyaránt működtethetők egyenárammal és váltakozó árammal. A soros gerjesztésű kommutátoros motor elvileg működtethető váltakozó árammal is, az univerzális motorok abban különböznek azoktól, hogy az állórészt lemezelt kivitelben készítik a vasveszteség csökkentése érdekében.

E jegyzetben nem kívánunk részletesen foglalkozni az egyfázisú motorokkal (szervohajásokban jellemzően nem alkalmazzák azokat). Hogy a motorok osztályozása teljes legyen a 2-8. ábraán összefoglaltuk a legfontosabb egyfázisú motorokat. Egyfázisú tekercseléssel nem lehet forgó mágneses mezőt létrehozni, csak lüktetőt. A lüktető mezőbe helyezett rövidrezárt álló (nem forgó) menetben nem ébred nyomaték, vagyis a tisztán egyfázisú motornak nincs indítónyomatéka. Ezzel szemben, ha már forog a menet a lüktető mezőben, akkor kialakul a nyomaték (ld. (2.10)). Az egyfázisú motornak az indítása kritikus. Ehhez használhatunk részben árnyékolt pólust, illetve segédfázist, vagyis egy térben eltolt tekercset, melyet egy kondenzátoron keresztül táplálunk azért, hogy a kondenzátor gondoskodjon a fázis(időbeni) eltolásról a. Az indító kondenzátor csak az indítás közben van bekapcsolva és kikapcsoljuk, ha a motor már felpörgött, az üzemi kondenzátor mindvégig bekapcsolva marad, valamint használhatunk együttesen indító és üzemi kondenzátort. Az univerzális motor is az egyfázisú motorok közé sorolható.

Egyfázisú aszinkron motorok
2.8. ábra - Egyfázisú aszinkron motorok


A szabályozott hajtások nélkülözhetetlen eleme a motort tápláló elektronika, de a klasszikus egyenáramú és a váltakozó áramú motorok elektronika nélkül is működőképesek. Ugyanakkor vannak oly motorok, amelyek elektronika nélkül üzemszerűen egyáltalán nem tudnak működni. Leginkább szinkron üzeműeknek tekinthetők (ezt nyilakkal érzékeltetjük a 2-7. ábran), de ezekből a motorokból hiányzik a klasszikus szinkron motorokra jellemző aszinkron üzemmód, helyette az elektronika segítségével a forgórész forgásához igazodva a szinkron fordulatszám folyamatos változtatásával gyorsíthatók, lassíthatók. Ebből az is következik, hogy az aszinkron tekercsek helyett a forgórészt pozícióérzékelővel kell ellátni. Napjainkban divatosak az ún. érzékelő nélküli hajtások, ahol a forgórész orientációjára, illetve szögsebességére matematikai számításokból következtetünk. Az elektronikus működtetésű motoroknak a klasszikus (egyen és váltakozó áramú) besorolása több esetben nem egyértelmű, ezért meghagytuk külön típusként. Ide tartoznak a léptető motorok és a kapcsolt reluktancia motorok, valamint külön kiemelve a kefenélküli motorok, amelyeket a légrés mezőben kialakuló mágneses tér alakja szerint lehet megkülönböztetni. Ha a légrés mező a klasszikus egyenáramú motorokhoz hasonlóan trapéz alakú, akkor kefenélküli egyenáramú (angol nyelven BLDC, brushless DC) motor a szokásos elnevezés. Ha a légrés mező a klasszikus váltakozó áramú motorokhoz hasonlóan szinuszos alakú, akkor kefenélküli váltakozó áramú (angol nyelven BLAC, brushless AC) motor a szokásos elnevezés. Ugyancsak elterjedt elnevezés a PMSM ez az állandó mágneses szinkron motor rövidítése. Ez így önmagában nem utal arra, hogy elektronikus működtetésű motor lenne, de általában csak azokat szokták érteni alatta. A kefe nélküli motorokat ugyancsak szokás elektronikusan kommutált (EC, Electronically Commutated) motoroknak is nevezni.

A 2-7. ábra vertikális struktúrájú, de néhány horizontális összefüggés is kiemelhető. Több motortípusnál a nyomatékképzésben fontos szerepe van annak, hogy a forgórészen található tekercs nélküli (gerjesztetlen) kiálló pólus (a nyomaték tovább növelhető, ha a pólust még gerjesztjük). Ezeket a motorokat reluktancia (mágneses ellenállás) motoroknak nevezzük. Az elnevezés arra utal, hogy a légrés mágneses ellenállása nem állandó. A reluktancia motorokat a 2-9. ábra foglalja össze. A reluktancia motorokat alapvetően szinkron motornak kell tekinteni. A reluktancia szinkron motorokat elektronika nélkül, háromfázisú szinuszos feszültséggel tápláljuk, és a forgórészen vannak olyan menetek, amelyek aszinkron üzemmódban gondoskodnak a motor felpörgetéséről. A kapcsolt reluktancia motor esetén a rotor aktuális pozíciója határozza meg az állórész tekercs kapcsolásait. Ebből következik, hogy valamilyen módón értesülnünk kell a rotor aktuális pozíciójáról. Konstrukció szempontjából a kapcsolt reluktancia motorokat tekinthetjük a legegyszerűbbeknek, a forgó részen nem található semmilyen tekercs. A reluktancia léptető motorok esetén az állórész tekercs gerjesztésének megfelelően áll be egy meghatározott pozícióba a forgórész.

Reluktancia motorok
2.9. ábra - Reluktancia motorok


A permanens mágnes is több motor esetén alapvető alkotóelem (ld. 210. ábra)

Permanens mágneses motorok
2.10. ábra - Permanens mágneses motorok


A 2-7. ábraához képest új elnevezés a léptető motor egy alcsoportja, amelynek a forgórészén permanens mágnes található, valamint a hibrid motorok. Itt a hibrid szó a permanens mágneses és nem permanens mágneses forgórész kombinálását jelenti. Ennek a villamos autókban van fokozott jelentősége, ahol a nagysebességek eléréséhez szükség van az ún. fluxus csökkentéses tartományra. A fluxus csökkentés analógiába hozható az autók nagyobb sebesség fokozatával, ahol a fordulatszám nő, de nyomaték csökken. Kis teljesítményű (10 W körüli) motorokban már nagyon régen alkalmaznak permanens mágnest, de a több kW-os kefenélküli motorok megjelenéséhez szükség volt a ritkaföldfém mágnesek elterjedésére.

2.2. Elektrosztatikus motorok

Az elektrosztatikus motor a Coulomb erőt használják ki, konstrukciója és működési elve hasonlít a külsőgerjesztésű egyenáramú motoréhoz. Az állórészen a mágneses tér helyet két ellentétes töltésű elektródával elektrosztatikus teret hozunk létre és a forgórész elektródáinak polaritását a forgás közben mindig úgy cserélgetjük, hogy azonos irányú nyomaték jöjjön létre. Ahogy az egyenáramú motornál a nagyobb nyomaték elérése érdekében több menetet kell alkalmazni, úgy az elektrosztatikus motorok esetén az elektródák számát kell növelni.

3. fejezet - Villamos hajtások osztályozása

A villamos hajtások osztályozásának nehézségét az okozza, hogy a hajtások általában konkrét motortípusokhoz van dedikálva. Itt néhány alapvető jellemző alapján adunk egy átfogó képet és egyféle útmutatót arra, hogy milyen trendek figyelhetők meg a hajtások területén. Az első csoportosítási szempont, hogy egy elektronikával hány motort (tengelyt) működtetőnk így beszélhetünk egy és több tengelyes hajtásokról. A továbbiakban egytengelyes hajtásokkal foglalkozunk. A villamos hajtások főbb egységei a 3-1. ábran látható. A vastag nyíl az energiaáramlás irányát mutatja. Alkalmazástól függően teherélés esetén számítanunk kell kétirányú energiaáramlásra. Az elektromágneses motorok szintén alkalmasak a kétirányú energiaáramlásra, ezzel szemben a teljesítményelektronikai eszközöknél, főleg a korábbi típusoknál ez nem mindig biztosított.

A villamos hajtások főbb egységei
3.1. ábra - A villamos hajtások főbb egységei


Ismeretes, hogy a teljesítményelektronikában alapvetően négy átalakító típussal találkozunk:

  • Egyenáramról-egyenáramra átalakító (egyenáramú szaggató);

  • Egyenáramról-váltakozó áramra átalakító (inverter);

  • Váltakozó áramról-egyenáramra átalakító (egyenirányító);

  • Váltakozó áramról- váltakozó áramra átalakító (váltakozó áramú szaggató, tirisztoros ciklokonverter és tranzisztoros mátrix-konverter).

3.1. Egyszerű hajtások

A táplálás általában a váltakozó áramú hálózatról történik, ezért elegendő lenne az előző fejezetben említett két átalakító. Erre alacsonyabb minőségű, leginkább tirisztoros (vagy csak néhány tranzisztort tartalmazó) hajtásokban találunk példákat (ld. 3-2. ábra és 3-3. ábra). A 3-2. ábran az egyirányú nyilak azt fejezik ki, hogy a legtöbb esetben (bár nem kizárólagosan) egyirányú az energiaáramlás. A váltakozó áramú motorok esetén a tekercsekben kialakuló meddő (lengő) teljesítmény miatt még motoros üzemmódban is szükség van a kétirányú energiaáramlásra.

Egyszerű egyenáramú hajtás
3.2. ábra - Egyszerű egyenáramú hajtás


Egyszerű váltakozó áramú hajtás
3.3. ábra - Egyszerű váltakozó áramú hajtás


Elsősorban az egyenáramú hajtásoknál fontos osztályozási szempont, hogy a fordulatszám-nyomaték sík melyik síknegyedében (ld. 3-4. ábra) képes a hajtás működtetni az egyenáramú motort.

A négy síknegyed értelmezése
3.4. ábra - A négy síknegyed értelmezése


A táplálás szempontjából a négy negyedet a feszültség és az áram iránya határozza meg. Külsőgerjesztésű egyenáramú motort feltételezve legyen az armatúrafeszültség, az armatúraáram és az armatúratekercs indukált feszültsége. A 3-4. ábra síknegyedeiben a feszültségek és az armatúra áram előjele a 3-5. ábran látható.

A feszültség és áram előjele a négy síknegyedben
3.5. ábra - A feszültség és áram előjele a négy síknegyedben


Motoros üzemmódban a feszültség és az áram iránya megegyezik, a motor teljesítményt vesz fel a hálózatból (a villamos energia mechanikai energiává alakul). Az előre és hátraforgáshoz tartozó motoros üzemmód I. és a III. síknegyedben valósul meg. Ha az áramirány megfordul, akkor minden esetben a motor nyomatéka is előjelet vált, ha a feszültség és áram iránya ellentétes, akkor a villamos hálózat vesz fel teljesítményt (a mechanikai energia villamos energiává alakul), ezt nevezik generátoros üzemmódnak, amely a II. és a IV. síknegyedben valósulhat meg. Fontos megjegyezni, hogy és a II. és a IV. síknegyedbe az egyenáramú motor úgy is beléphet, hogy a feszültség és áramirány azonos (a motoros üzemmód) marad, de kényszerrel a motor forgásirányát megváltoztatjuk. Az egyenáramú motorokon kívül az aszinkronmotor is képes erre az üzemmódra, de a szinkron motoroknál ez az üzemmód nem létezik. A II. és a IV. síknegyedben minden esetben a mechanikai energia villamos energiává alakul, ugyanakkor, ha a feszültség és áram iránya megegyezik, akkor a motor a hálózatból is teljesítményt vesz fel. Vagyis mind a villamos, mind a mechanikai energia hővé alakul, ez a hajtás hatásfokára kedvezőtlen hatású. Részben azért, hogy a motor áramát korlátozzuk, részben azért, hogy a hő a motoron kívül, az ellenálláson termelődjön, a forgórész áramkörébe ellenállásokat kell iktatni (mind az egyenáramú, mind az aszinkronmotor esetén). Ez az üzemmód pl. daru- és liftalkalmazásokban a teher leeresztésekor a múltban volt fontos, amikor nem állt rendelkezésre elérhető áron olyan elektronika, amely a generátoros üzemmódot lehetővé tette tetszőleges fordulatszám mellett. Állandó feszültségről táplált motornál a generátoros üzemmód csak az üresjárási (aszinkronmotor esetén a szinkron) fordulatszám felett valósulhat meg. Elektronika szükséges a tápfeszültség folyamatos változtatásához. Négynegyedes szervohajtásokban a teher leeresztése motortípustól függetlenül csak generátoros üzemmódban valósul meg. A generátoros üzemmódról az elektronika gondoskodik.

A három különböző üzemmód energiaáramlási irányait a 3-6. ábra mutatja

Az energiaáramlási irányok a különböző üzemmódokban
3.6. ábra - Az energiaáramlási irányok a különböző üzemmódokban


A váltakozó áramú szaggatóról táplált aszinkronmotor fordulatszáma csak erősen korlátozott mértékben változtatható, ezeket ebben a jegyzetben nem tárgyaljuk.

3.2. Négynegyedes szervohajtások

Elsőként megemlítjük, hogy igényes váltakozó áramú hajtások esetén is alkalmazhatunk közvetlen váltakozó áramról váltakozó áramra átalakítót (ld. 3-7. ábra), de a váltakozó áramú szaggató helyett a tranzisztoros mátrixkonvertert kell választanunk (a tirisztor és így a ciklokonverter inkább a múltat jelenti). Ezt a megoldást az ipar még nem alkalmazza, de előfordulhat, hogy a jövőben ez válik iparilag optimális megoldássá.

Közvetlen váltakozó áramú átalakítós hajtás
3.7. ábra - Közvetlen váltakozó áramú átalakítós hajtás


A legtöbb szervo hajtás négynegyedes és az átalakítás két lépcsőben valósul meg. Először a hálózati feszültséget egyenirányítjuk, így kialakul egy közbenső egyenáramú kör, majd egyenáramú motor esetén egy négynegyedes egyenáramú szaggatóval, váltakozó áramú motor esetén egy változtatható frekvenciájú inverterrel tápláljuk az adott motort (ld. 3-8. ábra).

Szervo hajtások szokásos felépítése
3.8. ábra - Szervo hajtások szokásos felépítése


A 3-8. ábran a hálózat felé egyirányú energiaáramlást rajzoltunk, mert napjainkban ez a jellemző. A legolcsóbb és ezért legelterjedtebb egyenirányítók egyszerű diódásak, amelyek nem képesek az energiát a hálózat felé visszatáplálni. A fékellenállás arra szolgál, hogy hővé alakítsa a motor felől visszatáplált energiát. A diódás egyenirányítók esetén az egyirányú energiaáramlásnál sokkal nagyobb gondot jelent, hogy azok nem szinuszos áramot vesznek fel a hálózatból és ezért hálózati szennyezést okoznak. Sok esetben megmarad a diódás egyenirányítás, de a hálózatszennyezés csökkentése érdekében egy szűrő is található a hálózat és a diódás egyenirányító között. A szinuszos áramfelvétel vezérelt egyenirányítóval is megvalósítható, amely a szűrés mellett a kétirányú energiaáramlást is lehetővé teszi. Elképzelhető, hogy a jövőben ez a megoldás jobban elterjed, de ma még elvétve találunk ilyen ipari megoldásokat.

A feszültség és áram közül csak az egyiket tudjuk a motorra kényszeríteni, a másik kiadódik, ezért beszélhetünk feszültséggenerátoros és áramgenerátoros táplálásról. A megvalósítás szempontjából az előbbi az egyszerűbb, de az utóbbinak az előnye, hogy követlenebb a fizikai kapcsolata a nyomatékkal (ld. 2.1.1 pont), ezért követlen nyomatékszabályozást egyszerűbbé teszi. A nyolcvanas-kilencvenes években ipari alkalmazásig is eljutottak az ún. áraminverteres hajtások. Napjainkban a feszültséginverterek az egyeduralkodók. Ennek leginkább technológiai okai vannak, de azt nem lehet tudni, hogy a jövő technológiája merre fejlődik. Ugyancsak a nyolcvanas-kilencvenes években jelentek meg az ún. rezonáns konverterek és ehhez kapcsolódóan az ún. lágy kapcsolás.

A legtöbb motor képes mind a négy negyedben üzemelni.

A szinkronmotorok nyomatéka mindkét forgásirányban lehet pozitív és negatív, és két-két síknegyedbe nyúlik bele. Az előbbi esetben motorként az utóbbiban generátorként üzemel. A külsőgerjesztésű egyenáramú- és az aszinkronmotor azonos feszültségirány mellett három síknegyedbe is beléphet. A motoros üzemmódban a forgásirány megfordulhat.

3.2.1. Nyomatékérzékelés és –mérés

A legtöbb esetben a nyomatékot nem közvetlenül mérjük, hanem a villamos mennyiségekből számítjuk. A legegyszerűbb és a legpontatlanabb nyomatékbecslési mód, ha a hálózatból felvett teljesítményt az egyenáramú kör feszültségéből és áramából valamint a becsült hatásfokból számítjuk.

(3.1)

Ezt a módszert egyenáramú- és aszinkronmotoros hajtások esetén egyaránt alkalmazzák, különösen az utóbbi esetben lényegesen bonyolultabb és ezért drágább egy pontosabb, közvetlen a motor áramán és feszültségén alapuló becslés.

4. fejezet - A csúszómód szabályozás

4.1. Rövid történeti áttekintés

A csúszómód szabályozás sajátos helyet foglal el szabályozáselméletben. Egyrészről az egzakt matematikai kezelése számos érdekes kihívást jelentett és mind a mai napig jelent a matematikusok számára. Másrészről e komoly matematikai háttér mélyebb ismerete nélkül is sok esetben viszonylag könnyen alkalmazható, ezért széles körben alkalmazzák is a mérnöki gyakorlatban. Jelen fejezet célja, hogy hidat képezzen az egzakt matematikai leírásmód és a mérnöki alkalmazások között, ahol első helyen a teljesítményelektronikát és az ehhez sok szálon szorosan kapcsolódó mechatronikát kell említenünk.

Napjainkban a legtöbb szabályozott rendszert villamos energiával táplálunk, mert a villamos energia az egyik legtisztább és a legkönnyebben (legkisebb időállandóval) változtatható (szabályozható) energiaforrás. A villamos energia átalakítására a teljesítményelektronika szolgál. A teljesítményelektronikai berendezések egyik legjellemzőbb közös tulajdonsága a kapcsoló üzemmód, vagyis a teljesítményelektronikai berendezésekben található félvezető elemeket ki- vagy bekapcsolhatjuk a veszteségek csökkentése érdekében, hiszen ha a kapcsolóelemnek vagy a feszültsége vagy az árama közel nulla, akkor a vesztesége is közel nulla. Így a teljesítményelektronikai berendezések tipikusan a változó struktúrájú rendszerek (variable structure system: VSS) csoportjába tartoznak. A változó struktúrájú rendszerek rendelkeznek néhány érdekes szabályozástechnikai tulajdonsággal. Egy VSS akkor is lehet aszimptotikusan stabilis, ha a VSS–t alkotó valamennyi struktúra önmagában labilis. Egy további fontos tulajdonság, hogy egy VSS – megfelelő szabályozással ellátva – egy olyan állapotba kerülhet, amikor a rendszer dinamikája az eredetihez képest csökkentett szabadságfokú differenciálegyenlettel írható le. Ebben az állapotban a rendszer elméletileg teljesen független bizonyos típusú paraméterek változásától és bizonyos típusú külső zavarok (pl. nemlineáris terhelés) hatásától. Ezt az állapotot csúszómódnak (sliding mode) és az erre alapozott szabályozást csúszómód szabályozásnak nevezik, amely kiemelten fontos szerepet játszik a teljesítményelektronikai eszközök szabályozása területén.

A változó struktúrájú rendszerek - és ehhez kapcsolódva a csúszómód szabályozás- elméletét először a Szovjetunióban, évtizedekkel ezelőtt dolgozták ki. Az elmélet kidolgozása elsősorban Vadim I. Utkin [1] és David K. Young [2] nevéhez fűződik. Első alkalmazási területe a repülés és a rakétatechnika volt, majd egyre szélesebb körben terjedt a robotirányítás [3], [4] és a szervohajtások [5], [6] területén. A csúszómód a ’70-es évek végén jelent meg a robotok és manipulátorok vezérléseinek tervezésénél [2]. Célja ezeknél az alkalmazásoknál az volt, hogy a robot nemlineáris dinamikáját kézben tarthassuk, és a robot pályakövetési pontosságát érzéketlenné tegyük paraméterváltozások és külső terhelésekkel szemben. A 80-as évek elején a csúszómód megjelent az indukciós motoros hajtások szabályozásában [4], [5] is. Előnye ebben az összetettebb alkalmazásban, hogy közvetlen beavatkozást tesz lehetővé a teljesítményelektronikai eszközökben az indukciós motor nemlineáris és csatolt jellemzőinek ellenére, mert a szabályozó megtervezése szétcsatolható egy nemlineáris és egy alacsonyabb rendű lineáris szabályozó tervezési problémájára. A csúszómód szabályozás két korai alkalmazása rámutatott néhány nagyon előnyös tulajdonságára. E kezdeti munkákat számos tudományos kutatás és gyakorlati alkalmazás követte a robotok vezérlésének és a motoros hajtások szabályozásának területén [3], [4]. A nyolcvanas évektől kezdődően a csúszómód szabályozás a teljesítményelektronikai és mozgásszabályozási alkalmazások egyik kedvelt eszközévé vált és mind a mai napig gyakran alkalmazzák ezen a területen [7], [8], [9]. A ötvenes–hatvanas években Rácz István professzor a Park vektor bevezetésével a teljesítményelektronikába egy máig ható iskolát teremtett. E magyar iskola egy újabb eredményének tekinthető a Park vektoros szemlélet bevezetés a csúszófelületek tervezésének területére [10], [11], és e módszert alkalmazva a szünetmentes áramforrások aszimmetrikus terhelés okozta problémái is kezelhetővé váltak [10], [11].

Az elmélet alapján arra lehetett következtetni, hogy a csúszómód szabályozás nagyszerű és robosztus viselkedést mutat, azonban a kísérletek azt igazolták, hogy ennek komoly korlátjai vannak. A csúszómód alkalmazásának a legnagyobb problémája a csúszófelület körüli nagy frekvenciás oszcilláció, az ún. csattogást (chattering), amely a szabályozás teljesítőképességét erősen csökkenti. Keveseknek sikerült a gyakorlatban is megvalósítani az elmélet által jósolt robusztus viselkedést. Sokan arra a következtetésre jutottak, hogy a csattogás jelenléte miatt a csúszómód szabályozás egy jó elméleti játék, amely a gyakorlatban nem alkalmazható. A következő időszakban a kutatók legnagyobb energiáját a csattogásmentes alkalmazások kötötték le. Erre számos megoldás született.

Tüneti kezelést adhat, ha a kapcsolófelületek éles határvonalát egy folytonos (boundary-layer) átmenettel helyettesítjük [12], vagy a beavatkozó jel nagyfrekvenciás összetevőit egy alul-áteresztő szűrővel szűrjük [13]. Ezek a megoldások értelemszerűen csökkentik a csúszómód robosztusságát. Léteznek olyan módszerek, amelyek a csattogás okait keresik meg, és azt próbálják orvosolni, így elméletileg nem adják fel a rendszer robosztusságát. A csattogás egyik oka, hogy a nagy frekvenciával kapcsolgatott beavatkozó jel gerjesztheti a szabályozott szakasznak a szokásos tervezések során elhanyagolt nagyfrekvenciás tartományba eső sajátfrekvenciáit. Ennek kiküszöbölésére szolgál az ún. megfigyelő alapú csúszómód, melynek lényege, hogy csúszómód szabályozóba egy általunk alkotott megfigyelő állapotváltozóit csatoljuk vissza, és így a csúszómód szabályozó–megfigyelő hurokban egy ideális csúszómód alakulhat ki. Ezt a módszert kísérletileg is sikerült alkalmazni egy olyan - nevezetesen két-tömeg - rendszerre, amely különösen hajlamos a rezgésekre [14]. A megfigyelő nem csak eszköz lehet, hanem cél is. A csúszómód szabályozás elméletére alapozva robosztus és nemlineáris megfigyelő is tervezhető [15], [16]. Egy ugyancsak elméletileg robosztus és gyakorlatban is megvalósított módszer az ún. szektoros csúszómód [17], [18], [19]. A közelmúltban a nemlineáris rendszerek egy új reprezentációja jelent meg, amely a tenzor szorzat modell transzformáción alapszik. A tenzor szorzat modell transzformáció bevezetése a csúszómód szabályozók területére a szektoros csúszómód egy új szemléletű tervezéséhez vezetett [20]. Az analóg csúszómód szabályozók csattogás elkerüléséről egy összefoglaló található a [21] -ben. A csattogás egy másik előidézője lehet a beavatkozó jel korlátozott kapcsolási frekvenciája. A folytonos idejű csúszómód szabályozás robosztusságát nagy frekvenciájú kapcsolgatással megvalósított nagy körerősítéssel érjük el. Ahhoz, hogy ezt a filozófiát a digitális szabályozók világában is alkalmazhassuk, a mintavételezési frekvenciát növelni kell más szabályozásokéhoz képest. Ennek a problémának megoldására a [22] irodalomban a csúszófelület aszimptotikus elérését ajánlják a kommutáció elkerülésére. Egy alternatív megoldást követ [23], ahol a mintavételezett állapotváltozók véges mintavételezési szám után elérik a csúszófelületet. A kilencvenes években az egyszerű pólusáthelyezéstől a különböző optimális szabályozó tervezési módszerekig szinte minden állapot visszacsatolásos algoritmust adaptáltak csúszófelület tervezésére. Ezek közül kiemelhetjük a frekvenciaformálást [24] és a H∞ normára alapozott optimális tervezést [25]. Az előbbi egy frekvenciafüggő súlyozással bünteti az állapotváltozók időfüggvényében megjelenő nagyfrekvenciás összetevőket, az utóbbi a H∞ norma segítségével közvetlen korlátot ad meg a nagyfrekvenciás összetevőkre. Az optimális csúszófelület tervezésére egy összefoglaló található [26] -ben. A közelmúltban az ún. „back stepping” módszert [27] és a legkülönbözőbb lágyszámítási módszereket alkalmazták a csúszófelület tervezésére [28], [29].

4.2. Bevezető példa

Először egy olyan példát mutatunk be, amelyhez hasonlóval többször találkozhatunk a mérnöki gyakorlatban. Tegyük fel, hogy van egy ideális elemekből álló soros L-C körünk, amelyet vagy rövidre zárhatunk, vagy rákapcsolhatjuk egy akkumulátor feszültségét egy tranzisztor kapcsoló segítségével (ld. 41. ábra, ahol a tranzisztoros kapcsoló részletei nincsenek feltüntetve).

L-C áramkör
4.1. ábra - L-C áramkör


Tegyük fel, hogy energiamentes állapotból indulunk és az a célunk, hogy a tranzisztor kapcsolgatásával a kondenzátort az akkumulátor feszültségének felére töltsük fel. A két áramköri elemre felírható differenciálegyenlet:

és

(4.1)

A soros kapcsolás miatt , így a rendszert leíró differenciálegyenlet:

(4.2)

Vezessünk be relatív egységeket oly módon, hogy és legyen. Vezessük be az feszültség hibajelet, ahol a kondenzátor referencia feszültsége. Így a hibajelre vonatkozó differenciálegyenlet a következő alakú:

, ahol

(4.3)

Könnyen belátható, hogy a (4.3) egyenlet megoldásához tartozó állapot az fázissíkon mindig egy kör mentén haladhat az óramutatóval megegyező irányban (ld 4-2. ábra)

Lehetséges állapottrajektória
4.2. ábra - Lehetséges állapottrajektória


A kör középpontja a tranzisztorkapcsoló állapotától függ. Az állapottrajektória folytonos, így a kör sugarát az határozza meg, hogy az utolsó kapcsolás pillanatában a rendszer éppen milyen állapotban volt. Tegyük fel, hogy az állapotból indulunk és megfelelő kapcsolgatással az állapotba kívánunk eljutni. Vezessük be a következő kapcsolási stratégiát:

ahol

(4.4)

Ez azt jelenti, hogy ha az állapottrajektória az egyenes felett tartózkodik, akkor O1 középpontú kört, ha az egyenes alatt van, akkor O2 középpontú kört kell kapcsolnunk. Vizsgáljuk meg, hogy miként szüntethetjük meg a hibát. Tekintsük a 4-3. ábrat, a (4.4) értelmében először az egyenes felett O1 középpontú kör mentén indulunk el. Az egyenest elérve átkapcsolunk egy O2 középpontú körre úgy, hogy közben a trajektória folytonos marad. A második kapcsolás után egy érdekes jelenséget tapasztalunk. Az állapottrajektória amint elindul az O1 középpontú kör mentén, azonnal visszatér arra a térrészre, ahol O2 középpontú kört kell kapcsolni, de e körön sem maradhat tovább az állapottrajektória, újabb kapcsolás következik. Az ábrázolhatóság kedvéért a 4-3. ábran az állapottrajektória az egyenes mindkét oldalán jelentősen belenyúlik az egyenes feletti és alatti tartományba. Ideális esetben az állapottrajektória az egyenest végtelenül nagy frekvenciával kapcsolgatott és végtelenül rövid szakaszokból álló, minden pontjában megtört görbe mentén követi, más szavakkal a hibajel trajektóriája az egyenes mentén csúszik és ezért nevezik csúszómódnak.

A hiba megszüntetése
4.3. ábra - A hiba megszüntetése


A mérnöki, illetve geometriai szemlélet alapján érezzük, hogy a második kapcsolás után a hibajel viselkedését a másodrendű (4.3) helyett a következő elsőrendű differenciálegyenlet írja le:

(4.5)

Ez azért különösen érdekes, mert (4.5)-ben nem szerepel az eredeti rendszer egyetlen paramétere sem, csak az általunk megadott , így egy olyan robosztus szabályozáshoz jutottunk, amely bizonyos feltételek mellett érzéketlen bizonyos zavarások és paraméterek változására. A teljesség igénye nélkül vizsgáljuk meg, hogy a rendszer néhány tulajdonságának, illetve paraméterének megváltozása milyen hatással lehet. Ha az ideális veszteségmentes elemeket valóságos veszteséges elemekkel helyettesítjük, akkor az állapottrajektória kör helyett csökkenő sugarú spirál mentén halad, ha pedig az akkumulátor feszültség ingadozik, akkor a kör középpontja vándorol. Mindkét változás hatással van a csúszómódot megelőző szakaszra és módosítja a csúszómód fennmaradásának feltételét, de mindkét esetben a csúszómód fennmaradhat (az állapottrajektória nem tudja elhagyni a kapcsolóegyenest), és ha fennmarad, akkor a fent említett változások nem befolyásolják a rendszer csúszómódbeli viselkedését.

4.3. Jobboldalán nem folytonos differenciál egyenletek megoldása

Tekintsük a következő autonóm differenciálegyenlet-rendszert:

és

(4.6)

ahol és . Ha folytonos, akkor (4.6) helyett a következő integrál egyenletet írhatjuk:

(4.7)

A (4.6) differenciálegyenlet (4.7) alakú megoldását Carathéodory megoldásnak szokás nevezni, amely bizonyos feltételek mellett akkor is létezhet, ha nem folytonos [30]. A közelmúltban több cikk és Ph.D. dolgozat foglalkozott azzal, hogy miként lehet enyhíteni az -re vonatkozó és a (4.7) létezését garantáló előfeltételezéseket, de a bemutatott példára egyik eset sem alkalmazható, teljesen más jellegű megoldással kell próbálkozni.

Filippov egy olyan megoldást javasolt, amely talán közelebb áll az előző pontban bemutatott mérnöki szemlélethez [31], [32]. Filippov a (4.6) megoldását egy adott pontban annak alapján kereste, hogy miként viselkedik a derivált az adott pont környezetében, megengedve még azt is, hogy egy nulla mértékű halmazon a derivált viselkedése teljesen eltérjen a környezetétől, és a megoldás szempontjából figyelmen kívül hagyja a deriváltat ez utóbbi halmazon. Filippov eredeti definíciója nem-autonóm differenciálegyenletekre vonatkozott, de e fejezetben csak autonóm differenciálegyenletekkel foglalkozunk.

Tekintsük a (4.6) differenciálegyenlet-rendszert és tegyük fel, hogy az tér egy nyitott tartományán majdnem mindenütt értelmezett, mérhető és helyileg korlátos vektorfüggvény, amelyik x-ben nem folytonos. Az vektor értékkészletéből adott x mellett definiáljunk egy halmazt:

(4.8)

ahol az x pont δsugarú környezetét, μa Lebesgue értelemben vett mértéket, N a Lebesgue értelemben vett nulla mértékű halmazt és a „konv” szócska az adott halmaz konvex lezárását jelöli.

Filippov a nem folytonos differenciálegyenlet-rendszerek megoldására a következő definíciót vezette be:

Definíció

Egy abszolút folytonos vektorfüggvény akkor megoldása a (4.6) differenciálegyenlet- rendszernek, ha tartományon majdnem minden t-re felírható

(4.9)

Megjegyezzük, ha folytonos, akkor halmaznak minden x-re csak egyetlen eleme van, mégpedig , így Filippov definíciója összhangban van a szokásos (jobb oldalán folytonos) differenciálegyenletek megoldásával. Ugyanakkor, ha nem folytonos, akkor ez a definíció megengedi, hogy (4.6) megoldását olyan tartományban keressük, ahol nincs értelmezve.

4.4. Relés szabályozók

Alkalmazzuk Filippov definícióját a bevezető példa általánosításaként olyan állapot visszacsatolásos szabályozókörre, amelynek a visszacsatoló ágában egyetlen relé található (ld. 4-4. ábra). Tegyük fel, a rendszer állapotát (4.6) alakú differenciálegyenlet írja le, olyan módon, hogy a jobb oldalon álló vektorfüggvény a relé állapotától függően ugrásszerűen változik. A szabályozási (kapcsolási) stratégia legyen a következő. A visszacsatolt állapotváltozók által kifeszített tér tartományában definiáljunk egy n-1 dimenziós sima reguláris S hiperfelületet (amelyet kapcsoló felületnek is nevezhetünk) egy folytonos skalár-vektor függvény segítségével a következő módon:

Relés szabályozó kör
4.4. ábra - Relés szabályozó kör


A szabályozás célja, hogy az állapottrajektóriát erre a felületre kényszerítsük. Az ezzel kapcsolatos feltételeket a 2.3.1 fejezet tárgyalja. Az S felület pontjait jelöljük xs-sel. E felület segítségével osszuk két részre a G tartományt:

A G tartományon legyen az x-re vonatkozó differenciálegyenlet a következő alakú:

ahol mind , mind egy egyenletesen folytonos vektor-vektor függvény. Vegyük észre, hogy az S felületen nincs értelmezve, és nem tettünk olyan kikötést, hogy és az S felület két oldalán egyezzen meg.

Az S felületen kívül egy közönséges differenciálegyenlettel van dolgunk. A (2.12) megoldása az S felület xs(t) pontjaiban okozhat gondot. A (4.9) definíció szerint K az a legkisebb zárt konvex halmaz, melyet úgy kapunk, hogy az S felület xs(t) pontjaiban vesszük xs egy tetszőleges környezetét, ebből kizárjuk -t, vagyis egy olyan nullamértékű N tartományt, ahol nincs értelmezve, s az így kapott tartományhoz tartozó vektorok halmazát zárt konvex halmazzá egészítjük ki. Nyilvánvaló, hogy értéke minél kisebb, annál kisebb lesz az így kapott zárt konvex halmaz. Végül vennünk kell a zárt konvex halmazok közös részét az összes és N mellett. Mivel f(x) abszolút folytonos, ezért az S felület bármely pontján léteznek a következő határértékek:

Ebből az következik, hogy az S felület bármely xs(t) pontjához tartozó halmaznak csak két eleme van, és . E két vektornak kell venni a konvex lezárását, amelyik az összes értékhez tartozó legkisebb részhalmaz lesz. Összefoglalva, a (4.6) differenciálegyenlet a (4.12) alakú nem-folytonossággal az S felület xs(t) pontjaiban a (4.9) definíció értelmében a következő alakban írható le:

A (4.14) szemléltetéséhez tekintsük a 4-5. ábrat, ahol az S felület P pontjához tartozó és vektort rajzoltuk fel. Az pontban az állapottrajektória változását az ekvivalens vektor adja meg, amely az és vektorok konvex összege.

Az S felület mentén csúszó állapottrajektória
4.5. ábra - Az S felület mentén csúszó állapottrajektória


Jelöljük Lfs(x)-szel az s(x) skalár függvénynek az vektortérre vonatkozó irány menti deriváltját.

ahol (ab) az a és b vektorok skalárszorzatát jelöli. Mivel s(x) egyenletesen folytonos, ezért az S felület bármely pontján léteznek a következő határértékek:

értékét úgy kell meghatározni, hogy , illetve merőleges legyen az S felület normálisára (ld. Filippov 3. Lemma [32]).

(4.17) úgy értelmezhető, hogy a csúszómódban a csúszófelület pontjaiban az állapottrajektória változását egy olyan ekvivalens vektor függvénnyel írhatjuk le, amely kielégíti a (4.17) feltételt. A (4.14) és (4.17) alapján:

A (4.18)-ből kifejezhető

4.4.1. A csúszómód fennmaradásának feltétele

Ha és , akkor az S felület mindkét oldalán az f(x) vektortér az S felület felé mutat (ld. 4-6. ábra). Ezért, ha az állapottrajektória egyszer elérte az S felületet, akkor nem tudja elhagyni azt. Az állapottrajektória a felület mentén csúszik, és ezért nevezik ezt az állapotot csúszómódnak.

Az S felület felé mutató f(x) vektortér
4.6. ábra - Az S felület felé mutató f(x) vektortér


Megjegyezzük, hogy az S felület két oldalán külön-külön felírt két feltétel:

egyetlen egyenlőtlenséggel is helyettesíthető:

amely értelmezhető úgy is, mint a rendszernek az S felületen maradására vonatkozó Lyapunov-féle stabilitás kritérium.

4.5. A bevezető példa differenciálegyenletének megoldása

A bevezető példa áramkörében két energiatároló elem van (L és C), ezért az áramkör viselkedését két állapotváltozó segítségével írhatjuk le. A szabályozás célja az, hogy a hibajelet megszüntessük, ezért célszerű a hibajelet és annak időszerinti első deriváltját választani állapotváltozónak.

A hibajelre vonatkozó állapotegyenlet konstans alapjel mellett a szokásos mátrixos alakban a következő:

,

(4.23)

ahol , ha ideális L-C elemeket feltételezve a veszteségeket elhanyagoljuk, és ha egy soros ellenállással modellezzük az áramkör veszteségeit. A (4.4) alapján, legyen a csúszófelületet definiáló skalár függvény

A (4.23) mátrixegyenletet átírva (4.12) alakúra:

Ahol

,

(4.26)

Az s(x) skalár függvénynek az vektortérre vonatkozó irány menti deriváltja az S felület két oldalán:

Megjegyezzük, hogy esetünkben mind , mind értelmezhető magán az S felületen is, ezért nincs szükség a (4.16)-ban leírt határérték számításra, az S felülethez tartozó pontok közvetlenül behelyettesíthetők. Ugyanakkor a (2.21) feltétel csak a következő tartományban teljesül.

(4.28)

Ebből az következik, hogy az adott relés szabályozó mellett az S felületnek csak egy korlátozott részén alakulhat ki a csúszómód. A relés szabályozási törvény további tagokkal kiegészítve a teljes S felületére kiterjeszthető a csúszómód kialakulásának feltétele [3]. Maradva a relés szabályozónál, a (4.19) és (4.27) alapján:

A (4.13), (2.51), (2.53), valamint (2.56) alapján a csúszómódban a rendszert leíró differenciálegyenlet a következő alakú lesz:

(4.30)

A (4.30) differenciálegyenlet lényegében megegyezik a csúszóegyenes egyenletével.

Ezzel beláttuk, hogy a sima reguláris S csúszóegyenes előállítható végtelenül nagy frekvenciával kapcsolgatott és végtelenül rövid szakaszokból álló, minden pontjában megtört görbe segítségével. A (4.30) megoldása:

ahol az hibajel kezdeti értéke abban a pillanatban, amikor az állapottrajektória eléri az S felületet. A (4.32)-ből az is látható, hogy a csúszóegyenesre jellemző időállandó. Vegyük észre, hogy a (4.32) egyenletben nem szerepel az eredeti áramkör egyetlen paramétere sem. Ez azt jelenti, hogy a fent vázolt ideális csúszómódban a relés szabályozási törvény a rendszer bizonyos paramétereire és bizonyos jellegű zavarójelekre érzéketlen robosztus szabályozóhoz vezet. A fenti levezetés csak azzal foglalkozik, hogy a rendszer miként viselkedik magán a csúszófelületen, de nem foglalkoztunk azzal a gyakorlatban nagyon fontos kérdéssel, hogy miként lehet gondoskodni arról, hogy az állapottrajektória mindig elérje a csúszófelületet, és a csúszófelületen maradjon.

Természetesen a valóságban egy ilyen ideális csúszómód nem alakulhat ki. Mérnöki szempontból ennek egy közelítő és azon belül is az ún. csattogásmentes megvalósítása jelenti a kihívást.

4.6. Több bemenetű rendszerek csúszómódban

Az előző pontban azt feltételeztük, hogy a rendszernek egyetlen bemenete van, ezért a tartományt egyetlen hiperfelülettel két részre osztottuk és a rendszert relés jelleggel e felület mentén kapcsolgattuk. Tegyük fel, hogy a rendszernek m bemenete van és minden bemenetet relés jelleggel kapcsolgatunk. Ennek megfelelően atartományban definiálunk m db n-1 dimenziós sima reguláris Si hiperfelületet m db folytonos skalár-vektor függvény segítségével a következő módon:

Minden egyes felület segítségével más-más módon oszthatjuk ketté a G tartományt:

Általános esetben a G tartományt 2m részre osztjuk és a (4.12) kiterjesztéseként minden tartományban más-más alakot vehet fel.

A csúszómód kialakulhat részlegesen minden Si felületen a többi felülettől függetlenül. Globális csúszómódról akkor beszélünk, ha minden felületen kialakult a csúszómód, vagyis a globális csúszómód a hiperfelületek közös S metszésvonalán alakulhat ki.

,

(4.36)

ahol az egyes skalár-vektor függvények oszlopvektora:

,

(4.37)

Csúszómódban az állapottrajektória az S metén halad. Az S felület 2m résztartománnyal határos és a (4.9) definíciónak megfelelően az S felület bármely xs(t) pontjához tartozó halmaznak 2m eleme van, . E vektoroknak kell venni a konvex lezárását, amelyik az összes értékhez tartozó legkisebb részhalmaz lesz. A (4.35) differenciálegyenlet az S felület xs(t) pontjaiban a következő alakú:

ahol ,

(4.38)

Csúszómódban a értékeinek meghatározásához a (4.19)-et kell általánosítanunk.

A fenti definíció az jelenti, hogy az állapottrajektória az S felület mentén, az S felület normálisára merőleges irányban halad. A 4-7. ábra a részleges és globális csúszómódot szemlélteti m=2 esetre. A P1 és P2 pontban részleges, valamint P3 pontban globális csúszómód alakulhat ki. A csúszómód kialakulásának feltételét kétféle megközelítésben írhatjuk elő. Az első megközelítésben a részleges csúszómódot lokálisan az egyes Si felületek mentén külön-külön írhatjuk elő.

Több bemenetű rendszerek csúszómódban
4.7. ábra - Több bemenetű rendszerek csúszómódban


Meg kell jegyezni, hogy a rendszeregyenlet belső struktúrájától függően az egyes bemenetek nem minden esetben függetleníthetőek egymástól. A másik és általánosabban alkalmazható megközelítésben a csúszómód kialakulását globálisan, az Si hiperfelületek közös metszéspontjában írjuk elő.

Ennek megfelelően a szabályozási törvényt is kétféle megközelítésben kereshetjük. Az egyik megközelítésben minden bemenetnél a többi bemenettől függetlenül a (4.40) kielégítése a cél. A másik megközelítésben az összes bemenetet együttesen úgy változtatjuk, hogy a (4.41) teljesüljön. A teljesítményelektronika területén tipikusan a háromfázisú rendszerek említhetők meg, mint a több bemenetű-több kimenetű rendszerek. A [10], [11] -ban mind a (4.40), mind (4.41) megközelítésre találunk példát.

4.7. A csúszómód szabályozók tervezési lépései

A csúszómód szabályozó megtervezése három fő lépésből áll: első lépés a csúszófelület megtervezése, a második lépés egy olyan szabályozási törvény kiválasztása, amely az állapotváltozók trajektóriáját a csúszófelületre kényszeríti, majd azon tartja, végül a harmadik - a legfontosabb - lépés, a csattogás (lengés) mentesen történő megvalósítás.

Tekintsük a következő lineáris időinvariáns rendszert:

,

(4.42)

ahol ,és . Célunk a rendszert egy adott kezdeti állapotból eljuttassuk egy előírt egyensúlyi állapotba, és ehhez feltételezzük, hogy szabályozható párt alkot. Ha az állapotváltozókat szétválasztjuk, a (4.42) rendszer átírható az alábbi,

(4.43)

reguláris alakra, ahol az beavatkozó jel közvetlenül csak az állapotváltozókra tud hatni, -re csak közvetetten, -n keresztül.

4.7.1. A csúszófelület tervezése

Csúszómód szabályozásnál általában a rendszer állapotváltozóinak számával megegyező dimenziójú fázistérben kijelölünk egy S csúszófelületet (kapcsolófelületet), amelyre rá akarjuk kényszeríteni a rendszerünket. A csúszófelülettel egyben megválasztjuk a visszacsatolt rendszer dinamikus tulajdonságait is. Természetesen ennek vannak elvi, és egy valós rendszernél egyéb fizikai korlátai is. A csúszófelületet klasszikusan az állapotváltozók lineáris kombinációjaként írjuk fel:

ahol és . Ha a rendszer csúszómódban van, akkor s = 0, vagyis . A csúszófelület megtervezése gyakorlatilag mátrix megválasztását jelenti, tehát a tervezési probléma leegyszerűsíthető egy kisebb dimenziójú altér

állapot visszacsatolásának a megtervezésére. Ebben az altérben x1 az állapotváltozó és x2 a bemenőjel, amelyet alakú állapot visszacsatolással határozhatunk meg. Csúszómódban a rendszer viselkedését a

differenciálegyenlet írja le. Az eredeti szabályozási célunkat csak akkor érhetjük el, ha (4.46) stabilis. Így minden olyan állapot visszacsatoláson alapuló lineáris szabályozó tervezési algoritmus alkalmazható a kapcsolófelület megtervezésére, amely a (4.45)-öt stabilizálja (4.46) formában. Erre vonatkozóan a bevezető fejezet számos referenciát tartalmaz. Ez a tervezési módszer lineáris rendszerekre, illetve nemlineáris rendszerek linearizált modelljére alkalmazható.

4.7.2. A szabályozási törvény megválasztása

Ha a csúszófelületünk már megvan, akkor u értékét kell helyesen megválasztani. A visszacsatolt rendszer Ljapunov értelemben vett aszimptotikus stabilitásának, illetve annak a feltétele, hogy az adott rendszer mindig a csúszómód (s = 0 állapot) felé tartson és onnan ne térjen ki, a (4.40), illetve (4.41) feltételnek kell teljesüljön. Az egyszerűség kedvéért alkalmazzuk az első feltételt. A legegyszerűbb szabályozó elem, amely gondoskodhat a (4.41) teljesüléséről és a csúszómód kialakulásához vezethet, a relé (ld. 48. ábra):

Relés szabályozási törvény
4.8. ábra - Relés szabályozási törvény


Megjegyezzük, hogy a csúszómód szabályozó a robusztusságát a nagy (ideális esetben végtelenül nagy) körerősítésének köszönheti. Erről a visszacsatoló ágban lévő relé gondoskodik, amelynek erősítését a ki- és bemenőjelének hányadosával definiálhatjuk:

Csúszómódban si = 0, tehát a relé bemenetére 0 nagyságú jel érkezik, míg a kimenetén egy 0-tól különböző jel távozik, ezért ezt értelmezhetjük úgy, hogy a relé csúszómódban végtelenül nagy körerősítést kölcsönöz a szabályozási körnek.

A (4.47) nem tud gondoskodni a csúszómód kialakulásáról a teljes állapottérben. (4.47) szabályozási törvényt megfelelő tagokkal kiegészítve elérhető, hogy a csúszómód kialakulásának és fennmaradásának feltétele az egész állapottérben teljesüljön. Az esetben a következő szokásos szabályozási törvény gondoskodik a csúszómód fenntartásáról, megfelelő megválasztásával [26]:

Amennyiben a csúszómód bekövetkezett, akkor létezik egy olyan folytonos, úgynevezett ekvivalens beavatkozó jel, , amely a csúszófelületen képes tartani a rendszert. A (4.42) rendszeregyenletbe helyettesítve -t, kapjuk az ekvivalens vektort, amely az állapotváltozók mozgását írja le a csúszófelület mentén. Ennek megfelelően is (4.17)-ből számítható ki. A (4.43) és (4.44) egyenletekből meghatározható értéke:

Ennek alapján felírható az beavatkozó jel:

A gyakorlatban azonban ez nem használható, ugyanis a rendszer paramétereinek, illetve A és B rendszermátrixok pontos ismeretét feltételezi, ezért helyett annak csak becsült értékét tudjuk kiszámítani. Mivel sem , sem még önmagában nem biztosítja a csúszómód kialakulását (a zavarok távol tarthatják a rendszert csúszófelülettől), így egy olyan relés jellegű nem folytonos beavatkozó jelet adunk a becsült ekvivalens beavatkozó jelhez, amely képes kompenzálni a zavarok hatását.

Ebben az esetben a relének csak becslési hibáját kell kompenzálni, ezért minél pontosabban becsüljük értékét, annál kisebbre választhatjuk az M értékét és ezzel együtt annál kisebb csattogásra számíthatunk.

A gyakorlati alkalmazás szempontjából a (4.47) relés szabályozási törvénynek az a legnagyobb előnye, hogy könnyen megvalósítható akár egyszerű analóg műveleti erősítővel is, ezért relatívan nagy kapcsolási frekvencia érhető el, s ennek köszönhetően (4.47) közvetlenül vezérelheti a teljesítményelektronikai félvezető kapcsoló elemeket. Ezért ott is alkalmazható, ahol a szabályozott szakasz legnagyobb időállandója viszonylag kicsi (ms alatt van), s ahol gyors beavatkozásra van szükség, így jelenleg még a digitális szabályozók nem alkalmazhatók, illetve alkalmazásuk esetén sincs idő bonyolult számításra két mintavételezés között. Ezzel szemben a hátránya az, hogy a (4.47) nem tud gondoskodni a csúszómód kialakulásáról a teljes állapottérben. értékére vonatkozóan két egymásnak ellentmondó elvárás van. Minél nagyobb értéke, az állapottérnek annál nagyobb tartományában gondoskodhat a csúszómód kialakulásáról, de ezzel együtt annál nagyobb csattogást eredményezhet a csúszófelület körül. A (4.52) és (4.53) által leírt szabályozási törvények közvetlenül nem vezérlik a félvezető kapcsoló elemeket, egy ISZM (Impulzus Szélesség Moduláció) is szükséges az elméletileg folytonosan változó , illetve előállításához. Ez általában mechanikai rendszerek szabályozásakor nem probléma, mert a szabályozott mechanikai rendszerek (robotok, manipulátorok) mozgásának meghatározó frekvenciája 100 Hz-nél kisebb. A digitális szabályozók napjainkban elérhető mintavételezési (vagyis (4.52) és (4.53) szabályozási törvényben a relé kapcsolási) frekvenciája legalább egy nagyságrenddel nagyobb és 1kHz körül van. A félvezető elemek kapcsolási frekvenciáját az akusztikus zaj csökkentése érdekében 20 kHz-nél nagyobbra szokás beállítani és ez ismét legalább egy nagyságrendi különbséget jelent a modulált , illetve és a moduláló jel frekvenciája között.

4.7.3. A csattogás elkerülése

A gyakorlati alkalmazhatóság szempontjából ez a fejezet meghatározó fontosságú.

4.7.3.1. A szakadásos jel folytonossá tétele

Több csattogás elkerülési módszer arra irányul, hogy az szakadását a kapcsoló felület környékén egy folytonos átmenettel helyettesítse. A legegyszerűbb és talán ezért a leggyakoribban alkalmazott módszer, amikor a relét egy telítődéssel helyettesítjük (ld. 4-9. ábra).

Folytonos átmenetű, relés jellegű szabályozási törvény
4.9. ábra - Folytonos átmenetű, relés jellegű szabályozási törvény


Egy másik fontos megközelítés az ún. szektoros csúszómód. Ennek is több változata létezik. Furuta [20,21] abból indul ki, hogy a csúszófelület közelében bizonyos esetekben található egy olyan szektor, ahol már nulla beavatkozó jel mellett is a rendszer a felület felé tart. Ő ezt PR szektornak nevezte el, mert a szektort a P norma csökkenése alapján jelöli ki. Kiderült, hogy vannak esetek, amikor annak ellenére, hogy a P norma csökken, az állapottrajektória kiléphet a PR szektorból, ezért további módosításokat javasolt [33].

A szektoros csúszómódnak egy teljesen más megközelítése található [17], [34] -ben. A csúszó szektort két felület határolja. A felületeket úgy választjuk ki, hogy a szektor Ljapunov értelemben stabilis legyen. A szektoron kívül a szokásos módon egy olyan csúszófelületre próbáljuk az állapottrajektóriát kényszeríteni, amelyik a szektort határoló két felület középértéke. Ez gondoskodik arról az állapottrajektória belépjen a szektorba, és ha egyszer belépett oda, akkor ott is maradjon. A szektoron belül a feltételül szabott stabilitásnak megfelelően az állapottrajektória automatikusan konvergál az origóhoz, ezért egy olyan folytonos beavatkozó jelet adunk ki, amely az aktuális állapotnak a szektort határoló két felülettől mért távolságának középértékével arányos, így az origóhoz közeledve automatikusan egyre kisebb lesz a beavatkozó jel. Az 5. fejezet részletesen foglalkozik ezzel.

4.7.3.2. Állapot-megfigyelő alapú csúszómód szabályozás

A csúszómód szabályozás legnagyobb problémája, hogy minden mérnöki modell a valósághoz képest elhanyagolásokon alapul. Bizonyos elhanyagolások egy folytonos beavatkozás esetén is okozhatnak gondot, például nem várt lengéseket, de ezeknek sokkal nagyobb a veszélye a csúszómód szabályozás esetén, ahol a nem folytonos beavatkozó jel nagyfrekvenciás összetevője rezonanciába kerülhet a valós rendszernek a tervezés során elhanyagolt kis időállandójú dinamikai tulajdonságával. A csattogásnak ez lehet az egyik oka. Más jellegű probléma, hogy a csúszómód szabályozás teljes állapot visszacsatoláson alapul és legtöbbször nem mérhető az összes állapotváltozó. Az utóbbi probléma megoldása az állapot-megfigyelő, abban az esetben, ha rendszerünk megfigyelhető. Bizonyos esetekben állapot-megfigyelő megoldást jelenthet a csattogási problémákra [1] is. Ilyenkor az állapot-megfigyelő egyfajta szűrő szerepét látja el, a kapcsolási felületet és a beavatkozó jelet az állapotváltozók megfigyelt (becsült) értékéből számítjuk, még akkor is, ha a tényleges állapotváltozók mérhetőek. A szabályozó vázlata a 4-10. ábran látható. Miután a megfigyelő struktúrája és paraméterei ismertek, a megfigyelő – VSS szabályozó hurokban ideális csúszómód jöhet létre (VSS=Variable Structure Systems).

Állapot-megfigyelő alapú csúszómód szabályozás
4.10. ábra - Állapot-megfigyelő alapú csúszómód szabályozás


A szinguláris perturbáció elvének megfelelően [35] a valós rendszer gyors időállandói elhagyhatók a megfigyelő modelljéből. Ily módon a megfigyelt állapotváltozók száma jelentősen lecsökkenthető. A megfigyelőt leíró egyenletek:

Az n index a névleges értékeket jelöli. A dinamika elhanyagolt gyors összetevőinek tranziens hatása miatt a valós rendszer és a megfigyelő kimenetei között lesz egy aszimptotikusan megszűnő eltérés, de a mozgásban a nem modellezett dinamika nem okoz oszcillációt.

4.7.4. Diszkrét idejű csúszómód szabályozás

A csattogás egy másik előidézője lehet a beavatkozó jel korlátozott kapcsolási frekvenciája. A folytonos idejű csúszómód szabályozás robosztusságát nagy frekvenciájú kapcsolgatással megvalósított nagy körerősítéssel érjük el. Ahhoz, hogy ezt a filozófiát a digitális szabályozók világában is alkalmazhassuk, a mintavételezési frekvenciát növelni kell más szabályozásokéhoz képest. Ennek a problémának megoldására a [22] irodalomban a csúszófelület aszimptotikus elérését ajánlják a kommutáció elkerülésére. Egy alternatív megoldást követ [23], ahol a mintavételezett állapotváltozók véges mintavételezési szám után elérik a csúszófelületet.

Definíció: Az

(4.55)

diszkrét idejű dinamikai rendszerben az felület részhalmazára akkor állhat elő diszkrét idejű csúszómód, ha létezik -nek olyan U nyílt környezete, amelyre -ból következik, hogy .

A fenti definíciónak megfelelően a (4.43) állapotegyenlet diszkretizálható minden mintavételezési pillanatban.

,

(4.56)

ahol a k index a k-adik mintavételezési időt jelöli, azaz ( a mintavételezési időállandó) és

,

(4.57)

A csúszófelület az mintavételezési pontban:

A definícióból következik, hogy

minden -ra. A diszkrét idejű csúszómód megvalósul, ha a mátrix invertálható, és az beavatkozó jelet úgy kell megválasztani, hogy kielégítse a (4.59)-at.

A folytonos idejű esethez hasonlóan a (4.60)-ből számított megoldást ekvivalens beavatkozó jelnek nevezzük:

A szabályozási törvényt a következőképpen lehet definiálni:

ahol az beavatkozó jel fizikai korlátja.

4.8. A csúszómód szabályozók tervezési lépéseinek kísérleti alkalmazása

Egy olyan alkalmazást kerestünk, amelynek a matematikai leírása hasonló a 4.2 példa leírásához, és amelyhez megvoltak a kísérleti eszközök. Célunk az, hogy egy permanens mágneses szervomotor forgórészét csúszómódban eljuttassuk az egyik pozícióból egy másikba [26] alapján. Elhanyagolva a motor armatúra induktivitását (más megközelítésben a villamos időállandót), a rendszer két állapotváltozóval írható le. A motor aktuális pozícióját tekintsük zéró értéknek, és legyen a referencia jel egy konstans nullától különböző pozícióérték r. Válasszuk állapotváltozónak a motor szögelfordulásának és szögsebességének hibajelét.

A motor hibajelére vonatkozó differenciálegyenlet konstans pozíció alapjel mellett:

,

(4.64)

ahol és Fv a szervorendszer másodrendű nyomatéka, illetve viszkózus súrlódást figyelembe vevő paramétere. A a motor fluxusa, k a motor felépítésére jellemző konstans, R az armatúrakör ellenállása és Uk a motor kapocsfeszültsége. Legyen a csúszófelületet definiáló skalár függvény:

,

(4.65)

Ez a állapotsíkon egy egyenest határoz meg (ld. 4-11. ábra).

A szervomotor csúszó egyenese a hibajel fázissíkján
4.11. ábra - A szervomotor csúszó egyenese a hibajel fázissíkján


A legegyszerűbb relés szabályozót feltételezve:

A (4.12), (4.62) és (4.64) alapján

,

(4.67)

ahol

és .

(4.68)

Ez jellegében megegyezik a (4.25) egyenlettel, ezért (4.64) megoldása:

ahol a szögelfordulás hibájának az értéke abban a pillanatban, amikor az állapottrajektória eléri az S felületet. A bevezető példához hasonlóan itt is egy robosztus szabályozáshoz jutottunk. Vizsgáljuk meg a csúszómód kialakulásának feltételét (4.21) alapján. Ehhez szükségünk van az S idő szerinti első deriváltjára, a (4.64) és (4.65) alapján:

Az értékét a (4.46) relé segítségével határozzuk meg. A (2.21) a következő feltételek mellett teljesül:

4.8.1. Mérési eredmények

A kísérleti eszköz egy DSP-vel vezérelt egy-szabadságfokú szervorendszer (ld. ???

4-12. ábra). A fényképpel ellentétben ezeknél a méréseknél a zavarójelet megvalósító rúdra szerelt tömeget is felszereltük. A motorhoz egy merev tengelyen keresztül kapcsoljuk a terhelést.

Egy-szabadságfokú szervorendszer
Egy-szabadságfokú szervorendszer
4.12. ábra - Egy-szabadságfokú szervorendszer


A névleges értékekből számított egyszerűsített rendszer egyenlet az előző pontban bevezetett jelölésekkel

A csúszófelületre jellemző időállandó:

Három különböző mérési sorozatot végeztünk el az első esetben (klasszikus csúszómód) a (4.50), a második (diszkrét idejű csúszómód) és a harmadik (megfigyelőre alapozott diszkrét idejű csúszómód) esetben a (4.62) szabályozási törvényt alkalmaztuk. A második és a harmadik eset között az a különbség, hogy a harmadik esetben a 4-10. ábra alapján a (4.54) megfigyelőből kapott állapotváltozó értékeket helyettesítettük a (4.62) képletbe a mért értékek helyett. Mindhárom esetben a szabályozási törvényben megtalálható folytonosan változó összetevőjét Impulzus Szélesség Moduláció segítségével állítottuk elő. A mintavételezési frekvencia 1 Hz és a felvezetők kapcsolási frekvenciája 20 kHz volt. Mindhárom esetben a szögelfordulás időfüggvényét, az állapottrajektóriát és a beavatkozó jel (amely esetünkben a motorra kapcsolt feszültség, amely egy 24 V maximális értékű modulált jel) időfüggvényét ábrázoltuk (ld. 4-13. ábra, 4-14. ábra és 4-15. ábra). Megfigyelhető, hogy a szögelfordulás időfüggvényében nincs jelentős eltérés a három esetben, és ez összhangban van azzal, hogy elméletileg a három eset azonos eredményt ad. Ezzel szemben a beavatkozó jel aktivitása sokkal nagyobb a klasszikus csúszómódban ennek elméletileg is így kell lennie – ez a (4.50) szabályozási törvény sajátossága – és ami a mérés során hallható, a mintavétellel megegyező frekvenciájú zajt eredményezett. Megjegyezzük, hogy a 20 kHz-es moduláló jel természetesen nem volt hallható. Elméletileg a diszkrét idejű csúszómódban – a modulációtól eltekintve – egy folytonos, sima beavatkozó jelet kellett volna kapnunk, de a valóságban (ld. 4-14. ábra) határozottan észlelhetők a beavatkozó jel gyors előjelváltásai, bár ez füllel már alig érzékelhető zajt eredményezett. A beavatkozó jel aktivitása a megfigyelő alkalmazásával tovább csökkenthető, ennek a hallható zajra már nem volt észlelhető hatása.

Klasszikus csúszómód
4.13. ábra - Klasszikus csúszómód


Diszkrét idejű csúszómód
4.14. ábra - Diszkrét idejű csúszómód


Megfigyelő alapú diszkrét idejű csúszómód
4.15. ábra - Megfigyelő alapú diszkrét idejű csúszómód


4.9. Kéttömeg rendszer közvetlen elcsavarodás szabályozása csúszómódban

A fejezet egy rugalmas tengellyel összekötött ún. kéttömeg rendszer csúszómód szabályozásával foglalkozik. A kihívást az jelenti, hogy a kéttömeg rendszer önmagában lengésre hajlamos, és a csúszómód szabályozás legnagyobb problémája, hogy lengéseket gerjeszt. Ezért mérnöki szempontból nem a csúszómód szabályozás a legalkalmasabb e szabályozási feladatra, de pont ezért fontos annak bizonyítása, hogy egy ilyen lengésre hajlamos rendszert is lehet csattogás mentesen szabályozni csúszómódban. A következőkben megvizsgáljuk, hogy miként befolyásolja az előző fejezet végén tárgyalt kísérleti berendezés működését, ha a mozgatott tömeget egy rugalmas tengely segítségével kapcsoljuk a motorhoz, majd javaslatot teszünk a tengely elcsavarodásának közvetlen csúszómód szabályozására, és bemutatjuk a lengések elkerülésének módját.

4.9.1. A nem modellezett dinamika hatása a csúszómódra

Tegyük fel, hogy a 411. ábran a motort és a terhelést egy rugalmas tengely köti össze a 416. ábran látható módon, ahol az egyik tömeg az egyenáramú motor, a másik tömeg a terhelés. Az őket összekötő rugalmas tengelyt egy rugóval modellezzük.

Rugalmas tengellyel összekötött, kéttömegű rendszer
4.16. ábra - Rugalmas tengellyel összekötött, kéttömegű rendszer


A jelölések: a motor nyomatéka, a fordulatszáma és az elfordulása, a rugóról a teherre ható nyomaték, és a teher fordulatszáma és elfordulása, pedig a terhelő nyomaték (zavarásként fogjuk fel). a rugóállandó, a rugó elcsavarodása (), , , és pedig értelemszerűen a motor illetve a teher másodrendű nyomatéka, illetve viszkózus súrlódást figyelembe vevő paraméter. a korábban alkalmazott eredő J-t két részre osztjuk

A (4.64) rendszeregyenletet kell módosítanunk. Tegyük fel, hogy a motorra és a terhelésre az ún. illesztési feltételnek megfelelően írjuk elő a referencia jelet, és legyen az állapotváltozók vektora:

A módosított állapotegyenlet:

Az előző példához hasonlóan itt is a motor pozíció és fordulatszámjeléből számítjuk a csúszófelületet:

Vizsgáljuk meg a csúszómód kialakulásának feltételét a (4.21) alapján. Ehhez szükségünk van az s idő szerinti első deriváltjára, a (4.76) és (4.77) alapján:

Az értékét a (4.46) relé segítségével határozzuk meg. A (4.21) a következő feltételek mellett teljesül:

(4.79)

Látható, hogy a paraméterek megválaszthatók úgy, hogy az origó környékén ne alakulhasson ki stabilis csúszómód. Az előző példában szereplő J tehetetlenségi nyomatékot 2:3 arányban osztjuk meg a motor és a terhelés között, a rugalmassági tényező értékét 800Nm/rad-nak választjuk. A csúszómód korábbi három vizsgált megvalósítása között már lényeges különbség tapasztalható. Ilyen méréseket nem állt módunkban elvégezni, így csak szimulációra hagyatkozhatunk. A szimulációs eredmények a 4-17. ábran láthatók. Mind a klasszikus, mind a diszkrét idejű csúszómódban jól láthatóak a lengések. Ez a (4.79) alapján nem meglepő. Az igazán fontos üzenetet a 4-17. ábra/c. ábrája hordozza. Esetünkben a motornak mind a pozíciója, mind a szögsebessége mérhető és ezeket csatoltuk vissza az első két szabályozásnál, ha ezeket a jeleket egy olyan megfigyelő jelével helyettesítjük, amelyik merev tengelyt feltételez a motor és a terhelés között, akkor ezek a lengések eltűnnek.

A szögelfordulás időfüggvénye a három különböző csúszómód szabályozó és rugalmas tengellyel összekötött terhelés esetén
4.17. ábra - A szögelfordulás időfüggvénye a három különböző csúszómód szabályozó és rugalmas tengellyel összekötött terhelés esetén


A lengések az első két esetben is kiküszöbölhetőek lennének, ha a (4.64) helyett a (4.76) rendszeregyenletből kiindulva a csúszófelületet kiegészítenénk egy, a rugalmas tengelyre vonatkozó állapotváltozóval és azt a négy állapotváltozó négy dimenziós fázisterében terveznénk meg. Ekkor viszont problémát jelentene a három állapotváltozó mérése. Ha nem tudjuk mérni a három állapotváltozót, akkor egy megfigyelőt kell terveznünk a nem mérhető állapotváltozóhoz, tehát mindenképp szükségünk van egy megfigyelőre. A szinguláris perturbáció elvének megfelelően elegendő lehet, ha a megfigyelőt pusztán az eredeti merev tengellyel rendelkező rendszerhez tervezzük, így a megfigyelőre alapozott diszkrét idejű csúszómód szabályozó egyaránt jól működik merev, illetve rugalmas tengellyel összekötött terhelés esetén (ld. 4-14. ábra és 4-17. ábra. c.). Ha a tengely rugalmasságát tovább növeljük, akkor az elhanyagolt villamos időállandó okozhat problémát.

4.9.2. Kéttömeg rendszer egyenletei

Célunk a teher fordulatszámának szabályozása a motor nyomatékán keresztül. Technológiai okok miatt csak a motor fordulatszáma mérhető, továbbá a tengely elcsavarodása egy bizonyos értéket nem haladhat meg.

4.9.3. Állapottér egyenletek

Legyen az állapotváltozók vektora:

,

(4.81)

A rendszer hibajelére vonatkozó állapottér egyenletei:

,

(4.82)

ahol a motor fluxusa, R az armatúraellenállás és L az armatúrainduktivitás.

A mérhető állapotváltozó a motor fordulatszáma, , így

, .

(4.83)

4.9.4. A csúszófelület tervezése

Klasszikusan a csúszófelületet, amely mentén a beavatkozó jelnek szakadása van, az állapotváltozók lineáris kombinációjával definiálják, esetünkben:

ahol az állandósult állapotot, illetve a tranziens viselkedést határozza meg. A és paramétereket úgy kell megválasztani, hogy ha a rendszer trajektóriája a csúszófelület mentén mozog, akkor a rendszer a kívánt módon (dinamikával) viselkedjen. A (4.84) alakú csúszófelület megtervezésekor a következő problémákkal állunk szemben:

Nehéz a (4.84) megszorítást a szabályozó tervezésekor számításba venni.

Az ún. illesztési feltételeknek megfelelően, az áram és a nyomaték állandósult állapotbeli pontos értékeinek ismeretére van szükségünk értékének megfelelő megválasztásához.

Nem mérhető az összes állapotváltozó.

Az első két probléma megoldására a tengelyelcsavarodás közvetlen szabályozását vezettük be [35]. A 3. problémára a 4.9.5 pontban térünk vissza. A szabályozási körben két hurok található, egy belső szabályozó hurok ügyel a tengely elcsavarodására. Mivel a belső hurok önmagában még nem vezeti a rendszert az állandósult állapotba, ezért van szükségünk a külső hurokra. A szabályozókör egyszerűsített felépítése a 4-18. ábran látható.A belső hurok szabályozása valósul meg csúszómódban, míg a külsőnél egy PI szabályozót alkalmaztunk. A külső fordulatszámszabályozó hurok szolgáltatja az alapjelet a belső hurok számára, és egyben impliciten értékére vonatkozó információt is tartalmaz.

A szabályozókör egyszerűsített vázlata
4.18. ábra - A szabályozókör egyszerűsített vázlata


A belső hurok fázisterének dimenziója, ahol a csúszófelületet kell megtervezni 5-ről 2-re csökken. E csökkentett dimenziójú fázisteret a 419. ábraán látjuk. A működés szempontjából nem megengedhető területet szürkén jelöltük.

A legrövidebb felgyorsulási időt úgy tudjuk elérni, ha a gyorsítási szakaszban a tengely elcsavarodása a maximális értéket veszi fel, (negatív alapjel esetén ), tehát az állapottarjektóriának a (vagy ) ponton kell ekkor tartózkodnia. Az állapottarjektóriát vastag egyenesek (nevezhetjük csúszóegyeneseknek) mentén lehet a (vagy ) pontba juttatni. A csúszóegyenesek egyenletét a következőképpen írhatjuk fel:

,

(4.85)

,

(4.86)

ahol a csúszómód időállandóját jelenti. Könnyen belátható, hogy ha (ahol i=+,-), akkor az adott kapcsoló egyenes alatt tartózkodik a trajektória, ha , akkor felette.

fázistere
4.19. ábra - fázistere


4.9.5. Megfigyelőre alapozott csattogásmentes szabályozási törvény

A szinguláris perturbáció elvét alkalmazva a szabályozó tervezésénél a szervomotor villamos időállandóját elhanyagoljuk. (A konkrét esetben ez egy ismert paraméter és számításba is tudnánk venni, de az a célunk, hogy elhanyagolások és a nem modellezett dinamika hatását bemutassuk).

A megfigyelő csökkentett számú állapotváltozói és állapotegyenletének mátrixai:

,

(4.87)

,

(4.88)

,

(4.89)

,

(4.90)

,

(4.91)

A megfigyelő diszkretizált egyenlete:

,

(4.92)

ahol és (4.88) és (4.89)-ból (4.57) alapján értelemszerűen következnek. A csúszófelület a következőképpen diszkretizálható:

,

(4.93)

ahol a külső hurok által számított alapjel. A csúszófelület együtthatóit pedig egy sorvektorral leírhatjuk:

.

(4.94)

Esetünkben (4.84) a következőképp módosul

,

(4.95)

amelyből kiszámítható az ekvivalens beavatkozó jel:

A szabályozási törvény (4.62) alakú.

A teljes szabályozó felépítése a 420. ábran tekinthető meg.

A teljes szabályozó felépítése
4.20. ábra - A teljes szabályozó felépítése


4.9.6. A kéttömeg rendszer csúszómód alapú közvetlen elcsavarodás szabályozásának kísérleti alkalmazása

Először az általunk javasolt megfigyelőre alapozott diszkrét idejű csúszómód szabályozót (továbbiakban ODSM) egy PI szabályozóval szimuláció útján hasonlítottuk össze (ld. 421. ábra). A 421. ábran megfigyelhető, hogy a PI szabályozó is behangolható úgy, hogy a gyorsítási szakaszban a tengely elcsavarodása nem haladja meg a megengedett maximális értéket, de ekkor a beállási idő többszöröse az ODSM szabályozó beállási idejének ld. 421. ábra/b. A 421. ábra/c-n jól megfigyelhető, hogy a PI szabályozó esetén a tengelyelcsavarodás lengése, míg az ODSM szabályozó esetén a tarjektória először a csúszóegyenes felé tart, majd a csúszóegyenes mentén eléri a maximálisan megengedhető tengelyelcsavarodást, végül a tengelyelcsavarodás referencia jele az állandósult értékre csökken, amit a trajektória is követ.

Korábban kihangsúlyoztuk, hogy a csattogás egyik legfontosabb forrása a nem modellezett nagy sajátfrekvenciájú dinamika. A 4-22. ábra ezt a hatást demonstrálja. Ahogy említettük a szimulációnkban a valóságos és a megfigyelő modellje abban különbözik egymástól, hogy az elsőben számításba vettük a motor villamos időállandóját, a másodikban viszont elhanyagoltuk azt. Elvégeztünk egy olyan szimulációt, amely pusztán abban különbözik 421. ábra ODSM szimulációjától, hogy a szabályozóba a motor fordulatszámát nem a megfigyelőtől, hanem a tényleges modelltől csatoltuk vissza. A motor villamos időállandójának elhanyagolása a csúszómód szabályozó teljes csődjéhez vezet. A 4-22. ábran r a referenciaszögsebesség, m motor szögsebessége és l a terhelés szögsebessége. A 4-22. ábra arra is magyarázatot ad, hogy sok kutatónak miért nem sikerült a klasszikus csúszómódszabályozót a gyakorlatban alkalmazni.

Szimulációs eredmények
4.21. ábra - Szimulációs eredmények


a. Tengelyelcsavarodásb. Szögsebességc. Állapottrajektória

A csattogás jelensége
4.22. ábra - A csattogás jelensége


A szimulációs eredmények után bemutatunk néhány mérési eredményt is. A kísérleti eszközt a 423. ábra mutatja.

A kísérleti berendezés
4.23. ábra - A kísérleti berendezés


A szabályozáshoz szükséges számításokat egy transputeres rendszeren végeztük el. A fordulatszám érzékeléséhez a motor oldalon egy nagy felbontású inkrementális enkódert alkalmaztunk (fordulatonként 36 000 impulzus). A terhelés oldali érzékelőnek a felbontása 3000 impulzus/fordulat volt. Az egyenáramú szaggató kapcsolási frekvenciája 20 kHz, a mintavételezési frekvencia 1.5 kHz volt. A 4-24. ábra/a-n az r a referenciaszögsebességet, m motor szögsebességét és l a terhelés szögsebességét, a 4-24. ábra/b-n a tengelyelcsavarodás referencia és becsült értékét láthatjuk.

Mérési eredmények
4.24. ábra - Mérési eredmények


a. Szögsebesség

b. Tengelyelcsavarodás

4.10. Következtetés

A csúszómód szabályozással kapcsolatos biztató elméleti eredmények után a gyakorlati próbálkozások jelentős része kudarcot vallott, ennek okát jól példázza a 4-22. ábra. Sok kutató ezért arra a következtetésre jutott, hogy a csúszómód egy érdekes elméleti eszköz, de gyakorlati jelentősége nincs, a leírt példában ennek ellenkezőjét bizonyítottuk. Természetesen a valóságban ideális csúszómód nem alakulhat ki. Mérnöki szempontból ennek egy közelítő és azon belül is az ún. csattogás mentes megvalósítása jelenti a kihívást. Példánkban sikerült egy gyakorlatban is működő csúszómódszabályozót megvalósítani egy lengésekre hajlamos, rugalmas tengellyel összekötött ún. kéttömeg rendszer szabályozására.

5. fejezet - Szervomotor szabályozási körének internetes távmérése (Laboratóriumi mérési gyakorlatok leírása)

Tartalom
5.1. A mérés célja
5.2. Bevezetés
5.3. Rendszer áttekintés
5.4. A mérésnél használt eszközök bemutatása
5.4.1. Egyenáramú szervohajtás
5.4.2. Állandó mágnessel gerjesztett egyenáramú motor
5.4.3. Motorvezérlő elektronika
5.5. Általános utasítások a mérésekhez
5.6. A PCI-1720 D/A kártya használata -- Motion control/Exercise 1 menüpont alatt található laboratóriumi mérési gyakorlat
5.6.1. A PCI 1720 kártya beállítása a „DRV_DeviceOpen” függvény segítségével
5.6.2. A feszültségszint beállítása a PCI 1720-as kártyán a DRV_AOVoltageOut függvénnyel
5.6.3. Mintaprogram a PCI 1720 kártya feszültség szintjének inicializálására és beállítására
5.7. Valós idejű óra használata a PCI 1720 D/A kártyával -- Motion control/Exercise 2 menüpont alatt található laboratóriumi mérési gyakorlat
5.7.1. Hogy valósul meg a valós idő nem valós idejű operációs rendszer alatt?
5.8. A PCI 1784 számláló használata -- Motion control/Exercise 3 menüpont alatt található laboratóriumi mérési gyakorlat
5.8.1. A PCI 1784-es kártya inicializálása a DRV_DeviceOpen függvénnyel
5.8.2. A számláló értékek visszaállítása a PCI 1784-es kártyán a DRV_CounterReset függvénnyel
5.8.3. A számlálás elindítása a PCI-1784 a kártyán a DRV_CounterEventStart függvénnyel
5.8.4. A számláló értékeinek olvasása PCI-1784 kártyán a DRV_CounterEventRead függvénnyel
5.8.5. Mintaprogram számlálási műveletekre a PCI-1784 kártyán
5.9. Nyílt szabályozó kör mérése -- Motion control/Exercise 4 menüpont alatt található laboratóriumi mérési gyakorlat
5.9.1. A DC szervomotorok elméleti háttere
5.9.2. A DC szervomotor felépítése és leíró áramköre
5.9.2.1. Egyenértékű áramkör
5.9.3. Matematikai modell
5.9.3.1. Időtartomány egyenletek
5.9.3.2. Frekvencia tartomány egyenletek
5.9.3.3. Átviteli függvények
5.9.4. A modell elemzése
5.9.4.1. Állapottér reprezentáció
5.9.4.2. Állandósult állapot
5.9.4.3. Statikus karakterisztika, munkapont
5.9.4.4. Átviteli függvény elemzése
5.9.4.5. Az átviteli függvény vizsgálata
5.9.4.6. A pontos és közelítő egyenlet:
5.9.5. A zajos fordulatszámjel szűrése
5.9.6. A mérés leírása
5.9.7. Mérési feladatok
5.10. Visszacsatolt kör mérések -- Motion control/Exercise 5 menüpont alatt található laboratóriumi mérési gyakorlat
5.10.1. Az irányításelmélet elméleti háttere
5.10.2. Áram szabályozó
5.10.3. Módszerek a PID szabályozó paramétereinek megválasztásához Ziegler-Nichols módszer
5.10.4. Mérési feladatok: fordulatszám szabályozás
5.10.5. Mérési feladatok: pozíció szabályozás

5.1. A mérés célja

A mérés a felhasználót megtanítja egy szervo hajtás, illetve egy robot számítógép általi vezérlésére. Első lépésben a felhasználó megismerkedik a számítógép és a mozgó robot egyik fontos elemével, a szervo hajtás és a számítógép közti kommunikációval, majd a robot beágyazott rendszere kerül vizsgálatra (a robot kezeléséhez külön útmutató áll rendelkezésre).

Digitális - analóg átalakítón keresztül juttatjuk el az információt a számítógépből a szervo hajtáshoz, mivel a szervo hajtás referencia jele az esetek többségében analóg feszültség. A motor mozgását egy encoder méri, amely egy impulzus sort küld a számítógépnek. Egy számláló számlálja az encoder által küldött impulzusokat, és a számítógép az encoder által küldött értékekből tudja meghatározni a motor pozícióját. A motor sebessége az előző és a jelenlegi pozíció adataiból számolható. Ez viszont zajos jelet eredményez. A mérés egy diszkrét idő-filtert tartalmaz ennek a zajnak a csökkentésére. A felhasználó megtanulhatja annak a szervomotornak PI vezérlőjének írását és hangolását.

A kezelőnek nem szükséges haladó szintű programozási ismeretekkel rendelkeznie, de az alapok szükségesek. A felhasználónak csak nagyon egyszerű C ill. Visual Basic programokat kell tudni megírni. A rendelkezésre adott példák alapján a felhasználó akkor is el tudja készíteni a programot, ha ez az első neki.

A kísérletek a http://dind.mogi.bme.hu/experiment/ címen érhetők el (a használathoz regisztráció szükséges).

5.2. Bevezetés

Az automatizálás és a robotizáció vált vezető trenddé az iparban a versenyhelyzet és a környezeti követelmények változásának hatására. A munkaerő költsége megnőtt, ezért az ismétlődő, kreativitást nem igénylő munkahelyeken célszerűbbé vált az automatizálás, a mozdulatok robotokkal történő elvégeztetése. Ugyanakkor ez a bonyolultabb, több kreativitást és ismeretet igénylő munkahelyek számának növekedésével járt, ami azt eredményezte, hogy a munkahelyek száma lényegesen nem csökkent, viszont a munkaerő szükséglet inkább a technikusok, mérnökök irányába tolódott el. Az EU kiemelt direktívákat fogalmazott meg a magas hozzáadott értéket tartalmazó termékek előállítása során kialakítandó munkakörnyezetre, valamint a kis- és középvállalkozások felsőfokú végzettségű fejlesztő műszaki szakemberek iránti igényeinek kielégítésére. Ez mind az egyre bonyolultabb termékeknek és az EU fejlettebb munkakörnyezetre fektetett hangsúlyának tulajdonítható. A fejlettebb robotrendszerek működtetésére viszont magasabb fokú végzettség szükséges, amely a kis- és középvállalkozásoknál nem áll mindig rendelkezésre. Egy emelt szintű mozgásszabályozás tárgynál az előadó hivatkozhat az internetre, mint forrásra. Ebben a speciális kurzusban új technológiákat és tanulási módszereket vegyítünk. Az interaktív multimédia alkalmazások (animációk, szimulációk, táv feladatok) és a webalapú laboratóriumi tesztek egy személyi tanulói környezetet tudnak alkotni, mely az év minden napján, bármikor rendelkezésre tud állni.

A DC motoroknak különleges helyük van az ipari elektronika történetében, mivel minden ipari szervohajtás DC motorokat használt, és az első mikroprocesszoros hajtás is DC motoros volt [36]. Számos hátrányuk ellenére jelenleg is alkalmazzák azokat [37][38]. Fő előnyük mégis, hogy a szabályozás szempontjából egyszerűek. A mikrovezérlők térnyerése előtt csak ezeket lehetett szervohajtásokban használni. Alkalmazásuk különféle DC-szervo rendszerek szabályozásához egyszerű. Érthető, miért is először DC szervo rendszerekhez használnak egyes új szabályozási módszereket. Bár a trend az, hogy a legkülönfélébb típusú motorral működő hajtásokat (indukciós mezőorientált [39], és kefe nélkülit [40]) DC szervohoz hasonlóan kezeljenek. A PID szabályozó még mindig az egyik iparilag legelterjedtebb szabályozó[41]. A másik népszerű módszer a csúszómód szabályozás, amelyet először a ’70-es évek végén mutattak be [42], és a precíziós mozgásszabályozási rendszerekre csak a közelmúltban kezdték el használni.[43]. Az újabb alkalmazásokban a csúszómód szabályozást különböző lágy számítási módszerekkel együtt alkalmazzák [44][45]. A csúszómód szabályozás változó struktúrájú rendszerekben speciális szerepet tölt be, mint robusztus szabályozás. Először is a csúszómód tulajdonság pontos leírása komoly matematikai hátteret igényel, melyet [46][47] fogalmazott meg, a ’60-as évek elején. Másodszor elég egyszerű a beillesztése a legtöbb mérnöki alkalmazásban, mivel legtöbb esetben csak egy relé szükséges. A használati útmutatóban bemutatott példákban nem szükséges az olvasó jártassága a felsorolt hivatkozásokban.

5.3. Rendszer áttekintés

A webalapú kísérletek fontos szerepet játszanak a következő generációjú laborokban. A kísérletek egész nap végezhetők. A regisztrációt követően biztosított a laborhoz való hozzáférés. Ez a fejezet a DC motor vezérlésével foglalkozik és minden más ehhez szükséges elméleti és kísérleti hátteret tartalmaz, vagy hivatkozik arra.

A használati útmutató utasításait követve a felhasználó jártasságra tesz szert elektromos rendszerek és jelen specifikus esetben, a DC szervo hajtás vezérlésére. (ld. 5-1. ábra).

A PC-re kötött DC motor elemi szintű működtetéséhez a következő rendszerelemek szükségesek:

  1. Egy kártya, ami az analóg jelet generálja a hajtás be- ill. kikapcsolásához és a referenciajel előállításához (pl. D/A kártya)

  2. Egy kártya, ami bemenetén az enkóder jelet veszi és továbbítja a PC-nek (pl. A/D kártya vagy számláló kártya)

  3. Egy valós idejű óra, ami időzíti a mintavételezést, vagy a feladatok végrehajtását.

A használók megtanulják a modern irányítási elméletek valós körülmények közti beiktatásával a fentebb felsorolt kártyák programozási alapjait.

A rendszer áttekintő ábrája
5.1. ábra - A rendszer áttekintő ábrája


A rendszer kulcselemei, amiket használunk:

  • Ipari Siemens PC Pentium 4, 2.8 GHz processzorral

  • Advantec PCI-1720 D/A kimeneti kártya az 1-es funkcióhoz

  • Advantec PCI-1784 számláló bemeneti kártya a 2-es funkcióhoz

  • Szervo hajtás:

  • Szervoerősítővel

  • Maxon A-max 26(110961) DC motorral

  • Maxon Digital Encoder HP HEDL 5540

  • Maxon bolygómű GP 26(110395)

  • WebCam a labor megjelenítésére a monitoron

  • MATLAB program

5.4. A mérésnél használt eszközök bemutatása

5.4.1. Egyenáramú szervohajtás

Ebben a fejezetben a méréshez használt hajtást mutatjuk be. Mivel a méréseknél finom mozgásokat akarunk közvetíteni, ezért egy precíziós méretű motort választottunk. Szabályozástechnikai szempontból az állandó mágnessel gerjesztett egyenáramú motor egy kedvező beavatkozó szerv.

5.4.2. Állandó mágnessel gerjesztett egyenáramú motor

Egy állandó mágnessel gerjesztett egyenáramú motort választottunk. Maxon A-max sorozatú, 26 mm tengelyátmérőjű, 11 W teljesítményű, grafitkefés motort használtuk fel. A motor névleges tápfeszültsége 15V. 1999. évi Maxon katalógus 97. oldal, motor rendelési száma: 110961. A motor szögelfordulását, és forgásirányát egy optikai útadóval (enkóder) érzékeljük. A motorra a Maxon HEDL-5540-es digitális enkódert szereltük fel.

Maxon digitális enkóder, HEDL-5540
5.2. ábra - Maxon digitális enkóder, HEDL-5540


HEDL-5540 digitális enkóder csatlakozója
5.3. ábra - HEDL-5540 digitális enkóder csatlakozója


A digitális enkóder kimenetei a következők:

Az enkóder kimenetein digitális jel jelenik meg. Az enkóderben a DS26LS31C típusú vonali meghajtóáramkört helyezték el. Az 1, 3 lábakon az enkóder tápfeszültségét lehet bekötni, amely 5 V egyenfeszültség. Az 5-6 lábakon az A csatorna (0 fokos fázisszög), a 7-8. lábakon a B csatorna (90 fokos fázisszög), a 9-10. lábakon pedig az Index csatorna kivezetései találhatóak. Az Index jel nagyon fontos, főleg pozíciószabályozásnál, ugyanis a szabályozás kezdetekor a motor tengelyének helyzete nem ismert, és ez a szabályozás során állandó hiba forrása lehet. Ezért a szabályozás indítása előtt a motort egy előre meghatározott helyzetbe, ún. index pozícióba kell állítani. Az enkóder is rendelkezik ilyen index pozícióval, és ha a motor tengelye áthaladt az index pozíción, akkor az index csatorna 1-es jelet ad ki.

5.1. táblázat - A motor paraméterei

Jele

Értéke

Mértékegység

Megjegyzés

P

11

Watt

névleges tengelyteljesítmény

Ukn

15

Volt

Névleges feszültség

N

7950

min^-1

Üresjárási fordulatszám

Mt

73.9

mNm

Tartónyomaték

M

110

min^-1/mNm

Jelleggörbe meredekség

I

34

mA

Üresjárati áram

I max

4190

mA

Tartóáram

Ran

3.58

ohm

Armatura ellenállás

nmax

10400

min^-1

Határfordulatszám

Inmax

1070

mA

Maximális tartós terhelőáram

Mnmax

18.9

mNm

Max. tartós nyomaték

Pmax

14.6

W

Max. Felvett teljesítmény

Etamax

80.3

%

max. hatásfok

Km

17.6

mNm/A

Nyomaték konstans

Ke

541

min^-1/V

= 9.01 sec^-1/V = 56.65 rad/sec/V feszültség konstans

Tm

14.5

msec

Mechanikai időállandó

Jm

12.6

gcm^2

= 12.6E-7 kgm^2 rotor tehetetlenségi nyomatéka

Lan

0.33

mH

Armatura induktivitás

Rt1

13.20

K/W

Thermodinamikai ellenállás a ház és a környezet(levegő) között

Rt2

3.20

K/W

Thermodinamikai ellenállás a rotor és a ház között


5.4.3. Motorvezérlő elektronika

A motorvezérlésnél a Maxon 4QD- 50V/5A típusú szervoerősítőt használtuk fel.

A berendezés paraméterei:

Teljes négynegyedes hajtásvezérlés motor és generátoros üzemmódban egyaránt, gyorsítás, fékezés, a motor irányváltása. Az üzemi feszültség 12-50 V egyenfeszültség, rövid ideig 10 A áramot is képes szolgáltatni, de az üzemi kimenő árama 5 A, és így a maximális üzemi teljesítménye 250 W. A szervoerősítő a 5-4 ábrán látható. A szervoerősítő bemeneteire enkóder, és tachogenerátor kapcsolható, áram és fordulatszám kimenetekkel rendelkezik, valamint PWM üzemmódban is működtethető.

Maxon 4QD-50V/5A szervoerősítő
5.4. ábra - Maxon 4QD-50V/5A szervoerősítő


A szervoerősítő elsődleges feladata a motor tengelyének terheléstől független, megadott sebességű forgatása. A szervoerősítőben található vezérlőelektronika folyamatosan figyeli a motor sebességét, és összehasonlítja a beállított értékkel. Ha eltérést észlel, akkor módosítja a szervoerősítő kimenetének értékét, és ezzel vezérli a motort. A végeredmény egy zárt sebességvezérlő hurok. Természetesen a sebesség vezérlését többféle módon végezhetjük:

Tachogenerátorral

Digitális enkóderrel

I x R kompenzációval

Tachogenerátoros sebességvezérlés:

A motorra egy tachogenerátor felszerelve, az a fordulatszámmal arányos egyenfeszültséget ad. Előnye, hogy nagyon pontos, hátránya hogy a tachogenerátor, mivel mechanikus alkatrész, egy idő után cserére szorul.

Sebességvezérlés digitális enkóderrel:

A motorra egy digitális enkódert felszerelve, az egy körülfordulás alatt bizonyos számú jelet küld. Az enkóderek kétfajta jelet állítanak elő, a két jel között 90 fok a fáziseltérés. Ez teszi lehetővé az elfordulás irányának érzékelését. Mivel az enkóder nem mechanikus, ezért élettartama nagyon hosszú. Hátránya, hogy drága.

Sebsességvezérlés I x R kompenzációval:

A motor tápfeszültsége arányos a motor előírt sebességével. Ha megnő a motor terhelése, akkor a fordulatszám lecsökken. A szabályozó áramkör megemeli a motor feszültségét, (ezzel áramát is), hogy az előírt fordulatszámot tartani tudja. A kompenzációnak azonban figyelembe kell venni a motor ellenállását, ami a hőmérséklet és terhelésfüggő. Ezért ez a szabályozási mód kevésbé pontos. A módszer előnye, hogy nincs szükség külső segédberendezésre, tehát olcsó, hátránya a pontatlanság.

A szervoerősítőbe áramkorlátozó áramkör van beépítve. A szabályozó a motor áramát állítja, ami arányos a fordulatszámmal, és a nyomatékkal. A szervoerősító kétféle üzemmódban képes működni:

lineáris

PWM

A lineáris szabályozási mód esetében a motor feszültségét () a szabályozó áramkör állítja be úgy, hogy egy előtét a potenciaméter értékét állítja. A potenciaméteren eső feszültség () a potenciaméteren hővé alakul, emiatt jelentősen romlik a hatásfok.

PWM motorszabályozás
5.5. ábra - PWM motorszabályozás


A PWM szabályozási mód esetében a motort nagyon gyorsan ki/be kapcsolgatjuk, ezzel állítva be a kívánt fordulatszámot. A motor átlagfeszültsége arányos a ki/bekapcsolt állapot idejével. A hő miatti hatásfokveszteségek alacsonyak. Jó hatásfokú, de viszonylag bonyolult kiegészítő áramköröket kíván.

A kiválasztott szabályozási mód a szervoerősítőn DIP kapcsolókkal állítható be. A maximális fordulatszám, az áram, valamint az erősítés a P1-P5 potenciaméterekkel szabályozható.

Szervoerősítő blokkvázlata
5.6. ábra - Szervoerősítő blokkvázlata


A rendszer előnye nagyfokú integráltságában rejlik. Ha a felügyelő PC (Host PC) egy számítógéphálózatra kapcsolódik, pl. az internetre, akkor megfelelő programok segítségével, tetszőlegesen távoli helyről felügyelni lehet a rendszert, és szükség esetén be lehet avatkozni. Ehhez a gondolathoz megjegyezzük, hogy a Matlab RTW része tartalmaz olyan függvényeket, amelyek segítségével a két tetszőlegesen távol lévő modell adatokat tud cserélni az interneten keresztül. Így a Matlab szoftver segítségével a probléma megoldható.

E mérésnél az áramvezérlést (Current Controller) használtuk fel, a fordulatszámvezérlést (Speed Controller) az 1-es DIP kapcsoló rövidre zárásával iktattuk ki. A maximális áram beállítása nagyon fontos, ugyanis, ha a motor terhelése annyira megnő, hogy forgása lelassul, ebben az esetben olyan áram is keletkezhet, amely már káros a motor tekercselésének.

5.5. Általános utasítások a mérésekhez

Egy feladat megnyitásához, válasszuk ki azt a menüből vagy a legördülő listából, ahogy az alábbi ábra mutatja.

A feladat kiválasztása
5.7. ábra - A feladat kiválasztása


Minden gyakorlat elérhető a kísérletek honlapjáról. A feladatok sorrendileg egymásra épülnek, avagy az előzőek megoldásából lehet a következőket felépíteni. Az első feladatot az ábra mutatja.

Az első feladat oldalképe
5.8. ábra - Az első feladat oldalképe


A feladat utasításainak és a rendelkezésre álló súgó fájloknak és forrásoknak elolvasása után a rendszert irányító program az adott mezők kitöltésével megírható. A keretprogram C++ nyelven íródott, a saját változókat és a kódot két beviteli mezőben lehet bevinni, ahogy azt az alábbi ábra mutatja.

5-10. ábra: A változó deklaráció és programkód beviteli ablaka

A kísérlet végrehajtásához nyomjuk meg a honlap alján található Upload gombot.

Ha a fordítás sikeres, a gyakorlat eredménye letölthető/megnézhető.

Minden feladat eltérő eredményt ad. Ezek megtekinthetők ill. kiszámíthatók a számítógépen

  • kameráról (pl. video kép)

  • matlab fájlokból (pl. pozíció, feszültség, sebesség, idő)

  • grafikonokból (pl. . pozíció, feszültség, sebesség-idő)

A kimenetre példát az ábra mutat, ahol épp a sebesség időfüggvényt tekintjük meg. Ha a (fel) nyílra klikkelünk, akkor a sebesség-időfüggvény eltűnik, ha egy (le) nyílra klikkelünk, akkor az aktuális ábra megjelenik. A mérési eredményeket és az aktuális szabályozó programot elmenthetjük.

Experiment is complete!

Click to show time-time graph

Click to show time-position graph

Click to hide time-velocity graph

Mérési eredmény képernyőképe
5.9. ábra - Mérési eredmény képernyőképe


Click to show time-torque graphSelect item to download:

5.6. A PCI-1720 D/A kártya használata -- Motion control/Exercise 1 menüpont alatt található laboratóriumi mérési gyakorlat

Minden PC alapú mérés egy PC-n kívüli kommunikációs csatorna megnyitásával kezdődik. A motor vezérlése esetében a kezdő pont a digitál-analóg átalakító kártya vezérlése. Ez a kártya lehetővé teszi, hogy meghatározott feszültségértékeket küldjünk a PC-ről a vizsgált rendszerre. A kártyához egy programozó felület tartozik (DLL, Dynamic Link Library), amelyet C++ nyelven meg tudunk hívni. A DLL előre betöltött, csak a függvények meghívását kell bevezetni.

A kártya az Adventech cég PCI-1720-as modellje, 4 D/A kimeneti csatornával rendelkezik, amelyek -5V és 5V közti feszültséget tudnak kivezetni.

5.6.1. A PCI 1720 kártya beállítása a „DRV_DeviceOpen” függvény segítségével

A függvény meghívása: status = DRV_DeviceOpen(DeviceNum, DriverHandle)

Rendeltetése: a registry vagy konfigurációs fájlból kinyeri az eszköz működtetéséhez szükséges paramétereket, és a gyors elérhetőség érdekében megcímzi a memóriát. Ezt a függvényt minden más függvény előtt meg kell hívni.

Név

Iránya

Típus

Tartomány

Leírás

DeviceNum

Input

címzetlen long

alapértelmezett

berendezés szám

DriverHandle

Output

Long pointer

alapértelmezett

pointer a berendezés konfigurációs adataihoz

Eredmények:

  1. SUCCESS, ha sikeres;

  2. MemoryAllocateFailed, ha a memória lefoglalása sikertelen;

  3. ConfigDataLost, ha a konfigurációs adat elvész;

  4. CreateFileFailed, ha az alsó szintű meghajtónál megnyitási hibák vannak.

Megjegyzések:

  1. Minden további függvény a DriverHandle paraméter által megszerzett konfigurációs adatok alapján hajtja végre az I/O műveletet;

  2. A műveletek után meg kell hívni a DRV_DeviceClose-t a DRV_DeviceOpen által lefoglalt memória felszabadítása érdekében.

5.6.2. A feszültségszint beállítása a PCI 1720-as kártyán a DRV_AOVoltageOut függvénnyel

A függvény meghívása: status = DRV_AOVoltageOut(DriverHandle, lpAOVoltageOut)

Rendeltetése: beolvas egy lebegőpontos értéket, átalakítja a megfelelő bináris értékké, majd beírja a számot egy analóg kimeneti csatornába, hogy azon megváltozzon a feszültség.

Név

Iránya

Típus

Tartomány

Leírás

DriverHandle

Input

long

alapértelmezett

a DRV_DeviceOpen határozza meg

lpAOVoltageOut

Input/Output

long pointere PT_AOVoltageOut -nak

alapértelmezett

chan és OutputValue

tárolási címe

Eredmények:

  1. SUCCESS, ha sikeres;

  2. InvalidDriverHandle, ha DriverHandle = NULL;

  3. InvalidChan, ha a bemeneti csatorna tartományon kívülre esik;

  4. BoardIDNotSupported, ha ezt a függvényt nem támogatja az eszköz.

5.6.3. Mintaprogram a PCI 1720 kártya feszültség szintjének inicializálására és beállítására

Megjegyzés:

A paraméterek nevei ebben a példában eltérnek a mérésben valóban használtaktól. Nem lehet egyszerűen másolni és beilleszteni ezt a példát.

/*
 **************************************************************************** 
 * Program        : DASOFT.CPP                                              * 
 * Description    : Demo program for analog output function                 * 
 * Boards Supp.   : PCL-818 series/818HG/1800/816/812PG/711B/726/727/728,   * 
 *                  PCI-1710/1720, MIC-2728, ADAM-4021/5024                 * 
 * APIs used      : DRV_DeviceOpen,DRV_DeviceClose, DRV_GetErrorMessage     * 
 *                  DRV_AOVoltageOut                                        * 
 * Revision       : 1.00                                                    * 
 * Date           : 7/8/1999                   Advantech Co., Ltd.          * 
 **************************************************************************** 
 */
#include <windows.h>
#include <windef.h>
#include <stdio.h>
#include <conio.h>
#include "..\..\..\include\driver.h"
/******************************
 * Local function declaration *
 ******************************/
void ErrorHandler(DWORD dwErrCde);
void ErrorStop(long*, DWORD);
void main()
{
    DWORD  dwErrCde;
    ULONG  lDevNum;
    long   lDriverHandle;
    USHORT usChan;
float  fOutValue;
PT_AOVoltageOut tAOVoltageOut;
    //Step 1: Display hardware and software settings for running this example
    printf("Before running this example, please\n");
    printf("use the device installation utility to add the device.\n");
    //Step 2: Input parameters
    printf("\nPlease input parameters:");
    printf("\nDevice Number (check the device installation utility): ");
    scanf("%d", &lDevNum);
    printf("\nOutput Channel: ");
    scanf("%d", &usChan);
    printf("\nOutput Value: ");
    scanf("%f", &fOutValue);
    //Step 3: Open device
    dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        printf("Program terminated!\n");
        printf("Press any key to exit....");
        getch();
        exit(1);
    }
    // Step 4: Output value to the specified channel
    tAOVoltageOut.chan = usChan;
    tAOVoltageOut.OutputValue = fOutValue;
    dwErrCde = DRV_AOVoltageOut(lDriverHandle, &tAOVoltageOut);
    if (dwErrCde != SUCCESS)
    {
        ErrorStop(&lDriverHandle, dwErrCde);
        printf("Press any key to exit....");
        getch();
        return;
    }
    // Step 5: Display ouptut data
    printf("\nOutput data = %f\n", fOutValue);
    // Step 6: Close device
    dwErrCde = DRV_DeviceClose(&lDriverHandle);
    printf("\nPress any key to exit....");
    getch();
}//main
/***********************************************************************
 * Function: ErrorHandler                                              *
 *           Show the error message for the corresponding error code   *
 * input:    dwErrCde, IN, Error code                                  *
 * return:   none                                                      *
 **********************************************************************/
void ErrorHandler(DWORD dwErrCde)
{
    char szErrMsg[180];
    DRV_GetErrorMessage(dwErrCde, szErrMsg);
    printf("\nError(%d): %s\n", dwErrCde & 0xffff, szErrMsg);
}//ErrorHandler
/*
 ***************************************************************************
 * Function:   ErrorStop                                                   *
 *             Release all resource and terminate program if error occurs  *
 * Paramaters: pDrvHandle, IN/OUT, pointer to Driver handle                *
 *             dwErrCde, IN, Error code.                                   *
 * return:     none                                                        *
 ***************************************************************************
*/
void ErrorStop(long *pDrvHandle, DWORD dwErrCde)
{
    //Error message 
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    //Close device
    DRV_DeviceClose(pDrvHandle);
}//ErrorStop

5.4 mérési feladat: PCI-1720 D/A kártya használata

A feladat a kártya 3-as csatornájának 5 Volt értékre való beállítása. Tulajdonképpen ez az 5 Volt teszi lehetővé a szervohajtás működését.

Szükséges lépések:

  • Hasonlítsuk össze az „Adventech specifikus változókat” a keretrendszer programban és a mintaprogramban. Találjuk meg a megváltozott változókat.

  • Állítsuk be a kártyát (vágjuk ki és illesszük be a 3. és 4. lépést a mintaprogramból).

  • Módosítsuk a megváltozott változókat.

  • Távolítsuk el az érdektelen részeket (printf(); és getch(); utasításokat, amelyek szöveg kiírására és karakter beolvasásra szolgálnak).

  • Állítsuk be a (kimeneti) feszültséget (5 Voltra a 3-as csatornán).

5.7. Valós idejű óra használata a PCI 1720 D/A kártyával -- Motion control/Exercise 2 menüpont alatt található laboratóriumi mérési gyakorlat

A második fontos feladat egy PC alapú mérésnél a mintavételezés. Ezért szükségünk van egy valós idejű órára, ami bármikor, tetszőleges frekvencián el tudja kezdeni a számlálást. Különböző valós idejű operációs rendszerek érhetők el szinkronizálható valós idejű órajellel. A több feladat egyszerre kezelésére alkalmas Windows operációs rendszer nem támogatja a valós idejű alkalmazásokat, de a Real Time eXtension (RTX) for Control of Windows megoldást nyújt a kérdésre. Leírása lentebb olvasható, de működési módjának megértése nem szükséges a mérésekhez. A valós idejű órajel alkalmazását kell ebben a laboratóriumi gyakorlatban elvégezni. Egy óra ketyeg (milliszekundumonként) a gyakorlatban megadott programban.

5.7.1. Hogy valósul meg a valós idő nem valós idejű operációs rendszer alatt?

(olvasmány)

Real Time eXtension (RTX) for Control of Windows egy optimalizált bővítmény a Windows operációs rendszerhez. Nem egy valós idejű operációs rendszer ( Real Time Operating System) amit Windowsra portoltak. Az RTX precíz irányítást enged IRQ-k (Interrupt Request: megszakítási kérések), I/O, és memória felett, hogy biztosítsa az egyes feladatok megfelelő sorrendben és 100% biztossággal való végrehajtását. A Ring 0-ban való működtetés alatt az RTX biztosítja a legmagasabb teljesítményt és csak minimális beállítást igényel, biztosítva a 30Khz-es interruptokat 1 mikroszekundomos IST késési átlaggal. RTX egy igazi Windows bővítmény, alkalmazza az összes standard Windows szabványt, az API-kat, memória kezelést, SRI-ket, mutexeket, és a Windows fejlesztők számára ismert szemafórokat. Az RTX alkalmazás ki tudja használni a Windows és a Ring 3-ban lévő Intel architektúra által biztosított memóriavédelmi mechanizmusokat. Amint a fejlesztő kész a hibakereséssel és megbizonyosodik arról, hogy a memória mutatók és tömbök helyesek, az RTX alkalmazást azonnal újra lehet fordítani, hogy Ring 0-ban fusson az optimális teljesítményért. Ez a fő architektúra, amely az 5-12. ábrán látható.

Az RTX architektúra egy valódi kiegészítés, ami nem foglalja magába a Windows-t és nem avatkozik bele, vagy módosítja bármely elemét. Az elkülönítéssel az RTX valós idejű szub-rendszer (RTSS) biztosítja, hogy az RTX alapú alkalmazások túléljék a Windows összeomlásait, vagy „kék halálait”. Az RTX RTSS kernel egy nagy sebességű időzítőre lett tervezve, amik mind preemptikus, mind körbenforgó (round-robin) algoritmust használnak. Az RTX 1000 független folyamatot tud támogatni, amelyben minden folyamat korlátlan szálat támogat. Az alkalmazások finom vezérlését a 256 szintes szálprioritás beállítása biztosítja. Az ütemező azt garantálja, hogy a kritikus szál 500 nanoszekundumos prioritással vegye át a vezérlést. Az RTX folyamatok és Win32 alkalmazások közötti adatkommunikáció megkönnyítésére az RTX egy nagy teljesítményű üzenetküldő és szinkronizációs IPC mechanizmust használ. Egy megosztott memória modell használatával az IPC nagy mennyiségű adat átadására képes anélkül, hogy a teljesítmény csökkenne. Valós idejű rendszerben az esemény pontos végrehajtása kritikus. A pontosság elérése érdekében az RTX három órát használ, amelyekre alapozza az esemény időzítését. Az óra felbontása, a használt órától függően, akár 0,001 nanoszekundumos is lehet, anélkül, hogy bármilyen elcsúszás adódna.

Real-Time Extension architektúra
5.10. ábra - Real-Time Extension architektúra


5.5 mérési feladat: Egy szinuszos feszültség-idő függvény megjelenítése a PCI 1720 A/D kártya kimenetén

Meg kell határozni az összefüggést a mintavételi idő és a szinusz hullám között (3 Voltos amplitúdóval 1HZ-es frekvencián). A mintavételezés 0-tól kezdődik és a CurrentTime változón keresztül érhető el a programból. Ezt a váltózót a time_array[tickCount] változóval lehet elérni, ami 100 nanoszekundumos egységű adatot ad vissza.

Szükséges lépések:

  • Áttanulmányozni a megadott keret programot;

  • Beírni a hiányzó kódokat;

  • deklarálni a paramétereket és változókat;

  • Out=Amlitude * sin (Angular Frequency *time)(megjegyzés: ez nem egy C kód, és a time-ot a TimerHandler függvénnyel kell beolvasni).

5.8. A PCI 1784 számláló használata -- Motion control/Exercise 3 menüpont alatt található laboratóriumi mérési gyakorlat

A számlálót az enkóderből jövő jel beolvasására használjuk, amit aztán numerikusan megjelenítünk. A számláló értékét a TimerHandler függvény olvassa be, ami a valós óra minden jelére végrehajtódik.

5.8.1. A PCI 1784-es kártya inicializálása a DRV_DeviceOpen függvénnyel

Függvény hívása: status = DRV_DeviceOpen(DeviceNum, DriverHandle)

Rendeltetése: megszerzi az eszköz működtetéséhez szükséges paramétereket a regiszter ill. konfigurációs fájlból, és lefoglalja a memóriát a gyors hivatkozáshoz. Ezt a függvényt minden más függvény előtt meg kell hívni.

5.2. táblázat - Paraméterek

Név

Irány

Típus

Tartomány

Leírás

DeviceNum

Input

határozatlan hosszú

alapértelmezett

eszköz száma

DriverHandle

Output

long pointer

alapértelmezett

pointer a az eszközhöz való konfigurációs adatokhoz


Eredmény:

  1. SUCCESS, ha sikeres;

  2. MemoryAllocateFailed, ha a memória allokáció hibás;

  3. ConfigDataLost, ha a konfigurációs adat elveszett,

  4. CreateFileFailed, ha egy alacsonyabb szintű drivert nem lehet megnyitni.

Megjegyzések:

  1. Minden további függvény a DriverHandle által beszerzett konfigurációs adatok alapján hajtja végre az I/O műveleteket.

  2. Az I/O műveletek után a felhasználónak meg kell hívni a DRV_DeviceClose, hogy szabaddá tegye a DRV_DeviceOpen által allokált memóriát.

5.8.2. A számláló értékek visszaállítása a PCI 1784-es kártyán a DRV_CounterReset függvénnyel

Függvény meghívása: status = DRV_CounterReset(DriverHandle, counter)

Rendeltetése: Kikapcsolja az adott számláló műveletet.

5.3. táblázat - Paraméterek

Név

Irány

Típus

Tartomány

Leírás

DriverHandle

Input

long

alapértelmezett

DRV_DeviceOpen rendeli el

counter

Input

long

alapértelmezett

számláló csatorna


Eredmény:

  1. SUCCESS, ha sikeres;

  2. InvalidDriverHandle, ha DriverHandle = NULL;

  3. BoardIDNotSupported, ha a függvényt nem támogatja az eszköz;

  4. InvalidChannel, ha a port száma az értelmezési tartományon kívül van.

5.8.3. A számlálás elindítása a PCI-1784 a kártyán a DRV_CounterEventStart függvénnyel

Függvény meghívása: status = DRV_CounterEventStart(DriverHandle, lpCounterEventStart)

Rendeltetése: Konfigurálja a kiválasztott számlálót a feladatra és elindítja azt.

5.4. táblázat - Paraméterek

Név

Irány

Típus

Tartomány

Leírás

DriverHandle

Input

long

alapértelmezett

DRV_DeviceOpen rendeli el

LpCounterEventStart

Input/Output

long pointer a PT_CounterEventStart-hoz

alapértelmezett

a tárolási címe counter-nek és GateMode-nak


Eredmény:

  1. SUCCESS, ha sikeres;

  2. InvalidDriverHandle, ha DriverHandle = NULL;

  3. BoardIDNotSupported, ha a függvény nem támogatott az eszközön,

  4. InvalidChannel, ha a port száma tartományon kívül esik.

Műveletek:

  1. A programozás módszere a lapon található számláló/időzítő chiptől függ. Két fajta chipet szoktak használni az A/D kártyákon: Intel 8254 és AMD Am9513A. Az Am9513A-nél, a 0-9 es csatornák felmenő él számlálóként is tudnak működni. Csatlakoztassa a külsőjel generátorát a használni kívánt bemenő órajel csatornára. Ha a hardveres ”kapuzás”, amelyben a számlálót egy külső eszköz indíthatja egy másik bemenetről, előírt, válasszon egy kapuzás típust és használjon külső eszközt a számláló bemenetének triggereléséhez.

  2. Mindkét előbb említett időzítő/számláló chip 16 bites, de a függvény 32 biteset támogat, vagy 232-ig számol. Leellenőrzi, hogy a számláló nem csordult-e túl, és átszámolja 32 bitre.

  3. Intel 8254 hardware 2 ciklusidőt igényel a számláló beállításainak visszaállításához, tehát a számláló programnak 2 külsőjelet (ciklusidőt) meg kell várnia, hogy pontos számláló értéket olvasson be. A ”DRV_CounterEventStart” első meghívásakor, az Intel 8254 hardware alapértékeket használ a számláló beállításainak inicializálásához. Ez az inicializálás két külsőjelig (ciklusideig) tart. Ha a ”DRV_CounterEventRead” az inicializálás befejezése előtt hívódik meg, a program helytelen értéket kap. Tehát 2 külsőjelet (ciklusidőt) kell késleltetni a programban, mielőtt meghívjuk a ”DRV_CounterEventRead”-et, hogy a visszakapott érték pontos legyen. A késleltetés ideje függ a külső jelek közti időtől.

5.8.4. A számláló értékeinek olvasása PCI-1784 kártyán a DRV_CounterEventRead függvénnyel

Függvény meghívása: status = DRV_CounterEventRead(DriverHandle, lpCounterEventRead)

Rendeltetése:Kiolvassa a jelenlegi számláló összeget anélkül, hogy a számlálást megzavarná és visszaadja a számláló és túlcsordulás feltételeit.

5.5. táblázat - Paraméterek:

Név

Irány

Típus

Tartomány

Leírás

DriverHandle

Input

long

alapértelmezett

aDRV_DeviceOpen rendeli el

lpCounterEventRead

Input/Output

long pointer a PT_CounterEventRead-hez

alapértelmezett

a tárolási cím counter, overflow-hoz és count-hoz


Eredmény:

  1. SUCCESS, ha sikeres;

  2. InvalidDriverHandle, ha DriverHandle = NULL;

  3. BoardIDNotSupported, ha a függvényt az eszköz nem támogatja;

  4. InvalidChannel, ha a port száma tartományon kívülre esik.

5.8.5. Mintaprogram számlálási műveletekre a PCI-1784 kártyán

Megjegyzés:

A paraméterek nevei a bemutatott példában eltérnek a mérésben valójában használt nevektől. Nem szabad egyszerűen kivágni és beilleszteni a részeket a példából.

/*
*****************************************************************************
 * Program           : COUNTER.CPP                                          *
 * Description       : Demo program for counter function                    *
 * Boards Supp.      :                                                      *
 * APIs used         : DRV_DeviceOpen,DRV_DeviceClose, DRV_GetErrorMessage, *
 * DRV_CounterReset, DRV_CounterEventStart, DRV_CounterEventRead            *
 * Revision          : 1.00                                                 *
 * Date              : 7/8/1999                   Advantech Co., Ltd.       *
 ****************************************************************************
 */
#include <windows.h>
#include <windef.h>
#include <stdio.h>
#include <conio.h>
#include "..\..\..\..\include\driver.h"
/******************************                                          
 * Local function declaration *                                          
 ******************************/                                         
void ErrorHandler(DWORD dwErrCde);
void ErrorStop(long*, DWORD);
void main()
{
    DWORD  dwErrCde;
    ULONG  lDevNum;
    long   lDriverHandle;
    USHORT wChannel = 0;  
USHORT wOverflow = 0;         // counter over 32 bit flag
ULONG  dwReading = 0;   
PT_CounterEventStart tCounterEventStart;
    PT_CounterEventRead  tCounterEventRead;
    //Step 1: Display hardware and software settings for running this example
    printf("Before running this example, please\n");
    printf("use the device installation utility to add the device.\n");
    //Step 2: Input parameters
    printf("\nPlease input parameters:");
    printf("\nDevice Number (check the device installation utility): ");
    scanf("%d", &lDevNum);
    printf("\nInput Channel: ");
    scanf("\n%d", &wChannel);
    //Step 3: Open device
    dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        printf("Program terminated!\n");
        printf("Press any key to exit....");
        getch();
        exit(1);
    }
    // Step 4: Reset counter by DRV_CounterReset
dwErrCde = DRV_CounterReset(lDriverHandle, wChannel);
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        printf("Program terminated!\n");
        printf("Press any key to exit....");
        getch();
        exit(1);
    }
    // Step 5: Start counting operation by DRV_CounterEventStart
tCounterEventStart.counter = wChannel;
    dwErrCde = DRV_CounterEventStart(lDriverHandle, &tCounterEventStart);
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        printf("Program terminated!\n");
        printf("Press any key to exit....");
        getch();
        exit(1);
    }
    // Step 6: Read counter values by DRV_CounterEventRead in while loop
    //         and display counter value, exit when pressing any key
tCounterEventRead.counter = wChannel;
    tCounterEventRead.overflow = &wOverflow;
    tCounterEventRead.count = &dwReading;
    while( !kbhit() )
    {
       dwErrCde = DRV_CounterEventRead(lDriverHandle, &tCounterEventRead);
       if (dwErrCde != SUCCESS)
       {
          ErrorStop(&lDriverHandle, dwErrCde);
          return;
       }
       printf("\nCounter value = %lu", dwReading);
       Sleep(1000);
    }       
    // Step 7: Stop counter by DRV_CounterReset
dwErrCde = DRV_CounterReset(lDriverHandle, wChannel);
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        printf("Program terminated!\n");
        printf("Press any key to exit....");
        getch();
        exit(1);
    }
    // Step 8: Close device
    dwErrCde = DRV_DeviceClose(&lDriverHandle);
    getch();
    printf("\nPress any key to exit....");
    getch();
}//main
/*
***********************************************************************
 * Function: ErrorHandler                                             *
 *           Show the error message for the corresponding error code  *
 * input:    dwErrCde, IN, Error code                                 *
 * return:   none                                                     *
 **********************************************************************
*/
void ErrorHandler(DWORD dwErrCde)
{
    char szErrMsg[180];
    DRV_GetErrorMessage(dwErrCde, szErrMsg);
    printf("\nError(%d): %s\n", dwErrCde & 0xffff, szErrMsg);
}//ErrorHandler
/*
 ****************************************************************************
 * Function:   ErrorStop                                                    *
 *             Release all resource and terminate program if error occurs   *
 * Paramaters: pDrvHandle, IN/OUT, pointer to Driver handle                 *
 *             dwErrCde, IN, Error code.                                    *
 * return:     none                                                         *
 ****************************************************************************
*/
void ErrorStop(long *pDrvHandle, DWORD dwErrCde)
{
    //Error message 
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    //Close device
    DRV_DeviceClose(pDrvHandle);
    printf("Press any key to exit....");
    getch();
    exit(1);
}//ErrorStop

5.10 mérési feladat a PCI 1784-es kártya használata

A feladat a számláló értékének beolvasása a PCI 1784-es kártya 3-as csatornájáról.

Szükséges lépések:

  • Kártya inicializálása.

  • Számláló értékek visszaállítása.

  • A számláló művelet elindítása.

  • A számláló érték beolvasása a művelet elején.

  • A számláló értékének minden egyes órajelre való beolvasása.

5.9. Nyílt szabályozó kör mérése -- Motion control/Exercise 4 menüpont alatt található laboratóriumi mérési gyakorlat

A PC alapú mérőrendszer bemutatása után itt az ideje megírni az első szabályozót egy DC motorra. Ebben a mérésben visszacsatolás nélküli nyílt hurkú méréseket végzünk a DC motorral. Kérjük, tanumányozza a következő fejezetben a DC motorról írt „A DC motor elméleti háttere” című szöveget.

5.9.1. A DC szervomotorok elméleti háttere

Az elméleti hátteret számos animált dián mutatjuk be. Ez egy rövidített ismétlés a DC motor tárgykörnek a “INETELE Interactive and Unified E-Based Education and Training for Electrical Engineering” című számítógépes tananyagból.

5.9.2. A DC szervomotor felépítése és leíró áramköre

A DC szervomotor felépítése (http://dind.mogi.bme.hu/animation/chapter1/1.htm)
5.11. ábra - A DC szervomotor felépítése (http://dind.mogi.bme.hu/animation/chapter1/1.htm)


  • Stator (angolul): A gép állórésze.

  • Armatura: A gép forgórésze.

  • Gerjesztő huzalozás: Az állórész pólusai köré tekert huzal.

  • Armatúra huzalozás: Huzalozás az armatúra vájataiban.

  • Kommutátor: Periódikusan megfordítja az áram irányát (az armatúrában). Egy forgó réz anyagú részből és az álló szénkefékből áll.

5.9.2.1. Egyenértékű áramkör

Egyenértékű áramkör (http://dind.mogi.bme.hu/animation/chapter1/1_1.htm)
5.12. ábra - Egyenértékű áramkör (http://dind.mogi.bme.hu/animation/chapter1/1_1.htm)


A DC motor paraméterei és változói:

  • Ra– Armatúra ellenállás [ohm];

  • La – Armatúra induktancia [henry];

  • J – Tehetetlenségi nyomaték [kgm2];

  • va – Armatúra feszültség [volt];

  • vi – visszaható indukált feszültség az armatúra menetei által [volt];

  • ia – Armatúra áram [amper];

  • Ω – A motor tengelysebessége [rad/s].

Vf, Rf, Lf, Ф a gerjesztő áramkörhöz tartoznak.

Ez a fejezet a motor gerjesztésével foglalkozik. A legtöbb esetben a kis DC motorban permanens mágnest használnak.

5.9.3. Matematikai modell

Ez a fejezet a DC motor matematikai modelljét ismerteti 3 fő fejezetben:

  1. Időtartomány egyenletek

  2. Frekvenciatartomány egyenletek

  3. Átviteli függvények

5.9.3.1. Időtartomány egyenletek

Időtartomány egyenletek (http://dind.mogi.bme.hu/animation/chapter2/2.htm)
5.13. ábra - Időtartomány egyenletek (http://dind.mogi.bme.hu/animation/chapter2/2.htm)


Ez a fejezet mutatja be az időtartomány egyenleteket. A diák az alábbi egyenleteket emelik ki:

(5.1)

(5.2)

(5.3)

(5.4)

, ahol a motor elektromos nyomatéka;

, ahol a terhelés nyomatéka;

, ahol a terhelés tehetetlenségi nyomatéka.

A magyarázatok az “INETELE Interactive and Unified E-Based Education and Training for Electrical Engineering”-ben találhatók. Az 5-16. ábra elnevezésében látható linkről érhető el. Tartalmazza a linket a frekvencia tartományt magyarázó tartalomhoz is.

5.9.3.2. Frekvencia tartomány egyenletek

Frekvencia tartomány egyenletek (http://dind.mogi.bme.hu/animation/chapter2/2_1.htm)
5.14. ábra - Frekvencia tartomány egyenletek (http://dind.mogi.bme.hu/animation/chapter2/2_1.htm)


Ez a fejezet a frekvencia tartomány egyenleteket tárgyalja. A változók komplex mennyiségek (s = jω).

(5.5)

(5.6)

  

(5.7)

  

(5.8)

  

(5.9)

  

(5.10)

  

  
    

(5.11)

 

5.9.3.3. Átviteli függvények

A DC motor átviteli függvényének levezetése (http://dind.mogi.bme.hu/animation/chapter2/2_2.htm)
5.15. ábra - A DC motor átviteli függvényének levezetése (http://dind.mogi.bme.hu/animation/chapter2/2_2.htm)


Ez a fejezet a DC-motor átviteli függvényének levezetését veszi át lépésről lépésre.

A kezdeti egyenletek az előző fejezetekből adottak (frekvencia tartomány egyenletek) és a végső egyenletek:

Az elektromos: Te és a mechanikus: Tm időállandók:

Az animáció magyarázó képeket is tartalmaz. A képek a levezetés szerint változnak. A folyamatsáv grafikusan mutatja a levezetés „helyzetét”.

A levezetéseket az 5-18. ábra mutatja.

A DC motor idő konstansainak levezetése (http://dind.mogi.bme.hu/animation/chapter2/2_3.htm)
5.16. ábra - A DC motor idő konstansainak levezetése (http://dind.mogi.bme.hu/animation/chapter2/2_3.htm)


5.9.4. A modell elemzése

5.9.4.1. Állapottér reprezentáció

Az állapottér levezetése (http://dind.mogi.bme.hu/animation/chapter3/3.htm)
5.17. ábra - Az állapottér levezetése (http://dind.mogi.bme.hu/animation/chapter3/3.htm)


Ez a fejezet az Átviteli függvények című fejezethez hasonlóan, levezeti az állapotteres felírás lépéseit. A kezdeti feltételek az időtartománybeli feltételekkel megegyeznek. Ezek szerint:

vektorok és mátrixok alkalmazásával az állapottér felírva:

, ahol x az állapotvektor

(5.17)

5.9.4.2. Állandósult állapot

Állandósult állapot, állapotjelzői (http://dind.mogi.bme.hu/animation/chapter3/3_1.htm)
5.18. ábra - Állandósult állapot, állapotjelzői (http://dind.mogi.bme.hu/animation/chapter3/3_1.htm)


Ez a fejezet levezeti a DC motor stabil működési módjának a statikus karakterisztikus egyenletét. Ez alapján a következő fejezetben a statikus karakterisztika kerül bemutatásra.

A levezetés a következő felvetéssel kezdődik:

és ezzel végződik ()

5.9.4.3. Statikus karakterisztika, munkapont

A statikus karakterisztikák interaktív ábrája (http://dind.mogi.bme.hu/animation/chapter3/3_2.htm)
5.19. ábra - A statikus karakterisztikák interaktív ábrája (http://dind.mogi.bme.hu/animation/chapter3/3_2.htm)


Ez a fejezet a statikus karakterisztikát, és a munkapontot magyarázza el.

Az animáció alapegyenlete:

A Maxon motor kísérletben használt Simulink modellje az osztály értékei alapján a következők:

Áttét: 33/1

A kék görbe a statikus karakterisztikája a motornak. A piros vonallal adott metszéspont adja meg a munkapontot. Az osztályértékeket függőleges vonalak jelölik a csúszkán (ld. 5-22. ábra).

5.9.4.4. Átviteli függvény elemzése

A zavarás elemzése az átviteli függvényen (http://dind.mogi.bme.hu/animation/chapter3/3_3.htm)
5.20. ábra - A zavarás elemzése az átviteli függvényen (http://dind.mogi.bme.hu/animation/chapter3/3_3.htm)


A DC motor tranziens válasza lépésszerű terhelő nyomaték változtatásokra különböző arányt használva vizsgáljuk. A túllövés lehetőségére van magyarázat. A megváltoztatásával a válasz is változik. Az időfüggvényeket kiszámítja és behelyettesíti. A arányt csak diszkrét előre definiált lépésekben változtatható.

A megoldandó egyenlet:

A arány a következő lépésekben változtatható: 1; 2; 4; 8; 16; 33; 66.

A magyarázat a karakterisztikus egyenlet gyökeiben keresendő:

Két valós gyök létezik, ha . Határeset:

akkor

Ha , konjugált komplex gyököket kapunk.

A szimulációt MatLab Simulink segítségével készítettük. A szimulációs beállításokat a 5-1. ábra: A rendszer áttekintő ábrája mutatja:

MatLab motor szimuláció
5.21. ábra - MatLab motor szimuláció


5.9.4.5. Az átviteli függvény vizsgálata

Az átviteli függvény elemzése (http://dind.mogi.bme.hu/animation/chapter3/3_4.htm)
5.22. ábra - Az átviteli függvény elemzése (http://dind.mogi.bme.hu/animation/chapter3/3_4.htm)


A fejezet megmagyarázza a közelítések közti különbségeket az aránymegválasztásakor.Az animáció az előző fejezthez hasonlóan épül fel. A arány a következő lépésekben változtatható: 1; 2; 4; 8; 16; 33; 66. Az előző fejezettel való összehasonlítás is lehetséges.

5.9.4.6. A pontos és közelítő egyenlet:

A szimulációt MatLab Simulink segítségével készítettük. A szimulációs beállításokat az 5-25. ábra mutatja.

A MatLab modell a közelítésekhez
5.23. ábra - A MatLab modell a közelítésekhez


További részletekért látogasson el az alábbi animációs oldalra:

http://dind.mogi.bme.hu/animation/

5.9.5. A zajos fordulatszámjel szűrése

Az szögsebesség-idő függvénye nagyon zajos, mert a pozíciójelből digitális deriválási művelettel kapjuk. A deriválás általában kiemeli a zajokat, és ezt a méréseknél a gyakorlatban is tapasztalni fogjuk. Általában, ha lehet, akkor a deriválást kerülni szoktuk. pl. kevésbé zajos jelet kapnánk, ha a fordulatszámot közvetlenül érzékelnénk. Ha erre nincs mód, akkor a zajos jelet célszerű szűrni egy aluláteresztő szűrővel, például a következő módon.

Tekintsük a rendszer bemenetének a mért , kimenetének a szűrt szögsebességet.

Tegyük fel, hogy sorba kapcsolunk 3 db elsőfokú aluláteresztő szűrűt, azonos időállandóval. A szűrő átviteli függvénye

Átrendezve

Inverz Laplace-transzformálva

ahol Tc a vágási körfrekvencia reciproka és a pont jelöli ( ) az idő szerinti deriváltat. A szűrő állapottér egyenlete (5.33) alapján:

(5.34)

Az állapottér egyenlet (5.34) leírható diszkrét alakban.

(5.35)

Ahol k a k-dik mintavételezés rövidítése és a rendszermátrix elemei (ai és bi) kiszámíthatók a MATLAB “c2d” függvényével, ami “continuous to discrete”, vagy folytonos-diszkrét rövidítése.

[Ad, Bd] = c2d(A, B, tsample);

ahol tsample a mintavételezési periódus és Tc szűrő időállandója

A értékének meghatározásához abból indulhatunk ki, hogy a fordulatszám jelhez adódó zaj abból adódik, hogy két pozíciójel különbségéből számítjuk. A pozíciójelet a számlálóból olvassuk ki, ami az enkóderből érkező impulzusokat számlálja. Az enkóderből érkező jelek értelemszerűen nincsenek szinkronizálva a számláló értékének beolvasásával. Ezért előfordulhat, hogy egyszer pont egy enkóderből származó impulzus érkezése előtt, egyszer pont utána olvassuk ki a számláló értékét, így állandó szögsebesség esetén is két különböző értéket fogunk kiszámítani. Elképzelhető, hogy minden beolvasásánál a hiba előjelet vált, így a zaj periódus idejét jól közelíthetjük a mintavételi idő kétszeresével. Ebből már meghatározhatjuk a zaj frekvenciáját, illetve körfrekvenciáját, mivel a szűrő tervezéséhez ez utóbbira van szükség. Esetünkben

Az aluláteresztő szűrő vágási frekvenciáját ennél kisebbre kell beállítani. Ha egy dekáddal kisebbre állítjuk be, akkor az egy harmadjajú szűrő esetén kb. ezred részére képes csökkenti a zajt. a vágási körfrekvencia reciproka, ezért legyen a választásunk a következő

A diszkrét idejű szűrő együtthatóit meghatározó és a C kódot generáló MATLAB program

Ts = 0.001;
Tc = 1/(2*pi*1/(2*Ts)/10);
 
A = [0, 1, 0;
     0, 0, 1;
     -1/Tc^3, -3/Tc^2, -3/Tc];
 
B = [0;0;1/Tc^3];
 
[Ad,Bd] = c2d(A,B,Ts);
 
for i = 1:3
    for j = 1:3
        disp(['float ad',num2str(i),num2str(j),' = ', num2str(Ad(i,j)),';']);
    end
end
 
for i = 1:3
    disp(['float bd',num2str(i),'  = ', num2str(Bd(i)),';']);
end
Eredmény
float ad11 = 0.99591;
float ad12 = 0.00095987;
float ad13 = 3.652e-007;
float ad21 = -11.3235;
float ad22 = 0.88778;
float ad23 = 0.00061567;
float ad31 = -19089.6748;
float ad32 = -193.6165;
float ad33 = 0.30752;
float bd1  = 0.0040906;
float bd2  = 11.3235;
float bd3  = 19089.6748;

A szűrő mellékhatása, hogy növeli a rendszer fáziseltolását. E problémán javíthatunk, ha egy más típusú szűrőt alkalmazunk.

Normál harmadfokú aluláteresztő szűrő Bode diagramja
5.24. ábra - Normál harmadfokú aluláteresztő szűrő Bode diagramja


Vizsgáljunk meg egy harmadrendű Bessel szűrőt. A harmadrendű Bessel szűrő átviteli függvénye:

Ts = 0.001;
Tc = 1/(2*pi*1/(2*Ts)/10);
A = [0, 1, 0;
     0, 0, 1;
     -15/Tc^3, -15/Tc^2, -6/Tc];
 
B = [0;0;15/Tc^3];
 
[Ad,Bd] = c2d(A,B,Ts);
 
for i = 1:3
    for j = 1:3
        disp(['float ad',num2str(i),num2str(j),' = ',num2str(Ad(i,j)),';'])
    end
end
 
for i = 1:3
    disp(['float bd',num2str(i),'  = ', num2str(Bd(i)),';']);
end

Eredmény

float ad11 = 0.95193;
float ad12 = 0.00083371;
float ad13 = 2.6009e-007;
float ad21 = -120.9668;
float ad22 = 0.56688;
float ad23 = 0.00034345;
float ad31 = -159737.83;
float ad32 = -629.4281;
float ad33 = -0.080513;
float bd1  = 0.048071;
float bd2  = 120.9668;
float bd3  = 159737.83;
Harmadfokú Bessel alul-áteresztő szűrő Bode diagramja
5.25. ábra - Harmadfokú Bessel alul-áteresztő szűrő Bode diagramja


Vizsgáljunk meg egy ötödrendű Bessel szűrőt. Az ötödrendű Bessel szűrő átviteli függvénye:

A diszkrét idejű szűrő együtthatóit meghatározó és a C kódot generáló MATLAB program

Ts = 0.001;
Tc = 1/(2*pi*1/(2*Ts)/10);
A = [0, 1, 0, 0, 0;
     0, 0, 1, 0, 0;
     0, 0, 0, 1, 0;
     0, 0, 0, 0, 1;
     -945/Tc^5, -945/Tc^4, -420/Tc^3, -105/Tc^2, -15/Tc];
 
B = [0;0;0;0;945/Tc^5];
 
[Ad,Bd] = c2d(A,B,Ts);
 
for i = 1:5
    for j = 1:5
        disp(['float ad',num2str(i),num2str(j),' = ',num2str(Ad(i,j)),';'])
    end
end
 
for i = 1:5
    disp(['float bd',num2str(i),'  = ', num2str(Bd(i)),';']);
end

Eredmény

float ad11 = 2.3749;
float ad12 = 0.0060369;
float ad13 = 8.9952e-006;
float ad14 = 8.7509e-009;
float ad15 = -2.4834e-013;
float ad21 = -55.9541;
float ad22 = 0.80926;
float ad23 = 0.00070548;
float ad24 = 2.3492e-007;
float ad25 = 6.3994e-011;
float ad31 = -185062.4462;
float ad32 = -645.0082;
float ad33 = -0.024158;
float ad34 = 4.2341e-005;
float ad35 = 1.3387e-007;
float ad41 = -387151871.8085;
float ad42 = -1417349.3637;
float ad43 = -2388.3942;
float ad44 = -1.4113;
float ad45 = 7.4665e-005;
float ad51 = -215947384065.4345;
float ad52 = -1074421228.8149;
float ad53 = -2389749.1508;
float ad54 = -3161.8599;
float ad55 = -0.37582;
float bd1  = -1.3925e-005;
float bd2  = 0.00056689;
float bd3  = 1.8749;
float bd4  = 3922.0853;
float bd5  = 2186784.2468;

5.9.6. A mérés leírása

A CalculateController függvényt a valós idejű óra minden jelére meghívja a keretprogram. A saját szabályozó algoritmusát a következő programba írhatja bele:

#include <windows.h>
#include <stdio.h>
#include <rtapi.h>
#include <math.h>
#include <string.h>
#define PI 3.14159265358979323846
typedef struct
{   
float Position;
float Velocity;
float Torque;
float StateVariable_5;
float StateVariable_6;
float StateVariable_7;
float StateVariable_8;
float StateVariable_9;
float StateVariable_10;
} NewControllerData;
NewControllerData CalculateController(
const float CurrentPosition,
const float OldPosition,
const float OldVelocity,
const float CurrentTime,
const float OldTime,
const float Old_StateVariable_5,
const float Old_StateVariable_6,
const float Old_StateVariable_7,
const float Old_StateVariable_8,
const float Old_StateVariable_9,
const float Old_StateVariable_10
)
{
NewControllerData ResultData; // result
//Declaration of your controller
// Position is saved automatically
ResultData.Position = CurrentPosition;
// Angular velocity is saved automatically
if (CurrentTime != 0.0f){
ResultData.Velocity = (1000.0f * (float)(CurrentPosition - OldPosition)/(float)(CurrentTime - OldTime));
}
else {
ResultData.Velocity = 0.0f;
}
//Calculation of your controller
return ResultData;
}

A pirossal írt részek helyére kell a saját programot elhelyezni. A változók új értékeit és minden számítást ezen a függvényen belül kell megadni. A motor állapotát a keretprogram kiszámítja és a következő változókban tárolja:

ResultData.Position: pozíció

ResultData.Velocity: szögsebesség

ResultData.Time: az aktuális idő

Biztonsági okokból a motor bemeneti feszültségét nem lehet direkt módon állítani. Az irányítóprogram kimenete, amely a kimenő jel a D/A kártyán a referencia áram-jel. Ez referencia nyomaték-jelnek is tekinthető. A saját programunkban kell, hogy legyen a következő értékadás:

ResultData.Torque = …

A felhasználónak az értéket a “your controller program” végén kell beállítania. Például:

ResultData.Torque = 1;

azt jelenti, hogy a tengelyen a nyomaték (a fogaskerék után) 1 Nm-re lett állítva. Mivel a D/A kártya kimenete feszültség, a keretprogram kiszámolja a megfelelő feszültség értéket a ResultData.Torque-ból, amely a kimeneti jel lesz.

Ebben a feladatban nyílt hurkú méréseket végzünk a DC motoron. Maximum 10 állapotváltozó választható ki Matlab formátumban történő mentésre. A 10-ből 4 állapotváltozó kötött: az idő, a pozíció, a szögsebesség és a motor nyomatéka.

Ha az állapotváltozó hibát kívánja menteni, az alábbiakat kell tennie:

Írja be az állapotváltozó nevét vel_filt (szűrt sebesség) az ötödik sorba a következő formában:

5. vel_filt

Írja be a változó deklarációját:

float vel_filt;

Írja be a következőt a parancs dobozba:

Vel_filt = (ki kell számítani a szűrt sebesség értékét)

ResultData.StateVariable_5 = vel_filt;

A mérés után a vel_filt állapotváltozó is letölthető.

Hajtsa végre a feladatokat nyílt körre és hasonlítsa össze őket a P, és PI szabályozókkal.

Az eredményfájlok, amelyek a mérés végén letölthetők, MATLAB-ban kiértékelhetők. Erre a feladatra már írtunk egy programot, amely kirajzolja a tengelysebesség-idő, feszültség-idő és pozíció-idő diagramjait. Ezek a diagramok .jpg formátumban menthetők el további dokumentációkhoz.

MEGJEGYZÉS:

A szabályozó programot minden egyes mintavételező periódusban meghívja a keretprogram. A függvény végrehajtása után minden változó (kivéve a ResultData.Time, ResultData.Velocity,ResultData.Position ResultData.Torque és ResultData.StateVariable_5-10) felszabadul (avagy az értékek elvesznek). Ha szükséges egy változó a következő mintavételező periódusban is, akkor statikus típusú változóként kell deklarálni. Például:

static float vel_filt;

Általános lépések szükségesek:

  • Tanumányozza az ebben a fejezetben a DC motorról írt „A DC motor elméleti háttere” című szövegrészt.

  • Beállíthatja a mérés idejét milliszekundumban (az alapérték 1000).

  • A mérések alapján határozza meg a tranziens válaszokat és a DC szervomotor stabil-állapot karakterisztikáit.

Segítségképp az első három laboratóriumi gyakorlaton megismert két kártyát a keretprogram inicializálja. Csak a fentebb leírt lépések szükségesek a sikeres laboratóriumi mérés végrehajtásához.

5.9.7. Mérési feladatok

5.11 mérési feladat: Konstans nyomaték kiadása

Az első feladatban az elektromos nyomaték értéke:

  • ResultData.Torque = 0.1;

  • ResultData.Torque = 0.5;

  • ResultData.Torque =1.0;

Ezúton a különböző motor-változók különböző nyomatékjel lépés-változásaira kapott lépés válaszai kaphatók meg. Az eredmény fájlok, amelyek a mérés végén letölthetők, Matlabban kiszámíthatók. Erre a feladatra már van egy program. A program futtatásával az eredményeket megkapjuk tengelysebesség-idő, feszültség-idő és pozíció-idő diagramokon. Ezeket a diagramokat .jpg formátumban lehet elmenteni a további dokumentáció érdekében.

5.12 mérési feladat: Konstans nyomaték kiadása és a fordulatszám szűrése

Az előző feladathoz hasonlóan a nyomaték legyen a következő:

  • ResultData.Torque = 0.1;

  • ResultData.Torque = 0.5;

  • ResultData.Torque =1.0;

Alkalmazza az 5.9.5 pontban leírt digitális szűrőket. Legyen a töréspont helye

és

(5.42)

5.13 mérési feladat: A motor válasza szinuszos nyomatékra és a szervoerősítő offset kompenzációja

A szervoerősítőnek (mint minden műveleti erősítőnek) van egy offset feszültsége. Ez akkor a legszembetűnőbb, ha szinuszos feszültséget alkalmazunk. Ebben az esetben a motortól azt várjuk, hogy szinuszos legyen a tengely szögsebessége és ebből adódóan, szinuszos pozícióváltozása. Az offset feszültséget célszerű hardveresen kompenzálni, de kompenzálhatjuk szoftveresen is.

  • Változtassa a motor nyomatékát szinuszosan. A szinuszos nyomatékjel amplitúdója legyen 0.6 mNm és a periódusideje legyen 0.1s és 0.5s. Vizsgálja meg a motor fordulatszámát és pozícióját.

  • Változtassa meg a szinuszos nyomatékjel offszetjét úgy, hogy a pozíciójel középértéke is nulla legyen.

5.14 mérési feladat: Digitális szűrő

  • Hajtsa végre az 5.13 mérési feladatot a 5.9.5 pontban leírt digitális szűrők alkalmazásával. Próbáljon ki erősebb (kisebb vágási körfrekvenciájú) és gyengébb (nagyobb vágási körfrekvenciájú) szűrőket.

  • Vizsgálja meg a fordulatszám jel spektrumát különböző szűrők esetén. Legyen és .

5.10. Visszacsatolt kör mérések -- Motion control/Exercise 5 menüpont alatt található laboratóriumi mérési gyakorlat

Az előző laboratóriumi mérési gyakorlat során megismertük a szervomotoros hajtás elemeit. A mostani laboratóriumi mérési gyakorlaton konkrét szabályozókat kell tervezni.

5.10.1. Az irányításelmélet elméleti háttere

Klasszikus PI szabályozó (http://dind.mogi.bme.hu/animation/chapter4/4.htm)
5.26. ábra - Klasszikus PI szabályozó (http://dind.mogi.bme.hu/animation/chapter4/4.htm)


Az animáció bemutatja a P, PI, PID szabályozókat és az egymás közötti különbségeket.

“P”:

“PI”:

“PID”:

A fázistartalék meghatározása (http://dind.mogi.bme.hu/animation/chapter4/4_1.htm)
5.27. ábra - A fázistartalék meghatározása (http://dind.mogi.bme.hu/animation/chapter4/4_1.htm)


Animált magyarázat a fázistartalék meghatározására: Az amplitúdó diagramon a 0 szinten, egy piros vízszintes vonal jelenik meg. Azon a ponton, ahol a piros vonal keresztezi az amplitúdó görbéjét, egy függőleges vonal megy le a fázisdiagramig. Abban a pontban, ahol ez a vonal keresztezi a fázisgörbét, egy vízszintes vonal mutatja a pillanatnyi fázis értékét. A végén megjelenik a fázistartalék, amit az alábbiak szerint számolhatunk:

180o –az adott fázis = fázistartalék

(5.48)

Ezt a dimenzióvonal mutatja a fázis tengelyen.

Alkalmazás (http://dind.mogi.bme.hu/animation/chapter4/4_2.htm)
5.28. ábra - Alkalmazás (http://dind.mogi.bme.hu/animation/chapter4/4_2.htm)


A dia elmagyarázza a PI szabályozó használatát. A motor és a szabályozó átviteli függvénye 1 közelítéssel:

Megválasztva, hogy legyen: az átviteli függvény:

Végül és AP meghatározása a fázistartalék megválasztásával.

Bode-diagram (http://dind.mogi.bme.hu/animation/chapter4/4_3.htm)
5.29. ábra - Bode-diagram (http://dind.mogi.bme.hu/animation/chapter4/4_3.htm)


Az animáció mutatja Ap meghatározását, 30...60o fázistartalékát (stabil, sima működésnél) egy fordított, nem analitikus módon, ahol a Bode diagramokon látszik a fázistartalék. A felhasználó 0.5 és 3.5 között változtathatja Ap –t és megfigyelhetőek a különböző fáziseltolások hatásai a fázistartalékon. Az animáció az előzetesen bemutatott példa alapján rajzolja ki a grafikonokat. Ap 0.5 és 3.5 között 7 fokozatban állítható (0.5; 1.0; 1.5; 2.0; 2.5; 3.0; 3.5).

A szimuláció során használt paraméterek:

  • Tpi= 0.2 s;

  • Api= változtatható;

  • Kfi = 0.025 Vs/rad;

  • Te = 0.003 s;

  • Tm=Tpi;

MatLab utasítások:

g = tf([Api/Kfi],[Tpi*Te Tpi 0]);

bode(g);

Klasszikus PID szabályozó (http://dind.mogi.bme.hu/animation/chapter4/4_4.htm)
5.30. ábra - Klasszikus PID szabályozó (http://dind.mogi.bme.hu/animation/chapter4/4_4.htm)


A dia a nyílt és visszacsatolt hurkú átviteli függvényeket mutatja be ismét. PI szabályozót használ és TPI= Tm.

Az egyenletek (levezetések nélkül) az alábbiak:

  • Nyílt hurok

  • Visszacsatolt hurok

Lépés válasz (http://dind.mogi.bme.hu/animation/chapter4/4_5.htm)
5.31. ábra - Lépés válasz (http://dind.mogi.bme.hu/animation/chapter4/4_5.htm)


Az animáció a sebesség referencia-jel lépésszerű változására a rendszer által adott választ mutatja be.

Megjegyzendő, hogy növekvő Ap nem eredményez túllendülést. Az animáció az előzetesen használt grafikonokat és eredményeket használja. Ap 0.5 és 3.5 közt 7 fokozatban változtatható (0.5; 1.0; 1.5; 2.0; 2.5; 3.0; 3.5).

A szimuláció MatLab Simulink segítségével készült, a szimulációs beállítást az 5-35. ábra mutatja.

MatLab szabályozó, motor szimuláció
5.32. ábra - MatLab szabályozó, motor szimuláció


A motor és PI szabályozó elrendezése egy feedback hurokban látható az 5-37. ábra alapján.

A PI szabályozó helye (http://dind.mogi.bme.hu/animation/chapter4/4_6.htm)
5.33. ábra - A PI szabályozó helye (http://dind.mogi.bme.hu/animation/chapter4/4_6.htm)


A felhasználó megfigyelheti, hogy AP növelésével a rendszer túllendülése is nő.

Válasz a terhelés zavarára (http://dind.mogi.bme.hu/animation/chapter4/4_7.htm)
5.34. ábra - Válasz a terhelés zavarára (http://dind.mogi.bme.hu/animation/chapter4/4_7.htm)


A dia a zavarérzéketlenség hatását mutatja. Egy lépésszerű nyomatékterhelést kapcsolunk t = 5s időpillanatban a bemenetre. Az animáció összehasonlítja a szabályozó sebesség értékét különböző Ap értékeknél. Ap 0.5 és 3.5 között 8 fokozatban változtatható (0.5; 0.7; 1.0; 1.5; 2.0; 2.5; 3.0; 3.5). AP = 0.7 azért adódik, mert a különbség 0.5 és 1.0 között túl nagy.

MatLab szimuláció a sebességszabályozó hurokra
5.35. ábra - MatLab szimuláció a sebességszabályozó hurokra


5.10.2. Áram szabályozó

Sebesség és áramszabályozó(http://dind.mogi.bme.hu/animation/chapter4/4_8.htm)
5.36. ábra - Sebesség és áramszabályozó(http://dind.mogi.bme.hu/animation/chapter4/4_8.htm)


Ez a fejezet röviden ismerteti az áramszabályozó működését. Részletes blokkdiagramot tartalmaz a motorról és szabályozókról (sebesség és áram), valamint a szabályozók egyenleteiről.

Sebességszabályozó:

Áramszabályozó:

Magyarázat kФ elhanyagolására. (http://dind.mogi.bme.hu/animation/chapter4/4_9.htm)
5.37. ábra - Magyarázat kФ elhanyagolására. (http://dind.mogi.bme.hu/animation/chapter4/4_9.htm)


A dia azt mutatja, miért hanyagolható el a motor visszahatása. Segít azonosítani a lényeges és nem lényeges elemeket. A motor belső visszahatása elhanyagolható, mert az áramszabályozó sokkal gyorsabb működésű, mint a mechanikus szabályozó. Ezért a belső visszahatás zavarként kezelhető, amely lassan változik, a szabályozó kiküszöböli a hibát, amit a D motor pontatlan modellje okoz.

A dia a szabályozó működéséhez szüksége egyenleteket mutatja.

Tervezési koncepció http://dind.mogi.bme.hu/animation/chapter4/4_10.htm)
5.38. ábra - Tervezési koncepció http://dind.mogi.bme.hu/animation/chapter4/4_10.htm)


A fenti dia leírja a rendszer nyílt hurkú átviteli függvényét.

(5.55)

ahol ωe = ωr – ω.

 

További részletekért látogasson el az alábbi animációs oldalra:

http://dind.mogi.bme.hu/animation/

5.10.3. Módszerek a PID szabályozó paramétereinek megválasztásához Ziegler-Nichols módszer

A módszer célja, hogy a PID szabályozó paramétereit egy egyszerű teszttel választhassuk meg. Vannak esetek, amikor a szabályozott szakasz paraméterei nem ismertek, ezért a PID szabályozót próbálgatással, kísérletileg kell behangolni. Több olyan módszer ismert, amely a próbálgatások hatékonyságát növeli. Az egyik legnépszerűbb módszert Ziegler és Nichols dolgozta ki [48]. Elsősorban időkésleltetéssel rendelkező rendszerekhez alkalmazható, de gyakorlatilag minden szabályozó gyártó használta a módszert kisebb módosításokkal beállítási ajánlásaik elkészítéséhez. Népszerűségének oka az, hogy egyszerű megtanulni és elmagyarázni. A módszert egy egyenáramú szervomotor fordulatszám szabályozó körének kísérleti behangolásán keresztül mutatjuk be. A példában egy fordulatszám szabályozó behangolását mutatjuk be. A szabályozó algoritmus a motor armatúra áramának az alapjelét határozza meg. A program kiszámítja és kiadja a motor áramreferencia jelét, a motor áramszabályozóhurkához (amely az áramkorlátozást is megvalósítja) biztonsági okokból nem férünk hozzá. A motor tényleges árama a szabályozási idő leteltével éri el a referencia értéket. Maga a rendszer két energiatárolós szakasznak tekinthető, ezért a motor önmagában strukturálisan stabilis (így a Ziegler-Nichols módszer nem lenne alkalmazható), de a fordulatszám jelet digitális szűréssel állítjuk elő, így a motor az alkalmazott harmadfokú szűrő algoritmussal együtt már egy öt energiatárolós rendszernek tekinthető. Természetesen ez csak akkor igaz, ha a szűrt jelet használjuk fel a hiba előállításához.

Feladatok a hangolás során:

Először teszteljük, hogy a szükséges P tag negatív vagy pozitív. Kapcsoljuk a szabályozót csak P módra, avagy kapcsoljuk ki az I és D funkciókat. A bemeneti feszültséget kapcsoljuk nyílt körbe (hibajel), növeljük kicsit manuális vezérléssel, hogy lássuk az állandósult állapotú rendszer kimenetének értéke is növekedett. Ha ez így van, akkor az állandósult rendszer erősítése pozitív, avagy a P szabályozó AP-értékének is pozitívnak kell lennie, különben (ha csökkent), AP negatív lesz.

Változtassuk a szabályozó erősítését, AP –t lassan (növeljük, ha AP pozitív volt, és csökkentsük, ha AP negatív volt) és figyeljük a kimeneten adott választ. Megjegyezzük, hogy ez AP lépésenkénti változtatásával jár majd, a lépések után meg kell várni az állandósult állapotot, mielőtt AP –t újból megváltoztatnánk.

Legyen az AP kritikus (ultimate) értéke AU, amikor a kimeneten állandósult lengőjel alakul ki. Mérjük meg ennek a periódusidejét is, és nevezzük el TU-nak, (ld. 5-44. ábra). TU a határperiódusidő.

Az AU határerősítést és a TU határperiódusidőt felhasználva Ziegler és Nichols módszere a következő AP, TI és TD, értékeket javasolja a szabályozó típusától függően:

AP

TI

TD

P szabályozó

AU/2

PI szabályozó

AU/2.2

TU/1.2

PID szabályozó

AU/1.7

TU/2

TU/8

A Tu paraméter meghatározása (Tu≈33 ms)
5.39. ábra - A Tu paraméter meghatározása (Tu≈33 ms)


A következőkben különböző vezérlés típusokat vizsgálunk.

Ebben a gyakorlatban először P, majd PI és a legvégén PID sebességszabályozót állítunk be a DC motornak.

Lépések:

  • Tanulmányozza az irányításelméletről szóló “Az irányításelmélet elméleti háttere” című 5.10.1 fejezetet.

  • Állítsa be a szabályozókat (P, PI, PID, stb.).

5.10.4. Mérési feladatok: fordulatszám szabályozás

5.16 mérési feladat: A Ziegler-Nichols módszer ún. ultimate körerősítésének meghatározása

Készítsen egy P szabályozót és fokozatosan növelje a P értékét a stabilitás határáig, amikor a fordulatszám jelben közel állandó amplitúdójú lengések ki nem alakulnak. Fontos megjegyzés, hogy az ultimate körerősítés erősen függ az alkalmazott szűrő típusától és annak vágási frekvenciájától. Ezt a feladatot végezze el különböző szűrőkkel.

5.17 mérési feladat: P szabályozó

Vizsgálja meg a P szabályozó működését Ω = 7 rad/s tengelysebesség mellett.

5.18 mérési feladat: P szabályozó változó alapjellel

Az 5.17 kibővítése, azzal a különbséggel, hogy először Ω = 4 rad/s t = 0 s-mál, majd Ω = 2 rad/s t = 2 s-mál és végül Ω = 6 rad/s t = 4 s-nál.

5.19 mérési feladat: P szabályozó terhelésrádobással

Vizsgálja meg a P szabályozó zavarérzéketlenségét. A zavart t = 0.5 s-ban adjuk a rendszerre, mint negatív nyomatékot T_load= -0.5, amely kivonódik a szabályozó által számolt kimeneti feszültségből.

ResultData.Torque = (kérjük, írja ide a szabályozóját)

ResultData.Torque = ResultData.Torque + T_load; /* ez a virtuális terhelés sora*/

5.20 mérési feladat: PI szabályozó

Vizsgálja meg a PI szabályozó működését Ω = 7 rad/s tengelysebesség mellett.

5.21 mérési feladat: PI szabályozó változó alapjellel

Legyen először Ω = 4 rad/s t = 0 s-nál, majd Ω = 2 rad/s t = 2 s-nál, és végül Ω = 6 rad/s t = 4 s-nál.

5.22 mérési feladat: PI szabályozó terhelésrádobással

Vizsgálja meg a PI szabályozó zavarérzéketlenségét. A zavart t = 0.5 s-ban adjuk a rendszerre, mint negatív nyomatékot T_load= -0.5, amely kivonódik a szabályozó által számolt kimeneti feszültségből.

ResultData.Torque = (kérjük, írja ide a szabályozóját)

ResultData.Torque = ResultData.Torque + T_load; /* ez a virtuális terhelés sora*/

5.23 mérési feladat: Anti windup PI szabályozó

A PI szabályozó hibatoleranciája (maradó hiba mentes PI szabályozó)

Szimuláljunk hibát, amikor a motor megakad, vagy az elektromos egység meghibásodik és a nyomaték 0, miközben a PI szabályozó működik. Az integrál tag növekszik. A hiba után az a integráló tag értékét le kell csökkenteni (a pozitív hiba közben integráló tag értéke nagyon megnövekedhet, amelyet egy negatív hibával lehet csökkenteni).

Először hangoljuk be a PI szabályozót (állítsuk be a mérés hosszát 1000 ms-ra), és adjuk a következő sort a szabályozóhoz:

if ( CurrentTime < 0.3*1e3) {ResultData.Torque = 0.0;}

Az integrálótag értékének növekedését alapvetően két módon korlátozhatjuk. Egyrészt közvetlen korláttal, másrészt az integrátort célszerű kikapcsolni akkor, amikor a szabályozó telítésben működik. Hasonlítsa össze normál PI és az anti windup funkcióval kiegészített PI szabályozó működését.

5.24 mérési feladat: Ziegler-Nichols módszer időkésleltetés beiktatással

Készítsen egy P szabályozót, de a kiszámított nyomaték jelet őrizze meg 10 időlépésen keresztül, és csak azt követően adja ki a motorra. Használjon normál harmadfokú szűrőt paraméterrel. Fokozatosan növelje a P értékét a stabilitás határáig, amikor a fordulatszám jelben közel állandó amplitúdójú lengések ki nem alakulnak. A Ziegler-Nichols módszerrel határozza meg egy PI típusú szabályozó P és I paraméterét.

5.10.5. Mérési feladatok: pozíció szabályozás

5.25 mérési feladat: Egy-hurkos P és PI szabályozó ugrás függvény válasza

Legyen a referencia pozíció jel 10 rad. A nyomatékot közvetlenül a pozíció hibából számolja, P illetve PI szabályozót alkalmazva.

5.26 mérési feladat: Stick-slip jelenség vizsgálata

Válassza meg a P és I paramétert úgy, hogy a motor ragadjon be a referencia pozíció előtt, és az integrátor lendítse túl a hibán.

5.27 mérési feladat: Kaszkád szabályozás

Az előző feladatban túllövés tapasztalható, aminek oka az, hogy idő szükséges a motor lelassításához, ha az elérte a referenciaértéket. Ezt a hatást megszüntethetjük, ha egy belső szögsebesség szabályozót is beiktatunk a rendszerbe. A szögsebesség referencia értéke a motor pozíció hibájából adódik. Ez azt jelenti, amint a motor közelít a referenciapozícióhoz, a referencia sebesség is elkezd csökkeni. Ez a nullához közelít már a véghelyzet közelében. A szabályozás hatásvázlata az alábbi ábrán látható. A pozíció szabályozó P és a sebességszabályozó PI típusú.

Kaszkád pozíció szabályozó
5.40. ábra - Kaszkád pozíció szabályozó


A fordulatszám szabályozó körében PI a pozíció szabályozó körben P szabályozót alkalmazzon.

5.28 mérési feladat: Csúszómód szabályozó

Tervezzen csúszómód szabályozót a motor pozíciójához.

Ennek két fő lépése:

a csúszási felület megválasztása;

vezérlési törvény megválasztása.

A konstans referencia pozíció:

αref= 10 rad.

A pozíció és sebesség hibát

αe= αref – αmotor

Ωe= 0-Ωmotor .

értékekként deklaráljuk.

A csúszó felületet

σ=αe+λΩe

alapján választjuk.

A vezérlési törvény:

torque=0.1 sign σ.

Természetesen ezeket C kódban kell megírni. További részletes információért és új szabályozási módszerekért látogasson el az alábbi animációs oldalra:

http://dind.mogi.bme.hu/animation/

5.29 mérési feladat: Modellreferenciás adaptív szabályozó

Tervezzen modellreferenciás adaptív szabályozót a motor pozíciójához.

6. fejezet - Mintamérések, néhány mérési feladat megoldása

Tartalom
6.1. A mérés célja
6.2. A PCI-1720 D/A kártya használata- 5.4 mérési feladat megoldása
6.2.1. A mintafájlból (Dasoft.cpp) a következőt kell átmásolni a szövegmezőbe:
6.2.2. A pirossal jelölt részeket töröljük ki.
6.2.3. Változtassuk meg, ahogy az zölddel van jelölve.
6.3. Valós idejű óra használata a PCI 1720 D/A kártyán - 5.5 feladat megoldása
6.4. A PCI-1784 számláló használata - 5.4 mérési feladat megoldása
6.4.1. A(Dasoft.cpp) mintafájlból a következők másolandók a szövegmezőbe:
6.4.2. Töröljük a pirossal jelölt részeket.
6.4.3. Cseréljük a kódot a zöld szerint.
6.5. Nyílt szabályozó kör mérése - Motion control/Exercise 4 menüpont alatt található laboratóriumi mérési gyakorlat megoldása
6.5.1. A motor válasza állandó nyomatékra - 5.11 feladat megoldása
6.5.2. Konstans nyomaték és digitális szűrő - 5.12 feladat megoldása
6.5.3. A motor válasza a szinuszos feszültségre és a szervoerősítő offsetjének kompenzálása - 5.13 feladat megoldása
6.5.4. Digitális szűrők összehasonlítása - 5.14 mérési feladat megoldása
6.6. Visszacsatolt kör mérések - Motion control/Exercise 5 menüpont alatt található laboratóriumi mérési gyakorlat megoldásai
6.6.1. A P szabályozó hangolása - 5.16 mérési feladat megoldása
6.6.2. A P szabályozó ugrásfüggvény válasza - 5.17 mérési feladat megoldása
6.6.3. A P szabályozó változó referenciajellel - 5.18 feladat megoldása
6.6.4. A P szabályozó válasza a terhelés ugrásszerű változásaira - 5.19 mérési feladat megoldása
6.6.5. A PI szabályozó ugrás függvényre adott válasza - 5.20 mérési feladat megoldása
6.6.6. A PI szabályozó változó referenciajellel - 5.21 mérési feladat megoldása
6.6.7. A PI szabályozó válasza a terhelés ugrásszerű változásaira - 5.22 mérési feladat megoldása
6.6.8. Hibatolerációs mérések - 5.23 mérési feladat megoldása
6.6.9. Időkésleltetett rendszer PI szabályozása - 5.24 mérési feladat megoldása
6.6.10. P és PI szabályozó ugrás függvény pozíció refereciajel válasza - 5.25 mérési feladat megoldása
6.6.11. Stick-slip jelenség - 5.26 mérési feladat megoldása
6.6.12. Pozíció szabályozás belső sebesség szabályozóval - 5.27 mérési feladat megoldása
6.6.13. Csúszómód szabályozó eredmények - 5.28 mérési feladat megoldása
6.7. Komplex tervezési és mérési feladat
6.7.1. Az állapot-visszacsatolás és tervezése
6.7.2. Alapjel korrekció alkalmazása
6.7.3. Állapot-megfigyelő tervezése
6.7.4. Integráló szabályozás
6.7.5. A rendszer identifikációja
6.7.6. A szabályozás megtervezése
6.7.7. A motor identifikációja
6.7.7.1. A karakterisztika előzetes vizsgálata
6.7.7.2. Gerjesztés megtervezése az identifikációhoz
6.7.7.3. Identifikáció MATLAB segítségével
6.7.8. Szabályozó tervezése
6.7.8.1. Integrátor nélküli szabályozó
6.7.9. Integrátoros szabályozás
6.7.10. Szűrő tervezése a sebességméréshez
6.7.11. Implementáció
6.7.12. Integrátor nélküli szabályozó
6.7.12.1. C kód
6.7.13. Eredmények
6.7.14. Integrátoros szabályozó
6.7.14.1. C kód
6.7.15. Eredmények
6.7.16. Program kód
6.7.16.1. A szabályozótervezés teljes MATLAB kódja

6.1. A mérés célja

A felhasználó ennek a mérésnek a segítségével elsajátíthatja egy szervomotor és robot vezérlését számítógépen keresztül. Először a felhasználó megismerkedik a szervo és a számítógép közti kommunikációval, ami lényeges eleme a mobilrobotnak. Következőleg a robot belső rendszere kerül bemutatásra. (Egy külön használati útmutató áll a robot kísérletekhez rendelkezésre).

Egy DAC segítségével küldünk információt a gépről a szervonak, mivel a legtöbb szervo esetében a referenciajelek analóg feszültség jelek. A motor mozgását egy enkóder méri, amely impulzussort küld a számítógépnek. Ezeket egy számláló számolja és a számítógép olvassa ki, így szerezve információt a motor pozíciójáról. A sebességet az előző és pillanatnyi pozíciókból számítjuk. Ez egy nagyon zajos sebességjelet eredményez. A mérésben egy diszkrét idejű szűrőt használunk, hogy csökkentsük a mérés zaját. A felhasználó megtanulhatja, hogyan kell megírni és behangolni a PI szabályozóját egy szervo egységnek.

A felhasználónak nem kell kitűnő programozónak lennie, de az alapokkal tisztában kell lennie. A felhasználó néhány nagyon egyszerű programot ír C-ben, illetve Visual Basic-ben. Példák bemutatásával segítjük a sajár program megírását, és remélhetőleg a mérést bárki úgy is el tudja majd végezni, ha ez lesz majd az első olyan C vagy Visual Basic programja, pontosabban program részlete, melyet sajár maga írt.

A kísérletek a következő helyen érhetőek el: http://dind.mogi.bme.hu/experiment/

6.2. A PCI-1720 D/A kártya használata- 5.4 mérési feladat megoldása

A megoldandó kód, és amit a kódmezőbe kell írni:

motorDA = 3;
new_voltage = 5.0;
//Első lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNumDA, &lDriverHandleDA);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Második lépés: Kimeneti érték a meghatározott csatornára
tAOVoltageOut.chan = motorDA;
tAOVoltageOut.OutputValue = new_voltage;
dwErrCde = DRV_AOVoltageOut(lDriverHandleDA, &tAOVoltageOut);
if (dwErrCde != SUCCESS)
{
    ErrorStop(&lDriverHandleDA, dwErrCde);
    return;
}

Ez a kód bekapcsolja a szervot. Ilyenkor egy zöld LED világít az egységen.

A LED lekapcsolásához a következő sort kell módosítani: new_voltage = 0.0;

6.2.1. A mintafájlból (Dasoft.cpp) a következőt kell átmásolni a szövegmezőbe:

//Harmadik lépés: eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Negyedik lépés: Kimeneti jelet meghatározott csatornára
tAOVoltageOut.chan = usChan;
tAOVoltageOut.OutputValue = fOutValue;
dwErrCde = DRV_AOVoltageOut(lDriverHandle, &tAOVoltageOut);
if (dwErrCde != SUCCESS)
{
    ErrorStop(&lDriverHandle, dwErrCde);
    printf("Press any key to exit....");
    getch();
    return;
}

6.2.2. A pirossal jelölt részeket töröljük ki.

//Harmadik lépés: Eszköz megynitása
dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Negyedik lépés: Kimeneti értéket a meghatározott csatornára
tAOVoltageOut.chan = usChan;
tAOVoltageOut.OutputValue = fOutValue;
dwErrCde = DRV_AOVoltageOut(lDriverHandle, &tAOVoltageOut);
if (dwErrCde != SUCCESS)
{
    ErrorStop(&lDriverHandle, dwErrCde);
printf("Press any key to exit....");
    getch();
    return;
}

6.2.3. Változtassuk meg, ahogy az zölddel van jelölve.

motorDA = 3;
new_voltage = 5.0;
//Első lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNumDA, &lDriverHandleDA);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Második lépés: Kimeneti érték a meghatározott csatornára
tAOVoltageOut.chan = motorDA;
tAOVoltageOut.OutputValue = new_voltage;
dwErrCde = DRV_AOVoltageOut(lDriverHandleDA, &tAOVoltageOut);
if (dwErrCde != SUCCESS)
{
    ErrorStop(&lDriverHandleDA, dwErrCde);
    return;
}
Alternatív megoldás adható az előre definiált változók nélkül (motorDAésnew_votlage). Ebben az esetben a kód a következő:
//Első lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNumDA, &lDriverHandleDA);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Második lépés: Kimeneti érték a meghatározott csatornára
tAOVoltageOut.chan = 3;
tAOVoltageOut.OutputValue = 5.0f;
dwErrCde = DRV_AOVoltageOut(lDriverHandleDA, &tAOVoltageOut);
if (dwErrCde != SUCCESS)
{
    ErrorStop(&lDriverHandleDA, dwErrCde);
    return;
}

6.3. Valós idejű óra használata a PCI 1720 D/A kártyán - 5.5 feladat megoldása

A váltózó mezőbe írandó kód:

float sin_amp = 3.0;

float sin_ang_freq = 0.25;

A kódmezőbe írandó kód:

new_voltage = sin_amp * sin(sin_ang_freq * (time_array[tickCount] / 10000000.0));

A 10000-rel való osztás szükséges, hogy milliszekundumot és 1000-rel, hogy szekundumot kapjunk.

A sin()függvény benne van a C++-ban, ami a Math.h header fájlban található. Ez kiszámolja a megadott érték szinuszát.

Ha más változót használunk a new_voltage helyett, a program nem fog működni.

Az eredmény:

Szinuszos kimeneti feszültség
6.1. ábra - Szinuszos kimeneti feszültség


Közvetlenül lehet írni a változókba, változók létrehozása nélkül. Ebben az esetben a kód a következő:

new_voltage = 3.0 * sin(0.25 * (time_array[tickCount] / 10000000.0));

6.4. A PCI-1784 számláló használata - 5.4 mérési feladat megoldása

A kód ami az első szöveg mezőbe másolandó (inicializáció):

//Első lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNumCounter, &lDriverHandleCounter);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Második lépés: Számláló visszaállítása DRV_CounterReset
dwErrCde = DRV_CounterReset(lDriverHandleCounter, wChannelCounter);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Harmadik lépés: Számlálás elindítása DRV_CounterEventStart
tCounterEventStart.counter = wChannelCounter;
dwErrCde = DRV_CounterEventStart(lDriverHandleCounter, &tCounterEventStart);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Negyedik lépés: Számláló érték kiolvasása DRV_CounterEventRead
tCounterEventRead.counter = wChannelCounter;
tCounterEventRead.overflow = &wOverflow;
tCounterEventRead.count = &dwReading;
dwErrCde = DRV_CounterEventRead(lDriverHandleCounter, &tCounterEventRead);
if (dwErrCde != SUCCESS)
{
     ErrorStop(&lDriverHandleCounter, dwErrCde);
     return;
}

A kód, ami a második szövegmezőbe kerül(cikluson belül):

dwErrCde = DRV_CounterEventRead(lDriverHandleCounter, &tCounterEventRead);
if (dwErrCde != SUCCESS)
{
     ErrorStop(&lDriverHandleCounter, dwErrCde);
     return;
}

Az eredmény a szinuszos nyomaték hatására kialakuló pozíció és sebesség grafikon.

6.4.1. A(Dasoft.cpp) mintafájlból a következők másolandók a szövegmezőbe:

//Harmadik lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Negyedik lépés: Számláló visszaállítása DRV_CounterReset
dwErrCde = DRV_CounterReset(lDriverHandle, wChannel);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Ötödik lépés: Számláló elindítása DRV_CounterEventStart
tCounterEventStart.counter = wChannel;
dwErrCde = DRV_CounterEventStart(lDriverHandle, &tCounterEventStart);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Hatodik lépés: Számláló kiolvasása DRV_CounterEventRead while ciklusban
//         and display counter value, exit when pressing any key
tCounterEventRead.counter = wChannel;
tCounterEventRead.overflow = &wOverflow;
tCounterEventRead.count = &dwReading;
while( !kbhit() )
{
   dwErrCde = DRV_CounterEventRead(lDriverHandle, &tCounterEventRead);
   if (dwErrCde != SUCCESS)
   {
      ErrorStop(&lDriverHandle, dwErrCde);
      return;
   }
   printf("\nCounter value = %lu", dwReading);
   Sleep(1000);
}

6.4.2. Töröljük a pirossal jelölt részeket.

//Harmadik lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Negyedik lépés: Számláló visszaállítása DRV_CounterReset
dwErrCde = DRV_CounterReset(lDriverHandle, wChannel);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Ötödik lépés: Számláló elindításaDRV_CounterEventStart
tCounterEventStart.counter = wChannel;
dwErrCde = DRV_CounterEventStart(lDriverHandle, &tCounterEventStart);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
printf("Program terminated!\n");
    printf("Press any key to exit....");
    getch();
    exit(1);
}
// Hatodik lépés: Számláló kiolvasása DRV_CounterEventReadwhile ciklusban
//         and display counter value, exit when pressing any key
tCounterEventRead.counter = wChannel;
tCounterEventRead.overflow = &wOverflow;
tCounterEventRead.count = &dwReading;
while( !kbhit() )
{
   dwErrCde = DRV_CounterEventRead(lDriverHandle, &tCounterEventRead);
   if (dwErrCde != SUCCESS)
   {
      ErrorStop(&lDriverHandle, dwErrCde);
      return;
   }
   printf("\nCounter value = %lu", dwReading);
Sleep(1000);
}

6.4.3. Cseréljük a kódot a zöld szerint.

//Első lépés: Eszköz megnyitása
dwErrCde = DRV_DeviceOpen(lDevNumCounter, &lDriverHandleCounter);   
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Második lépés: Számláló visszaállítása DRV_CounterReset
dwErrCde = DRV_CounterReset(lDriverHandleCounter, wChannelCounter);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Harmadik lépés: Számláló indítása DRV_CounterEventStart
tCounterEventStart.counter = wChannelCounter;
dwErrCde = DRV_CounterEventStart(lDriverHandleCounter, &tCounterEventStart);
if (dwErrCde != SUCCESS)
{
    ErrorHandler(dwErrCde);
    exit(1);
}
// Step 4: Számláló kiolvasása DRV_CounterEventRead
tCounterEventRead.counter = wChannelCounter;
tCounterEventRead.overflow = &wOverflow;
tCounterEventRead.count = &dwReading;
dwErrCde = DRV_CounterEventRead(lDriverHandleCounter, &tCounterEventRead);
if (dwErrCde != SUCCESS)
{
     ErrorStop(&lDriverHandleCounter, dwErrCde);
     return;
}

Hurkon belül:

dwErrCde = DRV_CounterEventRead(lDriverHandleCounter, &tCounterEventRead);
if (dwErrCde != SUCCESS)
{
     ErrorStop(&lDriverHandleCounter, dwErrCde);
     return;
}

6.5. Nyílt szabályozó kör mérése - Motion control/Exercise 4 menüpont alatt található laboratóriumi mérési gyakorlat megoldása

A nyílt hurkú tesztre több lehetőségünk van. A kimeneti feszültség kiszámítható a motor paramétereiből. Mivel itt nincs visszacsatolás, nincs pontos ismeretünk a motor pontos tengelysebességéről és a zavaró hatások teljes mértékben hatnak.

6.5.1. A motor válasza állandó nyomatékra - 5.11 feladat megoldása

A motort egy eltérő kimeneti nyomatékkal teszteltük. Először 0.1-t alkalmaztunk és másodszor 1-t. A kontrollernek deklarációk nélkül az alábbi értékei adottak:

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adott) - sebesség

  4. torque (adott) - nyomaték

Deklaráció:

Szabályozó kód:

ResultData.Torque = 1;

vagy

ResultData.Torque = 0.1;

Az eredmények az alábbi ábrákon láthatók. Látható, hogy a tengelypozíció és sebesség diagramja állandó gyorsulással éri el a maximális sebességet. A nyílt hurkú rendszer nagyon lassú, mivel állandó feszültséget használ.

Nyílt hurkú vezérlés, nyomaték=1
Nyílt hurkú vezérlés, nyomaték=1
6.2. ábra - Nyílt hurkú vezérlés, nyomaték=1


Nyílt hurkú vezérlés, nyomaték=0.1
Nyílt hurkú vezérlés, nyomaték=0.1
6.3. ábra - Nyílt hurkú vezérlés, nyomaték=0.1


6.5.2. Konstans nyomaték és digitális szűrő - 5.12 feladat megoldása

A motort különböző kimeneti nyomatékokkal teszteltük ebben az esetben. 0.1 az első és 1 a második esetben.

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adott) - sebesség

  4. torque (adott) - nyomaték

Deklarációk:

/* velocity filter variables */
static float  z_1=0.0, z_2=0.0, z_3=0.0;
static float ztmp_1=0.0, ztmp_2=0.0;
/* velocity filter parameters */
/* Tsample=1e-3 and Tc=0.007 */   
float ad11= 0.9996, ad12= 9.9072e-004, ad13= 4.3344e-007;
float ad21= -1.2637, ad22= 0.9730, ad23= 8.0496e-004;
float ad31= -2.3468e+003, ad32= -50.5468, ad33= 0.6280;
float bd1= 4.3671e-004, bd2= 1.2637, bd3= 2.3468e+003;

Szabályozó kód:

/* Velocity filter  */
    ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;
    ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;
    z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;
           z_1  = ztmp_1;
           z_2  = ztmp_2;
ResultData.Velocity =z_1;
ResultData.Torque = 1;
A szűrt és szűretlen sebességek összehasonlítása
A szűrt és szűretlen sebességek összehasonlítása
6.4. ábra - A szűrt és szűretlen sebességek összehasonlítása


Különböző szűrők összehasonlítása
6.5. ábra - Különböző szűrők összehasonlítása


6.5.3. A motor válasza a szinuszos feszültségre és a szervoerősítő offsetjének kompenzálása - 5.13 feladat megoldása

A szervoerősítő offset feszültséggel rendelkezik. Ez akkor a legszembetűnőbb, ha szinuszos feszültséget alkalmazunk. Ebben az esetben azt várnánk, hogy a motor tengelyének sebessége és pozíciója is egyaránt szinuszosan változik.

A mérés hossza milliszekundumban: 4000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott)- pozíció

  3. velocity (adott) - sebesség

  4. torque (adott) - nyomaték

  5. sin_torque (választott) – sin_nyomaték

Deklaráció:

doubleparam = 0;
doublesinperiod = 1;
doublesinamplitude = 2;
doubleoffset = 0;  
// változtassuk az offset tartományát -0.3 és -0.2 közt

Szabályozó kód:

// Pillanatnyi idő millisekundumban
param = CurrentTime;
// Pillanatnyi idő másodpercben
param /= 1000;
// Eredmény
param = param * 2 * PI / sinperiod;
//
// Szabályozó kezdete
//
// Sinuszos feszültség
ResultData.Torque = sinamplitude * sin(param) + offset;
ResultData.StateVariable_5 = sinamplitude * sin(param);
//
// Szabályozó vége

Az eredmények lentebb az ábrán láthatók. A pozíció diagram nem teljesen szinuszos, hanem van egy lineáris komponense is. Ez a szervoerősítő offsetjének hatása. Ezt ki lehet vonni az alkalmazott feszültségből és ezáltal a lineáris komponens megszüntethető, csak a deklarációt kell megváltoztatni a vezérlőben:

doubleoffset = -0.27; 
A Matlab program az eredmények megjelenítéséhez
% módosítani a fájlneveknek megfelelően
sv_1_14axc255hnyzli55axowlm55
sv_2_14axc255hnyzli55axowlm55
sv_3_14axc255hnyzli55axowlm55
sv_4_14axc255hnyzli55axowlm55
sv_5_14axc255hnyzli55axowlm55
time=time/1000;
plot(time,position)
set(gca, 'fontsize', [25]);
xlabel('Time [sec]');
ylabel('Position [rad]');
title('Open loop');
% itt állítható a tengely
axis([0 4 0 12]);
grid
pause;
print -djpegopen_poz
plot(time,velocity)
set(gca, 'fontsize', [25]);
xlabel('Time [sec]');
ylabel('Velocity [rad/s]');
title('Open loop');
% itt állítható a tengely
axis([0 4 -15 15]);
grid
print -djpegopen_vel
pause;
plot(time,torque)
set(gca, 'fontsize', [25]);
xlabel('Time [sec]');
ylabel('Torque [mNm]');
title('Open loop');
% itt állítható a tengely
axis([0 4 -2.5 2.5]);
grid
print -djpegopen_torque
pause;
plot(time,sin_torque)
set(gca, 'fontsize', [25]);
xlabel('Time [sec]');
ylabel('Torque without offset');
title('Open loop');
% itt állítható a tengely
axis([0 4 -2.5 2.5]);
grid
print -djpegopen_sin

(a)

(b)

6.5.4. Digitális szűrők összehasonlítása - 5.14 mérési feladat megoldása

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott)

  2. position (adott)

  3. velocity (adott)

  4. torque (adott)

  1. ref

  2. filt

  3. filtb

Deklarációk:

doubleparam = 0;
doublesinperiod = 0.1;
doublesinamplitude = 0.6;
doubleoffset = -0.217; 
/* sebesseg szuro valtozoi */
static float  z_1=0.0, z_2=0.0, z_3=0.0;
static float ztmp_1=0.0, ztmp_2=0.0;
/* Tsample=1e-3  Tc=0.0032*/
float ad11 = 0.99591;
float ad12 = 0.00095987;
float ad13 = 3.652e-007;
float ad21 = -11.3235;
float ad22 = 0.88778;
float ad23 = 0.00061567;
float ad31 = -19089.6748;
float ad32 = -193.6165;
float ad33 = 0.30752;
float bd1  = 0.0040906;
float bd2  = 11.3235;
float bd3  = 19089.6748; 
/* Bessel sebesseg szuro valtozoi */
static float  z_1b=0.0, z_2b=0.0, z_3b=0.0;
static float ztmp_1b=0.0, ztmp_2b=0.0;
/* Bessel Tsample=1e-3  Tc=0.0032*/
float ad11b = 0.95193;
float ad12b = 0.00083371;
float ad13b = 2.6009e-007;
float ad21b = -120.9668;
float ad22b = 0.56688;
float ad23b = 0.00034345;
float ad31b = -159737.83;
float ad32b = -629.4281;
float ad33b = -0.080513;
float bd1b  = 0.048071;
float bd2b  = 120.9668;
float bd3b  = 159737.83;

Szabályozó kód:

// Current time
param = CurrentTime;
// Only miliseconds
param /= 1000;
// Result
param = param * 2 * PI / sinperiod;
//
// Controller part begin
//
// Sinusoidal voltage
ResultData.Torque = sinamplitude * sin(param) + offset;
ResultData.StateVariable_5 = sinamplitude * sin(param);
/* Velocity filter  */
ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;
ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;
z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;
z_1  = ztmp_1;
z_2  = ztmp_2;
ResultData.StateVariable_6=z_1; 
/* Bessel velocity filter  */
ztmp_1b=ad11b* z_1b+ad12b* z_2b+ad13b* z_3b + bd1b* ResultData.Velocity;
ztmp_2b=ad21b* z_1b+ad22b* z_2b+ad23b* z_3b + bd2b* ResultData.Velocity;
z_3b=ad31b* z_1b+ad32b* z_2b+ad33b* z_3b + bd3b* ResultData.Velocity;
z_1b  = ztmp_1b;
z_2b  = ztmp_2b;
ResultData.StateVariable_7=z_1b; 

A mérést két különböző periódusidővel végeztük el

doublesinperiod = 0.1;

és

doublesinperiod = 0.5;

Az utóbbi esetben a mérés időtartamát 5000 ms hosszúságúra állítottuk, így mindkét esetben 10 periódust vizsgáltunk. A tranziensek lezajlása után az állandósultnak tekinthető utolsó két periódust rajzoltuk ki (ld. 6-8. és 6-9. ábra). Jól látható, hogy a gerjesztés frekvenciáját növelve a válasz amplitúdója csökken és a fáziskésése növekszik.

A 6-8. és 6-9. ábra elkésszítéséhez használt MatLab program:

sv_1_zlwzmf45pqyn1c45p31cvve4
sv_2_zlwzmf45pqyn1c45p31cvve4
sv_3_zlwzmf45pqyn1c45p31cvve4
sv_4_zlwzmf45pqyn1c45p31cvve4
sv_5_zlwzmf45pqyn1c45p31cvve4
sv_6_zlwzmf45pqyn1c45p31cvve4
sv_7_zlwzmf45pqyn1c45p31cvve4
 
plot(time,velocity,time,filt,time,filtb,time,ref)
set(gca, 'fontsize', [25]);
xlabel('Time [sec]');
ylabel('Velocity [rad/s]');
title('Open loop');
% you can adjust your axis
% axis([0.8 1 -1 1]);
axis([4 5 -3 3]);
grid
print -djpeg open_vel
Digitális szűrők összehasonlítása (periódusidő 0.1 s) Színkódolás nyomaték jel: világos kék, szűrés nélküli fordulatszám jel: kék, fordulatszám jel normál szűrővel: zöld, fordulatszám jel Bessel szűrővel: piros
6.6. ábra - Digitális szűrők összehasonlítása (periódusidő 0.1 s) Színkódolás nyomaték jel: világos kék, szűrés nélküli fordulatszám jel: kék, fordulatszám jel normál szűrővel: zöld, fordulatszám jel Bessel szűrővel: piros


Digitális szűrők összehasonlítása (periódusidő 0.4 s) Színkódolás nyomaték jel:világoskék, szűrés nélküli fordulatszám jel: kék, fordulatszám jel normál szűrővel: zöld, fordulatszám jel Bessel szűrővel: piros
6.7. ábra - Digitális szűrők összehasonlítása (periódusidő 0.4 s) Színkódolás nyomaték jel:világoskék, szűrés nélküli fordulatszám jel: kék, fordulatszám jel normál szűrővel: zöld, fordulatszám jel Bessel szűrővel: piros


6.6. Visszacsatolt kör mérések - Motion control/Exercise 5 menüpont alatt található laboratóriumi mérési gyakorlat megoldásai

6.6.1. A P szabályozó hangolása - 5.16 mérési feladat megoldása

Az első feladat a PID szabályozásnál a tagok hangolása. Ehhez a Ziegler-Nichols módszert használjuk, ami tapasztalati úton, könnyen alkalmazható a rendszerre még egy kezdő számára is. A PI szabályozó digitális megvalósításakor nem a TI paraméterre van szükség, hanem az I paraméterre. Ezért a Ziegler-Nichols hangolási táblázatot át kell írnunk.

AP

I

TD

P szabályozó

AU/2

PI szabályozó

AU/2.2

1.2AP/Tu

PID szabályozó

AU/1.7

2AP/Tu

AP Tu/8

A hangolás első lépésében szükségünk van egy P szabályozóra (I=0, D=0), a körerősítést növelve AU értét kell meghatározni. A kontroller alakja a következő:

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adott) - sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

Deklarálás:

doubleP = 4.75;

doubleref_vel = 7;

doubleerror_vel= 0;

/* sebesség szűrő változók */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* sebesség szűrő paraméterei */

/* Tsample=1e-3 and Tc=0.005 */

float ad11= 0.9989, ad12= 9.8248e-004, ad13= 4.0937e-007;

float ad21= -3.2749, ad22= 0.9497, ad23= 7.3686e-004;

float ad31= -5.8949e+003, ad32= -91.6978, ad33= 0.5076;

float bd1= 0.0011, bd2= 3.2749, bd3= 5.8949e+003;

Szabályozó kód:

/* sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//hibaszámítás a sebesség szabályozáshoz

error_vel=ref_vel- ResultData.Velocity;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.Torque = P*error_vel;

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

A szabályozó beállítja a kimenő feszültség minimális és maximális értékeit -5 és 5 V közötti tartományban. Az eredmények az ábrákon láthatók:

P szabályozó eredményei paraméter hangolásra
P szabályozó eredményei paraméter hangolásra
6.8. ábra - P szabályozó eredményei paraméter hangolásra


Következtetés: AU = 4.75 és TU≈0.2/6. A táblázat szerint PPI=2.1 és IPI=75.

Megjegyzés: AU és TU értékei függenek a szűrő paramétereitől.

6.6.2. A P szabályozó ugrásfüggvény válasza - 5.17 mérési feladat megoldása

Ehhez a teszthez a referencia tengely szögsebességet 1 rad/s-ra állítjuk. A szabályozó az alábbi formájú:

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklaráció:

doubleP_par = 2.3;

doubleI_par = 0.0;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 0;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

/* sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozó hibaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if (ResultData.Torque > 5) { ResultData.Torque = 5; }

if (ResultData.Torque < -5) { ResultData.Torque = -5; }

Az eredményeket az alábbi ábrák mutatják. Látható a P szabályozó állandósult hibája.

P szabályozó Ziegler-Nichols hangolása (P = 2.3)
6.9. ábra - P szabályozó Ziegler-Nichols hangolása (P = 2.3)


6.6.3. A P szabályozó változó referenciajellel - 5.18 feladat megoldása

Ebben a tesztben a referencia szögsebességet két időpontban változtatjuk: t = 0.2 s és t = 0.4 s. A P szabályozó állandósult hibája itt is látható. A szabályozó a következő alakú:

A mérés ideje milliszekundumban: 1000

Állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarációk:

doubleP_par = 2.3;

doubleI_par = 0.0;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 0;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

//Ugrások a referencia sebességben

if (CurrentTime > 0*1e3 && CurrentTime < 0.2*1e3)

{

ref_vel = 4;

}

if (CurrentTime >= 0.2*1e3 && CurrentTime < 0.4*1e3)

{

ref_vel = 8;

}

if (CurrentTime >= 0.4*1e3 && CurrentTime < 0.6*1e3)

{

ref_vel = 2;

}

/* Velocity filter */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//sebesség szabályozás hibaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if (ResultData.Torque > 5) { ResultData.Torque = 5; }

if (ResultData.Torque < -5) { ResultData.Torque = -5; }

P szabályozó válaszai a referencia sebesség 3 ugrásszerű változására
P szabályozó válaszai a referencia sebesség 3 ugrásszerű változására
6.10. ábra - P szabályozó válaszai a referencia sebesség 3 ugrásszerű változására


6.6.4. A P szabályozó válasza a terhelés ugrásszerű változásaira - 5.19 mérési feladat megoldása

Látható, hogy a P szabályozó legnagyobb hátránya az állandósult hibája és a zavarok bennhagyása.

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklaráció:

doubleP_par = 2.3;

doubleI_par = 0.0;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 2;

/* sebesség szűrő változók */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

if (CurrentTime >= 0.4*1e3 && CurrentTime < 0.7*1e3)

{

load = 0.5;

}

/* Sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozás hibaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if (ResultData.Torque > 5) { ResultData.Torque = 5; }

if (ResultData.Torque < -5) { ResultData.Torque = -5; }

P szabályozó eredményei ugrásszerű terhelésre
P szabályozó eredményei ugrásszerű terhelésre
6.11. ábra - P szabályozó eredményei ugrásszerű terhelésre


6.6.5. A PI szabályozó ugrás függvényre adott válasza - 5.20 mérési feladat megoldása

Ennél a tesztnél a referencia szögsebesség 1 rad/s. A szabályozó az alábbi alakú:

Mérés ideje milliszekundumokban: 1000

Állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklaráció:

doubleP = 0.6;

doubleI = 7;

doubleref_vel = 8;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 0;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* sebesség szűrő paraméterei */

/* Tsample=1e-3 and Tc=0.007 */

float ad11= 0.9996, ad12= 9.9072e-004, ad13= 4.3344e-007;

float ad21= -1.2637, ad22= 0.9730, ad23= 8.0496e-004;

float ad31= -2.3468e+003, ad32= -50.5468, ad33= 0.6280;

float bd1= 4.3671e-004, bd2= 1.2637, bd3= 2.3468e+003;

Szabályozó kód:

/* Sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozó hibaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000.0;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.StateVariable_8 = CurrentTime;

ResultData.Torque = P*error_vel + I*error_vel_int - load;

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

Alapvető különbség P és PI vezérkő között, hogy utóbbinak nincs állandósult hibája. Ez az integráló tag hatása, amely összegzi a hibát. Az integrálási hiba is megjelenik, ami kezdetben túllövést eredményez, majd később lecseng. Ugyanakkor a PI szabályozó gyorsabb is. Hátránya, hogy túl nagy túllövést vagy instabilitást okozhat. A jelentős túllövés oka a szabályozó telítődése (ld. 5-14. ábra). Ez egy hozzáadott D taggal csökkenthető, de lásd még a 5.23 mérési feladatot.

PI szabályozó eredményei ugrásszerű referencia sebesség értékre
PI szabályozó eredményei ugrásszerű referencia sebesség értékre
6.12. ábra - PI szabályozó eredményei ugrásszerű referencia sebesség értékre


6.6.6. A PI szabályozó változó referenciajellel - 5.21 mérési feladat megoldása

Ebben a tesztben a referencia tengely szögsebességét két időpillanatban változtatjuk: t = 0.3 s és t = 0.6 s. A PI szabályozó gyorsabb a P-hez képest és a motor állandósult hiba nélkül működik. A szabályozó az alábbi alakú:

A mérés hossza milliszekundumban: 1000

Állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklaráció:

doubleP_par = 2;

doubleI_par = 50.0;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 0;

/* sebesség szűrő változók */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

//Ugrás változások referencia sebességben

if (CurrentTime > 0*1e3 && CurrentTime < 0.3*1e3)

{

ref_vel = 4;

}

if (CurrentTime >= 0.3*1e3 && CurrentTime < 0.6*1e3)

{

ref_vel = 8;

}

if (CurrentTime >= 0.6*1e3 && CurrentTime < 1.6*1e3)

{

ref_vel = 2;

}

/* Sebességszűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozás hbaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if (ResultData.Torque > 5) { ResultData.Torque = 5; }

if (ResultData.Torque < -5) { ResultData.Torque = -5; }

PI szabályozó eredménye 3 ugrásszerű változásra a referencia sebesség értékben
PI szabályozó eredménye 3 ugrásszerű változásra a referencia sebesség értékben
6.13. ábra - PI szabályozó eredménye 3 ugrásszerű változásra a referencia sebesség értékben


6.6.7. A PI szabályozó válasza a terhelés ugrásszerű változásaira - 5.22 mérési feladat megoldása

Ebben a tesztben virtuális terhelést alkalmazunk. Ha t< 0.3 s, akkor load=2.0 load, ha 0.3 s<t< 0.7 s, akkor load=0.5, végül, ha t>0.7 s, akkor load=2.0 ismét.

Mérés hossza milliszekundumban: 1000

Állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarálás:

doubleP_par = 2.3;

doubleI_par = 50;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 2;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

/* Sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

if (CurrentTime >= 0.4*1e3 && CurrentTime < 0.7*1e3)

{

load = 0.5;

}

//Sebesség szabályozó hibaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000.0;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

Észrevehető a PI szabályozó jó zavarszűrése a P vezérlőjével szemben.

PI szabályozó eredményei ugrásszerű terhelés változásra
PI szabályozó eredményei ugrásszerű terhelés változásra
6.14. ábra - PI szabályozó eredményei ugrásszerű terhelés változásra


6.6.8. Hibatolerációs mérések - 5.23 mérési feladat megoldása

Először az integráló tag értékét közvetlenül korlátozzuk.

A mérés hossza milliszekundumban: 12000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarációk:

doubleP_par = 2;

doubleI_par = 50;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 0;

/*

// a esetben

doubleint_lim = 100;

doubleTf = -0.3*1e3;

// besetben

doubleint_lim = 100;

doubleTf = 0.3*1e3;

// c esetben

doubleint_lim = 0.9;

doubleTf = 0.3*1e3;

// d esetben

doubleint_lim = 0.15;

doubleTf = 0.3*1e3;

*/

// kérem másolja be az egyik pár paramétert

doubleint_lim = 0.15;

doubleTf = 0.3*1e3;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

/* Sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozó hibaszámítása

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000.0;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

if (error_vel_int > int_lim)

{

error_vel_int = int_lim;

}

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if ( CurrentTime < Tf)

{

ResultData.Torque = 0.0;

}

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

Integrátor telítődése
Integrátor telítődése
Integrátor telítődése
6.15. ábra - Integrátor telítődése


Hasonló eredményt érhetünk el, ha a szabályozó telítődésénél az integrálótagot kikapcsoljuk.

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarációk:

doubleP_par = 2.1;

doubleI_par = 75.0;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 2;

double delta = 0;

/* velocity filter variables */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 and Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

/* Velocity filter */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Error calculation for velocity control

error_vel=ref_vel- ResultData.Velocity;

delta=error_vel*(CurrentTime - OldTime)/1000;

error_vel_int = error_vel_int + delta;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.Torque = P_par*error_vel + I_par*error_vel_int - load;

if (ResultData.Torque > 5) { ResultData.Torque = 5; error_vel_int = error_vel_int - delta*0; }

if (ResultData.Torque < -5) { ResultData.Torque = -5; error_vel_int = error_vel_int - delta*0;}

ResultData.StateVariable_7 = error_vel_int;

A 6-14. ábrán látható túllövést csökkenthetjük azzal, ha az integrátort kikapcsoljuk a telítődés időtartamára.

PI szabályozó telítődésének hatása
6.16. ábra - PI szabályozó telítődésének hatása


Hasonlítsuk össze a két esetben az integráló tag értékét:

A hibaintegrál időfüggvénye PI szabályozás esetén
6.17. ábra - A hibaintegrál időfüggvénye PI szabályozás esetén


A hibaintegrál időfüggvénye PI szabályozás anti windup funkcióval
6.18. ábra - A hibaintegrál időfüggvénye PI szabályozás anti windup funkcióval


6.6.9. Időkésleltetett rendszer PI szabályozása - 5.24 mérési feladat megoldása

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarációk:

doubleP_par = 0.85;

doubleI_par = 12.0;

doubleref_vel = 7;

doubleerror_vel;

static doubleerror_vel_int=0.0;

double load = 0;

/* Time delay pipe */

static float T_1=0.0, T_2=0.0, T_3=0.0;

static float T_4=0.0, T_5=0.0, T_6=0.0;

static float T_7=0.0, T_8=0.0, T_9=0.0;

/* velocity filter variables */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 and Tc=0.0032 */

float ad11 = 0.99591, ad12 = 0.00095987, ad13 = 3.652e-007;

float ad21 = -11.3235, ad22 = 0.88778, ad23 = 0.00061567;

float ad31 = -19089.6748, ad32 = -193.6165, ad33 = 0.30752;

float bd1 = 0.0040906, bd2 = 11.3235, bd3 = 19089.6748;

Szabályozó kód:

//Step changes in reference speed

/* Velocity filter */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Error calculation for velocity control

error_vel=ref_vel- ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000;

ResultData.StateVariable_5 = ref_vel;

ResultData.StateVariable_6 = error_vel;

ResultData.StateVariable_7 = error_vel_int;

ResultData.Torque = T_1;

T_1=T_2;

T_2=T_3;

T_3=T_4;

T_4=T_5;

T_5=T_6;

T_6=T_7;

T_7=T_8;

T_8=T_9;

T_9= P_par*error_vel + I_par*error_vel_int - load;

if (T_9 > 5) { T_9 = 5;

error_vel_int = error_vel_int - error_vel*(CurrentTime - OldTime)/1000;}

if (T_9 < -5) { T_9 = -5;

error_vel_int = error_vel_int - error_vel*(CurrentTime - OldTime)/1000;}

Az eredményeket megjelenítő MatLab program:

% please, modify it according to you file names

sv_1_hwztupv131qjbi55l3k5oi45

sv_2_hwztupv131qjbi55l3k5oi45

sv_3_hwztupv131qjbi55l3k5oi45

sv_4_hwztupv131qjbi55l3k5oi45

sv_5_hwztupv131qjbi55l3k5oi45

sv_6_hwztupv131qjbi55l3k5oi45

sv_7_hwztupv131qjbi55l3k5oi45

time=time/1000;

plot(time,position)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Position [rad]');

title('Delyed system with PI controller');

% you can adjust your axis

axis([0 1 0 12]);

grid

pause;

print -djpeg Delay_poz

plot(time,velocity)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Velocity [rad/s]');

title('Delyed system with PI controller');

% you can adjust your axis

axis([0 1 0 12]);

grid

print -djpeg Delay_vel

pause;

plot(time,torque)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Torque [mNm]');

title('Delyed system with PI controller');

% you can adjust your axis

%axis([0 1 -1 1]);

grid

print -djpeg Delay_torque

pause;

plot(time,int)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Int');

title('Delyed system with PI controller');

% you can adjust your axis

%axis([0 1 -1 1]);

grid

print -djpeg Delay_int

A stabilitás határa
6.19. ábra - A stabilitás határa


Következtetés: AU = 1.7 és TU≈0.08. A táblázat szerint PPI=0.85 és IPI=12. E paraméterekkel behangolt PI szabályozóval végzett mérés eredménye a 6-22. ábrán látható.

PI szabályozás időkésleltetett rendszer esetén
PI szabályozás időkésleltetett rendszer esetén
PI szabályozás időkésleltetett rendszer esetén
6.20. ábra - PI szabályozás időkésleltetett rendszer esetén


6.6.10. P és PI szabályozó ugrás függvény pozíció refereciajel válasza - 5.25 mérési feladat megoldása

Ehhez a teszthez a referencia tengely-pozíciót 10 rad-ra állítjuk. A szabályozó a következő alakú:

A mérés hossza milliszekundumban: 1000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarálás:

doubleP_par = 1;

doubleI_par = 0;

doubleref_pos = 10;

doubleerror_pos;

static doubleerror_pos_int=0.0;

double load = 0;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

static double ini_0 = 0;

static double ini_1 = -10;

Szabályozó kód:

if (ini_1 < 0)

{

ini_0 = ResultData.Position;

}

ini_1 = 5;

/* Velocity filter */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozó hibaszámítása

error_pos=ref_pos- ResultData.Position + ini_0;

error_pos_int = error_pos_int + error_pos*(CurrentTime - OldTime)/1000.0;

ResultData.StateVariable_5 = ref_pos;

ResultData.StateVariable_6 = error_pos;

ResultData.StateVariable_7 = error_pos_int;

ResultData.StateVariable_8 = ResultData.Position - ini_0;

ResultData.Torque = P_par*error_pos + I_par*error_pos_int - load;

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

Látható a nagy túllövés a vezérlőben, és az állandósult hiba is jelen van. Viszont most a pozíciót mértük, és nem deriválásból számoltuk, a pozíció görbe sima az előző esetekhez képest.

P szabályozó eredményei a referencia pozíció ugrásszerű változására
P szabályozó eredményei a referencia pozíció ugrásszerű változására
6.21. ábra - P szabályozó eredményei a referencia pozíció ugrásszerű változására


P szabályozó eredményei a referencia pozíció ugrásszerű változására
P szabályozó eredményei a referencia pozíció ugrásszerű változására
6.22. ábra - P szabályozó eredményei a referencia pozíció ugrásszerű változására


PI szabályozó eredményei a referencia pozíció ugrásszerű változására
PI szabályozó eredményei a referencia pozíció ugrásszerű változására
6.23. ábra - PI szabályozó eredményei a referencia pozíció ugrásszerű változására


6.6.11. Stick-slip jelenség - 5.26 mérési feladat megoldása

Mérés ideje milliszekundumban: 10000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adot) -sebesség

  4. torque (adott) - nyomaték

  5. ref (választott) - ref

  6. error (választott) - hiba

  7. integral (választott) - integrál

Deklarációk:

doubleP_par = 0.1;

doubleI_par = 0.1;

doubleref_pos = 5;

doubleerror_pos;

static doubleerror_pos_int=0.0;

double load = 0;

/* sebesség szűrő változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

static double ini_0 = 0;

static double ini_1 = -10;

Szabályozó kód:

if (ini_1 < 0)

{

ini_0 = ResultData.Position;

}

ini_1 = 5;

/* Sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Sebesség szabályozó hibaszámítása

error_pos=ref_pos- CurrentPosition;

error_pos_int = error_pos_int + error_pos*(CurrentTime - OldTime)/1000.0;

ResultData.StateVariable_5 = ref_pos;

ResultData.StateVariable_6 = error_pos;

ResultData.StateVariable_7 = error_pos_int;

ResultData.Torque = P_par*error_pos + I_par*error_pos_int - load;

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

Stick-slip jelenség
Stick-slip jelenség
Stick-slip jelenség
Stick-slip jelenség
Stick-slip jelenség
Stick-slip jelenség
Stick-slip jelenség
Stick-slip jelenség
6.24. ábra - Stick-slip jelenség


6.6.12. Pozíció szabályozás belső sebesség szabályozóval - 5.27 mérési feladat megoldása

A szabályozó kódja a következő:

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adott) - sebesség

  4. torque (adott) - nyomaték

  5. ref_poz (választott)

  6. ref_vel (választott)

  7. err_pos (választott)

  8. err_vel (választott)

  9. int_vel (választott)

  10. poz (választott)

Deklaráció:

doubleP_pos = 3;

doubleP_vel = 3;

doubleI_vel = 30;

doubleref_pos = 10;

double ref_vel = 0;

doubleerror_pos = 0;

double error_vel = 0;

static double error_vel_int = 0;

static double ini_0 = 0;

static double ini_1 = -10;

/* sebesség szabályozó változói */

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/* Tsample=1e-3 és Tc=0.0027 */

float ad11= 0.9936, ad12= 9.4621e-004, ad13= 3.4524e-007;

float ad21= - 17.5400, ad22= 0.8515, ad23= 5.6261e-004;

float ad31= -2.8584e+004, ad32= -249.0676, ad33= 0.2264;

float bd1= 0.0064, bd2= 17.5400, bd3= 2.8584e+004;

Szabályozó kód:

if (ini_1 < 0)

{

ini_0 = ResultData.Position;

}

ini_1 = 5;

/* Sebesség szűrő */

ztmp_1=ad11* z_1+ad12* z_2+ad13* z_3 + bd1* ResultData.Velocity;

ztmp_2=ad21* z_1+ad22* z_2+ad23* z_3 + bd2* ResultData.Velocity;

z_3=ad31* z_1+ad32* z_2+ad33* z_3 + bd3* ResultData.Velocity;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

//Pozíció szabályozás hibaszámítása

error_pos = ref_pos- ResultData.Position + ini_0;

// Sebesség szabályozás hibaszámítása

ref_vel = error_pos*P_pos;

error_vel = ref_vel - ResultData.Velocity;

error_vel_int = error_vel_int + error_vel*(CurrentTime - OldTime)/1000;

ResultData.StateVariable_5 = ref_pos;

ResultData.StateVariable_6 = ref_vel;

ResultData.StateVariable_7 = error_pos;

ResultData.StateVariable_8 = error_vel;

ResultData.StateVariable_9 = error_vel_int;

ResultData.StateVariable_10 = ResultData.Position - ini_0;

//Szabályozó

ResultData.Torque = P_vel*error_vel + I_vel*error_vel_int;

if (ResultData.Torque > 5)

{

ResultData.Torque = 5;

}

if (ResultData.Torque < -5)

{

ResultData.Torque = -5;

}

Látható, hogy ez esetben nincs túllövés, mert a tengely sebessége idővel csökkeni kezd. Megállapíthatjuk, hogy a pozíció szabályozó belső sebességszabályozóval sokkal jobb eredményeket ad, mint a sima P szabályozó.

Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
Kaszkád szabályozás eredményei
6.25. ábra - Kaszkád szabályozás eredményei


6.6.13. Csúszómód szabályozó eredmények - 5.28 mérési feladat megoldása

Csúszómód szabályozót is lehet használni. Ekkor két különböző mérést vizsgálunk, amelyek szabályozó részeik megegyeznek, de mivel a sebességet a motor pozíciójából számoljuk, így az zajossá teszi a sebesség diagramot. A sebesség értékeket szűrve a zajok kiküszöbölhetőek.

Mérés hossza milliszekundumban: 12000

Az állapotváltozók nevei:

  1. time (adott) - idő

  2. position (adott) - pozíció

  3. velocity (adott) - sebesség

  4. torque (adott) - nyomaték

  5. sigma (választott) - szigma

A szabályozó kódja a következő:

Deklarációk:

float sigma;

float error;

float error_dot;

float ref=5.0;

float lambda=2;

static double ini_0 = 0;

static double ini_1 = -10;

Szabályozó kód:

if (ini_1 < 0)

{

ini_0 = ResultData.Position;

}

ini_1 = 5;

error=ref-ResultData.Position+ ini_0;

error_dot=- ResultData.Velocity;

sigma= error+ lambda*error_dot;

ResultData.StateVariable_5 = sigma;

if (sigma>0)

{ ResultData.Torque=0.1;

}

if (sigma<0)

{ ResultData.Torque =-0.1;

}

if (sigma=0)

{ ResultData.Torque=0;

}

Válassza kia a letöltendő elemet: Minden fájl

Kérem, töltse le a DOWNLOAD gombra kattintva

Az eredmények a következő MATLAB fájlba plottolódnak:

% módosítani a fájlnevek szerint

sv_1_n0ktqaui51tw5hrtvpypxu45

sv_2_n0ktqaui51tw5hrtvpypxu45

sv_3_n0ktqaui51tw5hrtvpypxu45

sv_4_n0ktqaui51tw5hrtvpypxu45

sv_5_n0ktqaui51tw5hrtvpypxu45

time=time/1000;

plot(time,position)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Position [rad]');

title('Sliding mode controller');

% tengely beállítása

axis([0 12 0 6]);

grid

pause;

print -djpegsmc_poz

plot(time,velocity)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Velocity [rad/s]');

title('Sliding mode controller');

% tengely beállítása

axis([0 12 0 3]);

grid

print -djpegsmc_vel

pause;

plot(5-position,-velocity)

set(gca, 'fontsize', [25]);

xlabel('Position error [rad]');

ylabel('Velocity error [rad/s]');

title('Sliding mode controller');

% tengely beállítása

axis([0 5 -3 0]);

grid

print -djpegsmc_traj

pause;

plot(time,torque)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Torque [mNm]');

title('Sliding mode controller');

% tengely beállítása

axis([0 12 -0.15 0.15]);

grid

print -djpegsmc_torque

pause;

plot(time,sigma)

set(gca, 'fontsize', [25]);

xlabel('Time [sec]');

ylabel('Sigma');

title('Sliding mode controller');

% tengely beállítása

axis([0 12 -2.5 2.5]);

grid

print -djpegsmc_sigm

6-28. ábra: A pozíció szabályozó eredményei csúszómódban

Csúszómód szabályozó sebesség szűrővel a következő alakú:

Deklaráció:

float sigma;

float error;

float error_dot;

float ref=5.0;

float lambda=2;

/* filter variables*/

static float z_1=0.0, z_2=0.0, z_3=0.0;

static float ztmp_1=0.0, ztmp_2=0.0;

/*omega_c=10 a modellezetlen dinamika nagy kotyogást okoz  */

float Azd11= 1, Azd12= 0.0010, Azd13= 0.0000;

float Azd21= -0.0005, Azd22= 0.9999, Azd23= 0.0010;

float Azd31= -0.9851, Azd32= -0.2960, Azd33= 0.9703;

float Bzd1= 0.0000, Bzd2= 0.0005, Bzd3= 0.9851;

/*  omega_c=1/0.007 a modellezetlen dinamika nem okoz nagy kotyogást 

float Azd11= 0.9996, Azd12= 9.9072e-004, Azd13= 4.3344e-007;

float Azd21= -1.2637, Azd22= 0.9730, Azd23= 8.0496e-004;

float Azd31= -2.3468e+003, Azd32= -50.5468, Azd33= 0.6280;

float Bzd1= 4.3671e-004, Bzd2= 1.2637, Bzd3= 2.3468e+003;

*/

static double ini_0 = 0;

static double ini_1 = -10;

Szabályozó kód:

if (ini_1 < 0)

{

ini_0 = ResultData.Position;

}

ini_1 = 5;

error=ref-ResultData.Position+ ini_0;

/* filter */

ztmp_1 = Azd11* z_1 +Azd12* z_2 +Azd13* z_3 + Bzd1*ResultData.Velocity ;

ztmp_2 = Azd21* z_1 +Azd22* z_2 +Azd23* z_3 + Bzd2*ResultData.Velocity ;

z_3 = Azd31*z_1 +Azd32*z_2 +Azd33* z_3 + Bzd3*ResultData.Velocity ;

z_1 = ztmp_1;

z_2 = ztmp_2;

ResultData.Velocity =z_1;

error_dot=- z_1;

sigma=error+ lambda*error_dot;

ResultData.StateVariable_5 = sigma;

if (sigma>0)

{ ResultData.Torque=0.1;}

if (sigma<0)

{ ResultData.Torque =-0.1;

}

if (sigma=0)

{ ResultData.Torque=0;}

Az eredmények az alábbi ábrákon láthatók:

6-29. ábra: Csúszómód szabályozó sebesség szűrővel

6-30. ábra: A csúszómód sebesség szabályozóval ellátott pozíció szabályozó eredményei

6.7. Komplex tervezési és mérési feladat

Ebben a fejezetben áttekintjük a DC motor szabályozásánál alkalmazott állapot-visszacsatolásos szabályozás elméleti alapjait. Mivel a motor szabályozását egy számítógép segítségével végezzük el, így diszkrét idejű modellt fogunk használni, hiszen a szabályozás implementációja is ezt kívánja. Az itt bemutatott módszerek gyakorlati megvalósítását majd később MatLab segítségével el is végezzük. Az elméleti áttekintés során csak azokat a dolgokat emeljük ki, amelyek a később elvégzett motorszabályozás során hasznosításra is kerülnek, például nem lesz szó a folytonos idejű megvalósításról, illetve nem kerül minden felhasznált matematikai eljárás részletes bemutatásra, bizonyításra, ezekhez a leírás végén az ajánlott irodalom részben helyeztünk el forrásokat.

6.7.1. Az állapot-visszacsatolás és tervezése

Tekintsük az alábbi időinvariáns diszkrét idejű állapottér modellt:

(6.1)

Ahol

  • : az állapotváltozók oszlop vektora -adik időpontban;

  • : a bemeneti jel oszlopvektora -adik időpontban;

  • : a kimeneti jel vektora -adik időpontban;

  • : a rendszer/állapot mátrix;

  • : a bemeneti mátrix;

  • : a kimeneti mátrix;

  • : a segédmátrix (ez általában 0).

Az állapot-visszacsatolás célja az, hogy a rendszermátrixot olyan módon változtassuk meg, hogy a rendszer viselkedése számunkra kedvező legyen. Mivel sajátértékei a rendszer pólusai, így jól látható, hogy ezek megváltoztatásával a rendszer viselkedését – bizonyos korlátok mellett – szabadon választhatjuk meg. Az állapotegyenletekre ránézve észrevehetjük, hogy – -t a következőképpen választva – értéke megváltoztatható:

(6.2)

ahol az a rendszer referenciajele. Így a következőt kapjuk:

(6.3)

ahol:

  • : az állapot-visszacsatolást definiáló mátrix;

  • : a rendszer új bemeneti jele.

Az új rendszermátrix lesz, amelynek értékét a mátrixszal állíthatjuk be. Mivel nem közvetlenül hat a rendszermátrixra, hanem csak -vel való szorzás után, így tetszőleges eredményt nem érhetünk el.

Ezért az állapot-visszacsatolás tervezésének, megfelelő működésének feltétele a rendszer állapot irányíthatósága, azaz, hogy a rendszer tetszőleges állapotából véges idő alatt eljuthatunk egy megfelelő bemeneti jel segítségével bármely másik állapotba. Diszkrét idejű rendszer esetén a teljes állapotirányíthatóság feltétele, hogy a rendszer irányíthatósági mátrixa () maximális rangú legyen, azaz rangja megegyezzen az állapotváltozók számával ():

(6.4)

Az állapot-visszacsatolás tervezése azon alapul, hogy felírjuk, milyen karakterisztikus egyenletet szeretnénk elérni (), azaz hova kerüljenek a rendszer pólusai (természetesen a pólusok száma nem változhat az eredeti rendszerhez képest). Ez a felírás általában két domináns pólus megválasztására épül, amelyekkel definiáljuk, hogyan is viselkedjen az adott rendszer, és további segédpólusokat is megadunk, amelyek az előbbieknél nagyobbak (ezekre azért van szükség, hogy az eredeti rendszerrel egyező fokszámot nyerjünk).

A pólusok megadása diszkrét szabályozó esetén is folytonos időben történik, hiszen a szabályozott szakasz általában folytonos idejű. Stabil rendszert kívánva az összes pólus negatív valós résszel kell rendelkezzen. A domináns póluspárt a csillapítás () és a szabályozási idő () segítségével is megadhatjuk. Tekintsük a következő kéttárolós lengőtagot:

(6.5)

Ha , akkor az átviteli függvény pólusai:

(6.6)

ahol:

(6.7)

(6.8)

Az ugrásválasz burkológörbéjéből levezethető, hogy az százalékos szabályozási idő:

(6.9)

Ha tehát megadjuk és értékét, akkor:

Innen pedig a domináns póluspár számítható. A további pólusokat, hogy hatásuk ne legyen mérvadó, sokkal nagyobbra választjuk. Ha megvannak a folytonos idejű pólusok (), azok diszkrét idejű megfelelői () a következőképpen számíthatóak:

ahol az alkalmazott mintavételezési idő.

Ezután a feladat az, hogy kiszámítsuk azt a értéket, amivel ez a cél elérhető. Egybemenetű, egykimenetű (SISO) rendszerek esetében ez könnyen megoldható: felírjuk rendszermátrix pólusait paraméterrel, majd ezeket összevetve a kitűzött pólusokkal értéke meghatározható. Ezt a módszert foglalja össze az úgynevezett Ackermann formula:

ahol a cél karakterisztikus egyenletbe behelyettesített eredeti rendszermátrixot jelöli. Több bemenetű, több kimenetű (MIMO) rendszerek esetében meghatározása összetettebb probléma, és általában csak közelítő megoldások érhetőek el, azaz a pólusok pozíciója eltérhet a tervezettől.

6.7.2. Alapjel korrekció alkalmazása

Az előbbi eljárással egy olyan rendszert nyertünk, amely az általunk választott pólusokkal rendelkezik. Szabályozó tervezés esetén azonban azt is elvárjuk, hogy a teljes rendszer kimenete olyan értéket vegyen fel állandósult állapotban, amelyet annak alapjelként megadunk. Ehhez szükségünk van az úgynevezett alapjel korrekcióra. Az alapjel korrekcióval ellátott állapot-visszacsatolás a következő felépítésű:

Diszkrét idejű alapjel korrekció
6.26. ábra - Diszkrét idejű alapjel korrekció


Az az állapotvektor állandósult értéke, az pedig a beavatkozó jel értéke állandósult állapotban. Az -t tartalmazó előrecsatoló ág azért szükséges, mert nélküle nem lenne beavatkozó jel állandósult állapotban (tulajdonképpen egy integrátort helyettesít). Az ág kiszámítja az állapotváltozók célértékeit a kimenet célértékének megfelelően, így biztosítja, hogy bemenetére a hibajel érkezzen. Érdemes megjegyezni, hogy ha csak az előrecsatolást alkalmaznánk visszacsatolás nélkül, akkor is a véghelyzetbe kerülne egy idő után a rendszer (csak nem az általunk tervezett módon).

A cél tehát:

Ehhez:

meghatározása:

meghatározása:

Összefoglalva:

ahol egy n x m méretű csupa nullából álló mátrix, míg egy m méretű egységmátrix.

6.7.3. Állapot-megfigyelő tervezése

A valóságban sok esetben nem oldható meg, hogy az összes állapotváltozót megmérjük. Ennek oka lehet az, hogy az adott állapotváltozó mérésére nincs technikai lehetőség vagy nem mérhető elég pontosan, a mérés nem gazdaságos, vagy az állapotváltozó fizikai jelentése ismeretlen (például mesterségesen létrehozott, identifikációból kapott állapottér modellek esetén). Ilyenkor szükségünk lesz egy állapot-megfigyelőre, melynek feladata nevéből is jól érzékelhetően a rendszer állapotának meghatározása a kimenő- és bemenőjelek ismeretében, melyek mérése a legtöbb esetben jól megoldható. Az állapot-megfigyelőnek tehát két bemenete lesz: a szakasz be- () és kimenete (), a kimenete pedig a megfigyelt állapotváltozók vektora lesz ().

Állapot-megfigyelő csak akkor alkalmazható, ha a vizsgált rendszer megfigyelhető. Megfigyelhetőség alatt azt értjük, hogy a rendszer véges időintervallumbeli bemenetének és kimenetének ismeretében meghatározható a rendszer kezdő időpontbeli állapota. Diszkrét időinvariáns rendszerek esetén ez akkor teljesül, ha a rendszer megfigyelhetőségi mátrixa maximális rangú, azaz rangja :

Az állapot-megfigyelő alakja diszkrét időben:

A becslési hiba:

Célunk az, hogy a becslési hiba nullához tartson (). Helyettesítsük be az állapot-megfigyelő egyenletébe a becslési hibát és fejezzük azt ki:

Mivel:

Így:

Ebből:

A második két tag mindig nulla, ha:

Célunk továbbra is az, hogy minél gyorsabban, ez akkor teljesül, ha a következő rendszer stabil és gyors:

Ezt megfelelő választásával biztosíthatjuk. Ehhez helyettesítsük be a becslési hiba egyenletébe -t és -t:

Transzponáljuk az egyenletet:

Vessük ezt össze az állapot-visszacsatolás egyenletével:

Láthatjuk, hogy a két egyenlet igen hasonló szerkezetű, és ezt felhasználhatjuk ahhoz, hogy értékét meghatározzuk az állapot-visszacsatolás esetén alkalmazott módszerekkel. Tekintsük a következő rendszert:

Erre a rendszerre állapot-visszacsatolást tervezve értéke kiadódik:

Még az a fontos kérdés marad, hogy hova helyezzük a pólusokat. Ennek eldöntéséhez induljunk ki az eredeti állapot-visszacsatolás tervezése során megadott legnagyobb abszolút értékű folytonos idejű pólusból, és annál válasszunk több nagyságrenddel nagyobbat. Ez utóbbinak különösen nagy szerepe lesz akkor, ha a szabályozott rendszerünk eltér a tervezéskor használt modellünktől, ugyanis ilyenkor a lassú megfigyelő instabil rendszert eredményez. Tehát alapvető követelmény, hogy a megfigyelő gyorsabb legyen, mint a megfigyelt rendszer. Ezzel az alábbi szabályozót nyerjük:

Megfigyelőre alapozott állapot-visszacsatolás
6.27. ábra - Megfigyelőre alapozott állapot-visszacsatolás


6.7.4. Integráló szabályozás

Az eddig tervezett szabályozónk nagyon jól működik elméletben: mi határozzuk meg a rendszer pólusait, megadjuk hogyan, milyen gyorsan álljon be a rendszer és nincs maradó hiba sem. Igen ám, de mi történik akkor, ha a szakasz eltér a tervezésnél használttól? Ebben az esetben egyrészt az állapot-visszacsatolásunk már nem fogja tökéletesen mozgatni a pólusokat, hiszen azok máshol vannak, mint vártuk őket, ami akár instabil rendszerhez is vezethet, és biztosan maradó hibához, hiszen az alapjel korrekció az állapot-egyenleteken alapul. Ráadásul állapot-megfigyelőnk se a valós állapotokat fogja figyelni, továbbá a zavarójel elnyomása sem megfelelő.

A maradó hibára megoldást jelent, ha a rendszerbe egy integrátort helyezünk, ezzel egyben kiválthatjuk az alapjel korrekció részét is, hiszen az integrátor nulla hiba esetén is tud kimenetet biztosítani. Az integrátor elhelyezéséhez egy új állapotváltozó bevezetése válik szükségessé:

Itt a bal oldali téglalapszabály alapján valósult meg a diszkrét idejű integrátor. Ezzel bővítsük ki a szakasz állapot-egyenletét:

Ilyenkor az állapot-visszacsatolás alakja a következő lesz:

Ebben az esetben tehát az állapot-visszacsatolást ehhez a bővített rendszerhez tervezzük meg, majd az így kapott és mátrixokat a következőképpen alkalmazzuk:

Megfigyelőre alapozott állapo-tvisszacsatolás integrátorral
6.28. ábra - Megfigyelőre alapozott állapo-tvisszacsatolás integrátorral


Amint látható, az előrecsatoló -t tartalmazó ág helyét az integrátor vette át, hiszen így az integrátor biztosítja a nulla maradó hibát. Az integráló tag elhelyezése sem az alapjel-korrekció, sem az állapot-megfigyelő tervezését nem érinti.

6.7.5. A rendszer identifikációja

A szabályozó megtervezéséhez először meg kell határoznunk az irányítandó szakasz modelljét. Ennek előállítását ebben az esetben a MATLAB System Identification Toolbox segítségével végezzük el. Ez lehetőséget ad rendszerek modelljeinek mérési eredményekből való meghatározására, amelyet felhasználhatunk például szabályozó tervezéséhez is. Ennek fontos feltétele, hogy készítsünk valamilyen, a rendszert jól jellemző mérést, hiszen a program a be- és kimeneti jelek értékeiből fogja előállítani a modellt, így ha valamilyen speciális jelenség abban nem jelentkezik, az valószínűleg a modellben sem fog.

A mérés megkezdése előtt célszerű kiválasztani, hogy milyen modellt fogunk használni. Ebben az esetben a szabályozó megtervezéséhez egy diszkrét idejű állapottér modellre lenne szükség. Ez könnyen előállítható egy átviteli függvényből is. Erre a MATLAB több lehetőséget is ad, mi az úgynevezett ARMAX modellt fogjuk használni. A betűszó az „autoregressive moving-average model with exogeneous inputs” kifejezésre utal, aminek magyar jelentése: autoregresszív mozgóátlag modell külső bemenetekkel. Felmerülhet a kérdés, ha hangsúlyt kap, hogy külső bemenetek is vannak, akkor mire szolgálható anélkül a modell. Az ARMAX modell bemutatása előtt tekintsük meg két komponensét, az AR és MA modelleket. Az autoregresszív (AR) modell:

ahol:

  • a kimenet értéke -adik időlépésben

  • a belső bemenet, fehér zaj értéke -adik időlépésben

Ahogy az látható, egy sztochasztikus folyamat kerül leírásra. Hasonló szerkezetű a mozgóátlag (MA) modell is:

ahol. Mivel ezek a modellek nem rendelkeznek külső bemenettel, így nem alkalmasak a motor leírására, azonban a kettőt összerakva és külső bemenetekkel kibővített ARMAX modell már igen. Ennek szerkezete:

ahol:

  • a külső bemenet

  • a rendszer holtideje

  • , itt az első együttható nem 1, erre azért van szükség, hogy a rendszer erősítése tetszőleges lehessen

A modellben lévő fehér zaj bemenetet tartalmazó tag célja a mérési hiba leképezése, ez tulajdonképpen az egyenlethiba:

Ha nincs mérési hiba, akkor :

Innen az impulzusátviteli függvény:

Az átviteli függvény felírását a MatLab elvégzi nekünk, ugyanakkor hasznos lehet a működési módjának alapszintű ismerete. Az ARMAX egyenletbe behelyettesítve az egyes értékeket paraméteresen adódik a hiba nagysága a polinomok együtthatóinak függvényében. A polinomok értéke és így az átviteli függvény úgy határozható meg, hogy a hiba négyzetét minimalizáljuk. A MatLab a holtidő értékét nem határozza meg, hanem azt nekünk kell megadni.

Az átviteli függvényből több fajta módon is létrehozhatunk állapottér modellt, például a megfigyelhetőségi vagy az irányíthatósági alakban való felírással. Ezeknél a módszereknél természetesen az állapotváltozók fizikai jelentése nem ismert, ez azonban most nem jelent hátrányt, hiszen az identifikáció miatt ez egyébként sem lenne elvárható. Alapesetben az állapottér modell felírását az alábbi átviteli függvényből kell elvégezni:

Legyen:

Ilyenkor:

Legyenek az állapotváltozók a következők:

Így:

Tehát az állapottér modell:

Az állapottér modell birtokában a szabályozótervezés elvégezhető.

6.7.6. A szabályozás megtervezése

Az elméleti alapok áttekintése után sor kerülhet a szabályozó megtervezésre. Ez három részre bontható fel:

Rendszer identifikációja

  • a szabályozó tervezés és szimuláció;

  • a szabályozó implementálása és tesztelése;

  • a motor identifikációja.

Ezek bemutatására kerül sor a következő fejezetben.

6.7.7. A motor identifikációja

6.7.7.1. A karakterisztika előzetes vizsgálata

Mielőtt az identifikációt elkezdenénk, először vizsgáljuk meg magát a szabályozandó rendszert. Az általunk alkalmazott DC motort az interneten keresztül tudjuk elérni. A rendszer segítségével C nyelven elkészíthetjük a motor bemeneti jeleit megadó szabályozót, majd ennek kódját a távoli mérőállomásra elküldve, az lefuttatja a programot, és visszaküldi a mérési eredményeket. A motor bemenete ebben az esetben az elérni kívánt nyomaték, amelyből ezután egy áramszabályozó kör számítja ki a kiadott feszültséget, így a motorra nem adhatunk a motort károsítóan nagy bemenőjelet. Az általunk szabályozott kimenőjel pedig a sebesség lesz.

Nézzük először, hogy reagál a motor konstans bemenőjel esetén, amelyet most szándékosan nagyra választva vizsgáljuk meg a maximális elérhető forgási sebességet. Legyen tehát az előírt nyomaték 100mNm:

Megfigyelőre alapozott állapotvisszacsatolás integrátorral
6.29. ábra - Megfigyelőre alapozott állapotvisszacsatolás integrátorral


Megjegyezzük, hogy a sebesség számítása a pozícióból numerikus deriválással és szűréssel történik. Ezért marad néhány tüske a mérési eredményben. A szűrő tervezésére majd a későbbiekben visszatérünk.

Ugyanez 3mNm esetén:

A szöbsebesség időfüggvénye
6.30. ábra - A szöbsebesség időfüggvénye


Több méréssel megállapítható, hogy kb. 14 rad/s a szögsebesség felső maximuma. Jól láthatjuk, hogy kisebb nyomaték esetén a rendszer nagyobb választ adott, ami arra utal, hogy nagy nyomatékok esetén a nyomatékszabályozás helytelenül működik.

Most nézzük ugyanezt a másik forgási irányba is (-3mNm nyomaték esetén):

A szöbesebesség időfüggvénye
6.31. ábra - A szöbesebesség időfüggvénye


Jól látható, hogy a szögsebesség végértéke közel azonos. Hogy a rendszerről több információt nyerjünk, elvégeztünk egy kvázistatikus mérést, hogy megvizsgáljuk a nyomaték és a kimeneti sebesség közti összefüggést. A mérés során lassan, először -3mNm nyomatékot adtunk ki, és megvártuk, míg a kimenet ennek megfelelően beállt, ezután lassan növeltük a nyomatékot +3mNm eléréséig:

Szögsebesség nyomaték karakterisztika
6.32. ábra - Szögsebesség nyomaték karakterisztika


Amint látható, rendszerünk igen távol áll a lineáristól:

  • Holtsáv: a tapadási súrlódás miatt.

  • Több töréspont is látható.

  • Hiszterézis: az is befolyásolja az eredményt, hogy milyen irányban kezdjük a mérést.

6.7.7.2. Gerjesztés megtervezése az identifikációhoz

Ahhoz, hogy szabályozónk működni tudjon, minél lineárisabb rendszerre kell törekednünk. Ennek eléréséhez használjuk fel azt, hogy a nemlineáris rendszerek adott munkapont körül általában jól linearizálhatóak. Így a szabályozó működésének bemutatása során egy precíziós sebességszabályozót készítünk. Először egy egyszerű szabályozóval a munkapont közelébe visszük a rendszert, majd onnan átadjuk azt a precíziós szabályozónknak.

Hogy a rendszer identifikációját elvégezzük, a rendszert először a kívánt munkapont közelébe visszük, majd ott adunk rá négyszögjelet, amelyre adott válasz lesz az identifikáció alapja. A kiválasztott lineáris szakasz a 0.2..0.5mNm-es lineáris szakasz. Ennek identifikációjához egy 4s periódus idejű, 0.35mNm középnyomatékú, 0.15mNm amplitúdójú négyszögjelet használtunk. A munkapontba való beállásra 2s időt hagytunk.

A szögsebesség változása
6.33. ábra - A szögsebesség változása


Amint látható, ez a kimenet már lineáris rendszer eredményének mutatkozik. A méréshez szükséges vezérlés C kódja:

typedef struct
{   
float Position;
float Velocity;
float Torque;
float StateVariable_5;
float StateVariable_6;
float StateVariable_7;
float StateVariable_8;
float StateVariable_9;
float StateVariable_10;
} NewControllerData;
NewControllerData CalculateController(
const float CurrentPosition,
const float OldPosition,
const float OldVelocity,
const float CurrentTime,
const float OldTime,
const float Old_StateVariable_5,
const float Old_StateVariable_6,
const float Old_StateVariable_7,
const float Old_StateVariable_8,
const float Old_StateVariable_9,
const float Old_StateVariable_10
)
{
NewControllerData ResultData; // result
//Szűrőegyütthatók
static float filB0 = 0, filB1 = 0.00013337, filB2 = 0.0012028, filB3 = 0.0009847099, filB4 = 7.3193E-05;
static float filA0 = 1, filA1 = -3.1152, filA2 = 3.6392, filA3 = -1.8895, filA4 = 0.36788;
//Bemeneti értékek
static float input0 = 0, input1 = 0, input2 = 0, input3 = 0, input4 = 0;
//Szűrt értékek
static float filter0 = 0, filter1 = 0, filter2 = 0, filter3 = 0, filter4 = 0;
float u;
//Nyomaték középérték
float bias = 0.35;
//Várakozás a munkapontba beállásra
int start = 2000;
//Periódusidő
int period = 4000;
//Amplitúdó
float amplitude = 0.15;
// Position is saved automatically
ResultData.Position = CurrentPosition;
// Angular velocity is saved automatically
if (CurrentTime != 0.0f){
ResultData.Velocity = (1000.0f * (float)(CurrentPosition - OldPosition)/(float)(CurrentTime - OldTime));
}
else {
ResultData.Velocity = 0.0f;
}
//Sebesség szűrése
input0 = ResultData.Velocity;
filter0 = (filB0 * input0 + filB1 * input1 + filB2 * input2 + filB3 * input3 + filB4 * input4 - (filA1 * filter1 + filA2 * filter2 + filA3 * filter3 + filA4 * filter4)) / filA0;
input4 = input3; input3 = input2; input2 = input1; input1 = input0; 
filter4 = filter3; filter3 = filter2; filter2 = filter1; filter1 = filter0; 
ResultData.StateVariable_5 = filter0; 
//Nyomaték megadása
if(CurrentTime < start)
{
u = 0; 
}
else
{
u = (((int)CurrentTime - start) % period - period / 2 > 0 ? amplitude : -amplitude);
}
ResultData.Torque = u + bias;
ResultData.StateVariable_6 = u;
return ResultData;
}

A szűrő tervezési módját a későbbiekben tárgyaljuk.

6.7.7.3. Identifikáció MATLAB segítségével

Először be kell töltenünk a mérési eredményeket a MATLAB környezetbe. A beállási szakaszt levágjuk, hiszen arra nem lesz szükség. Az identifikáció során a valódi sebesség és nyomaték helyett azok munkaponttól való különbségét használjuk, így ezek kezdő időpontban – a munkapontban – mért értékét a mérési eredményekből levonjuk. Az identifikációhoz meg kell adnunk a mintavételezési időt, ami ebben az esetben 1ms. Ezután létrehozzuk a mérést leíró adatszerkezetet a System Identification Toolbox számára az iddata parancs segítségével, amelynek meg kell adni a bemeneti és kimeneti jelek mérésének eredményét és a mintavételezési időt. Ezután következhet a polinomok fokszámának megadása az ARMAX modellhez, ezt egy sorvektorban kell megtennünk, amelynek elemei sorban: . Az első elem adja meg az polinom fokszámát, azaz az állapotváltozók számát, a második a fokszámánál eggyel nagyobb, a harmadik elem fokszáma, míg a negyedik a holtidő. A megadás során ügyeljünk arra, hogy és . Bár az identifikáció igen sok polinomfokszám variáció mellett lefut, legyünk figyelemmel arra is, hogy az identifikáció bizonytalansága nő a fokszámmal, ilyenkor a MATLAB a „Warning: Pole locations are more than 10% in error.” üzenetet jeleníti meg. Ez azért fontos, mert később ezeket a pólusokat át akarjuk helyezni, ehhez pedig ki kellene ejteni őket, ami nem fog sikerülni, ha nem ott vannak, mint azt terveztük. Mivel az identifikáció csak pár másodpercig tart, így számos beállítást kipróbálhatunk. Az identifikációt az armax parancs segítségével, a mérési adatok és a polinomfokszámok megadása után végezhetjük el. A függvény eredménye az identifikált rendszert leíró struktúra, amelyből a th2poly függvénnyel megkaphatjuk a polinomokat leíró sorvektorokat. Ezekben az együtthatók csökkenő kitevőjű tagok mellett értendőek, az utolsó elem így taghoz tartozik, és az eredményben lehetnek 0 együtthatók is. Mivel ezzel tulajdonképpen megkapjuk a diszkrét átviteli függvény számlálóját és nevezőjét, így az a tf függvénnyel elő is állítható. Az identifikációt elvégző MATLAB kód így:

start=1800;                                 %kezdőidőpont
y=velocity2(start:end)-velocity2(start);    %szögsebesség-mérések vektora
u=torque2(start:end)-torque2(start);        %nyomatékmérések vektora
n=3;                                        %állapotváltozók száma
Ts=0.001;                                   %mintavételezési idő megadása
z=iddata(y,u,Ts);                           %mérési adatok megadása
nn=[n,1,1,1];                               %fokszámok megadása
tharmax=armax(z,nn);                        %identifikáció
[A,B,C]=th2poly(tharmax);                   %polinomok kiolvasása
sys=tf(B,A,Ts);                             %átviteli függvény előállítása

A diszkrét idejű átviteli függvény így:

Ez persze így nem sokat mond számunkra arról, hogy ez tényleg jól leírja-e a rendszert, ezért számoljuk ki az identifikált rendszer válaszát az általunk a valós rendszernek megadott bemenetre (a nyomaték már a MATLAB importálás előtt a munkapont körül volt):

yid=idsim(tharmax,u,zeros(n,1)); %identifikált rendszer válasza

t=0:Ts:(size(y)-1)*Ts; %idővektor az ábrázoláshoz

figure(1);                                  %új grafikon

plot(t,y,t,yid); %grafikon megjelenítése

legend('mért','identifikált'); %jelmagyarázat

xlabel('idő [s]'); %vízszintes tengelycím

ylabel('szögsebesség [rad/s]'); %függőleges tengelycím

Az identifikált rendszer működését az idsim függvény segítségével ellenőrizzük, amely meghatározza a bemenetek sorvektorának és a kezdeti állapotnak megfelelő kimeneti értékeket. Ezután ezt grafikonon is könnyen ábrázolhatjuk, de ehhez szükség van egy idő sorvektorra is, amelyet a szokásos módon előállíthatunk:

A modell és a mérés összehasonlítása
6.34. ábra - A modell és a mérés összehasonlítása


Amint az látható, az identifikált rendszer és eredeti viselkedése jól közelíti egymást. Fontos figyelembe venni, hogy az identifikációhoz használt gerjesztés ugyan tetszőleges lehet, de fontos, hogy olyan legyen, amelynek kimenete alkalmas a rendszerjellemzők megjelenítésére. Az identifikációs algoritmus a legtöbb esetben adni fog eredményt, azonban azt semmi sem garantálja, hogy ez az eredmény jól írja le a kívánt rendszert, ez ugyanis csak az adott gerjesztés esetén jelenthető ki nagyobb biztonsággal.

A szabályozó megtervezéséhez szükségünk van a rendszer diszkrét idejű állapottér modelljére, ezt az ss parancs segítségével könnyen megkaphatjuk:

sysd=ss(sys);                               %állapottér modell
[Phi Gamma C D]=ssdata(sysd);               %mátrixok kiolvasása

Ezzel készen állunk a szabályozó megtervezésére.

6.7.8. Szabályozó tervezése

6.7.8.1. Integrátor nélküli szabályozó

A szabályozó megtervezéséhez először az elméleti bevezetőnek megfelelően definiáljuk a célrendszer paramétereit, és ezekből meghatározzuk a folytonos idejű pólusokat. A jobb érthetőség kedvéért meg is jeleníthetjük a célrendszer ugrásválaszát:

a=2;                                        %hány százalékra álljunk be
Tap=0.2;                                    %szabályozási idő
xi=0.8;                                     %csillapítás
w0=log(100/a)/Tap/xi;                       %sajátfrekvencia
 
sdom1=-w0*xi+1i*w0*sqrt(1-xi^2);            %domináns pólusok
sdom2=conj(sdom1);
scinf=-4*w0;                                %segédpólusok a szabályozóhoz
soinf=scinf*5;                              %segédpólusok a megfigyelőhöz
if(-soinf>0.5/Ts)                           %Shannon-elv ellenőrzése
    display('Túl kicsi a mintavételezési idő!');
end;
 
%Célrendszer modellje egységnyi erősítéssel
tcsys=zpk([],[sdom1, sdom2, scinf*ones(1,n-2)],-w0^2*scinf^(n-2));
figure(2);                                  %új grafikon
step(tcsys);                                %ugrásválasz számítása

Az ugrásválasz:

Ugrásválasz
6.35. ábra - Ugrásválasz


Ezután átszámítjuk a pólusokat diszkrét időre:

%Pólusok átszámítása diszkrét időre
zdom1=exp(sdom1*Ts);                        
zdom2=exp(sdom2*Ts);
zcinf=exp(scinf*Ts);
zoinf=exp(soinf*Ts);

Ezt követően az állapot-visszacsatolás, az alapjel-korrekció és az állapot-megfigyelő az elméleti bevezető alapján már gyorsan megtervezhető:

%Az irányíthatóság ellenőrzése

Mc=ctrb(Phi,Gamma);

if rank(Mc)~=n

disp('A rendszer nem irányítható!');

end

%Állapot-visszacsatolás tervezése

phic=[zdom1 zdom2 zcinf*ones(1,n-2)]; %pólusok új helye

K=acker(Phi,Gamma,phic); %pólusáthelyezés

%Alapjel-korrekció számítása

NxNu=inv([Phi-eye(n) Gamma;C 0])*[zeros(n,1);1];

Nx=NxNu(1:n);

Nu=NxNu(n+1);

%A megfigyelhetőség ellenőrzése

Mo=obsv(Phi,C);

if rank(Mo)~=n

disp('A rendszer nem megfigyelhető!');

end

%Állapot-megfigyelő tervezése

phio=ones(1,n)*zoinf; %megfigyelő pólusai

G=acker(Phi',Phi'*C',phio)'; %pólusáthelyezés duális rsz.-en

F=Phi-G*C*Phi;

H=Gamma-G*C*Gamma;

Ezzel meg is terveztük a szabályozót. A tervezés ellenőrzéséhez végezzünk szimulációt Simulink segítségével. Építsük fel a következő modellt az elméleti bevezető alapján:

Szimulációs modell
6.36. ábra - Szimulációs modell


Amint látható, a szakaszt két részre bontottuk, a diszkrét idejű állapottér modell minden állapotváltozót kivezet, ami felhasználható az állapotbecslő működésének ellenőrzésére, míg a C-t tartalmazó erősítés adja a kimeneti jelet. Ügyeljünk arra, hogy minden elem esetében megadjuk a mintavételezési idő értékét! Ezután lássuk milyen eredmények jelentek meg:

Szimulációs eredmény
6.37. ábra - Szimulációs eredmény


Nyomaték
6.38. ábra - Nyomaték


Állapotváltozók
6.39. ábra - Állapotváltozók


Amint látjuk, a szabályozónk megfelelően működik. A beavatkozójel nem fut ki a lineáris tartományból.

6.7.9. Integrátoros szabályozás

Az integrátorral ellátott szabályozó megtervezése csak minimális módosításokat igényel. Először elő kell állítanunk az integrátorral bővített állapotegyenletet:

iPhi=[Phi, zeros(n,1); Ts*C, 1];
iGamma=[Gamma; 0];
iC=[C 0];

Ezenkívül szükségünk lesz még egy pólusra az állapot-visszacsatolás tervezéséhez:

siinf=scinf;                                %segédpólus integrátorhoz
ziinf=exp(siinf*Ts);
if(-min([siinf soinf])>0.5/Ts)              %Shannon-elv ellenőrzése
    display('Túl kicsi a mintavételezési idő!');
end;

Így már meg is tudjuk tervezni az állapotvisszacsatolást:

iPhic=[zdom1 zdom2 zcinf*ones(1,n-2) ziinf];%pólusok új helye
iK=acker(iPhi,iGamma,iPhic);                %pólusáthelyezés
K=iK(1:n);                                  %állapot-visszacsatolás
Ki=iK(n+1);                                 %integrátor visszacsatolása

Ezután módosítanunk kell a Simulink modellt is:

Szimulációs modell integrátorral
6.40. ábra - Szimulációs modell integrátorral


Ebben az esetben a szimuláció eredményeit változókban tároltuk el, hogy az eredményeket kódból ábrázolhassuk. Tekintsük meg ezeket:

Szimulációs eredmény
6.41. ábra - Szimulációs eredmény


Nyomaték
6.42. ábra - Nyomaték


Látható, hogy a rendszer válasza nem igazán változott meg. A különbség akkor jelenik meg, ha pl. feltesszük, hogy 0.01mNm-al elmértük a munkapont helyét, ilyenkor az integrátor nélküli változat válasza:

Szögsebesség
6.43. ábra - Szögsebesség


Míg az integrátoros verzióé:

Egységugrás válasz
6.44. ábra - Egységugrás válasz


Látható, hogy az integrátorral már nem marad maradó hiba, a rendszer válasza közel van az ideálishoz. Ez egyben azt is mutatja, hogy az integrátor nélküli változat csak ideális esetben alkalmazható.

6.7.10. Szűrő tervezése a sebességméréshez

Mivel az általunk vizsgált rendszernél a szögsebesség a szöghelyzetből kerül meghatározásra numerikus deriválással, ezért ez mint bemenet nagyon zajos lesz. Így célszerű ezen egy szűrést is elvégezni mielőtt az állapot-megfigyelő kezébe adjuk. A szűrő megtervezése egymással ellentmondó követelmények kielégítését igényli: egyrészt minél gyorsabb szűrőre van szükség, hiszen a szűrővel bevitt késleltetés a rendszer stabilitását csökkenti, másrészt minél jobb zajszűrés kell, hiszen a zaj torzítja az állapot-megfigyelőnk működését. A legegyszerűbb szűrőt talán úgy kapjuk, hogyha sorba kapcsolunk néhány egytárolós tagot, hiszen mint ismeretes a tag pólusa után -20dB/dekád erősítésváltozással rendelkezik. Egy ilyen szűrő megtervezése egyszerűen megoldható MATLAB segítségével: mindössze a fokszámra és a pólus helyére van szükségünk. Ebből a folytonos és diszkrét átviteli függvények már könnyen előállíthatóak:

filT=0.001;                                 %Szűrő időállandója
filN=3;                                     %Szűrő fokszáma
 
%Folytonos idejű szűrő
filsys=tf(zpk([],-ones(1,filN)/filT,(1/filT)^filN));
dfilsys=c2d(filsys,Ts,'zoh');               %Diszkrét idejű verzió

A diszkrét átviteli függvény birtokában már implementálhatjuk is a szűrőt, de előtte érdemes annak működését megvizsgálni. Erre mi a szűrő Bode-diagramját, ugrásválaszát és a méréssel nyert zajos bemenetre adott válaszát használtuk:

figure(1);                                  
dbode(dfilsys.num{1},dfilsys.den{1},Ts)     %Dode diagram
 
figure(2);
step(dfilsys);                              %Ugrásválasz
 
figure(3);
v=velocity(start:end)-velocity(start);      %Zajos jel
lsim(dfilsys,v,t);                          %Zajos jel szűrése

Az eredmények:

Bode-diagram
6.45. ábra - Bode-diagram


Ugrás válasz
6.46. ábra - Ugrás válasz


Szűrés
6.47. ábra - Szűrés


6.7.11. Implementáció

A szabályozó integrálása C nyelven nem különösebben nehéz feladat, az egyetlen komolyabb probléma, hogy az internetes tesztkörnyezet számos korlátozást alkalmaz. Többek között nincs lehetőségünk tömbök használatára, nem definiálhatunk saját függvényeket és globális változókat sem. Ezért erősen javasolt egy program elkészítése, amely a MATLAB kódokat átalakítja C kóddá, így könnyebben tesztelhetjük munkánkat. Ezt kívánja bemutatni a függelékben bemutatott segédprogram.

Az implementáció módját különösebben nem részletezzük, amennyiben az olvasó rendelkezik alapvető C programozási tudással, úgy a szabályozók implementálása nem okozhat gondot a Simulink modellek alapján.

6.7.12. Integrátor nélküli szabályozó

6.7.12.1. C kód

#include <windows.h>
#include <stdio.h>
#include <rtapi.h>
#include <math.h>
#include <string.h>
#define PI 3.14159265358979323846
typedef struct
{   
float Position;
float Velocity;
float Torque;
float StateVariable_5;
float StateVariable_6;
float StateVariable_7;
float StateVariable_8;
float StateVariable_9;
float StateVariable_10;
} NewControllerData;
NewControllerData CalculateController(
const float CurrentPosition,
const float OldPosition,
const float OldVelocity,
const float CurrentTime,
const float OldTime,
const float Old_StateVariable_5,
const float Old_StateVariable_6,
const float Old_StateVariable_7,
const float Old_StateVariable_8,
const float Old_StateVariable_9,
const float Old_StateVariable_10
)
{
NewControllerData ResultData; // result
static float filB0 = 0, filB1 = 0.080301, filB2 = 0.1544, filB3 = 0.017881;
static float filA0 = 1, filA1 = -1.1036, filA2 = 0.40601, filA3 = -0.049787;
static float input0 = 0, input1 = 0, input2 = 0, input3 = 0;
static float filter0 = 0, filter1 = 0, filter2 = 0, filter3 = 0;
static float Nu0_0 = 0.14662;
static float Nx0_0 = 23.677, Nx1_0 = 47.353, Nx2_0 = 23.677;
static float K0_0 = -1.2522, K0_1 = 0.81068, K0_2 = -0.37451;
static float F0_0 = 2.7896, F0_1 = -1.889, F0_2 = 0.84863, F1_0 = 2, F1_1 = -0.94991, F1_2 = 0, F2_0 = 0, F2_1 = 0.13587, F2_2 = 0;
static float G0_0 = 26.977, G1_0 = 44.981, G2_0 = 17.242;
static float H0_0 = 0.0625, H1_0 = 0, H2_0 = 0;
static float Gamma0_0 = 0.0625, Gamma1_0 = 0, Gamma2_0 = 0;
static float Phi0_0 = 2.7896, Phi0_1 = -1.3193, Phi0_2 = 0.84863, Phi1_0 = 2, Phi1_1 = 0, Phi1_2 = 0, Phi2_0 = 0, Phi2_1 = 0.5, Phi2_2 = 0;
static float C0_0 = 0, C0_1 = 0, C0_2 = 0.042236;
static float r = 0;
static float xu = 0;
static float xuL = 0;
static float xk0 = 0, xk1 = 0, xk2 = 0;
static float xkL0 = 0, xkL1 = 0, xkL2 = 0;
static float y = 0;
// Position is saved automatically
ResultData.Position = CurrentPosition;
// Angular velocity is saved automatically
if (CurrentTime != 0.0f){
ResultData.Velocity = (1000.0f * (float)(CurrentPosition - OldPosition)/(float)(CurrentTime - OldTime));
}
else {
ResultData.Velocity = 0.0f;
}
                    
r=sin(CurrentTime/1000)/2-1;
input0 = ResultData.Velocity;
filter0 = (filB0 * input0 + filB1 * input1 + filB2 * input2 + filB3 * input3 - (filA1 * filter1 + filA2 * filter2 + filA3 * filter3)) / filA0;
input3 = input2; input2 = input1; input1 = input0; 
filter3 = filter2; filter2 = filter1; filter1 = filter0; 
if(CurrentTime < 2000) ResultData.Torque =   3.5000e-001;
else 
{
y = filter0 +   -9.5218e+000;
xk0 = F0_0 * xkL0 + F0_1 * xkL1 + F0_2 * xkL2 + H0_0 * xuL + G0_0 * y;
xk1 = F1_0 * xkL0 + F1_1 * xkL1 + F1_2 * xkL2 + H1_0 * xuL + G1_0 * y;
xk2 = F2_0 * xkL0 + F2_1 * xkL1 + F2_2 * xkL2 + H2_0 * xuL + G2_0 * y;
xu = Nu0_0 * r + K0_0 * (Nx0_0 * r - xk0) + K0_1 * (Nx1_0 * r - xk1) + K0_2 * (Nx2_0 * r - xk2);
if(xu > 1) xu = 1;
if(xu < -1) xu = -1;
ResultData.Torque = xu +   3.5000e-001;
xuL = xu;
xkL0 = xk0;
xkL1 = xk1;
xkL2 = xk2;
}
ResultData.StateVariable_5 = r;
ResultData.StateVariable_6 = y;  
return ResultData;
}

6.7.13. Eredmények

Mérési eredmény integrátor nélkül
6.48. ábra - Mérési eredmény integrátor nélkül


Amint az látható, a szabályozó jól követi a referenciajelet annak ellenére is, hogy nincs integrátor a körben, és a valós rendszer is eltér a tervezettől. Az is észlelhető, hogy távolodva a munkaponttól az alapjel és a kimenet eltérése nő.

6.7.14. Integrátoros szabályozó

6.7.14.1. C kód

#include <windows.h>
#include <stdio.h>
#include <rtapi.h>
#include <math.h>
#include <string.h>
#define PI 3.14159265358979323846
typedef struct
{   
float Position;
float Velocity;
float Torque;
float StateVariable_5;
float StateVariable_6;
float StateVariable_7;
float StateVariable_8;
float StateVariable_9;
float StateVariable_10;
} NewControllerData;
NewControllerData CalculateController(
const float CurrentPosition,
const float OldPosition,
const float OldVelocity,
const float CurrentTime,
const float OldTime,
const float Old_StateVariable_5,
const float Old_StateVariable_6,
const float Old_StateVariable_7,
const float Old_StateVariable_8,
const float Old_StateVariable_9,
const float Old_StateVariable_10
)
{
NewControllerData ResultData; // result
static float filB0 = 0, filB1 = 0.080301, filB2 = 0.1544, filB3 = 0.017881;
static float filA0 = 1, filA1 = -1.1036, filA2 = 0.40601, filA3 = -0.049787;
static float input0 = 0, input1 = 0, input2 = 0, input3 = 0;
static float filter0 = 0, filter1 = 0, filter2 = 0, filter3 = 0;
static float Nu0_0 = 0.14662;
static float Nx0_0 = 23.677, Nx1_0 = 47.353, Nx2_0 = 23.677;
static float K0_0 = 0.2386, K0_1 = -0.5816, K0_2 = 0.9255, K0_3 = 1.9278;
static float F0_0 = 2.7896, F0_1 = -1.889, F0_2 = 0.84863, F1_0 = 2, F1_1 = -0.94991, F1_2 = 0, F2_0 = 0, F2_1 = 0.13587, F2_2 = 0;
static float G0_0 = 26.977, G1_0 = 44.981, G2_0 = 17.242;
static float H0_0 = 0.0625, H1_0 = 0, H2_0 = 0;
static float Gamma0_0 = 0.0625, Gamma1_0 = 0, Gamma2_0 = 0;
static float Phi0_0 = 2.7896, Phi0_1 = -1.3193, Phi0_2 = 0.84863, Phi1_0 = 2, Phi1_1 = 0, Phi1_2 = 0, Phi2_0 = 0, Phi2_1 = 0.5, Phi2_2 = 0;
static float C0_0 = 0, C0_1 = 0, C0_2 = 0.042236;
static float r = 0;
static float xu = 0;
static float xuL = 0;
static float xk0 = 0, xk1 = 0, xk2 = 0;
static float xkL0 = 0, xkL1 = 0, xkL2 = 0;
static float y = 0;
static float i = 0;
// Position is saved automatically
ResultData.Position = CurrentPosition;
// Angular velocity is saved automatically
if (CurrentTime != 0.0f){
ResultData.Velocity = (1000.0f * (float)(CurrentPosition - OldPosition)/(float)(CurrentTime - OldTime));
}
else {
ResultData.Velocity = 0.0f;
}
                    
r=sin(CurrentTime/1000)/2-1;
input0 = ResultData.Velocity;
filter0 = (filB0 * input0 + filB1 * input1 + filB2 * input2 + filB3 * input3 - (filA1 * filter1 + filA2 * filter2 + filA3 * filter3)) / filA0;
input3 = input2; input2 = input1; input1 = input0; 
filter3 = filter2; filter2 = filter1; filter1 = filter0; 
if(CurrentTime < 2000) ResultData.Torque =   3.5000e-001;
else {
y = filter0 +   -9.5218e+000;
xk0 = F0_0 * xkL0 + F0_1 * xkL1 + F0_2 * xkL2 + H0_0 * xuL + G0_0 * y;
xk1 = F1_0 * xkL0 + F1_1 * xkL1 + F1_2 * xkL2 + H1_0 * xuL + G1_0 * y;
xk2 = F2_0 * xkL0 + F2_1 * xkL1 + F2_2 * xkL2 + H2_0 * xuL + G2_0 * y;
i += 0.0019278 * (r - y);
xu = i + K0_0 * (Nx0_0 * r - xk0) + K0_1 * (Nx1_0 * r - xk1) + K0_2 * (Nx2_0 * r - xk2);
if(xu > 1) xu = 1;
if(xu < -1) xu = -1;
ResultData.Torque = xu +   3.5000e-001;
xuL = xu;
xkL0 = xk0;
xkL1 = xk1;
xkL2 = xk2;
}
ResultData.StateVariable_5 = r;
ResultData.StateVariable_6 = y;  
return ResultData;
}

6.7.15. Eredmények

Mérési eredmény integrátorral
6.49. ábra - Mérési eredmény integrátorral


Ez a szabályozó is helyesen működik, az alapjelet jól követi a kimeneti jel. Az ábrán jól látható, hogy az integrátor hatására megszűnt az eltérés az alapjeltől.

6.7.16. Program kód

6.7.16.1. A szabályozótervezés teljes MATLAB kódja

%% Beállítások
integrator=true;
idplots=true;
stateplots=true;
outplots=true;
filterdesign=true;
%% Identifikáció
start=1800;                                 %kezdőidőpont
y=velocity2(start:end)-velocity2(start);    %szögsebesség-mérések vektora
u=torque2(start:end)-torque2(start);        %nyomatékmérések vektora
 
n=3;                                        %állapotváltozók száma
Ts=0.001;                                   %mintavételezési idő
z=iddata(y,u,Ts);                           %mérési adatok megadása
nn=[n,1,1,1];                               %fokszámok megadása
tharmax=armax(z,nn);                        %identifikáció
[A,B,C]=th2poly(tharmax);                   %polinomok kiolvasása
sys=tf(B,A,Ts);                             %átviteli függvény előállítása
 
yid=idsim(tharmax,u,zeros(n,1));            %identifikált rendszer válasza
t=0:Ts:(size(y)-1)*Ts;                      %idővektor az ábrázoláshoz
if(idplots)
figure(1);                                  %új grafikon
plot(t,y,t,yid);                            %grafikon megjelenítése
legend('mért','identifikált');              %jelmagyarázat
xlabel('idő [s]');                          %vízszintes tengelycím
ylabel('szögsebesség [rad/s]');             %függőleges tengelycím
end;
sys
 
%% Szűrő tervezése
if(filterdesign)
filT=0.001;                                 %Szűrő időállandója
filN=3;                                     %Szűrő fokszáma
 
%Folytonos idejű szűrő
filsys=tf(zpk([],-ones(1,filN)/filT,(1/filT)^filN));
dfilsys=c2d(filsys,Ts,'zoh');               %Diszkrét idejű verzió
 
figure(1);                                  
dbode(dfilsys.num{1},dfilsys.den{1},Ts)     %Bode-diagram
 
figure(2);
step(dfilsys);                              %Ugrásválasz
 
figure(3);
v=velocity(start:end)-velocity(start);      %Zajos jel
lsim(dfilsys,v,t);                          %Zajos jel szűrése
end;
%% Szabályozó tervezés
sysd=ss(sys);                               %állapottér modell
[Phi Gamma C D]=ssdata(sysd);               %mátrixok kiolvasása
 
a=2;                                        %hány százalékra álljunk be
Tap=0.2;                                    %szabályozási idő
xi=0.8;                                     %csillapítás
w0=log(100/a)/Tap/xi;                       %sajátfrekvencia
 
sdom1=-w0*xi+1i*w0*sqrt(1-xi^2);            %domináns pólusok
sdom2=conj(sdom1);
scinf=-4*w0;                                %segédpólusok a szabályozóhoz
soinf=scinf*5;                              %segédpólusok a megfigyelőhöz
siinf=scinf;                                %segédpólus integrátorhoz
%Shannon-elv ellenőrzése
if(-soinf>0.5/Ts || (integrator && -min([siinf soinf])>0.5/Ts))                          
    display('Túl kicsi a mintavételezési idő!');
end;
 
%Célrendszer modellje egységnyi erősítéssel
if(idplots)
tcsys=zpk([],[sdom1, sdom2, scinf*ones(1,n-2)],-w0^2*scinf^(n-2));
figure(2);                                  %új grafikon
step(tcsys);                                %ugrásválasz számítása
end;
 
%Pólusok átszámítása diszkrét időre
zdom1=exp(sdom1*Ts);                        
zdom2=exp(sdom2*Ts);
zcinf=exp(scinf*Ts);
zoinf=exp(soinf*Ts);
ziinf=exp(siinf*Ts);
 
%Az irányíthatóság ellenőrzése
Mc=ctrb(Phi,Gamma);
if rank(Mc)~=n
   disp('A rendszer nem irányítható!');
end
 
%Állapot-visszacsatolás tervezése
if(integrator)
iPhi=[Phi, zeros(n,1); Ts*C, 1];
iGamma=[Gamma; 0];
iC=[C 0];
iPhic=[zdom1 zdom2 zcinf*ones(1,n-2) ziinf];%pólusok új helye
iK=acker(iPhi,iGamma,iPhic);                %pólusáthelyezés
K=iK(1:n);                                  %állapot-visszacsatolás
Ki=iK(n+1);                                 %integrátor visszacsatolása
else
phic=[zdom1 zdom2 zcinf*ones(1,n-2)];       %pólusok új helye
K=acker(Phi,Gamma,phic);                    %pólusáthelyezés
end
 
%Alapjel-korrekció számítása
NxNu=inv([Phi-eye(n) Gamma;C 0])*[zeros(n,1);1];
Nx=NxNu(1:n);
Nu=NxNu(n+1);
 
%A megfigyelhetőség ellenőrzése
Mo=obsv(Phi,C);
if rank(Mo)~=n
   disp('A rendszer nem megfigyelhető!');
end
 
%Állapot-megfigyelő tervezése
phio=ones(1,n)*zoinf;                       %megfigyelő pólusai
G=acker(Phi',Phi'*C',phio)';                %pólusáthelyezés duális rsz.-en
F=Phi-G*C*Phi;
H=Gamma-G*C*Gamma;
 
 
%% Szimuláció
if(integrator)
    open('szabint');
    sim('szabint');
else
    open('szab');
    sim('szab');
end;
rout=simruy(:,1);
uout=simruy(:,2);
yout=simruy(:,3);
tout=[0; tout];
 
if(outplots)
figure(3);
plot(tout,rout,tout,yout);
xlabel('idő [s]');
ylabel('szögsebesség [rad/s]');
legend('r','y');
 
figure(4);
plot(tout,uout);
xlabel('idő [s]');
ylabel('nyomaték [mNm]');
end;
 
if(stateplots)
figure(5);
plot(tout,simxo(:,1:n));
xlabel('idő [s]');
ylabel('');
legend('x1','x2','x3');
 
figure(6);
plot(tout,simxo(:,n+1:2*n));
xlabel('idő [s]');
ylabel('');
legend('x1','x2','x3');
end;

7. fejezet - Csővezeték hálózatban használt frekvenciaváltóval ellátott aszinkron motoros hajtások gazdasági számítása

Ebben a fejezetben egy gyakorlati példát kívánunk bemutatni arra, hogy a mérnöki munka során sokszor a technikai és gazdasági kérdések összhangját kell megteremteni. Ez a példa nem tekinthető tipikus mechatronikai alkalmazásnak, bár a gépészeti és villamosmérnöki ismeretek egyaránt szükségesek a feladat megoldásához.

Az iparban az aszinkron (indukciós) motort alkalmazzák a legszélesebb körben a motor robosztussága és relatívan alacsony ára miatt. Ezzel szemben az indukciós motor legnagyobb hátránya, hogy teljesítményelektronikai táplálás nélkül nagyon nehézkesen (illetve csak jelentős teljesítményveszteséggel) lehet a fordulatszámát megváltoztatni. A kifejezetten szervomotorokat igénylő alkalmazásokban a teljesítményelektronika mellett megfelelő számítástechnikai kapacitással rendelkező eszközt is telepíteni kell a teljesítményelektronika mellett. Napjainkban a számítástechnikai eszközök ára rohamosan csökken. A teljesítményelektronikai eszközök árában az a rohamos csökkenés - amelyet a számítástechnikai eszközöknél figyelhetünk meg- nem tapasztalható. Ennek ellenére a teljesítményelektronika folyamatosan egyre több alkalmazási területet hódít meg és egyre több egyéb műszaki megoldást szorít ki. Egy ilyen kiszoruló technológia lehet a szivattyúk fojtásos szabályozása.

E fejezetben azt kívánjuk megmutatni, hogy miként lehet meghatározni csővezeték hálózatokban használt fojtásos szabályozás többlet veszteségeit (és ennek következtében többlet költségeit). E fejezetben használt konkrét árak és egyéb adatok csak illusztratív jellegűek, és megadásuk csak azt a célt szolgálja, hogy általuk konkrét számítások is elvégezhetővé váljanak.

7.1. Munkapont meghatározása

A pontos számításhoz szükség van a szivattyú és a csőszakasz jelleggörbéjére. Az előbbit szivattyú gyártója csatolja a szivattyú egyéb dokumentációihoz és így elvileg minden szivattyúhoz rendelkezésre áll, az utóbbit a csőszakasz gyártója, tervezője tudja megadni. E jelleggörbék a Q térfogatáram és a H emelőmagasság között teremtenek kapcsolatot. A tényleges munkapont a csőszakasz és szivattyú jelleggörbéjének metszéspontjában alakul ki, ahogy ezt a 7-1. ábrán szemléltetjük.

A szivattyú hatásfoka a különböző munkapontokban különböző értékeket vehet fel. Így arra kell törekedni, hogy a cső jelleggörbéje a szivattyú jelleggörbéjét a legnagyobb hatásfokú pontjánál metssze. Néhány szivattyút időnként különböző jelleggörbével rendelkező csőszakaszon keresztül, különböző térfogatáram igényt kielégítő feladatra használnak, ezért a szivattyú szükségszerűen bizonyos feladataira túl van méretezve. A szivattyú és a csőszakasz névleges értékeiből adódó munkapontot meg kell változtatni. Erre elvileg több lehetőség van, jelenleg sok helyen az úgynevezett fojtásos szabályozást alkalmazzák, illetve ki- és bekapcsolnak.

Munkapont meghatározása
7.1. ábra - Munkapont meghatározása


7.1.1. A fojtásos szabályozás elve

A fojtásos szabályozásnál a szivattyú jelleggörbéjét érintetlenül hagyjuk, és szállítási út jelleggörbéjét (a súrlódási nyomás veszteségét) változtatjuk egy fojtószeleppel. Így lecsökkenthető a térfogatáram, vagyis a szállított anyagmennyiség. Tekintsük a 7-2. ábrát. A szivattyú a csőszakasz és a fojtószelep együttes súrlódási nyomásveszteségét érzékeli, ezért az eredeti M munkapont az M1 pontba vándorol. A szivattyú az adott feladathoz szükségesnél nagyobb, az ábrán H1-gyel jelölt nyomást hoz létre. A csőszakasz nyomása a fojtószelep után H2. Így a szivattyú és a csőszakasz munkapontja eltávolodik a közös M munkaponttól, a nyomás megnő és a Qn térfogatáram Qf értékre csökken. A fojtásból adódó veszteségi teljesítmény a következő egyszerű képlettel számítható.

(7.1)

ahol a szállított anyag sűrűsége és g a nehézségi gyorsulás. Sok helyen a fenti képletben szereplő minden mennyiséget minden szállítási feladatnál mérik, így a fojtási veszteség is folyamatosan nyomon követhető. Természetesen ennek akkor van értelme, ha különböző összesítők is készülnének. Így nem elegendő egyetlen sor beszúrása a naplózó és archiváló programba, de a program megváltoztatásába befektetett munka talán megtérülne akkor, amikor egy konkrét döntést kell hozni, hogy egy adott szivattyúhoz érdemes-e változtatható frekvenciájú hajtást telepíteni. Ismét hangsúlyozni szeretnénk, hogy a teljes fojtási veszteség nem takarítható meg, ugyanakkor a fojtási veszteségen túl azzal is számolni kell, hogy szivattyú már önmagában egy rosszabb hatásfokú munkapontba kerül a fojtásos üzemben.

A fojtásos szabályozás alapelve
7.2. ábra - A fojtásos szabályozás alapelve


7.1.2. Szabályozás a szivattyú fordulatszámának megváltoztatásával

A szivattyú jelleggörbéje a felépítésén túl a fordulatszámától is függ. Vagyis a szivattyú és az adott csőszakasz közös munkapontját a szivattyú jelleggörbéjének mozgatásával állítjuk be a kívánt értékre (lásd 7-3. ábra). Ebben az esetben a szivattyú csak a szállítási feladathoz szükséges nyomást és térfogatáramot hozza létre, nincs további veszteség, mint a fojtásos szabályozásnál. Ezen túlmenően az esetek többségében a szivattyú egy nagyobb hatásfokú üzemi tartományba lép át.

7.1.3. A hálózatból felvett teljesítmény

Amennyiben az összes jelleggörbe rendelkezésre áll, a hálózatból felvett villamos teljesítmény a következő képlettel számítható ki:

(7.2)

Ahol Pv a hálózatból felvett villamos teljesítmény, h, m és s a frekvenciaváltós hajtás (ha nincs ilyen, akkor h értékét 1-re kell választani), a motor, valamint a szivattyú hatásfoka; Q a térfogatáram; H az emelőmagasság; a szállított anyag sűrűsége és g a nehézségi gyorsulás. Megjegyezzük, hogy a Hg tag helyett a nyomásérték is írható.

A fenti paraméterek többsége nem áll rendelkezésünkre, de esetünkben nem szükséges, hogy a (7.2) képletet használjuk, ha mérik minden szivattyúmotor felvett teljesítményét.

Fordulatszám változtatással beállított munkapont
7.3. ábra - Fordulatszám változtatással beállított munkapont


7.2. Megtérülési idő számítása

Elméleti megfontolások

A (7.2) képlet alapján bármely üzemállapotban kiszámíthatjuk a hálózatból felvett teljesítményt. Ha a 7-2. és 73. ábrát összevetjük, akkor megfigyelhetjük, hogy a fojtásos szabályozás esetén a szivattyú, míg a változtatható frekvenciájú hajtás esetén a csővezeték jelleggörbéje mentén mozdul el a munkapont, ha csökkentjük a térfogatáramot. Így egyrészt a szivattyú és a csővezeték jelleggörbéjének közelítő leírására van szükség, másrészt közelítőleg meg kell határozni, hogy a munkapont változása miként hat a szivattyú, a villamos motor valamint a hajtás hatásfokára. A (7.2) képletet a következőképp módosíthatjuk:

(7.3)

ahol hn, mn és sn a frekvenciaváltós hajtás (ha nincs ilyen, akkor hn értékét 1-re kell választani), a motor valamint a szivattyú névleges hatásfoka; n a szállított anyag névleges sűrűsége, valamint g a nehézségi gyorsulás. Az n index a névleges értékekre utal. A H és Q az aktuális emelőmagasság és térfogatáram, K a hatásfok változását leíró függvény.

Közelítő képletek

Egy általános szivattyú aktuális emelő H magassága az aktuális Q térfogatáram függvényében a következőképp közelíthető néhány névleges adat ismeretében:

(7.4)

ahol Qn a névleges térfogatáram, Hmax és Hn a szivattyú maximális és névleges emelőmagassága. A csőszakasz jelleggörbéje a következő módon írható le:

(7.5)

ahol Hcső0 az a minimális emelőmagasság, amelyik megindítja a térfogatáramot a csőszakaszon. Hny a szelepre jutó emelőmagasság nyitott állapotban.

A motor-szivattyú alkotta rendszer hatásfokának változása a térfogatáram függvényében a következőképp írható le:

(7.6)

A motor-szivattyú-inverter alkotta rendszer hatásfokának változása a térfogatáram függvényében a következőképp írható le.

(7.7)

A fenti képletek felhasználásával elkészítettünk egy programot, amely különböző névleges adatokkal rendelkező rendszerek, különböző üzemeltetési módja mellett kiszámítja az éves energiafogyasztás különbségét fojtásos és változtatható frekvenciájú hajtás esetében. A program a következő bemenő adatokat igényli:

Qna szivattyú névleges térfogatárama [m3/ó];

Hn a szivattyú névleges emelőmagassága [m];

Hmaxa szivattyú maximális emelőmagassága [m];

sna szivattyú névleges hatásfoka [%];

Hn a szelepre jutó emelőmagasság nyitott állapotban [m];

n a szállított anyag sűrűsége [kg/dm3];

Hcső0 az a minimális emelőmagasság, amelyik megindítja a térfogatáramot a csőszakaszon [m];

Pma villamos motor névleges teljesítménye [kW];

mna villamos motor névleges hatásfoka [%];

hna változtatható frekvenciájú hajtás névleges hatásfoka [%];

Téva szivattyú éves összes üzemideje [ó];

Energia ára villamos energia ára [Ft/kWó];

Beruházási ára változtatható frekvenciájú hajtás telepítési költsége [MFt];

30%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 30%-os értékén [%];

40%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 40%-os értékén [%];

50%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 50%-os értékén [%];

60%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 60%-os értékén [%];

70%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 70%-os értékén [%];

80%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 80%-os értékén [%];

90%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 90%-os értékén [%];

100%-os üzema szivattyú éves összes üzemidejének hány százalékában működik a névleges térfogatáram 100%-os értékén [%].

A program kezdeti értéke egy 400 m3/ó térfogatáramú és 375 m emelőmagasságú szivattyú és 490 kW teljesítményű motorra vonatkozik, amelyik éves szinten 8000 órát üzemel 70%-os térfogatáram mellett. 25 MFt-os beruházási költséget feltételezve, a beruházás alig egy év alatt megtérülne. A program segítségévek kiszámítottuk, és egy háromdimenziós ábrán szemléltetjük a megtérülési időket (lásd. 7-4. ábra). A számítás során a térfogatáramot a névleges érték 30% és 90%-a között, és az éves időbeli kihasználást 30% és 100% között változtattuk. A 90%-nál nagyobb térfogatáram esetén olyan kicsi fojtásra van szükség, hogy gyakorlatilag nem lehet jelentős energiát megtakarítani, viszont az inverter többlet veszteséget okoz, így matematikailag negatív megtérülési idők adódnak. A 7-5. ábrán külön kiemeltük azt a tartományt, amelyikben a megtérülési idő nem nagyobb, mint 5 év. Az ábráról leolvasható, hogy akár évi 30% üzemidőben 70%-os térfogatáram mellett is megtérülhet 5 éven belül egy 25 MFt-os beruházás. Az elemzés megkönnyítése érdekében a 7-6. ábrán kiemeltük a 3 évnél rövidebb megtérülést eredményező üzemi tartományt végül a 7-7. ábrán megmutatjuk az éves szinten megtakarítható energia nagyságát MWó-ban.

Megtérülési idő az időbeni és mennyiségi kihasználtság függvényében
7.4. ábra - Megtérülési idő az időbeni és mennyiségi kihasználtság függvényében


5 évnél rövidebb megtérülési idő az időbeni és mennyiségi kihasználtság függvényében
7.5. ábra - 5 évnél rövidebb megtérülési idő az időbeni és mennyiségi kihasználtság függvényében


3 évnél rövidebb megtérülési idő az időbeni és mennyiségi kihasználtság függvényében
7.6. ábra - 3 évnél rövidebb megtérülési idő az időbeni és mennyiségi kihasználtság függvényében


Az éves energia megtakarítás az időbeni és mennyiségi kihasználtság függvényében
7.7. ábra - Az éves energia megtakarítás az időbeni és mennyiségi kihasználtság függvényében


8. fejezet - Háromfázisú aszinkron motor matematikai modellezése

A motor matematikai modellje, azaz a motor működését és jellemző tulajdonságait reprezentáló egyenletrendszer a térfazor-elmélet alapján alkotható meg, amely a váltakozó áramú villamos gépek matematikai modellezésében és mezőorientált vektoriális szabályozásukban használatos módszer[49].

Az elmélet kialakulásához az vezetett, hogy az egyenáramú gépek vizsgálata és szabályozása során nem okoz gondot a motor főmezőt alkotó fluxusáért és nyomatékáért felelős áramok szétcsatolása és külön történő kezelése, mivel a mennyiségek közti szétcsatolás a motortípus konstrukciójának köszönhetően természetesen létrejön. A váltakozó áramú motoroknál azonban a fluxust és a nyomatékot előidéző áramok nincsenek természetes úton szétválasztva, így mind a szabályozás, mind a modell meglehetősen bonyolulttá válik, hiszen háromfázisú, nemlineáris, többváltozós differenciálegyenlet rendszerrel írható le. A szétcsatolás a térfazor-elméletnek köszönhetően a váltakozó áramú motorok esetében is megtehető, így a motor vizsgálata és üzemeltetése leegyszerűsödik.

A háromfázisú váltakozó áramú gépek térfazor-elméleten alapuló, általános jelleggel rendelkező, tranziens üzemmódra is érvényes, merőleges kétfázisú matematikai modellezésének az alapja fázis- és koordináta-transzformáció. A fázis transzformáció komplex, kétfázisú rendszert, a koordináta-transzformáció pedig mezőorientáció útján egyenáramú matematikai modellt eredményez az áramok közti szétcsatolást mesterségesen létrehozva.

A matematikai modellezés első lépése a háromfázisú gép összefüggéseinek megadása egyetlen eredő vektormennyiséggel, az úgynevezett Park-vektorral vagy térfazorral, amely tartalmazza mindhárom fázisösszetevő pillanatnyi értékét[50].

A fázisfeszültségek egyenletei, az a fázist szögreferenciának, azaz -nak vett koordináta-rendszerben felírva:

(8.1)

(8.2)

(8.3)

ahol az usa, usb, usc időfüggvények a térbeli helyzetet nem írják le. Mindhárom feszültségegyenlet egy-egy tekercset ír le, emiatt a leírt fázis rezisztív részén eső feszültség, valamint a fázistekercs fluxusának változása által indukált feszültség szerepel bennük. A fázisok ohmos ellenállásait egyenlőnek tekintjük.

Aszinkron motor felépítésének egyszerűsített, elvi rajza
8.1. ábra - Aszinkron motor felépítésének egyszerűsített, elvi rajza


A feszültség Park-vektora a fázismennyiségek felhasználásával:

(8.4)

ahol 1 a háromfázisú koordináta-rendszer a fázistengelyének, a=ej120° és a2=ej240° a b és c fázistengelyeinek irányába eső egységvektorok (8-2. ábra).

A háromfázisú váltakozó áramú gépek egyik leggyakrabban használt típusa az aszinkron motor, melynek általános összefüggései felírhatók térfazoriális formában. A motor állórész egyenlete állórészhez, a forgórész egyenlete pedig forgórészhez rögzített koordináta rendszerben értelmezendő.

(8.5)

Az (8.5) összefüggés az (8.1)(8.3) összefüggések (8.4) feszültség Park-vektorba történő behelyettesítésüket követően kapható meg.

A háromfázisú eredővektor képzése
8.2. ábra - A háromfázisú eredővektor képzése


A három állórész áram és csatolt fluxus szintén Park-vektor alakban felírható, így az (8.5)-ben azoknak szintén háromfázisú eredő vektoruk szerepel. A forgórész feszültség egyenlete szintén megadható egyetlen eredő vektormennyiséggel (8.6).

(8.6)

Hasonlóképpen a feszültség egyenletekhez a csatolt fluxus is felírható eredővektoros formában felhasználva az állórész és forgórész áramok Park-vektor alakját. A forgórész áramvektort tartalmazó tag az állórész és a forgórész között értelmezett kölcsönös induktivitások miatt jelentkezik az állórész fluxusban, míg ugyanezen okból jelentkezik az állórész áramvektort tartalmazó tag a forgórész fluxusban [51].

(8.7)

(8.8)

Az állórészbe betáplált háromfázisú, időben és térben egymáshoz képest 120°-kal eltolt áram az állórészben Ψs, a forgórészben pedig indukció útján Ψr csatolt fluxust hoz létre. Mind az állórészben, mind a forgórészben létrejövő fluxusoknak záródnak erővonalai úgy, hogy nem metszik a forgórészt illetve az állórészt, azaz csak az állórész vagy csak a forgórész tekercseléshez kapcsolódnak (8-3. ábra). A légrés jelenléte miatt természetes, hogy tökéletes csatolás nem jöhet létre. Ezek a csupán saját tekercselésükhöz kapcsolódó mennyiségek az úgynevezett szórt fluxusok. Ebből következően a szakirodalomban Ψm -ként bevezetett légrés fluxus értéke kisebb lesz az állórész és a forgórész fluxusoknál. A definíció szerint a forgórész fluxusa megegyezik a légrés fluxus és a forgórész szórt fluxusának összegével (8.9), ugyanígy az állórész fluxusa megegyezik a légrés fluxus és az állórész szórt fluxusának összegével (8.10).

(8.9)

Fluxus eloszlás az aszinkron motorban
8.3. ábra - Fluxus eloszlás az aszinkron motorban


A fluxusok a hozzájuk tartozó induktivitások és az induktivitásokon átfolyó áramok kapcsolatával írhatók fel. Ez alapján megkülönböztethető állórész (Ls), forgórész (Lr) és légrés induktivitás (Lm).

A fluxusoknál tapasztalt és bevezetésre került szórt értékek természetesen az induktivitásokban jelennek meg, így létezik az állórésznek és a forgórésznek szórt induktivitása, melyeket rendre Lσs és Lσr jelölnek (8-4. ábra). Ezek alapján az induktivitások a következőképpen kerülnek bevezetésre:

Az induktivitások bevezetésének köszönhetően az (8.9) és (8.10) fluxusok a következők szerint írhatók fel:

Az induktivitások arányára a szakirodalomban bevezetésre került egy mennyiség, amelynek neve szivárgási tényező. A σ teljes szivárgási tényező értéke (8.16) alapján számolható.

A teljes szivárgási tényező megadja, hogy az állórész induktivitás és a forgórész induktivitás együttesen miként aránylik a légrés induktivitáshoz. Az (8.16) kifejezésben látható törtben szerepel az Lm/Lr és az Lm/Ls aránya is. Ezek az arányszámok azt fejezik ki, hogy a légrésben létrejövő csatolt fluxus az állórészben és a forgórészben kialakuló csatolt fluxusoknál mennyivel kisebb érték. A teljes szivárgási tényezőn kívül az állórésznek és a forgórésznek külön-külön is felírható a szivárgási tényezője, méghozzá (8.17) és (8.18) kifejezések szerint.

Induktivitások modellezése
8.4. ábra - Induktivitások modellezése


8.1. A villamos modell közös koordináta-rendszer reprezentációja

A felírt Park-vektorok felbonthatók két, egymásra merőleges összetevőre, így létrejön a háromfázisú rendszerből az α - β kétfázisú rendszerbe történő áttérés (fázistranszformáció).

Az uγ a háromfázisú rendszer aszimmetriájából adódó zérusrendű összetevő, amely csillagkapcsolású motor esetén a csillagponton megjelenő zérusrendű feszültség a földpotenciálhoz képest viszonyítva.

A kétfázisú, álló koordinátarendszerben a térfazoriális formában felírt összefüggések α illetve β komponensekre bontva felírhatók, de célszerű a fázistranszformációt követően azonnal elvégezni a koordináta-rendszer transzformációját is [52], így a motor állórészébe táplált forgó mezővel szinkron forgó kétfázisú koordináta-rendszerbe transzformálva az egymásra merőleges összetevőket (8-5. ábra).

ahol a villamos szög, kapcsolata a mechanikus szöggel:

Fázis- és rendszertranszformáció
8.5. ábra - Fázis- és rendszertranszformáció


A váltakozó áramú gépek általános összefüggései a bevezetett átalakításoknak köszönhetően felírhatók d - q összetevőkkel megadva, de ezek a transzformációs mátrixok használata helyett a térfazoriális formában megadott összefüggés segítségével kerülnek bemutatásra, mivel a mátrixokkal történő transzformációkat konkrét számítások esetén célszerű alkalmazni.

Közös, a betáplált mező szinkron körfrekvenciájával forgó koordináta-rendszerbe áttérve az áram vektorok transzformációja útján felírhatók a csatolt állórész és forgórész fluxusokra érvényes összefüggések (8-6. ábra).

Az (8.7)(8.8) kifejezésekkel megadott fluxusok saját koordináta rendszerükben értelmezett összefüggések. Az (8.22) és (8.23) jelöléseket bevezetve felírhatók a közös koordináta-rendszerbe forgató tagokkal való szorzást követően:

Az állórész feszültségegyenlet térfazoriális alakja szinkron forgó koordináta-rendszerben kibővül egy úgynevezett forgási feszültség taggal, ami fizikai oldalról a forgó állandó mágnes teréhez képest történő elmozdulását reprezentálja az állórésznek, matematikai aspektusból tekintve pedig a feszültségegyenlet forgási taggal történő beszorzása eredményezi létrejöttét.

A forgórész feszültség egyenlet a szinkron forgó koordináta rendszerbe transzformálva szintén kibővül a forgási feszültséget reprezentáló taggal, hiszen a forgórész saját viszonyítási rendszeréből tekintve szlip frekvenciával rendelkeznek a forgórész mennyiségek.

Szinkron forgó koordináta-rendszer
8.6. ábra - Szinkron forgó koordináta-rendszer


Az aszinkron motor matematikai modelljét leíró összefüggések csak akkor értelmezhetők, ha a helyettesítő kapcsolási rajzban – a transzformátorhoz hasonlóan – az állórész és a forgórész tekercselés egyesítésre kerül (8-7. ábra). A forgórész feszültségegyenlet módosításra szorul, mivel az aszinkron motor helyettesítő kapcsolási rajza alapján megállapítható, hogy az álló- és a forgórész köri helyettesítő kapcsolásban nem egyezik meg a légrés fluxussal felírt indukált feszültség. Ennek oka, hogy a forgórészen a forgási indukált feszültség szlip frekvenciás (8.27). Az állandósult állapotra vonatkozó helyettesítő kapcsolás alapján felírható, hogy:

Az (8.27) összefüggés forgási indukált feszültsége az állórészre redukálható, ha az indukált feszültségek megegyeznek (8.29).

A módosított forgórész feszültség egyenletből megállapítható, hogy a forgórész ellenállása szlip függő. A valóságban természetesen mindig a reaktancia függ a szliptől.

Az álló- és forgórész egyesítése komplex, forgó transzformátorrá
8.7. ábra - Az álló- és forgórész egyesítése komplex, forgó transzformátorrá


Az állórész és forgórész tekercselés menetszám áttételéből adódóan el kell végezni a forgórész-mennyiségek redukálását az állórészre egy fiktív a redukálási tényező segítségével [53]. Ennek bevezetése a következőképpen történik:

Az induktivitások a következőképpen módosulnak miután a fluxus egyenletekbe behelyettesítésre kerül a forgórész fluxus és áram redukált alakja:

Az (8.24) és (8.25) fluxus egyenletekbe behelyettesítve az (8.11) és (8.12) összefüggéseket, továbbá felhasználva a redukált alakját a légrés és forgórész induktivitásoknak

A zárójeles kifejezéseket elnevezve az (8.30)(8.31) fluxusegyenletek a következő formában írhatók:

amely összefüggésekben szereplő új induktivitások írhatók a következőképpen is:

Az a redukálási tényezőt többféleképpen meg lehet választani, melyek közül három különböző érték terjedt el leginkább. Ezek közül két esetben a olyan értékű, hogy vagy az állórész vagy a forgórész szórási induktivitása eliminálható a helyettesítő kapcsolási rajzból, amelynek előnye, hogy a számítások gyorsabban elvégezhetők (8-8. ábra).

Forgórész szórt induktivitása nélküli fluxusmodell
8.8. ábra - Forgórész szórt induktivitása nélküli fluxusmodell


A harmadik esetben az a értéke a legegyszerűbben egynek kerül kiválasztásra, így a forgórész összefüggések változtatás nélkül kerülnek felhasználásra a motor matematikai modelljében. Ekkor az áttételi arány az álló- és a forgórész között 1:1. Az (8.34)(8.35) egyenletek alapján látható, hogy a értéke miként választandó meg annak érdekében, hogy az állórész vagy forgórész szórási induktivitás eliminálásra kerüljön. Ennek megfelelően a értékei a következőkképpen választhatók meg [54]:

  • a = 1 esetén a motor villamos matematikai modelljét leíró egyenletek (8.36)(8.39) formában maradnak, melyek megegyeznek a korábban megállapított összefüggésekkel

  • esetén az (8.36)(8.39) összefüggésekben LσR = 0, melynek következtében ΨM = ΨR

  • esetén az (8.36)(8.39) összefüggésekben LσS = 0, melynek következtében ΨM = Ψs

Az egyszerűség kedvéért a = 1 - nek választva a redukálási tényezőt a villamos modellt leíró egyenletek az (8.24), (8.25), (8.26), (8.27) formában tovább vizsgálhatók. A szinkron forgó koordinátarendszerben a térfazoriális formában megadott feszültség és fluxus összefüggések felbonthatók két összetevőre. A d és q merőleges tengelyű komplex, kétfázisú forgó koordináta-rendszerben a d tengely irányába esik a valós, a q tengely irányába esik a képzetes összetevője a vektoroknak. Az összefüggések felírhatók d és q irányú feszültségekkel, áramokkal és fluxusokkal – amelyek a transzformációk alkalmazásával jönnek létre, de a forgási feszültség esetében a komplex egységvektor miatt szükséges külön megállapítani a forgási tag d és q irányú komponensét.

A felbontásnak köszönhetően felírható a két transzformált feszültség egyenlet, amelynek d irányú összetevője fogja tartalmazni a forgási feszültség -ωΨsq, míg q irányú összetevője a jωΨsd tagját.

Észrevehető, hogy mind a d, mind a q irányú összefüggés tartalmaz a másik komplex, kétfázisú koordináta-rendszer tengelyének irányába eső vetületet. Ez a jelenség írja le az elektromechanikus kereszthatást a motorban.

8.2. A motor mechanikai modellje

A mechanikai modell alapja a vizsgált motor nyomatékképzését leíró összefüggés megadása. A háromfázisú aszinkron motor tranziens jelenségekre is érvényes nyomatékképletét az energiaátvitelt leíró munkatétel alapján lehet levezetni. A pontos levezetés ismertetése nélkül kerül meghatározásra a motor elektromágneses nyomatékát megadó összefüggés.

A nyomaték az állórész áramának és a motorban létrejövő mágneses térnek a kölcsönhatásaként jön létre.

Mivel azonos síkban levő vektorok vektoriális szorzata adja a nyomatékot, így annak csak erre a síkra merőleges komponense lesz, amely a vektoriális szorzás szabálya értelmében

Az elektromágneses nyomaték megadható a forgórész fluxusának és az állórész áramának ismeretében (8.47) szerint [55].

A vektoriális szorzás szabálya szerint az (8.47) nyomatékegyenlet (8.48) összefüggés formájában számítható ki.

A háromfázisú, kalickás forgórészű aszinkron motor mozgásegyenlete megegyezik bármely forgó gép nyomatéki egyensúlyát megadó összefüggésével, amely kifejezi, hogy annyi elektromágneses nyomaték jön létre a motorban, ami elegendő ahhoz, hogy a terhelő nyomatékot, a súrlódási nyomatékot és a sebességváltozás alatt fellépő tehetetlenségi nyomatékot ellensúlyozza és a motort forgásban tartsa.

A mozgásegyenletbe behelyettesítve a hengeres forgórészű motorra jellemző elektromágneses nyomatéki összefüggést, a motor mechanikai modellje a villamos modellhez hasonlóan kanonikus formára hozható és megoldható.

8.3. Motormodell álló koordináta rendszerben

A motor matematikai modelljét érdemes álló koordináta-rendszerben is felállítani, mivel a modellezés során csupán a szabályozatlan, hálózatról üzemelő motor viselkedésére irányuló vizsgálatok könnyen elvégezhetők az álló koordináta rendszerben. A mezőorientált szabályozás vizsgálatához szintúgy megfelel az álló koordináta-rendszerben felállított modell, hiszen a szabályozókörben előállított, mezőhöz orientált rendszerben értelmezett mennyiségek visszatranszformálás útján a motormodellel megegyező rendszerbe kerülnek.

A motor állórészének feszültségegyenlete az állórészhez rögzített koordináta rendszerben megegyezik az (8.5) összefüggéssel. A forgórész feszültség egyenletét az álló koordináta-rendszerbe transzformálva:

amelyben a forgórész fluxus és forgórész áram szintén az állórészhez rögzített koordináta-rendszerben értelmezendő (8.51) és (8.52) szerint.

A forgórész feszültség egyenletét fel lehet bontani a forgórész egyenletben megjelent forgási feszültség d - q összetevőkre bontásával (8.53).

Az állórész koordináta-rendszerben a két forgórész feszültségegyenlet transzformálása után az állórész és forgórész feszültséget leíró összefüggések a következőképpen írhatók d és q irányú összetevőikre való felbontást követően.

A villamos modell a feszültség egyenletek differenciálhányadosokra történő átrendezésével megoldható, azonban ehhez az áramok meghatározására szolgáló összefüggések ismerete szükséges. Az állórész és forgórész áramokat leíró egyenletek az (8.24) és (8.25) alapján írhatók fel. A forgórész fluxus egyenletéből a forgórész áramot kifejezve, majd azt az állórész fluxus egyenletébe visszahelyettesítve

Az (8.58)-hez hasonlóan a forgórész áram számításához szükséges összefüggés az állórész fluxus egyenletéből az állórész áramot kifejezve, majd azt a forgórész fluxus egyenletébe visszahelyettesítve kapható meg.

A zárójelekben szereplő kifejezéseket a szakirodalom úgynevezett tranziens induktivitásokként hivatkozza meg. Ezeket mind az (8.58), mind az (8.59) egyenletben elnevezve és mindkét összefüggésből az áramokat kifejezve a villamos modell megoldásához szükséges állórész és forgórész áramra vonatkozó egyenletek megállapíthatók.

Az (8.60) és (8.61) összefüggések d és q irányú összetevőikre történő felbontása szimplán megtehető a bennük szereplő mennyiségek felbontásával.

8.4. Motormodell állapotegyenlet reprezentációja forgó és álló koordináta-rendszerben

Az aszinkron motor modelljének ismerete forgó koordináta-rendszerben szintén nélkülözhetetlen, mivel legtöbbször a szabályozó hurkokban a szabályozáshoz szükséges számítások szinkron forgó rendszerben értelmezett mennyiségekkel kell, hogy történjenek. Így például ha fluxus szabályozást valósít meg a hajtás, akkor a hibajel a fluxus referenciaértékének a pillanatnyi fluxussal történő összehasonlítása alapján képződik. A pillanatnyilag a motorban jelen lévő állórész, forgórész vagy légrés fluxus értékéről ugyan Hall-szenzorokkal megvalósított mérés útján lehet közvetlenül is információt szerezni, de ennél jóval elterjedtebb megoldás becslő algoritmusok használata. Ha a becslő algoritmusnak forgó koordináta-rendszerben értelmezett mennyiségek a bemenetei, akkor az algoritmus a motor forgó koordináta-rendszerben felírt matematikai modellje alapján működik.

Az (8.24), (8.25), (8.26), (8.27) egyenletekből is, Ψs, ir, Ψr térfazorok bármelyikét állapotváltozónak lehet választani a modell alkotás során. Az aszinkron motor modellezéséhez érdemes az állórész áramot és a forgórész fluxust állapotváltozóknak kijelölni és így felállítani a modellt, hiszen a szabályozási hurkokban a forgórész fluxus és az áramszabályozás a cél. Az is és Ψr térfazorokat állapotváltozónak kijelölve a motor modelljének egyenletei csak ezeket az állapotváltozókat fogják tartalmazni, ennek érdekében tehát átalakításra szorulnak a villamos modellt leíró összefüggések. Az (8.27) összefüggést a forgórész fluxus differenciálhányadosára kifejezve:

A forgórész áram helyett írható az (8.24) kifejezés alapján, hogy

Az (8.62) összefüggésbe a forgórész áram helyett az (8.63) összefüggést behelyettesítve

Az (8.26) összefüggést az állórész fluxus differenciálhányadosára kifejezve

Az (8.58) összefüggés deriváltja (8.66) formában írható fel.

Az (8.66)-ban látható, hogy megjelenik a forgórész fluxus, mint differenciálhányados. Annak helyére (8.64)-ot behelyettesítve, majd az egész kifejezést – amely immár csak az állórész áram és a forgórész fluxus térfazorját tartalmazza – (8.65)-be, az állórész fluxus differenciálhányadosának helyére behelyettesítve:

Az (8.64) és (8.67) kifejezések adják a forgórész fluxusra és állórész áramra vonatkozó állapotegyenleteket, amelyek alapján lineáris modell felírható, amely az ω és ωr szögsebességek időbeli változásának köszönhetően idővariáns (LTV). A forgórész ellenállás az üzemeltetés során a hőmérséklet-változás hatására nem állandó értékű, így sokszor Rr(t) szintén időfüggő mennyiségként kerül bevezetésre. A matematikai modellben természetesen az állapotváltozóként felvett mennyiségek d és q irányú, kétfázisú komponensei szerepelnek, így az állapotegyenletek felbontását a mátrixok megadása előtt meg kell tenni.

Az egymásra merőleges összetevőkre történő felbontás után az általános referenciájú orientációra érvényes állapot-egyenletrendszer (8.68) formájában írható fel. Az általános referenciájú orientációra érvényes felírás azt jelenti, hogy bármilyen ωk szögsebességgel forgó koordináta-rendszerhez orientált modell megadható az állapot egyenletrendszerrel. A választott koordináta-rendszer lehet akár a szinkron mezővel, akár a forgórésszel együttforgó, de ha ωk = 0 - nak kerül megválasztásra, akkor az álló koordináta-rendszer reprezentációját adja meg az egyenletrendszer.

amelyben

Az (8.68) egyenletrendszer az aszinkron motor villamos modelljét írja le. A modell teljessé tehető és megoldható a mechanikai mozgásegyenlettel történő kibővítést követően. Ehhez a forgórész fluxusokkal és állórész áramokkal kifejezett (8.48) nyomaték egyenlet felhasználása szükséges, hiszen ezek a mennyiségek kerültek állapotváltozóként kiválasztásra.

Mivel (8.68) általános referenciájú orientációban írja le a motor villamos modelljét, így az állapot egyenleteket tartalmazó modell ωk = 0 esetén átalakítható az álló, azaz az állórészhez rögzített koordináta-rendszer reprezentációba. Ebben az esetben szintén a forgórész fluxust és az állórész áramot állapotváltozóknak választva ugyancsak megállapítható az aszinkron motor villamos matematikai modellje, amelyet álló koordináta rendszerben (8.71) egyenletrendszer ír le. A mechanikai modelljét az aszinkron motornak változatlan formában (8.48) nyomaték összefüggés adja meg.

Az (8.71) állapot egyenletrendszerben a d és q irányú összetevők helyett α–val és β–val jelölt komponensek találhatók, mivel ez a jelölésrendszer terjedt el az álló koordináta-rendszerre érvényes egyenletekben, megkülönböztetendő a modellt a forgó rendszerben felírt változatoktól.

8.5. Mezőorientáció – forgórész fluxus orientáció

A szinkron forgó rendszerbe áttérve mező, feszültség és áram orientáció alkalmazható, hiszen a motor valamennyi változójának vektora szinkron sebességgel forog, azaz ezek közül akármelyikhez hozzá lehet rendelni a forgó, kétfázisú koordináta-rendszer valamely tengelyét. Ennek előnye az adott mennyiség könnyű szabályozhatósága, mivel d és q irányú komponense az orientált mennyiségnek a többi vektor ugyanazon irányba eső vetületével egyenesen arányos lesz.

A háromfázisú, váltakozó áramú hajtások modellezéséhez a forgórészfluxus-orientációt célszerű választani, mivel az aszinkron motor vektoriális szabályozása során a forgórész fluxus állandó értéken tartása így könnyen megvalósítható (8-9. ábra).

Forgórész fluxushoz történő orientáció
8.9. ábra - Forgórész fluxushoz történő orientáció


A rotor fluxushoz rögzített koordináta rendszerbeli modellel leírva a motor viselkedését minden vektor szinkron sebességgel forog, ezért állandósult állapotban minden mennyiség konstans. Abban az esetben, amikor a koordináta-rendszer valós tengelye együtt forog a Ψr vektorral, annak nincs képzetes komponense, így a Ψrq állapotváltozó kiesik a rendszerből. A d, valós tengelyhez rögzített forgórész fluxus a forgórésszel megegyező körfrekvenciával forog (8.72).

Az (8.68) általános referenciájú orientációt kifejező egyenletrendszer a forgórész mezőhöz történő orientációt követően (8.73) formájában írható fel a három állapotváltozóval.

A motor elektromágneses nyomatékának egyenlete szintén módosul (8.74), hiszen a q irányú forgórész fluxus eliminálásra került.

Az (8.73) és (8.74) kifejezések alapján látható, hogy a forgórész fluxus orientáció eredményeként a szabályozás egyszerűen kivitelezhető. A forgórész fluxusa megegyezik Ψrd fluxus komponenssel, amely isd árammal arányos, míg isq áramtól független. A nyomaték kifejezésből pedig látható, hogy az elektromágneses nyomaték isd áramtól független, így a sebességhurok szabályozása isq árammal kivitelezhető.

A forgórész fluxushoz történő orientáció megvalósításához szükséges a forgórész fluxusvektor pozíciójának ismerete minden időpillanatban. Az (8.73) egyenletrendszerből megállapítható, hogy

A forgórész fluxus nagyságának becslésére szintén szükség van a szabályozókörök kialakításánál, hiszen a fluxus szabályozó hibajelképzése a referencia és a pillanatnyi fluxus ismeretét követeli meg. Az (8.73) egyenletrendszer felső sorából következően a fluxus becslése (8.76) alapján történhet.

8.5.1. Motormodell mágnesezési áram bevezetésével

A forgórész fluxushoz orientált rendszer felírása megtörténhet a motort leíró egyenletekbe bevezetve a forgórész fluxust reprezentáló mágnesezési áramot, amely (8.77) szerint definiálható.

A mágnesezési áram bevezetésével a forgórész fluxus motormodellből történő eliminálása a cél. Az (8.39) kifejezés alapján egy másik mennyiség, az úgynevezett im mágnesezési áram szintén megadható:

amelyben a mágnesezési áram (8.79) szerint került bevezetésre.

Az (8.77) és (8.78) kifejezések alapján megállapítható az imr forgórész fluxust reprezentáló mágnesezési áram és az im mágnesezési áram kapcsolata (8.80).

Az imr áramot bevezetve a motor modellje felírható az állórész áramot és a mágnesezési áramot állapotváltozóknak választva. Az imr mágnesezési áram nem két komponensre bontva kerül bevezetésre, ellentétben az állórész árammal. A forgórész fluxus helyére behelyettesítve az aszinkron motor forgó koordináta-rendszerben állórész áramokkal és forgórész fluxusokkal ismertetett villamos modellje (8.81)(8.84) egyenletekkel írható fel.

Az állórész feszültség és áram összefüggések felírásával a villamos modell állapot egyenletrendszere mátrixos formában a következőképpen adható meg:

Az (8.81)(8.82) feszültség egyenletekben található σ az (8.16)-ban került bevezetésre. Az (8.83) összefüggésből látható, hogy amikor az imr áram időbeli változása nulla – azaz a forgórész fluxus állandósult állapotban, konstans értékű – akkor az állórész áram d irányú komponensével megegyezik imr értéke.

Az elektromágneses nyomatékot leíró kifejezés (8.87) formában adható meg a mágnesezési áramot tartalmazó modellben az (8.77) alapján, a forgórész fluxus helyére behelyettesítve a mágnesezési áram és a légrés induktivitás szorzatát.

8.5.2. Feszültségforrás jellegű feszültség inverteres szabályozott hajtás

Az (8.67) összefüggésből az állórész feszültséget kifejezve, (8.88) egyenlet alapján lehetőség van feszültségforrás jellegű feszültség inverteres, azaz a feszültségjel alapján történő modulációval működő inverteres hajtás implementálására. Az egyszerűség kedvéért a gyakran használt (8.69) formában kerül a tranziens induktivitás felhasználásra (8.88)-ban.

Észrevehető, hogy az (8.67) kifejezésben látott formához hasonlóan a forgórész fluxust és a körfrekvenciát együttesen tartalmazó tagok összevonhatók, így a feszültség egyenlet némileg egyszerűbb formában:

Látható, hogy (8.89)-ben az állórész árammal arányos tagok között szerepel idővariáns kifejezés is, ahol ω és is állapotváltozó szorzata szerepel. Áramszabályozó tervezése áram hibajel alapján csak az árammal arányos tagok alapján történhet, így azok a tagjai az összefüggésnek, amelyekben szerepel az állórész áram a szabályozótervezéshez használandók fel, míg az további tagjai az egyenletnek a szabályozó kimenetén létrejövő feszültségértékhez hozzáadandók. Utóbb említett megoldást feszültség-kompenzációnak nevezik. A jobb átláthatóság érdekében (8.89) felírható a szabályozott és a kompenzációs feszültségek csoportosítását követően (8.90) formájában.

Az áramszabályozók tervezéséhez szükséges összefüggések és a kompenzációs részek a feszültség egyenletek felbontását követően kerülnek végleges formába. Ennek érdekében a feszültség egyenletek (8.91)(8.92) formában való felírása a cél.

A d és q irányú összetevőkre történő felbontást elvégezve:

Az (8.93)(8.94) feszültségegyenletek alapján a kéthurkos szabályozott hajtás implementálható. A gyakorlatban a hajtás megfelelően működik abban az esetben is, ha a kompenzációs részből csak az árammal arányos tagokkal történik kompenzáció.

Az (8.85) és (8.87) egyenletrendszerrel megadott rendszer alapján szintén tervezhető szabályozott hajtás. Ebben az esetben szerepel az összefüggések között nemlineáris kifejezés is, hiszen állapotváltozók szorzatai is szerepelnek a differenciálegyenletekben, úgy mint az elektromágneses nyomatékot megadó (8.87) összefüggésben. A cél egy olyan modell levezetése, amely az isd, isq, imr, ωr, ϑr állapotváltozók alapján írja le a rendszert. A szabályozás implementálásához szétcsatolásra kerülnek a d irányú egyenletekben az isd és az egyéb állapotváltozókkal arányos tagok, míg a q irányú egyenletekben az isq és az egyéb állapotváltozókkal arányos tagok. A mágnesezési áramot tartalmazó, (8.81)(8.84) egyenletekkel felírt modell alapján a két egymásra merőleges állórész feszültség komponens az alábbi alakban áll elő:

A nemlinearitás a rendszerben a motor nyomatékegyenletében található az isq imr szorzat miatt. A motor folyamatos működése során elvárás a mágnesezési munkapont megfelelő beállítása és állandó értéken tartása. Az (8.77) összefüggés alapján ezért a = 0 feltételezés jogosan megtehető, így konstans és így az elektromágneses nyomaték egyenletben állapotváltozóként csak szerepel, azaz linearizálásra került az összefüggés. A villamos modell mátrix formában (8.97)-tel adható meg.

Az újonnan állapotváltozóként felvett mennyiségek (8.98) és (8.99) alapján kerülnek bevezetésre.

A villamos modellt leíró egyenletrendszer első mátrixában a mágnesezési áramot tartalmazó

(8.100)

állandó értékű paraméter. A rendszert leíró mátrix egyenletrendszer láthatóan két részrendszerre bomlik, hiszen az az isd, imr állapotváltozókkal megadott, illetve isq, ωr, ϑr részrendszerek egymástól teljesen függetlenek, így mindegyik részrendszerhez külön-külön tervezhető szabályozó. A két részrendszer a következő:

Az (8.101) rendszerhez készített szabályozó feladata a fluxus állandó értéken tartása a lehető legjobb dinamika biztosítása érdekében. A feladat megegyezik a mágnesezési áram konstans értéken tartásával, ami az usd feszültség szabályozásával valósítható meg. A sebesség szabályozása az (8.102) rendszerhez tervezett szabályozóval történik, vagyis usq lesz a szabályozó kimenete, hiszen nem lehetséges a terhelő nyomaték változtatása szabályozási célból. A sebesség szabályozása (8.87) alapján történhetne akár imr által is, azonban isq jóval gyorsabb tranziens viselkedése és a konstans fluxus biztosítása erősen indokolttá teszi a q áramkomponens általi szabályozást. A fentebb korábban ismertetésre került szabályozási elv szerint az állórész feszültségek megfelelő állórész áramokkal arányos komponensei kerülnek szabályozásra, ezért az (8.95) és (8.96) egyenletekben a második szögletes zárójelben megjelenő tagoknak az előállított szabályozó jelekhez történő hozzáadásával kapható meg a végeleges szabályozó jel (8-10. ábra).

Feszültségforrás jellegű feszültség inverteres szabályozott hajtás
8.10. ábra - Feszültségforrás jellegű feszültség inverteres szabályozott hajtás


Valós rendszerekben az állórész áramok és a forgórész sebesség mérésére nyílik mód, így ezeknek a mennyiségeknek a felhasználásával kell a szabályozó bemeneteket előállítani. A szabályozó a forgó koordinátarendszerben valósítja meg a szabályozást, ezért szükséges a mért áramok ebbe a rendszerbe történő áttranszformálása. A transzformációhoz szükséges a forgórész fluxusvektor szögének kiszámítása érdekében elengedhetetlen a fluxus modell használata, amely a forgórész szögelfordulásából és az áramkomponensekből kiszámítja az elforgatáshoz szükséges szöget. A 8-10. ábrán látható külső (fluxus és sebesség) szabályozók feladata a referenciának megfelelő munkapont beállítása, ennek függvényében a két PI szabályozó egység végzi a szabályozó jelek előállítását, majd ezekhez adódnak hozzá a nem arányos tagokból eredő feszültségkomponenseket előállító blokkok által szolgáltatott jelek. A jelek egy feszültség jellegű feszültség inverter bemenetére kerülnek, amelynek alapján a vezérlő logika ellátja a félvezető kapcsolóelemek megfelelően időzített kapcsolását, például vivőhullámos inverter vezérlési stratégia alapján.

8.6. Háromfázisú aszinkron motor folytonos és diszkrét idejű állapottér-modellje

Az aszinkron motor villamos modelljét leíró állapotegyenlet-rendszer bemutatásra került a korábbi fejezetekben, azonban a szabályozott hajtás megvalósítása sok esetben valamilyen állapotbecslő segítségével kerül kivitelezésre. A szabályozó hurkok és a koordináta-transzformációs blokkok igénylik a forgórész sebességének, a forgórész fluxusnak, a forgórész fluxus szöghelyzetének ismeretét. Ezen kívül sok esetben a forgórész kör ellenállásának becslése is az állapotbecslő feladatai közé tartozik, mivel annak értéke nagymértékben változhat az üzemeltetés során a hőmérsékletváltozás következtében. Az (8.75) és (8.76) egyenletek alapján ugyan lehetséges a fluxus és a fluxus vektor szöghelyzetének számítása, de éppen a számítás során felhasznált paraméterek értékének pontatlansága miatt sokkal jobb eredmény érhető el állapotmegfigyelők alkalmazásával. Az állapotváltozók becslésére szolgáló algoritmusok alkalmazásához a rendszer állapottér-reprezentációjának ismerete szükséges. Ebből kifolyólag elengedhetetlen az állapot megfigyelő alkalmazásához az aszinkron motor állapottér-modelljének felállítása.

Az lineáris, időinvariáns rendszert jellemző állapottér-modell általános alakja (8.103)(8.104) egyenletrendszer formájában írható fel.

ahol

n×1 dimenziós állapotvektor,

m×1 dimenziós bemeneti vektor,

p×1 dimenziós kimeneti vektor,

A, B, C, D a rendszer, a bemeneti, kimeneti és az előrecsatolási mátrixok, rendre n×n, n×m, p×n és p×m méretekkel.

A rendszer állapotdinamikáját elsőrendű differenciálegyenlet írja le (8.103), míg az állapot- és kimeneti változókat a kimeneti egyenlet lineárisan köti össze (8.104). Ha a rendszerben nem található előrecsatolás, akkor a kimeneti egyenletben a második tag nem szerepel, mivel D = [0]. A fenti állapottér-modell mátrixai állandó paraméterekkel rendelkeznek, azaz egy lineáris időinvariáns rendszert írnak le.

Az aszinkron motor villamos modellje az 8.4 és 8.5 fejezetekben célszerűen állapotváltozókkal került felírásra, így az állapotdinamikai egyenletben szereplő A mátrix megfeleltethető a korábban felírt mátrixoknak, függően a reprezentáció fajtájától, azaz, hogy álló vagy szinkron forgó koordináta-rendszerre érvényes alakjában kerül felírásra az állapottér-modell. A bemeneti mátrix a d és q irányú feszültségek együtthatóit tartalmazó mátrix felhasználásával írható fel. Az 8.5 fejezetben a motor modell forgórész fluxushoz rögzített koordináta rendszerben került meghatározásra, az állórész áram ezen koordináta rendszerben lévő isd, isq komponensei változóként szerepelnek az állapotváltozók között. Ebből következően a be- és kimeneti mátrixok célszerűen úgy választandók meg, hogy a forgó rendszerből a kétfázisú álló koordináta-rendszerbe történő transzformációt hajtsák végre. Az állapottér modell elnyeréséhez az (8.73) egyenletrendszerben a bemeneti mátrix alapjául szolgáló usd és usq feszültségek együtthatóit tartalmazó mátrix kibővül tehát a visszatranszformálást megvalósító tagokkal, míg a kimeneti mátrix csak a forgatáshoz szükséges kifejezéseket tartalmazza. A megállapítások következtében az aszinkron motor folytonos idejű állapottér modellje az (8.105)(8.106) alakban írható fel.

A gyakorlati implementációhoz illetve a valósághű, időkésleltetést tartalmazó szimulációs vizsgálatok elvégzéséhez szükséges a motor diszkrét idejű rendszermodelljének ismerete. Diszkrét idejű, lineáris időinvariáns (LTI) rendszer állapottér-modellje (8.107)(8.108) formában adható meg, ahol a rendszer állapotdinamikáját kifejező egyenlet differenciaegyenlettel írható le.

A diszkrét idejű állapottér-modell mátrixai (8.109)(8.112) alapján határozhatók meg. A kimeneti egyenlet, így a kimeneti egyenletben szereplő mátrixok nem változnak a diszkretizálás során.

A rendszer és a bemeneti mátrixok számítása könnyebben kivitelezhető, ha az (8.109) és (8.110) kifejezések helyett (8.113) és (8.114) szerint megadott, sorba fejtett alakjukban kerülnek meghatározásra.

9. fejezet - Aszinkronmotor érzékelő nélküli fordulatszám becslése

Az aszinkronmotorra alkalmazott szabályozási módszerek több esetben is megkívánják a motor fordulatszámának, illetve a forgórész pozíciójának ismeretét. Ezen információkat a motor tengelyére szerelt enkóder képes szolgáltatni, ugyanakkor előnyösebb lehet szoftveres úton megállapítani a motor fordulatszámát, akár hibalehetőség-csökkentés, akár költséghatékonysági szempontból. A szoftveres fordulatszám és pozíció becslés alapja a motor fluxusának becslése, amely történhet:

  • a motor állapotegyenletei alapján,

  • modell referenciás adaptív szabályozó segítségével,

  • megfigyelők (Luenberger, Kalman) használatával,

  • a motor állórészének fogaiban bekövetkező telítődés vagy

  • a motor csillagpontján keletkező zérusrendű feszültség mérésével

Ezek közül a motor csillagpontján keletkező zérusrendű feszültség mérésével történő becslő módszer nem kerül ismertetésre.

Legtöbbször a különböző módszerek nem a fordulatszám becslés módjában térnek el, hanem a fluxus becslési technikákban. Ez természetesen az egyes technikákon belül értendő, hiszen a felsorolásban említett módszerek alapjaiban más technikák, így a fordulatszám becslése is teljesen más alapon nyugszik.

9.1. A motor állapotegyenletei alapján történő fordulatszámbecslés

Az állapotegyenletek alapján történő becslés a motor feszültségei és áramai alapján becsli meg az aktuális fordulatszámát a motornak. Ezen módszerek zöme az álló koordináta-rendszerben implementálható. Az álló koordináta-rendszerben történő számítások elvégzéséhez szükséges a csatolt fluxus és az áram összefüggések közül a forgórész egyenleteket az álló koordináta-rendszerbe transzformálni, míg az állórész egyenletek álló koordináta-rendszerben értelmezettek. Az állórész koordináta-rendszerben a két forgórész feszültségegyenlet transzformálása után a motor feszültség egyenletei természetesen az (8.54)(8.57) összefüggésekkel megegyeznek. A fluxus egyenletek pedig

(9.1)

(9.2)

(9.3)

(9.4)

Az (8.54)(8.57) összefüggések alapján fordulatszámbecslő eljárás alkotható meg a forgórész feszültségegyenleteinek köszönhetően, hiszen azok tartalmazzák az ωr forgórész fordulatszámot. Az (8.56) és (8.57) összefüggésekből a forgórész ellenállást kifejezve a két összefüggés egymással egyenlővé tehető [56]. Átalakítások után adódik, hogy a forgórész fordulatszáma

(9.5)

A forgórész áramok a (9.1)(9.2) állórész fluxus egyenletekből kifejezhetők. A kétfázisú koordináta-rendszerben értelmezett d és q irányú komponenseik (9.6) és (9.7) formában fejezhetők ki.

(9.6)

(9.7)

A (9.5) összefüggésbe behelyettesítve a (9.6) és (9.7) összefüggéseket minden tagból leegyszerűsíthető a mágnesező induktivitást tartalmazó szorzó. Ekkor a (9.8) alakra módosul a fordulatszámot megadó összefüggés.

(9.8)

A (9.8) összefüggéssel történő fordulatszám-becsléshez szükséges a fluxus becslése is, hiszen mind a forgórész fluxus, mind az állórész fluxus ismerete szükséges a számításhoz. Az állórész fluxust a (9.9) és (9.10) összefüggésekből lehet becsülni a következőképpen:

(9.9)

A forgórész fluxus becslése a forgórész fluxusból kifejezett áramértékek állórész fluxus egyenletekbe történő behelyettesítésének eredményeképpen létrejövő összefüggések alapján oldható meg. Az GOTOBUTTON OLE_LINK7 \* MERGEFORMAT

összefüggés átrendezés után, illetve komponenseire bontva a d és q irányú komponensek (amik álló koordináta rendszerben megfelelnek az és irányú komponenseknek):

A fordulatszám becsléséhez használt állórész fluxus-becslő algoritmusok a (9.9) és (9.10) alapján történnek, így integrálási hiba (drift) jelenik meg a becslésekben. A két összefüggésben használt áramértékek a motormodellből már hibával terhelt jelként érkeznek a fluxus becslő modellbe, ahol az újabb integrálás a hibát még jobban megnöveli, hiszen az integrálás során a hiba is összegződik.

9.2. Modell-referenciás adaptív szabályozó

A modell-referenciás adaptív szabályozót két fluxus számító modell alkotja. Ezek közül a referencia modell a motor három fázisán mért áramot és feszültséget használja fel a forgórész fluxus becslésére. A referencia modellen kívül egy olyan adaptálható vagy másképpen fogalmazva hangolható modellt tartalmaz a szabályozó, amely szintén a forgórész fluxust számítja, de olyan modell alapján, amelynek bemenete a motor fázisáramain és feszültségein kívül a motor fordulatszáma is. A strukturális felépítést bemutató ábrán látható, hogy a két forgórész fluxust számító modell által szolgáltatott eredmény összehasonlításra kerül egymással, majd a hibajelet egy szabályozó csökkenti nullára (9-1. ábra). Ez azt jelenti, hogy a referenciaként vett fluxus értékével – majdnem – megegyező értékűre szabályozza a hangolható modell által szolgáltatott fluxus értékét a szabályozó. Ekkor – mivel a feszültség és áram bemenetei a két modellnek megegyeznek – olyan fordulatszámértéket fog a szabályozó kiadni mintegy folyamatos szabályozójelként, ami megegyezik a motor fordulatszámával, hiszen ez fogja az összefüggések alapján ugyanazt a fluxust biztosítani a hangolható modell kimenetén [57], [58].

A modell-referenciás adaptív szabályozás struktúrája
9.1. ábra - A modell-referenciás adaptív szabályozás struktúrája


A referencia modell:

A referencia modell szolgáltatja a referencia forgórész fluxus értéket. Az állapotegyenletek alapján történő fluxus becsléssel megegyező módon, a mért háromfázisú feszültség és áramértékek d - q koordinátarendszerbe történő transzformációját követően végezhető el az állórész koordinátarendszerhez igazított állórész fluxus d és q összetevőinek számítása. Ezt követően a forgórész fluxus egyenletekbe történő behelyettesítéssel becsülhető a forgórész fluxus.

A hangolható modell:

A hangolható modellben a forgórész feszültség összefüggései alapján történik a fluxusbecslés az (8.56) és (8.57) feszültség kifejezések és a (9.3) és (9.4) fluxus kifejezések felhasználásával. A (9.3) és (9.4) összefüggésekből kifejezhetők az áramok:

Az (9.13) és (9.14) összefüggéseket az (8.56) és (8.57) forgórész feszültség egyenletekbe helyettesítve, majd azokat és -re rendezve realizálható a hangolható modell.

A hibajel képzés:

A hibajel képzése a szakirodalomban megjelent módszer szerint Popov hiperstabilitási kritériumán alapszik, amelynek végeredményeként a referencia modell által becsült forgórész fluxusvektor és a hangolható modell által becsült forgórész fluxusvektor egymásnak komplex konjugáltjai kell, hogy legyenek [59].

A szabályozó:

Mivel két vektor közti eltérés a hibajel, így egy I (csak integráló) típusú szabályozó képes ellátni a hiba folyamatos integrálásával a szabályozást és a két vektor közti különbséget nullára csökkenteni.

9.3. Megfigyelőn alapuló fordulatszámbecslés

A szabályozási körben állapotszabályozó használata feltételezi, hogy az irányítandó folyamat összes állapotváltozója ismert, mérhető. Ez a feltétel az esetek legnagyobb részében nem így van, legtöbbször méréssel csak az y(k) kimenőjelekhez és az u(k) bemenőjelekhez lehet hozzáférni. A hagyományosnak mondható PID algoritmusok hibajelének képzéséhez szintén szükség van bizonyos mennyiségek ismeretére úgy, mint a motor fordulatszámának vagy éppen a forgórész fluxusának ismeretére. A fordulatszám becslése történhet a motor állapottér-modelljének alapján, úgynevezett megfigyelő használatával (9-2. ábra). A megfigyelők működése egy költségfüggvény minimalizálásán alapszik, amelynek eredményeképpen valamilyen szempontból optimális becslés kapható az állapottér-modellel felírt rendszer állapotváltozóira vonatkozóan.

Állapot megfigyelő általános elvi struktúrája
9.2. ábra - Állapot megfigyelő általános elvi struktúrája


9.3.1. Kalman-szűrő alapú érzékelő nélküli fordulatszám becslés

A Kalman-szűrő – amely a megfigyelő alapú fordulatszám becslési módszerek között elsőként ismertetése kerül – az egyik legszélesebb körben alkalmazott állapotmegfigyelő. A Kalman-szűrő olyan rendszerek állapotbecslésére alkalmas iteratív algoritmus, amelyeket jellemez az állapotra és a kimenetre ráülő zaj. A Kalman-szűrő optimális megoldást ad lineáris, dinamikus rendszerek állapotbecslésére zajos mérési környezetben [60]. A működését tekintve az állapotbecslés diszkrét állapottér modell alapján történik (8.113), (8.114), (8.111), (8.112).

Kalman-szűrő működési elve
9.3. ábra - Kalman-szűrő működési elve


A diszkrét Kálmán-szűrő az állapotbecslést rekurzív módon végzi (9-3. ábra), az (9.16)(9.17) diszkrét idejű állapottér modellel megadott rendszerre:

A wk állapotzaj vagy folyamatzaj, és a vk mérési vagy megfigyelési zaj nulla várható értékű fehérzajok, más szóval normális eloszlású valószínűségi vektorváltozók. A zajok egyáltalán nem korrelálnak egymással, valamint Qk és Rk kovariancia mátrixaik ismertek:

Az xk állapotvektor értékét befolyásolja a wk zaj, azaz xk egy valószínűségi vektorváltozó. A Kálmán-szűrő az becsült értéket az ugyancsak zajjal terhelt yk mérési eredmények alapján határozza meg, ami a vk mérési zaj miatt ugyancsak valószínűségi vektorváltozó. Az xk értékét két különböző módon lehet becsülni aszerint, hogy az yk k-adik mérési eredmény már rendelkezésre áll-e. Az yk-t nélkülöző becslést a priori, a figyelembe vevő becslést a posteriori becslésnek nevezik:

Az és az tehát egyaránt az xk állapotvektor becsült értékei, csak különböző információn alapulnak. Az a priori becslés xk várható értéke az eggyel korábbi mérésig rendelkezésre álló adatok alapján, az a posteriori becslés pedig xk várható értéke az yk -t is figyelembe véve [61].

A Kálmán-szűrő működése rekurzív módon, rekurziónként két lépésben történik. Az első lépés a predikciós lépés, mely az idő múlásából eredő változásokat veszi figyelembe, a második lépés pedig a korrekciós lépés, mely a mérés/megfigyelés alapján korrigálja a becslést.

Predikciós lépés

A predikciós lépés a (9.16) állapotegyenlet és a korábbi a posteriori állapotbecslés alapján előrejelzi az új állapotot (a priori becslés), valamint a korábbi a posteriori hiba kovariancia mátrix alapján kiszámítja a új a priori hiba kovariancia mátrixot.

A új a priori hiba kovariancia mátrix. Figyelembe véve, hogy az állapotbecslés hibája és az állapotzaj egymástól független valószínűségi vektorváltozók:

A fenti egyenletet nevezik diszkrét idejű Ljapunov-egyenletnek vagy Stein-egyenletnek is, és a kovariancia időbeli alakulását írja le.

Korrekciós lépés

A korrekciós lépésben az a posteriori becslés az a priori becslés frissítésével áll elő, mégpedig az yk mérési eredmény és az a priori állapotbecslés alapján „előre vetített” várt kimeneti érték különbségének felhasználásával:

A Kk a Kálmán-erősítés, n×n-es mátrix. A Kálmán erősítés meghatározási módjától függ, hogy a szűrő optimális lesz-e, és ha igen, akkor milyen szempontból.

Behelyettesítve az a posteriori becslés (9.23) szerinti alakját és az állapotvektor és a mérési zaj vektor változók elvégezve az egyszerűsítéseket:

A fenti alak az a posteriori vagy frissített hiba kovariancia mátrix általános alakja, mely érvényes optimális és nem optimális Kálmán-erősítés esetén egyaránt.

A Kálmán-erősítést úgy célszerű meghatározni, hogy az a posteriori állapotbecslés vektor elemeiből képzett hibanégyzetösszeg várható értékét, más szavakkal az egyes becsült állapotok értékek hibái szórásnégyzeteinek összegét minimalizálja. Az optimális Kálmán erősítés:

Algoritmus

A Kálmán-szűrő működése egy inicializációs fázissal kezdődik, melyben a k = 0 időpillanathoz tartozó kezdeti becsült állapotot és kezdeti becslési hiba kovariancia mátrixot kell megadni, mivel ezek szükségesek a k = 1 időpillanatban a rekurzív számítások elvégzéséhez:

A kezdeti állapot becsült értékét az adott rendszer jellemzői alapján kell meghatározni, a főátlóban lévő elemei pedig aszerint, hogy mennyire biztos az megadása. Ha biztos valamelyik állapotváltozó kezdeti értéke, akkor a vonatkozó elemét kicsire, ha bizonytalan, akkor nagyra kell választani. A konkrét számértékek a kezdeti tranziens szakaszt befolyásolják, a P mátrix értéke egy időinvariáns rendszerben az állandósult értékhez tart.

Az inicializáció után a Kálmán-szűrő működése rekurzívan folytatódik, minden rekurzióban elvégzi a predikciós és a korrekciós számításokat. A predikció során a megelőző rekurzió a posteriori mennyiségei, a rendszer, valamint a zaj jellemzői, és a bemenet alapján „előre vetíti” a rendszer állapotát és a becslési hiba kovarianciáját:

A korrekciós lépésben kiszámítja a Kálmán erősítés új optimális értékét. Az új Kálmán-erősítés és a mérési eredmények alapján korrigálja az állapotbecslést és a becslési hiba kovarianciát:

A lényegében fenti 5 egyenlet/művelet alkotja magát a Kálmán-szűrőt. A műveletek rekurzív végrehajtása tetszőleges ideig folytatható. Az állapotot és a kovarianciát számító egyenletek összevonásával a szűrő „egylépésessé” alakítható (egy egyenlet az állapotra, egy a kovarianciára).

Kalman-szűrő illesztése tetszőleges rendszerhez
9.4. ábra - Kalman-szűrő illesztése tetszőleges rendszerhez


9.3.1.1. Kiterjesztett Kalman-szűrő

A linearizált Kálmán-szűrő képes egy névleges trajektória körül linearizált nemlineáris rendszer állapotának becslésére, azonban felmerül a kérdés, hogy maga a trajektória miként határozható meg. Mivel a Kálmán-szűrő egy rendszer állapotának becslésére szolgál, ezért felmerül a gondolat, hogy a trajektóriát (is) becsülje egy Kálmán-szűrő. Más szavakkal a rendszert a Kálmán-szűrő által becsült érték körül linearizáljuk, miközben a Kálmán-szűrő által becsült érték a linearizált rendszeren alapul. Ez az ötlet az alapja a kiterjesztett Kálmán-szűrőnek (EKF: extended Kalman filter) [62].

A többi típushoz hasonlóan a kiterjesztett Kálmán-szűrőből is létezik folytonos és diszkrét idejű változat (valamint hibrid, ahol folytonos rendszer diszkrét mintavételezése történik). A gyakorlatban a diszkrét idejű (diszkrét idejű rendszermodell diszkrét idejű mintavételezéssel) változat fordul elő a leggyakrabban.

A diszkrét idejű kiterjesztett Kálmán-szűrő tehát egy diszkrét idejű nemlineáris rendszer állapotát becsli, mely az alábbi alakú:

Az állapot egyenlet az előző a posteriori állapot becslés, az uk-1 előző bemenet, és az = 0 pont körüli Taylor-sorba fejtéssel linearizálható (csak a konstans és a lineáris tagokat megtartva):

A Jacobi-mátrixok (parciális derivált mátrixok):

A linearizált állapotegyenlet (9.35) és (9.36) behelyettesítése után átrendezhető:

Az egyenlet tovább egyszerűsíthető az ismert mennyiségek összevonásával -be és a zaj valamint a folyamatzaj és az L parciális derivált mátrix összevonásával -be:

Az állapotegyenlet linearizált és egyszerűsített alakja:

Az állapotegyenlet linearizált alakja a linearizált Kálmán-szűrőnél bevezetett trajektóriát adja meg, azonban itt közvetlenül beépítve a Kálmán-szűrő egyenleteibe.

A megfigyelési egyenlet az a priori állapot becslés és a vk = 0 pont körüli Taylor-sorba fejtéssel linearizálható, linearizált alak:

A Jacobi-mátrixok (parciális derivált mátrixok):

A linearizált megfigyelési egyenlet (9.42) és (9.43) behelyettesítése után átrendezhető és egyszerűsíthető:

Az egyenlet tovább egyszerűsíthető az ismert mennyiségek összevonásával zk-ba valamint a mérési zaj és az M parciális derivált mátrix összevonásával -ba:

A megfigyelési egyenlet linearizált és egyszerűsített alakja:

A (9.40) és (9.48) által definiált lineáris rendszerre alkalmazhatóak a diszkrét Kálmán-szűrő egyenletei. A kiterjesztett Kálmán-szűrő predikciós lépése során felhasználható az f nemlineáris rendszerfüggvény:

Mivel az F és L Jacobi-mátrixok függenek az állapot becsült értékétől és a bemenettől, minden rekurzióban újra kell számolni az értéküket.

A kiterjesztett Kálmán-szűrő a korrekciós lépésben kiszámítja a Kálmán erősítés új optimális értékét. Az új Kálmán-erősítés és a mérési eredmények alapján korrigálja az állapotbecslést és a becslési hiba kovarianciát:

Az állapotegyenlethez hasonlóan a megfigyelési egyenlet H és M Jacobi-mátrixai függenek az állapot becsült értékétől, ami miatt minden rekurzióban újra kell számolni az értéküket.

9.3.1.2. Aszinkron motor fordulatszámának becslése Kalman–szűrő alkalmazásával

Az 8.4 és 8.5 fejezetekben ismertetésre került állapotváltozós formában felírt egyenletrendszerekből látható, hogy az aszinkron motor állapottér-modelljének rendszermátrixa lineáris, idővariáns mátrix – akármilyen referenciájú orientációban történik felírása. Ahhoz, hogy megfigyelő alkalmazásával a szögsebesség becsülhető legyen, fel kell venni az állapotváltozók közé, így a többi állapotváltozóval együtt a megfigyelő becslést ad értékére. Ugyanakkor az ωr szögsebességet felvéve az állapotváltozók közé, a rendszer nemlineáris állapottér-modellel fog rendelkezni, mivel állapotváltozók szorzata jelenik meg az összefüggésekben. Ebből következően a 1.1.1.1 fejezetben részletesen ismertetett kiterjesztett Kalman-szűrő alkalmazásával lehetséges a motor fordulatszámának, mint állapotváltozónak becslése. Az aszinkronmotor Kalman-szűrőn alapuló érzékelő nélküli sebesség becslésénél és szabályozásánál a következő tervezési lépéseket kell figyelembe venni[62] [63]:

az aszinkronmotor modell állapot-tér modelljének kiválasztása;

a modell diszkretizálása;

a zajok (rendszer, mérési) és állapotváltozók kovariancia mátrixainak a meghatározása;

a diszkrét-idejű Kalman-szűrő algoritmus implementálása, hangolás.

Az (8.71) állapot egyenletrendszerrel álló koordináta-rendszerben megadott motormodell diszkretizálás után felhasználható kiterjesztett Kalman-szűrő tervezéséhez és alkalmazásához.

amelyben a rendszer és bemeneti mátrixok (9.55) és (9.56) formában szerepelnek. A diszkretizálás (8.113) és (8.114) kifejezések első tagjának figyelembevételével történt, mivel a másodrendű tagok kiszámításának eredményeképpen összetett, bonyolult és nagy számítási igénnyel járó rendszermátrix keletkezik. A mintavételi idő kisebbre vételével azonban megfelelő közelítést adhat az első tagig figyelembe véve a diszkretizáláshoz szükséges mátrixösszefüggéseket.

A (9.55) és (9.56) mátrixokkal megadott állapotdinamikai egyenletrendszere a motornak a (9.57) formában bővíthető ki a szögsebességet is felvéve az állapotváltozók közé. A nemlineáris állapottér modell a kiterjesztett Kalman-szűrő leírásánál látott nemlineáris állapotegyenlettel és kimeneti egyenlettel jellemezhető, ami azt jelenti, hogy nem írható fel az állapottér-modell a hagyományos, lineáris alakban – rendszer, bemeneti és kimeneti mátrixok formájában.

Az álló koordináta rendszerben felírt motor modell használata csökkenő számítási idővel, nagyobb pontossággal, stabilabb viselkedéssel jár, továbbá a szükséges mintavételezési idő kisebb lesz. A rotor fluxushoz rögzített forgó koordináta rendszerben felírt egyenletek pedig extra nemlinearitásokat visznek a rendszerbe, melyek nem kívánatosak [63].

A fordulatszám becslése történhet a forgó koordináta-rendszerben érvényes állapotegyenletek alapján is. Ennek a modellnek az előnye, hogy kisebb rendű, mint az álló koordináta-rendszerben felírt modell, amennyiben ott is az állapot változók között szerepel a motor szögsebessége. A diszkrét idejű állapotegyenlete a forgó koordinátarendszerben felírt modellnek a (9.58) összefüggés alapján adható meg.

A diszkrét idejű állapotegyenlet a (9.59) alakban írható kifejtve, a bemeneti mátrix és a bemeneti változók szorzatait tartalmazó alakban.

A (9.54) és (9.58) formában megadott állapotdinamikai egyenletrendszerek alapján tervezhető Kalman-szűrő integrációja a hajtásrendszerbe a 9-5. ábra alapján történik.

A mezőorientációs alapú Kalman-szűrős szabályozási struktúra
9.5. ábra - A mezőorientációs alapú Kalman-szűrős szabályozási struktúra


Az álló koordináta-rendszerben az állapotok szerint vett parciális derivált mátrix, azaz Jacobi-mátrix (9.60) alakban áll elő.

A kimeneti egyenlet a (9.61) kifejezéssel adható meg.

A második esetben rotor fluxussal szinkron forgó d - q koordináta rendszert használva a mozgásegyenletet figyelembe vevő, (9.59) modell rendszermátrixának Jacobi-mátrixa a (9.62) alakban írható fel.

Az állapotegyenletben a bemeneti mátrix és a bemeneti változókat tartalmazó bemeneti vektor szorzata:

A kimeneti egyenlet (9.64) összefüggés formájában adható meg.

A kiterjesztett Kalman-szűrő algoritmus alkalmazása a megadott állapottér-modellek alapján hét lépésben realizálható. Részletesen alább látható a hét lépés.

1.lépés: Az állapot vektor és a kovariancia mátrixok inicializálása

Az állapot vektor kezdeti értékei x0 = x(t0) alapján adhatók meg. n×1 és p×1 méretű bemeneti és kimeneti vektorok esetén a zajok jellemzésére Qk és Rk n×n és p×p méretű kovariancia mátrixok szolgálnak.

2.lépés: Az állapot vektor előrejelzése

Az állapotvektor előrejelzése a (k+1) mintavételezési időben az u(k) bemenetnek és az állapot vektor előző mintavételezési időben becsült értékének, -nak a behelyettesítése útján számítható (9.49) alapján.

3.lépés: Az előrejelzett állapotvektor kovariancia mátrixának becslése

A kovariancia mátrix számításához szükséges a rendszer Jacobi-mátrixának megállapítása. Ezt követően a (9.50) kifejezés alapján predikálható a kovariancia mátrix.

4.lépés: Kalman erősítési tényező kiszámítása

A Kalman erősítési tényező számítása (9.51) szerint végezhető el.

5.lépés: Állapot vektor becslése

Az állapot vektorban az állapotváltozók előrejelzett értéke (9.52) alapján korrigálható.

6.lépés: A becslési hiba kovariancia mátrixa

A becslési hiba kovariancia mátrixa (9.53) alapján frissíthető.

7.lépés: A k=k+1, x(k-1)= x(k), P(k-1) =P(k) megállapítások után a rekurzió folytatható az újabb ciklussal.

Szimulációs eredmények

A szimulációs eredmények között a bal oldalon az álló koordináta-rendszerbeli modell, a jobb oldalon a forgórész fluxushoz orientált modell esetében kapott eredmények láthatók. A teljes szimuláció időtartama 1,8 másodperc. Az 9-6. ábra a rotor tényleges és becsült értékének viselkedését mutatja be a teljes lefutási idő alatt. Az ábrán látható, hogy a két érték jó egyetértésben van egymással, ezért a 9-8. ábra az felette levő ábra egy intervallumának a kinagyítását tartalmazza, a becslés jóságának kiemelése céljából. Látható, hogy a különbség a két érték között pár fordulat 200 ford/perc-es referencia fordulatszám esetén. A szimuláció kezdeti szakaszában érzékelhető, hogy a becsült és a mért rotor sebesség eltér egymástól. Ezt a kilendülést a Kalman-szűrő paramétereinek a beállása okozza. Ugyanis P mátrix kiindulási értékei (állapotvektor kovariancia mátrixa) nem pontosak, ez okozza a kilendülést is. Ezen a rövid időintervallumon a szűrő az egyenletek és a bemenetek segítségével beállítja ezt a mátrixot a megfelelő értékre. A szűrő beállási idejét a 9-10. ábra alapján láthatjuk. A második esetben, amikor a mozgásegyenletet is figyelembe vesszük, a szimuláció időtartama és a terhelés megegyezik az előző esettel. A 9-7. ábra látható, hogy a két sebesség nagyon jól követi egymást ebben az esetben is. Az eltérés vizsgálata miatt kinagyítást végzünk (9-9. ábra), melyen látható, hogy az eltérés 0,5 körül mozog 200ford/perc-es fordulatszám esetén. A 9-11. ábra a Kalman-szűrő beállásának időintervallumát mutatja be, melyen látható, hogy kezdetben nagyobb az eltérés a mért és a becsült érték között. Ez a különbség a P kovariancia mátrix kezdeti értékétől függ. Látható, hogy 0,2 másodperc alatt a szűrő a bemenetek felhasználásával beállítja a P mátrixot a megfelelő értékre.

9-6. ábra Sebességbecslés álló koordináta rendszerben

9-7. ábra Sebességbecslés forgó koordináta rendszerben

9-8. ábra Az 9-6. ábra kinagyítása 0,35 – 0,7 intervallumon

9-9. ábra A 9-7. ábra kinagyítása a 0,5 – 0,7 intervallumon.

9-10. ábra A szűrő beállási ideje

9-11. ábra A szűrő beállási ideje

9.3.2. Állapotbecslés diszkrét idejű H∞ szűrővel

A Kalman-szűrő alkalmazása nem minden állapotbecslési problémára nyújt megoldást, mivel használata számos feltétel fennállása esetén lehetséges csupán. A Kalman-szűrő akkor alkalmazható, ha

  • ismert az állapotokat és a kimenetet terhelő zaj eloszlása minden diszkrét időpillanatban,

  • a zajok közötti korrelációk ismertek és megfelelnek a bizonyos feltételeknek,

  • a kívánt optimalizálási kritérium az átlagos, négyzetes eltérés minimalizálása az állapot(ok) becsült és a tényleges értéke között, azaz a becslési hiba szórásnégyzetének minimalizálása.

A szűrő a Kalman-szűrővel ellentétben semmilyen információ meglétét nem feltételezi a rendszert érő zajokról. A értelemben optimális állapotbecslési feladat az állapot(ok) becsült és a tényleges értéke közötti legnagyobb eltérés értékét minimalizálja. Ez az ún. minimax problémával megegyező feladat, amelynek során a legrosszabb esetben előálló hibaérték legkisebb értékének elérése a cél.

Adott (9.65)(9.66) állapottér modell formában egy lineáris, diszkrét idejű rendszer.

A rendszer állapot-átmeneti egyenletében az állapotokat terhelő zaj , míg a kimeneti egyenletben a kimenetet terhelő zaj formájában jelenik meg. Az állapotbecslési feladat szerint az állapotok valamilyen lineáris kombinációja keresett, azaz

a becsülendő vektor. Az mátrix szabadon megválasztható, így ha , akkor közvetlenül az állapotok kerülnek becslésre. Az optimalizálandó költségfüggvény (9.68) alakban írható fel.

A költségfüggvény számlálójában az állapotváltozók tényleges és becsült értéke közötti eltérést megadó normanégyzet összeg található, ami kifejtve

A nevező a zajok nagyságát megadó normák mellett tartalmazza az állapotok kezdeti értékének pontatlan megadásával keletkező hibát, normanégyzet formájában felírva.

A költségfüggvényben megjelenő , , és súlymátrixok probléma specifikus tervezési paraméterek. A szimmetrikus pozitív definit mátrix elemeinek megválasztásával lehet a költségfüggvényben szereplő mennyiségek között prioritást felállítani. Így például ha van egy kitüntetett állapotváltozó, amelynek pontos becslése a többi állapotváltozóhoz képest prioritást élvez, akkor az S mátrixban hozzá tartozó értéket nagyobbra kell választani a többi állapotváltozó súlyát megadó értékhez képest. A kitüntetett állapotváltozó súlyát nagynak választva az állapotváltozó becslési hibája nagy mértékben növelni fogja a költségfüggvényt, így tehát nagyobb mértékben lesz büntetve ennek az állapotváltozónak a pontatlan becslése a többi állapotváltozóéhoz képest. A nevezőben szereplő mennyiségek súlyozása hasonlóan történik, így feltételezve, hogy az egyik állapotváltozóhoz vagy kimenethez tartozó zajról ismert, hogy nem nagy, akkor kis értéket kell a súlymátrixban párosítani hozzá, mivel a mátrix inverze ott lesz legnagyobb értékű és abból következően, hogy nevezőben szerepel, a költségfüggvényt ez fogja kisebb mértékben növelni a többi elemhez képest.

Az optimalizálási feladat szerint a zajok által okozott legrosszabb becslés minimalizálása a cél, azaz keresendő olyan állapotbecslés, amely a és zajok és pontatlan megválasztása által maximalizált költségfüggvényt minimalizálja. A probléma (9.70) formájában írható fel.

A költségfüggvény maximalizálása és zajok és szerint könnyedén kivitelezhető lenne végtelen nagyságúnak választva amplitúdójukat, ezért a (9.68) függvény nevezőjében szerepelnek. Így ha a felsorolt mennyiségek végtelen nagyságú amplitúdóval rendelkeznének, akkor ugyan nagy lenne, de maga a költségfüggvény értéke nem lenne nagy, így lehetséges, hogy nem maximális értéket venne fel.

A költségfüggvény közvetlen minimalizálása nem végezhető el, ezért a cél olyan becslése, hogy

ahol értéke tervezési paraméter. Értékét célszerű nagynak választani, hiszen annál pontosabb becslés kapható, viszont ha értéke túlságosan nagy, akkor az optimalizálási feladatnak nincs megoldása. A (9.71) feltétel garantálja, hogy az állapotbecslés hibájának aránya a zaj mértékéhez képest kisebb lesz, mint .

Az optimalizálási probléma (9.72) alakban jelenik meg, miután az (9.71) figyelembe vételével átrendezésre került.

Mivel (9.66) alapján ezért , így

Az (9.69) felhasználásával, amelyben a helyesítése (9.67) alapján megtörténik írható, hogy

amelyben

A (9.73) és (9.74) behelyettesítését elvégezve a (9.72) egyenlőtlenségbe, (9.75) áll elő.

A minimax problémát megoldva a diszkrét idejű szűrő a (9.76)(9.78) becslő egyenletekkel garantálja, hogy az állapotbecslés hibájának aránya a zaj mértékéhez képest kisebb lesz, mint értéke.

Állandósult állapotra érvényes H szűrő

Az állandósult állapotra érvényes megoldás esetében mind a rendszer modelljében szereplő mátrixok, mind a tervezési paraméterként megadott súlymátrixok időinvariánsok. Ekkor a rendszer (9.79)(9.81) formában kerül felírása.

A feladat becslése a (9.82) egyenlőtlenségre megoldva a minimax problémát.

A , és szintén szimmetrikus pozitív definit mátrixok, amelyek tervezési paraméterek. A szűrő az állandósult állapotban a (9.83)(9.86) egyenletek alapján implementálható.

Összegzésként kijelenthető, hogy a H∞ szűrő egy olyan legrosszabb becslést minimalizáló módszer, amely feltételezi, hogy és zajok és maximalizálni igyekszenek a költségfüggvényt. A H∞ szűrő éppen ezért robusztus a zajokra és pontatlanságokra nézve. Lényegében a H∞ szűrő tekinthető a Kálmán-szűrő robusztus változatának, ahol a tetszőleges megnövelése helyett optimálisan kerül megválasztásra a és értékét növelő tag.

H és Kalman-szűrővel történő optimális állapotbecslés összehasonlítása

Kalman-szűrő alkalmazása esetén a zajok valószínűségi sűrűségfüggvénye ismert, így egy statisztikailag optimális becslés elnyerhető ennek az információnak a felhasználásával, míg a optimális becslés esetében a zaj statisztikai jellemzői ismeretlennek tekintett mennyiségek, így a legrosszabb eshetőség feltételezésével kerülnek figyelembe vételbe.

  • Ha az feltétel fennáll, továbbá –nak kerül megválasztásra, akkor a szűrő Kalman-szűrővé redukálódik. Ebből következően kijelenthető, hogy a Kalman-szűrő egy olyan minimax szűrő, amelynek a teljesítményhatára végtelen, azaz nincs korlátja az legrosszabb becslés pontosságának.

  • A Kalman-szűrő alkalmatlan az állapotok lineáris kombinációjának becslésére.

  • A Kalman-szűrő egyenleteit összehasonlítva a (9.84)(9.86) egyenletekkel észrevehető, hogy a szűrő esetében és tartalmaz egy -val arányos negatív tagot, ami – mivel a mátrix inverz műveleten belül van – növeli és értékét. A nagyobb erősítésnek köszönhetően lesz robusztusabb illetve a modell pontatlanságokra kevésbé érzékeny a szűrő. Hasonló módon a Kalman-szűrőnél bevált megoldás, hogy a állapot kovariancia mátrix mesterségesen nagyobbra történő választása útján növekszik meg és értéke. Figyelembe kell venni, hogy pontos modellre alkalmazva a módszert, könnyen elromolhat a Kalman-szűrő által adott becslés.

Összegzésként kijelenthető, hogy a szűrő egy olyan legrosszabb becslést minimalizáló módszer, amely feltételezi, hogy és zajok és maximalizálni igyekszenek a költségfüggvényt. A szűrő éppen ezért robusztus a zajokra és pontatlanságokra nézve. Lényegében a szűrő tekinthető a Kalman-szűrő robusztus változatának, ahol a tetszőleges megnövelése helyett optimálisan kerül megválasztásra a és értékét növelő tag.

10. fejezet - H∞ szabályozó elméleti háttere

A szabályozási probléma megfogalmazása általános esetben a következő: adott a 10-1. ábrának megfelelő szabályozási struktúra [64]. A rendszer bemenetei a zavarok, zajok, parancsjelek, referencia és a szabályozó által előállított jelek.

H∞ szabályozási probléma
10.1. ábra - H∞ szabályozási probléma


A rendszer kimenetei egyrészt a mért fizikai mennyiségek, másrészt az úgynevezett referencia kimenet, amelynek minimalizálása lesz a cél a szabályozó tervezési eljárás során. A rendszer viselkedését leíró állapottér egyenletek a következők:

Ahol A a rendszermátrix, Bu a szabályozó bemenet bemeneti mátrixa, Bw a zavarok bemeneti mátrixa, Cy a kimeneti mátrix, Dyu a bemenet kimenetre gyakorolt hatását jellemzi, Cm a mérési mátrix és Dmw a mérési zajmátrix.

Teljesülniük kell továbbá a következő feltételeknek:

Az előbbi feltételek értelmében a rendszer bemenetein jelentkező zavarok és a mérési zajok eltérőek, a kimeneti egyenlet normalizálja a mérési zajokat, a referencia kimenet egy, csak az állapotoktól függő részből és egy, csak a szabályozó bemenettől függő részből áll és a szabályozó bemenettől függő rész maga a szabályozó bemenet vagy annak transzponáltja. További feltételezés, hogy a rendszer irányítható a szabályozó bemenet és a zavarok felől, megfigyelhető a mért kimenetek és a referencia kimenet felől (ez garantálja a rendszer stabilizálhatóságát visszacsatolás segítségével).

Probléma: A szuboptimális H∞ szabályozási probléma azon visszacsatolásos szabályozó megtalálása, amelyre az alábbi zárt kör átviteli függvényének normája korlátos adott intervallumon, azaz:

A probléma megoldása két Riccati egyenlet megoldásával adható meg, A Riccati egyenletek megoldásai idővariáns mátrixokat lesznek. Az így kapott szabályozó becslő részének erősítése és az állapotvisszacsatoló részének erősítése állandósult állapotot érnek el bizonyos idő után, így olyan alkalmazási területeken, ahol az időbeli működési időtartomány nagy a tranziensek idejéhez képest, az idővariáns szabályozó helyett használhatók az állandósult állapotbeli értékek. Az állandósult állapotú H∞ szabályozó megoldása a következő szuboptimális szabályozási problémának.

Probléma: Feladat azon lineáris, időinvariáns szabályozó megtalálása, amelyet a Laplace tartományban a (10.7) egyenlet ír le és amely stabilizálja a zártkörű rendszert és a zárt kör normája korlátos (10.8).

A szabályozó kiszámítása ebben az esetben leegyszerűsödik a követekző két Riccati egyenlet megoldására megfelelően nagy esetén.

Ezeket a mátrixegyenleteket P-re illetve Q-ra kell megoldani. Ha a pozitív szemidefinit megoldásokra igaz, hogy és stabil, vagyis a mátrixok sajátértékeinek valós része negatív, valamint, azaz a spektrális rádiusz (a sajáértékek abszolútértékenek maximuma) korlátos akkor a szabályozó , amely a rendszerrel azonos rendű, a (10.11) állapottér reprezentációval adott és a mátrixai a (10.12)(10.14) alapján számíthatók ki.

10.1. Szabályozó tervezése

Ebben a fejezetben az 8.5.2 fejezetben kapott modell segítségével szabályozó tervezésre kerül sor az aszinkron motorhoz. Mielőtt elkezdődne a tervezési eljárás, érdemes áttekinteni a H∞ szabályozási módnak az előnyeit, tulajdonságait, jobban rávilágítva annak lehetséges felhasználásai területére. A H∞ szabályozás a stabilitás, érzékenység tématerületeket célozza meg különös tekintettel a paraméteres bizonytalanságok kezelésére és különösen jól alkalmazható olyan esetekben, ahol a be és kimenetekre jól definiált korlátok adhatók. A H∞ szabályozás lineáris időinvariáns rendszerekre alkalmazható. Az 8.5.2 fejezetben bemutatott motor modell nagy hátránya a nemlinearitás, hiszen szerepelnek benne az állapotváltozók keresztszorzatai is, ezért a modellt a szabályozó tervezéséhez alkalmas lineáris alakra kell hozni.

Az egyszerűsítési lépések hasonlóak a korábbi fejezetekben látottakkal, itt azonban nem történik meg a megfelelő állórész árammal arányos és nem arányos tagok szétválasztása. Mint már a mezőorientált szabályozásról szóló fejezetben bemutatásra került, a motor folyamatos működése során fontos a fluxus konstans szinten tarása, a modell átalakítása ennek függvényében munkaponti linearizálással kerül levezetésre. A mezőorientált szabályozás során a szabályozási kör segítségével valósítható meg a fluxus konstans szinten tartása. Tegyük fel, hogy az előbbi követelménynek sikerült megfelelni. A (8.77) egyenletből ezért az következik, hogy ekkor a mágnesezési áram konstans.

A (10.15) egyenletben ekkor = 0 (mivel konstans a mágnesezési áram) és e miatt isd = imr , továbbá imr konstans ezért . Az alábbi egyenlet ennek következtében nem differenciálegyenlet, hanem csak algebrai egyenlet.

A motor dinamikus viselkedése így már két differenciálegyenlettel (10.17)(10.18) leírható.

Az ismertetett feltételek mellett így a (10.19)(10.20) összefüggések felhasználásával felírható ebből a szabályozó tervezéséhez az egyszerűsített modell.

Felvetődik a kérdés: Mennyire pontosan írja le ez a modell a rendszer viselkedését? Érdemes észben tartani a feltételezéseket: a fluxus konstans, a fluxus szabályozó (d kör) feladata ennek biztosítása. Jól láthatóan az egyszerűsített modell alapján készített szabályozó a mező orientált szabályozásban látottaknak megfelelően csupán a q irányú szabályozást fogja elvégezni. Újabb kérdés vetődhet fel: Miért nem kerül alkalmazásra a d körhöz is H∞ szabályozó? Ennek legfőbb oka az, hogy a rendszerben jelentkező legnagyobb zavar (a terhelő nyomaték) ebben a részrendszerben jelenik csak meg, a cél ennek minél jobb ellensúlyozása, hiszen nem rendelkezünk semmilyen információval erről a mennyiségről, a rendszer viselkedését viszont jelentősen befolyásolja. A döntést az is indokolja, hogy a fluxus csak a tranziensek alkalmával változik meg a kereszthatások miatt, és a fluxus változási sebessége is kicsi (nagy időállandó miatt). A d kör PI szabályozójának legfőbb feladata a tranziensek alatt tapasztalható kismértékű változások kompenzálása.

A szabályozni kívánt rendszer általános esetben a következő egyenletekkel írható le:

Az egyszerűsított modellt (10.21) kell ilyen alakra hozni. A szabályozás egyik fontos célja az előírt referenciajel követése. Egyik lehetséges megoldás az lenne, ha a kimeneti egyenletben szerepelne a hibajel, vagyis a valós és a referencia sebesség különbsége, ez azonban nem lenne konisztens a (10.1)(10.5) alakkal, hiszen a referenciakimenetben y(t) nem szerepelhet ilyen tag. A probléma megoldásához a legjobb módszer súlyfüggvények definiálása a referenciára és mérési zajra a 10-2 ábrának megfelelően. Ezáltal a két differenciálegyenletből álló rendszer (10.21) kiegészül még két differenciálegyenlettel és együtt egy negyedrendű rendszert alkotnak, ahol az új állapotváltozók xr és xv

A szabályozással szembeni további elvárás a nulla maradandó szabályozási eltérés elérése, ezért a referenciajel r1(s) súlyozó függvénye (10.24) alakú, ahol ε kicsi érték, továbbá a mérési zaj súlyozó függvénye (10.25) alakú.

Az kapott új állapotegyenlet:

Ebben az esetben a11, a12,a21 értéke a (10.21)-ben szereplő értékeknek felelnek meg, míg ε hangolási paraméter, jellemzően kicsi érték (0.01). A (10.22)(10.23) egyenleteknek megfelelő összeállítás eléréséhez a kimeneti egyenletet kell megfogalmazni.

Súlyfüggvényekkel kiegészített rendszer
10.2. ábra - Súlyfüggvényekkel kiegészített rendszer


A mért érték a rendszerben a referenciasebesség és a valós sebesség különbsége a mérési zajjal terhelve, a referencia kimenet (a szabályozó ezt a kimenetet minimalizálja) egyrészt a sebességeltérésből (a mérési zaj nélkül), ennek súlyozása ctrack (szintén tervezési paraméter), másrészt a szabályozó jelből áll, ennek együtthatója csig szintén hangolási paraméter.

A csig értéke kicsi, hiszen a szabályozó célja ezen érték véges szinten tartása, de nem szabad azt nulla szint közelébe hoznia. A másik két tervezési paraméter ctrack és ε segítségével a zajérzékenység állítható, ezek azonban egymástól nem állíthatók függetlenül, hiszen ha a rendszer érzékeny a sebességletérésre, akkor érzékeny lesz a mérési zajra is (ez ugyanolyan hibajelet generál). Elődleges szempont volt a jó referenciakövetés, ezért ctrack értéke alapján történt a hangolás. A (10.26)(10.27) egyenletek megfelelőek a szabályozó előállításához, a következő fejezetekben használt szabályozó ezek alapján lett tervezve , valamint az optimálisnál 10%-kal nagyobb értékekkel. A Riccati egyenletek mogoldása a szimulációhoz is használt MATLAB programmal történt. A maradandó szabályozási eltérés eltüntetéséhez ad hoc módszerrel integrátor tag került előállításra a szabályozó átviteli függvényének nullához közeli pólusának origóba történő áthelyezésével. A következő fejezet az eljárás során kapott szabályozó és a rendszer együttes szimulációjával foglalkozik.

Szimuláció

Amint elkészült a követelményeknek megfelelő szabályozó, következhet a következő lépés, az előállított szabályozó működésének elemzése, megfigyelése. A szimulációs eljárás feladatata a későbbiekben implementálásra kerülő szabályozó megfelelő működésének biztosítása. A rendszer szimulációja a MATLAB/Simulink program segítségével történt az ábrának megfelelő összeállítás szerint. A rendszer átfogó képe a 10-4. ábrán látható. A motor modellje a 10-3. ábrán látható és a motor egyenleteinek megfelelő átviteli függvények megvalósításával történik a közös álló kétfázisú koordinátarendszerben.

Aszinkron motor Simulink modellje
10.3. ábra - Aszinkron motor Simulink modellje


A motor bemenetei a stator feszültségek illetve a terhelő nyomaték, a kimenete a forgórész szögsebessége illetve a mért áramok. A szabályozó és motor közötti késleltetésnek a valós rendszerekben a szabályozó feszültséget előállító inverter működése során jelentekező késleltetések miatt van szükség. A fluxus modell biztosítja a mennyiségek elforgatásáshoz szükséges szöget illetve a becsült fluxusértéket, amely a d szabályozási körhöz szükséges.

Rendszer Simulink modelljének felépítése
10.4. ábra - Rendszer Simulink modelljének felépítése


A szabályozó blokkon belül található a két különálló (d, q) szabályozási kör, a koordinátarendszerek közötti transzformációért felelős blokkok, valamint a mérési zajt előállító blokk és limitáló blokkok (pl. A szabályozóból kimenő állórész feszültség értéke nem léphet át egy bizonyos alsó és felső határt, a fluxus értéke nem süllyedhet egy minimális alsó határ alá). A szabályozás igényeinek való minél jobb megfelelés érdekében a q kör szabályozója az 3. fejezetben leírtaknak megfelelően integrátor tagot is tartalmaz, így nem lesz maradandó szabályozási eltérés. A szabályozó bemenete még a referenciasebesség.

Szimulációs eredmények

A szimulációs eljárás során az előző fejezetben bemutatott modell került tesztelésre. A szimuláció során lehetőség nyílik különböző referenciajelek esetén a rendszer várható viselkedését megfigyelni. Az alábbi ábrák a lefutatott szimulációk eredményeit mutatják. A 10-5. ábra a referenciakövetési tulajdonságot szemlélteti, kezdetben az előírt fluxus kialakulásáig nincs sem terhelő nyomaték, sem sebességreferencia, a szimulációhoz használt terhelő nyomaték a mellette látható ábrán található. Jól láthatóan a szabályozó teljesíti a tőle elvárt legalapvetőbb követelményt, vagyis jól követi a megadott referenciát.

Referenciakövetés vizsgálata
10.5. ábra - Referenciakövetés vizsgálata


Szimuláció során használt terhelő nyomaték
10.6. ábra - Szimuláció során használt terhelő nyomaték


A 10-7. ábrán az 1 és 2 s közötti részt kinagyítva jól látható a terhelő nyomaték változásának hatása, a változás pillanatában a sebesség a változás irányától függően elmozdul a stacionárius állapotból valamilyen irányba, amíg a szabályozó a motor nyomatékát a kívánt értékre nem változtatja. A 10-8. ábra mutatja a szabályozás során előálló hibajelet, amely jól láthatóan stacionárius állapotban nullához tart.

Nyomatékváltozás hatása a sebességre
10.7. ábra - Nyomatékváltozás hatása a sebességre


Sebességeltérés értéke
10.8. ábra - Sebességeltérés értéke


A 10-9. ábra és 10-10. ábra a mérési zajt illetve a motor bemenetén megjelenő állórész feszültség a komponensét mutatja, amelyen jól látszik a feszültség amplitúdójának és frekvenciájának változása a sebesség és a terhelés változása függvényében.

Szimuláció során használt mérési zaj
10.9. ábra - Szimuláció során használt mérési zaj


Motor feszültégbemenete
10.10. ábra - Motor feszültégbemenete


A 10-11. ábra és a 10-12. ábra a fluxus modell alapján becsült és a valós fluxus értékeket mutatják. Megállapítható, hogy sikerült a feltevésnek megfelelően a fluxus konstans szinten tartása. Az utolsó három ábra konstans sebességreferencia és gyorsan változó terhelő nyomaték mellett mutatja a sebességet. Ennek fontos szerepe lehet az alkalmazásokban, hiszen a sebesség szinten tartása fontos akkor is, ha a terhelő nyomaték időközben megváltozik. Ez utóbbi szimuláció jól mutatja a rendszer robusztusságát is.

Fluxus modell alapján becsült fluxus
10.11. ábra - Fluxus modell alapján becsült fluxus


Motor modelljéből számított tényleges érték
10.12. ábra - Motor modelljéből számított tényleges érték


Konstans referencia erős zajok esetén
10.13. ábra - Konstans referencia erős zajok esetén


Gyorsan változó nyomaték
10.14. ábra - Gyorsan változó nyomaték


Referencia tartása nyomatékváltozás esetén
10.15. ábra - Referencia tartása nyomatékváltozás esetén


Implementációs lépések

Az implementáció első lépéseit érdemes már az első sikeres szimulációk után megkezdeni.A MATLAB/ Simulink modellek készítésével párhuzamosan történik ezejn modellekből DSP processzoron futtatható kód generálása. A MATLAB/ Real Time Workshop Interfészen keresztül lehetőség nyílik a Simulink modellekből közvetlenül automatikus kódgenerálásra. A kód futtatása egy ISA foglalatos dSPACE DS1102-es kártyán történik, a fontos funkciók kezelése (kód futtatása, letöltése, adatok kirajzolása, paraméterek változtatása) a Controldesk nevű programmal lehetséges. A 10-16. ábrán látható a program kód futtatása és mérési eredmények kirajzolása közben, továbbá láthatók a paraméterek változtatására szolgáló gombok. Kezdeti lépésekben a szabályozó viselkedésének vizsgálata a motor elvi modelljével együtt történik (a MATLAB-ban használttal megegyező), majd a követelményeknek megfelelő eredmények elérése esetén a kártya hardverét kezelő blokkok felhasználásával (10-17. ábra) a jól működő Simulink modellben egyszerűen kicserélhető a motor elvi modellje a valós

Mérés DS1102 DSP kártyával
10.16. ábra - Mérés DS1102 DSP kártyával


DS1102 Simulink blokkok
10.17. ábra - DS1102 Simulink blokkok


motor használatát lehetővé tevő blokkal így ezután már a kártya a valóságban is képes működtetni a motort a 10-18. ábra szerinti összeállításnak megfelelően. A blokkok kicserélése során a kártya ki- és bemeneteit kezelő blokkok és a PC-s kártya hardverfunkcióit kezelő egyéb blokkok kerülnek felhasználásra (megszakítások kezelése, stb). A 10-18. ábrának megfelelően a PC-s kártya közvetlenül egy interfész kártyával áll kapcsolatban, amely fogadja a PC-ből érkező jeleket és ezek alapján előállítja a PWM jeleket az inverter számára, amely a motor tápellátását biztosítja, valamint a mérési eredmények is ezen a kártyán keresztül jutnak vissza a DSP-re.

Aszinkron motor szabályozása DS1102-vel
10.18. ábra - Aszinkron motor szabályozása DS1102-vel


A Controldesk program fontos előnye, hogy a DSP-n futó programban a paraméterek on-line állíthatóak, így egyszerűvé válik az identifikált modell paraméterei változása hatásának vizsgálata a szabályozásra, valamint könnyűvé válik a paraméter beállítások közötti váltás is. Az implementáláskor feltétlenül elengedhetetlen a késleltetések szerepének figyelembe vétele, valamint a kártya és az inverter eltérő mintavételezési idejéből eredő hibák kiküszöbölése, amelyek befolyásolhatják a szabályozás minőségét (az alatt az idő alatt, amíg egy szabályozási ciklus lezajlik a kártyán, addig az inverter többször kapcsol, így szükséges az előállított szabályozó jeleket memóriában tárolni a következő ciklusig, majd azt egy hardveres megszakítás során felülírni).

Konklúziók

A tervezett szabályozó sikeresen alkalmazva lett a háromfázisú aszinkronmotorhoz. A szimulációk során a komplett rendszer jó eredményeket mutat, teljesíti a tőle elvárt követelményeket (jó referenciakövetés, zavarok hatásainak csökkentése), zajos környezetben robusztus viselkedést mutat. A jó dinamikus viselkedés és egyszerűség alkalmassá teszik valós idejű alkalmazásokban történő használatra. Egy megfelelően beállított paraméterbecslő egység segítségével a rendszer tudása tovább bővíthető, hiszen ekkor nincs szükség a sebesség mérésére, helyette a becslő által szolgáltatott értékek használhatóak a szabályozás során.

Irodalmi hivatkozások BIBLIOGRAPHY \l 1038

Irodalmi hivatkozások

[1] Utkin, V. I.. Variable Structure Control Optimization. 1992. Springer-Verlag.

[2] Young, K. D.. Controller Design for Manipulator using Theory of Variable Structure Systems. Vol SMC-8. 101-109. 1978. IEEE Trans. on System, Man, and Cybernetics.

[3] Harashima, F.; Ueshiba, T.; Hashimoto H.. 2nd Eur. Conf. On Power Electronics, Proc., pp 251-256. Grenoble. . Sliding Mode Control for Robotic Manipulators". 1987.

[4] Hashimoto H.; Maruyama, K.; Harashima, F.: ". Microprocessor Based Robot Manipulator Control with Sliding Mode". 34. 1. 11-18. 1987. IEEE Trans. On Industrial Electronics.

[5] Sabanovics, A.; Izosimov, D. B.. Application of Sliding Modes to Induction Motor. 17. 1. 4149. 1981. IEEE Trans. On Industrial Appl..

[6] Vittek, J., Dodds, S. J.. EDIS – Publishing Centre of Zilina University, ISBN 80-8070-087-7. Zilina. Forced Dynamics Control of Electric Drive. 2003.

[7] Utkin, V.I.; „Sabanovic, A.. Sliding modes applications in power electronics and motion control systems. Volume of tutorials. TU22 - TU31. 1999. Proceedings of the IEEE International Symposium Industrial Electronics.

[8] Sabanovic, A. The 29th Annual Conference of the IEEE Industrial Electronics Society, IECON '03, Vol. 1, Page(s):997 - 1002. . Sliding modes in power electronics and motion control systems. 2003.

[9] Siew-Chong Tan; Lai, Y.M.; Tse, C.K.. 37th IEEE Power Electronics Specialists Conference, PESC '06. Page(s):1 - 7. . An Evaluation of the Practicality of Sliding Mode Controllers in DC-DC Converters and Their General Design Issues. 2006.

[10] P. Korondi, L. Nagy, G. Németh. EPE'91 4th European Conference on PowerElectronics, Proceedings vol. 3. pp. 3-180-184. Firenze. . Control of a Three Phase UPS Inverter with Unballanced and Nonlinear Load. 1991.

[11] P. Korondi, H. Hashimoto. Springer-Verlag. . Park Vector Based Sliding Mode Control K.D.Young, Ü. Özgüner (editors) Variable Structure System, Robust and Nonlinear Control.ISBN: 1-85233-197-6. 197. 6. 1999. Springer-Verlag.

[12] Slotine,J.J.. Sliding Controller Design for Non-Linear Systems. 40. 2. 421-434. 1984. Int. Journal of Control.

[13] Sabanovic A., N. Sabanovic. K. Jezernik, K. Wada. The Third Worksop on Variable Structure Systems and Lyaponov Design . Napoly, Italy. Chattering Free Sliding Modes. 1994.

[14] Korondi, H.Hashimoto, V.Utkin . Direct Torsion Control of Flexible Shaft based on an Observer Based Discrete-time Sliding Mode. 2. 291-296. 1998. IEEE Trans. on Industrial Electronics.

[15] Boiko, I.; Fridman. L Frequency Domain Input–Output Analysis of Sliding-Mode Observers. 51. 11. 1798-1803. 2006. IEEE Transactions on Automatic Control.

[16] Comanescu, M.; Xu, L.. Sliding-mode MRAS speed estimators for sensorless vector control of induction Machine. 53. 1. 146 – 153 . 2005. IEEE Transactions on Industrial Electronics.

[17] P. Korondi, J-X. Xu, H. Hashimoto. 8th Conference on Power Electronics and Motion Control Vol. 5, pp.5-254-5-259. . . Sector Sliding Mode Controller for Motion Control. 1998.

[18] Furuta.K. , Y.Pan. Variable structure control with sliding sector. 36. 211-228. 2000. Automatica.

[19] Suzuki S, Pan Y, Furuta K. VS-control with time-varying sliding sector - Design and application to pendulum. 6. 3. 307-316. 2004. ASIAN JOURNAL OF CONTROL.

[20] Korondi Péter. Tensor Product Model Transformation-based Sliding Surface Design. 3. 4. 23-36. 2006. Acta Polytechnica Hungarica.

[21] Vadim Utkin, Hoon Lee. The Chattering Analysis. 2006. EPE-PEMC Proceedings 36.

[22] Furuta, K.. Sliding Mode Control of a Discretee System. 14. 145-152. 1990. System Control Letters.

[23] Drakunov, S. V.; Utkin, V. I.. Sliding Mode in Dynamics Systems. 55. 1029-1037. 1992. International Journal of Control.

[24] Koshkouei, A.J.; Zinober, A.S.I.. Robust frequency shaping sliding mode control” Control Theory and Applications. 147. 3. 312 – 320. 2000. IEE Proceedings.

[25] HASHIMOTO, H., and KONNO, Y.. ‘Sliding surface design in thefrequency domain’, in ‘Variable Structure and Lyapunov control’,ZINOBER, A.S.I. (Ed.) (), . 75-84. 1994. Springer-Verlag, Berlin.

[26] P.Korondi, H.Hashimoto. Sliding Mode Design for Motion Control. 16. 2000.

[27] Koshkouei, A.J.; Zinober, A.S.I.. Proceedings of the 39th IEEE Conference on Decision and Control, pp. 4765 – 4770. . Adaptive backstepping control of nonlinear systems with unmatched uncertainty. 5. 2000 .

[28] Kaynak, O.; Erbatur, K.; Ertugnrl, M.. The fusion of computationally intelligent methodologies and sliding-mode control-A survey. 48. 1. 4 – 17. 2001. IEEE Transactions on Industrial Electronics.

[29] Lin, F.-J.; Shen, P.. H Robust Fuzzy Neural Network Sliding-Mode Control for Two. 53. 4. 1209 – 1225 . 2006. Axis Motion Control System IEEE Transactions on Industrial Electronics.

[30] D. C. Biles And P. A. Binding. On Carath_Eodory's Conditions For The Initial Value Problem. 125. 5. 1371{1376 S 0002-9939(97)03942-7 . 1997. Proceedings Of The American Mathematical Society.

[31] Filippov, A.G.. 1st IFAC Congr., pp. 923-925. Moscow. . Application of the Theory of Differential Equations with Discontinuous Right-hand Sides to Non-linear Problems in Automatic Control. 1960.

[32] Filippov, A.G.. Differential Equations with Discontinuous Right-hand Side. 42. 199-231. 1964. Ann. Math Soc. Transl..

[33] Satoshi Suzuki, Yaodong Pan, Katsuhisa Furuta, and Shoshiro Hatakeyama. Invariant Sliding Sector for Variable Structure Control. 7. 2. 124-134. 2005. Asian Journal of Control.

[34] Xu JX, Lee TH, Wang M. Design of variable structure controllers with continuous switching control. 65. 3. 409-431. 1996. INTERNATIONAL JOURNAL OF CONTROL.

[35] Young, K. D.; Kokotovič, P. V.; Utkin, V. I.. A Singular Perturbation Analysis of High-Gain Feedback Systems. AC-22. 6. 931-938. 1977. IEEE Trans. on Automatic Control.

[36] K. Saito, K. Kamiyama, T. Ohmae, és T. Matsuda. A microprocessor-controlled speed regulator with instantaneous speed estimation for motor drives. 35. 1. 95-99. Feb. 1988. IEEE Trans. Ind. Electron..

[37] C. Chan, S. Hua, és Z. Hong-Yue. Application of fully decoupled parity equation in fault detection and identification of dcmotors. 53. 4. 1277-1284. June 2006. IEEE Trans. Ind. Electron..

[38] F. Betin, A. Sivert, A. Yazidi, és G.-A. Capolino. Determination of scaling factors for fuzzy logic control using the sliding-mode approach: Application to control of a dc machine drive. 54. 1. 296-309. Feb. 2007. IEEE Trans. Ind. Electron..

[39] M. Boussak és K. Jarray. A high-performance sensorless indirect stator flux orientation control of industion motor drive. 53. 1. 614-623. Feb. 2006. IEEE Trans. Ind. Electron..

[40] J. Moreno, M. Ortuzar, és J. Dixon. Energy-management system for a hybrid electric vehicle, using ultracapacitors and neural networks. 53. 2. 614-623. Apr. 2006. IEEE Trans. Ind. Electron..

[41] R.-E. Precup, S. Preitl, és P. Korondi. Fuzzy controllers with maximum sensitivity for servosystems. 54. 3. 1298-1310. Apr. 2007. IEEE Trans. Ind. Electron..

[42] V. Utkin és K. Young. Methods for constructing discountnuous planes in multidimensional variable structure systems. 31. 10. 1466-1470. Oct. 1978. Automat. Remote Control.

[43] K. Abidi és A. Sabanovic. Sliding-mode control for high precision motion of a piezostage. 54. 1. 629-637. Feb. 2007. IEEE Trans. Ind. Electron..

[44] F.-J. Lin és P.-H. Shen. Robust fuzzy neural network slidingmode control for two-axis motion control system. 53. 4. 1209-1225. June 2006. IEEE Trans. Ind. Electron..

[45] C.-L. Hwang, L.-J. Chang, és Y.-S. Yu. Network-based fuzzy decentralized sliding-mode control for cat-like mobile robots. 54. 1. 574-585. Feb. 2007. IEEE Trans. Ind. Electron..

[46] A. G. Filippov. 1st IFAC Congress. . Application of the theory of differential equations with discontinuous right-hand sides to non-linear problems in autimatic control. 923-925. 1960.

[47] A. G. Filippov. Differential equations with discontinuous right-hand side. 42. 199-231. 1964. Ann. Math Soc. Transl..

[48] Van, Doren és Vance J.. Control Engineering. Red Business Information. Loop Tuning Fundamentals. July 1, 2003.

[49] Imecs, Mária. A 2. Báthory-Brassai Konferencia - Nemzetközi Interdiszciplináris Gazdasági, Műszaki, és Történelmi Konferencia. Balatonlelle. . Villamos Gépek Egységes Szabályozási Elve A Térfázor Elmélet Alapján. 2011.

[50] Kovács, K. P. és Rácz, I.. Akadémiai Kiadó. Váltakozóáramú gépek tranziens folyamatai. 40-42. 1954.

[51] Kelemen Árpád, Imecs. OMIKK Kiadó. Vector Control of AC Drives. 1991.

[52] Gyula, Retter. Akadémiai Kiadó. Matrix and space-phasor theory of electrical machines. 1987.

[53] Sándor, Dr.. Tankönyv Kiadó. Automatizált villamos hajtások I.. 1989.

[54] De Doncker, Rik,. Springer-Verlag. Advanced Electrical Drives. 2011.

[55] al., B.. Springer-Verlag. Vector Control of Induction Machines, Power Systems. 2012.

[56] Bettini, A.,. Comparison of different schemes without shaft sensors for field oriented control drives. IEEE Press. 1994. Sensorless control of AC motor drives.

[57] Ambrožič, V.,. 5th International Simposium on New Technologies (SONT). Poreč, Croatia. . Sensorless Control of Induction Machine - A Possible Approach. 1995.

[58] Conroy, B.. 6th European Conference on Power Electronics and Applications (EPE). Sevilla, Spain. . Application of Encoderless Vector Control Techniques in a Medium Performance Induction Motor Drive. 1995.

[59] vas, Peter. Oxford University Press. Sensorless vector and direct torque control. 1998.

[60] Kalman, Rudolf. A New Approach to Linear Filtering and Prediction Problems. 1960. Transaction of the ASME—Journal of Basic Engineering.

[61] Skogestad, Sigurd és Postlethwaite, Ian. John Wiley & Sons. Chichester. Multivariable Feedback Control Analysis and Design. 2005.

[62] Simon, Dan. John Wiley & Sons. Cleveland State University. Optimal State Estimation, Kalman, H∞, and Nonlinear Approaches. 2006.

[63] Fodor D., Vajda. Extended Kalman filter based speed sensorless ac motor control with parameter estimation. 2002. EPE – PEMC Dubrovnik.

[64] Burl, Jeffrey. Addison-Wesley. Menlo Park. Linear Optimal Control. 1999.