整车总线系列——FlexRay 七

news2024/11/26 9:35:54

整车总线系列——FlexRay 七

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最后,既没有活成别人喜欢的样子,也没有活成自己想要的样子。
我们只有接纳真实的自己,不自卑、不自傲,才能拥有更强大的内心;只有找到自己的核心价值,才能活出自己的精彩人生。

一、FlexRay动态时隙

动态时隙的设计要求基本上与静态时隙相同。动态时隙的布局与静态时隙的布局类似。每个动态时隙均以动作点偏移开头。该偏移的末端就是动作点,即动态报文传输的起始点。该动作点对应于微时隙的动作点。

动作点偏移之后是动作点以及动态报文。在动态段中,传输的动态报文可能具有不同长度的负载段。动态报文后是通道空闲界定符,该界定符与静态时隙一样,由11个隐性位构成。

根据FlexRay规范,动态报文必须以下一个可能的动作点作为结束。为确保这一点,报文传输通过动态尾部序列延长。理论上说,此序列最长可以为一个微时隙。

为进一步说明混合总线访问方式和相应的数据传输,定义一个由五个FlexRay节点(FlexRay节点A到E)构成的FlexRay簇,如“Demo Cluster”图所示,所有FlexRay节点均通过总线连接。为最大程度地降低故障风险,通信通道设计为冗余。因此,通道A和通道B均可用于传输数据。

用作数据传输基础的通信调度表分为静态段和动态段。这两个段均由五个时隙构成。调度表列出了静态段的静态报文和动态段的动态报文。

通信期间,始终按照通信调度表传输静态段中定义的所有静态报文,只有在发生相应事件时才会传输动态段中定义的动态报文。

您可以通过交互图和动画了解FlexRay簇中的数据通信。交互图详细介绍了动态段中的通信,动画介绍了静态段和动态段中的通信。请阅读相关说明,以便充分利用全部功能。

FlexRay簇中的数据使用统一报文结构(FlexRay报文)传输。FlexRay报文由三个部分构成:帧头、有效负载和帧尾。帧头由40个位构成,其中11 个位表示ID(标识符)。ID标识报文,并与时隙相对应。除0x00外所有ID均可随意使用,0x00表示无效报文。

ID前面是一个保留位以及四个指示位。指示位用于更精确地指示报文。有效负载指示位指示静态报文的有效负载中是否正在传输网络管理向量,或者动态报文的有效负载中是否正在传输报文标识符。

空帧指示位用于指示负载是正常的还是无效的。在发送空帧的情况下,负载属于无效数据,发送方可以将负载段的数据全设为0 。同步帧指示位指示静态段中传输的报文是否为同步帧。启动帧指示符指示静态段中传输的报文是否为启动帧。

标识符之后是有效负载长度。有效负载长度由7个位构成,表示有效负载的大小(以word为单位)。一条报文最多可以传输254个bytes(127个words)。有效负载长度之后是11个位的帧头CRC序列,该序列的计算基于标识符、有效负载长度、同步帧指示符和启动帧指示符,以及FlexRay规范定义的生成多项式。

帧头的最后是周期计数器,由6个位构成,表示报文发送的周期数。周期计数器的范围是0到63。

一条报文最多可以传输254个数据字节(有效负载)。有效负载长度参数表示有效负载的大小(以word为单位)。静态段中传输的所有报文的有效负载长度值均相同。系统设计人员必须在配置阶段定义该值。由于动态报文不会限制固定的有效负载大小,因此对于此类报文,有效负载长度的值可能不同。

在静态段中传输的报文中,通过设置帧头中的有效负载指示位,可以使用负载段的前0到12个字节来传输网络管理向量。网络管理向量可用于在FlexRay簇中实现网络管理。

如果为动态FlexRay报文设置了有效负载指示位,则表示负载段的前两个字节是报文标识符。系统设计人员使用报文标识符可以更精确地指示有效负载。报文标识符可以在接收过滤器中用于实现更精细的区分依据。

在特定情况下,发送方可以把负载中的数据都设为0。如果FlexRay控制器需要按通信调度表发送静态报文,而与该报文对应的缓冲区暂时无法访问,则会发生这种情况。例如,如果主机自身在这个时间访问这个缓冲区,则可能会发生这种情况。由于FlexRay控制器无法访问缓冲区中的数据,因此它会自动将静态报文作为空帧传输。在这种情况下,帧头中的空帧指示符为0。

使用CRC(循环冗余校验)可以保护有效负载。CRC是一种非常强大的错误检测方法。根据帧头、有效负载以及FlexRay规范定义的生成多项式来计算CRC序列,并将其作为帧尾追加到帧头和有效负载之后。

报文的CRC序列对应于帧头和有效负载的倍数。报文的接收方可以可靠地检测任何传输错误。错误可以通过除以生成多项式求余的方式检测到。对于多达248个字节的有效负载,CRC方法可保证汉明距离为6。对于更长的有效负载,汉明距离则为4 ,这会导致错误检测能力降低。

报文的物理传输不是从帧头的第一位开始,而是从传输起始序列(TSS)开始。FlexRay簇使用主动星型拓扑时,可以防止主动星型节点出现无法将报文的第一位从RX分支传输到TX分支的情况。

原因是主动星型节点需要一定的时间才能达到其工作状态。在具有主动星型节点的FlexRay簇中,TSS必须包含3到15个位的低电平。

TSS之后是帧起始序列(FSS)。在FSS之后,可以发送报头。在此应注意,在每个要发送的字节之前都有一个字节起始序列(BSS)。接收器通过BSS产生的跳变沿进行重新同步。报文的结尾由帧结束序列(FES)标记。

在静态时隙和动态时隙中,十一个隐性位(通道空闲定界符)都表明通信介质可用。由于根据FlexRay规范,动态报文必须精确地以下一个可能的动作点结束,因此报文传输通过所谓的动态尾部序列进行扩展。这确保了每个接收方都可以确定动态报文在哪个微时隙终止。

下方有两个图来表示报文的编码。图“Static Message”显示了静态报文,描述了其物理传输所需的编码元素。图“Dynamic Message”同理。

FlexRay簇通信顺畅的前提是所有FlexRay节点有一致的时间认知,因为按时序到达某些时间点时会触发通信系统的所有活动。

在FlexRay簇中,对所有节点而言都必须确保所有通信周期在相同的时间点开始,且长度相等。此外,还必须确保FlexRay节点的所有静态时隙始终是在周期内相同的时间点开始。

实现这些的前提条件就是全局时间共识。由于FlexRay簇基于多主节点架构,因此只能基于FlexRay节点自身的时基以合作方式实现这一全局时间共识。这是一个巨大的挑战,因为在晶振电路中频率偏差和元件本身的精度问题会在相同的标称频率下产生不同的频率和相位。

此外,不断变化的环境条件和老化(假设使用10年,晶振的频率偏差约为250ppm)都会产生频率偏差。通常,我们认为在汽车的整个使用期限内,频率偏差最多为1500ppm。

显然,如果不定期调整本地时基,则无法建立全网时基。FlexRay节点使用一种特殊的算法来校正本地时钟,确保FlexRay簇中的所有本地时钟与全局时钟同步,以达到规定偏差。以下是两种可用方法:相位校正(又称偏移校正)和频率校正(又称速率校正)。

相位校正可确保FlexRay节点的本地时钟具有相同的相位,并且通信周期始终在同一时间开始。如果没有其他校正机制,系统布局必须始终基于本地时钟的最大偏差。

这意味着,如果任意两个本地时钟的最大偏差为3000ppm,并且周期时间为10毫秒,则周期结束时将累积30微秒的漂移,这将显著降低允许的最大数据传输速率。

频率校正可以作为相位校正的补充,以提高时间触发通信系统的带宽效率。相位校正只处理频率偏差的表现,而频率校正则可以针对频率偏差的成因。

但这一点并不容易,因为晶振频率并不能直接修改。为此,可以使用分频器将晶体振荡器的频率转换为FlexRay节点的本地时基。通过修改分频比,可以加快或减慢本地时钟,最终确保所有FlexRay节点的通信周期等长。

尽管在多个通信周期内进行同步所需的同步报文会造成瞬态干扰,但使用频率校正后,几乎所有本地时钟都以同一速度运行,因此本地时钟的偏差处于规定范围内。使用频率校正可使FlexRay簇中的时钟同步极具鲁棒性,以抵抗瞬态干扰,可以在多个通信周期内容忍时钟同步失败。

FlexRay簇中本地时钟的同步基于以下事实:每个FlexRay节点从一开始就知道所有静态报文的发送和接收时间点。这可确保FlexRay簇的所有节点都能够校正相位和频率。经过几个周期的校正,所有FlexRay节点会在同一时间点并以同一速率启动所有通信周期。

在FlexRay簇中,需确保2至15个FlexRay节点是同步节点,这些节点在每个周期内规定的静态时隙中传输同步报文。这些同步报文不是额外的报文,而是设置了同步帧指示符的静态报文。

所有FlexRay节点都会对比已知时间点与同步报文实际到达的时间点,测得与多个同步节点之间的时间偏差。然后,FlexRay节点创建按顺序排列的时间差列表,并使用FTM(fault tolerant midpoint,容错中点)算法根据该列表计算偏移校正值。

FTM算法剔除列表中的极值,确保偏差过大的本地时钟不会导致FlexRay簇中的通信陷入失调状态。如果同步节点数量不超过7个,剔除最小值和最大值即可。如果同步节点超过七个,则还要剔除次大和次小的测定值。

将剩余的测定值求和并取平均值,得到的结果就是相位校正值。计算频率校正值的方法同上,唯一的区别在于FlexRay节点会测量同步报文所在的周期长度。

相位校正和频率校正均基于以Microtick 为最小单位的本地时钟执行。相位校正通过在每个奇数周期末尾处的NIT中添加或删除一定数量的Microtick (与偏移对应)来调整时间。通过这种方式,FlexRay节点可以改变自己下一个周期的开始时间,使自己与其他FlexRay节点一致。

为确保频率校正不会与相位校正一样,FlexRay节点会将频率校正值均分给下一个偶数周期和下一个奇数周期。因此,所有FlexRay节点均可缩短或延长其周期。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者!

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

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

相关文章

swagger对json数据的处理

在实习中遇到了一个不寻常的事情,今天和同事讨论一个小问题,同事使用swagger,想要调用一个接口,这个接口要传递一个json对象,对应java的一个实体类,但是有一个属性同事不想看到它,就用JsonIgnor…

主从复制 [学习笔记] MaterSlave

文章目录 前言MySQL主从复制的实战案例1、环境搭建2、主库配置,进入vim /etc/my.cnf3、重启数据库4、建立同步账号5、锁表设置只读6、设置主库状态7、备份数据库资料8、解锁9、主库备份数据上传到从库10、slave从库设置11、还原数据的备份12、设定从主库同步 前言 …

物流智能搬运机器人|HEGERLS四向穿梭车在复杂生产场景下的智能化作业应用

一般而言,物流有三个基本环节:存取、输送和分拣。在存取环节,常用方式有两种:托盘存取和料箱存取。以前托盘存取应用得多一些,但随着电商、新零售的兴起,B2b、B2C业务快速增长,订单碎片化趋势明…

ripv2小实验

子网划分 192.168.1.0/24: 192.168.1.0/26 192.168.1.64/26 192.168.1.128/26 192.168.1.192/26 192.168.1.0/26划分为 192.168.1.0/26 192.168.1.4/26 192.168.1.8/26 192.168.1.12/26 192.168.1.16/26 192.168.1.20/26 192.168.…

IDEA如何打包springboot成jar包,并运行、停止、重启,本地依赖不能打包怎么办

1、将springboot项目打包成jar 第一步 这里要注意依赖的包的导入&#xff0c;有pom.xml中网络依赖导入&#xff0c;有的包是本地依赖导入&#xff0c;本地依赖的包只需在pom.xml加入一下代码即可&#xff01; <dependency><groupId>jacob</groupId>//名称…

idea设置git 忽略的文件

1、FIle-->setting 打开设置对话框。 2、 找到如图所示的FileType。 3、添加需要忽略的文件&#xff0c;比如idea&#xff0c;classes&#xff0c;添加完后&#xff0c;点击apply、OK 保存。 注&#xff1a;本设置基于idea 2023.1.3版本

【FPGA】串口通信讲解-状态机判断数据值

&#x1f389;欢迎来到FPGA专栏~串口通信讲解 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正&…

【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】

Shader"ShaderToy/ParticleField" {Properties{_iMouse("iMouse", Vector) = (0,0,0,0)}SubSha

怎么把PDF转为word?1分钟解决难题

PDF文件在我们的电脑上应用非常广泛&#xff0c;由于其较高的安全性和兼容性&#xff0c;得到了广泛的认可。然而&#xff0c;对于一些人来说&#xff0c;PDF文件不能直接进行编辑和修改可能是一个问题。因此&#xff0c;通常我们需要将其转换为Word格式&#xff0c;以便在Word…

uniapp 微信小程序 input详解 带小数点的input、可查看密码的输入框input

官网文档地址 1、template <!-- 本示例未包含完整css&#xff0c;获取外链css请参考上文&#xff0c;在hello uni-app项目中查看 --> <template><view><view class"uni-common-mt"><view class"uni-form-item uni-column"&g…

Mysql 主从复制、读写分离

目录 前言 一、主从复制原理 1.1 MySQL的复制类型 1.2 mysql主从复制的工作原理 1.3 MySQL主从复制延迟 1.4 MySQL四种同步方式 1.5 MySQL支持的复制类型 二、 MySQL应用场景 三、主从复制实验 3.1 MySQL主从服务器时间同步 3.1.1 安装ntp、修改配置文件 3.1.2 两台…

如何查看小程序的APPID和AppSecret

小程序APPID可以在手机上打开小程序后&#xff0c;点击右上角三点&#xff1a; 然后点击中间位置的小程序名称&#xff0c;进入小程序介绍页面&#xff1a; 点击“更多资料”后&#xff0c;进入页面就可以看到上方有APPID&#xff1a; 另一种方法&#xff1a; 在微信公众平台登…

安装:【vue】npm install -g @vue/cli出现错误

安装Vue脚手架&#xff0c;cli就是Command Line Interface 命令行接口 工具 进行到npm install -g vue/cli这一步出现错误&#xff0c;操作步骤如下&#xff1a; 1.通过 wins打开开始栏的搜索框&#xff0c;输入cmd&#xff0c;管理员身份运行 2.先下载node.js 不知道有没有…

数据库应用:Mycat+HAProxy+Keepalived实现高可用

目录 一、理论 1.高可用 2.部署高可用 二、实验 1.MycatHAProxyKeepalived实现高可用 三、问题 1.开启HA-Proxy失败 2. VMware 克隆linux 网卡UUID重复问题 3.keepalived状态报错 四、总结 一、理论 1.高可用 &#xff08;1&#xff09;概述 ①Mycat 在实际项目中…

蓝桥杯专题-真题版含答案-【加法变乘法】【三羊献瑞】【交换瓶子】【卡片换位】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

【专题速递】多模态数字人、多模态媒体大模型以及AI与AIGC对音视频的影响

// 随着AIGC内容的兴起&#xff0c;多模态媒体大模型逐渐进入大家的视野&#xff0c;而LLM的发展又让人们对未来音视频工具产生了新的思考。7月29日LiveVideoStackCon2023上海站AIGC与内容生产专场&#xff0c;集齐当下最热门的AIGC话题&#xff0c;与您共享。 AIGC与内容生产…

华为云使用 helm 模板

登录华为云上的 cce 进入对应的集群&#xff0c;选择模板管理 注意&#xff1a;华为云上不能配置 helm 仓库&#xff0c;只提供手动上传模板&#xff0c;模板的后缀为 tgz 下载模板的方式有很多种&#xff0c;这里用 xxl-job 举例 添加 helm 仓库更新仓库下载模板 helm rep…

基于linux下的高并发服务器开发(第二章)- 2.24 信号集及相关函数

1.用户通过键盘 Ctrl C, 产生2号信号SIGINT (信号被创建) 2.信号产生但是没有被处理 &#xff08;未决&#xff09; - 在内核中将所有的没有被处理的信号存储在一个集合中 &#xff08;未决信号集&#xff09; - SIGINT信号状态被存储在第二个标志位上 - 这个…

概率论和随机过程的学习和整理--番外15,如何计算N合1的合成数量问题?

目录 1 目标问题&#xff1a;多阶2合1的合成问题 1.1 原始问题 1.2 合成问题要注意&#xff0c;合成的数量 1.3 合成问题不能用马尔科夫链来解决 2 方案1&#xff1a;用合成公式合成多次能解决吗&#xff1f; --不能&#xff0c;解决不了递归的问题 3 方案2&#xff0c;…

微分流形2:流形上的矢量场和张量场

来了来了&#xff0c;切向量&#xff0c;切空间。流形上的所有的线性泛函的集合&#xff0c;注意是函数的集合。然后取流形上的某点p&#xff0c;它的切向量为&#xff0c;线性泛函到实数的映射。没错&#xff0c;是函数到实数的映射&#xff0c;是不是想到了求导。我们要逐渐熟…