[Ovmsdev] Generator / V2G metrics proposal
Michael Balzer
dexter at expeedo.de
Wed Jan 13 02:22:39 HKT 2021
Everyone,
I'm planning to add a general (optional) charge / grid integration log
and a general (optional) trip log. I'll describe my log record proposal
in a separate mail.
For the grid log, I'm going to add V2G / generator mode metrics now, so
we can support this and define an already fully featured log format. As
this is more or less a reverse charge, and can be combined with
charging, my proposal is to a) basically duplicate the set of charge
metrics with only slight changes for the "generating" view, and b) add
grid side energy counters.
We currently have these charge metrics:
OvmsMetricFloat* ms_v_charge_voltage; // Momentary charger
supply voltage [V]
OvmsMetricFloat* ms_v_charge_power; // Momentary
charger input power [kW]
OvmsMetricFloat* ms_v_charge_efficiency; // Momentary
charger efficiency [%]
OvmsMetricFloat* ms_v_charge_current; // Momentary
charger output current (→battery) [A]
OvmsMetricFloat* ms_v_charge_climit; // Maximum charger
output current [A]
OvmsMetricInt* ms_v_charge_time; // Duration of
running charge [sec]
OvmsMetricFloat* ms_v_charge_kwh; // Energy charged
into the battery in the running session [kWh]
OvmsMetricString* ms_v_charge_mode; // standard, range,
performance, storage
OvmsMetricBool* ms_v_charge_timermode; // True if timer
enabled
OvmsMetricInt* ms_v_charge_timerstart; // Time timer is
due to start
OvmsMetricString* ms_v_charge_state; // charging,
topoff, done, prepare, timerwait, heating, stopped
OvmsMetricString* ms_v_charge_substate; // scheduledstop,
scheduledstart, onrequest, timerwait, powerwait, stopped, interrupted
OvmsMetricString* ms_v_charge_type; // Connection type:
undefined, type1, type2, chademo, roadster, teslaus, supercharger, ccs
OvmsMetricBool* ms_v_charge_pilot; // Pilot signal present
OvmsMetricBool* ms_v_charge_inprogress; // True = currently
charging
OvmsMetricFloat* ms_v_charge_limit_range; // Sufficient range
limit for current charge [km]
OvmsMetricFloat* ms_v_charge_limit_soc; // Sufficient SOC
limit for current charge [%]
OvmsMetricInt* ms_v_charge_duration_full; // Estimated time
remaining for full charge [min]
OvmsMetricInt* ms_v_charge_duration_range; // … for sufficient
range [min]
OvmsMetricInt* ms_v_charge_duration_soc; // … for sufficient
SOC [min]
OvmsMetricFloat* ms_v_charge_temp; // Charger
temperature [°C]
…metrics (not in same order):
v.c.charging
v.c.climit
v.c.current
v.c.duration.full
v.c.duration.range
v.c.duration.soc
v.c.efficiency
v.c.kwh
v.c.limit.range
v.c.limit.soc
v.c.mode
v.c.pilot
v.c.power
v.c.state
v.c.substate
v.c.temp
v.c.time
v.c.timermode
v.c.timerstart
v.c.type
v.c.voltage
I would add now the following metrics for the generator mode:
OvmsMetricFloat* ms_v_gen_voltage; // Momentary
generator output voltage [V]
OvmsMetricFloat* ms_v_gen_power; // Momentary
generator output power [kW]
OvmsMetricFloat* ms_v_gen_efficiency; // Momentary
generator efficiency [%]
OvmsMetricFloat* ms_v_gen_current; // Momentary
generator input current (←battery) [A]
OvmsMetricFloat* ms_v_gen_climit; // Maximum
generator input current [A]
OvmsMetricInt* ms_v_gen_time; // Duration of
generator running [sec]
OvmsMetricFloat* ms_v_gen_kwh; // Energy sum
generated in the running session [kWh]
OvmsMetricString* ms_v_gen_mode; // TBD
OvmsMetricBool* ms_v_gen_timermode; // True if
generator timer enabled
OvmsMetricInt* ms_v_gen_timerstart; // Time generator
is due to start
OvmsMetricString* ms_v_gen_state; // TBD
OvmsMetricString* ms_v_gen_substate; // TBD
OvmsMetricString* ms_v_gen_type; // Connection type
(chademo, ccs, …)
OvmsMetricBool* ms_v_gen_pilot; // Pilot signal present
OvmsMetricBool* ms_v_gen_inprogress; // True = currently
delivering power
OvmsMetricFloat* ms_v_gen_limit_range; // Minimum range
limit for generator mode [km]
OvmsMetricFloat* ms_v_gen_limit_soc; // Minimum SOC
limit for generator mode [%]
OvmsMetricInt* ms_v_gen_duration_empty; // Estimated time
remaining for full discharge [min]
OvmsMetricInt* ms_v_gen_duration_range; // … for range
limit [min]
OvmsMetricInt* ms_v_gen_duration_soc; // … for SOC limit
[min]
OvmsMetricFloat* ms_v_gen_temp; // Generator
temperature [°C]
…metrics (not in same order):
v.g.generating
v.g.climit
v.g.current
v.g.duration.empty
v.g.duration.range
v.g.duration.soc
v.g.efficiency
v.g.kwh
v.g.limit.range
v.g.limit.soc
v.g.mode
v.g.pilot
v.g.power
v.g.state
v.g.substate
v.g.temp
v.g.time
v.g.timermode
v.g.timerstart
v.g.type
v.g.voltage
In addition to these, I would add energy counters to cover the actual
grid energy side (i.e. before/after conversion losses):
OvmsMetricFloat* ms_v_charge_kwh_grid; // Energy drawn
from grid during running session [kWh]
OvmsMetricFloat* ms_v_charge_kwh_grid_total; // Energy drawn
from grid total (life time) [kWh]
OvmsMetricFloat* ms_v_gen_kwh_grid; // Energy sent to
grid during running session [kWh]
OvmsMetricFloat* ms_v_gen_kwh_grid_total; // Energy sent to
grid total (life time) [kWh]
v.c.kwh.grid
v.c.kwh.grid.total
v.g.kwh.grid
v.g.kwh.grid.total
And yes, "kwh" as a metric name isn't perfect, but we started this with
"v.c.kwh", so we should now stick to it for consistency.
Do I miss something? Any objections / suggestions?
Regards,
Michael
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210112/a45aeebb/attachment.sig>
More information about the OvmsDev
mailing list