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

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.xdnf.cn/news/148243.html

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

相关文章

Nginx-HTTP和反向代理web服务器

概述 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于20…

汽车总线之---- CAN FD总线

CAN FD 最高可支持8M/s的通信速率,从传统CAN到CAN FD的转换是很容易实施和推广的。 CAN FD报文的帧:标准帧,扩展帧 CAN FD 标准帧结构 CAN FD 报文的标准帧与CAN 报文的标准帧的区别 CAN FD 报文的标准帧与CAN FD报文的扩展帧的区别&…

手机在网状态查询接口如何用Java进行调用?

一、什么是手机在网状态查询接口? 手机在网状态查询接口,又叫运营商在网状态查询,手机号在网状态查询,传入手机号码,查询该手机号的在网状态,返回内容有正常使用、停机、在网但不可用、不在网(…

JS 历史简介

目录 1. JS 历史简介 2. JS 技术特征 1. JS 历史简介 举例:在提交用户的注册信息的时候,为避免注册出现错误后重新填写信息,可以在写完一栏信息后进行校验,并提示是否出现错误,这样会大大提高用户提交的成功率&…

学习记录:js算法(四十二): 寻找两个正序数组的中位数

文章目录 寻找两个正序数组的中位数我的思路网上思路 总结 寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 1: 输入:nums1 [1,3], n…

美食共享圈:Spring Boot校园周边美食平台

第二章 系统分析 2.1 可行性分析 可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对网上校园周边美食探索及分享平台进行详细的分析。 2.1.1技术可行…

解决 TortoiseGitPlink Fatal Error:深入解析

解决 TortoiseGitPlink Fatal Error:深入解析 在 Windows 平台上,开发者使用 Git 和 TortoiseGit 进行版本控制时,有时会遇到 TortoiseGitPlink Fatal Error。该错误通常是在推送/拉取代码时,客户端未能提供正确的 SSH 密钥。 1…

Unreal Engine 5 C++: Asset Batch Duplication插件编写02

目录 准备工作 "Scripting library" 三个最重要的功能(前两个是UEditorUtilityLibrary中的) 自动创建声明: TArray T 的含义 F 的含义 Live Coding (Ctrlalt F11) Live Coding 的工作流程&#xff…

SpringCloud-07 GateWay01 网关技术

Spring Cloud Gateway组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点IP端口信息,从而加强安全保护。Spring Clou…

PHP、Java等其他语言转Go时选择GoFly快速快速开发框架指南

概要 经过一年多的发展GoFly快速开发框架已被一千多家科技企业或开发者用于项目开发,它的简单易学得到其他语言转Go首选框架。且企业版的发展为GoFly社区提供资金,这使得GoFly快速框架得到良好的发展,GoFly技术团队加大投入反哺科技企业和开…

科研绘图系列:R语言ggplot2画热图(heatmap)

文章目录 介绍加载R包导入数据数据预处理画图导出数据系统信息介绍 热图(Heatmap)是一种数据可视化技术,它通过颜色的变化来表示数据的大小或者密度。热图通常用于展示两个变量之间的关系,或者在二维空间上展示数据的分布情况。以下是热图可以表示的一些内容: 数据分布:…

「C++系列」动态内存

【人工智能教程】,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站:【人工智能教程】 文章目录 一、动态内存1. 使用new和delete①分配单个对象②分配对象数组 2. …

python全栈学习记录(十七)logging、json与pickle、time与datatime、random

logging、json与pickle、time与datatime、random 文章目录 logging、json与pickle、time与datatime、random一、logging二.json与pickle三.time与datatime四.random 一、logging logging模块用来记录日志信息。 import logging # 进行基本的日志配置 logging.basicConfig( fi…

图文深入理解SQL语句的执行过程

List item 本文将深入介绍SQL语句的执行过程。 一.在RDBMS(关系型DB)中,看似很简单的一条已写入DB内存的SQL语句执行过程却非常复杂,也就是说,你执行了一条诸如select count(*) where id 001 from table_name的非常简…

[WMCTF2020]Make PHP Great Again 2.01

又是php代码审计,开始吧. 这不用审吧,啊喂. 意思就是我们要利用require_once()函数和传入的file的value去读取flag的内容.,貌似呢require_once()已经被用过一次了,直接读取还不行,看一下下面的知识点. require_once() require…

WebLogic 漏洞复现

1、后台弱⼝令GetShell 默认账号密码:weblogic/Oracle123 weblogic常⽤弱⼝令:https://cirt.net/passwords?criteriaweblogic 这⾥注意, 单个账号错误密码5次之后就会⾃动锁定。 http://47.121.212.195:7001/console 2、登录后台后&#…

恒生科指八连涨,汽车股强势

9月20日电 周五,港股三大股指集体收涨。恒生指数涨1.36%报18258.57点,连续第六个交易日上涨;恒生科技指数涨1.43%报3703.84点,连续第八个交易日上涨,创逾两个月来新高;恒生中国企业指数涨1.21%报6381.5点&a…

项目扩展五:交互式:command-line interface版本的实现

项目扩展五:command-line interface版本的实现 一、CLI交互的设计1.为何要设计这个CLI交互2.具体设计1.启动服务2.选择信道3.选择虚拟机4.正式业务注意:1.消费者与生产者跟信道的关系2.消息处理回调函数的问题3.消息确认的问题 5.其他功能1.打印功能2.查…

STM32精确控制步进电机

目的:学习使用STM32电机驱动器步进电机,进行电机运动精确控制。 测试环境: MCU主控芯片STM32F103RCT6 ;A4988步进电机驱动器模块;微型2相4线步进电机10mm丝杆滑台,金属丝杆安装有滑块。 10mm二相四线微型…

机器学习之非监督学习(二)异常检测(基于高斯概率密度)

机器学习之非监督学习(二)异常检测(基于高斯概率密度) 0. 文章传送1.案例引入2.高斯正态分布3.异常检测算法4.异常检测 vs 监督学习5.算法优化6.代码实现 0. 文章传送 机器学习之监督学习(一)线性回归、多…