Appearance
Reference
The identifiers a box carries
Every box answers with four identifiers. They are read-only.
| Parameter | What it is | Example |
|---|---|---|
ProductId | the finished product — which application this box implements | 010010028 |
HardwareId | the board | 990010012 (CAN/VE)990010053 (CAN Serial/Modbus)990010063 (CAN Serial/Modbus V2) |
SoftwareId | the application program | 990050010 |
SoftwareVersion | the version of that program; 5.x = the two earlier boards, 6.x = Serial/Modbus V2 | 6.6 |
sh
muxen-uds -i can0 -d <address> readconfig --only-name ProductId \
--only-name HardwareId \
--only-name SoftwareVersionProduct, software and version, per board
| Product ID | Application | Software ID | CAN/VE | Serial/Modbus | Serial/Modbus V2 |
|---|---|---|---|---|---|
| 010010002 | VE.Direct | 990050006 | 5.19 | 5.19 | 6.2 |
| 010010019 | Frigomar | 990050009 | — | 5.9 | 6.4 |
| 010010028 | Blue Airco | 990050010 | — | 5.17 | 6.6 |
Versions are those of the source tree at the time of writing; the box itself is always the authority. Only the Serial/Modbus and Serial/Modbus V2 columns are still built.
Released images are named <product id>-<board tag>-<application>-firmware.srec, where the board tag is MODBUS or SERIAL-V2.
How a device is addressed
A MUXEN device is a function (what kind of thing it is) and an instance (which one). The address used by muxen-uds -d is the two packed together:
address = function × 64 + instanceOne box registers more than one device: its own generic I/O, plus one device for each serial channel that carries something. Function 17 is the generic I/O, so the I/O side of a box set to instance 0 is at 17 × 64 = 0x440. The same device can be reached by name:
sh
muxen-uds -i can0 -F 17 -I 0 readconfigInstance numbers run 0…62. 63 and above mean "not addressed", and 255 is the factory default for the generic I/O of every box, and for every channel device that has not been configured yet.
An unaddressed box is not silent: it still answers a UID scan, giving its unique 64-bit identifier and instance 63. That is how the Brain reaches it in order to give it a real instance number.
Function codes used by this line
| Code | Device |
|---|---|
| 5 | battery |
| 6 | converter — charger, inverter, DC/DC |
| 10 | solar regulator |
| 17 | generic I/O — present on every box |
| 21 | air conditioning |
Which of these a given box registers depends on its application and on what is actually answering on each channel.
The generic I/O device, on every box
Function 17. Present whatever the application does.
| Parameter | Default | Meaning |
|---|---|---|
InstanceNum | 255 | the instance number — nothing is published until this is set to 62 or below |
EnGenIo | 0 | 0 — disabled, the I/O is not published1 — enabled, the state of the relay and the analog input is published |
EnAnalogPwr | 1 | shared with other MUXEN device families; the firmware in this line does not act on it. On Serial/Modbus V2 the sensor supply is switched on at startup regardless |
The VE.Direct product adds two more, which let the relay follow a condition on the bus instead of waiting for a command:
| Parameter | Default | Meaning |
|---|---|---|
Relay1Eqn | empty | the condition that drives the relay; empty means the relay only follows commands |
Relay1Latch | 0 | 0 — momentary, the relay follows the condition1 — latched, each time the condition becomes true the relay changes state |
A command sent over the bus overrides the condition until it is released.
What the generic I/O device publishes, when enabled: the relay state and the analog input in millivolts. It publishes on change, and at least once every half second otherwise. It also answers a request frame immediately. It accepts commands to open and close the relay; on the VE.Direct product a command with neither "on" nor "off" set hands the relay back to its condition.
The two dry-contact inputs, the second relay and the second analog input that appear in the frame are always reported as inactive — this line's hardware does not have them.
Diagnostic codes
Faults reported by the equipment are republished as MUXEN diagnostic trouble codes against the device that carries them, roughly once a second, so they surface in the boat's alarm list. A code clears itself when the underlying fault clears. Which codes an application produces is listed in its own reference chapter.
Maintenance routines
Run with muxen-uds, addressed at a device on the box.
| Routine | What it does |
|---|---|
| 1 | restore parameters to their defaults; a flag says whether the instance number is reset too |
| 2 | locate — flash the system LED for two seconds. On the VE.Direct product routine 2 is used for something else: it reports what is currently answering on each of the four channels |
| 4 | allocate the configuration of one channel and, optionally, make it reachable over the bus |
| 5 and 6 | VE.Direct product only — list, and forget, the channel configurations kept in the box's memory |
LED codes
| Rate | Meaning |
|---|---|
| 1 Hz (on 500 ms, off 500 ms) | the application is running normally |
| ≈2.5 Hz for two seconds, then back to 1 Hz | answering a locate request |
| steady on, or steady off, with power present | the application is not running — stuck during startup, or still in the bootloader |
Applications may add their own rates; theirs are listed in their own reference chapter.
Timings
| System LED, normal | changes state every 500 ms |
| Relay and analog input sampled | every 100 ms |
| Generic I/O published | on change, and at least every 500 ms |
| Analog input counts as changed | when it moves by more than 50 mV |
| Diagnostic codes republished | about once a second |
| Firmware transfer, silence allowed between blocks | 5 seconds, then the transfer is abandoned |
Restart after a write with --reboot, or after a firmware transfer | at least 500 ms, so the reply reaches the bus first |
