Мениджърът за таксуване на 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 |
Ex | EVSE с идентификатор на устройството 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. |
soc | SOC, ниво на зареждане в проценти (брояч/памет) - ако се поддържа от устройството |
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_pcur | PV излишък на ток за (прогнозна) фаза в mA |
surplus_wanted | 1, ако вече е приложено правило за PV излишък, в противен случай 0 |
budget | KWh или минути от текущия бюджет |
budget_amount | Максимален брой kWh или минути за текущия бюджет |
budget_used | KWh или минути, използвани за текущия бюджет |
com_err | 1, ако има грешка в COM, в противен случай 0 |
com_err2 | 1, ако грешката COM е налице за повече от 12 сек, в противен случай 0 |
reactive_power | Спецификация на реактивната мощност във ватове (ако се поддържа от устройството), положителни стойности: Индуктивна, отрицателни стойности: капацитивна |
switch_phases | За стенни кутии с превключване на фазите: Ръчно превключване на фазите, 1 = 1-фазно, 3 = 3-фазно, -1 = автоматично превключване на фазите |
departure | ISO 15118 време на заминаване като единица време (за wallbox, които поддържат това, иначе 0) |
req_energy | ISO 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 + M1.power_w * dt / 3600
актуализира енергията на източника въз основа на мощността през последното време на актуализация(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.dst | 0 = зимно време, 1 = лятно време |
date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
PB.input1 | S0 Input 1, 1 = активен, 0 = неактивен |
PB.input2 | S0 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.surplus | PV излишък |
GM.storage_home | Memory 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, например.