ATC pre cincinnati Arrow

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

20. 2. 2017, 9:37

Zkoušel si použít vektorové řízení? Na malý otářky by to mohlo být použitelnější než V/f.
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

21. 2. 2017, 8:13

Skúšal som aj čisté V/f aj vektorové riadenie. Mám pocit, že pri čistom Vf to ide plynulejsie. Horšie je, ze podľa technikov od omronu to tento menič asi nezvládne. Už to riešili a skončili pri servopohone. Ešte som skúsil poslať dopyt do Lenze, tak uvidím či navrhnú niečo použiteľné.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

21. 2. 2017, 10:41

r4cv píše:Skúšal som aj čisté V/f aj vektorové riadenie. Mám pocit, že pri čistom Vf to ide plynulejsie. Horšie je, ze podľa technikov od omronu to tento menič asi nezvládne. Už to riešili a skončili pri servopohone. Ešte som skúsil poslať dopyt do Lenze, tak uvidím či navrhnú niečo použiteľné.
Tak to nezní moc pozitivně. Jak to bylo řešené na původním stroji? Tam prece byl tenhle stejnej motor. V tomhle bohužel neumím moc poradit, třeba někdo kdo už zkoušel polohovat s asynchronním motorem.
Vymenit to za servo je dost drahej špás.
M
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

21. 2. 2017, 11:42

Slusnej menic dokaze asynchron s encoderem ridit jako mizerne servo
Vsechna prava na chyby vyhrazena (E)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

21. 2. 2017, 1:14

Mám po obědě chvíli času tak zkusím sepsat další postup, pak se k tomu třeba chvíli nedostanu.
V mezičase snad vyřešíš ten problém s orientací a měníčem.

V dalším kroku je potřeba si dát dohromady požadavky co budeš od výměny nástrojů chtít.
Jestli budeš mít pouze X nástroju v changeru a víc ne, nebo budeš chtít používat i další někde s police.
Třeba RaS (snad neprozradím žadný tajemství) to má udělaný tak, že v karuselu má 24 zakladních nastrojů, ale automatická výměna je udělaná tak, že když zadá nastroj na výměnu větší než 24, tak to ten starej odloží a novej si to vezme "z ruky". Idelaní pro nastroje který se třeba rozměrově nevejdou do kolotoče.
dál jestli budeš chtít pro snažší výměnu nastrojů požadovat ruční otáčení karuselu na čudlíky. Ale to je maličkost.

Jestli budeš vypínat mašinu s nástrojem ve vřeteni, tak je potřeba ošetřit to, aby linuxcnc věděl po spuštění číslo nástroje a samozřejmě aby před vypnutím si ho někam poznamenal.
Tohle ještě není vyřešeno automaticky a musí se o to uživatel postarat sám. existuje několik způsobů které pozdeji popíšu.
Další požadavek je modul, který bude otáčet karuselem a případně s ním hejbat při výměně samotné . Když sem tohle řešil před rokem a půl, tak ještě neexistoval modul CARUSEL a bylo potřeba si to celé napsat. dneska už je to implementováno a ušetří to hromadu času.
modul carusel sice neumí hejbat se zásobníkem "z a do zaběru" ani ovládat zamykaní a odmykání vřetena, ale to uděláme jinak.
Jestli sem to dobře pochopil, tak máš vytažený drát pro indikaci zásobník v poloze pro výměnu. Předpokládám, že je to jeden drát pro všechny pozice a je potřeba podle pulzu počítat pozici. K němu by byl dobrej ještě jeden index signál, podle kterého by karusel poznal po zapnutí kde se nachazi a mohl se zreferovat. Bez něj se myslím neobejdeš.

Carusel pak funguje tak že při prvním požadavku na výměnu otáčí zásobníkem tak dlouho, než narazí na index a pak ví, že je v pozici 0, tu si uloží a dál už pracuje normálně tak, že počítá pulzy z čidla při otáčení.

Ted se vrátím k tomu, jak uložit číslo nástroje a pak jak ho načíst po startu.
1. varianta je ta, že v parametru #5400 je uložená hodnota nastroje ve vřeteni. Jenže parametr 5400 se neukladá do var souboru při ukončení programu. Takže je potřeba v g-codu po výměně uložit tuto hodnotu do proměnné, která se ukládá. napriklad do #4999.
něco jako

O<change> sub
M6
#4999 = #5400
O<change> endsub
m2

a do souboru xxxx.var v adresari s aktualni konfiguraci dopsat na nový řádek číslo 4999 třeba na začátek. tím zajistíš že se tato proměná uloží při ukončení programu.

druhá část problému je jak tuto hodnotu po startu načíst.
idelaně tak aby to linuxcnc udělal sám.

tady jsou taky dvě (a více) metody.
změnu nástroje ve vřeteni bez samotné výměny řeší přikaz M61 Qx kde x je číslo nástroje
v ini souboru je definován řádek
[RS274NGC]
SUBROUTINE_PATH = nc_subroutines:nc_files
RS274NGC_STARTUP_CODE = g88.1 G17 G21 G54 G64 P0.001 G90 G94 G97 M5 M9

který říká co má udělat program po startu. například g21 přepne do metrické soustavy, G54 zvolí základní souřadný systém atd. ale to není potřeba vysvětlovat
odsud se dá zavolat příkaz který to nastaví,ale bohužel neumí volat M-kody, ale pouze G-cody.
Proto je zapotřebí ještě malá obezlička v tom, že zavolaš dodefinovaný g-příkaz třeba g88.1 který není obsazený systémem a je definován v podadresari uvedeném v SUBROUTINE_PATH napríklad nc_files.

v souboru g881.ngc pak bude něco takového

o<g881> sub
m61 q#4999
o<g881> endsub [1]
m2

druhý případ jak načíst hodnotu může být třeba takový........
v ini souboru si definujes mdi prikazy
[HALUI]
MDI_COMMAND = M61 Q#4999

tím vznikne pin halui.mdi-command-00 který když aktivuješ provede se příslušný příkaz.
Ted už jenom stačí zajistit aby se příkaz spustíl v pravou chvíli.
nejde použít třeba signál halui.machine-is-on neb mdi příkazy nelze spustit před zhoumováním mašiny, takže je potřeba nalinkovat mdi na signál říkající, že poslední osa je zreferovaná na home signal.

net tool-in-spindle halui.mdi-command-00 joint.0.homed

Použití metody s var souborem,je sice jednoduché,ale má jednu nevýhodu. proměnné se do var ukládají jen jednou a to při ukončení linuxcnc. v případě že ti spadne elektrika, nebo linuxcnc (to se moc nestává) tak budeš mít ve var hodnotu z minuleho ukončení a mohlo by dojít k nepříjemné situaci, kdyby se mašina snažila odložit nastroj do pozice kde se už nachází nejaký jiný.

Tady nastupuje druhá metoda ukládání čísla nastroje. Sice složitější, ale bezpečněší.

Existuje modul paramsaver http://wiki.linuxcnc.org/cgi-bin/wiki.p ... eter_Saver" onclick="window.open(this.href);return false;
který se zkompiluje jako userspace a který umí ukladat libovolné množstí pinu typu bit, float a s32 a následně je kdykoliv přečíst.
Pak už jen stačí stejně jako ve variantě 1 po výměně nástroje tuto hodnotu uložit a nečekat na konec programu a samozřejmě jí taky po startu přečíst a nastavit do systému.
tady by soubor g881.ngc vypadal nasledovně

o<g881> sub
m61 q#<_hal[paramhelper.outvalue]>g43
(debug, nastaveno cislo nastroje ze souboru #<_hal[paramhelper.outvalue]>)
o<g881> endsub [1]
m2

a uloženi asi takhle nějak

m6
M68 E #<_ini[pins]writetool> Q#<_selected_pocket> ; cislo nastroje zapis do souboru
M64 P #<_ini[pins]write> ; zapsat do souboru
G4 P1.2 ;pockej chvili
M65 P #<_ini[pins]write> ; schozeni signalu pro zapis

kde #<_ini[pins]write> a #<_ini[pins]writetool jsou definovány pro přehlednost v ini souboru .
[PINS]
# priznak pro ulozeni cisla nastroje
WRITE = 3 # motion.digital-out-03
# cislo nastroje ve vreteni
WRITETOOL = 3 # motion.analog-out-03

k tomu samozřejme nalinkovane signaly z paramsaver v halu pro zapis, cteni a patřičnou hodnotu cisla nastroje
net writetrigger motion.digital-out-xx paramhelper.writetrigger #priznak pro ulozeni cisla nastroje
....
....


no a na závěr už jen stačí vyřešit jak ovládat o číst zamykaní nastroje ofuk, vysunutí ramene a podobný blbosti.
to bych udělal přímo v přemapovaném gcodu pro M6 pomocí M62-M66.


Sakra nejak sem se rozepsal.
kdyby si chtěl nejaký priklady cely konfigurace tak tu něco mám. snad se uživatelé s kterýmá jsem na tom pracoval nebudou zlobit.

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

21. 2. 2017, 1:43

fupe píše:Tak to nezní moc pozitivně. Jak to bylo řešené na původním stroji? Tam prece byl tenhle stejnej motor. V tomhle bohužel neumím moc poradit, třeba někdo kdo už zkoušel polohovat s asynchronním motorem.
M
Pôvodný pohon bol: zákazkový indukčný motor s resolverom (230V, 9kW, 10000ot.) + špeciálny menič
pôvodný motor som nedokázal rozumne rozchodiť (kvoli motoru som kupoval menič s prúdom až 55A)
nový motor je rovnako indukčný, 7,5kW, 2-pólový na 400V. teraz zapojený do D, do 87Hz ide konštantý Mk, max. 130Hz.
Mám po obědě chvíli času
Tak na toto si nájdem trochu viac času.
Zatiaľ to robím v záložnej inštalácii, tak možno preskočím orient (spravím ručne) a skúsim dorobiť tú kabeláž zo zásobníku do systému, prípadne to vyskúšať.
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

21. 2. 2017, 1:45

robokop píše:Slusnej menic dokaze asynchron s encoderem ridit jako mizerne servo
problém je, že nemám enkodérovú kartu do meniču. Nová sa už nedá kúpiť a ak ju kúpim na ebay, tak neviem či mi to pomôže.
Enkodér je teraz zapojený do systému.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

21. 2. 2017, 2:02

r4cv píše:
robokop píše:Slusnej menic dokaze asynchron s encoderem ridit jako mizerne servo
problém je, že nemám enkodérovú kartu do meniču. Nová sa už nedá kúpiť a ak ju kúpim na ebay, tak neviem či mi to pomôže.
Enkodér je teraz zapojený do systému.
A zkoušel si to řídit pomocí rychlostní PID v linuxcnc? Před časem si psal, že ladíš PID v měniči, tak sem myslel, že máš encoder zapojenej do měniče.
M
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

21. 2. 2017, 2:07

Enkodér do meniču je zapojený, ale len ako jednoduchá spätná väzba.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

21. 2. 2017, 6:30

bez te enkoderove karty nemas sanci
myslim ze ten menic to pak reguluje ponekud jinak
z linuxu tam posles max zmenu rychlosti

ted jde o to jak mas nakonfigurovany menic
paklize pouze meni kmitocet
tak je to vsechno krasne ale prez skluz samotneho motoru to kvalitne neukociruje
paklize mas do menice nejakou hrubou informaci o rychlosti

menic musi mit dostatecne jemnou informaci o rychlosti
a musi si podle toho resit f a I
kdyz je ve skluzu prida aby nebyl

pouhym menenim f z linuxcnc na zaklade skutecnych otacek to podlemne nemuze kvalitne regulovat kdyz je motor "gumovej"

s menicem ktery ma primo vstup na encoder se to chova skoro jako ac servo
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

21. 2. 2017, 7:39

Tak musím vymeniť menič. Do omronu sa dá kúpiť tá karta na encodér, ale chcú za ňu 300-400 dolárov.
trochu doplatím a mám nový menič.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

21. 2. 2017, 7:54

z druhe ruky nikde neni?
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

21. 2. 2017, 9:04

To je z druhej ruky. Originál už nedodávajú.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

21. 2. 2017, 9:07

poptej menic od delty
maji velmi dobre ceny
Vsechna prava na chyby vyhrazena (E)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

22. 2. 2017, 1:40

fupe píše: Na konec pouzijes modul near, kterej porovnává požadovanou hodnotu s aktualní hodnotou z encoderu a při dosažení požadované odchylky vyšle signal near.N.out napojený na motion.spindle-is-oriented a celá orientace je hotová.
Martin
Oprava: modul NEAR je potřeba pouze ve starších verzích. např 2.7.0-pre6 . Ve vyvojové větvi už je delší dobu tato funkce přímo v modulu ORIENT.
viz
http://linuxcnc.org/docs/devel/html/man ... ent.9.html
podívej se, jestli najdeš tyhle signály....
orient.N.is-oriented bit out This pin goes high when poserr < tolerance. Use to drive motion.spindle-is-oriented
orient.N.tolerance float in (default: 0.5) The tolerance in degrees for considering the align completed

Martin
Odpovědět

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