研发日记,Matlab/Simulink避坑指南(五)——CAN解包 DLC Bug

文章目录

前言

背景介绍

问题描述

分析排查

解决方案

总结


前言

见《研发日记,Matlab/Simulink避坑指南(一)------Data Store Memory模块执行时序Bug

见《研发日记,Matlab/Simulink避坑指南(二)------非对称数据溢出Bug

见《研发日记,Matlab/Simulink避坑指南(三)------向上取整Bug

见《研发日记,Matlab/Simulink避坑指南(四)------transpose()转置函数Bug

背景介绍

在一个嵌入式软件项目中,需要按照如下通信协议接收一帧CAN消息。思路是直接用Simulink Library中的CAN Unpack模块进行解包,示例如下:

问题描述

按照上述示例,预想应该没有什么问题,但是实际运行起来,两个指令都接收不到。

分析排查

既然指令接收不到,我就往前推一步检查报文是否接收到了。在程序中添加一个调试信号,示例如下:

运行上述程序,看到有报文时,Counter Limited的值在增加,说明前面的CAN Receive模块没有问题。

进一步检查CAN Unpack模块中的每一个参数,发现唯一不一致的地方是Length Bytes(DLC),示例如下:

解决方案

把CAN Unpack模块中的Length Bytes(DLC)改成8,再次运行程序,可以正常接收该报文中的两个指令了。示例如下:

异常问题不再出现,Bug修复完工。

总结

CAN Unpack模块中的Length Bytes(DLC)参数,不只是一个解析参数,同时也是是一个判定条件参数,用改模块接收报文时,除了ID要一致外,DLC也必须一致。


版权声明:原创文章,转载和引用请注明出处和链接,侵权必究!

上述例程使用的Demo工程,可以到笔者的主页查找和下载。

相关推荐
Evand J7 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
matlab代码17 小时前
基于matlab水果识别系统(西红柿、香蕉、梨、青椒)【源码64期】
开发语言·matlab
民乐团扒谱机17 小时前
【微科普】相位调制 (PM) 理论推导、频谱演化与 MATLAB 仿真验证
matlab
我爱C编程1 天前
基于GCC-PHAT与球面散乱数据插值ML估计算法的混合麦克风阵列声源定位方法Matlab仿真
matlab·gcc-phat·球面散乱数据插值·ml估计·麦克风阵列声源定位
菜鸟~noob2332 天前
【电子战】第03篇:CFAR(恒虚警)处理【含matlab代码】
开发语言·matlab
菜鸟~noob2332 天前
【电子战】第02篇:能量检测器 vs. 相关检测器【含matlab代码】
开发语言·matlab
菜鸟~noob2332 天前
【电子战】 第01篇:噪声、门限与虚警/检测概率(PFA/PD)【含matlab代码】
开发语言·matlab
洛阳纸贵3 天前
MATLAB-matlab基础知识
学习·算法·matlab
matlab代码4 天前
基于matlab PCA人脸识别系统【源码63期】
开发语言·matlab
matlab代码4 天前
基于matlab的红绿灯图像检测识别系统【源码60期】
开发语言·matlab