Солнечная энергия · Собственное потребление · Логика KNX · Зарядка EV · Нулевая инжекция · 10 мин чтения

Логика KNX для собственного потребления PV: расчет излишков и приоритетное управление нагрузками

Максимизация доли собственного потребления требует логики KNX, которая непрерывно отслеживает генерацию солнечной энергии и импорт/экспорт в сеть, затем активирует гибкие нагрузки в порядке приоритета при наличии излишков. Это руководство охватывает полную реализацию — от схемы входных GA и расчета излишков до таблиц приоритетов нагрузок, гистерезиса, динамического управления током EV и контроля нулевой инжекции для избежания штрафов за подачу в сеть.

Цель собственного потребления и требования к входным данным

Коэффициент собственного потребления (SCR) — это доля генерации PV, потребляемая непосредственно на объекте, а не экспортируемая в сеть. Более высокий SCR означает более низкие счета за электроэнергию, когда тариф на подачу в сеть ниже розничного тарифа на импорт — что характерно для большинства европейских стран с 2022 года. Логика KNX для собственного потребления повышает SCR, автоматически активируя управляемые нагрузки при наличии избыточной солнечной энергии.

Для эффективной логики KNX собственного потребления требуются два входных сигнала. Мощность генерации PV от инвертора через Modbus к KNX необязательна — показания сетевого счетчика достаточны сами по себе, так как они напрямую показывают баланс импорта/экспорта. Использование сетевой мощности в качестве основного входного сигнала позволяет избежать ошибок калибровки из-за собственного потребления инвертора.

Схема входных GA для логики собственного потребления

GA '6/0/1': PV Generation Power (W)
  Source: inverter Modbus → KNX Modbus gateway
  DPT: 9.001 (2-byte float, kW) or 13.010 (4-byte, W)
  Update: every 10 seconds
  Note: optional — grid power GA is sufficient for control

GA '6/0/2': Grid Power (W), signed
  Source: Eastron SDM630 Modbus, or SOCOMEC Countis E14,
          or inverter internal meter via Modbus
  DPT: 9.001 (kW, signed: positive = import, negative = export)
  Update: every 10 seconds
  This is the PRIMARY control input

Surplus calculation:
  When GA '6/0/2' < 0: abs(value) = export power = surplus
  When GA '6/0/2' > 0: building is importing = no surplus

Smart meter options:
  Eastron SDM630: Modbus TCP via RS485 converter
    Register 53 (total import/export W, float32, FC4)
  SOCOMEC Countis E14: Modbus TCP port 502
    Register 0x0034 (active power signed, int32)
  Huawei SUN2000 internal meter: register 32261 (grid power)

Таблица приоритетов нагрузок и пороги активации

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

ПриоритетНагрузкаПорог активацииДействие KNX
1 (низший)Водонагреватель с ТЭНом 3 кВтИзлишек 1500 Вт в течение 120 сGA '6/1/1' = ON (relay)
2Повышение тока зарядки EV250 Вт дополнительно на каждый 1 А сверх базовых 6 АGA '6/1/2' = current value (A)
3Принудительный заряд батареиЛюбой избыток после насыщения P1+P2GA '6/1/3' = ON (Modbus write)
4 (наивысший)Посудомоечная или стиральная машинаИзбыток 2000 Вт в течение 300 сGA '6/1/4' = ON (smart socket)

Приоритет 1 активируется первым при самом низком пороге избытка — ТЭН водонагревателя на 3 кВт отлично поглощает нагрузку. Зарядка EV на минимальных 6 А (1,38 кВт однофазно) требует избытка не менее 1,5 кВт для старта, затем ток увеличивается по мере роста избытка. Принудительный заряд батареи служит для поглощения оставшегося избытка после насыщения других нагрузок.

Реализация логики KNX ETS6 с MDT Logic Controller

MDT Logic Controller SCN-LCRM.01 выполняет логику EibScript непосредственно в устройстве KNX без отдельного ПК или сервера. Для более простых установок альтернативой является Enertex EibPC, который запускает EibScript в выделенном Linux-устройстве. Оба поддерживают арифметические операции над значениями KNX GA, таймеры и условную отправку групповых телеграмм.

MDT Logic Controller EibScript — логика самопотребления

// EibScript runs on MDT SCN-LCRM.01
// GA '6/0/2' = grid power (kW, signed float, DPT 9.001)
// Negative = export (surplus available)

ON CHANGE OF GA("6/0/2"):
  grid_kw = READ GA("6/0/2")
  surplus_w = grid_kw * -1000  // convert to positive W if exporting

  // Priority 1: water heater (3 kW, threshold 1.5 kW surplus)
  IF surplus_w > 1500 AND TIMER_ELAPSED("wh_timer", 120) THEN
    SEND GA("6/1/1") = TRUE     // water heater relay ON
    TIMER_RESET("wh_timer")
  ELSE IF surplus_w < 1000 AND TIMER_ELAPSED("wh_off", 60) THEN
    SEND GA("6/1/1") = FALSE    // deactivate with hysteresis
    TIMER_RESET("wh_off")
  END IF

  // Priority 2: EV charger current
  IF surplus_w > 1500 THEN
    ev_amps = MAX(6, MIN(32, surplus_w / 230))  // single-phase
    SEND GA("6/1/2") = ev_amps  // DPT 5.010 unsigned byte (amps)
  ELSE IF surplus_w < 1000 THEN
    SEND GA("6/1/2") = 0        // stop EV charger

Расчет тока трехфазного зарядного устройства EV

// Three-phase EV charger (e.g. Alfen Eve, ABB Terra AC)
// Three-phase power: P = V * I * sqrt(3) ≈ I * 690W per amp

ev_amps_3ph = MAX(6, MIN(32, surplus_w / 690))
SEND GA("6/1/2") = ev_amps_3ph

// GA '6/1/2' → KNX Modbus gateway write:
//   Alfen Eve register 316: max charge current (A, uint16)
//   EVBox Elvi register 111: current limit (A, uint16)
//   Weinzierl 5010 write task: GA '6/1/2' triggers Modbus FC6
// Update every 30 seconds — smooth out cloud-induced fluctuations

// Single-phase minimum: 6A = 1.38 kW
// Three-phase minimum: 6A = 4.14 kW (higher surplus required)

Гистерезис для предотвращения дребезга реле

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

Реализация гистерезиса — пороги включения и отключения

Two-threshold hysteresis example (water heater):
  Activate threshold:   surplus > 1500W for 120 seconds
  Deactivate threshold: surplus < 1000W for 60 seconds

This means:
  - Load only activates if surplus stays above 1500W for 2 minutes
  - Load only deactivates if surplus drops below 1000W for 60s
  - 500W hysteresis band prevents rapid cycling

EibScript timer-based implementation:
  // On each GA '6/0/2' update:
  IF surplus_w > 1500 THEN
    TIMER_START("wh_on_timer", 120)  // 120s countdown
  ELSE
    TIMER_RESET("wh_on_timer")       // reset if drops below threshold
  END IF

  IF TIMER_FIRED("wh_on_timer") THEN
    SEND GA("6/1/1") = TRUE
  END IF

  // Mirror logic for deactivation with 1000W threshold and 60s timer

Real-world effect: a passing cloud lasting 90 seconds
  does not cycle the water heater relay
  Solar must be consistently low for 60s before deactivation

Управление нулевым экспортом в сеть

В некоторых странах — включая Испанию (с 2019 года изменение Королевского указа 244/2019) и некоторые зоны итальянских DSO — экспорт в сеть для жилых домов штрафуется, ограничен нулем или требует отдельного разрешения. Логика KNX нулевого экспорта немедленно снижает мощность гибких нагрузок при обнаружении экспорта, поддерживая почти нулевую инжекцию без потери выработанной энергии.

Нулевой экспорт в сеть — логика KNX

Grid zero mode: GA '6/2/0' = TRUE (enabled by time schedule
  or manually from touchpanel)

ON CHANGE OF GA("6/0/2") WHEN READ GA("6/2/0") = TRUE:
  grid_w = READ GA("6/0/2") * 1000  // convert kW to W

  IF grid_w < -100 THEN             // exporting > 100W
    // Step 1: reduce EV charger current by 1A
    ev_curr = READ GA("6/1/2")
    IF ev_curr > 6 THEN
      SEND GA("6/1/2") = ev_curr - 1
    ELSE IF ev_curr <= 6 THEN
      // Step 2: switch off water heater
      SEND GA("6/1/1") = FALSE
    END IF

  ELSE IF grid_w > 200 THEN         // importing — can increase
    // Re-enable water heater if surplus appeared
    SEND GA("6/1/1") = TRUE

    // Increase EV charger current
    ev_curr = READ GA("6/1/2")
    IF ev_curr < 32 THEN
      SEND GA("6/1/2") = ev_curr + 1
    END IF
  END IF

Response time: under 15 seconds (one Modbus poll cycle)
Suitable for compliance with zero-export regulations

Процедура пусконаладки

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

Тест ввода в эксплуатацию логики самопотребления

Preparation:
  Disconnect EV charger and water heater from load circuit
  (or use test resistive loads that can tolerate cycling)

Simulate surplus — inverter active power limit:
  Fronius GEN24: Modbus write reg 40233 = 0 (limit to 0W)
    Activation: write reg 40236 = 1 (enable limit function)
  SolarEdge: app → Advanced → Active Power Limit (installer only)
  Huawei SUN2000: Modbus write reg 40119 = power limit %

With inverter output limited to 0W: building imports from grid
  Grid power GA '6/0/2' shows positive value (import)
  No surplus → loads should be OFF — verify GA '6/1/1' = OFF

Re-enable inverter output:
  Fronius: write reg 40233 = 100 (100% = no limit)
  Grid power GA '6/0/2' goes negative (export) = surplus

Verify load activation sequence:
  At 1500W surplus for 120s: GA '6/1/1' should go TRUE
  At 3000W surplus: GA '6/1/2' should show amps value
  ETS6 Group Monitor confirms GA changes in real time

Re-enable inverter fully when test complete:
  Write active power limit back to 100% or disable limit function

Целевой коэффициент самопотребления

A well-configured KNX self-consumption system with water heater, EV charger, and battery storage typically achieves 70-85% SCR for a family home in Central Europe. Without flexible load control, SCR is typically 30-40% — the same hardware but without the KNX logic layer. Log GA '6/0/1' and '6/0/2' to InfluxDB for monthly SCR calculation.

EibPC как альтернатива MDT

Контроллер Enertex EibPC использует тот же язык EibScript, что и MDT Logic Controller, но работает на выделенном Linux-устройстве с сетевым подключением для логирования в InfluxDB и веб-панели. Предпочтителен для объектов, где требуется логирование и визуализация вместе с управлением самопотреблением. Поддерживает MQTT для получения данных с инвертора без отдельного Modbus-шлюза.

Нужен солнечный щит с логикой самопотребления на KNX под ваш проект?

Мы проектируем и собираем низковольтные щиты с программами самопотребления на MDT Logic Controller, Modbus TCP шлюзами для счётчиков и инверторов, управлением током зарядки электромобиля и полной документацией — доставляем и тестируем на вашем объекте.

Запросить расчёт →
Загрузка ...
Наверх