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

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


<!--T:2-->
Полный список протестированных устройств: [[Поддерживаемые устройства#Подключаемые по RS-485]].
Устройства Wiren Board используют шину RS-485 и [[Special:MyLanguage/Протокол Modbus|протокол Modbus]] поверх неё. Ограничения стандартов по количеству устройств на одной шине:
* RS-485 — не более 256 устройств, при этом точное количество зависит от самих устройств;
* протокол Modbus — не более 247 ведомых (slave) устройств.
Контроллер Wiren Board может работать с 247 периферийными устройствами Wiren Board на шине, это было проверено опытным путем.


Скорость передачи данных в периферийных устройствах Wiren Board — до 115200 бит/с.
<div class="toccolours mw-collapsible mw-collapsed">


Длина линии RS-485 по стандарту может быть до 1200 метров. При такой длине линии устройства могут работать на скорости 115200 бит/с. Однако при плохом качестве кабеля, отсутствии экранирования и внешних помехах может понадобиться снизить скорость.
== Как физически подключить устройства ==
<div class="mw-collapsible-content">
=== Прокладка шины ===
Все устройства RS-485 устанавливаются на одну шину. Хотя шина работает по двум проводам, удобно прокладывать четырёхжильным кабелем - дифпара для данных (сигналы А и В) и ещё пара проводов (GND и +12V) для питания периферийных устройств на шине. Можно использовать обычную витую пару CAT5 для Ethernet - тогда одна пара используется для данных, ещё две — для питания (так как по питанию идёт значительный ток, лучше и для 12В, и для земли использовать по отдельной паре), одна пара остаётся свободной.


<!--T:5-->
'''Важно:''' при подключении внешних устройств к Wiren Board по шине RS-485, нужно соединять не только линии передачи данных A и B, но и  '''земли''' (общий провод) контроллера Wiren Board и внешних устройств. Подключение общего провода необходимо в случае подключения к неизолированному порту RS-485 и рекомендуется в случае подключения к гальванически изолированному порту.
[https://www.bookasutp.ru/Chapter2_3.aspx Энциклопедия АСУ ТП. Интерфейс RS-485] — подробно про работу интерфейса.
Клемма общего провода обозначается, в зависимости от оборудования, как SC, SG, G, GND, ground или reference. На контроллерах Wiren Board эта клемма обозначена как GND. При подключении к изолированному порту, нужно подключаться к изолированной земле данного порта (клеммы "GND iso").


==Как правильно проложить шину==
При большой длине шины, в конце шины нужно установить терминальный резистор (примерно 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:8-->
=== Подключение устройств ===
В статье [[RS-485:Физическое подключение|RS-485:Физическое подключение]] описано, как правильно проложить шину.
{|align="right"
|-valign="top"
|[[Файл:Подлючение RS-485.jpeg|thumb|200px|Наконечники для шины]]
|[[Файл:Подлючение RS-485 к WB.jpeg|thumb|300px|Подключение шины RS-485 к Wiren Board 4 (в центре)]]
|}
Так как соединение осуществляется общей шиной, следует обратить внимание на качественное соединение всех узлов линии:
*при обрыве линии устройства за обрывом не будут работать
*при коротком замыкании не будут работать все устройства.


==Добавление устройства в веб-интерфейс== <!--T:9-->
Рекомендуем использовать [http://www.chipdip.ru/catalog-show/tips/ штыревые наконечники под обжимку]. Это позволяет легко подключать-отключать устройства без потери работоспособности остальных устройств на шине.


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


==Как ускорить опрос устройств==
Лайфхак: так как внутри Wiren Board стоит растяжка линий, после подключения его к шине напряжение на линии A будет больше чем на B примерно на 0.5 В. Поэтому подключая периферийные устройства вы легко можете определить линии шины вольтметром.
{{YouTube
|link= https://youtu.be/d_olK15Xhkw
|text= Как ускорить работу Modbus-устройств (30:19)
|start=1819
}}


Для ускорения опроса устройств по шине RS-485 рекомендуем:
=== Дополнительная информация ===
# Проверить [[RS-485:Физическое подключение | физическое подключение]] и отсутствие ошибок.
#Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
# [[UART Communication Settings | Увеличить скорость обмена до 115200 бит/с]]. На разумных длинах и топологии сети все должно нормально работать. Если на шине есть устройства, не поддерживающие эту скорость, см. пункт 6.
#При прокладке шины нужно соблюдать [http://www.gaw.ru/html.cgi/txt/interface/rs485/app.htm определённые правила], но для передачи в одной квартире подойдёт любой кабель и даже возможны ответвления.
# [[RS-485:Configuration_via_Web_Interface#Отключение каналов, смена режимов и настройка параметров | Отключить]] через веб-интерфейс в настройках устройства ненужные каналы.
</div>
# Если канал не поддерживает события, [[RS-485:Configuration_via_Web_Interface#poll-period | настроить период опроса каналов]]. Точная настройка периода опроса может быть полезна, если какие-то каналы нужно опрашивать часто или наоборот — редко.
</div>
# Разделить устройства по типам и портам, в контроллере 2 порта RS-485 и еще 3 можно добавить модулями расширения:
#* Устройства, не поддерживающие скорость 115200,  подключите отдельно.  
#* Счетчики MAP так же подключите отдельно или с оборудованием, не требующим быстрой реакции. В счетчиках очень много параметров, опрос идет медленно.
#* При большом количестве устройств разделите их на несколько портов. При прочих равных скорость вырастет кратно количеству портов.


Также полезно использовать свежие версии прошивок, поддерживающие [[Fast Modbus | Быстрый Modbus]]&#9889;. В расширении некоторые Modbus-регистры поддерживают события, которые опрашиваются широковещательными командами без очереди. Это позволяет значительно сократить время опроса изменений в регистрах.
==Как настроить контроллер для работы с подключенными устройствами==
Настройка совместимых с контроллером устройств происходит через [[Веб-интерфейс Wiren Board|веб-интерфейс]].
#Зайдите на страницу ''Configs'', щёлкните по пункту ''/etc/wb-mqtt-serial.conf'' (''serial'' - название последовательных портов, RS-485 относится к ним). [[File:rs-485-setup-configs.png|thumb|center|400 px]]
#Откроется страница настройки последовательных портов. В левой части выберите порт, к которому вы подключили устройство. Порты названы по терминологии Linux - ''/dev/ttyXXXN''; чтобы понять, как называется используемый вами, смотрите [[#Реализация портов в разных версиях Wiren Board]]. [[File:rs-485-setup-select-port.png|center|400 px|На скриншоте выбран порт Wiren Board 5, подписанный на корпусе как ''RS-485'']]
#Установите настройки порта: скорость (бит/с), количество бит в пакете, есть ли бит чётности, количество стоп-битов - эта информация указана в документации к периферийному оборудованию. Затем обязательно поставьте галочку ''Enable port'' - ''Включить порт'' (с помощью этой настройки порт можно отключить, если какое-нибудь оборудование на нём начнёт сбоить).<br>'''N.B.''' Если вы подключаете несколько устройств к одному порту контроллера, эти настройки у них должны совпадать. [[File:rs-485-setup-port-settings.png|thumb|center|400 px|Установлены настройки для релейного [[WB-MRM2]]]]
#Перейдите к разделу ''List of devices'' - ''Список устройств'' ниже. Нажмите кнопку ''+ Serial Device'', чтобы добавить устройство. Выберите тип устройства (обычно соответствует модели устройства) и укажите его адрес (обычно указывается  документации к устройству, для устройств нашего производства указан на корпусе). Адрес устройства указывается либо в шестнадцатеричном виде (начинается с ''0x..''), либо в десятичном (как обычное число). Затем обязательно нажмите синюю кнопку ''Save'' - ''Сохранить'' вверху страницы. [[File:rs-485-setup-device-settings.png|thumb|center|400 px|Выбран тип устройства [[WB-MRM2]] и установлен десятичный адрес ''130'']]
#Чтобы проверить работу устройства, перейдите на страницу ''Devices''. На ней должен появиться блок, соответствующий подключённому устройству. В нашем примере, появился блок ''WB-MRM2 130'' (шаблон названия - ''ТИП_УСТРОЙСТВА АДРЕС'') с двумя кнопками для управления реле, двумя индикаторами входов для кнопок и счётчиками нажатий. Можно нажать на кнопку - реле на подключённом устройстве переключится. [[File:rs-485-setup-device-connected.png|thumb|center|400 px|Отображение подключённого устройства [[WB-MRM2]] с адресом ''130'' на странице ''Devices''. Можно нажимать кнопки и управлять реле на устройстве]]
#Чтобы добавить кнопку управления на главную страницу ''Home'' и назвать её соответственно назначению (например, ''Свет в коридоре''), нужно создать виджет (''Widget''). Для этого нужно перейти на страницу ''Widgets'' и нажать зелёную кнопку ''Add widget''. Затем нужно ввести параметры виджета: имя (так он называться в интерфейсе), комнату (группу, к которой привязан виджет; используется для упорядочивания, когда виджетов много - если мало, можно выбрать любую), и тип виджета - в нашем случае реле управляет освещением, поэтому выбираем ''Light Control Relay''. После этого появляется ещё одна опция - нужно выбрать, какому именно устройству соответствует виджет. Все доступные устройства выбранного типа показываются в списке, их имена даны в соответствии с терминологией [[MQTT]]. В завершении нажимаем кнопку ''Submit'' - новый виджет появится на странице ''Widgets''. [[File:rs-485-setup-add-widget.png|thumb|center|400 px|Создание виджета для управления светом на основе Реле 1 подключённого устройства [[WB-MRM2]]]]


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


<!--T:12-->
=== Низкоуровневая работа с портом RS-485 в Wiren Board ===
*Стандартно в Wiren Board с подключёнными по RS-485 устройствами работает [[Special:MyLanguage/Драйвер wb-mqtt-serial|Драйвер wb-mqtt-serial]] (ранее ''wb-homa-modbus''). Он позволяет работать с подключёнными устройствами RS-485 через систему [[Special:MyLanguage/MQTT|MQTT]]-сообщений.
Для этого смотрите инструкцию [[Драйвер wb-homa-modbus#Конфигурационный файл]].
*Если вы хотите работать с портом RS-485 напрямую, не используя этот драйвер — отключите его, иначе он будет писать в порт RS-485.
 
*[[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]]
Если вы хотите работать с портом RS-485 самостоятельно, не используя [[Драйвер wb-homa-modbus]], то сначала проверьте, что в файле <code>/etc/wb-homa-modbus.conf</code> нет конфигурации для этого порта  - иначе стандартный драйвер будет писать в этот порт. Также ознакомьтесь с инструкцией [[Работа с последовательным портом из Linux]]. Также смотрите [[Доступ к RS-485 портам с PC]]
*[[Special:MyLanguage/Доступ к порту RS-485 контроллера Wiren Board с компьютера|Доступ к порту RS-485 контроллера Wiren Board с компьютера]]
 
*[[Special:MyLanguage/UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]]
== Реализация портов в разных версиях Wiren Board ==
</translate>
 
{| class="wikitable"
|'''Модель контроллера'''
|'''Название порта в Linux'''
|'''Разъём на контроллере'''
|'''Примечание'''
|-
|rowspan="2"|[[Wiren Board 5]]
|''/dev/ttyAPP1''
|Подписан ''RS-485'', клеммники A и B
|Неизолированный порт, установлен терминатор
|-
|''/dev/ttyAPP4''
|Подписан ''CAN'' (так как этот же порт может использоваться как CAN)
|Неизолированный порт, установлен терминатор, мультиплексирован с CAN
|-
|rowspan="2"|[[Wiren Board 4]]
|''/dev/ttyNSC0''
|Подписан ''RS-485-ISO''
|Изолированный порт, установлен терминатор
|-
|''/dev/ttyNSC1''
|
|Неизолированный порт, установлен терминатор
|-
|rowspan="2"|[[Wiren Board NETMON-1]]
|''/dev/ttyNSC0''
|Подпись ''и8''
|rowspan="2"|Полудуплексные порты. Трансиверы подключен к чипу [[SC16IS752]]
|-
|''/dev/ttyNSC1''
|Подпись ''и6''
|-
|rowspan="2"|[[Wiren Board Smart Home 3.5]]
|''/dev/ttyNSC0''
|Зелёная пара клеммников
|rowspan="2"|[[Файл:Перемычки.png|thumb|200px|Перемычки терминаторов в Wiren Board Smart Home 3.5]] Полудуплексные порты. Трансиверы подключен к чипу [[SC16IS752]]. <br> На плате установлены терминаторы между линиями A и В, их можно отклчить, распаяв перемычки (по умолчанию запаяны) - смотрите фото.
|-
|''/dev/ttyNSC1''
|Синяя пара клеммников
|-
|[[Wiren Board 2.8]]
|''/dev/ttyNSC0''
|Линии A и B на клеммниках
|(Есть не во всех комплектациях) Полудуплексный порт. Трансивер подключен к чипу [[SC16IS752]].
|}

Версия 17:13, 11 февраля 2016

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

Какие устройства можно подключать к Wiren Board по RS-485

К контроллеру можно подключать устройства с интерфейсом Modbus нашего производства, счётчики Меркурий и Милур, а также некоторые другие устройства, в том числе работающие по протоколу Modbus.

Полный список протестированных устройств: Поддерживаемые устройства#Подключаемые по RS-485.

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

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

Все устройства 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 Ом, подробнее в Википедии).

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

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

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

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

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

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

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

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

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

Как настроить контроллер для работы с подключенными устройствами

Настройка совместимых с контроллером устройств происходит через веб-интерфейс.

  1. Зайдите на страницу Configs, щёлкните по пункту /etc/wb-mqtt-serial.conf (serial - название последовательных портов, RS-485 относится к ним).
    Rs-485-setup-configs.png
  2. Откроется страница настройки последовательных портов. В левой части выберите порт, к которому вы подключили устройство. Порты названы по терминологии Linux - /dev/ttyXXXN; чтобы понять, как называется используемый вами, смотрите #Реализация портов в разных версиях Wiren Board.
    На скриншоте выбран порт Wiren Board 5, подписанный на корпусе как RS-485
  3. Установите настройки порта: скорость (бит/с), количество бит в пакете, есть ли бит чётности, количество стоп-битов - эта информация указана в документации к периферийному оборудованию. Затем обязательно поставьте галочку Enable port - Включить порт (с помощью этой настройки порт можно отключить, если какое-нибудь оборудование на нём начнёт сбоить).
    N.B. Если вы подключаете несколько устройств к одному порту контроллера, эти настройки у них должны совпадать.
    Установлены настройки для релейного WB-MRM2
  4. Перейдите к разделу List of devices - Список устройств ниже. Нажмите кнопку + Serial Device, чтобы добавить устройство. Выберите тип устройства (обычно соответствует модели устройства) и укажите его адрес (обычно указывается документации к устройству, для устройств нашего производства указан на корпусе). Адрес устройства указывается либо в шестнадцатеричном виде (начинается с 0x..), либо в десятичном (как обычное число). Затем обязательно нажмите синюю кнопку Save - Сохранить вверху страницы.
    Выбран тип устройства WB-MRM2 и установлен десятичный адрес 130
  5. Чтобы проверить работу устройства, перейдите на страницу Devices. На ней должен появиться блок, соответствующий подключённому устройству. В нашем примере, появился блок WB-MRM2 130 (шаблон названия - ТИП_УСТРОЙСТВА АДРЕС) с двумя кнопками для управления реле, двумя индикаторами входов для кнопок и счётчиками нажатий. Можно нажать на кнопку - реле на подключённом устройстве переключится.
    Отображение подключённого устройства WB-MRM2 с адресом 130 на странице Devices. Можно нажимать кнопки и управлять реле на устройстве
  6. Чтобы добавить кнопку управления на главную страницу Home и назвать её соответственно назначению (например, Свет в коридоре), нужно создать виджет (Widget). Для этого нужно перейти на страницу Widgets и нажать зелёную кнопку Add widget. Затем нужно ввести параметры виджета: имя (так он называться в интерфейсе), комнату (группу, к которой привязан виджет; используется для упорядочивания, когда виджетов много - если мало, можно выбрать любую), и тип виджета - в нашем случае реле управляет освещением, поэтому выбираем Light Control Relay. После этого появляется ещё одна опция - нужно выбрать, какому именно устройству соответствует виджет. Все доступные устройства выбранного типа показываются в списке, их имена даны в соответствии с терминологией MQTT. В завершении нажимаем кнопку Submit - новый виджет появится на странице Widgets.
    Создание виджета для управления светом на основе Реле 1 подключённого устройства WB-MRM2


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

Для этого смотрите инструкцию Драйвер wb-homa-modbus#Конфигурационный файл.

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

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

Модель контроллера Название порта в Linux Разъём на контроллере Примечание
Wiren Board 5 /dev/ttyAPP1 Подписан RS-485, клеммники A и B Неизолированный порт, установлен терминатор
/dev/ttyAPP4 Подписан CAN (так как этот же порт может использоваться как CAN) Неизолированный порт, установлен терминатор, мультиплексирован с CAN
Wiren Board 4 /dev/ttyNSC0 Подписан RS-485-ISO Изолированный порт, установлен терминатор
/dev/ttyNSC1 Неизолированный порт, установлен терминатор
Wiren Board NETMON-1 /dev/ttyNSC0 Подпись и8 Полудуплексные порты. Трансиверы подключен к чипу SC16IS752
/dev/ttyNSC1 Подпись и6
Wiren Board Smart Home 3.5 /dev/ttyNSC0 Зелёная пара клеммников
Перемычки терминаторов в Wiren Board Smart Home 3.5
Полудуплексные порты. Трансиверы подключен к чипу SC16IS752.
На плате установлены терминаторы между линиями A и В, их можно отклчить, распаяв перемычки (по умолчанию запаяны) - смотрите фото.
/dev/ttyNSC1 Синяя пара клеммников
Wiren Board 2.8 /dev/ttyNSC0 Линии A и B на клеммниках (Есть не во всех комплектациях) Полудуплексный порт. Трансивер подключен к чипу SC16IS752.