Документация

cFos Charging Manager - формули

Мениджърът за таксуване на cFos позволява динамична оценка на формулите. Тази функционалност е налична за измервателен уред от тип "Израз" и за правила за таксуване от тип "Формула".

Следователно можете да настроите измервателни уреди, които изчисляват стойности от други измервателни уреди или EVSE, поддържат ги готови и ги показват. Правилата за зареждане могат също така да използват формули за динамично изчисляване на тока на зареждане и също така да имат достъп до измервателни уреди и EVSE (включително измервателни уреди от тип "Expression").

Следните операции са възможни с формулите:

+ - * / %Събиране, изваждане, умножение, деление, модул
& |побитово AND и OR
^Изчисляване на мощността, напр. 10^2 = 100
min(x,y)Минимум на x и y, възможни са повече от 2 аргумента
max(x,y)Максимум x и y, възможни са повече от 2 аргумента
abs(x)Абсолютна стойност на x, напр. abs(-2) = 2
clamp(x,min,max)Стойност x = min (ако x < min), x = max (ако x > max), в противен случай се запазва x
round(x)Закръглете x до цяло число. Пример: Закръгляне до 1 знак след десетичната запетая: round(10*x)/10.
sqrt(x)Квадратен корен от x
exists(x)true, ако променливата x съществува, в противен случай false

Освен това са възможни следните логически изрази:

== (равен), != (неравен), < (по-малък), <= (по-малък-равен), > (по-голям), >= (по-голям-равен), ! (не), || (логическо Или), && (логическо И), ? (условен оператор, напр. x ? y : z, връща y, ако x е вярно, в противен случай z)

Това позволява, например, токът да се изключва в зависимост от условията: M1.current >= 6500 ? M1.current : 0 връща тока на M1, ако той е по-голям от 6,5A, и 0 в противен случай, което спира зареждането. За такива условия е възможно също така да се направи запитване към входовете (вж. по-долу)

Възможни са следните имена:

MxИзмервателен уред с идентификационен номер x, напр. M1
ExEVSE с идентификатор на устройството x, напр. E1

Възможен е и достъп до виртуални измервателни уреди, като например излишък от слънчева енергия, потребление от мрежата или "Power avail. for EVSEs" (мощност, налична за стенни кутии), чрез настройване на измервателния уред и след това използване на съответния идентификатор на устройството във формулата.

След това можете да получите достъп до отделните стойности на единиците чрез точката. Те се извикват по следния начин:

current_l1Ток на фаза 1 в mA
current_l2Ток на фаза 2 в mA
current_l3Ток на фаза 3 в mA
currentТок на текущата фаза в mA (за правилата за зареждане мениджърът за зареждане задава запитвания за всички фази една след друга; за измервателни уреди от тип "Expression" се прилага съответната фаза, за която се отнася формулата. Ако сте задали формула за "Current L1", можете да пропуснете полетата за Current L2 и L3. Тогава се използва формулата за ток L1)
power_wТекуща активна мощност във ватове
offeredСтенна кутия: Предлаган ток в mA
import_whИзразходвана енергия в Wh
export_whВпръскана енергия в Wh
dtВремето, изминало от последната актуализация (в секунди), само за брояча "Expression", вж. също CM._dt.
inputNНомер N на входа на устройството, 1 = активен, 0 = неактивен, N е номерът на входа, започващ от 1.
socSOC, ниво на зареждане в проценти (брояч/памет) - ако се поддържа от устройството
idИдентификатор на устройството, Modbus ID
txn_durationПродължителност на текущата транзакция в секунди (EVSE)
charging_durДействително време за зареждане на текущата транзакция в секунди (Wallbox)
txn_energyЗаредена енергия на текущата транзакция в Wh (EVSE)
min_currentМинимален ток на зареждане в mA (EVSE)
max_currentМаксимален ток на зареждане в mA (EVSE)
stateСтатус: 1 изчакване, 2 включено, 3 зареждане, 4 зареждане с вентилация, 5 грешка, 6 офлайн (EVSE)
cphasesБрой фази на зареждане (0-3)
pphasesБрой на прогнозираните фази на зареждане (0-3)
lb_cur_l1Ток Изчислен ток на фаза 1 в mA (wallbox). Само по време на изчисляването на правилата за зареждане на wallbox, в противен случай 0
lb_cur_l2Текущо изчислен ток на фаза 2 в mA (wallbox). Само по време на изчисляването на правилата за зареждане на wallbox, в противен случай 0
lb_cur_l3Изчислен ток на фаза 3 в mA (кутия на стената). Само по време на изчисляването на правилата за зареждане на wallbox, в противен случай 0
lb_curИзчислен ток за токовата фаза в mA (wallbox). Само по време на изчисляването на правилата за зареждане на wallbox, в противен случай 0. Мениджърът за зареждане прави запитвания към всички фази една след друга.
surplus_pcurPV излишък на ток за (прогнозна) фаза в mA
surplus_wanted1, ако вече е приложено правило за PV излишък, в противен случай 0
budgetKWh или минути от текущия бюджет
budget_amountМаксимален брой kWh или минути за текущия бюджет
budget_usedKWh или минути, използвани за текущия бюджет
com_err1, ако има грешка в COM, в противен случай 0
com_err21, ако грешката COM е налице за повече от 12 сек, в противен случай 0
reactive_powerСпецификация на реактивната мощност във ватове (ако се поддържа от устройството), положителни стойности: Индуктивна, отрицателни стойности: капацитивна
switch_phasesЗа стенни кутии с превключване на фазите: Ръчно превключване на фазите, 1 = 1-фазно, 3 = 3-фазно, -1 = автоматично превключване на фазите
departureISO 15118 време на заминаване като единица време (за wallbox, които поддържат това, иначе 0)
req_energyISO 15118 Необходима енергия в Wh (за стенни кутии, които поддържат това, иначе 0)
plugin_startВремеви печат на Unix, време на поставяне на кабела
plugin_energyПредишно заредена енергия в Wh от момента на включване на кабела

Пример
M1.current_l1Ток на измервателния уред M1, фаза 1
E2.import_whКонсумирани Wh от EVSE E2
E3.power_wТекуща мощност на зареждане на E3 във ватове

Ако използвате формулите за измервателен уред от тип "Expression", можете също така да пропуснете идентификатора на устройството. Тогава имената на полетата се отнасят за този измервателен уред, например "power_w" е мощността на този уред във ватове. С помощта на 'dt' можете да реализирате няколко разширени функции, напр. в измервателен уред от тип "Expression":

  • Формула за "import_wh": import_wh + M1.power_w * dt / 3600 актуализира енергията на източника въз основа на мощността през последното време на актуализация
  • Като формула за "power_w": (power_w * (20 - dt) + M1.power_w * dt) / 20 изглажда мощността през последните 20 секунди.

Глобални променливи

date

date.yearТекуща година
date.monthМесец от 0..11
date.dayДен от 1..31
date.weekdayСедмичен ден SO=0, Mon=1, Tue=2, ... Събота=6
date.yeardayДен в годината от 0..366
date.hourЧас от 0..23
date.minuteМинута от 0..60
date.secondСекунда от 0..60
date.daysecondВтора част на този ден от 0..86399
date.dayminuteМинута от този ден от 0..1439
date.dst0 = зимно време, 1 = лятно време
date.timestampUnix timespamp, secs since 1.1.1970

PB (nur cFos Power Brain)

PB.input1S0 Input 1, 1 = активен, 0 = неактивен
PB.input2S0 Input 2, 1 = активен, 0 = неактивен

CM Променливи на мениджъра за зареждане

Тези променливи могат да бъдат зададени от администратора в раздел "Конфигурация". Например, ако администраторът зададе променливата 'var_x' на 1,5, CM.var_x връща стойността 1,5.

Предварително зададени променливи:
_num_charging: Брой стенни кутии, които се зареждат в момента
_num_charging1: Брой на зареждащите се в момента wallbox, 1, ако никой не се зарежда
_max_total_current: Максимален ток на връзката на къщата в mA на фаза
_max_total_evse_current: Максимален ток за стенни кутии в mA на фаза
_price: Текуща цена на електроенергията
_price_level: Текущо ниво на цените на електроенергията, -2=много скъпо, -3=скъпо, -4=нормално, -5=евтино, -6=много евтино
_surplus: Текущ излишък на слънчева енергия във ватове
_org_surplus: Слънчевият излишък, който би бил изчислен от мениджъра по таксуването независимо от неговите собствени формули
_storage_home_max_capacity: Общият капацитет на хранилището, дома, ако е посочен в конфигурацията на измервателния уред, в Wh
_storage_home_capacity: Текущ капацитет на хранилището, Home, ако е посочен в конфигурацията на измервателния уред, в Wh
_storage_all_max_capacity: Общ капацитет на хранилището, Всички, ако е посочен в конфигурацията на брояча, в Wh
_storage_all_capacity: Текущ капацитет на хранилището, All, ако е посочено в конфигурацията на брояча, в Wh
_max_total_current_prc: Процент от наличния максимален общ ток на зареждане. Тази променлива може също да бъде записана (чрез дефиниции на броячи и променливи на мениджъра на зареждането)
_dt: Времето, което е изминало от последната актуализация (в секунди).

Използване на глобалните обекти:
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
Забележка:
В раздела Custom Counters (Потребителски броячи) ще намерите и инструкции за използване на формули с глобални променливи и изходи на Charging Manager.

GM Глобални броячи

GM.grid_demandРеферентна мрежа
GM.consumedПотребление
GM.producedПоколение
GM.consumed_evseПотребление на електронни автомобили
GM.available_evseНалична мощност
GM.surplusPV излишък
GM.storage_homeMemory Home
GM.storage_allПамет Всичко
GM.errorИзпълнение чрез грешки

Използване на глобалните броячи
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.

Пример за приложение

Искате допълнително да ограничите тока на зареждане по отношение на измервателния уред за потребление на апартамент. За тази цел можете да създадете правило за зареждане с формулата 16000 - M1.current.
M1 е електромерът, който измерва потреблението на апартамента. Управлението на натоварването на мениджъра за зареждане на cFos първо се опитва да осигури на EVSE максимален ток спрямо мощността на домашната връзка, но след това го ограничава до 16 A минус потреблението на апартамента.

Функции

С помощта на min_price(s), max_price(s) можете да определите най-евтината цена на вашия доставчик на енергия в евро, като цените се търсят от текущото време до максимум s секунди на деня или на следващия ден, например min_price(25200) връща най-евтината цена до 7:00 ч. сутринта. Например можете да създадете правило за зареждане с условие CM._price <= min_price(25200), за да зареждате в най-благоприятното време, но с условие, че искате да тръгнете от 8:00 ч. сутринта, например (при условие, че времето за зареждане е 1 час). По подобен начин съществуват двете функции min_price_secs(s) и max_price_secs(s), които връщат началния час на най-евтината цена в секунди за започнатия ден. След това можете да ги сравните с date.dayecond, например.