Appearance
Reference — NMEA 2000 gateway
The equipment families this gateway recognises
A device is recognised from what it announces about itself: its device class, its function within that class, and its manufacturer. Nothing else is configured, and nothing else is matched. The class and function numbers, the manufacturer codes and the BMS-or-shunt question are in Supported devices — NMEA 2000 gateway.
| The equipment announces itself as | Made by | Becomes on the boat | Function |
|---|---|---|---|
| Electrical generation — battery | Victron or MG | a MUXEN battery: voltage, current, temperature, state of charge, cell minimum and maximum, charge and discharge limits, charge request | 5 |
| Electrical generation — AC main (inverter / charger) | Victron | a MUXEN converter: DC voltage and current, charger and inverter state, active AC input, input current limits | 6 |
| Electrical generation — AC output | Victron | nothing of its own: it attaches to the inverter above and supplies its AC voltage and current | — |
| Electrical generation — DC/AC converter | Victron | a MUXEN converter: DC side, AC voltage, frequency, power and current | 6 |
| Electrical generation — battery charger | Victron | a MUXEN solar charger: battery side, panel side, charge state (off, fault, bulk, absorption, float) | 10 |
| Electrical generation — DC generator | Arco Zeus | a MUXEN alternator: voltage, current, engine speed, temperature, working mode, boost | 27 |
| Display | Victron (Cerbo GX) | a MUXEN battery concentrator, and the gateway becomes the charge master for the Victron system | 30 |
| Propulsion — thruster engine | Vetus / Maxwell | a MUXEN bow thruster: state, motor temperature, run time — read-only | 32 |
Everything else on the backbone is ignored: navigation instruments, depth, wind, engines, tanks — and a device announcing itself as a solar panel rather than a charger.
What the gateway writes back
| To | What it sends |
|---|---|
| Victron inverter / charger | off, on, charger-only, inverter-only; input 1 and input 2 current limits |
| Victron MPPT | on, off |
| Arco Zeus alternator | off, on, generator mode, boost; and, continuously, the boat's battery voltage, current, state of charge and computed charge-current target |
| Victron Cerbo GX | the boat's battery voltage, current, state of charge, installed capacity, and the charge and discharge limits |
The alternator and the Cerbo GX only receive this while N2K_EmitTarget = 1, which is the default. The bow thruster profile sends nothing at all.
The MUXEN devices this gateway publishes
| Device | Function | Instance comes from |
|---|---|---|
| Battery | 5 | the NMEA 2000 battery instance ÷ 32 |
| Converter (inverter, charger, DC/AC) | 6 | the equipment's NMEA 2000 device instance, 0…7 |
| Solar charger | 10 | the equipment's NMEA 2000 device instance, 0…7 |
| Alternator | 27 | the alternator's NMEA 2000 DC instance |
| Battery concentrator | 30 | the Cerbo GX's NMEA 2000 device instance |
| Bow thruster | 32 | the thruster's own identifier |
| Generic I/O | 17 | configured by hand (InstanceNum) |
MQTT topics on the Brain follow device/<function>/<instance>/<frame>, so device/10/0/life is the first solar charger and device/10/0/state its panel side. A translated device publishes nothing until it has an instance number below 63.
How instance numbers are settled
At discovery the gateway compares the number the equipment claims with the number stored in its own configuration for that device.
| Situation | What happens |
|---|---|
| The device is new to the gateway | it keeps the NMEA 2000 number and stores it |
| The stored number differs | the stored number wins, and for a Victron converter, MPPT or battery the gateway asks the equipment to change its NMEA 2000 instance to match. For the alternator and the bow thruster it cannot: only the MUXEN side changes |
| Another device already holds that number | for converters and MPPTs the gateway asks the newcomer to take a free instance between 0 and 7; otherwise the device stays inert |
Parameters
Every device carries the four read-only identifiers common to all CanCans. Values below are defaults.
Battery — function 5
| Parameter | Default | Meaning |
|---|---|---|
InstanceNum | 255 | 255 means not addressed |
BindToParc | auto | which battery parc this device belongs to; detected from the first valid voltage if left on auto |
AlertVmin / AlertVminHyst | 240 / 5 | low-voltage threshold and its hysteresis, in 0.1 V |
AlertVmax / AlertVmaxHyst | 285 / 5 | high-voltage threshold and its hysteresis, in 0.1 V |
MinPercent / PercentHyst | 15 / 2 | state-of-charge threshold and hysteresis |
CyclePercent | 100 | state of charge counted as a full cycle |
VChargeMax, VDischMax, IChargeMax, IDischMax | limits used only when the device is a plain shunt; a managed BMS supplies its own |
Converter — function 6 — InstanceNum, BindToParc. Solar charger — function 10
| Parameter | Default | Meaning |
|---|---|---|
InstanceNum, BindToParc | 255, auto | |
RevertControl | 0 | invert the sense of the on/off command |
VFloat, VAbsorption, IMax, AbsorptionTimeLimit | unset | charge parameters |
Alternator — function 27
| Parameter | Default | Meaning |
|---|---|---|
InstanceNum, BindToParc | 255, auto | |
AlternatorModel | 0 | |
WarningTemperature / AlarmTemperature | 100 / 115 | °C |
N2K_EmitTarget | 1 | publish the boat's battery data and charge target to the alternator |
N2K_MaximumChargeCurrent | 500 | |
AltBoostPercent | 80 | how much boost mode raises the alternator limit, in % |
AltCurve, EngineCurve, PropellerCurve | empty | maximum current against engine speed, as (rpm,A);(rpm,A);…. Read once, at discovery |
The current target is the engine curve minus the propeller curve, capped by the alternator curve. An empty curve means no limitation from that term; a curve interpolating to 0 does limit to 0.
Battery concentrator — function 30 — InstanceNum, BindToParc, InstalledCapacity, N2K_EmitTarget (default 1).
Bow thruster — function 32 — InstanceNum, BindToParc, Model, AlarmTemperature (default 100 °C).
Generic I/O — function 17 — the parameters common to every CanCan (Reference), plus Relay1Eqn / Relay1Latch and Relay2Eqn / Relay2Latch here.
Routines
| Routine | Effect |
|---|---|
| 1 | restore defaults — payload bit 0 restores the instance number, any higher bit restores everything else |
| 2 | list the NMEA 2000 devices seen: count, then address + MUXEN function + MUXEN instance for each. Replaces the usual "locate" animation |
| 4 | create a configuration table for a given function and instance, before the equipment has been seen |
| 5 | list the configuration tables held in flash, including devices no longer present |
| 6 | forget one stored configuration table — refused while that device is still active |
Timings
| Battery, battery concentrator published every | 1 s |
| Converter, solar, alternator, bow thruster published every | 500 ms |
| A device is forgotten after | 120 s without a frame |
| Generic I/O published | on change, and at least every 500 ms |
| Alarms and faults published every | 500 ms |
Limits
| Devices tracked on the NMEA 2000 network | 64 |
| Translated devices that can hold a configuration | 32 |
| Multi-frame messages reassembled at once | 8 |
| NMEA 2000 instances usable for converters and MPPTs | 0 – 7 |
| MUXEN instances | 0 – 62 |
Known limitations
- Navigation data is not translated, in either direction.
- The bow thruster profile is read-only, and only the manufacturers listed above are handled.
Versions
| Hardware | Version | Image |
|---|---|---|
| CanCan v1 | 5.24 | 010010004-app_nmea2000-firmware.srec |
| CanCan v2 | 6.5 | 010010004-V2-app_nmea2000-firmware.srec |
Source: workspace/muxen/cancan/app_nmea2000/, overlay boards/arm/<board>/010010004.overlay.
