question

ksltd avatar image
ksltd asked

CAN Addresses used by VE.Bus to NMEA2000 Interface

On page 8 of Whitepaper Data Communication With Victron Energy Products the remarks for AC Input Voltage Data explain that the VE.Bus to NMEA2000 Interface uses multiple CAN bus addresses to over load Input vs Output data. As a result, software that wants these values must know both addresses being used by the VE.Bus to NMEA2000 Interface.

This raises the following questions:

  1. How many and what are the CAN Bus Addresses used by the VE.Bus to NMEA2000 Interface when it ships from the factory?
  2. Are all of those addresses Claimed in accordance with the ISO standards for CAN device address management?
  3. Of those CAN addresses, which have the Arbitrary Address Capable bit set in the NAME provided during Claim?
  4. If any have the Arbitrary Address Capable bit set, s it possible to clear that bit in the various NAMEs used to Claim the CAN addresses so that they do not get dynamically reassigned?
  5. Is it possible to change the device address of all CAN addresses used by the VE.Bus to NMEA2000 Interface through use of Maretron N2KAnalyzer? If not, what tools can be used to reassign these addresses?

Thank you for your support.


VE.BusNMEA 2000 - N2K
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

1 Answer
mvader (Victron Energy) avatar image
mvader (Victron Energy) answered ·

Hi ksltd, thank you for your interest.

1) there are two. 0x10 and 0x11 by default; I think. But thats easy to check yourself.

2) yes

3) I would think both; but best is to test

4) clearing that bit will not be possible

5) what do you mean with device address? Perhaps you mean device instance? See here:

https://www.victronenergy.com/live/ve.can:changing_nmea2000_instances


I think the solution is to make your software not hardcode the can address. Instead use device or data instances. See our documentation on how to change those.


Best regards, Matthijs

2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mvader (Victron Energy) avatar image mvader (Victron Energy) ♦♦ commented ·

Ps. Consider using ModbusTCP for integration. Its much simpler to use and more powerful.


0 Likes 0 ·
ksltd avatar image ksltd commented ·

ModbusTCP is not an option.

I do mean CAN Device Address, meaning the thing that can be found in the least significant 8 bits of the CAN IDs of messages from the device.

The suggestions you make, as near as I can tell, are not viable. Allow me to explain.

According to Page 8 of the Data Communication Whitepaper, the VE.Bus to NMEA2000 Interface, when connected to a VE.Bus with a Quattro sends PGNs 65013 & 65014 for both Input and Output AC status and these are only differentiated by CAN Address of the sender. Instancing is not possible because these PGNs have no instance fields.

Given this situation, it appears to me that the Quattro's design requires one's software to hard code at least one of the two Interface CAN Addresses in order to disambiguate the two separate uses of the two PGNs.

Worse yet, if the Arbitrary Address Capable bit for those Address' NAMEs is set, then adding a random device to the CAN bus has the potential to have the Interface lose a Claim and dynamically change its address.

I'd be delighted to find out I've misinterpreted the documentation, but it seems fairly clear to me. The intent of the NMEA2000 (inherited from J1939) protocol in this area is that the AC Output should have used PGNs 65003 & 65004.

Given that the use of 65013 and 65024 are overloaded for both input and output, I believe that I actually do need answers to the questions I asked and my strong preference is to not reverse engineer a solution during system integration if at all possible.

0 Likes 0 ·

Related Resources

Additional resources still need to be added for this topic

What is VE.Bus?