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

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


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


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


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


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


При большой длине шины, в конце шины нужно установить терминальный резистор (примерно 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-->
{|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/ штыревые наконечники под обжимку]. Это позволяет легко подключать-отключать устройства без потери работоспособности остальных устройств на шине.
==Добавление устройства в веб-интерфейс== <!--T:9-->


Провод A на всех устройствах подключается к клеммнику с маркировкой А, провод B - всегда к B. На Wiren Board 4 рядом с клеммниками А и В
<!--T:10-->
расположены клеммники GND и Vout - можно сразу подключить шины питания (сначала проверьте требования к питанию ваших устройств!).
[[File:rs-485-setup-configs.png|thumb|right|300 px|Настройка происходит через страницу ''Configs'' [[RS-485:Настройка через веб-интерфейс|веб-интерфейса]]]]
[[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 рекомендуем:
#Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
# Проверить [[RS-485:Физическое подключение | физическое подключение]] и отсутствие ошибок.
#При прокладке шины нужно соблюдать [http://www.gaw.ru/html.cgi/txt/interface/rs485/app.htm определённые правила], но для передачи в одной квартире подойдёт любой кабель и даже возможны ответвления.
# [[UART Communication Settings | Увеличить скорость обмена до 115200 бит/с]]. На разумных длинах и топологии сети все должно нормально работать. Если на шине есть устройства, не поддерживающие эту скорость, см. пункт 6.
</div>
# [[RS-485:Configuration_via_Web_Interface#Отключение каналов, смена режимов и настройка параметров | Отключить]] через веб-интерфейс в настройках устройства ненужные каналы.
</div>
# Если канал не поддерживает события, [[RS-485:Configuration_via_Web_Interface#poll-period | настроить период опроса каналов]]. Точная настройка периода опроса может быть полезна, если какие-то каналы нужно опрашивать часто или наоборот — редко.
# Разделить устройства по типам и портам, в контроллере 2 порта RS-485 и еще 3 можно добавить модулями расширения:
#* Устройства, не поддерживающие скорость 115200,  подключите отдельно.  
#* Счетчики MAP так же подключите отдельно или с оборудованием, не требующим быстрой реакции. В счетчиках очень много параметров, опрос идет медленно.
#* При большом количестве устройств разделите их на несколько портов. При прочих равных скорость вырастет кратно количеству портов.


==Настройка из [[Веб-интерфейс Wiren Board|веб-интерфейса]]==
Также полезно использовать свежие версии прошивок, поддерживающие [[Fast Modbus | Быстрый Modbus]]&#9889;. В расширении некоторые Modbus-регистры поддерживают события, которые опрашиваются широковещательными командами без очереди. Это позволяет значительно сократить время опроса изменений в регистрах.
#Зайдите на страницу ''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-->


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

Текущая версия на 10:35, 13 апреля 2024

Другие языки:

Описание

Эксперимент, подтверждающий работу контроллера Wiren Board с 247 периферийными устройствами Wiren Board на одной шине

RS-485 — стандарт коммуникации по двухпроводной шине.

Устройства Wiren Board используют шину RS-485 и протокол Modbus поверх неё. Ограничения стандартов по количеству устройств на одной шине:

  • RS-485 — не более 256 устройств, при этом точное количество зависит от самих устройств;
  • протокол Modbus — не более 247 ведомых (slave) устройств.

Контроллер Wiren Board может работать с 247 периферийными устройствами Wiren Board на шине, это было проверено опытным путем.

Скорость передачи данных в периферийных устройствах Wiren Board — до 115200 бит/с.

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

Энциклопедия АСУ ТП. Интерфейс RS-485 — подробно про работу интерфейса.

Как правильно проложить шину

В статье RS-485:Физическое подключение описано, как правильно проложить шину.

Добавление устройства в веб-интерфейс

Настройка происходит через страницу Configs веб-интерфейса

RS-485:Настройка через веб-интерфейс - что сделать для появления устройства в веб-интерфейсе контроллера.

Как ускорить опрос устройств

Как ускорить работу Modbus-устройств (30:19)

Для ускорения опроса устройств по шине RS-485 рекомендуем:

  1. Проверить физическое подключение и отсутствие ошибок.
  2. Увеличить скорость обмена до 115200 бит/с. На разумных длинах и топологии сети все должно нормально работать. Если на шине есть устройства, не поддерживающие эту скорость, см. пункт 6.
  3. Отключить через веб-интерфейс в настройках устройства ненужные каналы.
  4. Если канал не поддерживает события, настроить период опроса каналов. Точная настройка периода опроса может быть полезна, если какие-то каналы нужно опрашивать часто или наоборот — редко.
  5. Разделить устройства по типам и портам, в контроллере 2 порта RS-485 и еще 3 можно добавить модулями расширения:
    • Устройства, не поддерживающие скорость 115200, подключите отдельно.
    • Счетчики MAP так же подключите отдельно или с оборудованием, не требующим быстрой реакции. В счетчиках очень много параметров, опрос идет медленно.
    • При большом количестве устройств разделите их на несколько портов. При прочих равных скорость вырастет кратно количеству портов.

Также полезно использовать свежие версии прошивок, поддерживающие Быстрый Modbus⚡. В расширении некоторые Modbus-регистры поддерживают события, которые опрашиваются широковещательными командами без очереди. Это позволяет значительно сократить время опроса изменений в регистрах.

Работа с портом RS-485 контроллера из собственного ПО