Media Access Control
Communication cycle(通信周期)
概述
cycle长度:常数,由协议参数gMacroPerCycle 定义
cycle数量:0-63递增,由协议参数cCycleCountMax定义
cycle组成:分为静态段,动态段,符号窗口段,网络空闲时段,仅静态段和网络空闲时段是必须的。
Action Point: Macrotick(MT)的边界,是静态段/动态段/符号窗口段Slot传输开始的特定时刻。
静态段
作用:进行时间同步和周期性的数据传输
静态段由多个静态slot组成,每个静态段的长度相等,是每个cycle最先传输的部分。
静态slot的数量由协议参数gNumberOfStaticSlots定义,从1开始计数,至少2,最多1023,静态slot总是分配给唯一的节点。每个静态slot的长度相等,由参数gdStaticSlot定义。
每个静态slot包含一个Action Point, 是每个slot开始传输前的偏移量,由全局常量gdActionPointOffset定义,表征一个静态slot的传输开始。
为了规划传输,每个节点都会维护一个slot计数器,由参数vSlotCounter描述,在通讯周期的开始时从1计数,每传输完一个slot后增加1。
静态段在通信时有以下限制:
- 如果节点内包含一个或多个Key slots, 这个节点应该通过该key slot(s)向连接的全部通道内全部通信cycle发送Flexray报文。
- 在slots但不是Key slot(s), Flexray报文可以发送到单个通道,或者两个都发送。
- 在给定的通信cycle, 不得有一个以上节点在指定信道上传输具有指定ID 的帧。但允许不同节点在不同的通信cycle内在同一信道上传输具有相同帧 ID 的帧。
- 如果一个no-sync node被配置为在启动后进入key slot模式(pKeySlotOnlyEnabled is true),节点应通过参数pKeySlotID指定一帧作为Key Slot帧。
静态帧通过静态Slot进行传输,每个slot传输一帧静态帧,由于每个静态slot是等长的,所以每个FlexRay的报文长度必须相等。静态帧由header, payload, trailer三部分组成,且在每帧结束后,会有一个11位长的通道空闲界定符(CID)。静态帧的ID范围从1到cSlotIDMax。
动态段
位于静态段之后,是可选的动态段,用于事件触发的信息发送。被划分位多个minislots, 每个通信cycle内的动态段长度总是相等的。minislot的数量和长度分别由全局常量gNumberOfMinislots和gdMinislot定义。当有节点需要发送数据时,则由一定数量的minislot组成一个动态Slot。不同于静态slot,动态slot的长度是可变的。
本地slot计数器(vSlotCounter)会持续记录slot的数量以决定当前的动态段slot的ID,静态段没被使用到的ID仍可以在动态段中被使用,最大可被分配的slot ID = 2047(cSlotIDMax), minislot会接着动态slot的计数器继续计数。直到通道的slot计数达到cSlotIDMax或者动态段达到了gNumberOfMinislots. 之后计数器会归零,并通知当前的通信cycle。
每个minislot包含一个action point, 用于指示minislot中帧传输的起始位置。除了第一个动态slot外,该偏移都是gdMinislotActionPointOffset,单位为MT。gdMinislotActionPointOffset对于给定的cluster为全局常量。 帧的传输也以action point结束。
与静态段不同的是,动态段包含两个不同的阶段:强制动态slot传输段和可选动态slot空闲段。动态slot传输段的范围是从动态slot的起始到最后一个minislot传输结束。动态slot空闲段(可选)的范围是从动态slot传输段结束到动态slot结束。
需要注意的是,对于动态段的起始,第一个action point的位置位于的gdActionPointOffset和gdMinislotActionPointOffset中较大的值。
由于动态slot的长度是可变的,因此动态帧的长度也同样可变。每个动态slot包含一个动态帧,动态帧同样由header, payload, trailer三部分组成,其中header和trailer的长度以及CID都与静态slot一样,payload的长度为可变长度。在同一通信cycle,不同slot的帧长度可以不同,在不同通信cycle,具有相同ID的slot的帧长度也可以不同。不同通信cycle中具有相同ID的slot的帧的长度也可能不同。
在每个动态slot中,通过使用DTS(Dynamic Trailing Sequence)动态尾部序列,可以在minislot的间隙中插入一些必要的位,可以防止接受方过早的检测到通信通道处于空闲的状态。
动态段在通信时有以下限制:
- 不允许发送同步帧,启动帧和空帧。
- 在给定通信cycle,被指定的帧可以在任一通道、两个通道传输或两个通道都不传输。由于基于通道的媒体访问过程具有独立性,在两个通道上尝试传输的帧有可能在一个通道上成功,但在另一个通道上却不成功。在两个通道上成功传输的帧也有可能是在不同通道上的不同时间点传输的。
- 在给定的通信cycle内,不得有超过一个节点在给定通道上传输具有给定帧 ID 的帧。但允许不同节点在不同的通信cycle内在同一通道上传输具有相同帧 ID 的帧。
- 当节点在key slot的模式下运行时,不能在动态段中发送帧,因此,节点所包含的key slot帧不能在动态段发送。
符号窗口段
位于动态段之后,是可选符号窗口段,每个cycle可通过符号窗口发送一个符号。符号窗口段的长度由全局变量gdSymbolWindow定义,为固定长度。当前,仅媒体访问测试符号是可用的。主要用于检查可选的本地Bus Guardian,作用类似与CAS(冲突避免符号)。他们都是由30个低位电平组成。符号窗口在传输符号的过程中不会对有用的数据进行传输。从3.0.1开始,唤醒模式可能也会通过符号窗口进行传输。这样就可以在正在进行通信的过程中唤醒之后的节点。
当没有符号需要传输时,可以将gdSymbolWindow配置为0。
FR协议不规定symbol window中冲突的解决情况,需要应用程序进行处理。
网络空闲时段
每个循环都必须以网络空闲时段(NIT)结束。由通道空闲和偏移补偿两部分组成。从通道的角度看,在NIT阶段,没有数据会在总线上可见。因此,NIT则为空闲时间。在此期间,节点可以进行同步或者必要的计算。偏移补偿在上一部分的NIT时段完成,故又名偏移补偿段。NIT由协议参数gdNit定义。
运行模式
协议运行控制(POC)流程设置了每个通信周期的媒体访问控制(MAC)的工作模式。
主要包括:
- STANDBY mode: MAC被有效停止
- NOCE mode: MAC被执行,但是没有帧或者符号传输到配置的通道上
- STARTUPFRAMECAS mode:如果节点被配置发送启动帧,则每个通信周期,每个key Slot只能在每个配置通道上传输一个启动空帧。此外,节点还会在第一个通信周期之前传输一个初始 CAS 符号。
- STARTUPFRAME mode:如果节点被配置发送启动帧,则每个通信周期每个Key Slot只能在每个配置通道上传输一个启动空帧。
- KEYSLOTONLY mode: 传输受限于不同的节点同步类型。
- TTD同步,每个通信周期只允许在配置的通道上传输一个同步帧。
- TTE/TT-L同步,冷启动节点每个通信周期只允许在配置的通道上传输两个启动帧。
- 非同步节点,在任何同步下都只允许在每个通信周期内在配置的通道上传输一个key slot的帧。
6. 所有模式下,帧和符号的发送都依据节点分配的slot进行传输。
注:文中引用图片为协议原文图片以及Vector B站培训视频图片。
标签:slot,访问控制,总线,传输,静态,动态,FlexRay,节点,cycle From: https://blog.csdn.net/m0_50114467/article/details/142259690