Documentation of CAN messages
CMM-2CH and CMM-3CH can be controlled via CAN-FD. Each measurement channel has its own microcontroller. The nominal baudrate is 1 MBit/s, the data baudrate is 4 MBit/s. A DBC file is available on the download page.
Structure of CAN-IDs
The CAN IDs are build with the following scheme.
| Bit | Mask | Content | Comment |
|---|---|---|---|
| 28 | 0x10000000 | Direction | 0: PC to uC, 1: uC to PC |
| 27-20 | 0x0FF00000 | Command-ID | 0...255 see section Commands |
| 19-12 | 0x000FF000 | Module-ID | "M" = 0x4D |
| 11-4 | 0x00000FF0 | Board-ID | 0...31 (Can be set via DIP switch on CMM-2CH), 255 = 0xFF = broadcast to all boards |
| 3-0 | 0x0000000F | Channel-ID | 0...2 (Is hardwired on CMM-xCH), 15 = 0xF = broadcast to all channels |
The highest value of board (0xFF) and channel (0xF) is used as broadcast.
For example the ID 0x 0 00 4D 01 F is the command "SetOnOff" (= 0x01) for all channels on board 1.
List of CAN-Commands
Physical values are always transmitted as float (32 Bit / Single Precision / LSB first) and in the base unit (V / A / sec / °C / ... ).
CAN-IDs to set and get register style values
Get-ID and Response-ID are the same, because the already differ in the direction bit 28. The command values in the following table include the direction bit, to make this clear.
| Set-ID | Get-ID | Response-ID | Command | DLC | Data |
|---|---|---|---|---|---|
| - | - | 0x140 | CommandResponse | 2 | StatusCode (U8), Command (U8) |
| 0x001 | 0x041 | 0x141 | OnOff | 1 | OnOff [0/1] (U1) |
| 0x002 | - | - | OnOffSelected | 1 | EnableMask_Board (U8) |
| 0x003 | 0x043 | 0x143 | MinRange | 1 | MinRange (U8) |
| 0x004 | 0x044 | 0x144 | MinMaxAvg | 24 | CurrentMin [A] (float), CurrentAvg [A] (float), CurrentMax [A] (float), |
| VoltageDropMax [V] (float), NoOfSamples (U32), RangeMin (U8), RangeMax (U8) | |||||
| 0x005 | 0x045 | 0x145 | ChannelConfig | 5 | OnOffDefaultValue [0/1] (U1), MeasuredValuesInterval [sec] (float) |
| 0x006 | 0x046 | 0x146 | CanConfig | 3 | TxFrameFormat [Enum] (U8), NominalBaudrate [Enum] (U8), DataBaudrate [Enum] (U8) |
| 0x007 | 0x047 | 0x147 | LegacyConfig | 16 | LocalId (U32), LocalIdIsExt (U1),RemoteId (U32), RemoteIdIsExt (U1) |
| LegacyCyclicId (U32), LegacyCyclicIdIsExt (U1), LegacyCyclicMessageEnable (U1) | |||||
| - | 0x048 | 0x148 | Version | 12 | HardwareType (U8), FirmwareVersion (U16), CompileTimestamp (U32), |
| WarningRegister (U16), HardwareVersion (U8) | |||||
| - | 0x049 | 0x149 | SerialNumber | 12 | SerialNumber (String 12 Bytes) |
| 0x00A | - | - | RestoreDefault | 0 | - |
| 0x00D | 0x04D | 0x14D | DisableCalibration | 1 | DisableCalibration [0/1] (U1) |
Status codes
| Code | Description |
|---|---|
| 0xA0 | Success |
| 0xE0 | Unknown command |
| 0xE1 | Invalid DLC |
| 0xE2 | Parameter out of range |
| 0xE3 | Flash error |
| 0xE4 | Flash verify error |
| 0xE5 | Command not allowed |
| 0xE6 | Firmware hardware mismatch |
| 0xE7 | File not found |
Values in WarningRegister
| Name | Value |
|---|---|
| WARNING_CANRXFIFOFULL | 0x0001 |
| WARNING_CANTXFIFOFULL | 0x0002 |
| WARNING_CANBUSOFF | 0x0004 |
| WARNING_INVALIDCALIBRATION | 0x0008 |
| WARNING_DISABLEDCALIBRATION | 0x0010 |
| WARNING_ISOTPRXFIFOFULL | 0x0020 |
Cyclic CAN-IDs uC -> PC
Physical values are always transmitted as float (32 Bit / Single Precision / LSB first) and in the base unit (V / A / sec / °C / ... ).
| Command-ID | Name | DLC | Data |
|---|---|---|---|
| 0x180 | MeasuredValues | 12 | Current [A] (float), Range (U8), VoltageDrop [V] (float), OnOff [0/1] (U1) |
| 0x18E | ErrorHandler | 48 | ErrorType (U8), FileNumber (U8), LineNumber (U16), more info |