[Ovmsdev] Implementing advanced charge control
Michael Balzer
dexter at expeedo.de
Fri Jan 29 03:56:16 HKT 2021
Steve,
just a note on the ACC capabilities: the system should also support SOC
and 12V level guards, i.e. start the charge when the SOC or 12V level
drops below a configured threshold while parked at a charging location.
In addition to that, it should be possible to set custom
commands/scripts for starting and stopping the charge process depending
on the location, to support controlling smart plugs or home automation
systems.
Regards,
Michael
Am 25.01.21 um 08:45 schrieb Stephen Casner:
> I've been working intermittently over the past two years on
> functionality to replace the ACC (advanced charge control) feature of
> OVMS v2. As an example, ACC could be configured to begin a cooldown
> charge cycle upon plug-in at home.
>
> In OVMS v3 the geofencing aspect of the ACC feature was implemented in
> the "location" command to be usable more generally. Based on design
> discussions with Mark about how the charge control operations and
> other functions should be attached to geolocations I have extended the
> location command to allow a list of actions to be attached to a
> defined location upon entering or leaving. The initial set of actions
> is:
>
> - acc -- initiate a charging profile (only upon entering)
> - homelink -- transmit homelink code
> - notify -- send a notification text to the app
>
> While this activity has been in progress the OVMS scripting features
> have been enhanced significantly. It is possible to do much of what I
> describe using scripts that are triggered upon entering or leaving a
> location. However, creating and installing scripts requires some
> developer skills that are likely beyond the comfort zone of many OVMS
> users, so I think it is still worthwhile to implement these location
> actions.
>
> At this point the homelink and notify actions are already implemented
> for activation upon entering or leaving a location. Assignment of acc
> actions to locations is also implemented, but those actions have no
> effect at this point. This message describes what I propose for acc.
>
> ACC is based on named charging profiles that specify a charge type
> (on-demand, charge at time, charge by time, etc) and associated
> parameters controlling the charge. Mark suggested that at home he
> might want to do a:
>
> Type: Charge By
> Cooldown on plugin
> Charge limit: 90% SOC
> Charge mode: Standard
> Charge current: 32A
> Complete charge by 7am
>
> Another example:
>
> Type: Charge At
> Cooldown: no
> Charge limit: 200km
> Charge mode: Standard
> Charge current: 32A
> Start charge at 11pm
>
> Charge profiles could also be activated manually or by a script. For
> example, you might arrive at a restaurant and type "charge acc
> ontheroad" to select the profile ontheroad without having to set all
> the individual parameters. The "charge" command currently includes
> subcommands to set the current and mode but would need to be extended
> to control times and limits.
>
> The front-end changes would be to extended the command tree as
> follows:
>
> acc list <name>
> acc set <name> at <time>
> acc set <name> by <time>
> acc set <name> on-plugin
> acc set <name> soc <percent>
> acc set <name> range <distance>
> acc rm <name>
> acc rm <name> at <time>
> acc rm <name> by <time>
> acc rm <name> on-plugin
> acc rm <name> soc <percent>
> acc rm <name> range <distance>
>
> charge acc <name>
> charge at <time>
> charge by <time>
> charge on-plugin
> charge soc <percent>
> charge range <distance>
>
> The choices at, by and on-plugin are mutually exclusive, so the last one
> is effective. The soc and range limits will stop the charge when
> reached and if set together with a "by <time>" would cause charging to
> continue after the specified time if the limit has not been reached.
>
> Charge profiles would be stored in the config in a manner similar to
> the way locations are stored with the name as the instance and the
> list of charge parameters in the value.
>
> I have not worked out all the backend details yet, so this is where
> those of you who are more familiar with the vehicle code can provide
> some guidance.
>
> Mark's suggestion was to extend the general vehicle framework to
> support the core ACC functionality; some parts might be handled
> completely at the generic layer, while other parts would require
> vehicle-specific implementation. The goal is to bring a set of
> advanced charge control functionality to all vehicle types (even if
> the vehicle has limited support). So long as the vehicle can start /
> stop charging, we can provide things like timed charges (at or by) in
> OVMS firmware.
>
> So at a minimum the functionality we require is the vehicle ability to
> start a charge, stop a charge, and provide signaling when the pilot
> signal is detected. We also need to be able to monitor the SOC and
> range as they increase during charging, but I think those values are
> already implemented well enough in the metrics.
>
> Some cars might not be able to support the minimum functions, so we
> may need some sort of capabilities back from the vehicle module to
> know whether the acc functions can be implemented Something like
> 'HasChargeStop', 'HasChargeStart', 'HasTimer', etc.
>
> Since many cars will normally start charging as soon as the charge
> cable is plugged in, OVMS needs to see the pilot-signal-present
> notification and stop the car from charging until the ACC conditions
> dictate. This is the case for the Tesla Roadster unless the car is at
> a location where a scheduled charge time has been configured. But
> having a scheduled charge configured is not good because that may
> interfere with what OVMS is trying to control.
>
> The "charge by" operation requires using the charge time predictor to
> figure the start time, then is becomes the same as "charge at". I
> have some concern that the existing CTP may not be accurate for
> Roadsters with the 3.0 battery. I don't know whether the other
> vehicles have an accurate CTP.
>
> The "charge on-plugin" operation has an associated event, but all the
> other operations require use of a ticker to see if the start time has
> come or the stopping condition has been reached.
>
> Comments appreciated.
>
> -- Steve
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
--
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/20210128/ed39ed25/attachment.sig>
More information about the OvmsDev
mailing list