整车总线系列——FlexRay 六

整车总线系列——FlexRay 六

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

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

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

整车总线系列——FlexRay 六_第1张图片

FlexRay簇中的数据通信是周期性的,并且基于调度表。通信周期至少包括两个时间段: 静态段和NIT(the network idle time,网络空闲时间)段。静态段用于确定性地传输报文,NIT段用于同步本地时钟。在NIT段期间不会进行数据通信。

整车总线系列——FlexRay 六_第2张图片

根据需要,可以通过添加动态段和符号窗(Symbol Window)来扩展通信周期。动态段用于传输事件驱动的报文,在整个通信周期中,动态段应位于静态段之后。符号窗用于传输符号:冲突避免符号用于表示第一个通信周期开始。介质测试符号用于测试总线监控器,唤醒符号用于唤醒FlexRay簇。

由于一个周期中仅静态段和NIT段是必需的,因此可以存在四种周期变体。“Communication Cycle”图显示了一个周期,其中包含所有可用的时间段:静态段、动态段、符号窗和NIT。

整车总线系列——FlexRay 六_第3张图片

通信周期由规定数量的 Macrotick 构成,每个时间段中包含一定数量的Macrotick。Macrotick由若干Microtick构成,Microtick是本地时钟的最小时间单位。由于晶振频率之间的差异会产生不同长度的Microtick,因此为获得同步的Macrotick,不同FlexRay节点的Macrotick可能会由不同数量的Microtick构成。

整车总线系列——FlexRay 六_第4张图片

在FlexRay通信周期内,静态段可以提供确定性的数据传输。静态段所基于的TDMA方法可保证这一点。

静态段由若干等长的静态时隙组成。分配给静态时隙的FlexRay节点可以在该时隙发送静态报文。这个过程的前提条件是同步本地计数器,每个本地计数器都会在静态时隙的开始处递增。计数器值指向的是特定的静态报文和FlexRay节点。

“Static Segment”图中显示了通道A和通道B的通信调度表。两个通道的第一个时隙传输相同的报文,这样单个通道发生故障不会导致报文无法传输。但冗余通信通道也可以用于加快数据传输速率,而不是提高容错能力。这正是静态段的其他时隙所采用的方法:在两个通道中传输不同的报文,而且可以为每个FlexRay报文分别选择容错性或提高数据传输速率。

整车总线系列——FlexRay 六_第5张图片

FlexRay簇最多可定义1023个静态时隙。由于至少需要两个FlexRay节点才能生成全局时基(global time base),因此静态段必须包含至少两个静态时隙分别分配给这两个FlexRay节点。

在静态段期间平稳地传输确定性报文需要足够长的静态时隙。静态时隙的长度首先由最长的FlexRay报文决定。FlexRay报文基本上由帧头、有效负载、帧尾和控制符号构成。此外,还必须考虑到表示FlexRay报文结尾的通道空闲界定符。

整车总线系列——FlexRay 六_第6张图片

以下两者也会对静态时隙的长度造成影响:允许的最大信号延迟(最大允许延迟为2.5微秒),以及同步(精确)后任意两个FlexRay节点之间允许的最大时间偏差。

静态时隙由四部分组成。即使考虑最大的信号延迟以及FlexRay节点本身时钟的最大偏差,也可以确保报文在特定的静态时隙内传输。

整车总线系列——FlexRay 六_第7张图片

每个静态时隙的开始都是一个动作点偏移,动作点指的是报文传输的起始点。动作点偏移之后是动作点和FlexRay报文。FlexRay报文之后是通道空闲界定符(11个隐性位),最后是暂停(通道空闲),其持续时间在逻辑上等于动作点偏移。图“StaticSlot2”详细介绍了静态时隙的这一结构。

显然,精度和信号延迟与FlexRay簇中可实现的最大数据传输速率成反比:随着本地时钟的精度越来越差或信号的延迟越来越大,时隙的起点与动作点之间的时间跨度将越来越大,最终会降低可实现的最大数据传输速率。

**动态段是可选的。动态段用于传输事件驱动的报文,因此支持异步进程。为避免影响静态段的确定性数据传输,动态段的时间长度始终相同,且始终位于静态段之后。

动态段基于FTDMA ,该方法的核心还是TDMA 。尽管如此,动态段仍可以实现灵活的通信流。因此,动态段中的通信也基于通信调度表。通信调度表中定义的动态报文仅在发生需要报文传输的事件时才在动态段中传输。

每个节点的计数器在动态段会延续静态段的计数并继续递增。计数器值指向的是特定的动态报文和FlexRay节点。如果FlexRay节点未请求发送与计数器值相匹配的动态报文,FlexRay节点会在一个微时隙的长度后将计数器加一。在这种情况下,动态时隙正好是一个微时隙的长度。

如果存在发送请求,则相关的FlexRay节点会传输与计数器值相匹配的动态报文。此时动态时隙可能包含多个微时隙。动态时隙结束后,节点的计数器加一。计数器递增后,如果有新的发送请求,则传输与计数器当前值匹配的动态报文;反之,则在一个微时隙后计数器递增。

整车总线系列——FlexRay 六_第8张图片

此过程不断重复,直到动态段的长度不足以传输动态报文为止。由于动态段剩余长度太短,因此直到动态段结束的时间内都不会有数据传输。尚未传输的动态报文将在下一个周期的动态段继续传输。您可以通过课程下方的交互图更好地了解动态段中的数据传输。请阅读说明,以便您可以充分利用其全部功能。

显然,分配给动态报文的计数器值与传输该动态报文的概率之间存在关系:计数器值越大,传输报文的概率越小。可以得出结论,分配给动态段的最小计数器值具有最高优先级。

最后,系统设计师必须确保动态段可以传输其中低优先级的报文,同时也要确保能够传输最长的动态报文。**

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者!

你可能感兴趣的:(汽车行业,车载总线类型,AUTOSAR,os,架构,c语言,开发语言)