Linux a Absolutní enkodéry

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

8. 2. 2017, 1:43

lubos píše:Rozchodil tu někdo linux a serva která mají absolutní enkodéry?
Výhledově uvažuju o přestavbě svého stroje a tak nějak jsem si na to zvyknul tak bych to rád měl i po modernizaci systému.
Ahoj Luboši,
tak sem na to koukal a došel k následujícímu.
Moderni absolutni encodery s SSI mají velmi rychlou odezvu, něco kolem 40us (jednotky Mb) , to znamená, že je můžeš použít jako zpětnou vazbu do systému.
Mesa karty to s patřičně upraveným firmwarem přimo podporují.
Ty tvoje encodery ale běží na klasickém rs232 a to ještě někde kolem 9600b. takže jako zpětnou vazbu použít nejdou. Sou prostě pomalý. Jediný na co by šly použit by byl připad, že by si systém na začáku přečetl aktualní polohu tu nastavil do systému a dál používal klasicky encoder.
Ať sem hledal jak sem hledal, tak sem nenašel podobnou konfiguraci. Prostě nevím, jak na začátku vnutit systému tu aktualní polohu.
Asi by nebyl problém upravit firmware tak aby byl schopen číst několik kanálu (pro každy encoder zvášť),ale co s tou hodnotou dál?
Připadá mi podstatně jednodušší ten S-kanál prostě nepoužívat a na začátku udělat home celé mašiny.

Martin
pavel7890
Příspěvky: 52
Registrován: 15. 7. 2010, 10:49

8. 2. 2017, 2:11

musela by se na to napsat HAL komponenta. To není až tak velký problém.

Taky jsem o podobném řešení jako robokop původně uvažoval.
Dalo by se tím také řešit kontrola polohy před každým spuštěním cyklu. Víceméně je pro kontrolu a jistotu, že nevypadly kroky.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

8. 2. 2017, 2:23

pavel7890 píše:musela by se na to napsat HAL komponenta. To není až tak velký problém.

Taky jsem o podobném řešení jako robokop původně uvažoval.
Dalo by se tím také řešit kontrola polohy před každým spuštěním cyklu. Víceméně je pro kontrolu a jistotu, že nevypadly kroky.
Napsat komponentu pro čteni asi není problém, ale co s ní? jak zavedeš vystup z té komponenty do systému?
a druhá věc.... když tam je encoder tak předpokládám, že tam nehoní krokový motory, ale serva a tam žádný kroky nejsou. Všechno si řeší PID pro servo.

M
lubos
Sponzor fora
Příspěvky: 5088
Registrován: 2. 5. 2007, 3:47
Bydliště: Praha

8. 2. 2017, 3:54

Mě šlo jen o pohodlnost při puštění systému a nemusel bych dělat home.
Zatím to vypadá že nebudu měnit pohony a původní serva nechám a seženu k nim jen drivery, pak stejně asi nepůjde informaci kterou enkodér při inicializací posílá jinak využít.
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
Uživatelský avatar
CZ_Pascal
Příspěvky: 870
Registrován: 14. 1. 2008, 8:24
Bydliště: Brno

8. 2. 2017, 5:31

No neviděl bych jako velký problém v rámci Homeovací sekvence prostě přečíst aktuální polohu a tu přiřadit do "HOME_OFFSET" tak jako se to děje při najetí na koncák. Jen s tím rozdílem že koncák se aktivuje hned při úspěšném přečtení polohy aniž bych musel k tomu koncáku někam dojet.

Nejspíše by to znamenalo drobnou úpravu zdrojáku homeování a přidání možnosti ten HOME_OFFSET přiřadit z HALU a ne pouze nastavit v INI souboru.

Prostě v LINUX CNC je hlavním omezením představivost :wink: (pokud tedy člověk trocha umí programovat)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

8. 2. 2017, 8:52

CZ_Pascal píše:No neviděl bych jako velký problém v rámci Homeovací sekvence prostě přečíst aktuální polohu a tu přiřadit do "HOME_OFFSET" tak jako se to děje při najetí na koncák. Jen s tím rozdílem že koncák se aktivuje hned při úspěšném přečtení polohy aniž bych musel k tomu koncáku někam dojet.

Nejspíše by to znamenalo drobnou úpravu zdrojáku homeování a přidání možnosti ten HOME_OFFSET přiřadit z HALU a ne pouze nastavit v INI souboru.

Prostě v LINUX CNC je hlavním omezením představivost :wink: (pokud tedy člověk trocha umí programovat)
Naprosty souhlas,
Jak rikam od zacatku, padadni hracka pro velke kluky. :-)
Neni problem upravit zdrojaky, jsou celkem citelny, ale nerad jdu touto cestou, protoze pak se clovek pripravy o moznost upgrade na vyssi verzi.
Co se mi ale posledni dobou moc libi, je pouziti handleru treba v gscreenu a moznost si pridat temer cokoliv. Casto to vyuzivam. Napr pro toolchanger, pridavny panel, ale moznost upravit houmovani tam zatim moc neni.
Nebo jen nevkm jak na to......

M
Uživatelský avatar
CZ_Pascal
Příspěvky: 870
Registrován: 14. 1. 2008, 8:24
Bydliště: Brno

9. 2. 2017, 5:52

... přiznám bez mučení že to neumím, ale GIT nejěkým způsobem umí spravovat více "verzí" / "větví" zdrojáků projektu tak aby updatoval to co se zmněnilo v "master" nebo odkud taháš a zároveň nerozhodil "lokální" modifikace. Alespoň tak nějak jsm to pochopil když jsem letem světem koukal na práci s GIT ? (nebo jsem to viděl jinde ? SVN :roll: )

I tak jsou zdrojáky rozděleny podle funkcionality a dokud se nezmnění zrovna ten který jsi modifikoval tak si po stažení nejnověší verze nahodíš ještě ten "vlastní" modifikovaný zdroják a skompiluješ.
Pokud došlo ke zmněně i v tom zrdojáku který je modifikovaný, tak určitě půjde opět poupravit část která je upravená - ale to je samozřejmě vcelku nepohodlné.

Daslší z možností je pokusit se prosadit takovou zmněnu funkcionality, která neovlivní stávající fungování, ale přidá nové možnosti přímo do "oiciálních" zdrojáků.
Pokud to bude napsané dobře tak se myslím nebude tým současných vývojářů bránit vylepšení které by bylo využitelné i pro ostatní uživatele.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

9. 2. 2017, 11:47

Je to už dávno co jsem okrajově štrejchnul o git a vydalo by to na dlouhy studija. Takže sem se naučil asi 10 příkazů který používám a některý stejne neustále dokola znova a znova dohledávám protože nejsem schopnej si je zapamatovat.
Třeba jak zjistit kdy došlo v nejakém souboru ke konkrétní změně daného řádku.
Ale asi máš pravdu, že git umí nějak s těmi verzemi zacházet, spojovat je a podobný kraviny.

O tom protlačit to do oficialní verze bych asi pochyboval. myslím že přínos lidstvu by v případě možnosti jednou načíst encoder po spuštění stroje byl z hlediska globálního aspektu zanedbatelný. :-)
S některejma programátorama navíc není moc řeč. Našel sem pár chyb v kodu, psal sem to vývojářům až do jůesej, ale odezva většinou žádná a chyba tam byla i v dalším releasu.
Ale abych nekřivdil všem, najdou se i taci co veřejně přiznají že tam ta chyba byla, opraví ji a dokonce i poděkují v gitlogu.....
M
pavel7890
Příspěvky: 52
Registrován: 15. 7. 2010, 10:49

12. 2. 2017, 8:29

tak jsem právě odzkoušel vývojovou verzi 2.8.0 (2844) kde je podporovaná funkce absolutnich enkoderů a funguje to skvěle.

do INI jsem dal HOME_ABSOLUTE_ENCODER = 2 a po zmáčnutí home all se načetla aktualní pozice a bylo to.

POZOR: pro ty kteří chtějí zkoušet nový Linuxcnc 2.8, tak se trochu změnilo nastavení v INI a HAL. není to až zas složité....

to se týče GITu. Taky jsem se tomu bránil, ale nakonec jsem se naučil pár příkazů a nelituju. Hlavně "zálohování" na github a přenos na jiné stroje je hračka. Kdo nezkusil tak vřele doporučuju. Před změnou INI a HAL jsem si pochopitelně GIT použil a mám vystaráno, kdybych se chtěl vrátit....
Uživatelský avatar
CZ_Pascal
Příspěvky: 870
Registrován: 14. 1. 2008, 8:24
Bydliště: Brno

12. 2. 2017, 8:47

No já tedy už na 2.8 nějakou dobu jedu, ale nikoliv kvůli absolutním enkoderům (to jsem nevěděl, jelikož absolutním enkoderem nedisponuji) ale především kvůli tom že je konečně možný plnohodnotný pohyb s použitím MPG v TELEOP režimu. (tedy týká se to těch co nepoužívají triviální kinematiku, ti ostatní nejspíše netuší co to melu za blbosti).
Udělali totiž konečně trochu pořádek v Joints versus Axes a s tím souvisí právě výše zmiňovaná nutná zmněna v INI a HAL souborech - ale není to nic tragického.

V předešlích verzích se dalo použít MPG plnohodnotně pouze na jednotlivé "Joints" (tedy pohony dané osy, jinými slovy stupně volnosti).
Teď mohu použít plnohodnotné MPG i na Axes (tedy klasické osy karteziánského systému) a pokud mám použitou/aktivovanou například výškovou korekci tak se osa Z přizpůsobí a sleduje pohyb povrchu.
Nebo pokud bych měl například pomocí kynematiky softwarově kompenzovanou kolmost os, tak teď už s MPG můžu jezdit "kompenzovaně" a tedy opravdu pravoůhle atd....
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

13. 2. 2017, 11:35

pavel7890 píše:tak jsem právě odzkoušel vývojovou verzi 2.8.0 (2844) kde je podporovaná funkce absolutnich enkoderů a funguje to skvěle.

do INI jsem dal HOME_ABSOLUTE_ENCODER = 2 a po zmáčnutí home all se načetla aktualní pozice a bylo to.

POZOR: pro ty kteří chtějí zkoušet nový Linuxcnc 2.8, tak se trochu změnilo nastavení v INI a HAL. není to až zas složité....

to se týče GITu. Taky jsem se tomu bránil, ale nakonec jsem se naučil pár příkazů a nelituju. Hlavně "zálohování" na github a přenos na jiné stroje je hračka. Kdo nezkusil tak vřele doporučuju. Před změnou INI a HAL jsem si pochopitelně GIT použil a mám vystaráno, kdybych se chtěl vrátit....
Jaky tam máš encodery? SSI? jak komunikují? Honíš to pře MESU?
Zkus to trochu rozepsat pro nás, co znají absolutní encodery jen z televize.
Předpokládám, že je používáš i během obrábění, coz v Lubošovém případě nejde. Tam by se to muselo nějak obejit. asi by to šlo třeba tak, že by to na začátku přes vlastní hal modul načetlo souřadnice a pak by se přeplo na incrementální encodery s patřičným offsetem, nebo tak nějak.

M
pavel7890
Příspěvky: 52
Registrován: 15. 7. 2010, 10:49

13. 2. 2017, 9:29

jsou to absolutní enkodéry v MSK Rexroth motorech přes Indradrive CS do Linuxcnc přes Ethercat. Jsou tam sin cos + Hiperface (Sick/Stegman).

Více méně bez práce. Servo drive mi posílá stále aktuální pozici. Ty enkodéry "fungujou" i když jsou bez napětí nebo záložní baterie (nechápu...). Takže se stolem je možné hýbat a po zapnutí je aktuální pozice stále platná.
K_73
Příspěvky: 267
Registrován: 10. 4. 2014, 5:43
Bydliště: Praha

13. 2. 2017, 11:01

pavel7890 píše:... Ty enkodéry "fungujou" i když jsou bez napětí nebo záložní baterie (nechápu...). Takže se stolem je možné hýbat a po zapnutí je aktuální pozice stále platná.
Enkodéry SICK Hiperface Multiturn nepotřebují záložní baterii, protože neukládají informaci o počtu otáček do paměti ale odečítají ji přímo z optických nebo magnetických kotoučů viz. přiložený obrázek.

Obrázek

Jinak ty enkodéry co jsou na těch Lubošových servech jsou podle mě pro LinuxCNC v absolutním režimu nepoužitelné. Informaci o absolutní poloze totiž pošlou jen jednou hned po připojení napájení v tzv. inicializační sekvenci a ta vypadá následovně:
Nejprve jsou na kanál A odeslána sériová data která obsahují pouze počet celých otáček (v ASCI formátu) poté je na kanály A a B odeslána série standardních inkrementálních pulzů (inicializační inkrementální blok) udávající polohu v dané otáčce. Potom se enkodér přepne do běžného inkrementálního režimu a tak funguje až do vypnutí napájení. Takže ta počáteční informace o absolutní poloze je takový slepenec sériových dat a inkrementálních pulzů. Nedovedu si představit jak jednoduše donutil LinuxCNC aby s tímhle nějak rozumně pracoval.
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

13. 2. 2017, 11:45

A je hodně složité nebo dokonce nemožné si napsat vlastní HALový modul, který na začátku načte tu odeslanou pozici, a pak se přepne do průchozího stavu a bude jen předávat data původní obsluze enkodérů?
Nic o tom konkrétně nevím, zatím jsem nestudoval, jak se takové věci v LinuxCNC píšou (na nic jsem to nepotřeboval).
Ale pokud jsou ty HALové moduly aspoň trochu normální SW komponenty, tak by to snad neměl být nijak neřešitelný problém, ne?
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

14. 2. 2017, 6:01

chlapi dekuji za objasneni, furt je co se ucit.

A info pro Mexe:
Nejsem zadnej programator, pouze samouk, ale par modulu sem napsal a troufam si tvrdit ze napsat modul pro lubose neni neresitelny problem.
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... e_Encoders
Tady je neco podobneho. modul ktery si uklada otacky do souboru a po spusteni si je zase nacte a pouzije je jako offset. Stacilo by nahradit tu nacitaci cast vyctenim dat po serialu z encoderu a tu priradit jako ofset. Nic sloziteho. Mozna vetsi problem by byl vygenerovat vlastni firmware pro mesa karty se trema RS232 kanalama po kterejch by se to cetlo. A asi by byl potreba nejakej prevodnik urovni mezi mesou a rs232.
Ale ani to neni neresitelny. Mozna by to slo cist i po jednom com portu a postupne si rikat o data, je tam nejaky inicializacni signal tusim,nestudoval sem to tak podrobne.
V linuxcnc te opravdu omezuje jen tvoje predstavivost..... :D

A jeste info pro K_73
Nejsem si uplne jistej ze seriova komunikace bezi po A B kanalech. Myslim si, ze ty slouzi jen pro incrementy a pro komunikaci slouzi S kanal. Nejak si uplne neumim predstavit jak by se to prepinalo. podle me jsou to dva nezavisle kanaly.

M
Odpovědět

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