Solare · Autoconsumo · Logica KNX · Caricabatterie EV · Immissione zero · 10 min di lettura

Logica KNX per autoconsumo fotovoltaico: Calcolo del surplus e controllo prioritario multi-carico

Massimizzare il rapporto di autoconsumo richiede una logica KNX che monitori continuamente la generazione solare e l'import/export dalla rete, quindi attivi i carichi flessibili in ordine di priorità quando il surplus è disponibile. Questa guida copre l'implementazione completa – dalla disposizione degli ingressi GA e il calcolo del surplus alle tabelle di priorità dei carichi, isteresi, controllo dinamico della corrente EV e immissione zero in rete per evitare penalità di immissione.

Obiettivo di autoconsumo e requisiti di ingresso

Il rapporto di autoconsumo (SCR) è la frazione di produzione fotovoltaica consumata direttamente in loco anziché esportata in rete. Un SCR più alto significa bollette elettriche più basse quando la tariffa di immissione è inferiore alla tariffa di prelievo – come accade nella maggior parte dei paesi europei dal 2022. La logica di autoconsumo KNX migliora l'SCR attivando automaticamente i carichi controllabili quando è disponibile energia solare in eccesso.

Sono necessari due ingressi per una logica di autoconsumo KNX efficace. La potenza di generazione PV dall'inverter tramite Modbus a KNX è opzionale – la lettura della potenza di rete da un contatore intelligente è sufficiente da sola, poiché mostra direttamente il bilancio import/export. Usare la potenza di rete come ingresso principale evita errori di calibrazione dovuti all'autoconsumo dell'inverter.

Layout GA di ingresso per la logica di autoconsumo

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)

Tabella delle priorità dei carichi e soglie di attivazione

I carichi controllabili vengono attivati in ordine di priorità all'aumentare del surplus. La tabella delle priorità seguente rappresenta una tipica installazione residenziale con scaldabagno, caricabatterie EV e accumulo a batteria. Regola le soglie in base alle dimensioni specifiche del carico e alla sequenza di attivazione desiderata.

PrioritàCaricoSoglia di attivazioneAzione KNX
1 (più basso)Scaldabagno a immersione 3 kW1500W di surplus per 120sGA '6/1/1' = ON (relay)
2Incremento corrente di ricarica EV250W aggiuntivi per ogni 1A sopra 6A baseGA '6/1/2' = current value (A)
3Carica forzata batteriaEccedenza dopo saturazione P1+P2GA '6/1/3' = ON (Modbus write)
4 (massimo)Lavastoviglie o lavatriceEccedenza di 2000 W per 300 sGA '6/1/4' = ON (smart socket)

La priorità 1 si attiva per prima con la soglia di eccedenza più bassa: un elemento riscaldante a immersione da 3 kW per scaldabagno offre un eccellente assorbimento del carico. La ricarica EV a 6 A minimo (1,38 kW monofase) richiede almeno 1,5 kW di eccedenza per avviarsi, poi scala la corrente all'aumentare dell'eccedenza. La carica forzata della batteria funge da contenitore per l'eccedenza rimanente dopo la saturazione degli altri carichi.

Implementazione logica KNX ETS6 con il controllore logico MDT

Il controllore logico MDT SCN-LCRM.01 esegue la logica EibScript direttamente nel dispositivo KNX senza PC o server separato. Per installazioni più semplici, l'Enertex EibPC è un'alternativa che esegue EibScript in un appliance Linux dedicato. Entrambi supportano l'aritmetica sui valori GA KNX, timer e invio condizionale di telegrammi di gruppo.

Controllore logico MDT EibScript – logica di autoconsumo

// 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

Calcolo della corrente di ricarica EV trifase

// 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)

Isteresi per evitare il rimbalzo del relè

Senza isteresi, un relè KNX che controlla uno scaldabagno o un caricabatterie EV può accendersi e spegnersi ripetutamente in pochi minuti mentre le nuvole fanno fluttuare la generazione solare attorno alla soglia di attivazione. Ciò riduce la durata del relè e provoca clic udibili nel quadro di distribuzione. L'isteresi a due soglie risolve questo problema.

Implementazione dell'isteresi – soglie di attivazione e disattivazione

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

Controllo immissione zero in rete

In alcuni paesi – inclusa la Spagna (dal 2019 modifica del Regio Decreto 244/2019) e alcune aree DSO italiane – l'esportazione residenziale in rete è penalizzata, limitata a zero o richiede un permesso separato. La logica KNX di immissione zero riduce immediatamente la potenza dei carichi flessibili quando viene rilevata l'esportazione, mantenendo un'immissione quasi nulla senza sprecare energia generata.

Immissione zero in rete – logica 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

Procedura di test di messa in servizio

La messa in servizio della logica di autoconsumo richiede la simulazione di condizioni di surplus fotovoltaico senza attendere il bel tempo. Il registro di limitazione della potenza attiva dell'inverter consente di ridurre a zero la potenza in uscita tramite software, creando un ambiente di test controllato.

Test di messa in servizio della logica di autoconsumo

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

Obiettivo del rapporto di autoconsumo

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 come alternativa a MDT

L'Enertex EibPC esegue lo stesso linguaggio EibScript del MDT Logic Controller ma su un dispositivo Linux dedicato con connettività di rete per la registrazione InfluxDB e un dashboard web. Preferito per installazioni che richiedono registrazione e visualizzazione insieme al controllo dell'autoconsumo. Supporta MQTT per i dati dell'inverter senza un gateway Modbus separato.

Hai bisogno di un pannello solare con logica di autoconsumo KNX su misura?

Progettiamo e realizziamo quadri BT con programmi di autoconsumo MDT Logic Controller, gateway Modbus TCP per contatori di rete e inverter, controllo della corrente di ricarica EV e documentazione completa di messa in servizio consegnata collaudata presso il vostro sito.

Richiedi un preventivo →
Loading...
Back to top