Appearance
Reference
The identifiers a box carries
Every BLOC 8 v2 answers with four identifiers. They are read-only.
| Parameter | What it is | Value |
|---|---|---|
ProductId | the finished product | 010020008 |
HardwareId | the board | 990010072 |
SoftwareId | the application program | 990050032 |
SoftwareVersion | the version of that program | 6.0 |
sh
muxen-uds -i can0 -d <address> readconfig --only-name ProductId \
--only-name SoftwareVersion| Product ID | Product | Software ID | Version |
|---|---|---|---|
| 010020008 | BLOC 8 v2 | 990050032 | 6.0 |
The version is the one in the source tree at the time of writing; the box itself is always the authority.
How a device is addressed
A MUXEN device is a function (what kind of thing it is) and an instance (which one). A BLOC 8 is function 1. The address used by muxen-uds -d is the two packed together:
address = function × 64 + instanceso the bloc set to instance 0 is at 64, instance 10 at 74, and so on. The same device can be reached by name:
sh
muxen-uds -i can0 -F 1 -I 10 readconfig| Instance | Meaning |
|---|---|
0…62 | a real address |
63 | the parking address — "no address of my own", and also the broadcast instance |
255 | the factory value of InstanceNum, meaning the box has never been addressed |
A box whose InstanceNum is 255 parks itself at 63. It runs, it drives the panel, it answers requests addressed to 63 — and it publishes nothing periodic and holds every output off, because several unaddressed blocs would all be answering as 63 at once.
Platform settings
Everything that configures an output — trip levels, delays, modes, dimming, equations, names, the supply window — is in the application manual. These are the ones that belong to the box itself:
| Parameter | Default | Meaning |
|---|---|---|
InstanceNum | 255 | the instance number — nothing is published and no output is released until this is set |
EnAnalogPwr | 1 | power the analog sensor supply0 — disabled1 — enabled |
GenIoMaxSendingPeriod | 5000 | how often the input frame is repeated when nothing changes, in ms0 — publish on change only |
EnCurrentPeriodic | 0 | publish the per-output currents continuously0 — disabled, on request only1 — enabled |
StartupDly | 0 | delay before the box begins driving its outputs, in ms |
What the box publishes
| Identifier | Frame | Carries | When |
|---|---|---|---|
| 1 | life | the eight output states, the four virtual signals, the total current, a rolling counter | every 500 ms, and immediately on any output change |
| 2 | inputs | the six dry-contact inputs and the three analog inputs in mV | on change, otherwise every GenIoMaxSendingPeriod |
| 4 | currents 1 | outputs 1 to 4, in amps | every 500 ms when current publishing is on |
| 5 | currents 2 | outputs 5 to 8, in amps | every 500 ms when current publishing is on |
| 7 | supply voltage | the box's own supply | every second |
| 10 | output levels | the actual level of each of the eight outputs, 0 to 100 % — see below | at startup, then on change, at most every 500 ms |
| 1365 | boot | that the box has just started, and how many times it has restarted itself | at startup, and on request |
| 3840 | UID | the board's unique factory identifier | on request |
Every one of them can also be asked for individually at any time; the box answers even when it is parked at 63.
An "input frame on change" means any of the six dry contacts moving, or an analog input moving by at least 100 mV.
The output-level frame carries one byte per output: the level the output is driven at right now, 0 to 100 %, a ramp in progress included — an output that does not dim reads 0 or 100. 255 means there is no level to give: the output has tripped (short circuit or open load), or the box is parked at 63. A change is sent at once; further changes within the next 500 ms are held back and the latest one goes out when that window ends, so the final level of a ramp is always sent. Nothing repeats it periodically: a listener that starts later asks for it.
What the box accepts
One command frame, addressed to the box, carrying:
| Field | Meaning |
|---|---|
channel 0…7 | the output to act on, with a request to turn it on or off and an optional dimming level of 1 to 100 % |
channel 8 | start or stop the continuous publication of the per-output currents |
A direct command is given 5 seconds of validity, so a momentary output cannot be left held on by a Brain that stops talking.
The box also listens to the Brain's own status frame for the boat's degraded power mode. Each output has a level at which it is shed; the mode lapses 5 seconds after the last frame from the Brain, and everything comes back.
Output states
The value each output reports in the life frame, and the state its cell shows on the panel:
| Code | State |
|---|---|
0 | off |
1 | on |
2 | short circuit — overcurrent, output latched off |
3 | not connected — open load, output latched off |
The panel adds three states of its own that are not circuit states:
| Cell | Meaning |
|---|---|
| board fault | the whole bloc is in safety — supply out of range |
| configuration error | this output's logic could not be read |
| no address | the bloc has no instance number |
The bloc status shown on the panel
A bit field — several can be raised at once.
| Bit | Meaning |
|---|---|
1 | supply above VBatMax |
2 | supply below VBatMin |
4 | at least one output or virtual signal has an unusable equation |
8 | the CAN bus is not working |
Bit 8 is latched: it is set as soon as the bus misbehaves and cleared only by proof that it works again — a frame received, or a frame the box sent and another node acknowledged.
Fault codes
Reported to the Brain and listed on the panel's error screen.
| Code | Meaning |
|---|---|
0x0001 | supply above maximum |
0x0002 | supply below minimum |
0x0n01 | output n: unusable equation |
0x0n02 | output n: overcurrent |
0x0n03 | output n: open load |
n is the output number, 1 to 8 — so output 3's overcurrent is 0x0302. The list is published once a second.
E-paper name zones
Each of the twenty cells and labels the panel prints is an image uploaded from the Brain, 155 × 40 pixels, one bit per pixel. They are sent by a single routine, each carrying the zone it is for; a zone is kept by the panel until it is replaced.
| Zone | What it names |
|---|---|
| 16…23 | outputs 1 to 8 |
| 24 | the bloc itself, in the panel header |
| 25 | the dry-contact input page |
| 26…31 | dry-contact inputs 1 to 6 |
| 32 | the analog input page |
| 33…35 | analog inputs 1 to 3 |
LED codes
| Rate | Meaning |
|---|---|
| 1 Hz (on 500 ms, off 500 ms) | running normally |
| ≈5 Hz (on 100 ms, off 100 ms) | running, supply out of range, every output held off |
| ≈25 Hz (very fast flicker) | the firmware could not confirm itself — power-cycle, the previous version returns |
| steady on | stuck during startup |
| off | not running at all |
Timings
| Control cycle | 50 ms |
| Supply out-of-range decision | about 1 s of agreement either way |
| Life frame | every 500 ms, plus on change |
| Output-level frame | at startup, then on change, at most every 500 ms |
| Supply voltage frame | every 1 s |
| Fault list | every 1 s |
| Input frame | on change, otherwise GenIoMaxSendingPeriod (default 5 s) |
| Current frames | every 500 ms when enabled |
| Panel output states | refreshed continuously |
| Panel status, instance, inputs | one of them every second, in rotation |
| An instance asked for from the panel | acted on within about 4 s |
| Direct command from the bus | valid 5 s |
| Degraded power mode | lapses 5 s after the Brain stops sending |
| Switch-on fault check | sampled 10 ms after switch-on, retried after a 20 ms off pulse |
| Dry-contact debounce | 10 consecutive readings |
Routines
| Routine | What it does |
|---|---|
1 | restore parameters to their defaults — see Common mistakes |
2 | identify: the panel flashes all eight cells three times, outputs untouched |
16 | upload one e-paper name image |
