Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Мониторинг потребления энергии по Modbus с MKR WiFi 1010 и RS485

Компоненты и материалы

Arduino MKR WiFi 1010 ×1
Arduino MKR 485 Shield ×1
USB-A — Micro-USB кабель ×1
Блок питания USB ×1
Скрученный экранированный кабель (один витая пара) ×1

Необходимые инструменты и станки

Цифровой мультиметр Digilent Mastech MS8217
Электромонтёрские ножницы
Маленькая плоская отвёртка (для клемм MKR485)
Средняя крестообразная отвёртка

Приложения и онлайн-сервисы

Home Assistant
Arduino Web Editor
MQTT

О проекте

Если вы действительно хотите сделать свой дом умнее, начните с ежемесячных счетов (энергия, газ и т.д.). Как говорят: Хорошо для Планеты, Кошелька и Прибыли. Открытое железо — наш путь к устойчивости в домашней среде! Эта идея привела нас к созданию простого и безопасного решения, легко интегрируемого с любым ПО домашней автоматики, так как оно предоставляет данные через MQTT (покажем интеграцию с Home Assistant).

Обзор

Для измерения электроэнергии мы выбрали счётчик Finder Energy Meter, так как он предназначен для DIN-рельсы и идеально вписывается в главный щиток дома. Круто в этом приборе — интерфейс RS485 Modbus, промышленный стандарт протокола связи, который упрощает общение с Arduino. Фактически, Arduino выпустила официальный шилд MKR485 и две библиотеки для декодирования протокола. В качестве основной платы выбрали Arduino MKR WiFi 1010, так как она имеет тот же форм-фактор MKR и Wi-Fi.

Установка

Внимание! Проверьте правила вашей страны по работе с домашней электросистемой и будьте предельно осторожны — это может быть смертельно! Если вы не знаете, как — вызовите электрика.

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

Затем установите счётчик энергии в щиток и подключите фазу и ноль от главной автоматической выключателя к входу счётчика, соблюдая цветовое соглашение (синий — ноль, коричневый/чёрный/серый — фаза в ЕС). Выход соедините с остальной системой.

Мониторинг потребления энергии по Modbus с MKR WiFi 1010 и RS485

Готово? Пришло время закрепить RS485-соединение! Используем скрученный однопарный кабель с заземлением, обычно применяемый для телефонных линий. С таким кабелем можно передавать данные на большие расстояния (1.2 км). Нам нужен кабель достаточной длины, чтобы выйти из щитка и разместить Arduino в доступном месте.

Мониторинг потребления энергии по Modbus с MKR WiFi 1010 и RS485

Интерфейс RS485 имеет клеммы A, B и COM.

Так как MKR Shield поддерживает также полный дуплекс, вы увидите ещё две клеммы Y и Z. Здесь мы закрепим другой конец кабеля, так как из даташита известно, что полудуплексная связь происходит только на Y и Z. Клемма COM должна быть соединена с ISOGND. Поскольку мы используем полудуплексное соединение и кабель типа peer-to-peer, нужно настроить переключатели на MKR485 Shield под нашу схему: устанавливаем HALF (2 на OFF) и терминацию на Y-Z (3 на ON); первый не важен. Терминация — это резистор между двумя линиями данных для гашения помех.

Мониторинг потребления энергии по Modbus с MKR WiFi 1010 и RS485

Всё. Теперь можно закрыть щиток и перейти к программной части!

Программное обеспечение

Запустите компьютер и откройте IDE. Можно использовать Arduino IDE или Arduino Create Editor. Код решает три задачи:

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

Modbus-сообщения имеют простую структуру:

01 03 04 00 16 00 02 25 C7

В Arduino всё это обрабатывается в условии if:

// Created by Alberto Perro - Officine Innesto
// Чтение целого числа из holding registers modbus-устройства
float readCurrent(){
  float ampere = 0.;
  // Следующая команда формирует запрос и отправляет его по RS485
  if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) {
    // Обработка ошибки
    Serial.print("failed to read voltage! ");
    Serial.println(ModbusRTUClient.lastError());
  } else {
    uint16_t word1 = ModbusRTUClient.read(); // чтение MSW из буфера
    uint16_t word2 = ModbusRTUClient.read(); // чтение LSW из буфера
    int32_t milliamp = word1 << 16 | word2; // объединение слов для получения int
    ampere = milliamp/1000.0; // перевод в амперы
  }
  return ampere;
}

В части else — обработчик ответа.

Так как регистр длиной два слова, их нужно объединить побитовой математикой. Читаем слова из буфера в беззнаковое 16-битное целое (2 байта или слово), затем объединяем в знаковое 32-битное: сдвигаем первое слово влево и применяем OR ко второму. Так получаем измерение тока в мА, деля на 1000 — в амперах.

Этот же процесс адаптируется для всего, что мы хотим читать.

Остальной код посвящён MQTT и Wi-Fi сетям.

Интеграция с Home Assistant

Добавление счётчика в Home Assistant довольно просто. Предполагая, что MQTT-брокер настроен (вот руководство), достаточно добавить новые определения в configuration.yaml.

sensor:
  - platform: mqtt
    name: "Main Voltage"
    state_topic: "energy/main/voltage"
    unit_of_measurement: "V"

Здесь указываете имя измерения, MQTT-топик для чтения и единицу измерения. Сохраните файл, проверьте конфигурацию и перезагрузите Home Assistant — измерения появятся на главной странице.

Мониторинг потребления энергии по Modbus с MKR WiFi 1010 и RS485

Home Assistant сам создаст графики и автоматизирует процессы на основе показаний. Учебник завершён — теперь вы можете добавлять функции и настраивать под свои цели!

Код

Modbus RTU to MQTT bridge для Finder

Этот скетч обеспечивает полный мост между счётчиком энергии Finder и MQTT. Разработан для мониторинга затрат и потребления электроэнергии в Casa Jasmina.

Производственный процесс

  1. Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
  2. Создание потрясающей системы Ambilight для монитора на Arduino
  3. Создание надежного монитора энергии и логгера данных на Arduino — пошаговое руководство
  4. Создание анимации и игр на LCD 16×2 с Arduino UNO
  5. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  6. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  7. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  8. Веб-сервер на Arduino Uno WiFi: управление LED через браузер
  9. Arduino UNO + WiFi Shield: реальный график температуры в вебе через Serial
  10. Кинетическая и потенциальная энергия: формулы, формы и бытовые примеры