transmisja danych po magistrali CAN

Mar 05, 2014 4 Replies

Jak to właściwie jest z transmisją większej ilości danych po magistrali CAN? Z tego co mi wiadomo jedna ramka pozwala na przesłanie 8 bajtów. Zwykle realizuje się to właśnie w ten sposób (kod rozkazu + kilka bajtów danych) czy też istnieje możliwość uruchomienia jakiegoś stosu, który umożliwiłby przesyłanie bardziej skomplikowanych treści?



Co jeśli chciałbym przekierować na do określonego urządzenia na magistrali CAN treść pakietu UDP (kilkadziesiąt - kilkaset bajtów w ASCII)? Co, gdybym chciał przesłać tekst do wyświetlenia na LCD? Jest jakiś sposób, czy to rozwiązanie zostało stworzone z myślą o przesyłaniu prostych komend i niczego wiecej?


Witam

W przypadku diagnostyki (CAN w samochodzie) stosuje się warstwę sieciową ISO TP (możliwość) przesłania do 4095 bajtów(12 bitowy parametr dlugosci ramki). Opisana jest w normie ISO15765-2. Nad tą warstwą siedzi UDS (diagnostyka - warstwa aplikacji). Nie wiem jak to realizuje się w przemysłowym zastosowaniu CAN.

Pozdrawiam Krystian

No i w czym problem? Podziel swój pakiet na 8 części i wysyłaj ciurkiem. Podłącz sobie skaner can np. do samochodu, po odpaleniu silnika jest wręcz zalew danych z kilkudziesięciu czujników.

Użytkownik "Atlantis" snipped-for-privacy@wp.pl napisał w wiadomości news:lf84ai$l5v$ snipped-for-privacy@portraits.wsisiz.edu.pl...

Koncepcja w której wszyscy mogą nadawać jednocześnie a wygrywa ten, kto ma najważniejszą informację (to jest idea CANa od strony sprzętowej)logicznie wymusza krótkie ramki aby ważne informacje nie musiały czekać na zakończenie nadawania jakichś bzdetów przez kogoś komu się akurat udało dorwać do łącza. Między kolejne ramki długiej transmisji zawsze można się wciąć z nie cierpiącym zwłoki przerwaniem. Gdyby było inaczej to samochody z CANem działały by jak Windows. P.G.

Można zdefiniować sobie własny protokół komunikacyjny na bazie CANa i ISO TP (albo podobnych protokołów). Nic też nie stoi na przeszkodzie, żeby potraktować ID ramki jako adres urządzenia i zbudować protokół master-slave albo multimaster. Mogę powiedzieć, że to się sprawdza - niedawno zdefiniowaliśmy protokół master-slave pozwalający na przesłanie (teoretycznie) 2^32 bajtów w jednej wiadomości i z powodzeniem wykorzystujemy (więcej szczegółów, niestety, podać nie mogę).

Pozdrawiam, Piotr

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required