研发日记,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工程,可以到笔者的主页查找和下载。

相关推荐
Aaron15881 天前
RFSOC+VU13P+RK3588的核心优势与应用场景分析
嵌入式硬件·算法·matlab·fpga开发·信息与通信·信号处理·基带工程
代码改善世界1 天前
【MATLAB初阶】矩阵操作(一)
开发语言·matlab·矩阵
yuan199971 天前
使用模糊逻辑算法进行路径规划(MATLAB实现)
开发语言·算法·matlab
B325帅猫-量子前沿技术研究所1 天前
MATLAB函数fft(data,N)输入注意事项
matlab·傅里叶分析·fft·噪声功率谱
飞舞哲1 天前
Coppeliasim基于视觉识别与路径插值的UR机械臂彩色物块自动分拣系统
matlab·视觉检测·coppeliasim·ur·分拣
沅_Yuan1 天前
基于 CNN-SE Attention-ITCN 多模态融合的多输入单输出回归预测模型【MATLAB】
神经网络·matlab·cnn·回归预测·多输入单输出·se attention·itcn
可编程芯片开发1 天前
基于Qlearning强化学习的源荷扰动下交直流微电网负荷频率控制算法matlab仿真
matlab·强化学习·交直流微电网·qlearning·负荷频率控制
DS数模1 天前
2026年Mathorcup数学建模竞赛A题思路解析+代码+论文
开发语言·数学建模·matlab·mathorcup·妈妈杯·2026妈妈杯
yu85939581 天前
光伏发电系统最大功率点跟踪(MPPT)设计与Simulink仿真
matlab
沅_Yuan1 天前
基于ARIMA差分自回归移动平均的时间序列预测模型【MATLAB】
机器学习·matlab·arima·时序预测·自回归·移动平均