Logique KNX d'autoconsommation PV : Calcul du surplus et contrôle prioritaire multi-charges
Maximiser le taux d'autoconsommation nécessite une logique KNX qui surveille en continu la production solaire et l'import/export réseau, puis active les charges flexibles par ordre de priorité lorsque le surplus est disponible. Ce guide couvre l'implémentation complète – de la disposition des GA d'entrée et du calcul du surplus aux tableaux de priorité des charges, à l'hystérésis, au contrôle dynamique du courant VE et à l'injection zéro réseau pour éviter les pénalités de réinjection.
Objectif d'autoconsommation et exigences d'entrée
Le taux d'autoconsommation (SCR) est la fraction de la production PV consommée directement sur site plutôt qu'exportée vers le réseau. Un SCR plus élevé signifie des factures d'électricité plus faibles lorsque le tarif de rachat est inférieur au tarif d'achat au détail – ce qui est le cas dans la plupart des pays européens depuis 2022. La logique d'autoconsommation KNX améliore le SCR en activant automatiquement les charges contrôlables lorsque l'énergie solaire excédentaire est disponible.
Deux entrées sont nécessaires pour une logique d'autoconsommation KNX efficace. La puissance de production PV de l'onduleur via Modbus vers KNX est facultative – la lecture de la puissance réseau d'un compteur intelligent est suffisante en elle-même, car elle montre directement le bilan import/export. L'utilisation de la puissance réseau comme entrée principale évite les erreurs d'étalonnage dues à l'autoconsommation de l'onduleur.
Disposition des GA d'entrée pour la logique d'autoconsommation
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)Tableau de priorité des charges et seuils d'activation
Les charges contrôlables sont activées par ordre de priorité à mesure que le surplus augmente. Le tableau de priorité ci-dessous représente une installation résidentielle typique avec un chauffe-eau, un chargeur VE et un stockage par batterie. Ajustez les seuils en fonction de vos tailles de charge spécifiques et de la séquence d'activation souhaitée.
| Priorité | Charge | Seuil d'activation | Action KNX |
|---|---|---|---|
| 1 (le plus bas) | Chauffe-eau à immersion 3 kW | 1500W de surplus pendant 120s | GA '6/1/1' = ON (relay) |
| 2 | Augmentation du courant de charge VE | 250W supplémentaires par 1A au-dessus de la base 6A | GA '6/1/2' = current value (A) |
| 3 | Charge forcée de la batterie | Excédent après saturation de P1+P2 | GA '6/1/3' = ON (Modbus write) |
| 4 (le plus élevé) | Lave-vaisselle ou lave-linge | Excédent de 2000 W pendant 300 s | GA '6/1/4' = ON (smart socket) |
La priorité 1 s'active en premier avec le seuil de surplus le plus bas – un élément chauffant immergé de 3 kW pour chauffe-eau offre une excellente absorption de charge. La recharge EV à 6 A minimum (1,38 kW monophasé) nécessite au moins 1,5 kW de surplus pour démarrer, puis le courant augmente avec le surplus. La charge forcée de la batterie agit comme un réceptacle pour le surplus restant après saturation des autres charges.
Implémentation logique KNX ETS6 avec le contrôleur logique MDT
Le contrôleur logique MDT SCN-LCRM.01 exécute la logique EibScript directement dans le périphérique KNX sans PC ni serveur séparé. Pour les installations plus simples, l'Enertex EibPC est une alternative qui exécute EibScript dans un appareil Linux dédié. Les deux prennent en charge l'arithmétique sur les valeurs GA KNX, les temporisateurs et l'envoi conditionnel de télégrammes de groupe.
Contrôleur logique MDT EibScript – logique d'autoconsommation
// 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 chargerCalcul du courant de charge EV triphasé
// 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)Hystérésis pour éviter le pompage du relais
Sans hystérésis, un relais KNX commandant un chauffe-eau ou un chargeur EV peut s'allumer et s'éteindre à plusieurs reprises en quelques minutes lorsque les nuages font fluctuer la production solaire autour du seuil d'activation. Cela réduit la durée de vie du relais et provoque des clics audibles dans le tableau de distribution. L'hystérésis à deux seuils résout ce problème.
Implémentation de l'hystérésis – seuils d'activation et de désactivation
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 deactivationContrôle d'injection zéro réseau
Dans certains pays – dont l'Espagne (depuis la modification du décret royal 244/2019 en 2019) et certaines zones de gestionnaires de réseau de distribution italiens – l'exportation résidentielle vers le réseau est pénalisée, plafonnée à zéro ou nécessite un permis séparé. La logique KNX d'injection zéro réduit immédiatement la puissance des charges flexibles lorsque l'exportation est détectée, maintenant une injection quasi nulle sans gaspiller l'énergie produite.
Injection zéro réseau – logique 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 regulationsProcédure de test de mise en service
La mise en service de la logique d'autoconsommation nécessite de simuler des conditions de surplus PV sans attendre le beau temps. Le registre de limitation de puissance active de l'onduleur permet de réduire la puissance de sortie à zéro par logiciel, créant ainsi un environnement de test contrôlé.
Test de mise en service de la logique d'autoconsommation
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 functionTaux d'autoconsommation cible
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 comme alternative à MDT
L'Enertex EibPC exécute le même langage EibScript que le MDT Logic Controller mais sur un appareil Linux dédié avec connectivité réseau pour la journalisation InfluxDB et un tableau de bord web. Préféré pour les installations nécessitant journalisation et visualisation en plus du contrôle de l'autoconsommation. Prend en charge MQTT pour les données de l'onduleur sans passerelle Modbus séparée.
Besoin d'un panneau solaire avec logique d'autoconsommation KNX sur mesure ?
Nous concevons et fabriquons des tableaux BT avec des programmes d'autoconsommation MDT Logic Controller, des passerelles Modbus TCP pour les compteurs réseau et onduleurs, le contrôle du courant de charge des VE, et une documentation complète de mise en service livrée testée sur votre site.
Demander un devis →