汽车总线之----FlexRay总线

news2024/11/15 11:05:55

Introduction

随着汽车智能化发展,车辆开发的ECU数量不断增加,人们对汽车系统的各个性能方面提出了更高的需求,比如更多的数据交互,更高的传输带宽等。现如今人们广泛接受电子功能来提高驾驶安全性,像ABS防抱死系统,ASR驱动防滑系统,ESP电子稳定系统,但这类辅助驾驶功能涉及汽车主动被动安全领域,对汽车通信系统的可靠性,安全性和实时性提出了非常严格的需求,比如动力总成和底盘系统对数据传输的要求要达到2M/S,而当时传统的CAN总线已满足不了这些需求,而这些需求主要体现在以下四个方面,分别是通信速率(Transmission rate),可扩展性(Extendability),物理层(Physical Layer)及传输可靠性(Transmission reliability),才能适用于汽车主动被动安全功能领域。可扩展性呢体现在车上,增加减少节点时,不影响整车的效果,另外通信的物理连接保持简便并具备鲁棒性,同时通信系统需具备其容错性确定性,通过冗余备份等技术减少或避免出错,基于这些新的需求,因此需要一种具有可组合性的通信系统,其核心属性就是保证具有确定性和容错性的数据通信,不受总线负载的影响。
在这里插入图片描述

我们先看一下通信传输的方式,通信传输可以先结合实际生活的例子来理解,我们可以把每个人理解成是一条报文,报文发送到目标地址,相当于人们到达目的地,那人们出行可以有哪几种选择方式呢,主要像有打车,高铁飞机等,其中我们可以根据控制方式的不同分为两大类,第一类事件触发,比如我想去一个地方,通过打车软件打车,打车行为呢相当于触发事件,优点在于时间自由按需触发,缺点是每个人的打车时间是随机的,可能造成部分时段向早晚高峰时期路况拥堵,人们就无法及时到达目的地址,或想半夜时段或郊区地段,司机不能及时响应,其所花费的时间是不可预测的,第二类时间触发,根据时间表来执行,像飞机的航班表,高铁的时刻表,到点起飞或行驶,优点在于所花费的时间是可预测的,不会因交通拥堵而造成延迟的情况,缺点是不合理的,交通资源分配,像交通工具的早晚班机或特殊时期,比如目前的疫情期间,严格的人员流动限制,从而造成交通资源的浪费,
在这里插入图片描述

了解了两种通信传输的类型之后,包括CSMATDMA访问方式,其中CSMA全称载波监听多路访问方式,基于事件触发,事件出发后,节点尝试往总线上发送报文,比如传统汽车总线CAN就是此类访问方式。TDMA 时分多路访问方式,相当于发送节点的时间都是确定好的,按照时间片为单位划分并周期性发送,比如图中通信时间轴上以时间片段t cycle为单位,逐期发送,一个t cycle可分为四块,每个时间片段里指定一条报文发送,可以理解成高铁的一节车厢,车厢内的座位都是确定好的,每位上车乘客对应自己的座位并前往目的地,FlexRay总线就是基于时间触发的TDMA访问方式。
在这里插入图片描述

在传统CAN总线基础上,为满足更高的需求,因此有宝马,戴姆勒等oem和博士,恩智浦等供应商共同成立了FlexRay联盟,该联盟已在开发出具有确定性和容错性的FlexRay通信标准,于2005年推出FlexRay 2.1版本,随后2009年推出FlexRay为3.0版本,并提交为iso标准,iso 17458,该协议描述了FlexRay及其物理层和相应的一致性测试。
在这里插入图片描述

FlexRay和CAN一样均参考了iso模型,并定义了物理层和数据链路层规范,其中FlexRay的协议规范定义数据链路层,电气物理层规范定义物理层,另外FlexRay不同层对应的物理器件分别为数据链路层对应通信控制器,简称CC,CC主要任务包括组织总线访问错误检测,对收发报文的解码编码操作和同步总线,物理层对应总线驱动器简称BD, BD主要进行信号转换,包括模数数模转换,目前FlexRay规范仅涵盖iso模型的前两层及物理层和数据链路层,高层协议则由oto萨联盟和assum组织制定。
在这里插入图片描述

FlexRay物理层

首先介绍下拓扑结构,FlexRay总线支持多种不同类型的拓扑结构,即不限于任何特定的物理拓扑,先从最简单的拓扑说起,及点对点方式(peer-to-peer),其中FlexRay跟CAN一样,节点1通过两根信号线Bus Plus(BP)和Bus Minus(BM)与节点2连接,两个节点终端分别接了终端电阻阻值范围是80~110欧姆其作用过滤高频信号的干扰,另外任意两个节点之间的线长不得超过24米,其目的是为了保持信号完整性,因为随信号长度增加,会导致信号衰减,失真等信号质量变差的情况,从而影响节点通信,当FlexRay网络中存在四个或以上节点时,拓扑结构可选择被动星型总线型两种拓扑结构中,均在两个相距最远的节点添加终端电阻,并限制节点间的线长不得超过24米
在这里插入图片描述

为避免或减少影响通信情况的出现,FlexRay节点可通过采用主动星型耦合器互联的主动星型拓扑结构,其被动星型节点替换为主动星型节点,该节点与其他ECU节点连接处均添加终端电阻,通过主动星型拓扑结构可提高信号质量以及补偿信号失真,但同时成本价格也会较贵。
在这里插入图片描述

而在实际项目中,FlexRay的拓扑结构不会单独仅应用总线型,被动星型,主动星型的某一种,而是通过以组合的形式使用,即混合拓扑结构应用
在这里插入图片描述

FlexRay的数据转换,其物理信号基于差分信号传输,前面也提到FlexRay节点是通过BP BM进行数据通信,电气物理层规范定义了四种总线电平,分别为总线空闲电平总线空闲低功耗电平Data_1Data_0电平,其中总线空闲和空闲低功耗的差分电平为零,即隐性电平,两者区别在于空闲低功耗的bp bm电平值均为零,Data_0和Data_1总线电平为显性电平,当节点发送数据至总线上时,Data_0转化为物理电平值,bp 1.5v,bm 3.5v,Data_1转换为物理电平值,bp 3.5v,bm 1.5v,当节点采集总线上数据时,同样也是通过bp bm采集总线物理电平,并求取bp减bm的差分电压值,当差分电压值范围大于600毫伏时,转化为Data_1,当差分电压值范围小于负的600毫伏时,转化为Data_0。
在这里插入图片描述

介绍下FlexRay节点的网络组件,包括μC主机CC通信控制器以及BD总线驱动,其中CC服务mc间数据通信包括组织总线访问和收发报文,BD主要任务是进行信号转换及物理电平和逻辑信号间转换,此外BD除了作为CC接口外,还有一个mc主机接口,该接口主要跟io控制信号有关,除了基本结构外,FlexRay还存在扩展结构,即在CC和BD间添加了总线监控器,简称bg,其作用是为了防止故障节点在未分配给他们的实习内,出现未经授权的传输,简单的说就是防止故障节点在错误时间访问总线。
在这里插入图片描述

FlexRay 通信周期

FlexRay以通信周期为一个循环发送指定的数据,其中一个通讯周期中又划分为64cycle,cycle从零开始计数至63,每个cycle中可包含以下四个时间段,静态段动态段符号窗口及网络空闲时段。静态段用于确定性的传输报文,动态段用于传输事件驱动的报文,符号窗口传输特殊符号,网络空闲时段,即NIT段期间不会进行数据通信,需要注意的是,在一个周期中,仅静态段和NIT段是必须的,而动态段符号窗口是可选的。因此通讯周期的组合形式一共有四种,分别为静态段加网络空闲段,静态段加动态段加网络空弦段,静态段加符号窗口加网络空闲段,以及四个时段均包含,
在这里插入图片描述

首先静态段,静态段基于我们前面提到的TDMA 时分多路访问方式,通信提供确定性的数据传输,发送节点被指定分配到特定的静态slot中,发送静态帧在静态段中可划分为若干个等长的静态slot,可平均划分为2~1023个,静态slot的个数长度,分别由全局变量及number of static slots和gd static slot定义,另外静态段中的静态sd从一开始计数sd范围为2~1023之间,一条静态帧分为三部分,帧头有效负载帧位在静态段中,每条静态报文的长度均是固定等长的静态帧,尾部是CID通信空闲界定符,用于表示静态帧的结束,通俗的理解就是,静态段可以想象成一节火车车厢划分为若干个静态slot,静态slot相当于车厢的座位,座位大小都是相同的,并没有区别对待,每个座位分配给不同的乘客,静态报文可以理解成乘客静态段,发送静态报文则为乘客乘坐火车的过程。
在这里插入图片描述

接着动态段,动态段位于静态段之后,用于传输事件驱动报文及动态帧,动态段可分为若干个动态slot,由于动态段基于事件触发,主要用于刷写诊断功能,故长度不一,所以用于存放动态段的动态slot也均不相同,其中每个动态slot最小单位为一个动态mini slot,动态slot可由一到多个mini组成,在动态段中最多可包含2047个动态slot,且最多可划分为7986个mini slot,另外动态mini slot的个数和长度分别由全局变量,the number of mini slot和gd mini slot决定,通俗的理解就是动态段可以想象成火车的货物车厢用于运输货物,但货物的大小不一,动态真相当于货物,动态帧长度越长,所占用的车厢空间就越长,即动态slot越长,要确保放下最大的货物,即动态帧,所以要事先规定好车厢的大小,也就是动态段的长度。
在这里插入图片描述

然后FlexRay帧的符号窗口段和网络空闲段,FlexRay符号窗口的长度是固定的,用于传输符号,而非传输报文,数据符号包括三种类型,分别为冲突避免符号,用于表示第一个通讯周期的开始介质,测试符号用于测试总线监控器,唤醒符号用于唤醒FlexRay,网络通信中期的末尾部分是网络空闲段简称NIT段,用于同步本地时钟,另外NIT段期间不进行数据通信。
在这里插入图片描述

FlexRay 帧结构

FlexRay帧的组成部分,分为帧头,有效负载及帧尾,其中帧头存放FlexRay帧的特定属性信息,一共40位,帧尾存放CRC校验求得的校验结果有效负载Payload最多可支持254个字节的数据内容。首先我们看一下帧头部分,帧头的首位是保留位,默认发送零,第二到第五位是指示位,目的是更加精确的指示报文,根据动态静态报文类型的不同,其含义也随之变化,然后第三位空针指示位用于指示披露的部分是正常的还是无效的,第四位及第五位分别是同步帧指十位和启动针指十位,用于判断该针是否为同步帧。
在这里插入图片描述

启动针标示位后面是Frame ID即表示报文id一共11位Payload Length为七位用于表示有效负载的大小,其范围大小是0~127,简单的通过payload length表示报文长度是不可取的,所以FlexRay规定用word为单位表示有效负载的大小,word为单位,1word等于2Byte,127word等于254Byte。Byte后面紧跟着是11位的Header CRC,即帧头CRC序列,只对帧头的同步帧指示位,启动针指示位,Frame ID, Payload length进行CRC校验,帧头的末尾是Cycle Count即周期计数器,由六个位构成,表示报文发送的周期数,范围大小为0~63。
在这里插入图片描述

一条FlexRay报文Payload的部分最多传输254个数据字节,数据字节命名从Data_0开始,最大数据字节为Data_253,通过设置帧头的有效负载指示位,在静态动态报文中所表现的作用也是不一样的,在静态报文中,通过设置有效负载指示位,可以将披露的部分前12个字节作为传输网络管理向量,the network management vector,网络管理向量可用于在FlexRay 网络中实现网络管理,而动态报文中设置有效负载指示位,表示payload的部分,前两个字节为报文标识符,即message id,其作用是为了更加精确的指示,有效负载可在接收过滤器中用于实现更精细的区分依据。
在这里插入图片描述

最后FlexRay中尾部分是CRC段,一共24位,使用CRC循环冗余校验保护有效负载,校验范围是FlexRay帧头加有效负载区域,CC 即 FlexRay 通信控制器,会根据帧头,有效负载以及FlexRay规定生成的多项式,来计算CRC序列,求得checksum,并在FlexRay报文发送前与接收后将其作为帧尾追加到帧头和有效负载之后。
在这里插入图片描述

FlexRay 总线访问

FlexRay总线访问,包括总线访问机制介绍,来自通信调度表,图示为一个FlexRay总线拓扑结构,FlexRay可支持单双通道,即Channel a和Channel b,其中节点K节点L均连接两路通道,节点M节点N节点连接Channel a单通道,节点O连接Channel b单通道,我们以该拓扑结构为例,介绍FlexRay在不同数据时段,即静态段,动态段的总线访问机制,
在这里插入图片描述

首先介绍FlexRay ,图示将静态段分为三个静态slot,静态slot id为1,2,3,每个静态slot分配给特定的节点。其中 slot1 分配给节点K,slot2分配给节点M,slot3分配给节点L,节点K同时连接Channel a和Channel b,并在静态 slot1 中分配静态帧b,节点M仅连接单通道Channel a,并在静态slot 2中分配静态帧c,节点L同时连接Channel a和Channel b,分别在两路通道分配静态帧a和d。如果想提高FlexRay的容错性,可以让发送节点在同一静态slot内的两路通道发送两条相同的静态帧,如节点K如果想提高FlexRay的传输带宽,可以让发送节点在同静态slot中发送两条不同的静态帧,如节电l通信速率可实现从10M/S增至20M/S以上,为静态段的总线访问方式。
在这里插入图片描述

动态段总线访问方式,其特点是发送节点给予事件驱动发送动态帧,且动态针长度不一。从图示了解到,动态段报文通信较静态段更加灵活,根据事件触发,尝试在总线上发送动态帧,Channel a和Channel b通道相互独立,所以在不同通道的相同slot内可对应不同的发送节点发送动态帧,比如动态slot4 中Channel a节点L发送动态帧n,而Channel b上节点O发送动态帧m。另外存在事件驱动后不能发送动态帧的情况,比如动态帧p,即节点M尝试在动态slot7发送报文,但明显动态段剩余的部分不够容纳该动态帧的长度,所以这条报文不能在该周期内发送,这里就涉及到最迟发送时间的概念。什么是最迟发送时间,它是针对每个发送节点,用于在动态slot内是否允许发送节点发送报文,如果发送节点因事件触发,尝试在动态段发送动态帧时,则需考虑该节点的最迟发送时间,仅当此时动态minislot的id小于或等于支持最迟发送时间点,才允许拥有传输权限。比如说节点M设定它最迟可以在minislot 8 的位置发送,若他尝试在minislot 9的位置发送时,则无法成功,只能等待下一个cycle发送。
在这里插入图片描述

根据上述FlexRay总线访问的特点,一个cycle内通过调度表的形式通信,依据调度表的内容分为静态段,动态段不同的slotslot分配给指定的发送节点,发送节点发送报文帧,严格按照调度表发送数据,但实际情况中,为了更加有效地利用带宽,FlexRay可能在不同的cycle中通过复核调度表发送报文,通过这种复合调度表的方式,将更加有效地利用FlexRay带宽,增加了数据吞吐量,并允许每个时间段传输更多的信号值。例如图示,静态段的静态slot 2分配给发送节点M该节点在Channel a通道中,根据复合调度表在不同的cycle中发送不同的静态帧。另外复合调度表对静态段和动态段的影响作用也是不一样的。
在这里插入图片描述

静态段内,每个cycle的相同slot中可发送同一节点的不同静态帧,如图所示,Channel a中静态段slot2分配给发送节点M发送静态帧,第n至n+2的三个cycle中,分别发送静态帧c,静态帧x,和静态帧y。
在这里插入图片描述

而动态段可实现的复合调度表会有所不同,动态段总线访问方式会更加灵活,每个cycle的相同slot中可分配给不同节点来发送不同的动态帧,动态帧的长度也可以不一样,如图所示,动态slot 7在第n至n+2的三个cycle中分配给发送节点L,发送节点M,以动态帧u,动态帧t,以及动态帧p的顺序发送。
在这里插入图片描述

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

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

相关文章

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【redis-02】深入理解redis中RBD和AOF的持久化

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756 如需转载,请输入:htt…

2025校招内推-招联金融

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递) 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

CentOS Stream 9部署docker,并开启API

1、安装docker (1)安装Docker的依赖项和存储库 sudo dnf install -y dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo (2)安装Docker sudo dnf install -y docke…

0基础学习PyTorch——最小Demo

大纲 环境准备安装依赖 训练和推理训练生成数据加载数据TensorDatasetDataLoader 定义神经网络定义损失函数和优化器训练模型 推理 参考代码 PyTorch以其简洁直观的API、动态计算图和强大的社区支持,在学术界和工业界都享有极高的声誉,成为许多深度学习爱…

yum 集中式安装 LNMP

目录 安装 nginx 安装 mysql 安装 php 配置lnmp 配置 nginx 支持 PHP 解析 安装 nginx 修改yum源 将原本的yum源备份 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 enable…

黎巴嫩BP机爆炸事件启示录:我国应加快供应链安全立法

据报道,当地时间9月17日下午,黎巴嫩首都贝鲁特以及黎巴嫩东南部和东北部多地都发生了BP机爆炸事件。当时的统计数据显示,爆炸造成9人死亡,约2800人受伤。9月18日,死亡人数上升到11人,受伤人数超过4000。 目…

14年数据结构

第一题 解析: 求时间复杂度就是看程序执行了多少次。 假设最外层执行了k次,我们看终止条件是kn,则: 有, 内层是一个j1到jn的循环,显然执行了n次。 总的时间复杂度是内层外层 答案选C。 第二题 解析: 一步一…

车辆行人转向意图状态检测系统源码分享

车辆行人转向意图状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …

【Python】Maya:为人类打造的 Python 日期时间库

不知道少了什么,总感觉没有以前快乐。 在编程中处理日期和时间总是一个挑战,尤其是当涉及到时间和时区的转换时。Maya 是一个由 Kenneth Reitz 开发的 Python 库,旨在简化日期时间的处理,使其对人类开发者更加友好。本文将介绍 M…

如何在jupyter notebook中使用虚拟环境

一:在cmd中打开已经创建好的虚拟环境 二:安装ipykernel conda install ipykernel 三:安装牛逼conda conda install -c conda-forge nb_conda 四:运行jupyter notebook,选择虚拟环境

linux强制关闭再启动后zookeeper无法启动

1、若开启了zkserver就先关闭zkserver 查看zkserver是否启动 sh zkServer.sh status关闭zkServer sh zkServer.sh stop2、更改conf/zoo.cfg 将这里的启动端口改为2183 3、启动zkServer sh zkServer.sh start4、以2183端口启动zkCli zkCli.sh -server 127.0.0.1:2183这样启…

传知代码-基于多尺度动态卷积的图像分类

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 在计算机视觉领域,图像分类是非常重要的任务之一。近年来,深度学习的兴起极大提升了图像分类的精度和效率。本文将介绍一种基于动态卷积网络(Dynamic Convolutional Netw…

机器人机构、制造

简单整理一下,在学习了一些运动学和动力学之类的东西,简单的整合了一些常用的机械结构和图片。 1.电机: 市面上的电机有:直流电机,交流电机,舵机,步进电机,电缸,无刷电…

【无人机设计与控制】 基于matlab的蚁群算法优化无人机uav巡检

摘要 本文使用蚁群算法(ACO)优化无人机(UAV)巡检路径。无人机巡检任务要求高效覆盖特定区域,以最小化能源消耗和时间。本研究提出的算法通过仿生蚁群算法优化巡检路径,在全局搜索和局部搜索中平衡探索与开…

【软件工程】成本效益分析

一、成本分析目的 二、成本估算方法 三、成本效益分析方法 课堂小结 例题 选择题

深度之眼(三十)——pytorch(一)--深入浅出pytorch(附安装流程)

文章目录 一、前言一、pytoch二、六个部分三、如何学习四、学习路径(重要)五、安装pytorch5.1 坑15.2 坑2 一、前言 我看了下目录 第一章和第二章都是本科学的数字图像处理。 也就是这一专栏:数字图像实验。 所以就不准备学习前两章了,直接…

一文详解大语言模型Transformer结构

目录 1. 什么是Transformer 2. Transformer结构 2.1 总体结构 2.2 Encoder层结构 2.3 Decoder层结构 2.4 动态流程图 3. Transformer为什么需要进行Multi-head Attention 4. Transformer相比于RNN/LSTM,有什么优势?为什么? 5. 为什么说Transf…

MySQL --数据类型

文章目录 1.数据类型分类2.数值类型2.1 tinyint类型2.2 bit类型2.3小数类型2.31float2.32decimal 3.字符串类型3.1 char3.2varchar3.3 char和varchar比较 4.日期和时间类型5.enum和set 1.数据类型分类 2.数值类型 2.1 tinyint类型 数值越界测试: create table tt1…

C++ Qt 之 QPushButton 好看的样式效果实践

文章目录 1.前序2.效果演示3.代码如下 1.前序 启发于 edge 更新 web 页面,觉得人家做的体验挺好 决定在Qt实现,方便以后使用 2.效果演示 特性介绍: 默认蓝色鼠标移入 渐变色,鼠标变为小手鼠标移出 恢复蓝色,鼠标恢…