Tämän CAN-väylän viestidatan dekoodaus

Työskentelen CAN-väylän kanssa ja tarvitsen apua viestidatan dekoodauksessa.

Tässä on näyte tiedoista, joita näen CAN-väylällä.

root@petalinux:/var/volatile/tmp# /tmp/candump -n 10 can0 can0 4E5 [4] F0 16 00 00 can0 665 [8] 40 78 60 00 00 00 00 00 can0 5E5 [8] 4B 78 60 00 DB 00 00 00 can0 665 [8] 40 64 60 00 00 00 00 00 can0 5E5 [8] 43 64 60 00 E4 7D 5E 00 can0 665 [8] 40 41 60 00 00 00 00 00 can0 5E5 [8] 4B 41 60 00 27 02 00 00 can0 665 [8] 40 41 60 00 00 00 00 00 can0 5E5 [8] 4B 41 60 00 27 02 00 00 can0 665 [8] 40 6C 60 00 00 00 00 00 root@petalinux:/var/volatile/tmp# 

En voi selvittää, miten tiedot voidaan jäljittää tietylle CAN: lle väyläviesti.

Laitteellani on solmutunnus 101 (tukiasema 10) ja se on StepIM-askelmoottori. Tässä on viittaus käyttöoppaaseen – http://servotronix.com/wp-content/uploads/dlm_uploads/2015/05/stepIM_CANopen_fw0.0.2.85_Rev.1.3.pdf . Yritetään siis purkaa viimeinen viesti ylhäältä. Se olisi ” can0 665 8 40 6C 60 00 00 00 00 00

En näytä ymmärtävän, kuinka kääntää heksadesima” * 40 6C 60 .. ”komennoksi, josta askelmoottorin dokumentti tietää …

Kommentit

  • stepIM ovat CANopen-protokollan kanssa, joka on korkeampi CAN-väylään perustuva protokolla. Vaihda tag CAN CANopenin kanssa.

Vastaa

Ensimmäistä viestiä lukuun ottamatta tämä on tyypillistä SDO -liikenne ( CANopen ), pyyntö- / vastausparilla:

0x665 SDO request (range 0x600 - 0x67F, depending on the node ID) 0x5E5 SDO response (range 0x580 - 0x5FF, depending on the node ID) 

Ensimmäiselle parille kuollut lahja on 0x4B vastauksen ensimmäisessä tavussa. Tämä osoittaa, että palautetun datan koko on kaksi tavua (yhden tavun ja neljän tavun osalta se on vastaavasti 0x4F ja 0x43). Pyynnön ensimmäisen tavun 0x40 osoittaa, että se on luettu pyyntö (standardi käyttää eri termiä, ” Lähetä ”, päinvastaisella merkityksellä kuin Internetissä (lataa) – se on osoitetun laitteen näkökulmasta).

Pyynnön CAN ID on 0x600 + solmun tunnus. Vasteen CAN ID on 0x580 + solmun tunnus. Siten:

665 A read request to the device with node ID 0x65 5E5 A read response from the device with node ID 0x65 

SDO-ohjelmien osalta CANopen-indeksi ja alaindeksi ovat toisessa, kolmannessa ja neljännessä tavussa (vähiten merkitsevä tavu ensin CANopen-indeksissä). Joten ensimmäiselle parille, 40 78 60 00, pyynnön esittäjä sanoo: ” Laite solmun tunnuksessa 0x65 (101), anna minulle tallennettu arvo 6078sub0 ” .

Tässä tapauksessa tiedot kulkevat osoitetusta laitteesta pyyntöä tehneelle henkilölle (pyynnön esittäjä ei näy CAN-väylälokista, mutta se on yleensä järjestelmän keskusohjain tai PC: llä toimiva huoltotyökalu (yleensä USB-CAN-sovitin).

Siten esitetylle liikenteelle tehdään lukupyyntöjä ( viimeisen vastausta ei sisälly lähetettyyn CAN-väylälokiin):

6078sub0 (2 bytes, 0xDB00 = 219) 6064sub0 (4 bytes, 0x005E7DE4 - 6,192,612) 6041sub0 (2 bytes, 0x0227 - 551) 6041sub0 (2 bytes, 0x0227 - 551) 606Csub0 (?? bytes) 

Kummallista kyllä, 6041sub0-pyyntö toistetaan.

Lisäksi, vaikka SDO: t ovat yleensä vain määritystietoja varten, CANopen-indeksialueita 0x6000 – 0x6FFF käytetään yleensä määritystietoihin, kuten mitattuihin määriin tai tilaan.

Sukellus käyttöoppaaseen

SDO-indeksit / alaindeksit voidaan etsiä oppaasta (I h ave sisälsi todelliset arvot näytteen CAN-väylälokista):

6078sub0 Motor current, 219 mA 6064sub0 "Position Actual Internal Value" is 6,192,612 6041sub0 Statusword, 0x0227 = 0000 0010 0010 0111, meaning: "ready to switch on", "switched on", "operation enabled", "quick stop" "remote" 606Csub0 "Velocity Actual Value". The value is not included, but it is a 32-bit signed integer. 

Ensimmäinen viesti

Olettaen, että ensimmäinen viesti on myös CANopen, 4E5 F0 16 00 00: Kaikkien CANopen CAN -viestien tunnus on nelibittinen toimintakoodi (0-15), jota seuraa seitsemänbittinen solmutunnus. Tässä tapauksessa 0x4E5 = 1001 1100101b. Siten toimintokoodi on 1001b = 9, eli ” PDO4, lähetä ”. Suojattujen alkuperänimitysten tietovirran suunta (huolimatta tässä tapauksessa ” lähetys ”) on määritelmän kysymys (riippuu sovelluksesta ). Solmun tunnus on 1100101b = 0x65.

PDO: n solmutunnus on sama kuin SDO: n.

Tämän suojatun alkuperänimityksen tiedot ” Lähetetään SAN 4 ”, sisältyy SDO 0x1A03, ” Lähetetään SAN-kartoitusparametri 4 ”. Jos sitä ei ole muutettu oletusarvosta, SAN-tiedot ovat samat kuin SDO 0x60FAsub0, allekirjoitettu 32-bittinen kokonaisluku:

ohjausobjekti vaivaa sijainnin säätösilmukan ulostulona. Paikannustoiminnossa säätötyön merkitseminen on tilasta riippuvainen, eikä sitä sen vuoksi määritellä.

Johtopäätös

solmun tunnuksella 0x65 lähettää ohjauksen (todennäköisesti säännöllisin väliajoin) PDO : n avulla.

Ohjain tai huoltotyökalun reaaliaikainen näyttöikkuna lukee ja näyttää muut mitatut määrät / tila samasta moottorilaitteesta käyttämällä SDOs ia.

Kommentit

  • Työskentelen tällaisen CAN: n kanssa väylätiedot päivittäin, joten tämä on helposti tunnistettavissa. Tarkka tulkinta / merkitys riippuu kuitenkin tietystä järjestelmästä. Luulin, että tämä kysymys ansaitsi kattavan vastauksen.

vastaus

Et ole selittänyt, mitä yrityksesi tiedot tarkalleen osoittavat, mutta se saattaa olla viestin tunnus, jota seuraa sulkeissa olevien datatavujen määrä, jota seuraa todelliset datatavut. Mikään ei näytä nimenomaisesti osoittavan, ovatko ID: t 11 tai 29 bittiä. Ehkä vain käyttämällä 3 HEX-numeroa ID: ssä Luettelossa ilmoitetaan 11-bittiset tunnukset. Jos näin on, se näyttää 8 HEX-numeroa 29-bittisille tunnuksille.

Se, mitä kukin rivi näyttää sinulle (näyttää siltä), on yksi CAN-viesti. Ei ole mitään muuta dekoodata ymmärrä CAN-viesti. Se näytetään sinulle nimenomaisesti.

Esimerkiksi viimeisellä rivillä sanotaan, että viesti nähtiin tunnuksella 665h (1637 desimaali), että tällä viestillä oli 8 datatavua ja että datatavut olivat (HEX-muodossa) 40, 6C, 60, 0, 0, 0, 0 ja 0. Ensimmäiset kolme olisi 64, 108 ja 96 desimaalilla.

Mitä merkitys on mihin tahansa laitteeseen, josta se on peräisin tai jonka tarkoituksena on toimia sen mukaan, se on jotain sinun on etsittävä tiettyjen laitteiden dokumentaatiosta. Tämä ”CAN: n yläpuolella oleva kerros.

Laitteellani on solmutunnus 101

Solmua ei ole CAN-tunnukset, vain viestitunnukset. Jos laitteesi käyttävät solmutunnuksen käsitettä, tämä on jotain erityistä CAN: n yläpuolella olevalle protokollatasolle. CAN-standardi ei voi auttaa sinua tässä. Sinun on tutustuttava erityisiin laiteasiakirjoihin, jotka saattavat viitata korkeamman tason protokolliin, joita se käyttää CAN: n yläpuolella, mahdollisesti erillisessä asiakirjassa.

Kommentit

  • Se ’ ei ole perus-CAN, se on CANopen, kuten käsikirjassa todetaan.
  • Olen käsitellyt sitä vastaukseni .

vastaus

Laite käyttää CANopen-protokolla . CANopen on CAN-pohjainen viestintäjärjestelmä. Se sisältää ylemmän tason protokollia ja profiileja.

Sitä käytetään automaatiossa. On olemassa useita protokolla-analysaattoreita koko viestinnän selvittämiseksi. CANopenia käyttävä automaatiojärjestelmä on isäntä / orja-arkkitehtuuri. Löydät joitain tietoja CANopenista wikipediasta, mutta se ei ole niin triviaalia kuin itse viesti suuntautunut CAN.

Kommentit

  • Kyllä, se on oikein. Se on CANopen.

Vastaa

Tiedonsiirron purkamiseksi sinun on tiedettävä moottorin CANopen Object Dictionary. Näyttää siltä, että TPDO: t ja niiden sisältö riippuvat viestinnästä ja objektien kartoittamisesta.

Sinun tulisi tutkia seuraavia CANopenin termejä protokollan ymmärtämiseksi. – Object Dictionary – Prosessidataobjektit (PDO) – Tiedonsiirtoparametrit – Parametrien kartoitus

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *