Appearance
Reference — Bell Marine gateway
The MUXEN devices this gateway publishes
| Device | Function | Instance | What it carries |
|---|---|---|---|
| Motor | 7 | configured (InstanceNum), default 0 | one per discovered propulsion controller: state, speed, temperature, DC voltage and current |
| Generic I/O | 17 | configured (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
| Field | Unit | Where it comes from |
|---|---|---|
state | off / regeneration / drive / error | the controller's reported mode; off also means "silent for 1.5 s" |
rpm | rpm, always positive | shaft speed magnitude — direction is not distinguished |
temperature | °C | a temperature reported by the controller |
voltage | V | DC bus voltage |
current | A | DC bus current, sign reversed relative to the controller's convention |
What a motor accepts
Sent as JSON on device/7/<instance>/command.
| Request | Effect on this gateway |
|---|---|
requestRegeneration | closes relay 1 for 5 s; renewed by each further request |
requestOff | opens relay 1 |
requestDrive, requestRegulatorSpeed, requestRegulatorPower, setpoint | accepted 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
| Relay | Closed when |
|---|---|
| 1 — regeneration request | the boat asked for regeneration within the last 5 s; open otherwise |
| 2 — power limitation | the 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.
| Parameter | Type | Default | Meaning |
|---|---|---|---|
InstanceNum | 0…62 | 0 | the 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 |
BindToParc | 1…3, 254, 255 | 254 | which battery bank drives the power-limitation relay. 254 = decide automatically, 255 = standalone (no bank watched, relay 2 stays open) |
NodeId | 0…127 | 35 | the controller's node number on the propulsion bus; overwritten with the real one at discovery |
CmdRemoteTimeOut | ms | 2000 | not used by this firmware — the regeneration hold is fixed at 5 s |
ProductId, HardwareId, SoftwareId, SoftwareVersion | read-only | see 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 voltage | Bank |
|---|---|
| 43.0 – 60.0 V | 1 |
| 10.0 – 16.0 V | 2 |
| 20.0 – 30.0 V | 3 |
| anything else | 255 — 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
| Routine | Payload | Effect |
|---|---|---|
| 1 | 0001 | restore that device's instance number to its default |
| 1 | any bit above bit 0 | restore its other parameters — erases the bank binding |
Timings and thresholds
| Motor state published every | 500 ms |
| A controller is declared off after | 1.5 s of silence |
| Regeneration request held for | 5 s after the last request |
| Generic I/O published every | 500 ms, and on a change of 50 mV or more |
The propulsion side
| Bus | CAN 2, 250 kbit/s, fixed by the firmware |
| Direction | receive only — the gateway never transmits on this bus |
| Filtering | none: the whole bus is read, controllers recognised by the shape of their frame identifiers |
| Frames read | shaft speed and temperature; the drive/regeneration mode; DC bus voltage and current; the sign of life |
| Discovery | the first time a controller reports DC bus voltage and current |
| Controllers handled at once | 15 |
| Motor instance numbers | 0…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, anderroris 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.
CmdRemoteTimeOutis listed but inert.
Versions
| Hardware | Version | Image |
|---|---|---|
| CanCan v1 | 5.2 | 010010003-app_BellMarine-firmware.srec |
| CanCan v2 | not built | — |
Source: workspace/muxen/cancan/app_BellMarine/, product overlay boards/arm/muxen_cancan/010010003.overlay.
