|
Ошибки при обмене по протоколу CAN 2.0B в многопроцессорной системе |
|
|
|
Sep 27 2008, 19:01
|
Участник

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

|
Здравствуйте! На этом форуме я новичок, поэтому прошу прощения, если разместил вопрос не в том топике.
Ситуация следующая - есть многопроцессорная система (на базе процессоров семейства ST10), обмен данными между ними ведется по протоколу CAN 2.0B.
Каждый процессор выдает через КАН информаци, необходимую для расчетов другому. Выдача настроена на частоту 100Гц (выставление данных на шину КАН производится по прерыванию от таймера).
Другие процессора сравнивают принятые значения с измеренными ими самими и производят вычисления.
Проблема в том, что наблюдается потеря кадров при выдаче по шине при работе нескольких микропроцессоров одновременно. Второй процессор ведет счетчик обновления данных от первого (к примеру) и наблюдает потери (для теста МК1 выдает инкрементирующийся каждые 100Гц счетчик циклов, второй обрабатывает его прием с частотой 800Гц - второй процессор наблюдает в итоге "разрывы" по пришедшему счетчику - приходят значения 1000, 1001, 1002, 1003, 1005, 1006 - пропущено 1004).
Если включен только один передатчик(передача вдется только с одного из МК - потерь фактически не наблюдается). Если на шину выдает два передатчика - идут потери.
Обьясните пожалуйста чайнику, вследствие чего могут возникать потери при приеме\передаче по CAN 2.0B?
|
|
|
|
|
 |
Ответов
|
Sep 30 2008, 15:31
|
Участник

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

|
Цитата(Vokchap @ Sep 30 2008, 21:16)  У вас восемь каналов у каждого узла сконфигурированы как передатчики, используется ли реально более одного для отправки сообщений? Практически не проверялось. При срабатывании в основном канале функции (моей) SendFrame кадр ставится в очередь (стек FIFO). Очередь орбрабатывается при каждом вызове SendFrame, процедура обработки циклически проверяет CAN обьекты 0-7, являются ли они свободными, если да - кадр из очереди ставится на передачу в этот обьект. Теоретически вероятна ситуация когда в очереди всегда 1 кадр (при малой нагрузке) и для передачи используется только обьект 0. В данном случае он просто справляется со всем потоком. Однако даже в таком случае упомянутые в первом сообщении ошибки остаются. P.S.: Нагрузка на контроллер CAN может менятся в процессе разработки ПО устройства, поэтому количество CAN обьектов-передатчиков возможно взято "с запасом". Чтобы люди, занимающиеся разработкой функциональных алгоритмов, не заморачивали себя вопросами обмена по CAN.
|
|
|
|
|
Sep 30 2008, 15:57
|

Профессионал
    
Группа: Админы
Сообщений: 1 884
Регистрация: 15-07-06
Из: Новосибирск, Россия
Пользователь №: 18 835

|
Цитата(Fledgling @ Sep 30 2008, 18:31)  Очередь орбрабатывается при каждом вызове SendFrame, процедура обработки циклически проверяет CAN обьекты 0-7, являются ли они свободными, если да - кадр из очереди ставится на передачу в этот обьект. Если соотношение тактовой частоты контроллера и шины большое, возможна ситуация, когда при последовательной отправке двух и более сообщений один канал начнет передачу первого сообщения, а флаг занятости передатчика (либо канала) будет выставлен позднее, чем будет выполнена его проверка для возможности передачи второго сообщения. В итоге пойдет запись второго пакета в тот-же канал, он будет частично переписан, т.е. комбинация двух сообщений (CRC будет верна). Сообщение м.б. отфильтровано приемником (если это выполняется по каким-либо признакам), т.е. получится пропуск. Вообще причину легко будет понять, если проанализировать статусные регистры can-контроллера после каждой отправки/получения.
|
|
|
|
|
Sep 30 2008, 16:04
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(Vokchap @ Sep 30 2008, 19:57)  ...а флаг занятости передатчика (либо канала) будет выставлен позднее, ... Здесь говорилось про "проверяет CAN обьекты 0-7" - до передатчика еще далеко, не то. Цитата(spf @ Sep 30 2008, 19:58)  В CAN сообщение считается переданным только тогда, когда все "сказали" что все до них дошло без ошибок. !!!!!!!!!!!!!! Не _все_, а _хоть один_ кто-то !!!!
|
|
|
|
Сообщений в этой теме
Fledgling Ошибки при обмене по протоколу CAN 2.0B в многопроцессорной системе Sep 27 2008, 19:01 Fledgling UP! Sep 29 2008, 16:47 spf Цитата(Fledgling @ Sep 29 2008, 22:47) UP... Sep 29 2008, 17:17  Fledgling Цитата(spf @ Sep 29 2008, 23:17) можно до... Sep 29 2008, 18:19   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, 15:45    Fledgling Цитата(spf @ Sep 30 2008, 21:45) Перегруз... Sep 30 2008, 16:09     spf Цитата(Fledgling @ Sep 30 2008, 22:09) Им... Sep 30 2008, 16:27   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    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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|