Зачем использовать RS232 вместо RS485 и в чем реальная разница между RS422 и RS485? Сначала дадим определение каждому из них. Следует помнить, что все три интерфейса считаются последовательными, в отличие от IEEE-488, который является параллельным.
Протокол RS232
Безусловно, самый популярный интерфейс, к тому же один из первых. Однако по понятным причинам в скором времени ситуация может измениться. Любой приобретаемый ПК имеет один (а иногда и несколько) портов RS232. Иногда их называют просто SERIAL PORTS. Однако это может вызвать путаницу, поскольку существуют и другие последовательные интерфейсы. RS232 широко используется из-за своей доступности. Однако он имеет ряд недостатков. Вот некоторые из них:
- Ограниченное расстояние — длина кабеля не должна превышать 15 метров. Многие утверждают, что можно использовать и больше. Но это не рекомендуется и не входит в спецификацию RS232.
- Восприимчивость к шуму — RS232 является односторонним. Это означает, что линии передачи и приема данных связаны с общей землей.
- Не является многоканальным — к одному порту можно подключить только одно устройство, работающее по протоколу RS232. Существуют некоторые устройства для передачи команд второму устройству того же семейства. Однако, это большая редкость. Если у вас есть три устройства для подключения к компьютеру, то вам понадобится три порта. В качестве альтернативы, вы можете использовать мультиплексор RS-232.
Подробнее о протоколе RS-232 можно узнать здесь.
Протокол RS422
Протокол RS422 похож на протокол RS232 и программируется аналогичным образом, однако имеет ряд преимуществ и недостатков. Одна из проблем заключается в том, что необходимо приобрести порт RS422 или хотя бы преобразователь RS422 в RS232, поскольку ПК не поставляются с этим интерфейсом в стандартной комплектации. Кроме того, вы можете обнаружить, что устройств, поддерживающих RS422, стало меньше. К преимуществам можно отнести:
- Большие расстояния — обычно поддерживаются расстояния до 150 метров, а с помощью ретрансляторов можно достичь еще больших расстояний.
- Multi-Drop — обычно к одному порту можно подключить до 32 устройств, а при использовании повторителей — и того больше. Устройства различаются уникальными адресами, которые присваиваются каждому устройству. Например, если к порту подключено 6 устройств, они будут иметь адреса от 1 до 6. Если вы хотите связаться с устройством №1, вы посылаете команду на устройство №1. Все устройства услышат команду, но ответит только то устройство, которому она адресована. Это относится и к RS485. Адреса могут быть заданы с помощью переключателей или программно, в зависимости от конструкции устройства.
- Помехоустойчивость — поскольку в данном случае используется отдельная витая пара для передачи и приема (четыре провода), она обеспечивает лучшую помехоустойчивость по сравнению с RS232.
Протокол RS485
Протокол RS485 очень похож на протокол RS422. Настолько, что это часто приводит к путанице. Оба протокола являются multi-drop. Они оба могут передавать данные на очень большие расстояния, так зачем же выбирать один из них?
Прежде всего, RS485 — это, как правило, двухпроводная система, хотя некоторые производители могут использовать и четырехпроводную RS485, которая встречается гораздо реже и очень похожа на протокол RS422. Вот некоторые основные различия между двухпроводными RS485 и RS422:
- RS485 может иметь несколько управляющих устройств и несколько прослушивающих устройств. RS422 может иметь только одно управляющее устройство и несколько прослушивающих устройств. Например, можно подключить один ПК (управляющее устройство) к 10 контроллерам температуры (слушателям). ПК может дать команду любому из контроллеров изменить настройку или отправить показания температуры, но ни один из контроллеров температуры не может командовать другими контроллерами. При использовании RS485 на одной шине можно разместить несколько ПК и несколько контроллеров, так что один ПК может послать команду на изменение настройки, а другой — на отправку данных и т.д. Помните, что все устройства на шине должны иметь уникальный адрес, так что отвечать будет только то устройство, которому адресована команда. (аналогично RS422)
- Распиновка RS485 проще, так как приходится иметь дело только с двумя проводами вместо четырех.
- Программирование RS-485 требует более сложного подхода, поскольку передача и приём данных осуществляются по одному и тому же проводу. Необходимо включать и выключать передатчик в правильный момент для обеспечения корректной передачи данных. Представьте, что передатчик отправляет команду USD$2SEND. Если передатчик не выключится вовремя, то данные, отправленные другим устройством, могут быть пропущены. Если передатчик выключится слишком быстро, есть вероятность, что часть команды USD$S2END может быть потеряна, не закончив передачу символьных битов. При настройке карты RS485 для управления временем переключения требуется считать STATUS REGISTER. В некоторых модулях, как например OMG-ULTRA-485, есть функция автоматического режима, который позволяет модулю самостоятельно определять время переключения, что делает его работу незаметной для программиста. Так как RS422 и, соответственно, RS232 имеют отдельные линии для передачи и приема данных, они проще в реализации.
Реализация: Сoпряжeниe Arduino c прoтoкoлoм RS485 (Modbus)
Примечание: Возможно, будет проще использовать преобразователь RS232 в RS485, который подключается к компьютеру. Убедитесь, что преобразователь имеет интеллектуальное управление передачей данных, чтобы он автоматически управлял переключением и был незаметен для пользователя. Затем настройте устройство так же, как устройство RS422 или RS232.