车载测试系列:CAN协议之远程帧

2024-06-23 21:04

本文主要是介绍车载测试系列:CAN协议之远程帧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

远程帧(也叫遥控帧):是接收单元向发送单元请求发送具有标识符的数据所用的帧,由 6 个段组成,没有数据段。 当某个节点需要数据时,可以发送远程帧请求另一节点发送相应数据帧。

简单的说:发起方发起特定ID的远程帧,并且只发送ID部分,与其ID相符的终端设备就有义务在后半段的数据部分接管总线控制权并发送自己的数据。

打个比方,中控机需要定时获取某个节点的数据(例如转速计的实时转速、油量计的实时油量等),可以向总线发送远程帧;相应节点在接收判断帧ID与自己相符、并且是远程帧的情况下,就可以将自己的实时数据发送到总线上;这样中控机就获取到了相关节点的实时数据。

远程帧最大的好处就是只需要一帧的时间就能完成一次双向交互。

  • 帧起始(SOF):表示帧开始的段;
  • 仲裁段:表示该帧优先级的段。可请求具有相同 ID 的数据帧;
  • 控制段:表示数据的字节数及保留位的段;
  • CRC段:检查帧的传输错误的段;
  • ACK段:表示确认正常接收的段;
  • 帧结束:表示遥控帧结束的段。

数据帧与远程帧的区别:

  • 远程帧没有数据帧的数据段;
  • 远程帧RTR位是隐性,RTR位的极性表示了所发送的帧是数据帧(RTR位“显性”)还是远程帧(RTR位“隐性”)。没有数据段的数据帧和远程帧可通过 RTR 位区别开来。

总结一:CAN总线数据/远程帧标准帧格式

图3

帧间隔:当总线空闲时,总线为隐形电平(1)。

帧起始:CAN节点向总线发送1bit显性电平(0),标志帧起始位

仲裁域:仲裁域包含两部分,11bit的ID指示帧发送节点身份标识,1bit RTR(Remote Transmission Request)指示该帧为数据帧(显性电平)还是远程帧(隐性电平)。该域之所以称之为仲裁域,是因为其除了承载上述信息外,还被应用于CAN总线独特的非破坏性仲裁机制。

其仲裁原理为,当多个CAN节点向总线同时发送CAN数据/远程帧时,当发送至仲裁域时,对于ID数值大的节点就会检测到总线上的电平与其发送的电平不匹配于是其终止发送,直到剩下ID数值最小的帧,继续发送。

CAN总线为线与逻辑,有一个节点发送0则总线为0,所有节点发送1才为1,因此ID在逐位发送时(高位先传)必然是数字小的ID可以始终保持和总线电平一致,最终能获取总线控制权。仲裁失败的节点在总线空闲时,自动重发帧。

控制域:控制域总共6bit,高2bit为保留位(显性电平),低4bit DLC(Data Length Code)指示数据域长度,可以是0~8字节。对于远程帧DLC域无意义。

数据域:0~8字节数据Payload,数据长度由DLC决定。远程帧该域长度为0。

CRC域:包含15bit CRC,1bit CRC定界符(隐性电平)。CRC保护范围从帧起始符开始至数据域结束。

ACK域:2bit长度,包含ACK Slot和ACK定界符。对于发送方,该两bit均为隐性电平,接收方如果正确接收则将ACK Slot位置为显性电平。

帧结束:ACK域结束后发送7bit隐性电平,标识本次帧发送完毕。

数据帧用于发送节点向接收节点发送数据,远程帧为接收节点主动向总线发起发送数据请求。

总结二、CAN数据/远程帧扩展帧格式

图4

数据帧和远程帧格式有标准帧格式和扩展帧格式的区别,扩展帧格式如图4所示。扩展帧和标准帧的差异在仲裁域的不同,扩展帧通过拓宽仲裁域达到拓宽ID位宽(11bità19bit)。

为了扩展帧和标准帧兼容,增加了SRR(隐性电平)和IDE(隐性电平)域,这样对于CAN节点来说区分扩展帧和标准帧仅需要检查从帧起始开始第12bit(SRR/RTR),第13bit(IDE/R1)的电平即可。{bit12,bit13}=2’bx0则为标准帧,{bit12,bit13}=2’b11则为扩展帧。

数据/远程帧在发送至总线时会进行位填充编码。当节点检测到发送数据中包含5个连续隐性或者显性电平时会增加一位反型数据。CAN节点只会对数据/远程帧从帧起始到CRC域(不包含CRC定界符)数据进行位填充编码。

  总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​​

​​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

这篇关于车载测试系列:CAN协议之远程帧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088265

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11