CAN周期波动优化方法

news2024/10/6 22:34:11

摘要:

如果遇到报文周期偏大的问题该从何下手,或者说有哪些解决办法呢?

对于车载控制器来说,CAN周期的波动通常是有严格的标准,国标要求如下,基于国标,各个主机厂在这一块稍微有些差异,不过大部分要求是不超过10%,比如10ms的报文,周期波动范围是9~11ms。

▲图1 GBT 34658-2017中要求

那如果遇到报文周期偏大的问题该从何下手,或者说有哪些解决办法呢?

首先来梳理一下CAN报文的发送流程,CAN通信协议栈的整体架构如下图所示,包括应用层,交互层,网络层,数据链路层,物理层。

▲图2 CAN通信从应用层到硬件的流程(来源CSDN)

从各层的交互接口来看,报文接收polling接收方式的流程如下图所示。

Can_MainFunction_Read函数周期调用访问CanController(硬件)的寄存器,并读取这些寄存器的数据;数据读取结束后,继续调用CAN Interface模块的CanIf_RxIndication函数,将数据传给CanIf模块;CanIf再调用PduR模块的PduR_RxIndication函数,将数据传到PduR模块;PduR模块路由到COM模块,调用Com_RxIndication函数,将数据传到COM模块,COM模块将会把数据存入其缓存,供应用层软件读取使用。

如果是CAN报文的接收采用的是中断方式,数据则是在中断中接收,并调用 CanIf_RxIndication将数据向上传递。

▲图3 CAN报文接收流程

报文发送流程如下图所示。通过Com_ManfunctionTx将数据一层一层传递到CAN模块,并且通过Polling或者中断的形式将数据发送出去。

▲图4 CAN报文发送流程

上述基本梳理了一下CAN报文收发的流程,那下面就来分析一下总线报文周期波动过大问题的可能问题点。

第一种可能是同一节点发送报文很多,并且大部分报文周期都相同,这就导致同一时刻,大量报文需要发送,导致报文发送阻塞。如果是这种情况的话,可以在Com层对报文的发送增加offset,offset一般是Com周期的倍速,这里可以适当地调低Com Mainfunction的周期。

第二种可能就是需要检查Canif和CAN是否大量报文发送仅使用一个发送缓冲区,并且采用FIFO的方式进出,这样就会出现报文周期波动,其影响的原因是,假如大CANID的报文在前,小CANID的报文在后,大ID由于总线仲裁,无法发送,会导致小CANID的无法发送,从现象来看就是报文优先就翻转。

▲图4 内部优先级翻转

这里还可以从总线log来分析,查看小CANID周期间隔点,发送的报文是哪些,如果那会儿大ID在发,那就有可能是这种原因。

第三种有可能系统负载的原因,比如系统负载过高,导致Com_MainFuncionTx的调度发生波动,导致总线上报文周期波动,或者是以中断的模式发送,中断优先级过低,导致被其他高优先级的中断打断,导致报文无法发送,这里可以通过打时间戳的形式来确认,在任务中打时间搓或者是在idle 任务中打来实锤。

如果是这种,从问题角度来看,就是降负载,或者调高任务或者中断的优先级。更深层次来看,就是系统设计有问题,导致基本的报文发送波动,需要从系统层面优化。

来源 | 汽车ECU开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

遇到系统无法访问此文件问题怎么办?

昨天我整理了一下自己喜欢的照片,然后将其分门别类地归纳起来,然后将其复制到了另一个硬盘做了一下简单的备份。后面又想到了之前在某篇文章中貌似提到过什么异地备份的说法,一想到自己的OneDrive中还有点空间,所以就想把它们存到…

记一次docker迁移目录后oracle11g启动报错问题

迁移docker目录后启动oracle报错: 容器启动失败,无法查看日志,分析是文件目录权限问题,迁移后的目录是/home/docker,因此执行chmod -R 777 /home/docker ,给迁移后目录全局权限。 然后启动容器,发现可以启…

基层管理岗和技术岗如何抉择?

基层管理岗和技术岗如何抉择? 体制内,现为技术研发岗,33岁,本想沿着现在的技术序列走,到时间再申请专家,但近期发现专家没有调配资源的能力,没有办法组建团队。现纠结是否争取管理路线。 技术…

【AIGC】ChatGPT联动脑机接口实验,用脑电波回邮件

国外某公司发现,ChatGPT已经可以用于脑机接口实验了。不过也有眼尖的网友点出:这个过程是不是提前预设好回复邮件的prompt,非常重要。 ChatGPT,已经可以用于脑机接口实验了! 近日,Araya公司的一个团队&am…

代码随想录-链表

基础知识 链表是一种通过指针串联在一起的线性结构。在内存中不是连续分布的,分配机制取决于操作系统内存管理。 类型 三种类型:单链表、双链表、循环链表 单链表:每个节点由两部分组成,数据域和指针域(存放指向下…

注解与反射

1、注解(Annotation) 1.1、何为注解? 注解(Annotation)是从JDK5.0开始引入的技术,以注解名在代码中存在,例如: Override:限定重写父类方法,该注解只能用于方…

Word控件Spire.Doc 【文本框】教程(5): 插入、读取和删除表格

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

提问超时~Zabbix Meetup成都站棒在哪里?

图片 2023年5月13日,迎着初夏灿烂的阳光,Zabbix Meetup首次在成都举办。本次活动吸引了来自Zabbix社区用户、合作伙伴等约50余位伙伴热情参与,倾听来自原厂培训师、社区资深用户们关于Zabbix的精彩内容分享。还有定制周边礼品和晚宴深入交流…

防火墙之iptables

防火墙之iptables 一.iptables概述 Linux 系统的防火墙 :IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。二.netfilter/iptables 关系…

《终身成长》笔记二——失败挫折的意义

目录 经典摘录 思维模式改变了失败的意义/如何看待失败与成功 思维模式与抑郁症 努力后还是失败的事实会让自己找不到借口,是固定型思维模式者们最大的恐惧 问与答 经典摘录 思维模式改变了失败的意义/如何看待失败与成功 《纽约时报》上的一篇文章指出的&…

学生档案管理系统(SpringBoot,SSM,Maven,H-UI,Mysql)

【项目功能介绍】 本系统包含学生,后台管理员二种角色的用户 学生的功能包含: 登录,退出,修改密码,用户信息查看与修改,首页信息展示,轮播图,栏目及栏目文章列表,我的课程,我的课表,我的成绩,意见反馈,我的意见反馈。 后台管理员的功能包含: 登录,退出,修改密码,管理员管理,…

【计算机组成原理】实验一

文章目录 实验一 数据传送实验1. 实验目的2. 实验仪器3. 原理概述4. 实验内容步骤4.1 手动实验环境的建立4.2 手控传送实验 5. 实验结论及问题讨论 实验一 数据传送实验 1. 实验目的 2. 实验仪器 3. 原理概述 4. 实验内容步骤 4.1 手动实验环境的建立 1)初始待令状态 上电或…

监控kafka topic,钉钉报警

1、需求的诞生 前几天公司我们部门需要演示一个应用,应用依赖kafka的数据,但是kafka的数据来自其他部门的投递。 一些原因导致数据无法给到,导致我们部门的演示也很有问题,所以想做一个简单的kafka topic的监控,在没…

内网渗透之权限维持-黄金白银票据隐藏账户远控-RustDeskGotoHTTP

0x01权限维持-隐藏用户 CreateHiddenAccount工具 CreateHiddenAccount -u test -p Psswrd用户管理能查看到,命令查看看不到,单机版无法删除(不在任何组),域环境(在administrator组中)可以删除 0x02权限维持-黄金白银票据 ⻩⾦票据⽣成攻…

捷威信keithley吉时利2410数字源表 销售回收KEITHLEY2470新款源表

吉时利Keithley 2410 /2470高压源表/数字源表 产品概览 Keithley 2410 高压源表专为需要紧密耦合源和测量的测试应用而设计。Keithly 2410 提供精密电压和电流源以及测量功能。它既是高度稳定的直流电源,又是真正的仪器级 5-1/2 数字万用表。电源特性包括低噪声、…

three.js实现拖拽生成模型场景

THREE.js 可以实现很多web 3D的效果&#xff0c;最近想实现一个拖拽生成场景的功能&#xff0c;主要用到拖拽API,draggable 的几个事件来实现&#xff0c;拖拽模型时记录模型属性&#xff0c;释放到画布时生成当前屏幕坐标对应的焦点上&#xff0c;最后生成模型。 <!DOCTYP…

增量更新和原始快照

三色标记法 2.1 基本算法 要找出存活对象&#xff0c;根据可达性分析&#xff0c;从GC Roots开始进行遍历访问&#xff0c;可达的则为存活对象&#xff1a; 最终结果&#xff1a;A/D/E/F/G 可达 我们把遍历对象图过程中遇到的对象&#xff0c;按“是否访问过”这个条件标记成…

【LeeCode】每日一题:复制带随机指针的链表

​&#x1f47b;内容专栏&#xff1a;《LeetCode刷题专栏》 &#x1f428;本文概括&#xff1a; 138.复制带随机指针的链表 &#x1f43c;本文作者&#xff1a;花 碟 &#x1f438;发布时间&#xff1a;2023.5.18 ​复制带随机指针的链表 力扣链接-> 138.复制带随机指针的链…

VS2019新建WebService/Web服务/asmx并通过IIS实现发布和调用

场景 对接第三方系统提供接口文档中显示为asmx接口 访问接口返回数据格式为 xml中的数据格式为json数据。 需要在本地新建并模拟调试环境。 注&#xff1a; 博客&#xff1a;霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主 实现 1、WebService WebService…

LeetCode刷题 --- 链表

定义一个node节点 class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) {this.val val;}ListNode(int val, ListNode next) {this.val val;this.next next;} } 206 反转链表 题目&#xff1a;给你单链表的头节点 head &#xff0c;请你反转链表&#x…