The cRIO 985x Interprets Standard Arbitration IDs as Extended Format when I Use Both Formats. Hardware: Industrial Communications>>CAN>>NI 9853
Problem: If I use an extended CAN arbitration ID (29-bit identifier, ex: 0x20010001) with my program, the cRIO FPGA CAN I/O node receives the correct arbitration ID (ex. 0x20010001). However, if I then use the standard CAN arbitration ID format (11 bit identifier, 0x101) in my program, the cRIO FPGA CAN I/O node receives an incorrect arbitration ID (ex. 0x10101). It appears that the standard ID was interpretted incorrectly by the cRIO module as an extended ID. If I reset the cRIO CAN module, standard arbitration IDs (ex. 0x101) are interpretted properly in the standard format again. Why does this happen? Solution: After an extended CAN arbitration ID is received, the cRIO 985x firmware sets the upper bits of the arbitration ID to indicate extended ID format is being used. This setting does not get reset when standard IDs are received, resulting in improperly interpretted IDs. The cRIO 985x must be reset to to clear this setting and properly receive standard arbitration IDs. Thus, if you try to use both extended and standard mode arbitration IDs, you may have trouble transmitting the standard arbitration ID messages properly. As a workaround you can set the 29th bit to a 1, as shown in the screenshot below. Setting this bit high indicates the extended ID format for a received message. Then, if you know you are receiving an 11-bit message, you need to clear the higher bits (12 through 29) to 0. Performing these actions should insure that your arbitration ID is interpreted properly. See the attached VIs as an example. Related Links: Attachments:
Report Date: 04/11/2007 Last Updated: 02/14/2008 Document ID: 48AAESJL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
