IRS Systems

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.

BitMaskContentComment
280x10000000Direction0: PC to uC, 1: uC to PC
27-200x0FF00000Command-ID0...255 see section Commands
19-120x000FF000Module-ID"M" = 0x4D
11-40x00000FF0Board-ID0...31 (Can be set via DIP switch on CMM-2CH), 255 = 0xFF = broadcast to all boards
3-00x0000000FChannel-ID0...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-IDGet-IDResponse-IDCommandDLCData
--0x140CommandResponse2StatusCode (U8), Command (U8)
0x0010x0410x141OnOff1OnOff [0/1] (U1)
0x002--OnOffSelected1EnableMask_Board (U8)
0x0030x0430x143MinRange1MinRange (U8)
0x0040x0440x144MinMaxAvg24CurrentMin [A] (float), CurrentAvg [A] (float), CurrentMax [A] (float),
VoltageDropMax [V] (float), NoOfSamples (U32), RangeMin (U8), RangeMax (U8)
0x0050x0450x145ChannelConfig5OnOffDefaultValue [0/1] (U1), MeasuredValuesInterval [sec] (float)
0x0060x0460x146CanConfig3TxFrameFormat [Enum] (U8), NominalBaudrate [Enum] (U8), DataBaudrate [Enum] (U8)
0x0070x0470x147LegacyConfig16LocalId (U32), LocalIdIsExt (U1),RemoteId (U32), RemoteIdIsExt (U1)
LegacyCyclicId (U32), LegacyCyclicIdIsExt (U1), LegacyCyclicMessageEnable (U1)
-0x0480x148Version12HardwareType (U8), FirmwareVersion (U16), CompileTimestamp (U32),
WarningRegister (U16), HardwareVersion (U8)
-0x0490x149SerialNumber12SerialNumber (String 12 Bytes)
0x00A--RestoreDefault0-
0x00D0x04D0x14DDisableCalibration1DisableCalibration [0/1] (U1)

Status codes

CodeDescription
0xA0Success
0xE0Unknown command
0xE1Invalid DLC
0xE2Parameter out of range
0xE3Flash error
0xE4Flash verify error
0xE5Command not allowed
0xE6Firmware hardware mismatch
0xE7File not found

Values in WarningRegister

NameValue
WARNING_CANRXFIFOFULL0x0001
WARNING_CANTXFIFOFULL0x0002
WARNING_CANBUSOFF0x0004
WARNING_INVALIDCALIBRATION0x0008
WARNING_DISABLEDCALIBRATION0x0010
WARNING_ISOTPRXFIFOFULL0x0020

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-IDNameDLCData
0x180MeasuredValues12Current [A] (float), Range (U8), VoltageDrop [V] (float), OnOff [0/1] (U1)
0x18EErrorHandler48ErrorType (U8), FileNumber (U8), LineNumber (U16), more info