ГлавнаяАкадемияВведение в протоколы автоматизации → Подготовка к сертификации CERT-INSTALLER

Подготовка к сертификации CERT-INSTALLER

Урок 7 · Введение в протоколы автоматизации · 30 мин · theory

Введение в сертификацию CERT-INSTALLER

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

Для заказчика наличие у исполнителя сертификата CERT-INSTALLER служит гарантией того, что система будет развернута в соответствии с лучшими отраслевыми практиками, будет надежной, безопасной и документированной. Для инженера — это значимое конкурентное преимущество и важный шаг в карьерном росте от монтажника к системному интегратору.

Обзор проверяемых компетенций

Экзамен CERT-INSTALLER комплексно проверяет знания в следующих ключевых областях:

* Modbus (RTU/TCP): Умение работать с картой регистров, настраивать опрос устройств, диагностировать ошибки связи (`Таймаут ответа`, `CRC Errors`).

* MQTT: Понимание архитектуры "брокер-клиент", структуры топиков, уровней качества обслуживания (QoS) и механизма `retained-сообщений`.

* 1-Wire, DALI, CAN: Базовые знания о топологии, подключении и принципах работы этих шин.

Структура экзамена

Экзамен состоит из двух независимых частей, которые сдаются последовательно. Для получения сертификации необходимо успешно сдать обе части.

| Компонент | Формат | Длительность | Проходной балл | Ключевые критерии оценки |

| ----------------------- | -------------------------------------------------------------------------------------- | ------------ | -------------- | -------------------------------------------------------------------------------------------------------------------- |

| Теоретический экзамен | Компьютерный тест: вопросы с выбором одного/нескольких ответов, "верно/неверно". | 60 минут | 80% | Знание протоколов, архитектуры платформы, правил безопасности, методологии диагностики. |

| Практический экзамен | Выполнение заданий на реальном или виртуальном стенде, имитирующем объект автоматизации. | 120 минут | 90% | Корректность настройки оборудования, работоспособность созданной логики, чистота кода, следование стандартам. |

Требования к кандидату

Для успешной сдачи экзамена кандидат должен обладать не только теоретическими знаниями, полученными в рамках курсов уровня Foundation и Installer, но и реальным практическим опытом. Рекомендуется перед записью на экзамен:

  • Полностью пройти курсы COURSE-01 по COURSE-06.
  • Самостоятельно выполнить все лабораторные работы из этих курсов.
  • Иметь опыт участия как минимум в одном проекте по развертыванию системы автоматизации на реальном объекте или на полноценном учебном стенде.
  • ---

    Теоретическая часть: Формат и примеры вопросов

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

    > 💡 Подсказка: Обратите особое внимание на вопросы, связанные с отладкой. Например, 'Почему `msg.payload` не доходит до следующей ноды?' или 'Какая команда Linux покажет открытые порты?'. Экзамен проверяет не только знание "как сделать", но и понимание "почему не работает".

    Разбор типовых форматов вопросов

    Примеры вопросов по MQTT

  • Вопрос: Клиент публикует сообщение в топик `office/lights/switch1` с флагом `retained=true` и `payload="ON"`. Что произойдет, когда новый клиент подпишется на этот топик через час?
  • * A) Ничего, сообщение уже устарело.

    * B) Клиент немедленно получит сообщение с `payload="ON"`.

    * C) Брокер отправит ошибку, так как флаг `retained` используется только с QoS 2.

    * D) Клиент получит сообщение, только если исходный издатель все еще в сети.

    Правильный ответ: B

  • Вопрос: Выберите все уровни QoS в MQTT, которые гарантируют доставку сообщения как минимум один раз.
  • * [ ] QoS 0 (At most once)

    * [ ] QoS 1 (At least once)

    * [ ] QoS 2 (Exactly once)

    Правильные ответы: B, C

    Примеры вопросов по Node-RED

  • Вопрос: Входящее сообщение в узел `Function` имеет следующую структуру:
  •     {

    "topic": "sensor/temp/room1",

    "payload": 25.5

    }

    В узле `Function` выполняется следующий код:

        msg.payload = {

    value: msg.payload,

    ts: Date.now()

    };

    msg.topic = "telemetry/temperature";

    return msg;

    Какова будет структура `msg.payload` на выходе из узла?

    * A) `25.5`

    * B) `{"value": 25.5}`

    * C) `{"value": 25.5, "ts": 1678886400000}` (с реальной временной меткой)

    * D) Произойдет ошибка, так как `msg.topic` нельзя изменять.

    Правильный ответ: C

  • Вопрос: Для чего предназначен узел `Catch` в Node-RED?
  • * A) Для перехвата только сообщений с определенным `msg.topic`.

    * B) Для перехвата и обработки ошибок, возникающих в других узлах на той же вкладке.

    * C) Для сохранения сообщений в кэше.

    * D) Для запуска потоков по расписанию.

    Правильный ответ: B

    Примеры вопросов по Modbus

  • Вопрос: В документации на счетчик электроэнергии указано, что текущее напряжение находится в Holding Register с номером 40101. Какой адрес регистра и код функции (FC) необходимо указать в узле `Modbus-Getter` для его чтения?
  • * A) Адрес: 101, FC: 4 (Read Input Registers)

    * B) Адрес: 40101, FC: 3 (Read Holding Registers)

    * C) Адрес: 100, FC: 3 (Read Holding Registers)

    * D) Адрес: 100, FC: 1 (Read Coils)

    Правильный ответ: C (Адресация с 0, поэтому 40101 -> 100. Holding Registers читаются функцией 3)

  • Вопрос: В чем ключевое отличие протокола Modbus RTU от Modbus TCP?
  • * A) Modbus RTU использует TCP/IP, а Modbus TCP - последовательный порт.

    * B) Modbus RTU работает поверх физического уровня RS-485/RS-232, а Modbus TCP - поверх сетей Ethernet (TCP/IP).

    * C) В Modbus RTU нет проверки целостности данных, в отличие от Modbus TCP.

    * D) Modbus TCP не требует указания адреса устройства (Unit ID).

    Правильный ответ: B

    ---

    Практическая часть: типовые задания на стенде

    Практический экзамен — это симуляция реальной пусконаладки на объекте. Вам будет предоставлен доступ к контроллеру HI и набору периферийного оборудования (либо их эмуляторам). Ваша задача — за ограниченное время выполнить несколько заданий, продемонстрировав умение "оживить" систему.

    > ⚠️ Внимание: Частая ошибка на практическом экзамене — неверная настройка сетевых интерфейсов в Linux или неправильное терминирование шины RS-485. Всегда проверяйте физическое подключение и базовые сетевые настройки перед тем, как искать ошибку в Node-RED.

    Описание типового экзаменационного стенда

    Задание 1 (пример): Настроить опрос Modbus RTU устройства и передать показания по MQTT

    Условие: Счетчик электроэнергии с адресом `Slave ID = 50` подключен к шине `RS485-1` контроллера. Параметры шины: `9600 8N1`. Согласно карте регистров, суммарная потребленная энергия (A+) находится в двух 16-битных `Input Registers` начиная с адреса `0x0110` (формат `uint32_le`). Необходимо настроить опрос этого параметра каждые 30 секунд и публиковать полученное значение в Вт\*ч в MQTT-топик `premise/1/powermeter/energy`. План выполнения:
  • Настройка Modbus в Node-RED: Создать `Modbus-Client` для `RS485-1` с нужными параметрами скорости и четности.
  • Создание потока:
  • * Использовать узел `Inject` для запуска опроса каждые 30 секунд.

    * Добавить узел `Modbus-Getter`. Настроить его на `Slave ID = 50`, `FC 4: Read Input Registers`, адрес `272` (0x0110) и количество `2`.

    * Добавить узел `Function` для обработки ответа. В нем:

    * Проверить, что ответ получен (`msg.payload.data` существует и является массивом).

    * Собрать 32-битное число из двух 16-битных регистров с учетом порядка байт `little-endian`.

    * Сформировать `msg.payload` в соответствии с паттерном "Контракт сообщения".

            // Пример кода для узла Function

    if (!msg.payload.data || msg.payload.data.length < 2) {

    node.error("Неполный ответ от счетчика", msg);

    return null;

    }

    // буфер из Modbus-узла приходит в big-endian

    const buffer = Buffer.from(msg.payload.buffer);

    // Читаем как Unsigned Integer, Little Endian, 32-bit

    const energy_wh = buffer.readUInt32LE(0);

    msg.topic = "premise/1/powermeter/energy";

    msg.payload = {

    value: energy_wh,

    unit: "Wh",

    source: "powermeter-mercury-206",

    ts: Date.now()

    };

    return msg;

    * Подключить выход узла `Function` к узлу `mqtt out` с настроенным топиком.

    * Настроить узел `Catch` для логирования ошибок связи.

    Задание 2 (пример): Реализовать логику управления освещением через MQTT-шлюз

    Условие: В системе есть абстрактный "пульт управления", который отправляет команды в формате JSON в топик `remote/1/command`. Необходимо реализовать в Node-RED логику, которая будет включать/выключать реле №3 и №4 контроллера HI при получении соответствующих команд. Формат команд от пульта:
    // Включение
    

    { "target": "light_group_main", "command": "ON" }

    // Выключение

    { "target": "light_group_main", "command": "OFF" }

    План выполнения:
  • Создание потока:
  • * Использовать узел `mqtt in`, подписанный на топик `remote/1/command`. Установить `Output: a parsed JSON object`.

    * Добавить узел `Switch` для фильтрации сообщений по `msg.payload.target == "light_group_main"`.

    * К выходу узла `Switch` подключить еще один `Switch`, который будет маршрутизировать поток в зависимости от `msg.payload.command` ("ON" или "OFF").

    * К выходу "ON" подключить два узла `Change`, которые устанавливают `msg.payload` в `true`.

    * К выходу "OFF" подключить два узла `Change`, которые устанавливают `msg.payload` в `false`.

    * От каждого узла `Change` направить поток на соответствующий узел управления реле (например, `rpi gpio out`, настроенный на реле 3 и 4).

    * Усложнение/бонусный балл: реализовать отправку ответного сообщения в топик `remote/1/command/result` о статусе выполнения команды.

    Задание 3 (пример): Написать bash-скрипт для мониторинга доступности IP-шлюза

    Условие: В сети есть важное устройство (например, Modbus TCP или KNX IP шлюз) с адресом `192.168.1.100`. Необходимо создать `bash-скрипт` на контроллере HI, который будет запускаться каждые 5 минут, проверять доступность шлюза по сети (ping) и, в случае недоступности, отправлять уведомление в Telegram. Данные для Telegram: `Bot Token: `, `Chat ID: `. План выполнения:
  • Создать файл скрипта: `sudo nano /usr/local/bin/check_gateway.sh`
  • Написать код скрипта:
  •     #!/bin/bash

    GATEWAY_IP="192.168.1.100"

    CHAT_ID=""

    BOT_TOKEN=""

    MESSAGE="Внимание! Шлюз по адресу $GATEWAY_IP недоступен."

    URL="https://api.telegram.org/bot$BOT_TOKEN/sendMessage"

    # Проверяем доступность устройства, отправляя один ICMP-пакет

    # с таймаутом в 2 секунды. Вывод команды подавляем.

    ping -c 1 -W 2 $GATEWAY_IP > /dev/null 2>&1

    # Проверяем код возврата команды ping

    # 0 - успех, любое другое значение - ошибка

    if [ $? -ne 0 ]; then

    # Если шлюз недоступен, отправляем сообщение в Telegram через curl

    curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE" > /dev/null

    fi

  • Сделать скрипт исполняемым: `sudo chmod +x /usr/local/bin/check_gateway.sh`
  • Добавить задание в `cron`:
  • * `crontab -e`

    Добавить строку: `/5 /usr/local/bin/check_gateway.sh`

    ---

    Стратегия подготовки и подведение итогов

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

    Разработка индивидуального плана подготовки

  • Самооценка: Честно ответьте себе на вопрос: "Какая из тем, перечисленных в компетенциях, вызывает у меня больше всего трудностей?".
  • Приоритизация: Составьте список тем, начиная с самых слабых. Например: 1) Работа с `buffer` в Node-RED; 2) Команды Linux для работы с файлами; 3) Настройка Modbus TCP.
  • Практика: Для каждой темы из списка найдите или придумайте небольшую практическую задачу. Не просто читайте, а делайте. Например, если ваша слабая сторона — Modbus, приобретите недорогой Modbus-модуль и настройте его опрос на своем стенде.
  • Повторение: Обязательно пересмотрите материалы предыдущих курсов и повторно выполните все лабораторные работы. Это закрепит мышечную память и придаст уверенности.
  • Симуляция экзамена: Попробуйте выполнить примеры практических заданий из этого урока "на время", засекая 40 минут на каждое. Это поможет привыкнуть к работе в условиях ограниченного времени.
  • Рекомендуемые ресурсы

    • Официальная документация платформы HI: Ваш главный источник информации.
    • Node-RED Cookbook: https://cookbook.nodered.org/ - сборник готовых рецептов для решения различных задач.
    • Официальная документация MQTT: https://mqtt.org/ - для глубокого понимания протокола.
    • Modbus.org: Спецификации и технические ресурсы по протоколу Modbus.
    • Симуляторы: Используйте программы-симуляторы Modbus Slave и MQTT-клиенты (например, MQTT Explorer) для отладки потоков без реального оборудования.

    Полезные команды Linux для диагностики

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

    | Команда | Назначение | Пример использования |

    | ----------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------ |

    | `ping ` | Проверка базовой доступности устройства в IP-сети. | `ping 192.168.1.1` |

    | `netstat -tuln` | Показать все активные слушающие (listening) TCP и UDP порты. Помогает понять, запущена ли служба. | `netstat -tuln \| grep 1883` (проверить MQTT-брокер) |

    | `ifconfig` или `ip a` | Показать конфигурацию сетевых интерфейсов (IP-адреса, маски). | `ip a show eth0` |

    | `systemctl status ` | Проверить статус службы (сервиса). | `systemctl status node-red` |

    | `journalctl -fu ` | Следить за логами службы в реальном времени. Ключевой инструмент для отладки Node-RED. | `journalctl -fu node-red` |

    | `mosquitto_sub -t '#'` | Подписаться на все MQTT-топики на локальном брокере. Полезно для отладки MQTT. | `mosquitto_sub -h localhost -t 'office/#' -v` |

    | `mosquitto_pub` | Опубликовать сообщение в MQTT-топик. Помогает эмулировать датчики. | `mosquitto_pub -t 'cmd/light' -m 'ON'` |

    | `lsusb` / `dmesg` | Показать подключенные USB-устройства и сообщения ядра (помогает найти COM-порт для RS-485). | `dmesg \| grep tty` |

    Что дальше

    Этот урок завершает модуль, посвященный пусконаладке и сдаче объекта. Мы рассмотрели все этапы, от первого включения до подготовки к сертификации, которая формализует ваши навыки. В следующих курсах уровня Advanced и Integrator мы перейдем к более сложным темам: разработке собственных узлов для Node-RED, интеграции с облачными платформами, проектированию отказоустойчивых систем и работе со сложным промышленным оборудованием. Успешная сдача экзамена CERT-INSTALLER — это ваш пропуск в мир больших и интересных проектов. Удачи в подготовке