Long post - apologies but will try and cover a few things - for those who already understand BMS/CAN etc - please skip over most of it.
One of the big advantages of CAN is accurate SOC, and control for the charge/discharge are now handled by the BMS.
An issue with SOC determination using V is a drop when under load which affects it - some inverters are better, some standalone shunts etc also "learn" but the inverter still looks at the V rating. To use an example - your lithium bank might be sitting at 51V idling, and the SOC (varies on all batteries) would be roughly 80% (just an example on a 48V nominal battery) - it's not linear - so 49V might be close to 20% SOC, 50V 50% etc. When you add substantial load (couple of kW) you will experience a drop in V - sometimes 1.5-2V depending on load -this is normal - so the inverter suddenly see's the battery drop from 80% to 20% - and depending on your settings might switch to utility. Remove the load - it recovers back to 51V - this switching causes inaccurate SOC readings, and not very efficient. You would see this on battery SOC graphs as big steps in %. Also means you have to set the V levels as an estimate for cutoff/low - recharge/full etc - all in V (The Sol-Ark has a % estimate that tries to match V - but it's still estimate) - if you use CAN or RS485 (different protocols but the same end result) - you are are measuring accurate V per cell direct from the BMS- regardless of load. So the inverter gets "told" what the correct SOC level is by the BMS. Also makes the programming much easier for levels - you simply choose "low battery = 20%"- or "keep it between 40% and 80% during X time of the day." as an example. The BMS also controls charging/discharging etc - so no need to program the values - keeps it within the recommended parameters of the cells. Using an external shunt, running it through the learning process will of course work, but it's another component, something else to buy, and only does 1 thing - gives you SOC - something which the BMS already does.
There are PHD papers on the web trying to explain the determinations of SOC in Lithium cells - it's complicated math.
With regards to
@Craig's post question "why is it complicated" - it isn't on paper, but can you just buy any DIY BMS, hook up a network cable and it works - absolutely not. There are many details and technicalities around al the different cells, charge curves, all sorts of math around when to start throttling charging, how to calculate SOC etc - and every bms out there and every cell is different. That's part of what you pay extra for when going for a branded battery - they have engineered both hardware and software to match perfectly, and spend many hours making sure THEIR BMS talks to the inverter - probably paid some fee's also for inverter manufacturers to develop code, certify their battery etc. This is why often firmware upgrades add more batteries to the list of supported ones for CAN/RS485.
It is changing though - so BMS companies are trying to make it easier - the trick is to know which ones.
Another issue not mentioned is connecting multiple batteries in parallel. How does CAN then work? In the branded battery world you often have little dip switches to indicate which battery in the stack is "master" and then slaves, as well as ID them say battery 0,1,2,3 - for example a 4x 48V 100A Dyness pack (so 400A @ 48V) - each battery has a BMS that controls it's own cells - your inverter now needs to understand there are 4x packs each with potentially 12-16 Cells, and each to be managed separately. In the DIY space this sometimes worked using RS485 as a protocol and then a small little hub to broadcast all RS485 info - but CAN is much better - no hubs needed. This is important if you want to build out larger banks. Without intelligence you will run into many issues with parallel banks where BMS's now fight each other, require buzzbars etc.
Tried a few brands of BMS with the Sunsynk - none of them with success - and finally (after searching for months) found one that seems to do it all - talks direct with Deye/Sol-Ark/SunSynk/Ohm (all from the same factory - rebranded), have master/slave ports built in to build out larger banks etc. Have ordered and waiting for stock to test it out.
For those that are keen : Seplos is the brand. They have a very active youtube channel, of course they also make and sell their own DIY kits - very impressive stuff - (and priced accordingly!) - but they do sell the BMS on it's own - so for those that are keen to give it a go -
https://www.seplos.com/ Last time I checked they were around $150 for a single 100A 48V BMS (unsure of min order limit) + shipping.
I found another post this forum where the manual was uploaded - so maybe worth a read - but for this use case - they do seem to talk to Sol-Ark fine on CAN.
https://diysolarforum.com/resources/seplos-48v-100a-bms-specification.77/history
The specific BMS I'm referring to is the 100A 48V one in the download link - unsure what other size and configurations they have.
If you prefer something that "just works" and is "plug & play" - then branded batteries is the way to go - does not have to be the most expensive ones, there are very good 2nd life ones out there that already work over CAN with many inverter brands - but yes it will be more expensive than a full DIY - but many of us like to fiddle and make it work over time
Alternatively setup your battery as AGM-V/% - set you levels accordingly and accept 20%-30% less usable capacity (which in the long run will make your cells last longer anyways). Your BMS will still offer protection for low cutoff, overcharge, temperature etc (if those are features of your BMS).