J1939 for Many Battery Nodes

Hello,

I am working on creating a battery system that is for energy storage that will have many redundant packs on ideally a single CAN bus, currently looking at a minimum of 48 but possible 96 packs in one system. This is to give more flexibility to the end user and will give their energy storage system much more redundancy where a single pack failing only slightly reduces the capacity. Additionally the customer is interested in having Pack Voltage, Pack Current, up to 3 temperatures, individual cell voltages up to 16 cells, SOC, SOH, Pack Status Register, and potentially if they opt to put charge controls in the pack, charger voltage, current, and a status register. So if all of those are implemented there would be ~27 data types for each of the 96 nodes.

I have been trying to find if there is any existing protocol that would give me definition on how to set message IDs to best cover that many message types. I know I could go through and define them myself given that extended ID’s cover over 500 million ids but I wanted to see if any existing definitions could cover those parameters and qty of nodes.

I have not had good luck finding what J1939 defines as message IDs for batteries but some of the sources I have looked at appear to show J1939 only defines out of the ones i am looking to send Voltage, Current, Temperature, and SOC. I was looking through this ISOBUS Data Dictionary - PGNAndSPN to find what SPNs and PGNs might exist that apply to batteries. Additionally this appears to only cover up to 4 batteries.

I am looking for confirmation if I should just look to give a custom ID definition to my customer or if there is some information I am missing on J1939 that would allow me to use an existing protocol. Or if you have recommendations for this on other standards, I have also looked at CAN open but that does not use extended IDs from what I have found so I think I would be short the needed number of IDs.

I should also add i am trying to avoid multi message transmissions like sending several messages form the same ID that sequentially give all the necessary data, because i think it might be easier for my customer to parse several ID rather than sequential messages, but maybe I’m wrong there. Additionally my current BMS cannot handle CAN FD which would actually allow the full 27 registers to be sent in one message due to the longer length.

Any feedback you could give would be greatly appreciated.

Thanks!