Dokumentation

cFos Charging Manager - Formler

cFos Charging Manager gör det möjligt att dynamiskt utvärdera formler. Denna funktion är tillgänglig för en mätare av typen "Expression" och för debiteringsregler av typen "Formula".

Du kan därför installera mätare som beräknar värden från andra mätare eller EVSE:er och hålla dem redo och visa dem. Laddningsreglerna kan också använda formler för att dynamiskt beräkna laddningsströmmen och även få tillgång till mätare och EVSE:er (inklusive mätare av typen "Expression").

Följande operationer är möjliga med formlerna:

+ - * / %Addition, subtraktion, multiplikation, division, modulus
& |bitvis AND och OR
^Effektberäkning, t.ex. 10^2 = 100
min(x,y)Minsta antal x och y, fler än 2 argument möjliga
max(x,y)Maximalt x och y, fler än 2 argument möjliga
abs(x)Absolutvärde av x, t.ex. abs(-2) = 2
clamp(x,min,max)Värde x = min (om x < min), x = max (om x > max), annars behåller x
round(x)Avrunda x till heltal. Exempel: Avrundning till en decimal: runda(10*x)/10.
sqrt(x)Kvadratrot av x
exists(x)sant om variabeln x finns, annars falskt

Dessutom är följande logiska uttryck möjliga:

== (lika), != (ojämnt), < (mindre), <= (mindre-jämnt), > (större), >= (större-jämnt), ! (inte), || (logiskt eller), && (logiskt och), ? (villkorlig operatör, t.ex. x ? y : z, ger y om x är sant, annars z)

Detta gör det möjligt att t.ex. stänga av strömmen beroende på förhållandena: M1.current >= 6500 ? M1.current : 0 returnerar strömmen i M1 om den är större än 6,5 A och 0 annars, vilket gör att laddningen pausas. För sådana förhållanden är det också möjligt att fråga efter ingångar (se nedan)

Följande namn är möjliga:

MxMätare med enhets-ID x, t.ex. M1
ExEVSE med enhets-ID x, t.ex. E1

Det är också möjligt att få tillgång till virtuella mätare, t.ex. solöverskott, nätuttag eller "Power avail. for EVSEs" (tillgänglig effekt för väggboxar), genom att ställa in mätaren och sedan använda motsvarande enhets-ID i formeln.

Du kan sedan få tillgång till enskilda värden för enheterna med hjälp av punkten. Dessa kallas på följande sätt:

current_l1Strömmen i fas 1 i mA
current_l2Strömmen i fas 2 i mA
current_l3Strömmen i fas 3 i mA
currentStrömmen för den aktuella fasen i mA (för laddningsregler frågar laddningshanteraren alla faser efter varandra; för mätare av typen "Expression" gäller respektive fas som formeln avser. Om du har angett en formel för "Current L1" kan du utelämna fälten för Current L2 och L3. Då används formeln för ström L1)
power_wAktuell aktiv effekt i watt
offeredWallbox: Ström som erbjuds i mA
import_whUttagen energi i Wh
export_whInjicerad energi i Wh
dtDen tid som har gått sedan den senaste uppdateringen (i sekunder), endast för räknare "Expression", se även CM._dt.
inputNEnhetens ingångsnummer N, 1 = aktiv, 0 = inaktiv, N är ingångens nummer och börjar med 1.
socSOC, laddningsnivå i procent (räknare/minne) - om detta stöds av enheten
idEnhets-ID, Modbus-ID
txn_durationDen aktuella transaktionens varaktighet i sekunder (EVSE)
charging_durFaktisk laddningstid för den aktuella transaktionen i sekunder (Wallbox)
txn_energyLaddad energi för den aktuella transaktionen i Wh (EVSE)
min_currentLägsta laddningsström i mA (EVSE)
max_currentMaximal laddningsström i mA (EVSE)
stateStatus: 1 väntar, 2 inkopplad, 3 laddar, 4 laddar med ventilation, 5 fel, 6 offline (EVSE)
cphasesAntal laddningsfaser (0-3)
pphasesAntal förutspådda laddningsfaser (0-3)
lb_cur_l1Aktuell beräknad ström för fas 1 i mA (wallbox). Endast under beräkningen av laddningsreglerna för wallboxen, annars 0
lb_cur_l2Aktuell beräknad ström för fas 2 i mA (wallbox). Endast under beräkningen av laddningsreglerna för wallboxen, annars 0
lb_cur_l3Aktuell beräknad ström för fas 3 i mA (wallbox). Endast under beräkningen av laddningsreglerna för wallboxen, annars 0
lb_curStröm beräknad för den aktuella fasen i mA (wallbox). Endast under beräkningen av laddningsreglerna för wallbox, annars 0. Charging Manager frågar alla faser en efter en.
surplus_pcurPV överström per (förutspådd) fas i mA
surplus_wanted1, om en regel om PV-överskott redan har tillämpats, annars 0
budgetKWh eller minuter på aktuell budget
budget_amountMaximal kWh eller minuter på den aktuella budgeten
budget_usedKWh eller minuter som använts i den aktuella budgeten
com_err1, om det finns ett COM-fel, annars 0
com_err21, om ett COM-fel har funnits längre än 12 sekunder, annars 0
reactive_powerSpecifikation för reaktiv effekt i watt (om stöds av enheten), positiva värden: Induktiva, negativa värden: kapacitiva
switch_phasesFör wallboxar med fasomkoppling: Manuell fasomkoppling, 1 = 1-fas, 3 = 3-fas, -1 = automatisk fasomkoppling
departureISO 15118 avgångstid som enhetstidstämpel (för wallboxar som stöder detta, annars 0)
req_energyISO 15118 Krävd energi i Wh (för wallboxar som stöder detta, annars 0)
plugin_startUnix-tidsstämpel, tidpunkt för kabelinsättning
plugin_energyTidigare laddad energi i Wh från den tidpunkt då kabeln kopplades in

Exempel
M1.current_l1Strömmen i mätare M1, fas 1
E2.import_whFörbrukad Wh från EVSE E2
E3.power_wAktuell laddningseffekt för E3 i watt

Om du använder formlerna för en mätare av typen "Expression" kan du också utelämna enhetens ID. Då refererar fältnamnen till denna mätare, t.ex. 'power_w' är då effekten för denna mätare i watt. Med hjälp av 'dt' kan du realisera några utökade funktioner, t.ex. i en mätare av typen "Expression":

  • Som en formel för 'import_wh': import_wh + M1.power_w * dt / 3600 uppdaterar den hämtade energin baserat på effekten under den senaste uppdateringstiden
  • Som en formel för "power_w": (power_w * (20 - dt) + M1.power_w * dt) / 20 jämnar ut effekten under de senaste 20 sekunderna.

Globala variabler

date

date.yearInnevarande år
date.monthMånad från 0..11
date.dayDag från 1..31
date.weekdayVeckodag SO=0, mån=1, tis=2, ... Lör=6
date.yeardayDag på året från 0..366
date.hourTimme från 0..23
date.minuteMinuter från 0...60
date.secondAndra från 0...60
date.daysecondDagens andra dag från 0..86399
date.dayminuteMinuter för denna dag från 0..1439
date.dst0 = vintertid, 1 = sommartid
date.timestampUnix timespamp, secs since 1.1.1970

PB (nur cFos Power Brain)

PB.input1S0 Input 1, 1 = aktiv, 0 = inaktiv
PB.input2S0 Input 2, 1 = aktiv, 0 = inaktiv

CM Variabler för laddningsansvarig

Dessa variabler kan ställas in av administratören under "Konfiguration". Om administratören till exempel ställer in variabeln 'var_x' till 1,5, returnerar CM.var_x värdet 1,5.

Fördefinierade variabler:
_num_charging: Antal wallboxar som för närvarande laddar
_num_charging1: Antal laddningsboxar som för närvarande laddas, 1 om ingen laddas
_max_total_current: Maximal ström för husanslutningen i mA per fas
_max_total_evse_current: Maximal ström för wallboxar i mA per fas
_pris: Aktuellt elpris
_price_level: Aktuell elprisnivå, -2=mycket dyrt, -3=dyrt, -4=normalt, -5=billigt, -6=mycket billigt
_surplus: Aktuellt solöverskott i watt
_org_surplus: Solöverskott som skulle ha beräknats av Charging Manager oberoende av dess egna formler
_storage_home_max_capacity: Total kapacitet för förrådet, hemmet, om angivet i mätarkonfigurationen, i Wh
_storage_home_capacity: Aktuell kapacitet för lagring, Hem, om den anges i mätarkonfigurationen, i Wh
_storage_all_max_capacity: Total kapacitet för lagret, Alla, om angivet i räknarkonfigurationen, i Wh
_storage_all_capacity: Aktuell kapacitet för lagret, Alla, om detta anges i räknarkonfigurationen, i Wh
_max_total_current_prc: Procentandel av den tillgängliga maximala totala laddningsströmmen. Denna variabel kan också skrivas (av räknardefinitioner och laddningshanterarvariabler)
_dt: Den tid som har förflutit sedan den senaste uppdateringen (i sekunder).

Användning av de globala objekten:
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
Anmärkning:
Under Anpassade räknare hittar du också instruktioner om hur du använder formler med globala Charging Manager-variabler och utdata.

GM Globala räknare

GM.grid_demandNätets referens
GM.consumedFörbrukning
GM.producedGeneration
GM.consumed_evseFörbrukning av elbilar
GM.available_evseTillgänglig effekt
GM.surplusPV-överskott
GM.storage_homeMinneshem
GM.storage_allMinne Allt
GM.errorPrestanda genom fel

Användning av de globala räknarna
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.

Exempel på tillämpning

Du vill dessutom begränsa laddningsströmmen i förhållande till en förbrukningsmätare i en lägenhet. För att göra detta kan du skapa en laddningsregel med formeln 16000 - M1.current.
M1 är den mätare som mäter lägenhetens förbrukning. Lasthanteringen i cFos Charging Manager försöker först förse EVSE med den maximala strömmen i förhållande till husets anslutningseffekt, men begränsar sedan denna till 16 A minus lägenhetens förbrukning.

Funktioner

Med hjälp av min_price(s), max_price(s) kan du bestämma det billigaste priset för din energileverantör i euro, varvid priserna söks från aktuell tid till max s sekunder på dagen eller följande dag, t.ex. min_price(25200) returnerar det billigaste priset fram till kl. 07.00. Du kan t.ex. skapa en laddningsregel med villkoret CM._price <= min_price(25200) för att ladda vid den mest gynnsamma tidpunkten, men med villkoret att du vill starta från t.ex. kl. 08.00 (förutsatt en laddningstid på 1 timme). På samma sätt finns de två funktionerna min_price_secs(s) och max_price_secs(s), som returnerar starttiden för det billigaste priset i sekunder för den påbörjade dagen. Du kan sedan jämföra dessa med till exempel date.daysecond.