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

Näytä viestit

Tämä jakso sallii sinun katsoa tämän jäsenen kaikkia viestejä. Huomaa, että näet vain niiden alueiden viestit, joihin sinulla on nyt pääsy.

Näytä viestit Menu

Viestit - dzy

#31
Toisaalta kun katselin Hiekkarannan tulkkauksia niin ne näytti hieman erilaisilta, ihmettelin tuota...

Tuo sarjadata on käänteinen normaalista eli käännän sen pulseviewissä, mutta samalla kun startti ja stoppibitti kääntyy niin kääntyy myös data... 05 luettuna toisinpäin (msb/lsb) on A0, mutta A0 sitten taas invertoituna on 5F... kiesus... Tuo näyttää tutummalta tavulta
#32
Asetuksella: 38400 baudia, even parity, one stop bit, lsb first sain seuraavat paketit. Nämä näyttäisi aina olevan neljän tavun paketteja.

Sallintanappi Y pohjassa
    05 00 FF FF                  (Näyttäisi olevan sama kuin pulssipyörä maksiminopeudella)
Sallintanappi Y2 pohjassa
    05 00 00 00                   (Näyttäisi olevan se no-op paketti)
Sallintanappi Y3 pohjassa
    05 00 00 00                   (Näyttäisi olevan se no-op paketti)
    05 00 FF FF                  (Näyttäisi olevan sama kuin pulssipyörä maksiminopeudella)
Sallintanappi Z pohjassa
    05 00 FF FF                  (Näyttäisi olevan sama kuin pulssipyörä maksiminopeudella)
    05 00 00 01                   (Näyttäisi olevan sama kuin pulssipyörä miniminopeudella)
Sallintanappi vapaa Y/Z
    05 00 00 00                   (Näyttäisi olevan se no-op paketti)
    05 00 00 00                   (Näyttäisi olevan se no-op paketti)
XJOG2
    A2 00 00 00
    45 00 00 01
    45 00 FF FF
    07 00 00 01
XJOG1
    45 00 00 00
    45 00 FF FF
X pikaliike
    E7 00 00 01
    A5 00 00 00
    A5 00 FF FF
    A5 00 00 00
X pikaliike 2
    A5 00 FF FF
    A5 00 00 00

Pulssipyörä paketti näyttäisi olevan näillä muotoa
    05 00 (signed int_16)

Pitääpä kassoa miltä nuo näyttää msb ensin paketteina

EDIT: paketin alkutavut on sellaisia että osa niistä pysyy ennallaan lukee sen tavun kumminpäin tahansa (E7), mutta esim. "Sallintanappi Z pohjassa" muuttuu
    A0 00 FF FF
    A0 00 00 80

Mutta samoin muuttuu tuo pulssipyöräajokin...

XJOG1 muuttuu
    A2 00 00 00
    A2 00 FF FF

XJOG2 muuttuu
    45 00 00 00
    A2 00 00 80
    A2 00 FF FF
    E0 00 00 80
#33
Tuo baudinopeus on ilmeisesti myös sen 38400 ja pariteettikin sieltä taitaa löytyä, muistaakseni even. Vähän teki omituista tulkkausta tuo pulseview ennenkuin ymmärsin laittaa pariteetin. Taisin aiemmin väittää ettei olisi pariteettia...

Askartelin uuden .csv käppyrä muuntimen, nyt se laittaa datan siihen muotoon että saan sen nätisti pulseviewiin sämpläystaajuuden kanssa.

EDIT: Tuo näytteenottotaajuus on ihan riittävä tai ainakin olen saanut PulseViewin nyt näyttämään järkevähköjä tulkkauksia. Tuo oma .csv muunnin vain aiheuttaa nyt hieman harmia, jätän siinä alun .csv tiedoston datasta käyttämättä ja aloitan dumppauksen vasta kunnes näytteenottotaajuus on tullut vastaan... Näytteenottotaajuus on varmasti tullut vastaan kun päästään aikajanalla nollan yli positiiviselle puolelle... :) Yhdestä käppyrästä jäi startista bitti puuttumaan, mutta pariteetti ilmoitti silloin olevansa viallinen.

Olen tulkinnut nyt näitä tällä asetuksella: 38400 baudia, even parity, one stop bit, lsb first.

Tuolla asetuksella saan "no-op" paketiksi kansiosta "käsipyörätila"  0x05, 0x00, 0x00, 0x00
Omassa se oli 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (nollien määrällä tietyn määrän jälkeen voi olla ettei ole merkitystä)

Tuota omaa konetta kun silloin rääkkäsin ja käskin kaikkien akselien liikkua sillä 0x5F käskyllä, niin näytöstä ei mikään akseli valikoitunut vaan XYZ(IV) pysyivät ei invertoituneina, sitten kun sitä räpläsi pois käsipyörätilasta ja takaisin niin välillä ne akselit joko kaikki tai osa valikoitui siihen ruudulle.

Toimiiko tuo kapula siten että kun siitä valitsee akselin niin se valinta näkyy myös monitorissa? Ajattelisin että noin sen pitäisi toimia.
#34
Kesti yllättävän pitkään toipua öivuorosta...  :-[

Aloin koittamaan saada nuo käppyrä datat PulseViewiin, jos niitä ite alan käsin purkamaan niin on enempi kuin varma että ketulleen se menee.
Askartelin pienen ohjelman joka ulostaa stdouttiin stdinniin tuodun .csv tiedoston binäärisenä ulos.

En saa tuota PulseViewin .csv importtausta toimimaan, en saa sitä edes huolimaan PulseViewin ite exporttaamaa .csv tiedostoa. Sen takia tuon pikkuohjelman ulostulo on binääri tiedosto.

Sämpläys nopeus meni yhdellä nollalla vikaan kun toin tuon binääridatan PulseViewiin tuossa videossa :)

https://youtu.be/VxmHwZUQHi8
#35
Älytöntä!

Koitan tässä unenpöpperössö lueskella yövuoron jälkeen, olen todella kiitollinen.

Tässä omassa TNC155A:ssa kun lyö sen käsipyörätilan päälle niin se normi tyhjä paketti on se 0x50 alkuinen, en ole koittanut katsoa vaatiiko se ne nollat loppuun pakettia. Voihan olla että TNC tarkkailee vastaanotettujen tavujen määrääkin.

Eilen koitin syöttää tuota dataa PulseView:iin, en siinä ainakaan äkkiseltään huomannut miten ne sinne saisi suoraan ja nettiä selailemalla muillakin on samantapaisia ongelmia sen PulseView:n importtauksen kanssa, se perhana kaatuu jos koittaa syöttää dataa mitä PulseView ei ymmärrä...  ::)

Oma TNC huolii siis sen HE-310 kapulan, voihan olla että näissä on eroja mutta uskoisin että jotain osviittaa tämä Hiekkarannan kapula voisi tähän tuoda. Eikait Heidenhain joka kerta keksi pyörää täysin uudelleen?

https://youtu.be/yRIk544Q-gI
#36
Aloitin koittaa tulkita noita skooppidataa. Iloinen yllätys että löysin vastaavuutta siihen mitä luulen saaneen jo selville. Aloittelen noista datoista mitä voin verrata omiin kokeiluihin.

Tuo "no-op" paketti minkä oma kone huolii on se 0x50 alkuinen (ja loput nollaa) ja Hiekkarannan skooppauksista löysin sen tuosta kansiosta "käsipyörätila"

Ilmeisesti Hiekkarannan kapulan lähetys on ilman pariteettia, jos nyt olen oikein tulkannut.

EDIT: eikun juu, en tainnut tulkata oikein. Ei ole viisasta laittaa starttibittiä datan bittien joukkoon heti alkuunsa...

Lainaa
MSB first
I = Idle
S = Start
s = Stop

I S01234567s I S01234567s I S01234567s I S01234567s I
0 1010111111 0 1111111111 0 1111111111 0 1111111111 0

  ~AF=50       ~FF=00       ~FF=00       ~FF=00

#37
Kiitoksia kovasti!

Itelle iski semmoinen "feature creep" tuon disassemblerin/emun kanssa, monenmoista versiota siitä pykäsin ja sitten aloin kirjoittelemaan IDA decompilerillekin jaettua kirjastoa vanhalla SDK:lla, Hexrays ei vastannut pyyntöihin saada IDA sdk 7.nollaa... :) (Linuxille on ilmainen IDA 7.0 mutta se ei tajua kuin puuceen prosessoria) Eivät tainneet tykätä kun huomasin että se kyllä tukee muitakin prossuja mutta ne jaetut kirjastot on vain poistettu ilmaisversiosta.

Tässä on nyt aikaa ennen yö vuoroa niin kiitollisena alan tutkailemaan noita antamiasi tietoja.
#38
Niin ne ajat vain muuttuu  ;D
Meillä töissä on kesätyöläisinä järkiään jonkin alan insinööriopiskelijoita. Siinä kun on tullut näiden kanssa juteltua ja koitettua selittää ettei silloin oikein ollut internettiä kun ite koitin lukea niin pelkkä ajatuskin semmoisesta tuntuu jotenkin mahdottomalta näille. Puhumattakaan lankapuhelimista ja sellaisen tuomasta liikkumisen vapaudesta :) Nyt tiedän tasantarkkaan metrin tarkkuudella missä oma jälkikasvu on...

Elektroniikka ei silloin pentuna ollut vielä mitään kertakäyttötavaraa vaan siihen joutui panostamaan aivan eritavalla ja tutustumaan siihen omaan kalliiseen laitteeseen. Mitähän tuo oma Amiga 500 silloin maksoi? Monta tuhatta markkaa omalla monitorillaan. Ei mikään pieni investointi.

Tuo Heidenhainin CLP levykin niin nykyään se mahtuisi yhdelle pienelle prosessorille ja tehot olisi monikymmen/sata kertaiset.

Tuolla lankulla ei ole muuta kuin se TMS9995 prossu (ulkoinen 8-bitin muistiväylä toiselle cpu kortille), sille erillinen sarjaporttikontrolleri, NEC7220 grafiikkapiiri ja viisi NEC:in ohjelmoitavaa logiikkapiiriä (https://www.dropbox.com/s/fdgmos3oy6o0b7i/nec_d65010_664551.pdf?dl=0) Noilla logiikkapiireillä on toteutettu se enkooderien laskenta. Kaikki tuo löytyy esimerkiksi stm32f/h7 prossusta. Koko lankun saisi pienempään tilaan kuin mitä nuo NEC:in logiikat vie...
#39
Moro, tuo olisi mahtavaa jos saisi skooppikuvaa.

Mulla on alla jotain sulautettujen järjestelmien insinööriopintoja, jätin sen aikanaan kesken. Jokunen kurssi ja lopputyötä vaille jäi.

Aloin ohjelmoida 10-vuotiaana Amiga 500:sella, nyt ikää on se 43. Mitään kovin hienoa en ole saanut aikaiseksi.
#40
Värkkäsin ensin semmoisen tekstipohjaisen "emulaattorin" Linuxin terminaaliin, mutta innostuin sitten vääntämään tuota oikein GUI pohjalle Qt:llä

Tuolla saa monta kätevää ominaisuutta tuohon. Rekistereitä voidaan helposti muuttaa ja siinä tulee kaupanpäälle undo toimintokin. Saan tuohon myös helposti hexaeditorin näyttämään muistin sisältöä jne. Jollain täpällä saan keskeytyksiäkin laitettua.

https://youtu.be/IIr6lW9bAZQ

Nyt tuo ROM koodi on suoraan tuossa emulaattorissa sisällä, mutta voin tehdä semmoisenkin että se ladataan ja jos tekee muokkauksia rommiin tai rämmiin niin koko helahoidon voi tallentaa ja jatkaa sitten kun innostusta taas löytyy samasta kohtaa ja tilasta mihin ohjelman ajo jäi. Joo, tää ny vähän karkaa käsistä.

En ole varma mutta voi olla että Mame arcade pelikonsoli retro hemmoilla on emulaattori tuolle grafiikkapiirillekin (nec7220), otin talteen sen fontti romminkin kuitenkin, niin voisi koittaa tuleeko mitään kuvaa. Virheilmoitukset on kyllä sen toisen prossukortin epromilla.
#41
Turvauduin äärimmäisyyksiin... Alkoi mennä vähän vanhaksi kääntää ohjelma tuolle lankulle ja ajaa se sinne ja sitten köpöttää pihan kautta pajaan ja käynnistää mylly ja katsoa toimiiko se... Niinpä aloin kirjoittamaan emulaattoria tuolle näyttökortille... TI99/A porukat on jo itelleen värkänneet emulaattorin niin pöllin siitä sen TMS9900 prossun koodin. Muuttelen sitä tässä hieman itelle sopivaksi. Voin tuolla suoraan pompata sinne kolmos keskeytykseen ja täyttää muistin sitä ennen miten haluan.
#42
Pitänee pitää pientä mietintä taukoa tämän kanssa. Sillävälin voisi alkaa suunnitella koteloa tuolle, tosin pitäisi tietää mitä kaikkea siihen voisi laittaa. Ainakin nämä nappulat mitä alkuperäisessäkin on.

Tuo käyttämäni stm32f103 prossu on oikein sopiva tähän hommaan. Olen noilla stm prossuilla leikkinyt nyt aika paljon. Tuo maksaa kiinankaupasta ostettuna jonkun 2€ (pikku proto lankku).

Tuossa stm32f103 prossussa on kaikki tarvittava, riittävästi io-portteja nappuloille ja sarjaporttejakin löytyy useampi, mutta mikä tärkeintä tuossa voi ajastimia käyttää suoraan enkoodereiden lukemiseen, ne käsitellään rautatasolla. Tuossa on TIM1-TIM4 ja niitä voi kaikkia käyttää enkooderien lukemiseen, sarjaporttina ei voi kyllä käyttää silloin USART ykköstä vaan USART kakkosta (menee muuten osin samoihin pinneihin)

Sen jälkeen kun nuo ajastimet on alustettu lukemaan enkoodereita niin sen lukeman saa suoraan pihalle TIMx->CNT 16-bittisenä lukuna (x=1-4) mitään muuta ei tarvitse tehdä. Olen porakoneella kiusannut 15-bittistä (32768) enkooderia eikä tuo prossu mene laskuissaan sekaisin.

Tuossa hieman isommalla stm prossulla tuota lukua, samoja ajastimia löytyy tästä pikkuveljestäkin.
https://youtu.be/DUfypsfkl-c
#43
Tässä on nyt jotain totaalisen väärin tässä räpeltämisessä. Kirjoitin C:llä ohjelman joka tulostaa 0x5_ käskyn toiminnan ja sen mukaan minun pitäisi kyetä valitsemaan siitä suoraan mitä akseleita haluan ajaa. Kuitenkin 0x5f on ainoa minkä se huolii... + se 0x50

Mitään 0xA_ käskyä se ei huoli (0xA0 pysäyttää kyllä koneen ja 0xAF herjaa x-akselin mittalaitevirhettä) Jokin aavistus on ja se liittyisi tuohon UART:in toimintaan... Melko epätoivoinen aavistus kylläkin, mutta kun en muuta nyt keksi.

EDIT: Olen lähettänyt tuolle suoraan ne tavut mitä koodissa tarkastellaan, e.g. 0x5F, mutta käännettynä se on 0xA0. Olisinko seurannut vääriä polkuja koodissa?

not 0xA0 = 0x5F
not 0xA1 = 0x5E
etc...

EDIT: Pitääköhän tuo sarjaportti sitten kuitenkin kääntää? Ehkä lähettämäni tavut on vain sattuneet olemaan sellaisia että TMS9902 ne huolii (start/stop/parity bits?) Voipi olla ettei tuota parityä edes tarkisteta.

EDIT: Hmmm... selittäisi sen miksi en aiemmin saanut mitään järkevää sillä 0xA_ käskyllä, 0xAF taisi osoittaa aina PLC:n inputtitavuun 0 jossa on akselien referenssi etc bittejä ja sitten vielä jos tuo UARTTI alkoi vastaanottaa väärästä bitistä niin 0xAF saattoi muuttua 0xA8:saksi


EDIT: Nope! Vielä vähemmän toiminnallisuutta. Kyllä tuo sarjaportti on oikeinpäin ja oikein konffattu. Mutta sitten taas välähti, tuossa ensimmäisen postaukseni linkissä puhutaan TNC viiveistä.

https://translate.google.fi/translate?sl=de&tl=en&u=http%3A%2F%2Fhsm-aktuell.de%2Fcnc-hr330.htm

LainaaI have come up with a different approach, which interpolates a signal period of 200 times as the original Heidenhain handwheel

Olen lähettänyt uuden paketin joka 6mS välein... :) Ehkä se ei siitä tykkää... Kaikkien akselien ajo on ehkä onnistunut jos se tekee ne järjestyksessä ja sitä kautta on tullut tarpeeksi viivettä tuohon hommaan.

EDIT: No ei ehkä sittenkään... 1s/200 = 5mS tai en tiiä, PLC ei ehkä tykkää jos sitä pommittaa 6mS välein

EDIT: Kyllä käännyn nyt sille kannalle että tuo vaatii jonkin tarkistuslaskennan tuohon noihin muihin kuin F:llä loppuviin käskyihin. Se koodi vain taitaa olla sielä toisella prosessorikortilla tai sitten ei.

Tuo tapa millä tuo sarjaporttipuskuri alustetaan saattaa antaa viitteitä että siinä xoorataan nuo 16-bittiset tavut ja laitetaan ehkä käännettynä sinne viimeiseen wordiin.

Lainaa
DC04   00 ch         ;00 alussa on pelkkä padi, ch on ensimmäinen vastaanotettu tavu eli tämä käsky
DC06   ch ch
DC08   ch ch
DC0A   ch ch
DC0C   ch ch

F loppuisilla käskyillä ei enää ole tilaa tuolle tarkistussummalle.
#44
Koko päivän koittanut saada selvyyttä miten PLC:n bitit ohitetaan, mutta turhaan. Ehkä olen ajatellut tämän liian tavukeskeisesti, tuo TMS9995 on kuitenkin bitin pyöritykseen erikoistunut.

Tuolla 0xAF käskyllä periaatteessa saan jotain asetettua (kenties invertoitua) eli jonkun bitin tuolta x-akselista. Koitin syöttää neljä tavua nollaa ja perään neljä tavua ykkösiä ja sitten toisinpäin. Sama mittalaite virhe kummassakin. Ehkäpä pitää lähettää 2 bittiä per inputti eli joko 0x55 tai 0xAA kahdeksaan tavuun.

Jotta noita PLC:n bittejä voi muokata niin pitää olla nollaus ja asetus mahdollista mutta sitten tarvitaan se älä sörki tilakin.
#45
Tutkailin tuota koodia lähemmin kun en oikein mitään tulosta saanut aikaiseksi. Lähettelin 0xa0 paketteja ja kone vain sammutti kaikki releet. Taisin löytää pienen bugin tuosta ohjaimen koodista, siinä shiftataan tuota 0xa_ käskyn alimpia neljää bittiä oikealle ja samalla kasvatetaan laskuria.

Tai hetkinen... Tuohan on ominaisuus... Nyt tiedän kolme eri käskyä 0x50 = no-op, 0x5F = kaikkien akselien pulssitus, 0xA0 = hätäseis (ei taida olla ihan kaikkien nykytaiteen sääntöjen mukainen)

Lainaa

               MOVB    @>dc0f,r3   ; paketin ensimmäinen tavu eli tämä 0xA_
               ANDI    r3,>0f00         ; nyt siinä on vain se _ osa eli neljä alinta bittiä
                SWPB    r3                 ; siirrä rekisterin R3 alimpaan tavuun, R3 on nyt suoraan se arvo mitä alempana lasketaan...

                CLR     r0               ; R0 nollaksi
A0490    INC      r0               ; Lisää yksi R0:llaan
                 SRL     r3,1            ; Siirrä R3:n sisältöä yksi bitti oikealle ja alin pullautettu bitti carry bittiin
                JNC     A0490        ; Jos carry bitti ei ole päällä niin tee tuo sama uudestaan 
                B          @A3C74   ; Nyt on hienosti siirretty rekisterin R3 arvo R0:llaan... kiesus... Nyt jos lähettää 0xA0 niin tuo jää pyörimään tuohon ikuisiksi ajoiksi tai jäisi mutta analogikortti laukaisee hätäseispiirin (jää se pyörimään)



Lainaa
Two "watch dog" monoflops are on the analog board.
These must be triggered separately once every 5ms by the CLP processor and once every 20ms by the main processor.
If the monoflops are not driven within 5ms an emergency-stop signal is triggered.

EDIT: Voisiko olla että 0x5(1/2/4/8) kuitenkin ohjaa yksittäistä akselia mutta vaatisi sen pariteetin sinne loppuun?
Noilla 0xA(1/2/4/8) sitten ajettaisiin PLC:n inputtien päälle oma bitti ja siihenkin se pariteetti loppuun?

EDIT: Käskyttelin tuota masiinaa noilla 0xAF käskyillä, en laittanut mitään pariteettia minnekään ja sain taas sen "MITTAJÄRJESTELMÄ-X VIALLINEN" ilmoituksen enkä "OHJAUS ELEKTRONIIKKA VIALLINEN B"
Tuossa kun ei ilmeisimmin pysty noita PLC:n inputteja lukemaan kun juttelu on tuon kapulan ja masiinan välillä yksisuuntaista, niin jotenkin ne PLC:n bitit pitää pystyä asettamaan ja nollaamaan.
Yksi tapa olisi ensin maskata ändillä bitit. Jos haluaa bitin nollaksi niin laittaa siihen kohtaan tavua nollan. Tuossa kun katselin merkintöjäni mitä milläkin on tapahtunut niin näyttää ehkä siltä että ensimmäisessä payloadin tavussa on aina ollut nolla siinä kohtaa missä voisi olla x-akselin rajabitti. Koitetaan 0xAF, 0xFF, 0x00, 0xFF, (1<<10) loput 0xFF, 0x00 pareja

Lainaa
0 7 E00 Reference end position X
1 6 E01 Reference end position Y
2 5 E02 Reference end position Z
3 4 E03 Reference end position IV
4 3 E04 Reference pulse suppressor X
5 2 E05 Reference pulse suppressor Y
6 1 E06 Reference pulse suppressor Z
7 0 E07 Reference pulse suppressor IV
0 7 E08 -
1 6 E09 Direction button X+
2 5 E10 Direction button X-
3 4 E11 Direction button Y+
4 3 E12 Direction button Y-
5 2 E13 Direction button Z+
6 1 E14 Direction button Z-
7 0 E15 Direction button IV+
0 7 E16 Direction button IV-
1 6 E17 Feedback: Auxiliary function completed
2 5 E18 Feed rate release
3 4 E19 Manual feed (opens position loop)
4 3 E20 Supervision of contact "Lock for spindle on"
5 2 E21 Rapid traverse button
6 1 E22 Start-button
7 0 E23 Stop-button

EDIT: Nope, sama mittalaitevirhe, koitetaan toisinpäin ensin set ja sitten clear
Powered by EzPortal
SMF spam blocked by CleanTalk