<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Mark,<br>
    <br>
    two questions…<br>
    <br>
    <br>
    a) Can we agree on a slightly different naming scheme?<br>
    <br>
    I suggest adding an indicator for the cell level semantics to the
    "soc.min" and "soc.max" names, e.g.<br>
    <br>
    <tt>v.b.cell.soc.min</tt><tt><br>
    </tt><tt>
      v.b.cell.soc.max</tt><br>
    <br>
    …or abbreviated…<br>
    <br>
    <tt>v.b.c.soc.min</tt><tt><br>
    </tt><tt>
      v.b.c.soc.max</tt><br>
    <br>
    That way we can add further cell related metrics (e.g. ".cnt",
    ".soc.stddev") in a consistent name space.<br>
    <br>
    <br>
    b) What is the technical definition of the "soc.min" metric?<br>
    <br>
    Normally I would expect "soc.min" to be identical to the overall
    pack SOC -- the Roadster certainly doesn't allow cells to be
    discharged below 0% SOC?<br>
    <br>
    What are typical values for "min" and "max" in reference to the
    overall SOC and voltage?<br>
    <br>
    I mean, if that's really a normalized cell voltage level, we
    shouldn't name it "soc".<br>
    <br>
    <br>
    Regards,<br>
    Michael<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 24.05.2018 um 04:20 schrieb Mark
      Webb-Johnson:<br>
    </div>
    <blockquote type="cite"
      cite="mid:14DBCC0C-DEF1-44E1-9A00-4EDC7CD9A93C@openvehicles.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      Michael,
      <div class=""><br class="">
      </div>
      <div class="">Thanks for the explanation. That makes good sense.</div>
      <div class=""><br class="">
      </div>
      <div class="">Given that at least three vehicles support SOC MIN
        and MAX, I’ve gone ahead and made standard metrics for those. I
        haven’t modified all the vehicle modules to store them, but
        think that can be done for at least Roadster, Kia Soul and Twizy
        (and maybe Nissan Leaf). Can the maintainers of those modules
        set appropriately? Should be very simple.</div>
      <div class=""><br class="">
      </div>
      <div class="">I’ve also created a generic textual v.b.health
        metric that can be used to record a textual indication of
        vehicle health (perhaps the calculations behind v.b.soh). Very
        vehicle specific.</div>
      <div class=""><br class="">
      </div>
      <div class="">I’ve then modified the Tesla Roadster module to
        store v.b.soc.min and v.b.soc.max, and to calculate v.b.soh
        (based on %cac remaining x %soc inbalance). Maybe tune it later,
        but I think it should give a pretty good rough indication of
        health. That is all in an edge release ready to go out tonight.</div>
      <div class=""><br class="">
      </div>
      <div class="">Regards, Mark.<br class="">
        <div><br class="">
          <blockquote type="cite" class="">
            <div class="">On 24 May 2018, at 12:12 AM, Michael Balzer
              <<a href="mailto:dexter@expeedo.de" class=""
                moz-do-not-send="true">dexter@expeedo.de</a>> wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <meta http-equiv="Content-Type" content="text/html;
                charset=utf-8" class="">
              <div text="#000000" bgcolor="#FFFFFF" class=""> Mark,<br
                  class="">
                <br class="">
                I introduced this originally, it's meant to be (1), the
                overall indication of battery health.<br class="">
                <br class="">
                As the wikipedia article says, there is no general
                industry definition on how to calculate this.<br
                  class="">
                <br class="">
                On the Twizy, the SOH is given by the BMS, while the CAC
                is calculated by the OVMS by monitoring the charge
                process and counting coulombs. The BMS SOH is the
                (normally invisible) limit for the usable capacity, as
                the Twizy always shows a range of 0-100% SOC regardless
                of the SOH. It's also the base for any warranty
                replacement of the battery (if it's rented you'll get a
                new one when SOH is below 75%).<br class="">
                <br class="">
                The BMS is proprietary and without any available
                documentation, it's a complete mystery how it calculates
                the SOH.<br class="">
                <br class="">
                While the capacity would normally be the major factor in
                a SOH, the Twizy BMS (LG Chem) has actually other ideas
                on this. For example it's been at 100% for the first
                three years, then at 99% for another two years, while my
                CAC value showed the actual degradation (long term
                linear with cycles). It's then begun to drop rapidly
                over a short period of time and is now close to my CAC
                level. My cells are still pretty good balanced under
                load as well as open circuit, the balance also degraded
                more or less linearly. There are also no obvious
                temperature indications that could explain the SOH
                curve.<br class="">
                <br class="">
                <br class="">
                Generally I recommend to use this for the value the car
                provides, if any.<br class="">
                <br class="">
                If the car doesn't provide an SOH, any calculation that
                fits…<br class="">
                <br class="">
                <blockquote type="cite" class="">
                  <ol class="MailOutline">
                    <li class="">An overall indication of battery
                      health? 100% being perfect, and 0% a brick?</li>
                  </ol>
                </blockquote>
                <br class="">
                …will do.<br class="">
                <br class="">
                <br class="">
                <blockquote type="cite" class="">
                  <div class="">Kia Soul seems to be closest to the
                    implementation I was thinking of. Find out the
                    difference between SOC LIM MIN and LIM MAX, and use
                    that as an indication of imbalance in the pack. But
                    Nissan Leaf seems to be more like (CAC/160)*100
                    (where 160 is the CAC for a brand new vehicle).</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Or should we just add SOC_MIN and
                    SOC_MAX if these are used in many cars? Or an
                    imbalance percentage?</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Or should we combine the both (so
                    CAC/160*100 gives us percentage capacity loss, and
                    SOCMAX-SOCMIN/SOCMAX*100 gives us imbalance of the
                    pack, then we perhaps multiply the two together to
                    give an overall indication of health)?</div>
                </blockquote>
                <br class="">
                If breaking down SOC into the peak min and max cell
                values I suggest also adding the average and peak
                standard deviation, plus either the average cell SOC or
                the number of cells to derive that.<br class="">
                <br class="">
                Interior resistance of cells would be another option for
                standard metrics of cell health, but seems to be rarely
                available (and needs a reference).<br class="">
                <br class="">
                I've got the cell module voltages and temperatures on
                the Twizy. I record their peak values and deviations
                under load and calculate the standard deviation. This
                monitoring shows only a minor difference against the
                values I recorded five years ago. I'm pretty sure if I
                also had the internal resistance, that would give a much
                clearer image.<br class="">
                <br class="">
                Regards,<br class="">
                Michael<br class="">
                <br class="">
                <br class="">
                <div class="moz-cite-prefix">Am 23.05.2018 um 16:42
                  schrieb Mark Webb-Johnson:<br class="">
                </div>
                <blockquote type="cite"
                  cite="mid:AB7F1501-2FBD-4944-82FC-65C086F87A5B@webb-johnson.net"
                  class="">
                  <meta http-equiv="Content-Type" content="text/html;
                    charset=utf-8" class="">
                  <div class=""><br class="">
                  </div>
                  What is MS_V_BAT_SOH used for?
                  <div class=""><br class="">
                  </div>
                  <div class="">For Tesla Roadster, as well as SOC, we
                    have SOC LIM MIN and SOC LIM MAX. I want to make
                    those available.</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">
                    <ul class="MailOutline">
                      <li class="">Kia Soul seems to use:<br class="">
                        <br class="">
                        StdMetrics.ms_v_bat_soh->SetValue( 110 - (
                        m_b_cell_det_max->AsFloat(0) +
                        m_b_cell_det_min->AsFloat(0)) / 2 );<br
                          class="">
                        <br class="">
                      </li>
                      <li class="">Nissan Leaf uses:<br class="">
                        <br class="">
                        StandardMetrics.ms_v_bat_soh->SetValue(ah /
                        newCarAh * 100);<br class="">
                        <br class="">
                      </li>
                      <li class="">Twizy uses:<br class="">
                        <br class="">
                        CAN_BYTE(5) on ID 0x424</li>
                    </ul>
                  </div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Which is it?</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">
                    <ol class="MailOutline">
                      <li class="">An overall indication of battery
                        health? 100% being perfect, and 0% a brick?</li>
                      <li class="">Or battery capacity (100% being a new
                        car, and 50% being one who’s range is only half
                        that of a new car)?</li>
                    </ol>
                  </div>
                  <div class=""><br class="">
                  </div>
                  <div class="">The definition here seems to lean
                    towards #2 (capacity related), but seems arguable:</div>
                  <div class=""><br class="">
                  </div>
                  <blockquote style="margin: 0 0 0 40px; border: none;
                    padding: 0px;" class="">
                    <div class=""><a
                        href="https://en.wikipedia.org/wiki/State_of_health"
                        class="" moz-do-not-send="true">https://en.wikipedia.org/wiki/State_of_health</a></div>
                    <div class=""><br class="">
                    </div>
                    <div class=""><b class="">State of health</b> (SoH)
                      is a figure of merit of the condition of
                      a battery (or a cell, or a battery pack), compared
                      to its ideal conditions. The units of SoH are
                      percent points (100% = the battery's conditions
                      match the battery's specifications).<br class="">
                      <br class="">
                      Typically, a battery's SoH will be 100% at the
                      time of manufacture and will decrease over time
                      and use. However, a battery's performance at the
                      time of manufacture may not meet its
                      specifications, in which case its initial SoH will
                      be less than 100%.</div>
                    <div class=""><br class="">
                    </div>
                    <div class="">As SoH does not correspond to a
                      particular physical quality, there is no consensus
                      in the industry on how SoH should be determined.
                      The designer of a battery management system may
                      use any of the following parameters (singly or
                      in combination) to derive an arbitrary value for
                      the SoH.<br class="">
                      <br class="">
                      <div class="">
                        <ul class="MailOutline">
                          <li class="">Internal resistance / impedance /
                            conductance</li>
                          <li class="">Capacity</li>
                          <li class="">Voltage[2]</li>
                          <li class="">Self-discharge</li>
                          <li class="">Ability to accept a charge</li>
                          <li class="">Number of charge–discharge cycles</li>
                        </ul>
                      </div>
                      <div class=""><br class="">
                      </div>
                      In addition, the designer of the battery
                      management system defines an arbitrary weight for
                      each of the parameter's contribution to the SoH
                      value. The definition of how SoH is evaluated can
                      be a trade secret.</div>
                  </blockquote>
                  <div class=""><br class="">
                  </div>
                  <div class="">Kia Soul seems to be closest to the
                    implementation I was thinking of. Find out the
                    difference between SOC LIM MIN and LIM MAX, and use
                    that as an indication of imbalance in the pack. But
                    Nissan Leaf seems to be more like (CAC/160)*100
                    (where 160 is the CAC for a brand new vehicle).</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Or should we just add SOC_MIN and
                    SOC_MAX if these are used in many cars? Or an
                    imbalance percentage?</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Or should we combine the both (so
                    CAC/160*100 gives us percentage capacity loss, and
                    SOCMAX-SOCMIN/SOCMAX*100 gives us imbalance of the
                    pack, then we perhaps multiply the two together to
                    give an overall indication of health)?</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Thoughts?</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Regards, Mark</div>
                  <div class=""><br class="">
                  </div>
                  <!--'"--><br class="">
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  <br class="">
                  <pre class="" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                </blockquote>
                <br class="">
                <pre class="moz-signature" cols="160">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
              </div>
              _______________________________________________<br
                class="">
              OvmsDev mailing list<br class="">
              <a href="mailto:OvmsDev@lists.openvehicles.com" class=""
                moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br
                class="">
              <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
                class="">
            </div>
          </blockquote>
        </div>
        <br class="">
      </div>
      <!--'"--><br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="160">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
  </body>
</html>