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

·Промышленный мониторинг

Modbus: старый, скучный и повсеместный

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

Modbus — протокол промышленного обмена, придуманный в конце семидесятых. У него нет типов данных, нет способа описать структуру, нет аутентификации и нет шифрования. Ошибку в нём легко сделать и трудно заметить.

И это первый протокол, для которого мы сделали работающий драйвер. Не потому, что он лучший.

Почему с него

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

Начинать с него означает, что первая же площадка подключается к тому, что там уже есть, а не к тому, что предстоит докупить.

Мы предпочли работающий драйвер одного распространённого протокола пяти заглушкам для протоколов, которые красиво выглядят в списке возможностей.

Что в нём неудобно

Нет типов. Регистр — это шестнадцать бит, и что в них лежит, протокол не сообщает. Целое, часть числа с плавающей точкой, набор флагов — определяется описанием прибора, а не протоколом.

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

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

Нет безопасности. Кто дотянулся до линии, тот может читать и писать.

Как с этим живут

Каталогом оборудования. Всё, чего нет в протоколе — единицы, множители, порядок байтов, значения для отказа датчика, — описывается в каталоге для класса прибора и проверяется на живом устройстве.

Формулировка «проверяется на живом устройстве» здесь ключевая. Адрес, который не прочитали своими глазами на этом конкретном приборе, считается непроверенным, потому что документация промышленных приборов регулярно расходится с прошивкой.

Отсутствие безопасности как проектное ограничение

Раз в протоколе нет аутентификации, безопасность обеспечивается сетевым уровнем: изоляцией линии и ограничением доступа к сегменту.

Это означает, что Modbus нельзя выставлять в общую сеть. Утверждение банальное, и нарушается оно постоянно — обычно при добавлении удалённого доступа «на время наладки».

Отсюда практическое правило: любой путь к промышленному сегменту описывается явно и имеет срок. Доступ, выданный на время наладки и не имеющий срока, остаётся навсегда.

Что мы говорим про остальные протоколы

Что драйверов для них пока нет, и они об этом честно сообщают.

Это неудобно в презентации и полезно на объекте: заглушка, которая притворяется рабочей, обнаруживается не на демонстрации, а там, где приборы уже закуплены и смонтированы.

Почему скучный протокол — это хорошо

Потому что у него сорок лет эксплуатации, известные проблемы и предсказуемое поведение.

Каждая из перечисленных выше неприятностей документирована тысячами людей и решается известным способом. Это выгодно отличает Modbus от современного протокола, у которого те же проблемы, но ещё не описанные.