RS-485: различия между версиями

Материал из Wiren Board
Строка 52: Строка 52:
Ознакомьтесь с инструкцией [[Работа с последовательным портом из Linux]].
Ознакомьтесь с инструкцией [[Работа с последовательным портом из Linux]].


Последовательные порты RS-485 в Linux на Wiren Board имеют названия '''/dev/ttyNSC0''' и '''/dev/ttyNSC1'''.
Последовательные порты RS-485 в Linux на Wiren Board имеют названия '''/dev/ttyNSC0''' (неизолированный) и '''/dev/ttyNSC1''' (изолированный).


== Детали реализации портов в разных версиях Wiren Board ==
== Детали реализации портов в разных версиях Wiren Board ==

Версия 14:39, 6 мая 2015

RS-485 - стандарт коммуникации по двухпроводной шине. По порту RS-485 к Wiren Board можно подключать периферийные устройства.

Краткое описание стандарта

RS-485 - стандарт физического уровня, в котором биты передаются разностью напряжений - смотрите описание в Википедии. Поверх него должен работать логический уровень - стандарт сообщений, которыми обмениваются устройства. Wiren Board из коробки поддерживает стандарт Modbus RTU, но также может работать и с другими - подробнее ниже.

Как подключить устройства

Прокладка шины

Все устройства RS-485 устанавливаются на одну шину. Хотя шина работает по двум проводам, удобно прокладывать четырёхжильным кабелем - дифпара для данных (сигналы А и В) и ещё пара проводов (GND и +12V) для питания периферийных устройств на шине. Можно использовать обычную витую пару CAT5 для Ethernet - тогда одна пара используется для данных, ещё две — для питания (так как по питанию идёт значительный ток, лучше и для 12В, и для земли использовать по два скрученных провода), одна остаётся свободной.

В конце шины нужно установить терминальный резистор (примерно 150 Ом, подробнее в Википедии).

Подключение устройств

Наконечники для шины
Подключение к шин RS-485

Так как соединение осуществляется общей шиной, следует обратить внимание на качественное соединение всех узлов линии:

  • при обрыве линии устройства за обрывом не будут работать
  • при коротком замыкании не будут работать все устройства.

Рекомендуем использовать штыревые наконечники под обжимку. Это позволяет легко подключать-отключать устройства без потери работоспособности остальных устройств на шине.

Провод A на всех устрйоствах подключается к клеммнику с маркировкой А, провод B - всегда к B. На Wiren Board рядом с клеммниками А и В расположены клеммники GND и Vout - можно сразу подключить шины питания (сначала проверьте требования ваших устройств!).

Лайфхак: так как внутри Wiren Board стоит растяжка линий, после подключения его к шине напряжение на линии A будет больше чем на B примерно на 0.5 В. Поэтому подключая периферийные устройства вы легко можете определить линии шины вольтметром.

Преимущества RS-485

  1. Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
  2. Общая шина - один кабель на все устройства.
  3. При прокладке шины нужно соблюдать определённые правила, но для передачи в одной квартире подойдёт любой кабель и даже возможны ответвления.


Программное конфигурирование устройств

Скорость, чётность

Стандарт де-факто: 9600 бит/с, нет контроля чётности, два стоп-бита - 8N2.

Краткое описание протокола Modbus RTU

Обмен информацией происходит по принципу запрос-ответ: контроллер посылает запрос, устройство отвечает. Каждое устройство на шине имеет свой восьмибитный адрес. Адрес может быть как жестко задан, так и устанавливаться при предварительной настройке - это указывается в документации к устройству.

Настройка Wiren Board для работы с периферией

В стандартном ПО Wiren Board идут драйверы для работы как для работы с периферией производства компании "Бесконтактные устройства", так и для некоторой другой - смотрите Поддерживаемые_устройства#RS-485.

Полное описание смотрите в документации к драйверу на Github.

Протоколы кроме Modbus RTU

Wiren Board также поддерживает протоколы устройств Uniel и ydom.ru. Они поддерживаются драйвером MQTT, но не могут работать с устройствами Modbus RTU на одной шине - их нужно подключить на отдельную шину и подключить к другому порту RS-485 Wiren Board.

Низкоуровневая работа с портом RS-485 в Wiren Board

Ознакомьтесь с инструкцией Работа с последовательным портом из Linux.

Последовательные порты RS-485 в Linux на Wiren Board имеют названия /dev/ttyNSC0 (неизолированный) и /dev/ttyNSC1 (изолированный).

Детали реализации портов в разных версиях Wiren Board

Wiren Board Smart Home rev. 3.5

Перемычки терминаторов в Wiren Board Smart Home rev. 3.5

Контроллер имеет два полудуплексных порта. Трансивер подключен к чипу SC16IS752.

Порты определяются в системе как:

  • /dev/ttyNSC0 - зелёная пара клеммников
  • /dev/ttyNSC1 - синяя пара клеммников

Для уменьшения эффектов отражения, линии RS-485 должны заканчиваться "терминаторами" - резисторами, равными волновому сопротивлению линии. На плате установлены резисторы по 150 Ом между линиями A и В. Для их отключения распаяйте соответствующие SMD-перемычки (по умолчанию запаяны), см. фото.

Wiren Board rev. 2.8

Wiren Board 2.8 может поставляться с трансивером RS-485. Поддерживается полудуплексный режим работы, линии A и B выведены на клеммники.

Трансивер подключен к чипу SC16IS752. Соответсвующий последовательный порт определяется системой как /dev/ttyNSC0. См. SC16IS752#UART0