CNC-Harrastus

CNC-KONEEN SUUNNITTELU, RAKENTAMINEN JA TESTAUS => Ohjausjärjestelmän suunnittelu ja rakentaminen => Interface ja PC:t => Aiheen aloitti: Tugge - 21.01.14 - klo:22:40

Otsikko: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 21.01.14 - klo:22:40
Yritin löytää jotain threadia, jossa tätä olisi jo käsitelty, mutta sellaista ei tullut vastaan, niin aloitin sitten uuden.

Eli olen rakentamassa LinuxCNC:lle käsikapulaa tai kauko-ohjainta. Itseäni ainakin suunnattomasti ärsyttää hiirellä ja näppäimistöllä ohjata manuaalisesti konetta. Ajattelin toteuttaa tämän projektin siten, että käsikapula olisi ikäänkuin kustomoitu näppäimistö. Kuitenkin sillä erolla, että näppäimistössä on sen verran älyä, että se voi lukea potentiometriä (feed/speed override) ja digitaalista potentiometriä (pikaliikkeet). Lisäksi siihen voisi lisätä sen verran nappeja, että MDI-komentojakin pystyisi syöttämään. Projektin äly pohjautuisi tuttuun ja turvalliseen AtMega328 -prosessoriin ja Virtual-USB kirjastoon, jolla voi toteuttaa helposti näppäimistön.

http://www.obdev.at/products/vusb/prjhid.html (http://www.obdev.at/products/vusb/prjhid.html)

Mach3:een en ole juurikaan tutustunut, mutta luultavimmin sitä voisi käyttää tällä samalla ohjaimella. Vaihtaa vaan firmiksen ja homma on sillä selvä.

Jos muilla on kiinnostusta tälläiseen projektiin, niin voisin kyllä suunnitella ja kasailla levyt valmiiksi ja lähettää kiinnostuneille pientä muodollista korvausta vastaan. Voitaisiin jopa valita joku siiti kotelo ja tilata osia kimpassa, niin saattaisi siinä ehkä vähän säästääkin.

Itse en enää kauaa jaksa kylmässä autotallissa paljain käsin näppäimistöä käpistellä pienten juttujen takia :D

Edit: No löysinpä justiin tuon Martzizin suunnitteleman systeemin, joka toimii samalla tavalla...
Edit2: Paitsi tästä olen tekemässä sellaista, että yhtään mitään ei tarvitse linuxissa konfiguroida. Tästä siis vain tehtäisiin kustomoitu näppäimistö.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: jussi - 22.01.14 - klo:20:09
Täällä olis kiinnostusta käsikapulalle. Ärsyttää juuri nuo samat asiat :). Pikaliikkeet 3 akselille, feed over ride, pikaliikkeen nopeus, ja olisko tuohon mahdollista laittaa jog increment valinta?
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 22.01.14 - klo:20:29
Juu tarkoitus olisi, että tuollasella nokkakytkimellä säädetään onko pikaliikkeen steppi 0.01, 0.1 jne... Tarkoitus olisi tehdä sellanen boksi, johon tarvittaessa saa kaikki oletuspikanäppäimet kytkettyä: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Keyboard_Shortcuts (http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Keyboard_Shortcuts)

Lisäksi ainakin tuo feed override potentiometrillä, koska kuvittelisin, että sillain sitä on mukavampi käyttää. Mennään täysiä ku potikka on kaakossa :)

Ja se on tärkeintä tässä projektissa, että linuxcnc:tä ei tarvitse konfiguroida yhtään millään tavalla, jotta tämän kapulan saa toimimaan. Sen pitää siis toimia oikeasti plug and play -metodilla.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: jussi - 22.01.14 - klo:20:34
Eli levylle tulis valmiiksi inputit oletusnäppäimille ja käyttäjä sitten kytkee tarvitsemansa ja asentaa halutun määrän nappeja/potikoita.?
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 22.01.14 - klo:20:56
Juurikin näin.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: jussi - 22.01.14 - klo:21:04
Tuo olis kyllä hieno. Pikaliikkeet, nopeudet ja touch off on ehkä ne mitä eniten käyttää nenä kiinni terässä.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Martzis - 23.01.14 - klo:03:05
Minulta loppui oman ohjain v2 kehitys kun löysin tämän:
http://generichid.sourceforge.net/ (http://generichid.sourceforge.net/)
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 23.01.14 - klo:15:32
Tuo tuli itellekin vastaan. Ihan kätevä systeemi, mutta tuohon pitäisi kuitenkin rakentaa piirilevyt ympärille jne. Eli tuota voisi kyllä käyttää yhtenä pohjana. Toisaalta Arduinolle on valmiit kirjastot tuohon näppäimistön emulointiin, niin luultavimmin sen pohjalta lähdetään.

Loppullisesta tuotteesta tulee siis sellainen, että loppukäyttäjän ei tarvitse konfiguroida yhtään mitään. Ei tarvitse asentaa mitään ohjelmia eikä mitään muutakaan. Ainoastaan kytkee ne napit, jotka haluaa ottaa käyttöön, lyö kotelon kasaan ja kytkee USB:llä linuxiin, niin homma toimii. Tämä siis ensimmäiseen versioon.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 23.01.14 - klo:15:33
Onko muuten hyviä ja edullisia koteloideoita?
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: jussi - 23.01.14 - klo:16:27
LainaaLoppullisesta tuotteesta tulee siis sellainen, että loppukäyttäjän ei tarvitse konfiguroida yhtään mitään
Tuo olis kaiken tärkein ominaisuus mulle.
Esim.
http://www.ebay.com/itm/MHH-97B-ABS-Plastic-Box-Handheld-Enclosure-Case-Electronic-Project-/161104866039?pt=LH_DefaultDomain_0&hash=item2582992af7 (http://www.ebay.com/itm/MHH-97B-ABS-Plastic-Box-Handheld-Enclosure-Case-Electronic-Project-/161104866039?pt=LH_DefaultDomain_0&hash=item2582992af7)

näitä riittää ebayssa eikä maksa hirveitä.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Martzis - 23.01.14 - klo:19:07
Mä mietin tota näppisemulointia kanssa, mutta mul tuli vastaan pari ongelmaa:

Miten saada rotary encoder toimomaan tarkasti?
Miten välittää potentiometrin arvo?
Miten estää että näppisemulaatio ei mee väärään sovellusikkunaan?

Mä panostaisin ajuriin joka asentuu helposti. Vois kuvitella et sen saisi mukaan helposti osaksi linuxcnc:tä jos ohjain on hyvä. Kyllähän sitä joutuu jonkin verran kumminkin konffaamaan jotta saa servot toimimaan.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 23.01.14 - klo:20:13
Noita samoja juttuja oon itekin miettiny ja oon aatellu ratkaista ne näin.

Eli pikaliike rotary encooderilla tapahtuis siten, että ensin valitset akselin ja sitten kun akseli on valittu, niin yksi naksaus rotary encooderilta aiheuttaa näppäinpainalluksen kyseiselle akselille. Eli jos x-akseli valittu, niin yksi naksu vastaa näppäimen nuoli vasen tai nuoli oikea -painallusta. Eli sama jos perus näppikseltä näpytän nuolinäppäimiä, kun käyn hakemassa nollakohtaa.

Tuo feed overriden meinasin tehdä siten, että vaikka potikka onkin analoginen, niin sillä on oikeasti kymmenen steppiä ja jokainen steppi vastaa näppiksen näppäimiä 0-9.

Sitä ei voi mitenkään tällä käsikapulalla estää, että linuxCnc:ssä on koko ajan oikea ikkuna auki. Käyttäjän on pidettävä siitä huoli, että linuxissa on Axis aktiivisena ikkunana, mikä kyllä yleensä onkin, kun säätää terää tms.

Kyllähän tässä sudenkuoppia voi tulla vielä vastaan, joita ei ole osannut ottaa huomioon, mutta katsotaan ja kokeillaan.

Ideaalinen tilannehan olisi juuri tuollainen linuxCnc:n sisälle rakennettu ajuri, mutta jos se olisi ollut helppo tehdä, niin joku sen olisi jo tehnyt. Sitten sen pitää toimia uusissa ja vanhoissa versioissa jne. Toisekseen oma linux-osaaminen on juurikin sillä tasolla, että saan tuon järjestelmän pystyyn. Jos rinnakkaisportti ei toimi suoraan, niin aletaan olemaan minun linuxosaamisen äärirajoilla :D

Kotelosta: Tälläseen koteloon rupesin suunnittelemaan tuota piirilevyä: http://fi.farnell.com/jsp/search/browse.jsp;jsessionid=B0PMYW3HTXDHSCQLCIPJK0Q?N=0&Ntk=gensearch&Ntt=1553DBK&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=181341 Edullinen ja näyttävä kotelo. Lisäks siitä löytyy 3d-mallit, niin levyn mitottaminen on helpompaa :P

Piirilevy on melkein valmis ja ohjelmointikin on päässyt vauhtiin. Vähän ongelmia tuottaa se että tuota AtMega32u4 -piiriä ei tunnu saavan helposti, niin tyydytään sen pikkuveljeen (AtMega16u4). Uskoisin, että siinä riittää muisti meidän tarpeisiin.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: jussi - 23.01.14 - klo:23:34
En näkisi ongelmana tuota oikean ikkunan aukioloa, kun joka tapauksessa kapula kädessä on sitä ruutuakin seurattava.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: jussi - 24.01.14 - klo:21:09
Sellainen huomio tuli tehtyä tänään jyrsiessä, että manual control modessa 0-1-2 napit aktivoi x-y-z akselit.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: pave - 24.01.14 - klo:22:38
En oo tarkemmin tutustunut. mutta tällänen tuli vastaan:http://www.youtube.com/watch?v=i0nB1kCrGEc
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 26.01.14 - klo:12:14
Nonniin. Tänään saa laitettua piirilevyt tilaukseen. Siinä tuleekin sitten viivettä, kun joutuu tuolta kiinasta tilailemaan.

Tässä on muutama kuva, miten levy tulee kotelon sisälle sijoittumaan:
http://sdrv.ms/1d3rFTQ (http://sdrv.ms/1d3rFTQ)

Tuo peliohjainsysteemi on ihan mielenkiintoinen, mutta siinäkin pitää mennä tuota hal-tiedostoa säätämään.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Martzis - 30.01.14 - klo:20:28
Tuli tollanenkin vastaan:
http://hackaday.com/2014/01/29/satisfying-way-to-build-projects/ (http://hackaday.com/2014/01/29/satisfying-way-to-build-projects/)
http://www.pjrc.com/teensy/usb_keyboard.html (http://www.pjrc.com/teensy/usb_keyboard.html)

Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Tugge - 30.01.14 - klo:21:42
No siinähän on juurikin ne asiat, mitä tässä tehdään. Tuo teensy-esimerkki on kyllä hyvä, kun siinä on tuolle samalle prossulle tehty valmiiksi toimiva esimerkki, niin ei pitäisi olla ongelmia saada sitä toimimaan. Kiitoksia näistä linkeistä.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: masaV - 25.03.16 - klo:20:51
lueskelin tätä ja huomasin tuon atmel 32u4 piiristä puhuit ettei saa ??? just tilasin arduino micron ja leonardon (jotka käyttää juuri tuota piiriä sen usb hid takia) ei maksa valmiina levynä kuni 3-6€ kpl. Teensystä taas pyytävät törkeitä hintoja vaikka sama piiri siinäkin vain on. mitä itte tilasin noita ebaystä.vai oliko se banggoodilta. eli mieluummin käyttää halvemoina noita arduino micro tai leonardon kiinan kopio kortteja saa kaiken valmiina muuta kuin ohjelmat (ties mitkä) sisään, itekin kiinnostunut ja tilasinkin microja jo mutten vaan saa tajuttua miten tuon saa esim vain switch käyttöön tai vain encoderit käyttöön tai vain analog inputit käyttöön, eri korteilel siis eri inputit ja maksimi määrä mitä ottaa vastaan.

tuohon knu vielä osaisi tehdä sen ohjelman että saa usb hid käyttöön plug and play tuon pitäisi mennä pc/linuxiinkin . ohjeita kaivataan tuon käyttöön kyllä. uno sun muut mega kortit ei käy kun ei ole suoraan usb hid yhteensopivia mutta sisuskalut kokonaan uusiksi polttamlla käy tuohon käyttöön ei tarvis microon kuin johdot juottaa napeille/encodereille.
ite tarvisin yhden kortin peruskäyttöön eli hid tuettuun perus korttiiin eli 6 akselia potentiometer,+32 nappia/kytkintä.

toisen 16 encoderia ja jos tilaa jää niin nappeja lisää.

ja ehkä myöhemmin yhden vielä missä olisi nini monta potikkaa kiinni mitä vain saa siihen .
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Maukka - 25.03.16 - klo:22:44
no toivottavasti tämä ketju on jo luettuna http://www.cnc-tekniikka.com/CNC-forum1/index.php?topic=391.msg30331#msg30331
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: awallin - 28.03.16 - klo:22:16
wanhaa asiaa vuodelta 2006, jos nyt ketään kiinnostaa:
http://www.anderswallin.net/2006/11/jogging-emc2/

suorat johdot pyörältä ja napeilta (optoerottimien kautta) Mesa PCI-kortin IO linjoihin.

riski kaikenlaisissa USB, HID, microkontrolleri, ajuri yms virityksissä on että real-time tuntuma kärsii, ts. kone ei liikahda ihan siihen tahtiin mitä rattia vääntää.
tosin aika moni on kai linuxcnc-foorumilla kokeillut näitä USB-peliohjaimia ja tuntuma on ehkä riittävän hyvä.. myös video-editointiin myydään USB-pyröiä. ehkä ei käänny täysin 360-astetta mutta ainakin reilusti oikealle/vasemmalle jotka vastaa 2 tai 3 kelaus-nopeutta.
(hätä-seis nyt on eri asia, sitä ei kannata vetää minkää älykapulan, usb-johdon, ja userspace-ajurin kautta! mutta tämänhän kaikki jo tiesi...)
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 30.03.16 - klo:09:12
Terve

Tuota samaa on hiukan havaittavissa kaikissa noissa "user space" komponenteissa.
Itse laitoin normi pulssipyörän kiinni mesan kautta ja tuntuma on täydellinen.

Nyt on menossa projekti, jossa tein user space komponentin Advantech PCI-1710 kortille.
Siinä on 16 analogi- ja 16 digitaali-inputtia, sekä 16 lähtöä.

Sain näillä feed override:t ja jog speedit potikoiden taakse, mutta reaaliaika tuntuma näissä vähän kärsi.

Tarkoitus olisi siirtyä jollakin aika välillä mesan 7I65 korttiin ja sen rinnalla kahteen mesan io-korttiin.
Tällä paketilla saisi näppärästi hoidettua 6 servoa , karan ja pulssipyörät.
Loppu nopea IO jäisi käyttöliittymän tarpeisiin.
Tällöin kaikki IO olisi mesan reaaliaika komponentin hoidossa.

Tässä tuo nykyinen käyttöliittymä:
https://www.youtube.com/watch?v=4d0Cn98bVCA

Ongelma on vielä tuo HAL_UI:n ja AXIS käyttöliittymän yhteistoiminta.
Jostakin syystä nuo viestit mitä HAL_UI lähettää ei mene motion controllerille perille yhtä hyvin,
kuin AXIS_käyttöliittymän lähettämät viestit.

Videolta huomaa kuinka jokainen napinpainallus luetaan sisälle,
mutta aina liikettä ei tule tai liikkuu pitenpään kuin nappi on pohjassa.




Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: masaV - 17.04.16 - klo:20:44
leo bodnarilla on myös hyäv input kortti, johon saa helposti kaikki potikat,kytkimet,napit ja encoderit kytkettyä, tuota olen käyttänyt monessa ohjaimessa ja pelikoneissa myös, esim lentosimulaattorissa nyt tuo viimeisin kortti kiinni.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: roivai - 14.09.16 - klo:22:05
Terve,

Hitusen vanha ketju, mutta jatkanpa tähän omasta projektistani kun otsikko on täsmälleen oikea.

Rakentelin lähinnä koemielessä Wifi-käsikapulan. Vehje perustuu ESP8266 kiinaihmeeseen, eli muutaman dollarin wifimoduuliin ja lisäksi sisällä on STM32 mikrokontrolleri, eli ESP-moduulia käytetään vain Wifi-sarjaportti-adapterina. Sinänsä tuo toinen prossu on turha, olisihan homman voinut tehdä pelkällä ESP:llä ja jollain IO-laajentimella, mutta minulla oli toisen projektin tiimoilta melkein valmis softa STM32:lle ja myös siihen käypä LinuxCNC-ajuri, joten hyödynsin niitä. Kukaan vakavasti otettava koneistajahan ei toki laita mitään tällaista Wlanin varaan :) Mutta yllättävän hyvin tuo parin illan kokeilujen perusteella näyttää toimivan.

Pari kuvaa palikasta löytyy osoitteesta http://pekka.eu/cnc/pendant (http://pekka.eu/cnc/pendant).

Kuten kuvista näkyy, niin palikasta löytyy perusjutut, eli juoksupyörä, sille akselin ja kertoimen valinta. Lisäksi neljä nappia ja neljä lediä, joista kaksi kertoo itse palikan tilasta ja kaksi on ohjelmoitavissa LinuxCNC:stä. Johdotus on.. noh, melko kaamea, mutta protohan tämä onkin. Kotelo on 3D-tulostettu, ei mikään ergonomian riemuvoitto sekään. :D

Softa on toteutettu siten, että kapula itsessään ei tiedä että mihin pinniin on kytketty mitäkin, vaan yhteyden muodostuksen jälkeen LinuxCNC-ajuri lukee konffaustiedoston ja kertoo kapulalle käytössä olevat pinnit ja niiden tyypit ja luo niitä vastaavat pinnit myös LinuxCNC:n HAL-kerrokseen. Näin voin siis vaikkapa lisätä ledejä tai nappeja niin kauan kun prossussa riittää pinnejä, mutta minun ei tarvitse ohjelmoida kapulaa uudestaan, rivien lisääminen konffitiedostoon riittää. Tällä hetkellä tuettuna IO-tyyppeinä on input, output ja quadrature encoder, jota tuon juoksupyörän lukemiseen tarvitaan.

Parin illan kokeilun perusteella tuo tuntuisi tosiaan toimivan ihan hyvin. Vaikka Wlan-tukiasema on eri rakennuksessa kuin jyrsin, eli parin ulkoseinän läpi mennään, signaali kuuluu kohtalaisesti. Toki jos kapulan ja tukarin väliin laittaa vielä reilusti metallia (kuten jyrsinkoneen), niin signaali lakkaa kuulumasta. Tämä siis toimii tällä hetkellä ESP-moduulin piirilevyantennilla. Tilauksessa on tuommoinen patukka-antenni jolla kuuluvuuden pitäisi vielä parantua. Ja jos sekään ei riitä niin laitan toisen wlan-tukarin tuonne pajan puolelle.

Virtaa tuo kapula saa kahdesta 18650-koon litium-kennosta. Laitoin kaksi, koska n. 7.4V jännitteestä on mukavampi tehdä 5V hakkurilla kuin yhden kennon 3.7V:stä. Virrankulutus näyttäisi olevan vähän yli tai alle 100mA riippuen ledien tiloista, eli n.2000mAh kennoilla pitäisi pystyä ainakin 15h toiminta-aikoihin. Harvoin tulee niin kauan koneistettua. :)

Ehkä nyt en suosittele kenellekään tämän tekemistä, saahan noita langattomia pulikoita netistä satasella, mutta jos jotakuta kiinnostaa toteutuksen yksityiskohdat niin kerron toki mielelläni lisää ja voin myös nuo lähdekoodit laittaa jakoon.

Pekka
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 14.09.16 - klo:23:28
Terve

Aika kiinnostava, itse käytän langalista versiota ja käyttöpaneelin luku/ohjaus on PCI pohjaisella standardi IO kortilla.
Tuon kortin kanssa käytän Comedi kirjastoa ja kirjoitin pienen userspace softan IO ja AI tulojen lukuun.

Millainen softa palikka tuota langatonta lukee?
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: roivai - 15.09.16 - klo:10:27
Mitään muuta softaa ei ole kuin tuo LinuxCNC-ajuri. Ohjauskone on toki samassa verkossa tuon Wifi-palikan kanssa, ja ajuri lähettää mokkulalle UDP-paketteja, joissa se kertoo outputtien tilat ja paketin saatuaan mokkula vastaa kertomalla inputtien tilat. Tällä hetkellä ajuri yrittää lähettää paketteja 50 kertaa sekunnissa, mutta en ole ihan varma, että pystyykö se siihen.

Tuo kapula tosiaan pyörii userspacessa. Alkaen versiosta 2.7 LinuxCNC:stähän löytyy myös tuki käyttää Ethernet-socketteja ja muitakin kernelin userspace-IO:ta reaaliajassa, kun käytetään Preempt-RT-tyyppistä reaaliaikakerneliä. Dokumentaatio aiheesta on aika surkeaa, mutta tuolta löytyy jotain: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Uspace (http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Uspace). Tällä konstilla on saatu ajettua mm. tuota Mesan Ethernet-pohjaista 7180-korttia. Mainitsinkin tuossa aiemmasta projektista STM32:lle. Yritin siis tehdä tuollaista reaaliaika-IO-korttia, ja jossain määrin onnistuinkin, mutta nyt projekti on hautautunut muiden alle.. Kirjoittelin aiheesta jotain juttua tuonne: http://pekka.eu/cnc/ (http://pekka.eu/cnc/)
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 15.09.16 - klo:13:28
Terve

Käytössä itsellä on tämmöisiä:
http://www.adlinktech.com/PD/web/PD_detail.php?pid=20

Ja yks kortti jossa lisäksi analogi tuloja.

Nyt käytän COMEDI ajureita noiden korttien ohjaamiseen, mutta olisi mahtavaa jos saisi kirjoitettua suoraan reaaliaika palikan noille.
http://www.comedi.org/

Pystytkö tossa reaalipalikan ohjelmoinnissa  auttelemaan?
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: roivai - 15.09.16 - klo:19:34
Täytyy kyllä sanoa, että saattaa mennä hitusen mun osaamistason yläpuolelle, ainakin jos tuon haluaa RTAI-kernelin kanssa toimimaan eli kernel-spaceen. Tuon Comedin dokumenttien mukaan kernelimoduulit ja tuki RTAI-kernelille on kyllä olemassa joten tehtävissähän tuo varmasti on, mutta mulla on siitä puolesta kokemusta täysin nolla. Tuolla uudella Preempt-RT-kernelillähän pitäisi onnistua teoriassa käyttämään melko suoraan tuota comedilibiä, joten siten ehkä vois osatakin. Mutta se, että millainen reaaliaikasuorituskyky sillä saadaan jää varmaan arvailun varaan. Olen siinä käsityksessä että RTAI-kernelillä suorituskyky jo lähtökohtaisesti on parempi.

Sen verran alkoi kuitenki kiinnostamaan että selasin ebaytä ja siellähän oli Thaimaassa myynnissä käytetty NI:n DIO-96-kortti parilla kympillä. Laitoin tilaukseen. :)
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 16.09.16 - klo:08:46
Terve

Mulla setuppina on 10.04 ubuntu ja uusin linuxcnc.

Toi 96 pinninen levy on siinä mielessä mahtava kapistus että ton käyttöliittymän pystyy rakentamaan suoraan sen varaan.
Jopa Feedoverridelle jää riittävästi nastoja... :)

Preempt-RT- ja RTAI....  Eikös tämä liity nyt jotenkin tuohon realiiaika pohjaan linukan puolella?
Mikkäs noiden käytännön erot on?

Sorviin kasailin juuri MiniITX koneen Mesan PCIe kortilla, siinä taas 4 ytiminen 64bit prossu joten pohjalla debian ja uusin linuxcnc.

Mulla on valmis palikka tuohon userspace puolelle, saat kyllä sen käyttöön ja jatkokehitystä varten.
Tuo Comedilib ei pysty asentamaan Rtai puolelle, ainakaan kovin helposti.
Muistaakseni vaati stdio.h ja se taas ei tuettuna reaaliaika puolella.
Joitain muista vastaavuuksia löisin, sen takia luovutin tuon tuohun ja siirryin userspace puolelle.
Siinäkin tuli rajoitus vastaan jotain asiaa ei pystynyt koodia kääntäessä tekemään ellei ollut 2.7.0 uudempi linuxcnc.






Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: roivai - 18.09.16 - klo:19:42
Lainaus käyttäjältä: Jussik - 16.09.16 - klo:08:46
Preempt-RT- ja RTAI....  Eikös tämä liity nyt jotenkin tuohon realiiaika pohjaan linukan puolella?
Mikkäs noiden käytännön erot on?

Käytännön saati teorian eroista ei minullakaan ihan hirveän syvällistä käsitystä ole. Reaaliaikakernelin toteutustapoja molemmat siis ovat. Jostain tiivistetysti luin, että RTAI on tavallaan oma, erillinen reaaliaikakernel, joka pyörii tuon linuxin kernelin sisällä. Tällöin sillä on myös tarkasti rajattu oma rajapinta mistä siihen pääsee käsiksi. Kuten sanoitkin, normaali userspace-io, kuten vaikka stdio.h ei pelaa. Tuo Preempt-RT on taas muunnelma siitä varsinaista kernelistä ja sen schedulerista (mitähän tuokin on suomeksi) joka on optimoitu toimimaan paremmin reaaliajassa. Tällöin siis mahdollistuu paremmin ihan tavallisten ohjelmien ja laiteajurien käyttö reaaliaikakäytössä. Varmaan hyvinkin mutkia suoristava esitys, mutta näin olen sen itselleni selittänyt.

Käytännön tasolla LinuxCNC:ssä tuo ero näkyy siten, että tuo perinteinen LinuxCNC, eli kaikki ennen versiota 2.7 ja myös 2.7:n "vakioasennus" toimii vaan tuolla RTAI:lla ja vielä siten, että se vaatii tismalleen tietyn version kernelistä. LinuxCNC 2.7:sta löytyy taas sitten versio linuxcnc-uspace (esim tuolta http://buildbot.linuxcnc.org/), joka toimii tuolla Preempt-RT kernelillä.

Reaaliaikakernelien saatavuus valmiina pakettina vissiin vaihtelee aika paljon. Ubuntun tilanteesta mulla ei ole kovin hyvää käsitystä, itsellä on ollu Debian käytössä. Siellä Debian Wheezylle löytyy ihan suoraan paketinhallinnasta sekä RTAI (lyhenne rtai kernelin nimessä) että Preempt-RT (lyhenne rt), kun taas uusimmalla jakelulla Debian Jessiessä ei oikein ainakaan tuot rt-kerneliä löytynyt. Jostain löysin jonkun hepun itsensä kääntämän rt-kernelin Jessielle ja se tuntuis toimivan. Tietysti jos osaa ja viitsii kääntää itse, niin saahan sen mille tahansa jakelulle.

Lainaus käyttäjältä: Jussik - 16.09.16 - klo:08:46
Mulla on valmis palikka tuohon userspace puolelle, saat kyllä sen käyttöön ja jatkokehitystä varten.
Tuo Comedilib ei pysty asentamaan Rtai puolelle, ainakaan kovin helposti.
Muistaakseni vaati stdio.h ja se taas ei tuettuna reaaliaika puolella.
Joitain muista vastaavuuksia löisin, sen takia luovutin tuon tuohun ja siirryin userspace puolelle.
Siinäkin tuli rajoitus vastaan jotain asiaa ei pystynyt koodia kääntäessä tekemään ellei ollut 2.7.0 uudempi linuxcnc.
Joo RTAI-kerneliin tuskin menee sellaisenaan. Tuolla Comedin sivuilla kyllä mainitaan yhteensopivuus myös sille, mutta aika vähän löysin mitään juttua aiheesta kun koetin googletella. Mielelläni otan kyllä referenssiksi sun palikan, vois kokeilla että saako sen ensin vaikka kääntymään reaaliaikaan tuolla toisella kernelillä. Toiminnan testaukseen toki vaatii vielä viikon tai pari postikustin odottelua. :)

Pekka


Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 19.09.16 - klo:22:07
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.
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: roivai - 25.09.16 - klo:23:11
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
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 26.09.16 - klo:11:57
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.

Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: roivai - 26.09.16 - klo:20:52
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
Otsikko: Vs: Käsikapula LinuxCNC:hen
Kirjoitti: Jussik - 26.09.16 - klo:23:54
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.