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

Материал из Wiren Board
(не показаны 102 промежуточные версии 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..''), либо в десятичном (как обычное число). [[File:rs-485-setup-device-settings.png|thumb|center|400 px|Выбран тип устройства [[WB-MRM2]] и установлен десятичный адрес ''130'']]


== Работа с портом RS-485 контроллера из собственного ПО == <!--T:11-->
=== Низкоуровневая работа с портом RS-485 в Wiren Board ===
Для этого смотрите инструкцию [[Драйвер wb-homa-modbus#Конфигурационный файл]].


<!--T:12-->
Если вы хотите работать с портом RS-485 самостоятельно, не используя [[Драйвер wb-homa-modbus]], то сначала проверьте, что в файле <code>/etc/wb-homa-modbus.conf</code> нет конфигурации для этого порта  - иначе стандартный драйвер будет писать в этот порт. Также ознакомьтесь с инструкцией [[Работа с последовательным портом из Linux]]. Также смотрите [[Доступ к RS-485 портам с PC]]
*Стандартно в 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.
== Реализация портов в разных версиях Wiren Board ==
*[[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]]
 
*[[Special:MyLanguage/Доступ к порту RS-485 контроллера Wiren Board с компьютера|Доступ к порту RS-485 контроллера Wiren Board с компьютера]]
=== Wiren Board 5 ===
*[[Special:MyLanguage/UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]]
Порты определяются в системе как:
</translate>
* ''/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]]

Версия 13:29, 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..), либо в десятичном (как обычное число).
    Выбран тип устройства WB-MRM2 и установлен десятичный адрес 130

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

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

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

Реализация портов в разных версиях 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