I still wanted to give feedback regarding the centralized / decentralized approach. Here it is
My original idea was to build a plug-and-play DC energy system, consisting of one or more charge controllers, batteries and possibly inverter(s). If you start with a simple system with only a battery and a charge controller, I agree that you don’t need CAN communication. But as soon as your system grows and you connect two charge controllers to one battery bank, they have to communicate to align their charging profiles. Otherwise one charge controller could try to maintain the trickle voltage while the other one is in equalization mode. And if you have a lithium ion battery, it makes even more sense to have communication, as the battery management system can then “tell” the charge controllers which voltage it needs for proper charging.
Some commercial charge controllers use RS485 for this type of communication. But RS485 has the disadvantage that it is master/slave only. With CAN you can develop a communication protocol that doesn’t need any master. Every device can communicate with every other device.
In my opinion, CAN is a good compromise regarding cost and reliability. Of course you cannot use any simple single-ended communication like I2C or UART to connect multiple devices over some distance. The next level would be Ethernet, which is way more expensive than CAN.
@greanie: What do you understand as a more efficient, distributed fashion? In my opinion the CAN bus is suitable to do exactly that. You don’t want to spread the system over 1km of course, but you could have your solar panels on the roof, the battery in the ground floor and a smart load (e.g. a water heater to burn excessive solar energy) in the basement.
@solar4572: Can you send me your address via email so that I can send over some PCBs? @greanie You have some PCBs already, correct? BTW: For PCBs where 35 µm copper thickness is enough, I can higly recommend aisler.net.