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

Käsikapula LinuxCNC:hen

Aloittaja Tugge, 21.01.14 - klo:22:40

« edellinen - seuraava »

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

Jussik

Terve

Muistin väärin sen comedin käyttö vaatii 2.6.0--> LinuxCNC version.

Eli comedi_driver.comp on se linuxcnc:lle käännettävä userspace componentti.
Muistaakseli comedilib oli jo vakiona 12.04 ubuntussa, en sata varma.
no asentaminen on kuitenkin aika helppo.

Toi comeditest.c on c pätkä joka lukee kortin tiedot.
Muistaakseni toi 96 IO kortti antoi ohjaimeksi jonkin muun, mutta toimii täydellisesti sillä.
Ei kannata ihmetellä.

Muutos prosessi on jossakin vaiheessa alkamassa itelläkin, korvaan toi analogi potikka paneelin tolla hitatchi seikin paneelilla.

roivai

Kävin tänään hakemassa IO-kortin postista ja sainpa comedi-ajurini pelaamaan reaaliajassa tuolla LinuxCNC 2.7-uspace versiolla. Itse ajuri oli sinun koodien + netin esimerkkien + omien aiempien tekeleiden perusteella helppoa, hirveä tappelu oli vaan saada comedi ensin toimimaan tuon NI:n kortin kanssa.

Tuo ajuri on vielä kovin epäkypsä, se mm. lukee jokaisen bitin erikseen, kun tuettuna olisi myös noita funktioita joilla luetaan/kirjoitetaan kokonainen IO-pankki kerrallaan. Mutta äkkiä tuossa kokeilin laittaa parikymmentä IO-porttia outputeiksi ja niiden kirjoittaminen kesti n.70us, eli sanoisin että ihan joutuisasti toimii noinkin.

Siistin vähän tuota ajuria ja laitan sen johonkin jakoon jos haluat kokeilla. Se tosiaan vaatii sen preempt-rt kernelin ja tuon 2.7-uspace-version LinuxCNC:stä. Äkkiä googlettelemalla katsoin, että Ubuntulle ei ainakaan virallista pakettia ole tuosta rt-kernelistä.. Nuo kaikki LinuxCNC:n viralliset ohjeetkin näyttää nykyään pohjautuvan debianiin (jolle sillekään ei uusimmalle versiolle ole suoraan kerneliä tarjolla).

Pekka

Jussik

Terve

Juu tuo alkuperäinen tarkoitus oli lukea noi inputit 16 tai 32 bit muuttujaan,
josta nuo yksittäiset bitit luettaisiin osoittimen kautta esim näin:

comedi_dio_bitfield2(it,2,0x0,&input,0);  // luetaan ja kirjoitetaan portti kerrallaan yhdellä funktiolla, tulotiedot menee input muuttujaan.


#define Cycle_Start_Button ((shortbitstruct*)(input))->b5 //  tämä osoittaa input muuttujan yhteen bittiin.

Bitti structuuri on määrätty seuraavasti:

typedef struct shortbitstruct{
   uint_16 b0:1,
               b1:1,
               b2:1,
               b3:1,
               b4:1,
               b5:1,
               b6:1,
               b7:1.....jne
}shortbitstruct;


Tää arkkitehtuuri ei vaan sopinut yhteen tuon Linuxcncn kanssa, sen takia noi tulot on sitten parsittu yksitellen noihin DI(n) muuttujiin comedi driverissa.
Toi oli semmonen quick and dirty solution, piti saada äkkiä paneli toimimaan.

Tähän jos löytyisi jokin keino tehdä toi mappaus automaattisesti kuten toi bitti structuuri.

Laita van koodia tänne, jokin muukin voi hyötyä tästä keskustelusta.


roivai

No, enpä ehtiny juuri optimoimaan, mutta tuoltapa löytyy paketti joka sisältää ajurin ja Makefilen sekä esimerkin tiedostosta comedi.conf. Ainakin mulla kääntyy ihan sudo make install tuosta. Comedi pitää toki olla asennettuna ja linuxcnc-uspace-dev. Tuo periaattessa kääntyy myös userspace-ohjelmaksi joka vois toimia periaatteessa myös 2.6-sarjan LinuxCNC:llä, mutta kääntämiseen tarvitsee puukottaa linuxcnc:n sisäisiä makefilejä. Mutta realtime kai tässä nyt kiinnostaa.
http://git.pekka.eu/?p=comedidrv.git;a=snapshot;h=HEAD;sf=tgz

Olen tehnyt tuon configuroitavaksi siten, että LinuxCNC:n konffihakemistossa (siis siellä missä on .ini ja .hal) pitää olla tuommoinen file comedi.conf, jossa määritellään että minkä niminen inputti tai outputti on missäkin Comedin subdevicessä&kanavassa. Esimerkin pitäisi valaista aika hyvin. Ajuri tekee sitten HAL-pinnit noiden annettujen nimien mukaan.

Noissa IO-korteissa monesti on rajoituksia, että samassa portissa ei voi olla sekä inputteja että outputteja. Tuo ajuri ei tarkista mitään tällaisia rajoituksia, joten jos samaan porttiin laittaa sekä inputin että outputin niin todennäköisesti ainakin jompikumpi ei toimi. :) Ja tuo tukee ainoastaan digital I/O -tyyppisiä kortteja.

Ajurin tekijä ei vastaa mistään vahingosta jonka ajurin käyttö aiheuttaa. :)

Pekka

Jussik

Terve

Tuohan näytti hyvälle. Käytän varmaan joitain osiota tuosta omassa ajurissa.
Suoraan ei käänny Rtai puolelle ja ton Rtai ympärillä käännetyllä linuxcnc on jonkin verran omia vaatimuksia ton ajurin suhteen.

Muuttaisin noi erilliset IO luvut ja kirjoitukset comedi_dio_read ja comedi_dio_write -->comedi_dio_bitfield2 tuo hoitaa molemmat sekä outputtien kirjoituksen että inputtien luvun samalla kertaa.
Nopeuttaa hiukan toimintaa.

Mä siirryn kanssa kohta toin 96IO kortin käyttäjäksi kunhan vaan kerkeän pulttaamaan ja johdottamaan ton hitachi seikin paneelin ton vanhan tilalle.
Samalla päivittelen ton ajurin uuteen uskoon.

Powered by EzPortal
SMF spam blocked by CleanTalk