cFos 计费管理器允许对公式进行动态评估。这一功能适用于 "表达式 "类型的仪表和 "公式 "类型的收费规则。
因此,你可以设置计算其他电表或EVSE的值的电表,并保持它们的准备和显示。充电规则也可以使用公式来动态计算充电电流,也可以访问电表和EVSE(包括 "表达式 "类型的电表)。
用公式可以进行以下操作。
+ - * / % | 加法、减法、乘法、除法、模数 |
& | | 位数和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=最小(如果x<最小),x=最大(如果x>最大),否则保留x |
round(x) | 将x四舍五入为整数。例如:四舍五入到小数点后1位:round(10*x)/10。 |
sqrt(x) | x的平方根 |
exists(x) | 如果变量x存在,则为真,否则为假 |
此外,以下逻辑表达是可能的。==
(相等),!=
(不相等),<
(较小),<=
(较小-相等),>
(较大),>=
(较大-相等),!
(不是),||
(逻辑Or),&&
(逻辑And),?
(条件运算符,例如x? y : z
,如果x为真,则返回y,否则返回z
)
例如,这允许根据条件关闭电流。M1.current >= 6500 ?M1.current : 0
如果M1的电流大于6.5A,则返回M1的电流,否则为0,这样就暂停了充电。对于这样的条件,也可以查询输入(见下文)
以下名称是可能的。
Mx | 单位ID为x的电表,例如M1 |
Ex | 设备ID为x的EVSE,例如E1 |
也可以通过设置电表,然后在公式中使用相应的设备ID,来访问虚拟电表,如太阳能盈余、电网抽水或 "Power avail. for EVSEs"(墙盒可用的电量)等。
然后你可以通过点来访问各单位的个别数值。这些调用方式如下。
current_l1 | 第1相的电流,单位:mA |
current_l2 | 第2相的电流,单位:mA |
current_l3 | 第3相的电流,单位:mA |
current | 当前阶段的电流,单位为 mA(对于充电规则,充电管理器逐一查询所有阶段;对于 "表达式 "类型的仪表,公式所指的各阶段适用。如果您为 "电流L1 "指定了一个公式,您可以省略电流L2和L3的字段。然后使用电流L1的公式) |
power_w | 当前有功功率,单位为瓦特 |
offered | 墙盒:提供的电流(毫安 |
import_wh | 汲取的能量(Wh |
export_wh | 注入的能量(Wh)。 |
dt | 上次更新后的时间(以秒为单位),仅适用于计数器 "Expression",另请参阅 CM._dt。 |
inputN | 设备的输入编号 N,1 = 激活,0 = 非激活,N 是输入的编号,从 1 开始。 |
soc | SOC,以百分比为单位的充电水平(计数器/存储器)--如果设备支持 |
id | 设备标识,Modbus标识 |
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(壁挂箱)。仅在墙壁盒充电规则计算期间有效,否则为 0 |
lb_cur_l2 | 当前计算的第 2 相电流,单位 mA(壁挂箱)。仅在墙壁盒充电规则计算期间有效,否则为 0 |
lb_cur_l3 | 计算出的第 3 相电流,单位 mA(墙壁盒)。仅在墙壁盒充电规则计算期间有效,否则为 0 |
lb_cur | 为当前相位计算的电流,单位 mA(墙壁盒)。充电管理器会逐一查询所有相位。 |
surplus_pcur | 每个(预测)阶段的 PV 过剩电流(毫安 |
surplus_wanted | 如果已经应用了 PV 盈余规则,则为 1,否则为 0 |
budget | 当前预算中的千瓦时或分钟数 |
budget_amount | 当前预算的最大千瓦时或分钟数 |
budget_used | 当前预算使用的千瓦时或分钟数 |
com_err | 1,如果有一个COM错误,否则为0 |
com_err2 | 1,如果一个COM错误存在超过12秒,否则为0 |
reactive_power | 无功功率规格,单位为瓦(如果设备支持),正值:正值:电感式,负值:电容式 |
switch_phases | 对于带相位开关的墙盒:手动相位开关,1 = 1 相,3 = 3 相,-1 = 自动相位开关 |
departure | 作为单位时间戳的 ISO 15118 出发时间(适用于支持此功能的墙盒,否则为 0) |
req_energy | ISO 15118 所需能量,单位 Wh(适用于支持此功能的壁挂炉,否则为 0) |
plugin_start | Unix 时间戳,电缆插入时间 |
plugin_energy | 从插上电缆时算起,之前已充电的电量(以 Wh 为单位 |
M1.current_l1 | 电表M1的电流,第1相 |
E2.import_wh | EVSE E2的消耗量 |
E3.power_w | E3 当前的充电功率(瓦特 |
如果使用 "表达式 "类型仪表的公式,也可以省略设备 ID。这样,字段名称就与该仪表相关,例如 "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,周一=1,周二=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: 当前正在充电的壁挂炉的数量,如果没有正在充电则为1
_max_total_current: 房屋连接的最大电流,每相毫安。
_max_total_evse_current: 墙盒的最大电流,每相为mA
价格:目前的电价
_price_level: 当前电价水平,-2=非常昂贵,-3=昂贵,-4=正常,-5=便宜,-6=非常便宜
剩余:当前的太阳能剩余,单位为瓦特
_org_surplus:收费经理独立于其自身公式计算的太阳能盈余。
_storage_home_max_capacity(存储设备的最大容量): 如果在仪表配置中指定,则存储设备的总容量,以 Wh 为单位。
_storage_home_capacity(存储容量): 如果在电表配置中指定,存储容量(Home)的当前容量,单位为 Wh
_storage_all_max_capacity:存储器的总容量,如果在计数器配置中指定,则为 All,单位为 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
注意事项:
在自定义计数器下,您还可以找到关于如何使用全局计费管理器变量和输出的公式的说明。
GM 全球计数器
GM.grid_demand | 电源参考 |
GM.consumed | 消费 |
GM.produced | 一代人 |
GM.consumed_evse | 消费电动汽车 |
GM.available_evse | 可用功率 |
GM.surplus | 光伏盈余 |
GM.storage_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.电流
设置一个充电规则。
M1是测量单元消费的仪表。cFos充电管理器的负载管理首先试图为EVSE提供与房屋连接功率有关的最大电流,但随后将其限制在16A减去单位的消耗。
使用 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.daysecond 进行比较。