Что такое проприетарные протоколы?

Три уровня автомасштабирования в Kubernetes: как эффективно их использовать Modbus - это сетевой протокол прикладного уровня, широко используемый в промышленном производстве для обмена данными между устройствами Machine-to-Machine, M2M. Он не теряет своей популярности с момента разработки в году. В этой статье описаны основные особенности протокола Modbus, его преимущества и недостатки, а также наиболее частые сценарии использования. Основные принципы работы Modbus Modbus использует архитектуру Master-Slave, которая относительно недавно была переименована разработчиком в Client-Server.

При таком подходе в сети имеется клиент-ведущий, который периодически посылает запросы серверу-ведомому для чтения или записи параметров в них. Только клиентское устройство запускает все запросы: протокол не поддерживает отправку сообщений от серверных устройств без предварительного опроса клиентского устройства.

Помимо этого, существует ряд специфических полей, которые будут варьироваться в зависимости от физического уровня сети - чаще всего это адрес серверного устройства и контрольная сумма для обнаружения ошибок. Давайте рассмотрим каждое поле в пакете ADU в обобщенном виде. Особенности, присущие различным вариантам протокола, будут описаны в следующем разделе. Дополнительный адрес серверного оборудования.

Определяет, куда посылать запрос клиента. Он может быть любым от 1 до 0. Адрес 0 используется для трансляции данных от клиента ко всем серверным устройствам и не представляет собой ответа сервера, а адреса считаются зарезервированными.

В некоторых реализациях протокола это поле игнорируется - например, в Modbus TCP, где чаще всего используется стандартная IP-адресация. Код функции. Определяет, какое действие должно выполнить серверное устройство. Коды функций варьируются от 1 до , при этом коды от до зарезервированы для сообщений об ошибках.

Код 0 не используется. Для кодов из диапазона и пользователи могут написать свои собственные пользовательские функциональные коды. Некоторые коды, такие как 9, 10, 13 и другие, зарезервированы конкретными производителями для своего оборудования и не разрешены для общего использования Зарезервированные коды функций.

Коды за пределами этих двух подмножеств являются публичными Public Function Codes - это документированные функции, которые являются общественным достоянием.

Данные Данные. Данные, необходимые для выполнения выбранной функции на серверном устройстве. Чаще всего это адреса регистров для чтения или записи, количество регистров и так далее. Длина и формат поля зависят от кода функции. Некоторые функции не требуют передачи данных. Контрольная сумма Проверка ошибок. Содержит число, вычисленное специальным алгоритмом для проверки целостности пакета. Структура пакета данных Modbus в обобщенном виде Рассмотрим передачу пакетов в Modbus. Клиент инициирует запрос к серверному устройству, передавая код функции и данные в PDU.

В зависимости от физического уровня сети, в пакете могут быть дополнительные поля, как обсуждалось выше. Если при обработке запроса не возникло ошибок, сервер возвращает пакет, содержащий исходный код функции и запрошенные данные. Если на серверном устройстве нет ошибок, то при возникновении ошибки серверное устройство возвращает в качестве данных код исключения, а вместо исходного кода функции - его значение, увеличенное на 0x80 в шестнадцатеричном HEX.

Также существуют таймауты на стороне клиента, чтобы избежать длительного ожидания ответа от неработающих устройств. Это тип протокола, который в качестве физического уровня в сети чаще всего использует последовательный интерфейс RS, но реже - RS и RS. Фактически, все эти интерфейсы определяют связь через витые пары, но они различаются по максимальной длине кабеля, количеству узлов и так далее.

Формат пакета Modbus RTU в целом совпадает с обобщенной формой, описанной ранее: дополнительные поля не используются. Контроль целостности пакетов поддерживается с помощью алгоритма CRC Эти правила не позволяют использовать Modbus RTU в медленных, например, модемных сетях. Временные задержки между пакетами не нужны. Для проверки целостности используется алгоритм LRC В целом этот вариант протокола в настоящее время используется очень редко из-за трудностей кодирования и большого размера сообщений.

Но он может быть хорошей альтернативой Modbus RTU на линиях с сетевыми задержками и оборудованием с менее точными таймерами. Это реализация ModBus в сетях Ethernet. Поэтому адрес в пакете Modbus чаще всего игнорируется, а широковещательные сообщения не используются. Однако адрес может потребоваться, если соединение устанавливается со шлюзом, который, в свою очередь, выходит в сеть RS - для дальнейшего общения с устройствами уже на языке Modbus.

Необходим, когда клиентское устройство посылает несколько сообщений, не дожидаясь ответа на предыдущие сообщения, чтобы затем связать ответы с запросами. Идентификатор протокола всегда заполняется нулями и резервируется для будущего использования.

Длина остатка пакета Длина остатка пакета: адреса и PDU функции и кода данных. Структура пакета данных Modbus TCP Мы рассмотрели только открытые и наиболее распространенные реализации протокола Modbus. Регистры и функции Modbus Поскольку Modbus предназначен для работы с промышленной автоматикой, обмен данными с устройствами Modbus происходит через регистры.

Они делятся на входы и выходы. Входы можно только читать, а выходы можно читать и записывать. Доступ к регистрам осуществляется с помощью битового адреса. Первый элемент в каждой группе регистров соответствует адресу 0.

.

Спецификация протокола не определяет, каковы физически адресные пространства и какие внутренние адреса устройства должны быть доступны для регистров. В общем случае, регистры с одинаковым адресом, но разных типов являются разными. Примечание В документации производителей на некоторые, особенно старые устройства, адреса регистров могут быть представлены в другом формате - когда адресация не начинается с нуля, а первая цифра адреса определяет тип регистра.

В таких случаях входной регистр с адресом 0 может быть описан как , а регистр удержания - как В этих случаях в пакетах данных следует использовать адреса в стандартном формате Modbus, независимо от того, как они представлены в документации.

В этих случаях в пакетах данных следует использовать адреса в стандартном формате Modbus, независимо от того, как они представлены в документации.

Для получения корректного адреса необходимо просто вычесть смещение, соответствующее типу регистра. В некоторых программных пакетах предусмотрена автоматическая коррекция адресов. Типы регистров.

В некоторых программных пакетах предусмотрена автоматическая коррекция адресов.

Навигация

Comments

  1. Я бы не сказал, используя такой подход и логику, можно к такому бреду прийти. Так что, не стоит, не стоит… А, вообще, спасибо, это реально интересно и есть над чем задуматься. Всех с наступающими праздниками и побольше светлых идей в НГ!!!!! 31-го зажжем!