[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