O cFos Charging Manager permite a avaliação dinâmica das fórmulas. Esta funcionalidade está disponível para um contador do tipo "Expressão" e para regras de carregamento do tipo "Fórmula".
Pode, portanto, configurar contadores que calculam valores de outros contadores ou EVSEs e mantê-los prontos e exibi-los. As regras de carregamento podem também utilizar fórmulas para calcular dinamicamente a corrente de carregamento e também aceder a contadores e EVSEs (incluindo contadores do tipo "Expressão").
As seguintes operações são possíveis com as fórmulas:
+ - * / % | Adição, subtracção, multiplicação, divisão, módulo |
& | | bitwise AND e OR |
^ | Cálculo de potência, por exemplo 10^2 = 100 |
min(x,y) | Mínimo de x e y, mais de 2 argumentos possíveis |
max(x,y) | Máximo de x e y, mais de 2 argumentos possíveis |
abs(x) | Valor absoluto de x, por exemplo abs(-2) = 2 |
clamp(x,min,max) | Valor x = min (se x < min), x = max (se x > max), caso contrário manter x |
round(x) | Ronda x para número inteiro. Exemplo: Arredondamento para 1 casa decimal: arredondamento(10*x)/10. |
sqrt(x) | Raiz quadrada de x |
exists(x) | verdadeiro se a variável x existir, caso contrário falso |
Além disso, são possíveis as seguintes expressões lógicas:==
(igual), !=
(desigual), <=
(menos), <=
(menos igual), >=
(maior), >=
(maior igual), !
(não), ||
(lógico Ou), &&
(lógico E), ?
(operador condicional, por exemplo x ? y : z
, retorna y se x for verdadeiro, caso contrário z
)
Isto permite, por exemplo, que a corrente seja desligada em função das condições: M1.current >= 6500 ? M1.current : 0
retorna a corrente de M1 se for superior a 6,5A e 0 caso contrário, o que faz uma pausa na carga. Para tais condições, é também possível consultar as entradas (ver abaixo)
Os seguintes nomes são possíveis:
Mx | Medidor com unidade ID x, por exemplo M1 |
Ex | EVSE com dispositivo ID x, por exemplo E1 |
Também é possível aceder aos contadores virtuais, tais como o excedente solar, o desenho da rede ou "Power avail. for EVSEs" (energia disponível para caixas de parede), através da configuração do contador e depois utilizando a ID do dispositivo correspondente na fórmula.
Pode então aceder aos valores individuais das unidades por meio do ponto. Estes são chamados da seguinte forma:
current_l1 | Corrente da fase 1 em mA |
current_l2 | Corrente da fase 2 em mA |
current_l3 | Corrente da fase 3 em mA |
current | Corrente da fase actual em mA (para regras de carregamento, o Gestor de Carregamento consulta todas as fases uma após a outra; para contadores do tipo "Expressão", aplica-se a respectiva fase a que a fórmula se refere. Se tiver especificado uma fórmula para "Corrente L1", pode omitir os campos para as Correntes L2 e L3. Depois é utilizada a fórmula para a corrente L1) |
power_w | Potência activa actual em watts |
offered | Wallbox: Corrente oferecida em mA |
import_wh | Energia atraída em Wh |
export_wh | Energia injectada em Wh |
dt | O tempo que passou desde a última atualização (em segundos), apenas para o contador "Expressão", ver também CM._dt. |
inputN | Número de entrada N do dispositivo, 1 = ativo, 0 = inativo, N é o número da entrada, começando por 1. |
soc | SOC, nível de carga em percentagem (contador/memória) - se suportado pelo dispositivo |
id | Identificação do dispositivo, ID do Modbus |
txn_duration | Duração da transacção actual em segundos (EVSE) |
charging_dur | Tempo real de carregamento da transação atual, em segundos (Wallbox) |
txn_energy | Energia carregada da actual transacção em Wh (EVSE) |
min_current | Corrente mínima de carga em mA (EVSE) |
max_current | Corrente máxima de carga em mA (EVSE) |
state | Estado: 1 espera, 2 ligado, 3 carregamento, 4 carregamento com ventilação, 5 erro, 6 offline (EVSE) |
cphases | Número de fases de carregamento (0-3) |
pphases | Número de fases de carga previstas (0-3) |
lb_cur_l1 | Corrente calculada da fase 1 em mA (caixa de parede). Apenas durante o cálculo das regras de carregamento da caixa de parede; caso contrário, 0 |
lb_cur_l2 | Corrente calculada da fase 2 em mA (caixa de parede). Apenas durante o cálculo das regras de carregamento da caixa de parede; caso contrário, 0 |
lb_cur_l3 | Corrente atualmente calculada da fase 3 em mA (Wallbox). Apenas durante o cálculo das regras de carregamento da caixa de parede; caso contrário, 0 |
lb_cur | Corrente calculada para a fase atual em mA (wallbox). Apenas durante o cálculo das regras de carregamento da caixa de parede; caso contrário, 0. O gestor de carregamento consulta todas as fases, uma após a outra. |
surplus_pcur | Excesso de corrente PV por fase (prevista) em mA |
surplus_wanted | 1, se já tiver sido aplicada uma regra de excedente de PV, caso contrário 0 |
budget | KWh ou minutos no orçamento atual |
budget_amount | Máximo de kWh ou minutos no orçamento atual |
budget_used | KWh ou minutos utilizados no orçamento atual |
com_err | 1, se houver um erro COM, caso contrário 0 |
com_err2 | 1, se um erro COM estiver presente durante mais de 12 segundos; caso contrário, 0 |
reactive_power | Especificação da potência reactiva em watts (se suportada pelo dispositivo), valores positivos: Indutivo, valores negativos: Capacitivo |
switch_phases | Para caixas de parede com comutação de fases: Comutação manual de fases, 1 = monofásico, 3 = trifásico, -1 = comutação automática de fases |
departure | Hora de partida ISO 15118 como carimbo de data/hora unitário (para wallboxes que o suportem; caso contrário, 0) |
req_energy | ISO 15118 Energia necessária em Wh (para wallboxes que o suportem, caso contrário 0) |
plugin_start | Carimbo de data/hora Unix, hora de inserção do cabo |
plugin_energy | Energia previamente carregada em Wh desde o momento em que o cabo foi ligado à corrente |
M1.current_l1 | Corrente do contador M1, fase 1 |
E2.import_wh | Porquê consumido do EVSE E2 |
E3.power_w | Potência de carga atual do E3 em watts |
Se utilizar as fórmulas para um aparelho do tipo "Expressão", também pode omitir a ID do aparelho. Assim, os nomes dos campos referem-se a este contador, por exemplo, 'power_w' é a potência deste contador em watts. Através de 'dt' é possível realizar algumas funções alargadas, por exemplo, num contador do tipo "Expressão":
import_wh + M1.power_w * dt / 3600
actualiza a energia de origem com base na energia durante o tempo de atualização anterior(power_w * (20 - dt) + M1.power_w * dt) / 20
suaviza a potência nos últimos 20 segundos.date
date.year | Ano actual |
date.month | Mês a partir de 0..11 |
date.day | Dia a partir de 1..31 |
date.weekday | Dia da semana SO=0, Seg=1, Ter=2, ... Sáb=6 |
date.yearday | Dia do ano a partir de 0..366 |
date.hour | Hora a partir de 0..23 |
date.minute | Minuto a partir de 0...60 |
date.second | Segundo a partir de 0...60 |
date.daysecond | Segundo deste dia a partir de 0..86399 |
date.dayminute | Minuto deste dia a partir de 0..1439 |
date.dst | 0 = hora de Inverno, 1 = hora de Verão |
date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
PB.input1 | S0 Input 1, 1 = ativo, 0 = inativo |
PB.input2 | S0 Input 2, 1 = ativo, 0 = inativo |
CM Variáveis do gestor de carregamento
Estas variáveis podem ser definidas pelo administrador em 'Configuração'. Por exemplo, se o administrador definir a variável 'var_x' para 1,5, CM.var_x devolve o valor 1,5.
Variáveis pré-definidas:
_num_charging: Número de caixas de parede actualmente em carga
_num_charging1: Número de caixas de parede actualmente a carregar, 1 se nenhuma estiver a carregar
corrente_max_total: Corrente máxima da ligação da casa em mA por fase
_max_total_evse_current: Corrente máxima das caixas de parede em mA por fase
preço: preço actual da electricidade
_preço_nível: nível actual do preço da electricidade, -2=muito caro, -3=barato, -4=normal, -5=preço normal, -6=muito barato
excedente: Excedente solar actual em watts
excedente solar: Excedente solar como teria sido calculado pelo Gestor de Carregamento independentemente das suas próprias fórmulas
_storage_home_max_capacity: Capacidade total do armazenamento, casa, se especificado na configuração do contador, em Wh
_storage_home_capacity: Capacidade atual do armazenamento, Casa, se especificado na configuração do contador, em Wh
_storage_all_max_capacity: Capacidade total do armazenamento, Todos, se especificado na configuração do contador, em Wh
_storage_all_capacity: Capacidade atual do armazenamento, Todos, se especificado na configuração do contador, em Wh
_max_total_current_prc: Percentagem da corrente de carga total máxima disponível. Esta variável pode também ser escrita (por definições do contador e variáveis do gestor de carregamento)
_dt: O tempo decorrido desde a última atualização (em segundos).
Utilização dos objectos globais:
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
Nota:
Em Contadores personalizados, encontrará também instruções sobre como utilizar fórmulas com variáveis e saídas globais do Charging Manager.
GM Contadores globais
GM.grid_demand | Referência da rede eléctrica |
GM.consumed | Consumo |
GM.produced | Geração |
GM.consumed_evse | Consumo de automóveis eléctricos |
GM.available_evse | Potência disponível |
GM.surplus | Excedente fotovoltaico |
GM.storage_home | Casa da Memória |
GM.storage_all | Memória Tudo |
GM.error | Desempenho através do erro |
Utilização dos contadores globais
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.
Pretende-se ainda limitar a corrente de carga em relação a um contador de consumo de um apartamento. Para o fazer, pode estabelecer uma regra de carga com a fórmula 16000 - M1.current
.
M1 é o medidor que mede o consumo do apartamento. A gestão da carga do Gestor de Carga cFos tenta primeiro fornecer ao EVSE a corrente máxima em relação à potência de ligação da casa, mas depois limita esta a 16A menos o consumo do apartamento.
Utilizando min_price(s), max_price(s), pode determinar o preço mais barato do seu fornecedor de energia em euros, sendo os preços pesquisados desde a hora atual até ao máximo de s segundos do dia ou do dia seguinte, por exemplo, min_price(25200) devolve o preço mais barato até às 7:00 horas. Por exemplo, é possível criar uma regra de carregamento com a condição CM._price <= min_price(25200) para carregar à hora mais favorável, mas com a condição de que se pretende partir a partir das 8h00, por exemplo (assumindo um tempo de carregamento de 1 hora). Da mesma forma, existem as duas funções min_price_secs(s) e max_price_secs(s), que devolvem a hora de início do preço mais barato em segundos do dia iniciado. Pode então compará-las com date.daysecond, por exemplo.