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

 
 
> Ошибки при обмене по протоколу CAN 2.0B в многопроцессорной системе
Fledgling
сообщение Sep 27 2008, 19:01
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 27-09-08
Пользователь №: 40 529



Здравствуйте!
На этом форуме я новичок, поэтому прошу прощения, если разместил вопрос не в том топике.

Ситуация следующая - есть многопроцессорная система (на базе процессоров семейства ST10), обмен данными между ними ведется по протоколу CAN 2.0B.

Каждый процессор выдает через КАН информаци, необходимую для расчетов другому. Выдача настроена на частоту 100Гц (выставление данных на шину КАН производится по прерыванию от таймера).

Другие процессора сравнивают принятые значения с измеренными ими самими и производят вычисления.

Проблема в том, что наблюдается потеря кадров при выдаче по шине при работе нескольких микропроцессоров одновременно. Второй процессор ведет счетчик обновления данных от первого (к примеру) и наблюдает потери (для теста МК1 выдает инкрементирующийся каждые 100Гц счетчик циклов, второй обрабатывает его прием с частотой 800Гц - второй процессор наблюдает в итоге "разрывы" по пришедшему счетчику - приходят значения 1000, 1001, 1002, 1003, 1005, 1006 - пропущено 1004).

Если включен только один передатчик(передача вдется только с одного из МК - потерь фактически не наблюдается). Если на шину выдает два передатчика - идут потери.

Обьясните пожалуйста чайнику, вследствие чего могут возникать потери при приеме\передаче по CAN 2.0B?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Fledgling
сообщение Sep 29 2008, 16:47
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 27-09-08
Пользователь №: 40 529



UP!
Go to the top of the page
 
+Quote Post
spf
сообщение Sep 29 2008, 17:17
Сообщение #3


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(Fledgling @ Sep 29 2008, 22:47) *
UP!

можно долго апать, но это дело не сдвинет с места.
Ваш вариант описания ситуации мало что говорит.
По всей видимости дело в программе или в протоколе, который вы пытаетесь огранизовать.
Каким образом распределены ID CAN-сообщений по устройствам?


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
Fledgling
сообщение Sep 29 2008, 18:19
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 27-09-08
Пользователь №: 40 529



Цитата(spf @ Sep 29 2008, 23:17) *
можно долго апать, но это дело не сдвинет с места.
Ваш вариант описания ситуации мало что говорит.
По всей видимости дело в программе или в протоколе, который вы пытаетесь огранизовать.
Каким образом распределены ID CAN-сообщений по устройствам?

Прошу прощения, апнул исключительно от безысходностиsmile.gif.

Описывать весь алгоритм слишком долго, возможно кто либо еще сталкивался с ошибками в CAN'e иил есть причины для наиболее часто встречаемых багов (в этой теме я новичок - но тема то как раз для новичковsmile.gif).

Используется расширенный формат кадров (29 бит). В ОЗУ каждого процесора содержатся одинаковые таблицы с описанием кадров (номер кадра, что заполняется в поля данных кадра и прочее).
11 бит идентификатора определяют номер строки в этой таблице (определяют уникальность идентификатора кадра), распределение по процессорам ведется по этому номеру - т.е. МК1 выдает кадры например от 0 до 50, МК2 - от 51 до 100 и тп.
Остальные биты могут быть не уникальными, но в целом ситуация, когда 2 процессора пытаются выдать кадр с одним идентификаторам невозможна (проверял, хотя учитывая, что я чайник может быть что то прозевал)

Процедуры чтения/записи написаны по алгоритму, указанному в документации на процессор (блок схема), так что логически в этом ошибки быть не должно.
Из 15 обьектов CAN контроллера CAN процессора обьект №15 используется для приема (он буферизированный), обьекты 0-7 - для передачи.

Процессоры могут стартовать асинхронно, выдачу кадров осуществляют (всех, которые предназначены к выдаче с этого МК) с частотой 100 Гц. Тесты показали, что контроллер успевает выставить все данные на шину до наступления следующего цикла.

Перегрузки на шине тоже не наблюдается, сокращали поток выдачи до 1 кадра с частотой 100Гц - количество пропусков снизилось, но осталось на высоком и неприемлимом уровне.

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

Сообщение отредактировал Fledgling - Sep 29 2008, 18:27
Go to the top of the page
 
+Quote Post
spf
сообщение Sep 30 2008, 15:45
Сообщение #5


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(Fledgling @ Sep 30 2008, 00:19) *
Перегрузки на шине тоже не наблюдается, сокращали поток выдачи до 1 кадра с частотой 100Гц - количество пропусков снизилось, но осталось на высоком и неприемлимом уровне.

Перегрузка легко считается.
Какая скорость используется?
Сколько байт данных в сообщении?
Какие драйвера применены?
Какие расстояния?
Терминаторы на месте?
Контролируете ошибки в контроллере CAN?


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
Fledgling
сообщение Sep 30 2008, 16:09
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 27-09-08
Пользователь №: 40 529



Цитата(spf @ Sep 30 2008, 21:45) *
Перегрузка легко считается.
1) Какая скорость используется?
2) Сколько байт данных в сообщении?
3) Какие драйвера применены?
4) Какие расстояния?
5) Терминаторы на месте?
6) Контролируете ошибки в контроллере CAN?


1) Максимальная - 1 Мбит/сек
2) 4 слова - 8 байт
3) ? Что имеется в виду под драйвером? Для регистрации данных на ПК используется устройство IXXAT CAN II с драйвером третьей версии (с поддержкой .NET).
4) Расстояния между процессорами на плате - меньше 10 см, расстояние от контроллера, осуществляющего передачу "вовне" (на ПК) - меньше 2 м.
5) на месте
6) нет, ошибки не контролируются в связи с тем что автор чайник и не знает как это делать)))


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

Имеется в виду, выставлять один и тот же кадр на выдачу несколько раз за цикл? Но по какому алгоритму это делать?

Цитата
Вообще причину легко будет понять, если проанализировать статусные регистры can-контроллера после каждой отправки/получения.

Какие имено поля CSR (CAN Status/Control Register) анализировать? LEC?

Цитата
В CAN сообщение считается переданным только тогда, когда все "сказали" что все до них дошло без ошибок.

Как это можно определить?
Выставляется ли контроллером какой нибудь флаг в CSR или Message Control Register, сообщающий о том, что именно все адресаты получили сообщение?

Цитата(Andrew2000 @ Sep 30 2008, 22:04) *
!!!!!!!!!!!!!! Не _все_, а _хоть один_ кто-то !!!!

Да, мне тоже так казалосьsmile.gif
Но после цати тестов моего бага я уже ни в чем не уверен))
Go to the top of the page
 
+Quote Post
spf
сообщение Sep 30 2008, 16:27
Сообщение #7


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(Fledgling @ Sep 30 2008, 22:09) *
Имеется в виду, выставлять один и тот же кадр на выдачу несколько раз за цикл? Но по какому алгоритму это делать?

Не надо ничего выставлять несколько раз.
Контроллер должен сам повторять сообщения, если на шине возникают ошибки. В некоторых контроллерах можно отключать автоматический повтор передачи сообщений (делать только одну попытку отправки). Видимо про это была речь.


Цитата(Vokchap @ Sep 30 2008, 22:23) *
Учитывать это. Уже наступал на эти грабли.

Это где такие грабли?


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Fledgling   Ошибки при обмене по протоколу CAN 2.0B в многопроцессорной системе   Sep 27 2008, 19:01
- - Fledgling   UP!   Sep 29 2008, 16:47
|- - Dog Pawlowa   Цитата(Fledgling @ Sep 29 2008, 21:19) С ...   Sep 30 2008, 09:12
||- - Fledgling   Цитата(Dog Pawlowa @ Sep 30 2008, 15:12) ...   Sep 30 2008, 14:51
||- - Andrew2000   Цитата(Fledgling @ Sep 30 2008, 18:51) .....   Sep 30 2008, 15:53
||- - spf   Цитата(Fledgling @ Sep 30 2008, 20:51) Во...   Sep 30 2008, 15:58
||- - Vokchap   Цитата(spf @ Sep 30 2008, 18:58) В CAN со...   Sep 30 2008, 16:04
|- - spf   Цитата(Fledgling @ Sep 30 2008, 00:19) Пр...   Sep 30 2008, 17:42
|- - Fledgling   Цитата(spf @ Sep 30 2008, 23:42) И снова ...   Sep 30 2008, 17:50
|- - spf   Цитата(Fledgling @ Sep 30 2008, 23:50) Тр...   Oct 1 2008, 12:34
|- - spf   Еще раз перечитал первые ваши посты. Сообщалось чт...   Oct 1 2008, 13:36
|- - Dog Pawlowa   Цитата(spf @ Oct 1 2008, 15:34) Теряться ...   Oct 1 2008, 14:35
|- - Fledgling   Цитата(Dog Pawlowa @ Oct 1 2008, 20:35) К...   Oct 2 2008, 04:08
|- - spf   Цитата(Fledgling @ Oct 2 2008, 10:08) Чте...   Oct 2 2008, 07:35
||- - Fledgling   Цитата(spf @ Oct 2 2008, 13:35) Вектора т...   Oct 2 2008, 08:13
|- - Dog Pawlowa   Цитата(Fledgling @ Oct 2 2008, 07:08) Чте...   Oct 2 2008, 07:41
|- - Fledgling   Цитата(Dog Pawlowa @ Oct 2 2008, 13:41) К...   Oct 2 2008, 09:20
|- - Fledgling   Цитата(Dog Pawlowa @ Oct 2 2008, 13:41) Б...   Oct 2 2008, 11:17
|- - spf   Цитата(Fledgling @ Oct 2 2008, 17:17) Как...   Oct 2 2008, 12:35
|- - Dog Pawlowa   Цитата(Fledgling @ Oct 2 2008, 14:17) Как...   Oct 2 2008, 12:40
|- - spf   Цитата(Dog Pawlowa @ Oct 2 2008, 18:40) Н...   Oct 2 2008, 13:16
|- - Dog Pawlowa   Цитата(spf @ Oct 2 2008, 16:16) Не вводит...   Oct 3 2008, 06:29
|- - spf   Цитата(Dog Pawlowa @ Oct 3 2008, 12:29) У...   Oct 3 2008, 07:24
|- - Dog Pawlowa   Цитата(spf @ Oct 3 2008, 10:24) Операция ...   Oct 3 2008, 08:34
- - Огурцов   Цитата(Fledgling @ Sep 27 2008, 19:01) вс...   Sep 30 2008, 05:33
- - Vokchap   У вас восемь каналов у каждого узла сконфигурирова...   Sep 30 2008, 15:16
|- - Fledgling   Цитата(Vokchap @ Sep 30 2008, 21:16) У ва...   Sep 30 2008, 15:31
|- - Vokchap   Цитата(Fledgling @ Sep 30 2008, 18:31) Оч...   Sep 30 2008, 15:57
|- - Andrew2000   Цитата(Vokchap @ Sep 30 2008, 19:57) ...а...   Sep 30 2008, 16:04
||- - spf   Цитата(Andrew2000 @ Sep 30 2008, 22:04) ...   Sep 30 2008, 16:17
||- - Andrew2000   Цитата(spf @ Sep 30 2008, 20:17) Приплыли...   Sep 30 2008, 16:24
|||- - Vokchap   Цитата(Andrew2000 @ Sep 30 2008, 19:24) У...   Sep 30 2008, 16:30
|||- - Fledgling   Цитата(Andrew2000 @ Sep 30 2008, 22:24) П...   Sep 30 2008, 16:33
||- - Dog Pawlowa   Цитата(spf @ Sep 30 2008, 19:17) Приплыли...   Sep 30 2008, 16:32
||- - spf   Цитата(Dog Pawlowa @ Sep 30 2008, 22:32) ...   Sep 30 2008, 16:37
||- - Andrew2000   Цитата(Dog Pawlowa @ Sep 30 2008, 20:32) ...   Sep 30 2008, 16:38
||- - Fledgling   Цитата(Dog Pawlowa @ Sep 30 2008, 22:32) ...   Sep 30 2008, 16:39
||- - spf   Цитата(Fledgling @ Sep 30 2008, 22:39) У ...   Sep 30 2008, 16:46
|||- - Fledgling   Цитата(spf @ Sep 30 2008, 22:46) Такие по...   Sep 30 2008, 16:56
||- - Dog Pawlowa   Цитата(Fledgling @ Sep 30 2008, 19:39) Кс...   Sep 30 2008, 16:48
||- - spf   Цитата(Dog Pawlowa @ Sep 30 2008, 22:48) ...   Sep 30 2008, 17:00
||- - Fledgling   Цитата(Dog Pawlowa @ Sep 30 2008, 22:48) ...   Sep 30 2008, 17:30
|- - spf   Цитата(Vokchap @ Sep 30 2008, 21:57) Если...   Sep 30 2008, 16:06
|- - Vokchap   Цитата(spf @ Sep 30 2008, 19:06) Если кон...   Sep 30 2008, 16:23
- - TookeR   Введение большего кол-ва приемников приведет к дру...   Oct 2 2008, 06:41


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:44
Рейтинг@Mail.ru


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