PID beállítás
(szervo szabályzó ráhangolása a motorra)

Elmélet:
A szervo vezérlések működése teljes mértékben különböznek a léptetőmotoros vezérlésektől. Maga a szabályzás elvei és a lezajlódó folyamatok összetettek, ezért itt csak tömören érdemes vele foglakozni (felhasználói szinten). 

Encoder illesztés:

A DC motoroknak nincsen előre meghatározott léptetési pozíciójuk mint a léptetőmotoroknak, ezt a funkciót teljesen a vezérlés valósítja meg, a motorra szerelt encoder segítségével. Ez folyamatos és dinamikus (kimozdítása esetén vissza fog állni) pozícióban tartást jelent.
A motor felbontását alapvetően az encoder felbontása határozza meg. Ezt a vezérlés bizonyos mértékben fölfele és lefele is módosíthatja.
A DSP az Encoder-t kétféle üzemmódban tudja használni:

- 2×-es (duplázó) üzemmódban az encoder alapfelbontását (vonalainak számát) megduplázva,
- 4×-es (négyszerező) üzemmódban az encoder alapfelbontását meg négyszerezve használja.

Javasolt a 4×-ező mód, a pontosabb pozíció követés érdekében! Nagyon nagy Encoder alapfelbontás (>2000) esetén a 2×-es mód a javasolt.
Ezen kívül a DSP képes a Step jel többszörözésére is („Step multiplier” regiszterén keresztül, 1× - 10×)!
Erre a CNC szoftverek miatt van szükség, mivel a szoftverek (általában az LPT porton keresztül) korlátozott frekvenciájú Step jel kiadására képesek! Nagy felbontású Encoderek esetén ez túl alacsony max. fordulatszámot eredményezne. 

Az elérhető maximális fordulatszám a következő képlettel számítható:

fmax.=((FKerner×Step multiplier)/(Efelbontás×Eüzemmód ))×60    [fordulat/perc]

fmax.=elérhető maximális motor fordulatszám  [1/min],
FKerner= a CNC szoftver maximális léptetési frekvenciája [Hz],
Step multiplier= a DSP Step szorzó belső regiszter értéke,
Efelbontás= az encoder alapfelbontása [vonalainak száma, PPR],
Eüzemmód= a DSP „Encoder mode” belső regiszter értéke [2 vagy 4],
×60 = percre átszámítás.

Fontos:
Mivel az egész rendszer visszacsatolása teljes mértékben az Encoderen keresztül történik, annak felbontása minden egyéb dinamikai jellemzőkre (túllövések, lengési hajlam, stb.) is kihatással van! Alkalmazzuk a lehető legnagyobb felbontásokat a minél finomabb és precízebb hajtásminőség eléréséhez!

Pozícióhű követés; lengések; PID:
Egy Step/Dir rendszerben mivel a vezérlés előre nem tudja hova kell mennie, bizonyos időkéséssel követi a kiadott mozgási utasításokat. Ez egyenletes mozgások esetén rendkívül kicsi és így elhanyagolható. Durva sebességváltozások esetén (pl irányváltásokkor) ez már tetemesebb. Ez a késés a mechanikai tehetetlenségekből (lendületekből) és motor+elektronika reakcióidejéből adódik.

 
(erősen stilizált mozgási pálya)

A fenti ábrán egy erősen stilizált mozgási pálya eltérést ábrázol. A piros szaggatott vonal képviseli a kívánt mozgási görbét (gyorsítások és lassítások nélküli irányváltásokkal), a kék vonal a tényleges mechanikai utat ábrázolja. Látható, hogy a sebességek változása környékén a szabályzás csak bizonyos lengésekkel és eltérésekkel képes követni. Ennek a problémának lekezelésére született az u.n. PID szabályzási eljárás, melyet teljes egészében tartalmaz a DSP!

PID:
A PID szabályzás próbálja a kívánt pályán tartani a mechanikát. Ez három fő komponens eredőjéből számított motorgerjesztés révén valósul meg. E három komponens nevéből származik a PID rövidítés.

P = Proportional (arányos tag);
I = Integral (hibaösszegző tag);
D = Derival (gyors változások sebességére reagáló tag).

P = arányos tag. A kért és a tényleges pozíció eltéréssel arányosan emeli a motor gerjesztését (előjel helyesen). Mértéke a motor dinamikáját befolyásolja (milyen erővel reagáljon a növekvő hibákra).

I = hibaösszegző. Ha pici hiba maradt a pozícióban, akkor idővel ezeket összeadva, felerősíti, és a motort berántja a pontos (kért) pozícióba. Pici hibák megszüntetésére szolgál. Reakciója viszonylag lassú.

D = gyors reakciójú tag. Gyors, ugrásszerű változásokra adott hirtelen reakció, extra dinamikájú gerjesztés. A változás sebességével arányosan növeli, vagy csökkenti a gerjesztést, ezzel fokozva a motor reakcióját illetve lengés csillapítását (negatív reakciót). Elsősorban a rendszer lengéscsillapításáért (stabilitásáért) fele. Csak változó sebességeknél működik és a változások sebességével arányos.


(tranziens görbe)

A fenti görbe egy gyors (ugrásszerű) pozícióváltozást igénylő pályára adott mechanikai válaszgörbét ábrázol (mechanikai beállást). A fenti állapot egy nagysebességgel közeledő motort mutat a 0-pontba zuhanva, majd a mechanika lengésekkel megáll, és végül beáll 0-lára. Megfigyelhető a PID szabályzó egyes beavatkozásai.

P adja az alapgerjesztést mely az eltérés mértékével arányosan nő (alapnyomatékot a motornak). D adja a beesés max. szögét (csillapítását), mely a lengés csillapításért felel. Minél nagyobb a szög (kisebb a D tag hatása), annál több és nagyobb túllövés (a+b) mérhető, és annál tovább tart a rendszer megnyugvása. I tag felel a maradék pozíció hiba kijavításáért (idővel felerősítve azokat annyira, hogy a motort behúzza a kért pozícióba). Nagy jelentőséggel bír a pályahű mozgatás megvalósításában!

 A PID tagok hatásai:

 - P tag: emelésével fokozódik a motor pálya hű mozgatása, nő a motor nyomatéka.
- Kevés P tag : nagy pozíció eltérési hibák, lomha reagálások, gyenge motor.
- Sok P tag: túlreagáló, lengő rendszer (oszcilláció), rángatózó motor, irányváltások után lengési hajlam.

 - I tag emelésével szigorodik a pozíciókövetés, keményebben tartja a 0 hibaszintet. Követési hiba esetén gyorsabban és erősebben akar pozícióba állni.
- Kevés I tag: maradék hiba nem szűnik meg (nem pálya hű követés, irányválások után maradékhiba kialakulása és fennmaradása).
- Sok I tag: belengő, oszcilláló mechanika (túlkompenzálás), vadul rángatózó, lengő motor. Nem szűnő, erősödő vad oszcilláció.

 - D tag emelésével a gyorsítások dinamikusabbak lesznek, a lassítások jobban csillapítva történnek. Növekszik a rendszer stabilitása (lengés csillapítás), viszont a reakció idők is megnőnek.
- Kevés D tag: oszcilláló (lengő) rendszer, lassan vagy egyáltalán nem csillapodó lengések az irányváltások után.
- Sok D tag: túlfékezett (csillapított), merev motorhajtás (erős melegedés a motorban és lomha reagálás, morgó motorhangok).

Motor beszabályozásánál mindhárom tagot kell együttesen szabályozni. A három tag együttese határozza meg a szabályzás jóságát, ezért lehet több ponton (összállásban is) jó beszabályzást találni!

PID szabályzó behangolása:

Mivel a jelenségek szabad szemmel nehezen, vagy egyáltalán nem követhetőek, ezért a szabályzó precíz behangolásához használni kell a beépített soros Monitort (Quantum Sentinel vagy Hyperterminal szoftverekkel)!
Megismerése feltétlenül szükséges, ezért előtte kérem olvassa át alaposan ezek leírásait!!!


(karakteres hibaszint analízis, Hyperterminal segítségével)


(grafikus analízis, Quantum Sentinel segítségével)

A PID szabályzót mindig teljes mechanikával együtt kell beszabályozni (annak fékező ellenállásával és tömegével), lehetőleg a használni kívánt (pl. Mach3) CNC vezérlőprogrammal működtetve (az ott beállított sebességekkel és gyorsulásokkal)! A monitort és a Mach3-mat egyszerre futtatva, tengelyenként haladva kell végezni a beállítást.
A Mach3 CNC vezérlő program alapismerete szükséges a hangoláshoz!

Hangolás előtt a Mach3-mat be kell konfigurálni, valamint a CNC gép alapfelbontásait és sebesség/gyorsulásait be kell állítani! A gyorsítási adatoknál figyelembe kell venni a motor adatit is, mivel a motor alap gyorsíthatóságától (az áttételezést is figyelembe véve), nagyobb gyorsítási beállítások hamis hibaszinteket fog eredményezni! Érdemes a gyorsítási értékeket alulról - felfelé haladva tesztelgetni!
A hangolás alatt a mechanika oda-vissza mozgásokat fog végezni, és e mozgásokat mérve (Monitorral) történik a hangolás. Cél az, hogy a mechanika minél kisebb hibával kövesse a PC által megkívánt mozgási pályát!
A mozgási pályát egy egyszerű G-kód programocska fogja végezni, amit majd a Mach3-ba kell betölteni és különböző sebességekkel, és gyorsulásokkal kell végrehajtatni.

Mozgást generáló kisprogram (G-kód):

G90G80G49
F2000
G1 X0.0000 Y0.0000 Z0.0000 A0.0000
M98 P1234 L50
G1 X0.0000 Y0.0000 Z0.0000 A0.0000
M5M30
O1234
G1 X0.0000 Y0.0000 Z0.0000 A0.0000
G1 X700.0000 Y00.0000 Z0.0000 A0.0000
M99

A program F sorában (itt F2000) meghatározott sebességgel (itt 2000 mm/perc) elmozgatja a meghatározott tengelyt (itt az X-et) 50×, 0 és 700 mm között, oda-vissza (ciklikus, subrutin hívásokat hajt végre). A jelzett sorokat a teszt folyamán, időnként szerkeszteni szükséges. Az F sort (itt F2000) ha a sebességet szeretnénk fokozni (mm/percben), a G1 X700.0000 ... sort pedig ha a többi tengelyt szeretnénk mozgatni (pl. a Z-re így néz ki: G1 X00.0000 Y00.0000 Z700.0000 A0.0000 )! Ha az elmozdulás mértéke (itt 700mm) nem megfelelő, ezt bármire át lehet írni (mm-ben értendő)!

A szerkesztéséhez a Mach3 felülete is kínál lehetőséget (a Windows Jegyzettömb-jén keresztül).

Hangolás menete:

Fontos!
Tesztelés előtt győződjünk meg az encoder helyes bekötése felöl! Fordított (A és B csatorna) bekötése esetén a motor elszalad egyik irányba, teljes sebességgel! Ezt úgy ellenőrizhetjük, hogy szétkapcsolt motornál, ha bekapcsoljuk és megpróbáljuk kimozdítani a tengelyét, nem szabad felpörögnie! Fordított bekötés esetén a motor két végét cseréljük meg!

1. Állítsuk be a belső regisztereket (Encoder mode és a Step multiplier)! Ez egyben meghatározza az elérhető felbontás mértékét, amit a Mach3-ba be kell állítani (lásd fenti képletet), az adott tengelyre vonatkoztatva! Az Encoder mode megváltoztatása esetén a Vezérlőt újra kell indítani!

2. Be kell állítani a motor megengedett maximális csúcsáramához az áramkorlátot (Limit trimmer).

3. A hangolás idejére egyenlőre ne kössük össze a védelmi kioldást (FAULT kimenetet)!

4. Be kell állítani a Mach3-ason a tengelyek felbontását, sebességét (egyenlőre min. 15000 mm/perc legyen) és a gyorsulásokat (egyenlőre 100 mm/s2 legyen)! A gyorsulást és esetleg a max. sebességet a teszt folyamán még változtatni szükséges lesz!

5. Be kell tölteni a G-kódot a Mach3-ba és a szerkesztésével be kell állítani az elmozdulást a tesztelni kívánt tengelyre (ha pl. Y-ont akarjuk tesztelni, akkor az Y koordináta mutasson 700.0000-ra, a többi 00.0000 legyen)!

6. Állítsuk minimumra a három PID trimmert (a csúszka a GND felé legyen letekerve)! Majd a P és a D trimmerét emeljük fel kb. 1/3-ad állásba!

7. A gép minden tengelyét állítsuk középállásba és győződjünk meg róla, hogy innét van bőségesen 700 mm mindkét irányba (ha nincs, akkor a teszt G-kódban vegyük lejjebb az elmozdulás mértékét)!

8. Indítsuk el a programokat és a tesztet! Figyeljük meg a mozgást és ha vad lengésbe kezdene a rendszer, állítsunk a P tagon!

9. A Monitor programmal mérjük folyamatos módban a lemaradásokat és a P tag szabályzásával állítsunk be 0 - 10 Step közötti késést (az egyenletes szakaszban mérve)!

10. Ha nagyon beleng az irányváltásokkor, akkor emeljünk addig a D tagon, míg nem válik kezelhetővé a folyamat (túl erős nem ideális)!

11. Az I tag finom emelésével állítsuk be a rendszert úgy, hogy az egyenletes mozgásokkor a szabályzó kb. 0-3 hibára kihozza a hibát (enyhe lengéssel a 0 környékén)! Csak óvatosan, mert túladagolt I tag, vad lengésbe viheti a rendszert! Ha ez bekövetkezne, kapcsoljuk ki a motort és vegyünk visszább az I tagból, majd folytassuk a hangolást!

12. Ezen a Mach beállításon (lassú gyorsításon) egy jól behangolt Vezérlő minden ponton (irányváltásokkor is) 0 hibával (max. ±3 Step) dolgozik! Addig végezzük a hangolást (P-I-D állításokkal), mígnem elérjük ezt az állapotot! Ha a mechanika lüktet, szorul, üt, akkor kisé rosszabb hibával is megelégedhetünk!

13. Ellenőrizzük több sebességen is a hibát (pl. 10, 100, 500, 1000, 3000, 4000 mm/perc, stb.)! A sebesség növelésével, az irányváltás pillanatában kicsit megugorhat a hiba, de ezt a Vezérlőnek gyorsan javítania kell (a P-tag esetleg az I-tag emelésével javítható). Fokozódó lengés esetén emelhető a D-tag is (de ilyenkor ismét ellenőrizzük alacsonyabb sebességeknél is a rendszert)!

14. Nem szabad semmiből sem túladagolni semmit! Épp ott kell megállni a trimmerek emelésével, ahol a hiba épp megszűnik! Ellenkező esetben ideges, túlreagáló szabályzást fogunk kapni.

15. Ha minden ok, emelhetünk a Mach3 motorgyorsítás értékén és ellenőrizzük a váltáskor fellépő hibacsúcsokat.

16. Az a legjobb gyorsulás beállítás, ahol még képes a Vezérlő 0 környékén (max. ±3 Step) tartani a hibát fékezés és gyorsítások alatt is! Ha ezt megtaláltuk, akkor erre a gyorsulásra képes a rendszerünk! Gyorsjáratban megengedet a rövid (impulzusszerű) hibajel akár 50 Step-es értékkel is! Amennyiben a hibát az I-tag még képes kikompenzálni a lineáris szakaszban, használható ez a gyorsulás is (csak gyorsjáratban)! Általában a hibaszint beállítható ± 3 Step közötti értékre!

17. Stressz vizsgálat:
Ehhez le kell állítani a Mach3-ast és a Vezérlő Test gombját kell megnyomni! Akkor jó, ha oszcillálás nélkül ugrik és áll be a motor! Fennmaradó oszcilláció esetén vagy az I és/vagy P tagot kell csökkenteni, vagy a D tagon emelni! Ha szükséges volt az állítás, akkor a fenti sebességek ellenőrzése ismét fontossá válik!


(vizsgálat Test gombbal)

Vizsgálatához ideális, a Quantum Sentinel grafikus megjelenítése Triger on módban!

18. Pozícióban tartási vizsgálat:
A Monitor figyelve, leállított Mach3 mellett a hibajelnek 0 (+-1) -ben kell állnia! Ezután fogjuk meg a motor tengelyét kézzel, és próbáljuk meg kimozdítani! A motornak nyomatéka erejéig vissza kell kényszerítenie a tengelyt 0 pontba! Ez szépen nyomon követhető a Monitor adatain is! A pozíció tartás erőségét főleg az I-tag emelésével, kismértékben a P-tag emelésével lehet fokozni. Állításuk esetén ismét mozgási állapotban is ellenőrizni kell!
Álló helyzetben morgó, remegő motornál az Antitremb(l)e regiszter emelésével lehet a rezgést megszüntetni. A minél jobb pozícióban tartáshoz, ezt a regisztert lehetőleg alacsony értéken tartsuk (1-2 javasolt)!

19. Ha minden pontban kielégítő eredményeket mérünk, a beállítás sikeres volt.

További tippek:

A precízebb beállítás érdekében a Quantum Sentinel szoftver használata javasolt (Triger off módban). A program erőforrás igénye miatt külső PC használata szükséges (ellenkező esetben a Mach3 impulzusai hibásak lesznek)!
Amennyiben a G-kódban magasabb sebességet állítunk be mint a Mach3-ban megadott tengelysebesség, a program visszafogja a motort (ilyenkor a Mach3 motor tuningnál feljebb kell venni a tengely max. sebességét)!
Egy lengésbe került motort a végállás kapcsoló nem tudja megállítani, mivel a kapcsoló a PC-n keresztül működik!
Az Stop kiépítésével a Vezérlőt minden körülmények között megállíthatjuk! A Vezérlőt kihozni Stop-ból, csak újraindítással lehet!
Gyengébb minőségű CNC szoftverek (pl. KCam4) Step impulzusai nem elég egyenletesek. Ezek lengéseket generálhatnak a szervo mozgásokban! Ezeket ne használjuk!
Ha az irányváltásokkor fellépő lengéseket már nem tudjuk lejjebb szorítani, akkor lassabb gyorsításokat kell alkalmazni (a Mach3 Motor tuning beállításainál).