Skip to content

Reference — Bell Marine gateway ​

The MUXEN devices this gateway publishes ​

DeviceFunctionInstanceWhat it carries
Motor7configured (InstanceNum), default 0one per discovered propulsion controller: state, speed, temperature, DC voltage and current
Generic I/O17configured (InstanceNum)the box's own inputs, and the state of the two relays the propulsion logic drives

MQTT topics on the Brain follow device/<function>/<instance>/<frame>: a motor numbered 1 publishes on device/7/1/life and takes commands on device/7/1/command.

What a motor publishes ​

FieldUnitWhere it comes from
stateoff / regeneration / drive / errorthe controller's reported mode; off also means "silent for 1.5 s"
rpmrpm, always positiveshaft speed magnitude — direction is not distinguished
temperature°Ca temperature reported by the controller
voltageVDC bus voltage
currentADC bus current, sign reversed relative to the controller's convention

What a motor accepts ​

Sent as JSON on device/7/<instance>/command.

RequestEffect on this gateway
requestRegenerationcloses relay 1 for 5 s; renewed by each further request
requestOffopens relay 1
requestDrive, requestRegulatorSpeed, requestRegulatorPower, setpointaccepted and ignored — they release relay 1 and do nothing else

Nothing is ever transmitted on the propulsion bus. Every request this gateway acts on leaves the box as a relay contact.

The two relays ​

RelayClosed when
1 — regeneration requestthe boat asked for regeneration within the last 5 s; open otherwise
2 — power limitationthe bound battery bank is missing, off, overloaded or low — including at power-up, before a healthy bank has been seen

Neither can be commanded from the MUXEN bus. Their state is published with the generic I/O device as feedback.

Parameters — motor (function 7) ​

One set per discovered controller, stored against its node number, so it stays with that controller across restarts.

ParameterTypeDefaultMeaning
InstanceNum0…620the motor's instance on the MUXEN bus. Unlike most MUXEN devices this defaults to a live number, so a new controller publishes immediately at instance 0
BindToParc1…3, 254, 255254which battery bank drives the power-limitation relay. 254 = decide automatically, 255 = standalone (no bank watched, relay 2 stays open)
NodeId0…12735the controller's node number on the propulsion bus; overwritten with the real one at discovery
CmdRemoteTimeOutms2000not used by this firmware — the regeneration hold is fixed at 5 s
ProductId, HardwareId, SoftwareId, SoftwareVersionread-onlysee Reference

Changes take effect at the next restart — write with --reboot.

Automatic bank binding ​

While BindToParc is 254 the gateway picks the bank from the first valid DC bus voltage it reads, writes the result into the parameter and never revisits it:

Measured bus voltageBank
43.0 – 60.0 V1
10.0 – 16.0 V2
20.0 – 30.0 V3
anything else255 — standalone, relay 2 never closes

Parameters — generic I/O (function 17) ​

The common ones — see Reference — except that EnGenIo has no effect here: the inputs and relay states publish as soon as the device has an instance number below 63.

Routines ​

RoutinePayloadEffect
10001restore that device's instance number to its default
1any bit above bit 0restore its other parameters — erases the bank binding

Timings and thresholds ​

Motor state published every500 ms
A controller is declared off after1.5 s of silence
Regeneration request held for5 s after the last request
Generic I/O published every500 ms, and on a change of 50 mV or more

The propulsion side ​

BusCAN 2, 250 kbit/s, fixed by the firmware
Directionreceive only — the gateway never transmits on this bus
Filteringnone: the whole bus is read, controllers recognised by the shape of their frame identifiers
Frames readshaft speed and temperature; the drive/regeneration mode; DC bus voltage and current; the sign of life
Discoverythe first time a controller reports DC bus voltage and current
Controllers handled at once15
Motor instance numbers0…62

Controllers are told apart by the low 6 bits of their node number: two whose node numbers differ by exactly 64 share one configuration slot.

Known limitations ​

  • No fault codes: a controller in fault is published as error, and error is the whole of the fault reporting.
  • Direction of rotation is lost — the published speed is a magnitude.
  • The sequence counter published with the motor state never advances.
  • One of the frame groups received from the controller is read but nothing is taken from it.
  • CmdRemoteTimeOut is listed but inert.

Versions ​

HardwareVersionImage
CanCan v15.2010010003-app_BellMarine-firmware.srec
CanCan v2not built—

Source: workspace/muxen/cancan/app_BellMarine/, product overlay boards/arm/muxen_cancan/010010003.overlay.

Integration of multiplexed solutions
MUXEN and the MUXEN logo are trademarks of MUXEN SAS.