реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Анализатор ошибок в CAN сети., Анализ ID у битых сообщений.
galjoen
сообщение Nov 24 2011, 12:02
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Анализируют ли стандартные CAN анализаторы ID и принятые данные, точнее ту часть данных и ту часть ID которые были приняты до установки доминанты (ошибки битстаффинга), в сети другими устройствами? Это чтобы по ID узнать полудохлый блок в сети.
Если таких анализаторов нет, то есть какая то микросхема CAN интерфейса, которая точно позволяет это делать - pdf на неё смотрел, но тогда это мне не нужно было. А сейчас её тип вылетел из головы.
А CAN интерфейс у МК - сильно упрощённый. На мой взгляд, навряд ли у какого из МК с CAN такая возможность есть. Но если есть, то это тоже вариант.
Или уж свой самодельный CAN на базе ATmega48 доработать? Там это легко делается, но с передачей полученной информации проблема.
Go to the top of the page
 
+Quote Post
novikovfb
сообщение Oct 6 2015, 08:00
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



Подниму вопрос. Есть ли мониторы, позволяющие протоколировать битые кадры и кадры, которые никто не принял? Периодически затыкается связь на шине, судя по симпомам - какое-то устройство забивает шину высокоприоритетными кадрами, марафоновский монитор ничего не фиксирует.
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 6 2015, 11:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



естественно есть - видел у Lecroy-а например. есть всякие специализированные софты и т.д.
но в простых "кэн снифферах", типа марофоновского нет такой возможности - там микроконтроллер стоит, битые фреймы никак не принимаются

можно самому написать на ПЛИСине - есть проект opencan на опенкоресах - клон SJA1000, впринципе, можно расковырять
более быстрый и дешевый вариант - купить китайский USB логический анализатор, с него сливать в ПК, а там своим скриптом проанализировать
Go to the top of the page
 
+Quote Post
net
сообщение Oct 6 2015, 13:45
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



битые кадры принимаются любым контроллером там только два раза придется принимать по прерываниям
так как данные надо выбрать при приходе следующего пакетта
но дело в том что ошибку может пораждать совсем не тот кто передает
и вам это мало поможет
зачастую данные приняты вашим снифером будут правильные, а ошибку выдаст тот кто не смог принять эти данные изза рассинхронизации генератора
и этого когото вы никогда не узнаете при анализе шины

и не забутьте еще о возможности 1: Listen Only Mode -- the controller gives no acknowledgment on CAN, even if a
message is successfully received. Messages cannot be sent, and the controller
operates in “error passive” mode. This mode is intended for software bit rate
detection and “hot plugging
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 6 2015, 15:01
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(net @ Oct 6 2015, 16:45) *
битые кадры принимаются любым контроллером там только два раза придется принимать по прерываниям


а это проверяли или предполагаете?

просто в контроллере обычно FIFO на 2-3 CAN сообщения, и в это FIFO попадает только то, что прошло acceptance filter, то есть было принято полностью.
я специально не смотрел, но впечатление такое, что ничего в этом фифо нету по error-у. да и прерывание по ошибке не на всякий битый фрейм генерируется (это для LPC и STM CAN контроллеров)

Go to the top of the page
 
+Quote Post
syoma
сообщение Oct 6 2015, 15:52
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Вроде как у некоторых контроллеров (помомему STM32F10X) даже если нога настроена на CAN прием, можно спокойно читать ее состояние из программы. Поэтому я бы написал простенькую логгер-программу, которая бы постоянно со скоростью хотя бы раз в 5 больше скорости CANа семплировала состояние этой ноги и пихала в буфер. И если CAN-контроллер генерит прерывание по ошибке - в буфере будут лежать последние принятые биты перед ошибкой.
Это в идеале. Сам не проверял.

Еще можно по прерыванию ошибки можно дергать какой-нибудь свободной ногой МК и по ней синхронизировать осциллограф, подключенный к CANу. Ну а потом глазками вычислять ID.
Go to the top of the page
 
+Quote Post
net
сообщение Oct 6 2015, 17:33
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (yes @ Oct 6 2015, 18:01) *
а это проверяли или предполагаете?

просто в контроллере обычно FIFO на 2-3 CAN сообщения, и в это FIFO попадает только то, что прошло acceptance filter, то есть было принято полностью.
я специально не смотрел, но впечатление такое, что ничего в этом фифо нету по error-у. да и прерывание по ошибке не на всякий битый фрейм генерируется (это для LPC и STM CAN контроллеров)

сталкивались с такой же пробелмы поэтому написали для этого случая сниффер и он конкретно работает для анализа шины
но особого толку от битых пакетов нет . в основном используем это для генерации трафика в сети по определнному закону чтобы протестировать саму сеть
а пробелму выявили путем анализа аппаратуры в сети и программ настройки can контроллеров

все(сниффер) сделано на lpc 2294 двумя каналами смотрит в can шину и одним can на pc где производится разбор полетов

на шину вешается два can потому что 1 can работает в only listen mode - чтобы ничего не портить в работе шины
а 2 can подключается если нужно чтото сгенерить в шину

3 can пересылает все на pc где все протоколируется и смотрится в удобном виде и через него же задается режим генерации нужных пакетов в шину если нужно

битые пакеты прекрасно протоколируются(через два прерывания)


4 "can" хотели под интелектуальный генератор помех задействовать - но пока со всем разбирались пришли к выводу что все это шорох орехов
и надо просто правильно делать железо и писать программы
и никаких снифферов не нужно biggrin.gif
Go to the top of the page
 
+Quote Post
геннадий75
сообщение Oct 7 2015, 14:19
Сообщение #8





Группа: Участник
Сообщений: 5
Регистрация: 2-02-12
Из: г.Саяногорск
Пользователь №: 70 032



Также нужно было увидеть весь поток CAN сообщений (в том числе битые сообщения,шесть нулей на шине) написал программу, которая сохраняет весь поток на диске и потом его можно проанализировать.
Прикрепленные файлы
Прикрепленный файл  CAN.rar ( 662.07 килобайт ) Кол-во скачиваний: 32
 
Go to the top of the page
 
+Quote Post
novikovfb
сообщение Oct 7 2015, 14:41
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



моя проблема решилась совсем другим способом: одно из устройств на шине из-за разгильдяйства разработчика на 2-3 секунды выставляло доминантный уровень (сделали CAN на ПЛИС, пока не запрограммируется - держит "0").

Сообщение отредактировал novikovfb - Oct 7 2015, 14:42
Go to the top of the page
 
+Quote Post
net
сообщение Oct 7 2015, 14:50
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (novikovfb @ Oct 7 2015, 17:41) *
моя проблема решилась совсем другим способом: одно из устройств на шине из-за разгильдяйства разработчика на 2-3 секунды выставляло доминантный уровень (сделали CAN на ПЛИС, пока не запрограммируется - держит "0").

примените драйвера с отключаемым тайм аутом и вообще проблем не будет - а то так и будете виснуть
Go to the top of the page
 
+Quote Post
net
сообщение Oct 7 2015, 17:01
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



QUOTE (геннадий75 @ Oct 7 2015, 17:19) *
Также нужно было увидеть весь поток CAN сообщений (в том числе битые сообщения,шесть нулей на шине) написал программу, которая сохраняет весь поток на диске и потом его можно проанализировать.

в битом кадре данные читаются - если у вас 0 то вы не доделали программу чтения битых кадров
Go to the top of the page
 
+Quote Post
геннадий75
сообщение Oct 8 2015, 14:13
Сообщение #12





Группа: Участник
Сообщений: 5
Регистрация: 2-02-12
Из: г.Саяногорск
Пользователь №: 70 032



Цитата(net @ Oct 8 2015, 00:01) *
в битом кадре данные читаются - если у вас 0 то вы не доделали программу чтения битых кадров

Программа считывает весь идущий поток данных, и уже его пытается собрать в CAN сообщения. Даже одиночный ноль на шине я увижу, также видно битые сообщения , видно правильно посчитан CRC если неверно программа покажет правильный, видно подтвердили другие блоки сообщение или нет ,сколько единиц между пакетами, также если приходят одинаковые CAN сообщения в правом окне программы не появляются . В правом окне видны только новые CAN сообщения, именно это помогало выдернуть из потока нужное CAN сообщение.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th July 2025 - 13:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016