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

Aiheet - dzy

#1
Moro,

Hommasin halvalla (yllätys sinällään) tommosen 11uA vitkuttimen Ebaystä ja nyt pitäs saada siihen pitempi johto, en vain keksi miten tuo purkki on kasassa. Koitin sitä varovasti kiilata auki ruuvimeisselillä mutten oikein onnistunut.
En tahdo tuohon jälkiä ja sen pitäisi myös pysyä ehjänä...

Tuo on ehjä ja toimiva kapistus, pulsseja saa tuosta omaan jyrsimeen (TNC155A) 4500x20 (tai 4500x10, miten sen parametroi)

Olis tarkoitus tulla neljännen akselin mittavehkeeksi, niin pitäs sen takia pysyä ehjänä.

Osaako kukaan kertoa jos tietää miten tuo kuori tuossa on kiinni?

#2
Moro,

Sattuisiko kenelläkään olemaan jompaa kumpaa noista mittavehkeistä?

Olisin kiinnostunut tietämään mitä tuo laite lähettää takaisin jos siihen ottaa yhteyttä sarjaterminaalilla (9600 baudia, 8 databittiä, yksi stoppi bitti ja ei pariteettiä)

Pitäisi lähettää semmoiselle "n\n" eli pikku än ja LF eli linefeed, hexana 0x6e 0x0a, voinee vaatia hardware kättelyn
#3
Moro,

Ajattelin avata tälle älämölötykselle oman ketjun jonne laittaa tietoa mitä tuosta saa selville.

Eli olisi tarkoitus koittaa väkertää tuollainen käsikapula Heidenhainin TNC155A ohjaimelle. Vähän tähän tapaan: https://translate.google.fi/translate?sl=de&tl=en&u=http%3A%2F%2Fhsm-aktuell.de%2Fcnc-hr330.htm

Jonkinlaista edistymistä on tässä tapahtunut. Tuo kapulahan juttelee sarjaväylällä ja liittimestä löytyy vain vastaanottava pinni datalle ja käänteinen DTR-signaali. Protokolla millä tuo jutustelu tapahtuu niin on olemattomasti dokumentoitu ja käytetyt kapulat maksaa tonnista ylöspäin ebayssä.



Kapulan luku tapahtuu näyttökortin prosessorilla TMS9995, TMS9902 sarjaporttikontrollerin avustamana.

Tuommoisella olen sitä CNC ohjaintani rääkännyt, STM32F103 (tämä yksilö on kiinan kopio) Tuo logiikkapiiri on tuohon nyt vain jäänyt kiinni, käänsin sillä sarjaportin kun stm32f103 ei osaa sitä ite kääntää, (toiminnallisuus mitä ei sitten tarvittukaan) PIC:eillä on bitti mikä invertoi sarjaportin mutta tässä stm32f103 prossussa ei semmoista ole. DTR pulssi menee Sipexin 232 piirille ja sieltä invertoituna STM:lle EXT0 keskeytyspinniin (EXTI0_IRQHandler). Sarjadata menee myös tuon Sipexin kautta.

Luin tuon prosessorin ohjelman talteen ja disassembloin sen. Tuota koodia nyt olen koittanut ymmärtää. Asiaa ei helpota yhtään miten tuo prossu käsittelee "rekistereitään"... :)
Sain kuitenkin selville sarjaportin asetukset 38400 baudia, parillinen pariteetti, yksi stop bitti ja 8 bittiä dataa.

Joka 6mS välein annetaan 12uS pulssi DTR pinniin, tämä toimii kapulalle synkronointina ja se alkaa lähettämään tavuja pihalle. TNC:n ohjelmassa alustetaan 9 tavua muistissa ja ensimmäinen asetetaan arvoon 0x50 muut nollataan.
Heti tuon muistialueen jälkeen tulee sama määrä tavuja ja ne alustetaan samoin. Jälkimmäiseen kopioidaan ensimmäisen vastaanotetut tavut keskeytyksessä 3 jossa myös annetaan tuo 12uS DTR pulssi.


Lainaa
R0-R15 these are "registers" on interrupt 1 context

intr 1 R0  DC00   xx xx
intr 1 R1  DC02   DC 05 ; LI      r5,>dc05 | MOV     r5,@>dc02
intr 1 R2  DC04   00 05  ; LI      r5,>0050 | LI      r1,>dc04 | MOV     r5,*r1+
intr 1 R3  DC06   00 00  ; CLR     *r1+
intr 1 R4  DC08   00 00  ; CLR     *r1+
intr 1 R5  DC0A   00 00  ; CLR     *r1+
intr 1 R6  DC0C   00 00  ; CLR     *r1+
intr 1 R7  DC0E   00 05 ; MOV     r5,*r1+
intr 1 R8  DC10   00 00 ; CLR     *r1+
intr 1 R9  DC12   00 00 ; CLR     *r1+
intr 1 R10 DC14   00 00 ; CLR     *r1+
intr 1 R11 DC16   00 00 ; CLR     *r1+
intr 1 R12 DC18   00 00 ; reset routine writes R12 the CRU address of TMS9902 here
intr 1 R13 DC1A   xx xx
intr 1 R14 DC1C   xx xx
intr 1 R15 DC1E   xx xx

Muita kuin TNC155 manuaaleja lukemalla olen saanut selville että uudemmissa ohjaimissa lähetetyille tavuille suoritetaan tarkistussumma laskenta, olettaisin tämän olevan jos tässä sellainen on niin tämä BCC. Tuota käytetään jo valmiiksi blockwise transferissa ja sen toteuttaminen on erittäin kevyttä ja helppoa. Myöskin luin jostain että tämä tavumäärä mitä kapula lähettää ei ole välttämättä vakio vaan se voi vaihdella. Jos ei oteta huomioon tuota ensimmäistä tavua (alustettu 0x50) niin jäljelle jäisi 8 tavua, siihen mahtuisi hyvin 4 PLC käskyä (muttei enää tarkistussummaa) Myöskin luin että kapuloilla olisi joku ID, ilmeisesti tuo ensimmäinen lähetetty tavu.

Ohjelmassa erikseen tarkistetaan onko ensimmäinen tavu 0xa_ tai 0x5_ ja siitä sitten ohjelman kulku eriytyy. Jos tavu on 0xa_ niin tavun alimpia neljää bittiä shiftataan oikealle kunnes ne on kaikki nollia, näin saadaan rekisteriin arvo väliltä 1-5. Tuo voisi myös olla lähetettävien tavujen määrä? Jostain luin kuitenkin että tavuja olisi aina 6 (1+5 eli tämä ensimmäinen ja sitten loput)

Itse sarjaportin luku tapahtuu keskeytyksessä 1 ja se onkin melkoisen simppeli! Eli tuo tunkee kaiken saamansa suoraan muistiin. Voi olla että 9 tavua varattua tilaa riittää puskuriksi jos jokin tunkisi sinne enemmän tavuja kuin on varattua muistia. Joka 6mS välein tuo muistiosoitin nollataan takaisin alkuun. Toimii ehkä mutta ei ole kovin elegantti ratkaisu.

LainaaINTR01  STCR    *r1+,8           ; pc:>166c w:>3631     ; Store char ? WP=dc00
        SBO     18               ; pc:>166e w:>1d12     ; RIENB Writing a one to Bit 18 causes the INT output to be active
        RTWP                     ; pc:>1670 w:>0380     ; Return Workspace Pointer (RTWP) Instruction

Ehkä tuota tietoa mitä tuossa alun linkissä oli niin voisi jotenkin koittaa soveltaa.

LainaaThe Heidenhain control outputs a signal every 6 ms, whereupon the handwheel returns a data packet of 4 bytes. 2Byte for identifier, axis keys and UVV key, the remaining 2 bytes return the encoder count value since the last data transmission, as a 16 bit value depending on the direction of rotation + -32000, ie every 6ms the count value is transferred and the counter value is deleted.
Powered by EzPortal
SMF spam blocked by CleanTalk