Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Controller Area Network (CAN) _ Совместимость CAN и RS485

Автор: Axel Jun 24 2008, 06:36

Совместимы ли по уровням драйверы CAN и RS485 (напр SN65HVD230 и SN65HVD10)? К сожалению проверить самому сейчас нет возможности, а ответ нужен... Судя по описаниям, проблем быть не должно, но все же...

Автор: MrYuran Jun 24 2008, 06:46

по-моему, CAN и RS-485 это протоколы разного уровня, вернее RS-485 вообще не протокол, а интерфейс.
Поэтому говорить о совместимости уровней некорректно.
Можно говорить о реализации протокола CAN посредством интерфейса RS-485

Автор: Andy Mozzhevilov Jun 24 2008, 07:01

В протоколе CAN есть требование на доминантные и рецессивные уровни. Логический 0 на выходе контроллера CAN должен преобразовываться в доминантный уровень на физической шине, и этот уровень должен уметь пересилить все рецессивные уровни, которые выдают другие передатчики на эту шину. Интерфейс RS485 под это дело не заточен, насколько я знаю.

Автор: rezident Jun 24 2008, 07:07

Цитата(Axel @ Jun 24 2008, 12:36) *
Совместимы ли по уровням драйверы CAN и RS485 (напр SN65HVD230 и SN65HVD10)? К сожалению проверить самому сейчас нет возможности, а ответ нужен... Судя по описаниям, проблем быть не должно, но все же...
ИМХО в общем случае нет, драйверы не совместимы. В линиях CAN коллизия это штатная ситуация, в линиях RS-485 это аварийная ситуация.
Цитата(MrYuran @ Jun 24 2008, 12:46) *
по-моему, CAN и RS-485 это протоколы разного уровня, вернее RS-485 вообще не протокол, а интерфейс.
Поэтому говорить о совместимости уровней некорректно.
Можно говорить о реализации протокола CAN посредством интерфейса RS-485
Вопрос про драйверы CAN и RS-485 вообще-то.

Автор: Axel Jun 24 2008, 07:40

Видимо необходимо уточнить вопрос. Речь идет об обмене между двумя устройствами: с одной стороны - "закрытый" девайс с RS485, с другой - доступный для перепрограммирования девайс с контроллером и CAN драйвером. Логику обмена можно реализовать, дергая пинами, коллизий в этой ситуации можно избежать, вопрос только в электрической совместимости.

Автор: Andy Mozzhevilov Jun 24 2008, 07:58

Цитата(Axel @ Jun 24 2008, 13:40) *
Видимо необходимо уточнить вопрос. Речь идет об обмене между двумя устройствами: с одной стороны - "закрытый" девайс с RS485, с другой - доступный для перепрограммирования девайс с контроллером и CAN драйвером. Логику обмена можно реализовать, дергая пинами, коллизий в этой ситуации можно избежать, вопрос только в электрической совместимости.

Ваше уточнение внесло ещё большую путаницу.
Что значит "закрытый".
Кто будет дергать пинами? Нужно CAN драйвером сделать эмуляцию протокола для RS485, программно дергая ногами CAN контроллера?

Автор: Axel Jun 24 2008, 08:13

Цитата(Andy Mozzhevilov @ Jun 24 2008, 11:58) *
Что значит "закрытый".


"Закрытый" - доступный только для обмена, но не для модификации (в отличие от другого, программу которого можно модифицировать).

Цитата(Andy Mozzhevilov @ Jun 24 2008, 11:58) *
Нужно CAN драйвером сделать эмуляцию протокола для RS485, программно дергая ногами CAN контроллера?


Именно так.

Автор: Andy Mozzhevilov Jun 24 2008, 08:18

Цитата(Axel @ Jun 24 2008, 14:13) *
Именно так.

Электрически в этом случае наверное должно получиться.

Автор: Axel Jun 24 2008, 08:28

Спасибо всем откликнувшимся, попробую...

Автор: navy2000 Jun 28 2008, 15:28

Есть еще одна тонкость. В RS-485 линии A и B обе "гуляют" от нуля до питания, а в CAN от половины питания до нуля или питания. Точнее, CANH - Vcc/2 Vcc, CANL Vcc/2 GND. Определение состояния на приеме происходит по разнице (очень упрощенно) данных уровней. Чувствительность у приемников может быть разная, и при большой длинне линий и/или высокой скорости данные могут читаться не корректно.
Имею в виду только Phi-уровень, про CAN-кие прибамбасы в пакетах и скоростях опускаю, так как понял из вопроса там CAN как таковой использоваться не будет.

Автор: spf Jun 29 2008, 17:15

Цитата(navy2000 @ Jun 28 2008, 21:28) *
Чувствительность у приемников может быть разная, и при большой длинне линий и/или высокой скорости данные могут читаться не корректно.

Где такое написано и что такое "Чувствительность у приемников"?
Для каждого физического уровня микросхемы делаются по одному документу - уровни у них одинаковые.

Автор: navy2000 Jun 30 2008, 07:04

Цитата
Для каждого физического уровня микросхемы делаются по одному документу - уровни у них одинаковые.

Речь шла о физической совместимости CAN и RS485 приемопередатчиков. То есть, будет ли RS-485 приемник стабильно принимать сигнал от CAN-передатчика и наоборот. Так вот, в состоянии, CAN не активен обе линии CANH и CANL будут с потенциалом Vcc/2, а для RS-485 приемника - это нестабильное состояние, поэтому там линии A и B "растягивают" к питанию и земле. Получаем электрический конфликт. Передатчик тянет линии к одному потенциалу, а приемник к другому. Это может привести к получению ложных бит на приеме в отсутствии передачи или установке доминанты на CAN-передатчике (что, в условиях нормального CAN-контроллера привело бы к BusOff).
Цитата
и что такое "Чувствительность у приемников"?

Для приемника RS-485 стандартом описано пороговая характеристика −200мВ до +200мВ
При этом, для передатчика:
|Uвых|=1,5:5,0В (не <1,5В и не >6,0В);
состояние логической «1»: Ua больше Ub (Реально Ua=Vcc, Ub=GND) — MARK, OFF;
состояние логического «0»: Ua меньше Ub (Реально Ub=Vcc, Ua=GND) — SPACE, ON;
Для CAN приемника (например SN65HVD234) типовое значение 100мВ, то есть при этой разнице будет определено доминантное состояние.
Хочу уточнить. Сам, я таких опытов не проводил. В таком соединении не вижу смысла. Я лишь высказываю свои сомнения автору темы. Чтоб не упустил при проектировании и осмыслил.

Автор: j2j2j2 May 18 2012, 05:54

Цитата(navy2000 @ Jun 30 2008, 11:04) *
Речь шла о физической совместимости CAN и RS485 приемопередатчиков. То есть, будет ли RS-485 приемник стабильно принимать сигнал от CAN-передатчика и наоборот.


При небольших линиях будет стабильная связь. http://electronix.ru/redirect.php?http://incotex-counter.blogspot.com/2012/04/usb-rs485can.html, а вот иhttp://electronix.ru/redirect.php?http://incotex-counter.blogspot.com/2011/03/can-rs485.html. Проверено, работает со счетчиками Меркурий.


Автор: dangiz Dec 3 2017, 09:19

Цитата(j2j2j2 @ May 18 2012, 08:54) *
Приведу пример такой реализации [/url], а вот иhttp://electronix.ru/redirect.php?http://incotex-counter.blogspot.com/2011/03/can-rs485.html. Проверено, работает со счетчиками Меркурий.

Схема vlad rusanov, на которую ссылается j2j2j2,
http://electronix.ru/redirect.php?https://postimages.org/
скорее всего работоспособна только для односторонней передачи от прибора с интерфейсом CAN к устройству с интерфейсом RS-485. Действительно, с помощью подтягивающих резисторов можно физический уровень рецессии исказить так, что на входе компаратора RS-485 возникнет разность потенциалов между "А" и "В" порядка 0,25 - 0,27 В, что будет воспринято контроллером RS-485 как "1". Соответственно доминанта даст разность потенциалов -5 В, означающую "0". При необходимости передать что-либо прибору с интерфейсом CAN по линии с интерфейсом RS-485 по способу vlad rusanov уже ничего не получиться. Доминанта, конечно, пройдет, но вот рецессия никак. Отсюда вывод: заманчивая дешевизна использования модемов с интерфейсом RS-485 для удаленного контроля и управления электросчетчиков с интерфейсом CAN не катит. Увы, необходимо использовать квалифицированные модемы, разработанные под этот интерфейс, либо, что более хлопотно, применять конверторы интерфейсов и преобразователи линии, специально созданные под эти задачи.



Автор: Velund Dec 17 2017, 02:39

На самом деле вопросы там есть... CAN трансивер должен уйти в защиту шины, если слишком долго держится доминанта. При низких скоростях с RS485 в эту ситуацию можно попасть на некоторых сочетаниях данных.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)