FlexRay 时间触发总线:TDMA 时槽、周期与静态/动态段
更新时间:2026-09-19。前置:CAN 错误帧/Bus-Off、SENT 传感器、TSN 时间敏感网络。CAN 是事件触发、多主竞争仲裁,延迟有界但不固定。线控转向/刹车等功能安全系统要求确定性、有保证的最大延迟和冗余,FlexRay 用时间触发 TDMA 提供。
一、事件触发 vs 时间触发
- CAN(事件触发):有数据就发,靠 ID 逐位仲裁,低优先级帧在高负载下可能反复被抢,延迟随负载变化(统计有界,非确定)。机制见 CAN 错误恢复。
- FlexRay(时间触发,TDMA):把时间切成全局同步的周期和时槽(slot),每个节点在预先分配给它的固定时槽发送,别的时间绝不发。没有冲突仲裁,发送时刻确定、抖动极小,带宽可 100% 规划;支持双通道并行冗余,速率 10Mbps/通道(远高于 CAN 的 1Mbps/CAN-FD)。
- 代价:配置复杂、节点要同步、灵活性差(时槽是静态规划的)。与以太网侧的确定性方案 TSN 思想相通。
二、通信周期与时槽
网络共享一个全局时间,运行被切成等长的通信周期(communication cycle),每个周期再分四段:
bash
┌──────────┬──────────┬─────────�─────────┐
│ 静态段 │ 动态段 │ 符号窗 │ 网络空闲 │
│ Static │ Dynamic │ Symbol │ NIT │
└──────────┴──────────┴─────────┴─────────┘
确定性时槽 mini-slot 唤醒/符号 时钟校正/同步- 静态段(static segment):等长的时槽(slot)1..n,每个 slot 静态分配给某个节点(和某通道),每周期固定时刻该节点可发一帧。这是 TDMA 确定性的核心:节点 i 永远只在 slot i 的窗口发,绝不冲突。
- 动态段(dynamic segment):事件型流量,用 mini-slot 机制:按 slot ID 顺序,谁要发就在对应 mini-slot 发,不发则时间快速推进到下一个 ID(用更小的 mini-slot 而非空等整槽),兼顾少量非周期数据,优先级由 slot ID 决定。
- 符号窗(symbol window):发唤醒符号(wakeup)、媒体测试等。
- NIT(Network Idle Time):网络空闲,节点在此做时钟同步校正计算(调整本地周期/宏节拍时刻),保证下一周期全局对齐。
周期内时间用 **宏节拍(macrotick,协议时间单位)**组织,宏节拍由节点本地微节拍(microtick,来自时钟)合成。
三、全局时间同步(关键)
TDMA 要求所有节点的时槽边界对齐,但晶振各有 ppm 漂移:
- 节点周期性交换带同步帧(sync frame,由 coldstart/同步节点在静态段发送),记录发送/接收时刻。
- 每个节点基于多个同步主节点(sync node)的到达时间,用速率校正(rate correction,调微节拍/宏节拍比例)+ 偏移校正(offset correction,在 NIT 平移),运行分布式时钟同步算法(类 FTRA/容错平均),使全局时间偏差保持在 µs 级。
- 容错:用多个同步节点、剔除异常值,单点故障不会让全局时间发散。
四、冷启动与网络启动
- 冷启动节点(coldstarter):网络上电时没有全局时间,需若干配置为**启动/冷启动节点(leading coldstarter)**发起:先发 wakeup 符号唤醒总线,再尝试发送启动帧,其他冷启动节点监听、采纳时基、加入,达到约定数量后网络进入正常操作(cold-start / integration)。
- 普通节点监听同步帧**整合(integrate)**到全局时间后才允许在自己 slot 发送。
- 至少要配置足够的冷启动/同步节点以保证冗余;启动过程有超时与重试状态机。
五、帧、双通道与总线监护
- 帧:由 TSS/FSS/BSS 等符号位 + 头部(头 CRC、帧 ID 即 slot 号、长度、周期计数)+ payload(最长 254B)+ 尾 CRC构成;头 CRC 保护静态配置(slot/长度),防止配置错配。
- 双通道(A/B)冗余:可在两通道发相同帧(容错,线控)或不同帧(2 倍带宽);节点可单/双通道。
- 总线监护(bus guardian):独立部件/机制,节点即使软件失控也只能在它被分配的时槽使能发送,防止「babbling idiot」节点一直霸占/错时发送破坏全网时序——这是功能安全的关键(时间触发必须防止节点在错误时刻说话)。
- 物理层可选总线型或星型(主动星型/集线器,带故障隔离)。
六、应用与常见坑
- 应用:线控转向/刹车/悬架、主动安全、早期高级动力/底盘域;确定性思想被后续车载以太网 TSN/部分继承。
常见的坑
- 时槽静态分配冲突/不合理:两个节点配同一 slot 或 slot/通道矩阵设计不当,确定性前提被破坏;要严格规划调度表。
- 冷启动/同步节点数量不足:关键节点故障后无法重新整合/启动。
- 时钟同步没调好:速率/偏移校正参数、宏/微节拍配比不当,全局偏差超限导致时槽错位。
- 忽略晶振精度(ppm):选了精度不够的晶振,节点校正能力跟不上。
- 把动态段当静态用:mini-slot 段延迟随负载变化,硬实时数据必须放静态段。
- 无总线监护:故障节点 babbling 占用总线,安全目标落空。
- 双通道配置不一致:冗余 vs 带宽模式混用、双通道 CRC/帧配置不匹配。
- 头 CRC/配置不匹配:调度表长度、slot、周期版本在各节点不一致,帧被拒。
- 启动时序/wakeup 问题:唤醒符号、冷启动竞争、整合超时处理不当导致偶发不在线。
- payload 长度静态假设错:静态段 slot 长度全网统一,按错长度会错位。
- NIT 太短:放不下时钟校正/协议开销,同步不稳。
- 物理拓扑/星型故障:总线终端、星型分支故障隔离没设计好导致整网失效。
相关与延伸
事件触发对照见 CAN 错误帧/Bus-Off;单线传感器见 SENT;以太网侧的确定性见 TSN/AVB;时间戳/时钟见 PTP 1588。
总结
FlexRay 用全局同步时间上的 TDMA 提供硬确定性:时间切成通信周期,周期内静态段由等长时槽组成、每个节点只在静态分配给它的 slot 固定时刻发送因而无冲突无仲裁、延迟有界且抖动极小,动态段用 mini-slot 机制承载少量事件型流量,节点间靠同步帧在 NIT 做速率与偏移校正把各自有 ppm 漂移的本地时钟收敛到 µs 级全局时基,上电由冷启动节点发起唤醒和整合,并可用 A/B 双通道做冗余或倍速、用头 CRC 保护调度配置、用独立总线监护防止失控节点在错误时槽 babbling 破坏全网——时槽调度表冲突、冷启动/同步节点不足、时钟校正和晶振精度、以及缺少总线监护是四类最关键的工程坑。