About Extended Frame Format


I have a CAN-IB600/PCIe and i will write a Net application to communicate a device over CAN which uses extended identification. Since i am not familier with CAN communication, the layout of 32 bit arbitration field got me thinking. Layout is RTR(1 Bit) + Extended Identifier (18 bits) + IDE (1 Bit) + SRR (1 bit) + Identifier (11 Bits), total 32 bits.

When constructing a can message with VCI net API, it seems one can explicitly set the value of SRR, RTR and IDE and identifier as shown below. And identifier is uint, so the question is how does the api fills this arbitration field exactly? Does it automaticly shift 1 bit left for RTR and divide identifier (extended and normal) before shifting for SRR and IDE?

Thank you.

        var msg = new CanMessage();
        msg.ExtendedFrameFormat = true;
        msg.FrameType = CanMsgFrameType.Data;
        msg.DataLength = 1;
        msg.RemoteTransmissionRequest = true;
        msg.SelfReceptionRequest = false;
        msg.Identifier = 0x100;


I requested some information on this from my colleagues and they said the following,

"1. You are right, the extended CAN message on the CAN bus has the following structure:
SOF, 11Bit-ID, SRR, IDE, 18-Bit-ID, RTR, DLC, DATA, CRC, ACK, EOF according to the CAN specification.

  1. In the VCI4 C-API and VCI.NET API you can simple use the 29Bit extended identifier in the identifier field.
    msg.Identifier = 0x1FFFFFFF;

  2. Please note, the CAN controller has to be initialized for the Extended format,
    when your application has to send the extended CAN messages

mCanCtl.InitLine( CanOperatingModes.Standard | CanOperatingModes.Extended | CanOperatingModes.ErrFrame, CanBitrate.Cia125KBit);

c:\Users\Public\Documents\HMS\IXXAT VCI 4.0\Samples\dotnet\2018-03-12-CANConNet\CanConNet.cs"


Hi Nick,

Thank you very much for the prompt response. I will try and see what happens.