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

相关推荐
KWTXX7 小时前
使用matlab官网的skills调用claude-待完成
开发语言·matlab
彬鸿科技9 小时前
bhSDR Studio/Matlab入门指南(十二):AI神经网络训练(Resnet-SE) 实验界面全解析
人工智能·神经网络·matlab·软件无线电·sdr
rit843249911 小时前
链路预测(Link Prediction)MATLAB 实现
开发语言·matlab
yugi98783811 小时前
MATLAB CNN道路特征提取实现
人工智能·matlab·cnn
yongui4783411 小时前
基于稀疏低秩分解的图像去噪MATLAB实现
开发语言·matlab
gihigo199812 小时前
MATLAB实现光谱特征波长提取
开发语言·matlab
fie888912 小时前
matlab打靶法求解两点边值优化问题
开发语言·算法·matlab
hoiii18713 小时前
基于MATLAB实现Lamb波频散曲线求解
开发语言·matlab
yu859395814 小时前
MATLAB 分支定界法(Branch and Bound)实现
开发语言·matlab
吃好睡好便好16 小时前
矩阵秩的计算
人工智能·学习·线性代数·算法·机器学习·matlab·矩阵