Перейти к содержанию

Навигация

Modbus: различия между версиями

4052 байта убрано ,  7 месяцев назад
Строка 273: Строка 273:
== Расширение протокола Modbus от Wiren Board ==
== Расширение протокола Modbus от Wiren Board ==
{{Anchor|fast-modbus}}
{{Anchor|fast-modbus}}
Мы производим устройства, которые работают по стандартному протоколу Modbus RTU. Но протокол очень старый и имеет ряд недостатков, которые мы решили устранить с помощью своего расширения протокола.
Мы производим устройства, которые работают по стандартному протоколу Modbus RTU. Но протокол очень старый и имеет ряд недостатков, которые мы решили устранить.


Всё описываемое ниже справедливо только для Modbus-устройств Wiren Board.
Мы добавили к стандартному протоколу новые функции: настраиваемое время задержки, игнорирование стопбитов и режим сплошного чтения регистров.


Торговое название расширения протокола «Быстрый Modbus».
Также выпустили расширение протокола под названием «Быстрый Modbus». В нем появились события и быстрое сканирование устройств на шине RS-485.
 
Ниже описаны новые функции, а про расширение «Быстрый Modbus» читайте на [[Fast_Modbus |странице с описанием]].
 
Всё описываемое справедливо только для Modbus-устройств Wiren Board.


=== Настраиваемое время задержки ответа устройством ===
=== Настраиваемое время задержки ответа устройством ===
Строка 286: Строка 290:
В устройствах есть специальный регистр 113, в котором можно настроить время ответа slave-устройства в миллисекундах. Нужное значение подбирается опытным путём.
В устройствах есть специальный регистр 113, в котором можно настроить время ответа slave-устройства в миллисекундах. Нужное значение подбирается опытным путём.


=== Стопбиты ===
=== Игнорирование стопбитов ===
Устройства всегда ожидают от мастера 1 стопбит, а отправляют ответ с 2.  
Устройства всегда ожидают от мастера 1 стопбит, а отправляют ответ с 2.  


Строка 298: Строка 302:


При таком запросе устройство вернёт пакет со значением регистров. Если регистры отсутствуют в устройстве, то для них будет возвращено значение 0xFFFE.
При таком запросе устройство вернёт пакет со значением регистров. Если регистры отсутствуют в устройстве, то для них будет возвращено значение 0xFFFE.
=== Сканирование устройств на шине ===
Обычно инсталляция содержит несколько slave-устройств в щите или в поле на одной шине RS-485. Каждое устройство имеет адрес, который пользователь может менять. Обычно при монтаже адреса slave-устройств переписываются с корпуса устройства и вносятся вручную в конфигурацию мастера. Это не очень удобно.
Раньше для сканирования шины использовался специальный скрипт, который перебирал все возможные адреса на шине и ждал от них ответа в течение определённого времени. Процесс занимал несколько минут и зависел от настроек связи устройств: скорости, стоповых битов и т.п.
В расширении протокола мы добавили возможность быстро сканировать шину без необходимости выжидать таймаут для каждого несуществующего адреса. Более того, при сканировании могут быть обнаружены устройства с одинаковыми адресами, которым можно задать новые адреса не отключая устройства от шины! Также функция сканирования способна обнаружить на одной шине устройства с разными настройками связи.
Теперь можно собрать щит не обращая внимания на modbus-адреса устройств. В процессе сканирования будут прочитаны модели устройств, настройки связи, их серийные номера и адреса на шине. Притом, вы можете изменить адреса подключённых устройств, обращаясь к устройству по уникальному серийному номеру.
Описание расширенных команд и референсная реализация утилиты сканирования доступны в [https://github.com/wirenboard/wb-modbus-ext-scanner репозитории].
=== События ⚡ ===
{{Anchor|events}}
Для некоторых регистров устройств Wiren Board доступны «события» — это позволяет сократить время опроса изменений в регистрах устройств на шине.
Работает так: мастер отправляет в шину широковещательные запросы каждые 50 мс, устройства на шине проводят арбитраж и по очереди отправляют изменившиеся регистры мастеру.
События доступны для некоторых регистров, они отмечены в карте регистров молнией ⚡.
Эта функция доступна только для устройств Wiren Board и активируется специальной командой от мастера. Если мастер не поддерживает наше расширение протокола — устройство работает по обычному протоколу Modbus RTU, что гарантирует совместимость с огромным парком сторонних устройств.
Подробнее читайте в [https://github.com/wirenboard/wb-modbus-ext-scanner/blob/main/protocol.md описании протокола на Github].
=== Поддержка быстрого Modbus в прошивках ===
{|  border="1" class="wikitable"
! Устройство || Версия прошивки с поддержкой "быстрого Modbus"
|-
| WB-MRx, WB-MWAC
| 1.19.0
|-
| WB-MDM3
| 2.6.0
|-
| WB-LED, WB-MRGBW-D
| 3.2.0
|-
| WB-MSx, WB-MSWx, WB-MIR, WB-M1W2
| 4.23.0
|-
| WB-MAI11
| не поддерживается
|-
| WB-MAI6
| 2.0.0
|-
| WB-MAO4
| 2.2.0
|-
| WB-MAPx
| 2.4.0
|-
| WB-MIO
| 1.6.0
|-
| WB-REF-U
| 1.4.0
|-
| WB-REF-DF
| 1.1.0
|-
|}


</translate>
</translate>
translator, wb_editors
4251

правка