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

Материал из Wiren Board
(не показано 136 промежуточных версий 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], а также протоколы устройств [http://smart.uniel.ru/ Uniel] и [http://ydom.ru ydom.ru].
* RS-485 — не более 256 устройств, при этом точное количество зависит от самих устройств;
=== Краткое описание протокола Modbus RTU ===
* протокол Modbus — не более 247 ведомых (slave) устройств.
Обмен информацией происходит по принципу запрос-ответ: контроллер посылает запрос, устройство отвечает. Каждое устройство на шине имеет свой восьмибитный адрес. Адрес может быть как жестко задан, так и устанавливаться при предварительной настройке - это указывается в документации к устройству.
Контроллер Wiren Board может работать с 247 периферийными устройствами Wiren Board на шине, это было проверено опытным путем.


Скорость передачи данных в периферийных устройствах Wiren Board — до 115200 бит/с.
== Поддерживаемые устройства ==
Однако даже если Wiren Board поддерживает протокол, по которому работает устройство, Wiren Board не обязательно поддерживает само это устройство. В стандартном ПО Wiren Board идут драйверы как для работы с [[Периферийные устройства с интерфейсом Modbus серии WB-xxxx | периферией производства компании "Бесконтактные устройства"]], так и для некоторой другой - смотрите список [[Поддерживаемые_устройства#RS-485]].


Длина линии RS-485 по стандарту может быть до 1200 метров. При такой длине линии устройства могут работать на скорости 115200 бит/с. Однако при плохом качестве кабеля, отсутствии экранирования и внешних помехах может понадобиться снизить скорость.
== Как подключить устройства ==


<!--T:5-->
<div class="toccolours mw-collapsible mw-collapsed">
[https://www.bookasutp.ru/Chapter2_3.aspx Энциклопедия АСУ ТП. Интерфейс RS-485] подробно про работу интерфейса.
===Прокладка шины===
This text is not collapsible; but the next is collapsible and hidden by default:
<div class="mw-collapsible-content">
Все устройства RS-485 устанавливаются на одну шину. Хотя шина работает по двум проводам, удобно прокладывать четырёхжильным кабелем - дифпара для данных (сигналы А и В) и ещё пара проводов (GND и +12V) для питания периферийных устройств на шине. Можно использовать обычную витую пару CAT5 для Ethernet - тогда одна пара используется для данных, ещё две для питания (так как по питанию идёт значительный ток, лучше и для 12В, и для земли использовать по отдельной паре), одна пара остаётся свободной.
</div>
</div>


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


<!--T:8-->
'''Важно:''' при подключении внешних устройств к Wiren Board по шине RS-485, нужно соединять не только линии передачи данных A и B, но и  '''земли''' (общий провод) контроллера Wiren Board и внешних устройств. Подключение общего провода необходимо в случае подключения к неизолированному порту RS-485 и рекомендуется в случае подключения к гальванически изолированному порту.
В статье [[RS-485:Физическое подключение|RS-485:Физическое подключение]] описано, как правильно проложить шину.
Клемма общего провода обозначается, в зависимости от оборудования, как SC, SG, G, GND, ground или reference. На контроллерах Wiren Board эта клемма обозначена как GND. При подключении к изолированному порту, нужно подключаться к изолированной земле данного порта (клеммы "GND iso").


==Добавление устройства в веб-интерфейс== <!--T:9-->
При большой длине шины, в конце шины нужно установить терминальный резистор (примерно 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 Википедии]).
В контроллерах Wiren Board терминатор, как правило, уже установлен (см. инструкцию к соответствующей модели), поэтому устанавливать терминальный резистор на стороне Wiren Board не нужно.


<!--T:10-->
=== Подключение устройств ===
[[File:rs-485-setup-configs.png|thumb|right|300 px|Настройка происходит через страницу ''Configs'' [[RS-485:Настройка через веб-интерфейс|веб-интерфейса]]]]
{|align="right"
[[RS-485:Настройка через веб-интерфейс|RS-485:Настройка через веб-интерфейс]] - что сделать для появления устройства в веб-интерфейсе контроллера.
|-valign="top"
|[[Файл:Подлючение RS-485.jpeg|thumb|200px|Наконечники для шины]]
|[[Файл:Подлючение RS-485 к WB.jpeg|thumb|300px|Подключение шины RS-485 к Wiren Board 4 (в центре)]]
|}
Так как соединение осуществляется общей шиной, следует обратить внимание на качественное соединение всех узлов линии:
*при обрыве линии устройства за обрывом не будут работать
*при коротком замыкании не будут работать все устройства.


==Как ускорить опрос устройств==
Рекомендуем использовать [http://www.chipdip.ru/catalog-show/tips/ штыревые наконечники под обжимку]. Это позволяет легко подключать-отключать устройства без потери работоспособности остальных устройств на шине.
{{YouTube
|link= https://youtu.be/d_olK15Xhkw
|text= Как ускорить работу Modbus-устройств (30:19)
|start=1819
}}


Для ускорения опроса устройств по шине RS-485 рекомендуем:
Провод A на всех устрйоствах подключается к клеммнику с маркировкой А, провод B - всегда к B. На Wiren Board 4 рядом с клеммниками А и В
# Проверить [[RS-485:Физическое подключение | физическое подключение]] и отсутствие ошибок.
расположены клеммники GND и Vout - можно сразу подключить шины питания (сначала проверьте требования к питанию ваших устройств!).
# [[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-регистры поддерживают события, которые опрашиваются широковещательными командами без очереди. Это позволяет значительно сократить время опроса изменений в регистрах.
Лайфхак: так как внутри Wiren Board стоит растяжка линий, после подключения его к шине напряжение на линии A будет больше чем на B примерно на 0.5 В. Поэтому подключая периферийные устройства вы легко можете определить линии шины вольтметром.


== Работа с портом RS-485 контроллера из собственного ПО == <!--T:11-->
=== Дополнительная информация ===
#Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
#При прокладке шины нужно соблюдать [http://www.gaw.ru/html.cgi/txt/interface/rs485/app.htm определённые правила], но для передачи в одной квартире подойдёт любой кабель и даже возможны ответвления.


<!--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 периферия появилась в веб-интерфейсе контроллера, надо отредактировать конфигурационный файл <code>/etc/wb-homa-modbus.conf</code>, находящийся на контроллере. Для этого смотрите инструкцию [[Драйвер wb-homa-modbus#Конфигурационный файл]].
*Если вы хотите работать с портом RS-485 напрямую, не используя этот драйвер — отключите его, иначе он будет писать в порт RS-485.
 
*[[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]]
== Низкоуровневая работа с портом RS-485 в Wiren Board ==
*[[Special:MyLanguage/Доступ к порту RS-485 контроллера Wiren Board с компьютера|Доступ к порту RS-485 контроллера Wiren Board с компьютера]]
Если вы хотите работать с портом RS-485 самостоятельно, не используя [[Драйвер wb-homa-modbus]], то сначала проверьте, что в файле <code>/etc/wb-homa-modbus.conf</code> нет конфигурации для этого порта  - иначе стандартный драйвер будет писать в этот порт. Также ознакомьтесь с инструкцией [[Работа с последовательным портом из Linux]].
*[[Special:MyLanguage/UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]]
 
</translate>
== Реализация портов в разных версиях Wiren Board ==
 
=== Wiren Board 5 ===
Порты определяются в системе как:
* ''/dev/''ttyAPP1'' - неизолированный порт на клемниках A и B (подпись "RS-485").
* ''/dev/ttyAPP4'' - неизолированный порт на клемниках L и H (подпись "CAN", мультиплексирован с CAN).
На линиях установлены терминаторы.
 
=== Wiren Board 4 ===
Порты определяются в системе как:
* ''/dev/ttyNSC0 ''- изолированный (RS-485-ISO),
* ''/dev/ttyNSC1'' - неизолированный порт.
 
=== [[Wiren Board NETMON-1]] ===
Контроллер имеет два полудуплексных порта. Трансиверы подключен к чипу [[SC16IS752]].
 
Порты определяются в системе как:
* ''/dev/ttyNSC0'' - разъём и8
* ''/dev/ttyNSC1'' - разъём и6
 
=== 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]]. Соответсвующий последовательный порт определяется системой как ''/dev/ttyNSC0''. См. [[SC16IS752#UART0]]

Версия 19:12, 9 февраля 2016

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

Поддерживаемые протоколы

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

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

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

Поддерживаемые устройства

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

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

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

This text is not collapsible; but the next is collapsible and hidden by default:

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

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

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

Важно: при подключении внешних устройств к Wiren Board по шине RS-485, нужно соединять не только линии передачи данных A и B, но и земли (общий провод) контроллера Wiren Board и внешних устройств. Подключение общего провода необходимо в случае подключения к неизолированному порту RS-485 и рекомендуется в случае подключения к гальванически изолированному порту. Клемма общего провода обозначается, в зависимости от оборудования, как SC, SG, G, GND, ground или reference. На контроллерах Wiren Board эта клемма обозначена как GND. При подключении к изолированному порту, нужно подключаться к изолированной земле данного порта (клеммы "GND iso").

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

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

Наконечники для шины
Подключение шины RS-485 к Wiren Board 4 (в центре)

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

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

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

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

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

Дополнительная информация

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

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

Чтобы подключённая по RS-485 периферия появилась в веб-интерфейсе контроллера, надо отредактировать конфигурационный файл /etc/wb-homa-modbus.conf, находящийся на контроллере. Для этого смотрите инструкцию Драйвер wb-homa-modbus#Конфигурационный файл.

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

Если вы хотите работать с портом RS-485 самостоятельно, не используя Драйвер wb-homa-modbus, то сначала проверьте, что в файле /etc/wb-homa-modbus.conf нет конфигурации для этого порта - иначе стандартный драйвер будет писать в этот порт. Также ознакомьтесь с инструкцией Работа с последовательным портом из Linux.

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

Wiren Board 5

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

  • /dev/ttyAPP1 - неизолированный порт на клемниках A и B (подпись "RS-485").
  • /dev/ttyAPP4 - неизолированный порт на клемниках L и H (подпись "CAN", мультиплексирован с CAN).

На линиях установлены терминаторы.

Wiren Board 4

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

  • /dev/ttyNSC0 - изолированный (RS-485-ISO),
  • /dev/ttyNSC1 - неизолированный порт.

Wiren Board NETMON-1

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

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

  • /dev/ttyNSC0 - разъём и8
  • /dev/ttyNSC1 - разъём и6

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