A raw CAN frame is just an ID and eight bytes. A DBC file is what turns byte 2, bits 0-7 into "Engine_RPM".
Nothing about a raw CAN frame tells you what it means. 0x3E1 02 5A 00 00 3C 00 00 00 is unambiguous at the wire level — an ID and eight bytes — but meaningless without a definition of which bits carry which signal, how to scale a raw integer into a physical unit, and what the valid range is. A DBC file (from Vector's original ".dbc" CANdb format, now a de facto industry standard even outside Vector's own tools) is that definition, in plain text.
A DBC file is a list of message definitions, each containing one or more signal definitions:
BO_ 993 EngineData: 8 ECU
SG_ Engine_RPM : 16|16@1+ (0.25,0) [0|16383.75] "rpm" Vector__XXX
SG_ Throttle_Pos : 32|8@1+ (0.392157,0) [0|100] "%" Vector__XXX
SG_ Coolant_Temp : 40|8@1+ (1,-40) [-40|215] "degC" Vector__XXX
Take SG_ Engine_RPM : 16|16@1+ (0.25,0) [0|16383.75] "rpm" apart piece by piece:
| Field | Meaning |
|---|---|
16|16 | Starts at bit 16, is 16 bits wide |
@1+ | Byte order: 1 = little-endian (Intel), 0 = big-endian (Motorola); + = unsigned |
(0.25,0) | Scale factor and offset: physical = (raw × 0.25) + 0 |
[0|16383.75] | Valid physical range, for sanity-checking decoded values |
"rpm" | Unit, for display only |
So a raw 16-bit value of 9520 at that bit position decodes to 9520 × 0.25 = 2380 rpm — exactly the value used as the worked example in CAN Bus Fundamentals.
Little-endian (Intel, @1) and big-endian (Motorola, @0) signals lay their bytes out in the opposite order, and the start-bit numbering convention is different between the two as well. Getting this wrong doesn't usually produce an obvious error — it produces a plausible-looking but wrong value, which is far more dangerous than a decode that visibly fails. When reverse-engineering an unknown signal, always sanity-check against a known reference (log the vehicle at idle and confirm RPM reads ~700-900, not a scaled or byte-swapped version of it).
ONAC Network Studio loads a DBC file and applies it to live or recorded traffic in real time, turning the raw frame view into the named-signal table shown in CAN Bus Fundamentals. Building and validating DBC files — including the reverse-engineering work when one doesn't exist yet — is also part of our vehicle network systems consultancy work directly.