|
Интерфейс CAN, Принципы обмена по протоколу CAN |
|
|
|
Mar 24 2006, 11:10
|
Группа: Новичок
Сообщений: 2
Регистрация: 21-03-06
Пользователь №: 15 438

|
Здравствуйте уважаемые разработчики!
Прочитал много информации по данной теме: -http://www.microchip.ru/files/d-sheets-rus/an713.pdf -http://www.gaw.ru/html.cgi/txt/interface/can/start.htm -Спецификации CAN 2.0 A и CAN 2.0 B -Документация на AT90CAN128 -http://electronix.ru/forum/index.php?showtopic=12898&hl=CAN -и др. Но к сожалению так и не смог понять логику работы интерфейса! Как например, раздать идентификаторы устройствам (приоритеты данных от этих устройств одинаковые)? Как передать данные конкретному устройству (нужен ли для этого remote frame, и если да, то какой идентификатор передается в этом фрейме)?
Расчитываю на Ваш совет! Спасибо.
|
|
|
|
|
 |
Ответов
|
Apr 7 2006, 09:21
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 21-12-05
Пользователь №: 12 486

|
Только начал разбираться с CAN-интерфейсом, что-т не догоняю: обязательно ли использование трансиверов? Или возможно подключение без них?
|
|
|
|
|
Apr 7 2006, 11:03
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 21-12-05
Пользователь №: 12 486

|
Так насколько я понял, физический уровень не оговорен, т.е. почему бы уровням линии не совпадать с уровнями контроллера?
|
|
|
|
|
Apr 7 2006, 11:10
|

Знающий
   
Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793

|
Цитата(shans @ Apr 7 2006, 15:03)  Так насколько я понял, физический уровень не оговорен, т.е. почему бы уровням линии не совпадать с уровнями контроллера? Если в системах на базе RS-232 это может и прокатит но вот в RS-485 и CAN(который использует похожую физическую линию) нет.Во первых потому что это шинные интерфейсы(т.е подразумевается что устройств будет больше двух) а главное то что в обычно используемой физической линии CAN нет состояний 0/1 а есть доминантное и рецесивное. Если кратко то эти состояния неравноценны(как 0 и 1) и когда одно устройство выставляет рецесивное состояние другое устройство может задавить его доминантным чем и достигается контроль передачи и неразрушающий арбитраж.Вот эта фича и обеспечивается драйвером. Как это делается в других физических линиях(оптика и блютуз) мало понятно но скорее всего идет эмуляция привычной CANу физической линии.
|
|
|
|
|
Apr 7 2006, 11:40
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 21-12-05
Пользователь №: 12 486

|
Цитата(ipc @ Apr 7 2006, 15:10)  Цитата(shans @ Apr 7 2006, 15:03)  Так насколько я понял, физический уровень не оговорен, т.е. почему бы уровням линии не совпадать с уровнями контроллера?
Если в системах на базе RS-232 это может и прокатит но вот в RS-485 и CAN(который использует похожую физическую линию) нет.Во первых потому что это шинные интерфейсы(т.е подразумевается что устройств будет больше двух) а главное то что в обычно используемой физической линии CAN нет состояний 0/1 а есть доминантное и рецесивное. Если кратко то эти состояния неравноценны(как 0 и 1) и когда одно устройство выставляет рецесивное состояние другое устройство может задавить его доминантным чем и достигается контроль передачи и неразрушающий арбитраж.Вот эта фича и обеспечивается драйвером. Как это делается в других физических линиях(оптика и блютуз) мало понятно но скорее всего идет эмуляция привычной CANу физической линии. Ну а если объединить по монтажному "И"? Вполне получаем доминантный и рецессивный уровень. А стоимость реализации значительно ниже. Понятно, что с уровнями под стандарт ISO 11898 не попадаем, но это уже другой вопрос. Извиняюсь, если задаю бестолковые вопросы  , просто хочу уяснить преимущества решения с использованием трансиверов.
|
|
|
|
|
Apr 7 2006, 11:50
|

Знающий
   
Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793

|
Цитата(shans @ Apr 7 2006, 15:40)  Цитата(ipc @ Apr 7 2006, 15:10)  Цитата(shans @ Apr 7 2006, 15:03)  Так насколько я понял, физический уровень не оговорен, т.е. почему бы уровням линии не совпадать с уровнями контроллера?
Если в системах на базе RS-232 это может и прокатит но вот в RS-485 и CAN(который использует похожую физическую линию) нет.Во первых потому что это шинные интерфейсы(т.е подразумевается что устройств будет больше двух) а главное то что в обычно используемой физической линии CAN нет состояний 0/1 а есть доминантное и рецесивное. Если кратко то эти состояния неравноценны(как 0 и 1) и когда одно устройство выставляет рецесивное состояние другое устройство может задавить его доминантным чем и достигается контроль передачи и неразрушающий арбитраж.Вот эта фича и обеспечивается драйвером. Как это делается в других физических линиях(оптика и блютуз) мало понятно но скорее всего идет эмуляция привычной CANу физической линии. Ну а если объединить по монтажному "И"? Вполне получаем доминантный и рецессивный уровень. А стоимость реализации значительно ниже. Понятно, что с уровнями под стандарт ISO 11898 не попадаем, но это уже другой вопрос. Извиняюсь, если задаю бестолковые вопросы  , просто хочу уяснить преимущества решения с использованием трансиверов. Ну так уж и дешевле.Эти драйверы стоят копейки а вот тянуть на километр такую линию(в моем случае трех вольтовую) будет очень забавно.думаю что фронты завалятся в корягу метра через два.Драйвер кроме всего прочего защищает процессор от помех и буферизирует сигналы да и то каждый имеет ограниченную нагрузочную способность(количество узлов в сети).Кроме того сигнал на выходе парафазный и заточен под длинные линии и эффекты связанные с задержками и переотражениями в сети.
|
|
|
|
|
Apr 7 2006, 12:07
|

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

|
Цитата(=AK= @ Apr 7 2006, 17:58)  Цитата(ipc @ Apr 7 2006, 21:20)  думаю что фронты завалятся в корягу метра через два. LIN работает при помощи открытых коллекторов, т.е. по монтажному ИЛИ. При 20 кбод на 40 м работает. CAN на 40 метрах может работать в полный рост - 1Мбод при родном драйвере, это в _50_ раз быстрее...
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Apr 7 2006, 12:18
|

Знающий
   
Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793

|
Цитата(spf @ Apr 7 2006, 16:07)  Цитата(=AK= @ Apr 7 2006, 17:58)  Цитата(ipc @ Apr 7 2006, 21:20)  думаю что фронты завалятся в корягу метра через два. LIN работает при помощи открытых коллекторов, т.е. по монтажному ИЛИ. При 20 кбод на 40 м работает. CAN на 40 метрах может работать в полный рост - 1Мбод при родном драйвере, это в _50_ раз быстрее... Кстати где то читал что есть драйверы позволяющие тянуть CAN более чем на километр(если незапамятовал то до пяти) и работать на скорости более мегабита правда при уж совсем децких расстояниях. Цитата(shans @ Apr 7 2006, 16:12)  Ну не такие уж копейки, а на километр мне тянуть не нужно, всего несколько метров. Собственно я сам за использование драйверов, дабы не создавать себе же лишние проблемы. Однако, как водится, на любой дополнительный корпус смотрят косо, и его использование нужно мотивировать  Ну тогда неправильно выбран интерфейс.CAN это полевая шина(название говорит само за себя) и предназначен для распределения девайсов в пространстве.Тут подошел бы ethеrnet(благо он сильно подешевел и в виде XPortа нетребует вобще никакой разработки) или вобще чтонибудь децкое типа SPI,I2c или нахудой конец проверенный веками RS-485.
|
|
|
|
|
Apr 7 2006, 13:22
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 21-12-05
Пользователь №: 12 486

|
Цитата(ipc @ Apr 7 2006, 16:18)  Цитата(spf @ Apr 7 2006, 16:07)  Цитата(=AK= @ Apr 7 2006, 17:58)  Цитата(ipc @ Apr 7 2006, 21:20)  думаю что фронты завалятся в корягу метра через два. LIN работает при помощи открытых коллекторов, т.е. по монтажному ИЛИ. При 20 кбод на 40 м работает. CAN на 40 метрах может работать в полный рост - 1Мбод при родном драйвере, это в _50_ раз быстрее... Кстати где то читал что есть драйверы позволяющие тянуть CAN более чем на километр(если незапамятовал то до пяти) и работать на скорости более мегабита правда при уж совсем децких расстояниях. Цитата(shans @ Apr 7 2006, 16:12)  Ну не такие уж копейки, а на километр мне тянуть не нужно, всего несколько метров. Собственно я сам за использование драйверов, дабы не создавать себе же лишние проблемы. Однако, как водится, на любой дополнительный корпус смотрят косо, и его использование нужно мотивировать  Ну тогда неправильно выбран интерфейс.CAN это полевая шина(название говорит само за себя) и предназначен для распределения девайсов в пространстве.Тут подошел бы ethеrnet(благо он сильно подешевел и в виде XPortа нетребует вобще никакой разработки) или вобще чтонибудь децкое типа SPI,I2c или нахудой конец проверенный веками RS-485. SPI, I2C не катят однозначно, а вот RS-485 тоже рассматривается как один из вариантов. Насчет полевой шины: интерфейс был изначально разработан для автомобильных дел. Сомневаюсь, что там километры шины
|
|
|
|
|
Apr 9 2006, 11:55
|

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

|
Цитата(shans @ Apr 7 2006, 19:22)  SPI, I2C не катят однозначно, а вот RS-485 тоже рассматривается как один из вариантов. Яйцо с курицей не сравнивайте RS485 - физический уровень. CAN - два уровня OSI.(аппаратный арбитраж, фильтрация пакетов и т.п.)
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Apr 11 2006, 10:33
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 21-12-05
Пользователь №: 12 486

|
Цитата(spf @ Apr 9 2006, 15:55)  Цитата(shans @ Apr 7 2006, 19:22)  SPI, I2C не катят однозначно, а вот RS-485 тоже рассматривается как один из вариантов. Яйцо с курицей не сравнивайте RS485 - физический уровень. CAN - два уровня OSI.(аппаратный арбитраж, фильтрация пакетов и т.п.) А вот так и сравниваю. CAN в любом случае нужно привязывать к физическому уровню, а RS485 к программной реализации. Да и не только это. Вот и смотрю, во что выльется решение в целом в том и другом случае. Предложите свой подход - рассмотрю и его.
|
|
|
|
|
Apr 11 2006, 10:44
|

Знающий
   
Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793

|
Цитата(shans @ Apr 11 2006, 14:33)  Цитата(spf @ Apr 9 2006, 15:55)  Цитата(shans @ Apr 7 2006, 19:22)  SPI, I2C не катят однозначно, а вот RS-485 тоже рассматривается как один из вариантов. Яйцо с курицей не сравнивайте RS485 - физический уровень. CAN - два уровня OSI.(аппаратный арбитраж, фильтрация пакетов и т.п.) А вот так и сравниваю. CAN в любом случае нужно привязывать к физическому уровню, а RS485 к программной реализации. Да и не только это. Вот и смотрю, во что выльется решение в целом в том и другом случае. Предложите свой подход - рассмотрю и его. Ну CAN положим тоже надо привязывать к программной реализации и это будет посложнее чем протоколы базирующиеся на RS-485. Я думаю что его использование обосновано только если присутствует один или больше из нижеперечисленных факторов. 1.Нужны сравнительно большие скорости 2.Нужно тащить данные на расстояние првышающее 10 метров 3.В сети нужна мультимастерность 4.Выбранные аппаратные средства имеют его(CAN) на борту бесплатно 5.Существует проблема с помехами 6.Есть желание(установка руководства) неиспользовать малоперспективные(нерасширяемые,слабомасштабируемые или просто подходящие впритык) и уходящие в прошлое программно аппаратные средства.
|
|
|
|
Сообщений в этой теме
denwill Интерфейс CAN Mar 24 2006, 11:10 ipc Интерфейс работает предельно просто.Принцип переда... Mar 24 2006, 13:39 spf Цитата(denwill @ Mar 24 2006, 16:10) Как ... Mar 24 2006, 15:00       ipc Цитата(=AK= @ Apr 7 2006, 15:58) Цитата(i... Apr 7 2006, 12:06        =AK= Цитата(spf @ Apr 7 2006, 21:37) CAN на 40... Apr 7 2006, 12:23         ipc Цитата(=AK= @ Apr 7 2006, 16:23) Цитата(s... Apr 7 2006, 12:27      shans Ну не такие уж копейки, а на километр мне тянуть н... Apr 7 2006, 12:12     spf Цитата(shans @ Apr 7 2006, 17:40) Ну а ес... Apr 7 2006, 12:02   spf Цитата(shans @ Apr 7 2006, 17:03) Так нас... Apr 7 2006, 11:56 ipc Вобщето машина это нетолько запорожец а автобусы и... Apr 7 2006, 13:34 dormouse "Если сравнивать RS-485 c CAN" - то это... Apr 12 2006, 18:40 ipc Ну во первых не три проводка а два.А в остальном я... Apr 13 2006, 04:29 dormouse Все-таки решительно надо иметь земляной провод в и... Apr 13 2006, 14:28 spf Цитата(dormouse @ Apr 13 2006, 20:28) to:... Apr 13 2006, 16:54 dormouse Продолжаю разбираться с CiA 301. Меня смутил поряд... Apr 13 2006, 20:39 spf Цитата(dormouse @ Apr 14 2006, 02:39) либ... Apr 14 2006, 03:08 ipc ЦитатаВсе-таки решительно надо иметь земляной пров... Apr 14 2006, 05:07 ДДН Цитата(ipc @ Apr 14 2006, 09:07) К сожале... Aug 22 2006, 11:48  ipc Цитата(ДДН @ Aug 22 2006, 15:48) Цитата(i... Aug 22 2006, 11:57   Andrew2000 Цитата(ipc @ Aug 22 2006, 15:57) Цитата(Д... Aug 22 2006, 14:32    ipc Цитата(Andrew2000 @ Aug 22 2006, 18:32) Ц... Aug 23 2006, 04:37   ДДН Цитата(ipc @ Aug 22 2006, 15:57) Сейчас п... Aug 23 2006, 07:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|