Header and definition of Namespaces used:
VERSION ""
NS_ :
BU_
BO_
CM_
BO_TX_BU_
Define the CAN Nodes like this:
BU_: $Node1 $Node2
Define a CAN Frame like this:
BO_ $MessageID_decimal $FrameName: $DLC $SenderName
SG_ $SignalName : $SignalPos|$SignalLen@0$Signed ($Mult,$Offset) [$Range_from|$Range_to] "$Unit" $Receivers
One line per signal. Separate Messages via empty newline.
Where
- $DLC is number of bytes for this frame
- $SignalPos and $SignalLen is in bits, $SignalPos counted strangely reversed bitorder LSB(it)->MSB(it) (so "7|64" really means bits 0..63)
- $Signed is + or -
- $Receivers : comma separated list of nodes that will filter that signal
If a frame is by definition mapped to several mutually exclusive nodes (in reality it is a bad idea to have two nodes send the same ID) on a subnet, define it this way:
BO_TX_BU_ $MessageID_decimal : $Node1,$Node2;
Comments for various elements defined before:
CM_ "Bus description";
CM_ BU_ $SenderName "Sender description";
CM_ SG_ $MessageID_decimal $SignalName "Signal description";
That would be a minimal approach, but there is tons more in there to set key-value properties of signals and frames, i´ve got no idea if the format would be valid without it and load in tools that work with it.
Anyway, it is usually not worth the trouble messing with those proprietary formats, just load the raw data into a spreadsheet and go from there.