【CAN通讯系列4】CAN通讯如何传递信号?

news2024/11/17 8:50:07

在【CAN通讯系列3】如何学习CAN通讯?中举了一个例子:新能源汽车要实现驱动功能,先需要整车控制器VCU计算目标转速或扭矩请求等信号,再通过CAN通讯传递给电机控制器MCU,就这个例子继续探讨CAN通讯的基础问题。

         

图片

     

1 CAN数据帧的数据段

VCU需要MCU传递(发送)一些信号,假设有:

  • 信号1:目标转速请求信号

  • 信号2:目标转矩请求信号

  • 信号3:目标转速请求有效标志信号

  • ……

  • 信号x:目标转矩请求有效标志信号

VCU是将这些信号一个接一个使用CAN通讯发送给MCU?还是将它们打包或捆绑到一起,再使用CAN通讯发送给MCU?

这个答案较明显,肯定不希望一个接一个形式发送,你想象一下,如果VCU有上百个信号要发送,这样效率太低,实时性也会有问题。选择捆绑到一起,即多个信号绑在一起,面临2个问题:

  • 信号如何绑到一起?比如谁接着谁

  • 信号捆绑有大小限制吗?是一下子能捆10个还是捆100个?

针对这2个问题,在CAN数据帧中,定义一个数据段,用来放信号,如下示意的红圈部分:

图片

该数据段的大小有8个字节,即64位。这是怎样个概念?比如目标转速请求信号通常占用16位,那就意味着数据段最多能放4个这样的信号。

当然并不是每个信号都会占用16位,比如目标转速请求有效标志信号只占用1位,油门踏板深度信号占用8位,油门踏板深度有效标志信号占用2位。这时将如何将这些信号塞进到数据段呢?

图片

首先,按最小单位为位,对该数据段做了规定,如下表所示:

图片

列向表示字节序号,从上往下,第0个字节到第7个字节;

行向表示每个字节的位,从右往左,bit0到bit7。

然后,把上述VCU的信号排入到这个表,如下所示。

图片

可以看到数据段还是可以装入很多信号,但是如果除了表中的这些信号,VCU还有更多的信号需要发送,那又将如何处理呢?

显然,还需要额外的数据段来装剩下的信号,一个数据段不够,那就再用一个数据段,直到够用为止。此时,又一个问题产生了,怎么区别这些数据段呢?

2 CAN数据帧的仲裁段

自然地,当然希望每一个数据段都有一个标识或者记号。因此在CAN数据帧中,定义一个仲裁段,其中就包含ID(标识)信息。就好比如上图数据段对应仲裁段的ID为001,额外添加的一个数据段给它定义ID为002, 以此类推,不难理解,可以根据需要先定义多个ID,然后在对应该ID的数据段去部署信号,如下所示:

图片

3 CAN数据帧的控制段

理论上,我们是可以给数据段装满信号,但是VCU信号如果不够,必然有些ID的数据段装不满,这时为了让接收方MCU更准确地获取信息,在CAN数据帧中,定义一个控制段,其中包含数据段的长度信息(以字节为单位)。比如在控制段定义了长度为6个字节,那么MCU收到这条报文时,能够明确知道有效数据长度是6个字节,后2字节就可以忽略。因此,除了定义仲裁段的报文ID,数据段的信号排列关系,还需要在控制段定义的长度信息,如下示意:

图片

4 小结

本着从实际问题出发,信号如何从一个控制器传递到另一个控制器,本文展现了这么一个自然的思考过程,我想应该对本文的例子(VCU如何通过CAN通讯发送给MCU信号)有了一个初步的认识,当然,其中也引入CAN数据帧定义的相关内容,我想通过理论与实际相结合的方式,更有助于理解CAN标准或协议这些相对抽象的内容,甚至会发现这些标准或协议是如何精妙。

为了深入了解CAN协议,下篇文章将对CAN数据帧的定义做详细的介绍,敬请关注。

图片

source: vector learning

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

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

相关文章

入门 PyQt6 看过来(案例)08~ 页面布局

主题:学习页面布局控件以及布局容器的使用(理论知识) 1 布局控件 PyQt6的布局方式包括绝对布局、水平布局、垂直布局、网格布局和表单布局。 绝对布局:直接设置控件对象在参考坐标中的位置水平布局:对加入的控件对象从…

引用的项目“xxxx/tsconfig.node.json”可能不会禁用发出。

vue3 报错: 引用的项目“xxxx/tsconfig.node.json”可能不会禁用发出。 解决: 进入对应的 json 文件: 修改: "noEmit": false 当 noEmit 设置为 false 时,TypeScript 编译器将根据项目配置生成相应的输出文…

【数据结构初阶】单链表经典算法题十道(详解+图例)—得道飞升(终篇)

hi ! 目录 9、 环形链表 || 10、随机链表的复制 终章 9、 环形链表 || 【图解】 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode *detectCy…

Live800:客户服务中的情感智能,建立深厚客户关系的秘诀

在当今竞争激烈的市场环境中,客户服务已成为企业脱颖而出的关键因素之一。而情感智能,作为客户服务中的重要组成部分,更是建立深厚客户关系、提升客户满意度的秘诀所在。优秀的客户服务不仅关乎问题的解决,更在于情感的交流与共鸣…

物联网云盒多路开关量模拟量转无线MQTT钡铼技术S275

物联网云盒多路开关量模拟量转无线MQTT技术在现代工业自动化和远程监测中扮演着关键角色。钡铼第四代RTU S275作为一款先进的物联网数据监测采集控制短信报警终端,集成了多种先进技术和功能,旨在提升远程数据采集与控制的效率和可靠性。 钡铼第四代RTU …

在Ubuntu 12.10上安装和使用tmux的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 关于 tmux tmux 是一个终端复用工具。它允许您使用多个虚拟终端访问 tmux 终端。 tmux 利用了客户端-服务器模型,这使您可…

unity3d:TabView,UGUI多标签页组件,TreeView树状展开菜单

概述 1.最外层DataForm为空壳编辑数据用。可以有多个DataForm,例如福利DataForm,抽奖DataForm 2.Menu层为左边栏层,每个DataForm可以使用不同样式的MenuForm预制体 3.DataForm中使用ReorderList,可排列配置 4.有定位功能&#xf…

网址导航系统PHP源码分享

1、采用光年全新v5模板开发后台 2、后台内置8款主题色,分别是简约白、炫光绿、渐变紫、活力橙、少女粉、少女紫、科幻蓝、护眼黑 3、可管理无数引导页主题并且主题内可以进行不同的自定义设置,目前内置16套主题 持续增加中… 4、可单独开发各种插件&a…

【OSCP系列】OSCP靶机-LemonSqueezy(原创)

【OSCP系列】OSCP靶机-LemonSqueezy 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、主机发现 二、端口扫描 1、快速扫描 2、全端口扫描 只有一个80端口 3、版本系统探测 80端口http的apache服务&#xff0…

2年社招冲击字节,一天三面斩获offer

在工作满两年的时间选择了求变,带着运气和实力以社招身份重新看今天的互联网环境,从结果看还是复合预期的。 整个面试的流程还挺快的。周中让招聘专员给投递了简历。问什么时候面试,申请了一个周日,直接安排三面。下周周中就开启…

【神经网络】梯度下降的优化方法【数学公式+代码示例】

文章目录 1、简介2、指数加权平均2.1、公式2.2、代码 3、Momentum⭐3.1、公式演变3.2、代码 4、AdaGrad4.1、计算步骤4.2、代码示例 5、RMSProp5.1、公式5.2、代码5.3、小结 6、Adam6.1、公式和步骤解释⭐6.2、代码⭐6.3、优点 7、何为鞍点8、小结 🍃作者介绍&#…

Unity3D 转换微信小游戏指引 05 广告内购

Unity3D 转换微信小游戏指引系列(第五期 完结) 广告 在小程序后台页面找到推广->流量主 开通条件如下: 开通之后,需要接入广告组件。 调用创建广告组件的接口时,需要传入参数 adUnitId,这个是开通流量…

等保测评练习卷20

等级保护初级测评师试题20 姓名: 成绩: 判断题(10110分) 1. 应根据资产的危害程度对资产进行标识管理,根据资产的价值选择相应的管理措施(F)不是危…

十七、操作符详解(2)

1.操作符 &#xff08;1&#xff09;按位取反~ C语言中&#xff0c;0的符号位是0。 例&#xff1a;int a 0; ~a -1 按二进制补码取反&#xff0c;符号位也要取反&#xff0c;打印的是原码。 把一个数的二进制位的第n位变成1&#xff1a;a a | (1<<n-1) 应用场合 把…

猫头虎分享:图文创作者发布文章之前需要预览哪些内容?

&#x1f4dd; 猫头虎分享&#xff1a;作为创作者发布文章之前&#xff0c;需要预览哪些内容&#xff1f; 摘要 在发布一篇文章之前&#xff0c;预览是一个至关重要的步骤。确保文章的结构完整性、内容的连贯性以及读者的阅读体验&#xff0c;都是我们需要关注的重点。本文将…

OSPF动态路由协议实验

首先地址划分 一个骨干网段分成三个&#xff0c;r1&#xff0c;r2&#xff0c;r5三个环回网段 &#xff0c;总共要四个网段 192.168.1.0/24 192.168.1.0/26---骨干网段 192.168.1.0/28 192.168.1.16/28 192.168.1.32/28 备用 192.168.1.64/28 192.168.1.64/26---r1环回 192.1…

2024 Java 高分面试宝典 一站式搞定技术面

前言 每年9月和10月&#xff0c;被业界称为“金九银十”&#xff0c;这是人才市场一年中最活跃的时期。此时&#xff0c;企业为了来年的业务扩展&#xff0c;纷纷加大招聘力度&#xff0c;空缺岗位众多&#xff0c;招聘需求集中。同时&#xff0c;初秋的招聘活动也避开酷暑&am…

物理数据库迁移到云上

物理数据库迁移到云上 物理数据库迁移到云上通常需要以下步骤: 评估和规划 评估物理数据库的需求和约束条件&#xff0c;确定迁移的目标。考虑数据库大小、性能要求、数据复杂性等因素&#xff0c;选择合适的云服务提供商和服务模式。 设置云环境 在云平台上创建适当的虚拟…

特朗普比特币演讲:“梭哈”比特币,“抵制”数字美元!懂王新晋喊单王:比特币冲上月球,永远不要出售比特币!

2024年7月28日&#xff0c;在比特币大会(Bitcoin 2024)上&#xff0c;前总统特朗普发表了一场激情澎湃的演讲&#xff0c;放出了一系列令人振奋的政策诺言&#xff0c;引发了全场加密货币支持者的热烈掌声。特朗普表示&#xff0c;如果再次当选总统&#xff0c;他将采取一系列强…

前端框架 element-plus 发布 2.7.8

更新日志 功能 组件 [级联选择器 (cascader)] 添加持久化属性以提升性能 (#17526 by 0song)[日期选择器 (date-picker)] 类型添加月份参数 (#17342 by Panzer-Jack)[级联选择器 (cascader)] 添加标签效果属性 (#17443 by ntnyq)[加载 (loading)] 补充加载属性 (#17174 by zhixi…