使用NI-VCOM工具包为CAN应用添加自定义的Checksum

更新 Mar 24, 2023

环境

软件

  • Vehicle Communication Toolkit

驱动

  • NI-XNET

与VeriStand XNET实现自定义Checksum相比,Vehicle Communication Toolkit的优势在于它可以在单个报文上添加Checksum,而不是整个CAN通道。此外,NI-VCOM定义了许多常用的Checksum算法,用户只需在RBS Descriptor应用程序中选择一种即可。如果用户的算法太特殊,无法在Checksum算法列表中找到,有办法自定义具体的Checksum算法。

1. 参考Using NI Linux Real-Time Cross Compile Toolchain with Visual Studio Code配置编译工具链;
2. 准备包含自定义Checksum算法的C代码文件“ NIXNETCustomInterfaceCAN.cpp ”。以下是Checksum算法的示例。Checksum信号为byte7,Checksum算法为checksum = U8 (byte0 +byte1 +byte2 +byte3 +byte4 +byte5 +byte6)
捕获--.JPG
在if条件中,“ nxFrame->Identifier == 0x128 ”表示只有报文0x128才会进行Checksum运算。 “ nxFrame->Payload [7] != 2 ”表示如果Checksum信号的值等于2,则定义的算法将不起作用。这是一种插入Checksum故障的方法。如果没有“ nxFrame->Identifier == 0x128 ”的条件,自定义的Checksum算法将添加到所有发送报文中。
捕获-1.JPG
如果您不想为报文插入Checksum故障,则可以删除“ nxFrame->Payload [7] != 2 ”的条件;
3. 将NIXNETCustomInterfaceCAN.cpp编译为libNIXNETCustomInterfaceCAN.so文件,并且没有任何错误;
捕获-4.JPG
so文件可以在文件夹“ ......\build\bin\ ”中找到
捕获-2.JPG
4. 使用 WebDAV 将文件传输到实时目标将.so文件复制到您的实时目标,例如“ /c/ni-rt/NIVeriStand/Custom Devices/PROVEtechRBS/NIXNETCustomInterfaceCAN.so ”并配置RBS Configurator如下图所示。
捕获.JPG