ATC pre cincinnati Arrow

Odpovědět
r4cv
Příspěvky: 2691
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

12. 2. 2017, 7:43

posledné správy z bojiska sú o 14.08, potom som cestoval preč.
po zadaní M19 sa to niekedy roztočilo na max otážky (60/min - max pre orient), alebo sa to nepohlo vôbec.
trocu som skúšal nastavenie PID, bez nejakej zmeny, len som to strielal od brucha.
r4cv
Příspěvky: 2691
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

13. 2. 2017, 7:43

dnes som znova testoval. zatiaľ regulátor nereguluje.

Neviem ako má fungovať signál pos-pid.command. má sa meniť pri ručnom otáčaní vretena?
Inak: ktorý signál dá regulátoru povel, že už je v správnej polohe a má začať brzdiť? Lebo nebrzdí, ak sa roztočí, tak sa točí až do M5.

z orient mi lezie signál celkovo cca -1 do +1, a z enkodéru je jeho hodnota po každej otáčke o 1 vyššia. Po chvíli tam je niekoľko 100. ak by mal NEAR porovnať tieto hodnoty, tak by sa vreteno pri orient muselo "odtočiť" až do 0. (neviem, či mi rozumiete, neviem to napísať lepšie)
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22386
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 2. 2017, 7:50

command je vstup pozadovane hodnoty do pidky
v pripade orientace by mel byt staticky protoze se jedna o cilovy uhel natoceni

zadny povel jako M5 by tam byt nemel do te doby dokud orientaci vretena nevypnes

pidka jako takova je regulator
vstupem je uhel vystupem je rychlost otaceni
cim vzdalenejsi je aktualni poloha od cilove a cim dele to trva tim vetsi rychlosti by se mel snazit tam dojet

kdyz uz je blizko
tj. odchylka pozadovane a cilove rychlosti je mala a blizi se 0
tim mensi bude rychlost na vystupu pid regulatoru
kdyz se ty hodnoty sejdou na vystupu bude 0

to ze je uz naorientovano do polohy budes muset rucne nejak detekovat (nejaky komparator nebo tak neco)
a umoznit ATCcku jit o krok dal, tj zacit vymenovat
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2691
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

13. 2. 2017, 7:53

to práve nefunguje. orient dá polohu, napr. 0,8
enkodér dá aktuálnu polohu napr.0,5
keď ručne otáčam vretenom, tak okolo polohy 0,8 by výstup PID mal klesnúť na 0, ak to prebehnem, tak by mal ísť do mínusu. ALe to sa nedeje. takže kde je chyba?
r4cv
Příspěvky: 2691
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

13. 2. 2017, 7:54

to ze je uz naorientovano do polohy budes muset rucne nejak detekovat (nejaky komparator nebo tak neco)
a umoznit ATCcku jit o krok dal, tj zacit vymenovat
ak to správne chápem, tak to robí NEAR.

M5 zadávam ručne, keď potrebujem zastaviť vreteno.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22386
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 2. 2017, 7:58

co ti leze na vystup? v jakych chvilich
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22386
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 2. 2017, 8:25

asi to bude pro zacatek chtit dat do Pcka neco vic nez 1

melo by to byt neco jako vystup = (zadana - skutecna) * P

dejmetomu P=10

takze 0.8-0.5 = 0.3 ot.

0.3 * 10 = 3 ot./min
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2691
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

13. 2. 2017, 8:27

roztočím vreteno a zastavím ho. enkoder.position je napr. -329.8
zadám M19
pospid.command nastaví na 329.99
spustí vreteno a začne ním otáčať
rozdiel sa zvyšuje
pospid.output je na max (60)

chyba bude asi v nastavení enkodéru, pri M3 mi klesá hodnota position a to bude asi chyba
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22386
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 2. 2017, 8:29

mas opacnou polaritu reakce
encoder scale zkus nastavit na tu samou hodnotu jen zmen znamenko
melo by ti to citat na druhou stranu
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2691
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

13. 2. 2017, 8:36

zmena encoder.scale pomohla.
Pri M19 sa to už po pár otáčkach zastaví

zajtra pokračujem s nastavovaním PID.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22386
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 2. 2017, 8:48

parada
jsi na dobre ceste
Vsechna prava na chyby vyhrazena (E)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

14. 2. 2017, 8:25

r4cv píše:zmena encoder.scale pomohla.
Pri M19 sa to už po pár otáčkach zastaví

zajtra pokračujem s nastavovaním PID.
Tohle je zvláštní. Jestli se to po pár otáčkách zastaví, tak to znamená, že PID překmitla za požadovanou hodnotu, protože orientace by měla proběhnout max do jedné otáčky vřetena a tím pádem by se PID měl snažit to dotáhnout zase zpět. Takže by mělo cvaknout relátko a mělo by se to otáčet zase zpět.
Co ti leze z PID? zmenšuje se ta hodnota. Idelně si pust halscope (popis zde http://linuxcnc.org/docs/html/hal/tutorial.html )
a naklikej si do nej pos_pid.feedback a pos_pid.output a klidne i pos_pid.command, ale ten by se neměl měnit.
Z grafu je pak krásně vidět jak se to chová. Někdy prostě halshow nestačí a je potřeba to vidět v čase.

Až tohle vyladíš a vřeteno se ti zastaví tam kde chceš, tak nastav ten near.
je potřeba nastavit near.N.difference na požadovanou hodnotu. např pro jeden stupeň 1/360=0,002777 protože jedna otáčka odpovídá změně encoderu o 1.
tím ti bude near spínat v rozsahu +-1 stupeň od požadované hodnoty.

Ale jestli ti to překmitne, tak se může stát, že near vyhodnotí, že už je vřeteno v požadované poloze, ale protože se stále točí, tak se mu poloha ještě změní a dotočí se do pryč. Prostě je potřeba ten signal near prohnat něčím, co změní signal až po uplynutí nejaké doby, kdy už je jistota že to stojí. A na to slouží debounce, který čeka požadovany počet vzorků, než přepne vystupní pin do patřičného stavu.
Když se ti ale podaří naladit PID tak aby nepřekmitnul, tak ten debounc nebude potřeba. To záleží jak pomalu se to vřeteno dokáže točit.
Martin
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22386
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

14. 2. 2017, 8:31

To bude tim ze enkoder ukazuje polohu ne v ramci jedne polohy a pak zas od nuly ale pocita jednotlive otacky
Takze se to snazi odmotat zpet k nule
Vsechna prava na chyby vyhrazena (E)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

14. 2. 2017, 8:38

Tak modří už vědí, proč ti to necvaká a netočí se to zpátky.
Ty používáš signal motion.spindle-speed-out-abs a k němu cw ccw, ale z PID smyčky ti leze jenom +-, takže se nemění směr rotace.
bude potřeba vystup z PID prohnat přes ABS a patřičně napojit signály tak aby pro zaporný čísla cvaklo relátko.
Idealne přes mux2 ovládaný rovněž spin.orient aby se signal z ABS dle potřeby odpojil a nedelal tam neplechu když se nebude orientovat.
Zkusim to nakreslit. Jeden obrázek za tisíc slov.

Martin
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

14. 2. 2017, 9:04

slíbený obrázek.

podle manualu by sel pouzit místo mux i or, když PID nebude mit signal enable, tak vystup bude 0 a pro nulu bude is-negativ taky nula, takže sem kecal, že by to dělalo bordel. můžeš je protě binárně sečíst. Ušetříš jeden drát pro select.
fungovat bude obojí.

M
Přílohy
spindle-2.jpg
Naposledy upravil(a) fupe dne 14. 2. 2017, 9:11, celkem upraveno 1 x.
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“