Magistrala CAN (ciąg dalszy łaczenia

Witam!

Za namową grupowiczów zerknąłem sobie na specyfikacje CAN. Przeczytałem "Magistrala CAN" z EP z 2000. Wszysko łade i pięke, ALE:

1) Tylko 8 bajtów danych ? Na 8 bajtach cieżko jest nawet zrobić protokół wyższego rzędu, chyba że pozbyć się wszelkich informacji sterujących i przepychać ramki jedna za drugą licząć, że dojdą wszystkie (na ile scalak-kontroler upewnia mnie w tym ?). Interesuje mnie wyłacznie fragmentacja protokołu zbliżonego do UDP (nie ma strumieniowania, jeden pakiet UDP na raz dzielony na fragmenty).

2) W tekscie z EP niejasno dla mnie opisano problem adresowania i wygląd ramki. Mam wobec tego takie pytanie: Czy można wysyłać ramki, gdzie w polu adresowym jest zarówno odbiorca jak i nadawca i jeszcze 8 bajtów danych ? Z rysunku w EP widze inaczej niż w tekscie.

3) 11 bitowy identyfikator - czy mozna to rozumiec jako rodzaj "portu" podobnie jak w UDP ? Tzn każde z urządzeń może byc adresowane przez swój adres (0-31) i dodatkowo _funkcja_ w tym urządzeniu przez idntyfikator 11 bit ?

4) Czy dobrze rozumiem, że CAn ma w sobie coś w rodzaju broadcastu, czyli rozsyłania komunikatów pod konkretny "port" 11-bitwy do wszystkich urządzeń ?

5) CAN20B - czy mam rozumiec, ze ilośc urządzeń jest dalej 32, ale ilośc "portów" wzrosła do 29 bitów ? I co gorsza ilośc bajtów danych dalej 8 :( ?

6) W opisie z EP zsastosowano SJA1000 - fajnie, bo jest w DIP i do kupienia, ale niefajnie bo: a) jest drogi (śjakieś 20 zł) b) wymaga zewnątrznego nadajnika/odbiornika

Czy istnieje zatem coś tańszego (implementującego wszystkie nowsze "rozszerzenia" standardu, jeśli takie istnieją) i jednocześnie ma w sobie nadajniki/odbiorniki ? (Nie pytam o separacje galwaniczną, bo chyba takich nie ma ;)

Więcej pytań nie mam na razie, ale pewnie się pojawią ...

Reply to
Sebastian Bialy
Loading thread data ...

Użytkownik "Sebastian Bialy" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:cr3b4o$7k1$ snipped-for-privacy@nemesis.news.tpi.pl...

Przeczytałem

Moja wiedza o CANie jest prawie żadna, poza tym, że sprzętowo rozwiązuje problemy o które pytasz (dlatego o nim wspomniałem).

Wydaje mi się, że najlepiej znaleźć jakiś procesor z wbudowanym CAN-em, poczytać dokumentację i samemu dojść do tego co i jak z ramki CANa da się wykorzystać. CAN sam w sobie chyba nie narzuca protokołu - sposobu wykorzystania tych bitów adresowo/priorytetowych. P.G.

Reply to
invalid unparseable

Tak docelowo zrobie, ale na razie zeby nie uczyć się 2 rzeczy na raz musze wziąść AVR+zewnątrzny kontroler CAN i sie pobawic.

Reply to
Sebastian Bialy

Jak juz ktos wczesniej napisal, 8 bajtow danych jest po to by komunikaty o wysokim priorytecie dochodzily natychmiast. Ale to w niczym nie przeszkadza. Przy przesylaniu dlugich blokow danych tracisz tylko sporo na bajty dodatkowe.

W CAN ramki rozsylane sa do wszystkich. Na podstawie identyfikatora mozna co prawda w odbiornikach maskowac pewne ramki. Ja czesc identyfikatora wykorzystuje jako numer logiczny urzadzenia a czesc jako rodzaj ramki (i priorytet)

W CAN 2.0B masz 29-bitowy. Identyfikatory sa scisle zwiazane z priorytetami. W Twoim zastosowaniu (z poprzedniego watku) mozesz 28 mlodszych bitow zastosowac do numeru urzadzenia, a najstarszy bit do rodzaju ramki. Da to szanse na przesylanie szybkich komunikatow. Oczywiscie identyfikatory oznaczaja nadawce a nie odbiorce! Nie powinno dochodzic do sytuacji ze dwa nadajniki probuja wyslac komunikat o tym samym identyfikatorze :)

Nie pod port lecz do wszystkich.

Kto Ci powiedzial, ze moga byc tylko 32 urzadzenia? 32 to ograniczenie wprowadzone przez RS485. Jesli zastosujesz drivery od RS485 to bedziesz mial to ograniczenie, ale sa drivery do wiekszej liczby (nie testowalem ich z CANem) Nie nazywaj identyfikatorow portami, bo to zupelnie nie o to chodzi.

Stosuj uC z CANem. Drivery i tak bedziesz musial dodac (nawet z opto)

peters

Reply to
peters

Hmm no nic, mniejsza o ilość, tak czy siak musi wystarczyć.

Chyba zaczynam rozumieć. 11-bitów to po prostu ciąg bitów, ktore mogę po stronie odbiornika dowolnie interpretować ? Natomias jako nadajnik muszę coś tam wpisać co mi się podoba, a i tak odbortą to wszyscy ?

Ha! To pytanie mam takie: podłaczam do żywej magistrali nowy układ. W jaki sposób powinien on na CAN zgłosić się ? Może np. generowac co pare sekund jakiś komunikat "jestem!" z zerowym (albo zarezerwowanym) adresem żeby go usłyszał master ? I master nadaje mu docelowy numer z puli tych

11 (29) bitów ?

Cała sprawa polega na tym, że niemogę sobie pozwolić na numerowanie unikatowe CAN w skali produkcji - bo zbyt mała jest przestrzeń adresowa

- nawet w przypadku 29 bitów (wiem, wiem, to duzo, ale IP tez miał byc kiedyś "niezpełnialny" ;). Dlatego widziałbym to bardziej na zasadzie przydzielania tych numerów podczas podłaczenia do magistrali. Jeśli jednak ten numer nie ma nic wspólnego z działaniem magistrali CAN (poza priorytetami) to jakoś to powinienem rozwiązać.

Ha :) To wynika z mojej niewiedzy o CAN i troche chaotycznym opisie w EP. Jesli nie ma w ogóle pojęcia adresu urządzenia, to wszystko jasne.

Na razie nie chce (choć docelowo na pewno) - bo jeśli nawet zaczne się tym bawić - to czeka mnie nauka PICów, z którymi nie miałem do czynienia, a AVR z CAN jest tylko jeden i raczej nie wlutuje go amatorsko.

To jeszcze jedno pytanko:

CAN stosuje się w samochodach. Czy istnieje jakiś _tani_ element (wymontowany np z Fiata - tam chyba CAN stosują) który moża użyć do testów z CANem ? Bo nie mając żadnego urządzenia fabrycznego na CAN bede to robił po omacku. Coś gotowego, najlepiej żarówka sterowana CANem ;)

Reply to
Sebastian Bialy

Nie powinno dochodzic do sytuacji ze dwa nadajniki probuja wyslac komunikat o tym samym identyfikatorze! Juz raz pisalem, ze i tak musisz jakos poszczegolne urzadzenia wskazac. Mozesz zrobic to tak, ze Twoj sterownik nadrzedny co pare sekund wysyla pierwszy wolny numer. Sterownik podlaczony po prostu go sobie przyjmie i sie zglosi pod tym numerem. Problem, gdy jednoczesnie podlaczysz wiecej niz jeden... Moze jakies przyciski na urzadzeniach-zezwalajace na przydzielenie numeru po podlaczeniu. Jeszcze problem kasowania numerow (jesli podepniesz do magistrali wiele sterowniki, ktore mialy juz wczesniej nadane takie same numery)

Bzdura. IP obejmuje siec na calym swiecie. Jesli planujesz tylko male sieci to nawet jak numery zaczna sie powtarzac nie bedzie nieszczescia. Szansa, ze ktos 'wylosuje' dwa o tym samym numerze znikoma. Zawsze mozesz nadawac podczas produkcji kilka numerow, przelaczanych zworka.

Jesli nie BGA to bez problemu wlutujesz.

Raczej BMW, o Fiacie nie slyszalem. Urzadzenie to jedno a protokol to drugie. Raczej nic to nie da

peters

Reply to
peters

Dobrze jest sobie uswiadomic ''co mial na mysli autor'' . CAN - kontroler przestrzeni sieciowej - powstal jako narzedzie do realizacji rozproszonej pamieci Ty piszesz dane do obszaru pamiecui (obiektu) inni jak ich potrzebuja to je sobie czytaja.Ramki bity adresy - wszystko to tylko srodki aby uzyskac efekt - wspolna pamiec dla rozproszonego systemu.

Bo tak powoli zaczyna sie dziac na swiecie ze jedni pisza aplikacje uzytkowe a inni systemy operacyjne dla tych pierwszych. I albo ''poprostu'' czytacz bajt z procka gdzies na sieci podajac jego indentyfikator albo lamiesz sobie glowe jak zrobic zeby ktos inny mogl tak zrobic. Nikt jakos sie nie zastanawia jaka jest ramka w karcie sieciowej - cana mozna oczywiscie wykorzystac jak rsa ale blizej mu do lanu .

wojtek

formatting link

Reply to
neuron

I tak tez sie robi, ze wezel wysyla cyklicznie na szyne wiadomosc o swoim istnieniu ale nie moze to byc identyfikator "0" - zerowy identyfikator ma najwyzszy priorytet , bo inne wiadomosci nie "przebija sie"! master natomiast musi byc przygotowany na to ze taki wezel sie moze pojawic (posiadac jakas tablice wszystkich mozliwych identyfikatorow).Przewaznie wiadomosci o obecnosci danego wezla na szynie posiadaja bardzo niski identyfikator . W systemach , ktore znam architektura jest elastyczna ale kazdy wezel ma narzucony identyfikator z gory przez konstruktora . Tylko czesc (bity najmniej znaczace ) identyfikatora wskazuje na konkretny wezel (stajac sie faktycznym adresem wezla) , bity najbardziej znaczace wskazuja na priorytet wiadomosci .Nalezaloby zrozumiec zagadnienia "mechanizmu dostepu do sieci : Arbitration On Message Prioritiy,Collision Detection itp..".

Czy na "twojej szynie" kazde urzadzenie jest inne jeden od drugiego ? Bo moze nalezaloby zastosowac jakie inne rozwiazanie , a nie CAN ?

pzdr marek snipped-for-privacy@priv4.onet.pl

Reply to
marek

czesc

zgodnie z ISO 15765-2 mozna przeslac wieksza ilosc danych w blokach. Norma ta opisuje protokol przesylania tych blokow i ich synchronizacje

pzdr

marek

Reply to
marek

we Fiace poczawszy od modelu Punto II , kazdy jest wyposazony w conajmniej jedna szyna CAN .Stosowane tam mikrokontrolery to : ST10, HCS12 itd ..

pzdr marek

Reply to
marek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.