Driver k servu

Uživatelský avatar
robokop
Site Admin
Příspěvky: 22400
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

5. 10. 2009, 2:27

dodavam zmereno z encoderu serva
tedy ty mm jsou teoreticky prepocteny
tedy chtel jsem tim jen rici ze odchylka je nepodstatna

btw kdyz jsou ty serva nasponovany tak zpivaji stejne jako krokace ale nerad to delam a nikdy to nebylo treba protoze i kdyz je necham mekci tak to chodi v nemeritelnych odchylkach viz opravnena poznamka vyse
Naposledy upravil(a) robokop dne 5. 10. 2009, 2:32, celkem upraveno 1 x.
Vsechna prava na chyby vyhrazena (E)
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

5. 10. 2009, 2:31

dslav píše:Stojí na nulu nebo jezdí na nulu?
Máš nìjaký výstup požadované a skuteèné pozice?
Pøi øízení STEP/DIR je nula nesmysl. Kduž udìláš krok ta nìjakou dobu trvá než na to driver zareaguje. Minimálnì po tu dobu je tam chyba krok.
toto je prave chyba "sklzu" pri dir/step nie je mozne vlastne tuto vec odstranit .. pri PID s feed forward je to ale odstranitelne a celkova chyba polohy je potom uz len na urovni ktoru zvlada "vytunovanie" serva. Aktualne mi kolise servo max o +-1 na enkoderi len v case ked brzdi/zrychluje. Ziial informacie mam zatial z nezatazeneho serva (t.j. bez obrabania, len masina sama o sebe).
Uživatelský avatar
dslav
Příspěvky: 208
Registrován: 18. 12. 2006, 4:07
Bydliště: Hošťálková - Vsetín
Kontaktovat uživatele:

5. 10. 2009, 2:58

Na první stránce tohoto vlákna mám graf kde je ta chyba serva krásně vidět. Mohli by jste poskytnout podobný graf při rychlosti +-1m/min.
1. Kde nestačí síla použij rozum.
2. Kde nestačí rozum použij sílu.

Dušan Slavětínský

http://www.valachnet.cz/~slavetinskyd/MegaCNC" onclick="window.open(this.href);return false;
http://www.valachnet.cz/~slavetinskyd/RcMix" onclick="window.open(this.href);return false;
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

6. 10. 2009, 7:42

dslav píše:Na první stránce tohoto vlákna mám graf kde je ta chyba serva krásnì vidìt. Mohli by jste poskytnout podobný graf pøi rychlosti +-1m/min.
Pokusim sa cez weekend toto vydolovat do grafickej podoby.

Aktualny stav mam overeny trochu inac ako grafom .. v EMC je moznost nastavit "presnost" serva .. V konfigu je premenna FERROR .. ak ju kontroler (kontroler = EMC + enkoder + v mojom pripade menic i ked tu moze byt napr. pri DC serve len mostik motora) nedodrzi, EMC shutdownne driver - zodpoveda emergency stop (ono je to komplikovanejsie .. je tam este premenna MIN_FERROR .. tato umoznuje definovat rozlicnu chybu pri pomalom a rychlom behu).

Pokial FERROR nastavim tak, aby zodpovedal rozliseniu enkodera, EMC mi shutdownne hned pri rozbehu ... ak nastavim FERROR na 2x rozlisenie enkodera bezim. Z toho usudzujem, ze sa nemozem mylit o viac ako +-1 inac by doslo k shutdownu. Pri velmi pomalej akceleracii aj nastavenie FERROR takmer na urovni rozlisenia enkodera to tiez neshutdownuje. Ladenim akceleracie a FERROR sa tocim o tom, ze cim xcem lepsiu akceleraciu tym musim pripustit vacsiu chybu v FERROR.

Zistil som, ze v principe musim vytunovat nie len PID ale aj maximalnu povolenu akcereraciu pre konkretnu os aby sa mi to spravalo bez prekmitov. Ak totiz pozadujem od serva aby zrychlilo rychlejsie ako samo o sebe dokaze (nema vacsi krutak), je zrejme, ze dojde k velkej odchylke. Normalne by to nemalo vadit, ale ako robokop popisoval meranie chyb ( kruh, stvorec, stvorec pootoceny o 45 stupnov) tam by sa to prejavilo. BTW.

Pri systemoch dir/step na serve EMC pracuje so servom ako s krokacom a vyznam premennych FERROR a MIN_FERROR je nezaujimavy (aj ked, pri netrivialnych kinematikach sa to uplatnuje, ked nahodou EMC nedokaze sledovat niektory z jointov tak ak to prekroci FERROR dojde k shutdownu).

Este stale nemam jasno ako najlepsie PID EMC-cka vytunovat v spojeni s hodnotami akceleracie, maximalnej rychlosti atd. Servo na com to skusam je 550W async motor hnany menicom ktory dostava pozadovanu frekvenciu z EMC priamo po seriovej linke zapisom do registra (ziadne probs s analogovou hodnotou teda nenastavaju). Tu este prichadza k slovu rampovanei ktore menic ma, takze ked dojde k zmene frekvencie neudeje sa to samozrejme skokom. Aj tento parameter mi hodne "babre" dynamicke vlastnosti serva.

Len pre zaujimavost co vsetko sa musi pri takom serve vyladit:

1. maximalna akceleracia pre trajektory planer
2. maximalna rychlost pre trajektory planer
3. PID (celkom 3 zlozky PID + 3x parametre FF0 az F2 pre feed forward)
4. rampa v menici
5. FERROR a MIN_FERROR

ked dobre ratam zatial je to 12 hodnot :), neratam veci ako offset PID a podobne "banalnosti". Krokace su omnoho jednoduchsie ;)) Zatial aj ked mi servo ide precizne (polohovo) vobec nie som spokojny so zrychlenim .. aj ked maximalka je v pohode... a toto zatial neviem doladit (skor chyba cas na babranie sa s tym). Zacinam sa dostavat k momentu, ked akceptujem vacsiu chybu ale ziskavam lepsiu akceleraciu serva. Preto ale aj hovorim, ze vyladit servo sa da na chodenie aj zastavovanie na 0 .. ale nemyslim si ze toto je ciel. Takto natunovane servo je sice mimoriadne presne ale je dynamicky hosrie ako by mohlo byt s istou povolenou chybou.
Fizol
Příspěvky: 355
Registrován: 24. 11. 2006, 6:22
Bydliště: Košice

6. 10. 2009, 8:12

Suhlasim s K. Tiez som v EMC nastavil vacsiu chybu, nejake tisiciny su mi ukradnute. Potrebujem spolahlivost a dynamiku. A preto to riesim hydraulikou :wink:

@K - co tak skusit vypnut rampu na menici, a nechat len EMC? alebo to technicky nie je mozne?
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

6. 10. 2009, 8:31

Fizol píše:Suhlasim s K. Tiez som v EMC nastavil vacsiu chybu, nejake tisiciny su mi ukradnute. Potrebujem spolahlivost a dynamiku. A preto to riesim hydraulikou :wink:

@K - co tak skusit vypnut rampu na menici, a nechat len EMC? alebo to technicky nie je mozne?
prave to .. menic je "prasa" ;) saha do coho nema :)) ale to nevadi ..

Mam teraz v menici rychlejsiu rampu aku mu posiela EMC. lenze.. iste spozdenie tam je na dalsich miestach.

Ako som pisal EMC posiela data cez serial, je tam modbus protokol a zeniem to z userspace HAL modulu .. tam iste spozdenie v komunikacii nastane. Reakcia menica je tiez obcas "neskorsia". Dalsi problem je, ze z menica data aj citam .. (prud motorom, krutak motora, DC na zbernici atd). a menic nevie viac ako 38400. aktualne nemam este v module dopisane to, ze prioritne sa prenesu zadavacie data a monitorovacie stacia 10x za sec. Toto je momentalne priorita .. az potom bude dalej praca na tunovani serva.
Uživatelský avatar
dslav
Příspěvky: 208
Registrován: 18. 12. 2006, 4:07
Bydliště: Hošťálková - Vsetín
Kontaktovat uživatele:

6. 10. 2009, 10:11

Já myslím že v rozporu nejsme. Pro malé rychlosti blízké 0 to +-1 může být, nebo lépe řečeno je to povinnost driveru tuto hodnotu udržet. Jakmile se ale začneme bavit o provozu na reálné rychlosti a rampách tak tvrdím že je to neuskutečnitelná hodnota. Jak jsem psal dříve taky záleží na rozlišení encoderu a dalších parametrech driveru. Například uvedu rozlišní výstupního výkonu. Dejme tomu že mám encoder s 20000 kroky na otáčku a výstupní výkon můžu řídit v +-256 úrovních. Prostě těch 256 úrovní výkonu je málo abych dosáhl přesnosti +-jeden krok. Další věc je že digitální servo kontroluje polohu dejme tomu 1000 krát za vteřinu. Při tom se muže otáčet tak rychle že za tu dobu se vykoná 1000 kroků na encoderu. Odchylka 10 kroků je v tomto případě 1%. Dejme tomu že při jednom měření polohy je vše v pořádku a driver ponechá výkon pro potřebnou rychlost. Bezprostředně po měření dojde ke zvýšení zátěže na hřídeli a servo začne zpomalovat. Teď musí uplynout celá dlouhá tisícina vteřiny během které se má encoder posunout o 1000 kroků. Těch 10 kroků (1%) prostě v tomto případě není možné dodržet. Z toho plyne ta moje dřívější poznámka že s jemnějším encoderem nedosahuji větší přesnosti (samozřejmě za chodu, na stání mašinu nepotřebuji).

K FERROR a MIN_FERROR je ještě potřena zahrnout další parametr a to je MAX_VELOCITY. Skutečná hodnota chyby je pak pro danou rychlost vypočítaná dle vztahu

err = (FERROR - MIN_FERROR) / MAX_VELOCITY * AktuálníRychlost + MIN_FERROR

Takže když mám nastaveno třeba
MIN_FERROR = 0.01
FERROR = 1
MAX_VELOCITY = 500

tak pro rychlost 250 bude dovolená chyba 0.505. To může být problém pro rampy kdy se pohubujeme malou rychlostí a více se tam uplatňuje MIN_FERROR.
1. Kde nestačí síla použij rozum.
2. Kde nestačí rozum použij sílu.

Dušan Slavětínský

http://www.valachnet.cz/~slavetinskyd/MegaCNC" onclick="window.open(this.href);return false;
http://www.valachnet.cz/~slavetinskyd/RcMix" onclick="window.open(this.href);return false;
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

6. 10. 2009, 12:17

Samozrejme, ziaden rozpor tu nie je ..

Ja s MIN_FERROR nelaborujem pretoze mi to opakovane sundalo stroj :) na to mam este cas .. kedze mam ine veci nedokoncene a nedotunovane. .

Skor sa vratim k otazke PBr, sa pytal ci to dava aj 0 .. no .. dava, lenze to bude na ukor dynamiky ... preto sa ani o tu 0 nebijem ..

Pre realnu prax mi 50 az 100 impulzov nevadi . nakolko tych 100 impulzov je u mna cca 0.005mm. (enkoder na motore, prevod az potom skrutka). Zial ked nahodim 1000-kove hodinky na stroj a klepnem po suporte pohne sa cca o 0.01 mm .. (skor menej ako 0.01 povedzme 0.007, tazko to ocami usledovat) .. mam sa este nahanat za 100 impulzami ? (alebo 50 ci 20) ked kvoli nim musim dat akceleraciu na podstatne nizsiu hodnotu ? Ak pouzijem enkoder s 1 dielikom na 0.01mm .. a budem na +-30 impulzoch tak mam smolu .. ale tam sa da ist na +-1 dielik. Podmienkou je vediet zadavat servu hodnotu (rychlost) jemnejsie t.j. 256 hodnot zdaleka nebude stacit pokial to ma mat dynamiku .. u mna ale servu zadavam frekvenciu .. cislo 0 az 65000 reprezentujuce 0 az 650Hz .. (motor znasa dobre tak 5 az 75Hz .. dalej bieda). Horsie je na tom este to, ze je to async .. a sklz ..


Zhrniem . servo moze za istych podmienok jazdit na odchylku +-1 a zastavovat na 0 ale vo vacsine pripadov bude taketo servo mozno podstatne lenivejsie ako servo kde povolite vacsiu chybu (pouzijete jemnejsi enkoder atd...). Nema cenu sa bit za "0" ale teoreticky to vytunovatelne na tu "0" je ..
Odpovědět

Zpět na „Servomotory“