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

Материал из Wiren Board
(не показана 201 промежуточная версия 10 участников)
Строка 1: Строка 1:
<languages/>
'''RS-485''' - стандарт коммуникации по двухпроводной шине. По порту RS-485 к Wiren Board можно подключать периферийные устройства.
<translate>
<!--T:1-->
__NOTOC__
== Описание ==
[[File:Max number WB RS-485 devices.jpg|thumb|right|300 px|Эксперимент, подтверждающий работу контроллера Wiren Board с 247 периферийными устройствами Wiren Board на одной шине]]
'''RS-485''' стандарт коммуникации по двухпроводной шине.


<!--T:2-->
== Краткое описание стандарта ==
Устройства Wiren Board используют шину RS-485 и [[Special:MyLanguage/Протокол Modbus|протокол Modbus]] поверх неё. Ограничения стандартов по количеству устройств на одной шине:
RS-485 - стандарт физического уровня, в котором биты передаются разностью напряжений - смотрите [https://ru.wikipedia.org/wiki/RS-485 описание в Википедии]. Поверх него должен работать логический уровень - стандарт сообщений, которыми обмениваются устройства. Wiren Board из коробки поддерживает стандарт [https://ru.wikipedia.org/wiki/Modbus#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5 Modbus RTU], но также может работать и с другими - подробнее ниже.
* RS-485 — не более 256 устройств, при этом точное количество зависит от самих устройств;
* протокол Modbus — не более 247 ведомых (slave) устройств.
Контроллер Wiren Board может работать с 247 периферийными устройствами Wiren Board на шине, это было проверено опытным путем.


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


Длина линии RS-485 по стандарту может быть до 1200 метров. При такой длине линии устройства могут работать на скорости 115200 бит/с. Однако при плохом качестве кабеля, отсутствии экранирования и внешних помехах может понадобиться снизить скорость.
'''В конце шины нужно установить терминальный резистор (примерно 150 Ом, подробнее в [https://ru.wikipedia.org/wiki/RS-485#.D0.A1.D0.BE.D0.B3.D0.BB.D0.B0.D1.81.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5 Википедии]).'''


<!--T:5-->
=== Подключение устройств ===
[https://www.bookasutp.ru/Chapter2_3.aspx Энциклопедия АСУ ТП. Интерфейс RS-485] — подробно про работу интерфейса.
{|align="right"
|-valign="top"
|[[Файл:Подлючение RS-485.jpeg|thumb|200px|Наконечники для шины]]
|[[Файл:Подлючение RS-485 к WB.jpeg|thumb|300px|Подключение к шин RS-485]]
|}


==Как правильно проложить шину==
Т.к. соединение осуществляется общей шиной, то если произойдет обрыв линии, устройства за обрывом не будут работать.
{{YouTube
При возникновении КЗ вообще ничего не будет работать.
|link= https://youtu.be/f9zvU900sPI?feature=shared
Поэтому следует обратить внимание на качественное соединение всех узлов линии.
|text= Подключение Modbus модулей по RS-485
Рекомендуем использовать штыревые наконечники под обжимку.
}}
Это позволяет легко подключать-отключать
<!--T:8-->
устройства без потери работоспособности остальных устройств на шине.
В статье [[RS-485:Физическое подключение|RS-485:Физическое подключение]] описано, как правильно проложить шину.


==Добавление устройства в веб-интерфейс== <!--T:9-->
Для удобства подключения шины на контроллере WB рядом с клеммниками А и В
расположены клеммники GND и Vout. Подключаем А к А, В к В.


<!--T:10-->
Небольшая хитрость: т.к. внутри контроллера стоит растяжка линий, то при отсутствии передачи напряжение на линии A (~2,6V) больше чем на B(~2V). Подключая периферийные устройства вы легко можете определить линии шины вольтметром.
[[File:rs-485-setup-configs.png|thumb|right|300 px|Настройка происходит через страницу ''Configs'' [[RS-485:Настройка через веб-интерфейс|веб-интерфейса]]]]
[[RS-485:Настройка через веб-интерфейс|RS-485:Настройка через веб-интерфейс]] - что сделать для появления устройства в веб-интерфейсе контроллера.


==Как ускорить опрос устройств==
=== Преимущества RS-485 ===
{{YouTube
#Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
|link= https://youtu.be/d_olK15Xhkw
#Общая шина - один кабель на все устройства.
|text= Как ускорить работу Modbus-устройств (30:19)
#При прокладке шины нужно соблюдать [http://www.gaw.ru/html.cgi/txt/interface/rs485/app.htm определённые правила], но для передачи в одной квартире подойдёт любой кабель и даже возможны ответвления.
|start=1819
}}


Для ускорения опроса устройств по шине RS-485 рекомендуем:
# Проверить [[RS-485:Физическое подключение | физическое подключение]] и отсутствие ошибок.
# [[UART Communication Settings | Увеличить скорость обмена до 115200 бит/с]]. На разумных длинах и топологии сети все должно нормально работать. Если на шине есть устройства, не поддерживающие эту скорость, см. пункт 6.
# [[RS-485:Configuration_via_Web_Interface#Отключение каналов, смена режимов и настройка параметров | Отключить]] через веб-интерфейс в настройках устройства ненужные каналы.
# Если канал не поддерживает события, [[RS-485:Configuration_via_Web_Interface#poll-period | настроить период опроса каналов]]. Точная настройка периода опроса может быть полезна, если какие-то каналы нужно опрашивать часто или наоборот — редко.
# Разделить устройства по типам и портам, в контроллере 2 порта RS-485 и еще 3 можно добавить модулями расширения:
#* Устройства, не поддерживающие скорость 115200,  подключите отдельно.
#* Счетчики MAP так же подключите отдельно или с оборудованием, не требующим быстрой реакции. В счетчиках очень много параметров, опрос идет медленно.
#* При большом количестве устройств разделите их на несколько портов. При прочих равных скорость вырастет кратно количеству портов.


Также полезно использовать свежие версии прошивок, поддерживающие [[Fast Modbus | Быстрый Modbus]]&#9889;. В расширении некоторые Modbus-регистры поддерживают события, которые опрашиваются широковещательными командами без очереди. Это позволяет значительно сократить время опроса изменений в регистрах.


== Работа с портом RS-485 контроллера из собственного ПО == <!--T:11-->
== Особенности работы Modbus RTU ==


<!--T:12-->
Обмен информацией по шине осуществляется по принципу запрос-ответ.
*Стандартно в Wiren Board с подключёнными по RS-485 устройствами работает [[Special:MyLanguage/Драйвер wb-mqtt-serial|Драйвер wb-mqtt-serial]] (ранее ''wb-homa-modbus''). Он позволяет работать с подключёнными устройствами RS-485 через систему [[Special:MyLanguage/MQTT|MQTT]]-сообщений.
 
*Если вы хотите работать с портом RS-485 напрямую, не используя этот драйвер — отключите его, иначе он будет писать в порт RS-485.
Каждое устройство на шине имеет свой адрес.
*[[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]]
Для исполнительного устройства контроллер посылает команду, в ответ получает подтверждение.
*[[Special:MyLanguage/Доступ к порту RS-485 контроллера Wiren Board с компьютера|Доступ к порту RS-485 контроллера Wiren Board с компьютера]]
Для датчиков контроллер посылает запрос, в ответ приходит значение.
*[[Special:MyLanguage/UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]]
 
</translate>
Как правило, датчики опрашиваются по кругу.
 
Время цикла опроса зависит от скорости шины, от количества датчиков,
от скорости их ответа и т. д. Это время может быть достаточно большим, до десятков секунд.
Имейте это ввиду, если вы подключаете датчики требующие быстрого реагирования.
Способы решения проблемы - разбиение на несколько линий и ....
 
Для подключения устройств требуется предварительная настройка
(прописывание адреса, указание типа и т.д.).  
Как правило, она несложная и прописана в документации к ним.
 
== Логические уровни кроме Modbus RTU ==
 
 
== Работа с портом RS-485 в Wiren Board ==
 
Ознакомьтесь с инструкцией [[Работа с последовательным портом из Linux]].
 
Последовательные порты RS-485 в Linux на Wiren Board имеют названия '''/dev/ttyNSC0''' и '''/dev/ttyNSC1'''.
 
== Детали реализации портов в разных версиях Wiren Board ==
 
=== Wiren Board Smart Home rev. 3.5 ===
 
[[Файл:Перемычки.png|thumb|300px|Перемычки терминаторов в 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]]. Соответсвующий последовательный порт определяется системой как <b>/dev/ttyNSC0</b>. См. [[SC16IS752#UART0]]

Версия 22:10, 28 апреля 2015

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

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

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

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

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

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

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

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

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

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

Для удобства подключения шины на контроллере WB рядом с клеммниками А и В расположены клеммники GND и Vout. Подключаем А к А, В к В.

Небольшая хитрость: т.к. внутри контроллера стоит растяжка линий, то при отсутствии передачи напряжение на линии A (~2,6V) больше чем на B(~2V). Подключая периферийные устройства вы легко можете определить линии шины вольтметром.

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

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


Особенности работы Modbus RTU

Обмен информацией по шине осуществляется по принципу запрос-ответ.

Каждое устройство на шине имеет свой адрес. Для исполнительного устройства контроллер посылает команду, в ответ получает подтверждение. Для датчиков контроллер посылает запрос, в ответ приходит значение.

Как правило, датчики опрашиваются по кругу.

Время цикла опроса зависит от скорости шины, от количества датчиков, от скорости их ответа и т. д. Это время может быть достаточно большим, до десятков секунд. Имейте это ввиду, если вы подключаете датчики требующие быстрого реагирования. Способы решения проблемы - разбиение на несколько линий и ....

Для подключения устройств требуется предварительная настройка (прописывание адреса, указание типа и т.д.). Как правило, она несложная и прописана в документации к ним.

Логические уровни кроме Modbus RTU

Работа с портом 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