Documentation

gestionnaire de charge cFos - Formules

Le cFos Charging Manager permet l'évaluation dynamique des formules. Cette fonctionnalité est disponible pour un compteur de type "Expression" et pour les règles de tarification de type "Formule".

Vous pouvez donc mettre en place des compteurs qui calculent des valeurs provenant d'autres compteurs ou EVSE, les tenir à disposition et les afficher. Les règles de charge peuvent également utiliser des formules pour calculer dynamiquement le courant de charge et accéder aux compteurs et aux EVSE (y compris les compteurs de type "Expression").

Les opérations suivantes sont possibles avec les formules :

+ - * / %Addition, soustraction, multiplication, division, modulus
& |bit par bit AND et OR
^Calcul de la puissance, par exemple 10^2 = 100
min(x,y)Minimum de x et y, plus de 2 arguments possibles
max(x,y)Maximum de x et y, plus de 2 arguments possibles
abs(x)Valeur absolue de x, par exemple abs(-2) = 2
clamp(x,min,max)Valeur x = min (si x < min), x = max (si x > max), sinon conserver x
round(x)Arrondir x à un nombre entier. Exemple : Arrondir à 1 chiffre après la virgule : round(10*x)/10.
sqrt(x)Racine carrée de x
exists(x)true si la variable x existe, false sinon

En outre, les expressions logiques suivantes sont possibles :

== (égal), != (inégal), < (moins), <= (moins égal), > (plus grand), >= (plus grand-égal), ! (pas), || (logique Or), && (logique And), ? (opérateur conditionnel, par exemple x ? y : z, renvoie y si x est vrai, sinon z)

Cela permet, par exemple, de couper le courant en fonction des conditions : M1.current >= 6500 ? M1.current : 0 renvoie le courant de M1 s'il est supérieur à 6,5A et 0 sinon, ce qui met en pause la charge. Pour ces conditions, il est également possible d'interroger les entrées (voir ci-dessous)

Les noms suivants sont possibles :

MxCompteur avec ID d'unité x, par exemple M1
ExEVSE avec ID de dispositif x, par exemple E1

Il est également possible d'accéder à des compteurs virtuels, comme le surplus solaire, l'abonnement au réseau ou "Power avail. for EVSEs" (puissance disponible pour les wallbox), en configurant le compteur et en utilisant ensuite l'ID de l'appareil correspondant dans la formule.

Vous pouvez ensuite accéder aux valeurs individuelles des unités au moyen du point. Ceux-ci sont appelés comme suit :

current_l1Courant de la phase 1 en mA
current_l2Courant de la phase 2 en mA
current_l3Courant de la phase 3 en mA
currentCourant de la phase actuelle en mA (pour les règles de charge, le Charging Manager interroge toutes les phases l'une après l'autre ; pour les compteurs de type " Expression ", la phase respective à laquelle la formule se réfère s'applique. Si vous avez spécifié une formule pour le "courant L1", vous pouvez omettre les champs pour le courant L2 et L3. C'est alors la formule pour le courant L1 qui est utilisée)
power_wPuissance active actuelle en watts
offeredBoîte murale (Wallbox) : Courant actuel proposé en mA
import_whEnergie tirée en Wh
export_whÉnergie injectée en Wh
dtLe temps écoulé depuis la dernière mise à jour passée (en secondes), uniquement pour le compteur "Expression", voir aussi CM._dt.
inputNNuméro d'entrée N de l'appareil, 1 = actif, 0 = inactif, N est le numéro de l'entrée, commençant par 1.
socSOC, pourcentage de charge (compteur/mémoire) - si supporté par l'appareil
idId de l'appareil, ID Modbus
txn_durationDurée de la transaction en cours en secondes (EVSE)
charging_durTemps de charge effectif de la transaction en cours en secondes (Wallbox)
txn_energyÉnergie chargée de la transaction actuelle en Wh (EVSE)
min_currentCourant de charge minimal en mA (EVSE)
max_currentCourant de charge maximal en mA (EVSE)
stateStatut : 1 attente, 2 branché, 3 en charge, 4 en charge avec ventilation, 5 erreur, 6 hors ligne (EVSE)
cphasesNombre de phases en charge (0-3)
pphasesNombre de phases de chargement prédites (0-3)
lb_cur_l1Courant actuel calculé de la phase 1 en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0
lb_cur_l2Courant actuel calculé de la phase 2 en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0
lb_cur_l3Courant actuel calculé de la phase 3 en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0
lb_curCourant actuel calculé de la phase actuelle en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0. Le Charging Manager interroge toutes les phases les unes après les autres.
surplus_pcurCourant PV excédentaire par phase (prédite) en mA
surplus_wanted1, si une règle d'excédent PV a déjà été appliquée, sinon 0
budgetKWh ou minutes sur le budget actuel
budget_amountSur le budget actuel kWh ou minutes maximum
budget_usedKWh ou minutes utilisés sur le budget actuel
com_err1, s'il y a une erreur COM, sinon 0
com_err21, si une erreur COM est présente pendant plus de 12 sec, sinon 0
reactive_powerPuissance réactive prédéfinie en watts (si l'appareil le supporte), valeurs positives : Inductif, valeurs négatives : Capacitif
switch_phasesPour les wallboxes avec changement de phase : changement de phase manuel, 1 = monophasé, 3 = triphasé, -1 = changement de phase automatique
departureISO 15118 Heure de départ comme Unit timestamp (pour les Wallbox qui le supportent, sinon 0)
req_energyISO 15118 Énergie nécessaire en Wh (pour les Wallboxes qui le supportent, sinon 0)
plugin_startUnix timestamp, heure à laquelle le câble a été branché
plugin_energyÉnergie chargée jusqu'à présent en Wh à partir du moment où le câble est branché

Exemple
M1.current_l1Courant du compteur M1, phase 1
E2.import_whWh consommé de l'EVSE E2
E3.power_wPuissance de charge actuelle de E3 en watts

Si l'on utilise les formules pour un compteur de type "Expression", on peut aussi omettre l'ID de l'appareil. Les noms de champs se réfèrent alors à ce compteur, par exemple 'power_w' est alors la puissance de ce compteur en watts. Avec 'dt', on peut réaliser quelques fonctions étendues, par ex. dans un compteur de type "Expression" :

  • Comme formule pour 'import_wh': import_wh + M1.power_w * dt / 3600 actualise l'énergie prélevée en fonction de la puissance pendant le temps de mise à jour écoulé
  • Comme formule pour 'power_w': (power_w * (20 - dt) + M1.power_w * dt) / 20 lisse la puissance sur les 20 dernières secondes.

Variables globales

date

date.yearAnnée en cours
date.monthMois de 0 à 11
date.dayJour de 1..31
date.weekdayJour de la semaine SO=0, LUN=1, MARD=2, ... Sa=6
date.yeardayJour de l'année de 0..366
date.hourHeure de 0 à 23
date.minuteMinute de 0 à 60
date.secondSecondes de 0 à 60
date.daysecondSeconde de ce jour de 0..86399
date.dayminuteMinute de ce jour de 0..1439
date.dst0 = heure d'hiver, 1 = heure d'été
date.timestampUnix timespamp, secs since 1.1.1970

PB (nur cFos Power Brain)

PB.input1S0 Input 1, 1 = actif, 0 = inactif
PB.input2S0 Input 2, 1 = actif, 0 = inactif

CM Variables du gestionnaire de charge

Ces variables peuvent être définies par l'admin sous "Configuration". Par exemple, si l'admin définit la variable 'var_x' à 1.5, CM.var_x renvoie la valeur 1.5.

Variables prédéfinies :
_num_charging : Nombre de wallboxes actuellement en charge
num_charging1 : nombre de wallboxes actuellement en charge, 1 si aucune ne charge
_max_total_current : courant maximal du raccordement domestique en mA par phase
_max_total_evse_current : courant maximal pour les Wallbox en mA par phase
_price : prix actuel de l'électricité
_price_level : niveau actuel du prix de l'électricité, -2=très cher, -3=chaud, -4=normal, -5=bon marché, -6=très bon marché
surplus solaire : excédent actuel en watts
org_surplus : excédent solaire tel que le gestionnaire de charge l'aurait calculé indépendamment de ses propres formules
_storage_home_max_capacity : capacité totale de stockage, Home, si indiqué dans la configuration du compteur, en Wh
_storage_home_capacity : capacité actuelle du stockage, Home, si indiqué dans la configuration du compteur, en Wh
_storage_all_max_capacity : capacité totale de stockage, All, si spécifié dans la configuration du compteur, en Wh
_storage_all_capacity : capacité actuelle de la mémoire, All, si indiqué dans la configuration du compteur, en Wh
_max_total_current_prc : pourcentage du courant de charge total maximal disponible. Cette variable peut également être écrite (par des définitions de compteurs et des variables du Charging Manager)
dt : le temps écoulé depuis la dernière mise à jour passée (en secondes).

Utilisation des objets globaux:
charge 8A starting at 8:00am: date.dayminute >= 480 ? 8000 : 0
charge 16A on Saturday and Sunday: date.weekday == 5 || date.weekday == 6 ? 16000 : 0
charge 6A if input 2 active: PB.input2 ? 6000 : 0 charge 6A if CM variable non-zero: cm.var1 ? 6000 : 0
Remarque:
Sous Compteurs personnalisés, vous trouverez également des instructions sur la manière d'utiliser des formules avec des variables et des sorties globales Charging Manager.

GM Compteurs globaux

GM.grid_demandHousse filet
GM.consumedConsommation
GM.producedGénération
GM.consumed_evseConsommation des voitures électriques
GM.available_evsePuissance disponible
GM.surplusExcédent PV
GM.storage_homeMémoire Accueil
GM.storage_allMémoire Tout
GM.errorLa performance par l'erreur

Utilisation des compteurs globaux
Jeder Zähler hat die Felder power_w, current, current_l1, current_l2, current_l3, import_wh und export_wh,
z.B. GM.prod_pwr.current_l1 oder GM.cons_pwr.power_w
. Bei 'current' wird der Strom der gerade betrachteten Phase ausgewertet. Ströme werden in mA geliefert, Leistung in W, Energie in Wh.

Exemple d'application

Vous souhaitez limiter davantage le courant de charge par rapport à un compteur de consommation d'un appartement. Pour ce faire, vous pouvez établir une règle de charge avec la formule 16000 - M1.current.
M1 est le compteur qui mesure la consommation de l'appartement. La gestion de la charge du cFos Charging Manager essaie d'abord de fournir à l'EVSE le courant maximum par rapport à la puissance de connexion de la maison, mais le limite ensuite à 16A moins la consommation de l'appartement.

Fonctions

Au moyen de min_price(s), max_price(s), vous pouvez déterminer le prix le plus avantageux de votre fournisseur d'énergie en euros, en recherchant les prix depuis l'heure actuelle jusqu'à max s secondes du jour ou du jour suivant, par ex. min_price(25200) fournit le prix le plus avantageux jusqu'à 7h00 du matin. Ainsi, vous pouvez par exemple créer une règle de chargement avec la condition CM._price <= min_price(25200), afin de charger au moment le plus avantageux, mais avec la condition que vous voulez par exemple partir à partir de 8:00 (en supposant 1 heure de chargement). De la même manière, il existe encore les deux fonctions min_price_secs(s) et max_price_secs(s) qui renvoient l'heure de début du prix le plus avantageux en secondes du jour entamé. Vous pouvez ensuite les comparer avec date.daysecond, par exemple.