Är CANopen lik SAE J1939?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Är CANopen lik SAE J1939?

Inlägg av DanielM »

Är det någon här som har hållit på med CANopen?
Jag har nyss skrivit klart mitt bibliotek för SAE J1939 och den innehåller väldigt många ISO standarder.

Som jag uppfattar så består CANopen av ID + DATA, precis som SAE J1939 gör.
ID i SAE J1939 kan delas upp till 4 bytes. Byte 1 och byte 2 är själva funktionskoden, medan byte 3 och byte 4 är adresser. Byte 3 är vart meddelandet ska någonstans. Byte 4 är vart meddelandet kommer ifrån. Ibland kan byte 3 vara en funktionskod också, beroende på hur byte 1 och byte 2 ser ut. Men DATA är alltid 8 bytes. Ibland är DATA 3 bytes om det är ett PGN (funktions/informations) förfrågning.

CANopen har något som heter COB-ID. Detta är samma sak som SAE J1939 ID, fast olika bits här. 4 bits är för funktionskoden och 7 bits är för NODE ID.

Då är min fråga:
Har COB-ID i CANopen samma analogi med ID i SAE J1939? Alltså vilken funktion som ska anropas + vilken adress/nod man ska anropa? I detta fall så antar jag att nod är något form utav adress?

Är det någon som har en lista på ett CANopen protokoll?
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Är CANopen lik SAE J1939?

Inlägg av Rick81 »

Har inte så bra kolla på dessa, skulle dock bli lite förvånad om de använder samma sätt bygga upp CAN id

Sen har ju CANprotokollet som båda bygger på id som används för vilka som ska lyssna på det meddelandet och det kan mycket väl användas för addressera noder

Kolla canOpen för stm32:
https://www.st.com/en/embedded-software/canopen.html
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Är CANopen lik SAE J1939?

Inlägg av DanielM »

Tackar!

Jo. Jag har sett detta. Men jag tycker deras SAE J1939 struktur ser helt konstig ut och överdrivet komplicerat jämfört hur jag har byggt upp SAE J1939. Dom verkar bygga allt på header-filer, medan jag bygger allt på .c filer + några header-filer.
CANopen kan jag inte uttala mig om, men troligtvis så har dom anpassat sin kod efter unika plattformar, vilket är enligt min mening inte det bästa sättet ett skriva C-kod. Det blir väldigt begränsat.

Jag har hittat lite information om CANopen.
Här är en ordlista om CANopen.
can_dictionary_v10.pdf
Här är en manual för CANopen.
DOK_BEDA_CANopen__SEN__AIN__V1.pdf
CAN-bus:
Min tolkning av denna bild är att CAN bus är själva plattformens funktioner för att använda sig utav rå CAN-bus meddelanden.

CAN-pipe
CAN-buffer är väll något som ingår i hårdvaran då CAN-bus "samlar" sina meddelanden i en buffer, precis som bytes samlas i UART.
Varje sådan eCOM_BUF_x där x kan vara PDO_PROD, GLOBAL_RCV, SDO_CLN_TRM osv. är alltså CAN-meddelanden. Så tolkar jag det.

Så allt handlar om vilket meddelande mjukvaran läser och datat berättar vad meddelandet innehåller?
Alltså skiljer det inte sig så mycket från SAE J1939 med andra ord? ID + DATA där ID beskriver vart meddelandet ska göra, vart det kommer ifrån och vart det ska någonstans och DATA är vad meddelandet innehåller för bytes.

Men skillnaden mellan CANopen och SAE J1939 är väll att CANopen har väll dessa gröna block som "trådar" som körs hela tiden?
Eller måste trådar användas i CANopen?

Skärmklipp.PNG
hb_canopen_master_v3r00_en.pdf
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar