Introduction to NMEA2000 and Integration
NMEA2000 is a CAN-based communication protocol originating in the marine market, similar to the RV-C protocol developed for the RV market. Both protocols are based on the underlying SAE J1939 automotive industry protocol, which defines PGN messages and a 29-bit addressing scheme. Theoretically, these two protocols can coexist on the same CAN backbone network as they use the same 250kbs baud rate. However, industry certification organizations like RVIA and NMEA do not officially allow mixing these two protocols on the same network.
Since Lithionics uses the RV-C protocol for its integrated IonBus communications, adding NMEA2000 messages to the IonBus network would prevent some customers from certifying their systems with NMEA. There is also a small risk of compatibility issues if customer's NMEA devices interfere with IonBus functionality, potentially causing problems with Lithionics BMS functions.
The optimal solution is to add a second CAN interface, physically and electrically isolated from the main IonBus CAN interface. This allows NMEA2000 messages to be handled exclusively on this new CAN interface, enabling it to be connected to the customer's NMEA2000 backbone separately from the Lithionics IonBus network.
An NMEA2000 add-on board has been developed, which can be installed inside the NeverDie V9 External BMS as an optional feature. Once installed, the BMS firmware automatically detects it and begins sending NMEA2000 messages to this CAN interface. The external connector is a standard M12 male 5-pin, commonly used in NMEA2000 systems, and can be connected using standard off-the-shelf NMEA2000 drop cables.
Supported NMEA2000 Messages
Note: NMEA2000 is a closed-source licensed protocol. Therefore, all message details cannot be publicly documented as with the open-source RV-C protocol. Lithionics has purchased an NMEA2000 license and possesses internal documentation for these messages, but only brief descriptions are available for public access.
BMS firmware v9.0.03 implements the following battery-related PGNs. NMEA uses decimal format for PGN numbers, unlike the hexadecimal format used in the RV-C environment.
- 127506 (DC Detailed status)
- 127508 (Battery status)
- 127513 (Battery Config status)
- 126996 (Product information)
Source Address and Instance Management
In any J1939 protocol, each node must have a unique Source Address (SA). Since the default starting address for the RV-C side is 70, the default starting address for the NMEA2000 side has been selected as 80. In large systems with multiple BMSs where the BATID value and CANSA value are incremented, the Source Address for the NMEA interface will automatically increment, shifting the CANSA value by 10. For example, if CANSA is set to 71, then NMEA's SA will be 81.
Some PGNs also reference a battery Instance. In the RV-C protocol, this starts with 1, which is the value of the BATID parameter. In NMEA2000, instances for house batteries are often incremented to higher numbers to avoid potential conflicts. Lithionics chose a default instance of 11, which is incremented by shifting the BATID value by 10.
Victron Integration over NMEA2000
The Victron Cerbo GX system supports Lithionics BMS integration over either RV-C or NMEA2000 protocols. However, only one protocol can be selected as the Cerbo GX has only one VE.Can port.
Both protocols support essential battery data, such as State of Charge (SOC), Voltage, Current, and Temperature, as well as the charge control feature called DVCC. NMEA2000 offers additional benefits over RV-C by supporting extra data fields like Firmware Version, Serial Number, and Discharge Current Limit (DCL). The DCL feature allows an inverter to stop consuming battery power when the battery is low, preventing the BMS from completely disconnecting battery power. This ensures direct DC loads can continue to operate while lower priority AC loads are turned off.
When configuring the Cerbo GX for NMEA2000, select the CAN protocol named 'VE.Can & Lynx Ion BMS'. This profile is based on NMEA2000 with some proprietary Victron messages added.
Victron Cerbo GX Interface Examples
CAN-bus Profile Configuration
Screenshot shows the VE.Can port configuration screen. The CAN-bus profile is set to 'VE.Can & Lynx Ion BMS (250 kbit/s)'. Devices listed include 'NMEA2000-out' with a unique identity number selector set to '1'.
Alarms Screen
Screenshot shows the Alarms screen with the following active alarms: 'Low battery voltage', 'High battery voltage', 'Low SOC', 'Low temperature', 'High temperature', all showing 'Ok'.
Battery Details
Screenshot shows battery monitoring data: Voltage 53.30V, Current 0.0A, Power 0W, State of charge 99%, State of health 100%, Battery temperature 26°C, Consumed AmpHours 9Ah, Time-to-go 24d 15h.
Product Information
Screenshot shows product details: Product ID 0xB039, Firmware version Lithionics Battery v9.0.03, Hardware version 9.0, VRM instance 4, Serial number ND999999048.
DVCC Settings
Screenshot shows DVCC settings: SVS - Shared voltage sense, STS - Shared temperature sense, Temperature sensor 'Lithionics battery on VE.Can', SCS - Shared current sense 'Disabled (External control)', SCS status 'Controlling BMS'.
VE.CAN Devices
Screenshot shows connected VE.CAN devices: 'Cerbo GX [500]' (Device# 0), 'Lithionics [1754706]' (Device# 11), '[532611]' (Device# 1), '[1754696]' (Device# 1).