Skip to content

CAN Triple Device Manager 1.1.13 — the transmit Offset is in channel units (device firmware 1.0.4)

Choose a tag to compare

@mitchdetailed mitchdetailed released this 30 Aug 21:33
· 12 commits to main since this release

Two releases' worth since 1.1.11. Ships device firmware 1.0.4, up from 1.0.3.

⚠ Check your transmit rows before flashing

Any transmit row with a non-zero Offset now puts a different number on the wire — unless its Bit Resolution is exactly 1, where the old and new rules give the same answer.

A row tuned against the old behaviour wants its Offset divided by the Bit Resolution to keep sending what it sent. An Offset of 12 at resolution 0.001 was moving the value by 0.012; it now moves it by 12.

The config store is unchanged (v18), so a device keeps its configuration across this update — it's the arithmetic applied to it that moved.

The transmit Offset is in channel units

Reported: a transmit row at resolution 0.001 with Offset 12 moved the value by 0.012, not by 12. That was correct for the rule in place — the offset was a bias applied after the resolution divided, so it counted in raw counts — and it wasn't what the field means anywhere else in the application.

Receive physical = raw × Bit Resolution + Offset (unchanged)
Transmit raw = (physical + Offset) ÷ Bit Resolution

So at resolution 0.1: transmitting 0 with Offset 12 sends 120, and transmitting 5 with Offset −1 sends 40.

The Offset keeps its sign in both directions, which is the point of it — but that also means the two are still deliberately not inverses. Transmitting to another CAN Triple that receives with the same Offset applies it twice; negate it on one of the two rows. The same goes for an ECU decoding the DBC way.

The preview was contradicting itself

Which is why the rule was hard to see. The line above the range printed Physical = raw × factor + offset on both kinds of row — that's the receive mapping — while the range two lines below was computed from the transmit one. The line that matched the expectation was the wrong one.

A transmit row now states its own mapping: raw = (Physical + 12) ÷ 0.001, with a range that agrees with it.

The multiplexor is not a channel (1.1.12)

A multiplexed DBC message imports as a compound section, and each multiplexor value becomes an identifier whose selector is the multiplexor signal's own bits. Importing that signal as a channel row as well put a channel on top of its own selector — and the device writes the selector into the frame after the channels, so the section editor refused to save it, complaining about a row nobody chose to add.

The row is still shown — it's how you see which signal picks the variant — but with no tick box, and the Details column says it becomes the identifier.


Install: download CANTripleDeviceManager-1.1.13-Setup_Windows_x64.exe below and run it. Windows x64; the installer carries the Qt runtime, device firmware 1.0.4 and the ST-Link drivers.