当前位置: 首页 > news >正文

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

相关文章:

  • 【Spring Boot 3】【@Scheduled】多线程执行定时任务
  • 【React教程】(2) React之JSX入门与列表渲染、条件渲染详细代码示例
  • 一文彻底搞懂redis数据结构及应用
  • vue3 组合式API获取子组件的属性和方法
  • 【webrtc】m98 : vs2019 直接构建webrtc及moduletest工程 2
  • ARCGIS PRO SDK 数据库属性域设置与获取
  • 华为策略路由+NQA配置
  • iText操作pdf
  • 05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现
  • 改变this指针的三个方法?
  • 如何在 Ubuntu 中安装 Microsoft Edge 浏览器
  • 【Spring连载】使用Spring Data访问Redis(五)----Redis Cache
  • 一篇文带你使用js实现拖拽排序
  • go-zero 统一返回
  • 使用Process.Start()打开文件夹时出现访问被拒绝异常
  • 【知识碎片】第三方登录弹窗效果
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CSS实用技巧干货
  • JavaScript设计模式之工厂模式
  • Lsb图片隐写
  • Mysql数据库的条件查询语句
  • Python中eval与exec的使用及区别
  • Wamp集成环境 添加PHP的新版本
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分类模型——Logistics Regression
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端
  • 前嗅ForeSpider中数据浏览界面介绍
  • 实现菜单下拉伸展折叠效果demo
  • 使用agvtool更改app version/build
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • kubernetes资源对象--ingress
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (搬运以学习)flask 上下文的实现
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (转)http-server应用
  • (转)ORM
  • (转)scrum常见工具列表
  • (转)负载均衡,回话保持,cookie
  • (转)关于pipe()的详细解析
  • (转载)(官方)UE4--图像编程----着色器开发
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ***原理与防范
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .net 7 上传文件踩坑
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 设计一套高性能的弱事件机制