Сравнивая физический уровень CAN и RS485, я пытаюсь найти преимущества одного над другим. Выяснил, что они очень похожи. Оба хороши с точки зрения подавления синфазного сигнала, и оба нуждаются в защите от электростатического разряда и перенапряжения. Я обнаружил только одно существенное преимущество CAN по сравнению с RS485 (относительно физического уровня), в котором CAN имеет отказоустойчивый режим, который позволяет ему поддерживать соединение между узлами CANbus только через 1 провод данных, даже если один провод данных закорочен или разомкнут или оба провода данных замкнуты накоротко.
Вдали от предотвращения столкновений и системы приоритета сообщений, которая есть в CAN,
1. Имеет ли RS485 такой же отказоустойчивый механизм?
2. Есть ли другие важные преимущества или различия между CAN и RS485 в отношении физического уровня?
При сравнении только физического уровня CAN и RS-485 похожи тем, что они оба используют дифференциальную сигнализацию. Это дает им обоим хорошую устойчивость к синфазным помехам.
Основное отличие состоит в том, что RS-485 использует симметричную передачу сигналов. Одна линия 5 В, а другая 0 В для сигнализации одного состояния, затем переключается на 0 В и 5 В для другого состояния. Это делает обнаружение состояния очень простым (простой компаратор, возможно, с небольшим гистерезисом), но представляет собой проблему при завершении шины.
Если вы считаете, что витая пара, по которой передаются сигналы, имеет характеристическое сопротивление 120 Ом, то в идеале вы хотите поместить 120 Ом между двумя линиями. Всего между двумя линиями будет 60 Ом. (5 В)/(60 Ом) = 83 мА. Это большой ток для автобуса, и он будет потребляться все время. Получается почти полватта мощности покоя. Обратите внимание, что каждый согласующий резистор сопротивлением 120 Ом будет рассеивать 208 мВт, а это означает, что они должны иметь номинал резистора не менее «¼ Вт». Например, поверхностное крепление 0805 не требуется.
Вероятно, из-за этих соображений требования к оконечной нагрузке для RS-485 несколько смягчены. Это приводит к снижению полезной скорости шины. Это нормально для большинства приложений RS-485, поскольку они обычно работают с обычной скоростью передачи данных, редко превышающей 115,2 кбод.
CAN, с другой стороны, корректно адресует завершение. Предполагается, что для различных сигналов используется витая пара сопротивлением 120 Ом, и указывается согласующее сопротивление 120 Ом на каждом конце шины. Затем есть два важных отличия, чтобы избежать проблем, описанных выше:
Мощность, необходимая для удержания CAN-шины в доминирующем состоянии, составляет всего 54 мВт, а для удержания ее в рецессивном (бездействующем) состоянии вообще отсутствует. CAN предназначен для скоростей до 1 Мбод, что стало возможным благодаря лучшей терминации, чем RS-485.
Еще одно важное различие между CAN и RS-485, о котором уже упоминалось, заключается в том, что RS-485 активно приводится в оба состояния, в то время как CAN всегда приводится только в доминирующее состояние, а сама шина переходит в рецессивное состояние. Это имеет существенное значение на более высоких уровнях протокола для арбитража шины.
Итак, что использовать? CAN является очевидным выбором для новых конструкций в большинстве случаев, потому что:
Напротив, с RS-485 вы получаете UART, а остальное — ваши проблемы. Хотя, безусловно, можно реализовать надежный протокол поверх RS-485, не так просто разобраться во всех крайних случаях, как думают наивные инженеры.
Одним из ограничений CAN, которое может потребовать обхода для некоторых приложений, является ограничение в 8 байтов данных на пакет. Это также хорошо для механизма коллизий/повторных попыток, но это то, что вы должны учитывать, если собираетесь передавать потоковые данные по CAN. Однако сделать то же самое с RS-485 тоже не так просто, как может показаться на первый взгляд.
RS485 использует +/- 400 мВ, а не 0-5 В, поэтому согласующий резистор имеет меньшую мощность, чем шина CAN. Есть преимущество, которое многие (все), кажется, упускают. Поскольку RS485 на самом деле является двунаправленным при напряжении около 0 В, т. е. это должен быть полноценный H-мост, это означает, что ток течет в одну или другую сторону. Дело не в уровнях напряжения, а в фактическом направлении тока. Так что это отличается от CAN, где вы фактически смотрите на 2 разных сигнала относительно GND. Вы хотите увидеть, что этот уровень 2,5 В ОТНОСИТЕЛЬНО к GND, и что эти две линии имеют одинаковое напряжение относительно GND или что одна выше, а другая ниже 2,5 В относительно GND.
Это две очень разные вещи. CAN работает только тогда, когда есть GND для ссылки, поэтому GND должен следовать за сигналом везде. Это означает, что если вы хотите использовать изолированную шину CAN, вам понадобится эта ссылка GND.
Теперь RS485 - это, по сути, привод переменного тока от H-моста, электроны текут так или иначе, какое напряжение относительно GND совершенно не имеет значения. напряжение не сравнивается с GND, рассматривается направление потока электронов, поэтому вам не нужен GND. Это означает, что в ситуациях, когда вы хотите соединить две системы вместе, которые не имеют общего заземления или вам это не нужно, это нормально, и когда заземления не являются общими, но различаются, это нормально, потому что измерение не относится к GND и принимает это означает, что изоляции можно избежать там, где этого требует CAN.
Основная причина использования CAN заключается в том, что если вы не используете один и тот же идентификатор для двух устройств, ни одно устройство не должно знать о каком-либо другом устройстве, и устройства могут быть просто добавлены к шине.
Энди ака
Масит
Лундин
Лундин