Nyt on CNC-foorumin tukeminen helppoa!
Maksu onnistuu PayPalin kautta myös kortilla
Konemies kiittää

Über-breakout v 2.0

Aloittaja Kremmen, 29.11.12 - klo:17:42

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

Ozz

Kuulostaa loistavalta! Tätä vähän jo odottelinkin Kremmeniltä  :)

Kremmen

Kiitokset tähän astisista kommenteista ja kannustuksesta :)

Pienen säätämisen jälkeen sain Mach3 plugin kehityskitin asennettua lopulta aika vähällä vaivalla. Tosin Mikkisoftan Visual C++ piti downgradeta versiosta 2012 versioon 2008 ennekuin asennus pääsi lopputulokseen. No, onneksi tuosta löytyy ilmainen Express-versio eikä tarvinnut poistaa 2012-versiota.
Nyt on eka rima siis ylitetty ja voin aloittaa tuon Ethernet-liikenteen miettimisen ja PC-pään kirjoittamisen. Oma aikansa menee kun opiskelee miten Mach muodostaa koneen tilatiedot ja rataohjauksen. Mutta sehän selviää kun selvitetään. Harmi vaan, että tästä kaikesta ei kyllä varmaan ole iloa LinuxCNC:n osalta, kun siellä on tietty ihan omat ja erilaiset konstinsa. Aion kyllä katsoa senkin kortin kunhan nyt ensin saadaan pää auki Machin kanssa.

Nothing sings like a kilovolt
Dr W. Bishop

Grinder831

#17
Huomentah vaan jokaselle  :) katselin tuossa selailessani noita kaiken-maailman kortteja että Nyt on kyllä hintaa mutta Sitä läksin lähinnä Kyselemään että Olisko tää kortti semmonen Ominaisuuksiltansa mitä oltais hakemassa porukassa ?? ?? 

http://www.ebay.com/itm/CNC-Breakout-Board-Ethernet-Smooth-Stepper-Mach3-Motion-Controller-CM106-ESS-/180836283124


Tietysti Kaikella kunnioituksella ja hatun nostolla Kremmenin projekteja Seuranneena ja osallistuneena Laatua Ja Osaamista on  :)  (ei tää nyt sitä tarkoita että Tämmönen kortti JUST olis, mutta tähän suuntaan vai vai ??)

T: Grinder831  8)

Edit:

Dääm. täähän on ihan peruskortti. ei pentele... Sori Kauhiasti häiriö.. (melkein) tommonen Breakout kortti tehtiin.. paitti vaan Lpt-liitoksella ei ethernet-mallina  :P

olli henttonen

ompas hirveen hintainen kortti, samanlaisia saa pariinsataan 4 akselisena, taino toi on kyllä 6 akselinen versio. mutta joo tuollaista nopeasti wilkaistuna puuhapaja kaipailee
dyykkari

Kremmen

Puusta katsoen tuollaisen komponentit jää kyllä reilusti alle parinsadan, että myyjällä on katteet kohdallaan.
Omaa projektia silmälläpitäen vaan hieman huolestuttaa tämä minkä olen pannut merkille tutkiessani muiden tekeleitä - Hirveän monessa näkyy joko nopea ARM (luokkaa 500 MHz) tai ARMin ja FPGAn yhdistelmä. Niinkuin tässäkin kortissa on tuo TI:n LM3S joka on Cortex M3 ja siinä vieressä Xilinxin Spartan-6 joka on keskivauhdikas FPGA, tosin jo vähän vanhempaa mallisarjaa, mutta kuitenkin vääntää signaalingeneroinnissa jonkun 120 MHz ARMin maan rakoon.
Nothing sings like a kilovolt
Dr W. Bishop

Hiekkaranta_92

Tuolakun oli jotain puhetta noista gantry akselisista koneista... Jos halutaan vaikka X ja Y lle molemmille kaksi akselia ja kuitenkin vielä kääntöakselit niin pitäisko sitten jo olla ainakin se seitsemän akselia + kara? Vai olisko kahdeksan parempi, jos joku haluaa vielä Z:lle kin kaksi moottoria? Ohjaimia jotka tukee tuota montaa akselia samaan aikaan ei taida olla montaa? ja mitä nyt äkkiä noita emc:n kinematiikka topicceja luin niin rajoittaa joggausta ainakin pahoin kinematiikalla tehtynä. Jotenkin tuntui siinä kohtaa siis siltä että homing ja singaalin jako kannattais tehdä tällaisella ohjaimella jolloin ei pääse joggaamalla ajamaan konetta kieroon.

Kuusi akselia taas  olisi mukava olla jos jotain tälläista haluaa tehdä: http://www.youtube.com/watch?v=MTPkw5BNmVw

Kremmen

#21
Joka tietoa lisää se tuskaa lisää.
Eli nyt olen pystynyt selvittämään Machin toiminnasta muutaman oleellisen detaljin. Noin yleisesti ottaenhan liikkeenohjaus CNC-koneessa menee siten, että tulkitaan jotain liikkeiden kuvauskieltä, yleisimmin G-koodia ja muodostetaan siitä ohjaussignaalit toimilaitteille. G-koodi kertoo peräkkäiset asemat joihin liike 3-ulotteisessa avaruudessa halutaan tehdä (1- ja 2-ulotteiset liikkeet on 3-ulotteisen liikkeen erikoistapauksia). Lisäksi G-koodissa pystytään ilmaisemaan liikkeen laatu, joko suora tai kaareva liike. Täydellinen yksittäinen liike siis sisältää translaation (siirtymän) ja rotaation (kiertymän) kaikkien akselien suhteen (jossain ajassa), ja translaatio voi lisäksi tapahtua määriteltyä kaarta pitkin. Mach3 kuten kai yleisesti kaikki CNC-ohjaimet, jakaa yksittäisen liikkeen tarvittaessa useisiin liikeprimitiiveihin. Yksittäinen liikeprimitiivi lienee Machin sisäisessä esitystavassa ns quaternioni http://en.wikipedia.org/wiki/Quaternion joka onkin yleinen esitystapa. Jotta tuosta olisi jotain iloa ulkomaailmalle, on quaternionin kuvaama 3D-muunnos muutettava servojen tai stepperien ymmärtämään muotoon, eli siitä on generoitava askelpulssisekvenssi. Tämä tapahtuu jonkin ns. digitaalidifferenssialgoritmin avulla; yksi hyvin suosittu on Bresenham. Näillä algoritmeilla käyrä ensin projisoidaan niihin tasoihin joilla liike tapahtuu ja sitten ikäänkuin juostaan tuota käyrää pitkin kussakin tasossa siten, että pysytään koko ajan korkeintaan yhden etäisyyspulssin päässä käyrän oletetusta linjasta k.o. tasossa. Käytettäessä printteriportteja step/dir -pulssien kytkentään, suorittaa Mach3 tuon quaternioni-pulssimuunnoksen itse. Harmi vaan, että se ajatus ei toimi jos moottorinohjaimet kytketään Ethernet-ohjaimen kautta.

Jos Machin liikkeenohjaukset välitetään Ethernetillä breakout-kortille kuten juuri on nyt tarkoitus tehdä, niin valmiiksi laskettuja askelluspulsseja ei saa Machilta ulos. Tämä johtuu yksinkertaisesti siitä, että pulssijonojen tarkkoja ajastusvaatimuksia ei saa millään toteutumaan Eetteriverkon läpi. Sen sijaan Mach rakentaa omiin sisäisiin tietorakenteisiinsa rengaspuskurin, jossa on jonossa liikeprimitiivejä. Primitiivit ovat joko suoria siirtymiä tai kuutiosplinejä:

struct GMoves
{
   int type;    // 0 is linear, 1 is cubic
   double cx,cy,cz; // center of move for cubics.
   double ex,ey,ez,ea,eb,ec;
   double sx,sy,sz,sa,sb,sc;
   __int64  DDA1[6]; //DDA1's for cubics
   __int64  DDA2[6];
   __int64  DDA3[6];
   double Time;
   bool   Stop;
};


Näistä Ethernetin toisessa päässä olevan breakout-kortin pitää generoida pulssijonot siten, että liikeprimitiivi toteutuu. Eli tuossa tietorakenteessa on jokaisen liikeprimitiivin alku- ja loppupisteet kaikille akseleille, ja mikäli kyseessä on kuutiosplini, myös liikkeen episentri tai polttopiste. Parametri Time ilmaisee missä ajassa liike pitää suorittaa (max mitä Mach teettää on 64 ms per primitiivi). Tästä rakenteesta joudutaan siis bob:illa laskemaan rataohjaus kaikille 6 akselille samanaikaisesti.

Yhden lahjan Mach tosin antaa breakoutille, eikä se ole aivan mitätön: digitaalidifferenssianalysaattorin parametrit (DDA1..DDA3) on valmiiksi laskettu jokaiselle akselille. Näistä saadaan siis suoraan muodostettua nopeuden ensimmäinen ja toinen derivaatta, eli kiihtyvyys ja tempaus. Pulssingeneroinnin ongelmaksi jää sovittaa primitiivit saumattomaksi ketjuksi ja pysäyttää liike kun muuttuja Stop saa arvon tosi.

Ylläolevan lisäksi tulee paljon muuta ohjausta, lähinnä liikkeenohjauksen enablointiin ja kalibrointiin liittyvää, sekä tietty koko pluginin toimintamekanismi joka perustuu ajastettuihin sykleihin joilla data kuskataan Machin ja bob:in välillä.

Alkaa näyttää siltä, että FPGA:n käytöltä on vaikea välttyä jos tämän nyt meinaa oikeasti tehdä. Nuo pulssijonon laskennat vielä tekisikin sillä Atmelin ARMilla, mutta oikein missään mikrokontrollerissa ei ole tuon DDA-algoritmin vaatimaa oheishardwarea. Mikään yleisesti löytyvä pwm-generaattori ei tähän kelpaa, koska luonteensa takia tuo DDA joutuu juokseman pitkin käyrää ja ulostamaan ohjauspulssin aina kun otetaan yksi käyränseuranta-askel. Tämä on peruuttamattomasti laskemalla tehtävä juttu, ja FPGA:n vahvuus on kyky rinnakkaiseen laskentaan hyvin korkeilla kellotaajuuksilla. Vastaavasti heikkous on sikamaisen hankala toteutustyönkulku, niille kun ei varsinaisesti "kirjoiteta ohjelmaa" vaan niillä kuvataan vaatimuksen toteuttava hardware-rakenne. Ja joo, jos joku nyt miettii niin FPGA:lle kyllä saa erilaisia soft prosessoreita joita voi ohjelmoida vaikka C:llä, mutta niillä on juuri ne samat heikkoudet miksi aitokaan prosessori ei tämmöiseen oikein hyvin sovellu.
No, mulla on Xilinxin ISE Webpack asennettuna ja toimivana, joten otetaan lusikka käteen. Spartaneihin asti ainakin pitäisi lisenssit riittää, joten jos joku muu on niillä saanut tuon tehtyä niin ei se mahdotonta voi olla. Jatketaan homman miettimistä ja katsotaan mihin tökkää jos mihinkään. Sillä ARMilla on hyvä tehdä Ethernet-liityntä ja sanomajonon hallinta ym hommat jotka sopii paremmin aidosti ohjelmoitaville vehkeille. Siitä sitten muokataan nuo liikeprimitiivit FPGA:lle sopivaan muotoon.
Nothing sings like a kilovolt
Dr W. Bishop

Grinder831

 :o  ööööööööööööööööö.......???? ????? ????? ???? Nyt kyllä löi Kremmen sellasta tekstii että HUH HUH !! ISO Kumarrus ! Voi morjens Oikeasti !! Luoja tietää (Kremmen) mitä tästä voi seurata  :P  Iso Hatun nosto Jo tähän astisesta tutkimisesta ! Hienoa !   ;D

senaattori

Mää lähden tekeen kiilauria, sopivan primitiivistä mun ajatusmaailmalle, tuli oikeen hiki kun luin KUNNIOITETUN Kremmenin kirjoitusta ;D
Reijo Martinpoika Tuomala

Kremmen

Rauhallisesti nyt vaan :). Joka härillä kyntää, se häristä puhuu. Tässä nyt ei ole mitään oikeasti ihmeellistä, noin se homma tehdään joka jampan Machissa ja EMC:ssä ja kaikissa muissakin. Detaljit tietty vaihtelee, mutta ei periaate. Ei minuakaan tässä se hirvitä, ettei tuon matikan kanssa pärjättäisi, mutta tuollaisen FPGA:n soveltaminen käytännössä on aika kiharainen juttu. Tarvitaan kaiken maailman ulkoiset ROM-piirit konfiguraation talletukseen, ihmeellisiä käyttöjännitteitä - noi nopeammat Spartanit taitaa toimia jollain 1 voltin core-jännitteillä ja piirilevy täytyy suunnitella nopeille signaloinneille. Tulee paljon oheishupia varsinaisen asiasuorituksen lisäksi. Mahdollista on melkein kaikki, mutta voi tulla hikinen harjoitus ja jossain välissä pitää päättää tuleko tästä niin paljon parempi kuin nuo muut että maksa vaivan tehdä.
Nothing sings like a kilovolt
Dr W. Bishop

olli henttonen

#25
Mitäs jos se Mach3 plukkari olisi vain printteriportti emulaattori ja ohjais liikenteen sinne ethernetporttiin ja toisessa päässä sama juttu. Ja jos siinä olis tarpeeksi monta porttia emuloituna saataisiin tarvittavat pinnimäärät käyttöön?
dyykkari

senaattori

Kyllä tässä oikeesti pikkuhiljaa tietämyskin jollain sortilla kasvaa kun näitä keskusteluja jaksaa ahkerasti seurata, vaikka näissä projekteissa tuntuu enempi oleen tutumpia hommia nua kotelon reiitykset ;D
Reijo Martinpoika Tuomala

Hiekkaranta_92

Lainaus käyttäjältä: dyykkari - 05.12.12 - klo:10:08
Mitäs jos se Mach3 plukkari olisi vain printteriportti emulaattori ja ohjais liikenteen sinne ethernetporttiin ja toisessa päässä sama juttu. Ja jos siinä olis tarpeeksi monta porttia emuloituna saataisiin tarvittavat pinnimäärät käyttöön?

Juurikin sama kävi mielessä... mutta mietin kuinka realtime systeemi tuo olisi ja rajoitaako printteriportin standartoidut nopeudet; lähinnä jos halutaan kombinaatio nopea ja tarkka? Onko ethernet ainoa looginen ratkaisu? Olisko PCI kortti kuinka vaativa ajatus? Toisaaltase ainakin rajaa äkkiä läppärit pois...

Kremmen

Lainaus käyttäjältä: dyykkari - 05.12.12 - klo:10:08
Mitäs jos se Mach3 plukkari olisi vain printteriportti emulaattori ja ohjais liikenteen sinne ethernetporttiin ja toisessa päässä sama juttu. Ja jos siinä olis tarpeeksi monta porttia emuloituna saataisiin tarvittavat pinnimäärät käyttöön?
No siinäpä se haaste juuri on. Kun siis tuo ei ole mahdollista. Ajatellanpas asia läpi niin ymmärrätte kyllä miksi ei:

1: Mach3 / EMC / mikä vaan laskee rataohjauksen siten, että se jakaa ajan ( siis tämän meidän tunteman reaaliajan jota voi kellosta katsoa) inkrementteihin eli "pykäliin". Inkrementtien väliaika on niin pieni kuin mihin kone suosiolla pystyy. Olikohan niin, että Machista lähti 25 kHz, jolloin inkrementti on 40 us.

2: Liikkeen laskennassa Mach askeltaa pitkin haluttua liikerataa edeten halutulla nopeudella. Etenemä radalla per inkrementti määräytyy halutun nopeuden ja tuon minimiajan perusteella. Etenemisen aikana Mach laskee tuota aiemmin mainittua DDA-algoritmia jokaiselle radan pisteelle johon inkrementti osuu. Jos rata poikkeaa jossain suunnassa enemmän kuin yhden askeleen, annetaan kyseiselle akselille step-pulssi oikaisevaan suuntaan, jotta seuranta pysyy minimiaskeleen päässä radasta. Tästä siis seuraa, että mille tahansa akselille voi tulla pulssi mielivaltaisesti 40 us tai sen jonkin monikerran välein.

3: Koneen akselien liikenopeus on suoraan riippuvainen askelpulssien taajuuteen ja liikerata 3-ulotteisessa avaruudessa on suoraan verrannollinen eri akselien välisten pulssitaajuuksien erotuksiin. Esim jos halutaan liikkua X-Y -tasossa 45 asteen kulmassa nopeudella 100 mm/s ja askelpulssi vastaa 10 um liikettä, niin sekunnissa pitää antaa 7071 pulssia sekä X- että Y-toimilaitteelle. Nämä pulssit pitää antaa tasavälein sekunnin aikana jolloin taajuus olisi 7 kHz. Machin pitäisi siis lähettää 7000 Ethernet-sanomaa sekunnissa pystyäkseen pulssittamaan akselit pulssi kerrallaan. Tämä on mahdotonta paristakin hyvästä syystä: Ensinnäkään mikään PC ei tunge tuota määrää sanomia sekunnissa verkkoon ja toiseksi Ethernet ei ole ns. isokroninen verkko kuten esim julkisen puhelinverkon aikajakohierarkiat ovat. Tämä tarkoittaa sitä, että Eetterisanomalla ei ole mitään determinististä kulkuaikaa jolloin se olisi a) varmasti perillä jossain määräajassa ja b) sillä olisi jokin hyvin määritelty aikasuhde edelliseen sanomaan.
Lopputulos on, että Ethernetin läpi ei yksinkertaisesti voi kuljettaa tiukasti reaaliaikaista ohjausdataa.

Edelläolevista syistä Machin Ethernet-plugarit käyttävät systeemiä, jossa välitetään liikkeiden kuvauksia aiemmin esittämälläni tavalla ja nuo kuvaukset puskuroidaan jonoon. Jonossa täytyy aina olla liikeprimitiivejä odottamassa, koska jos se tyhjenee niin bob ei voi tietää mihin pitäisi liikkua seuraavaksi. Sen takia verkossa kuskataan liikkeitä eikä pulsseja. Tuo liikeprimitiivi syntyy Machissakin osana laskentaa mutta pulssien muodostusta edeltävässä vaiheessa. Mach itse siis tekee homman samalla tavalla, mutta se ei lähetä primitiivejä mihinkään vaan purkaa ne itse pulsseiksi omassa DDA-silmukassaan ja tunkee printteriporttiin. Plugari vain siirtää tuon DDA-laskennan verkon toiseen päähän.
Nothing sings like a kilovolt
Dr W. Bishop

olli henttonen

Oukei, sorry jos heittelen tyhmiä ehdotuksia ilmaan.
http://www.cs-lab.eu/en/galeria-zdjecie-dD-60-CSMIOIPM_4axis_Ethernet_Motion_Controller_STEPDIR.html
Tuollainen olisi se palikka mitä puuhapajalla on mielessä, edullinen ja siihen voip lisäillä eri palikoita tarpeen mukaan. 6 akselinen vastaava kustantaakin sitten jo kertaa kaksi. Ainakin nuo valmiiksi koteloidut olisi minulle mieleen, helpottaa asennusta vaikka nostaakin hieman kustannuksia.
dyykkari

Powered by EzPortal
SMF spam blocked by CleanTalk