16 879
правок
N.kulikov (обсуждение | вклад) |
|||
(не показано 17 промежуточных версий 6 участников) | |||
Строка 4: | Строка 4: | ||
==Основные понятия== <!--T:1--> | ==Основные понятия== <!--T:1--> | ||
{{YouTube | |||
|link= https://youtu.be/d_olK15Xhkw | |||
|text= Всё о Modbus и модулях Wiren Board | |||
}} | |||
<!--T:2--> | <!--T:2--> | ||
Modbus - это протокол | Modbus - это протокол, который служит для обмена данными между устройствами автоматизации и реализован в виде "протокола ответов на запросы (request-reply protocol)". | ||
<!--T:3--> | <!--T:3--> | ||
Строка 21: | Строка 25: | ||
<!--T:7--> | <!--T:7--> | ||
Пакет данных Modbus выглядит, как это показано на рисунке. '''PDU''' (Protocol Data Unit) — общая часть пакета MODBUS, включающая код функции и данные пакета. '''ADU''' (Application Data Unit) — полный пакет MODBUS. Включает в себя специфичную для физического уровня часть пакета и PDU. Для последовательных линий в заголовке ADU передается адрес устройства, а в конце — контрольная сумма CRC16. Максимальный размер | Пакет данных Modbus выглядит, как это показано на рисунке. '''PDU''' (Protocol Data Unit) — общая часть пакета MODBUS, включающая код функции и данные пакета. '''ADU''' (Application Data Unit) — полный пакет MODBUS. Включает в себя специфичную для физического уровня часть пакета и PDU. Для последовательных линий в заголовке ADU передается адрес устройства, а в конце — контрольная сумма CRC16. Максимальный размер PDU в последовательных коммуникационных линиях составляет '''253 байта''' (из максимальных, разрешенных спецификацией 256 байт вычитается 1 байт адреса и два байта контрольной суммы). Для справки — в Modbus TCP максимальная длина пакета составляет 260 байт. | ||
Строка 73: | Строка 77: | ||
Регистры в стандарте Modbus адресуются с помощью 16-битных адресов. Адресация начинается с нуля. Адрес регистра, таким образом, может принимать значения от 0 до 65535. | Регистры в стандарте Modbus адресуются с помощью 16-битных адресов. Адресация начинается с нуля. Адрес регистра, таким образом, может принимать значения от 0 до 65535. | ||
Адресные пространства регистров, также называемые таблицами | Адресные пространства регистров, также называемые таблицами или блоками, могут быть различны для всех четырёх типов регистров. Это значит, что значения регистров с одинаковым адресом, но разным типом, в общем случае разные. | ||
Например, при чтении регистра флагов (coil) номер 42, регистра дискретного входа (Discrete), регистров ввода и хранения (Input и Holding) с теми же адресами, можно получить четыре разных значения. | Например, при чтении регистра флагов (coil) номер 42, регистра дискретного входа (Discrete), регистров ввода и хранения (Input и Holding) с теми же адресами, можно получить четыре разных значения. | ||
Строка 271: | Строка 275: | ||
В случае ограниченных вычислительных ресурсов для вычисления контрольной суммы существует функция, использующая табличные значения (также приведена в спецификации). | В случае ограниченных вычислительных ресурсов для вычисления контрольной суммы существует функция, использующая табличные значения (также приведена в спецификации). | ||
== Расширение протокола Modbus Wiren Board == | == Расширение протокола Modbus от Wiren Board == | ||
{{Anchor|modbus-ext}} | |||
Мы производим устройства, которые работают по стандартному протоколу Modbus RTU. Но протокол очень старый и имеет ряд недостатков, которые мы решили устранить. | |||
Мы | Мы добавили к стандартному протоколу новые функции: настраиваемое время задержки, игнорирование стопбитов и режим сплошного чтения регистров. | ||
Всё описываемое | Также выпустили расширение протокола под названием «Быстрый Modbus». В нем появились события и быстрое сканирование устройств на шине RS-485. | ||
Ниже описаны новые функции, а про расширение «Быстрый Modbus» читайте на [[Fast_Modbus |странице с описанием]]. | |||
Всё описываемое справедливо только для Modbus-устройств Wiren Board. | |||
=== Настраиваемое время задержки ответа устройством === | === Настраиваемое время задержки ответа устройством === | ||
Строка 284: | Строка 294: | ||
В устройствах есть специальный регистр 113, в котором можно настроить время ответа slave-устройства в миллисекундах. Нужное значение подбирается опытным путём. | В устройствах есть специальный регистр 113, в котором можно настроить время ответа slave-устройства в миллисекундах. Нужное значение подбирается опытным путём. | ||
=== | === Игнорирование стопбитов === | ||
Устройства всегда ожидают от мастера 1 стопбит, а отправляют ответ с 2. | Устройства всегда ожидают от мастера 1 стопбит, а отправляют ответ с 2. | ||
Строка 296: | Строка 306: | ||
При таком запросе устройство вернёт пакет со значением регистров. Если регистры отсутствуют в устройстве, то для них будет возвращено значение 0xFFFE. | При таком запросе устройство вернёт пакет со значением регистров. Если регистры отсутствуют в устройстве, то для них будет возвращено значение 0xFFFE. | ||
</translate> | </translate> |