K2-02 · 控制、软件与标定 / 控制器硬件与安全
待认领listed
→
众筹中recruiting
→
已开课open · Course 售卖
一课题可并存多讲师版本
课程大纲
学完能做什么
- 能区分 CAN/CAN-FD/LIN 的适用场景并为热管理各类信号选对总线
- 能读懂/编写热管理相关通信矩阵(DBC)的关键字段
- 能估算总线负载率并判断报文设计是否有裕量
- 能识别整车 EEA 集成中热管理通信常见的时序与优先级问题
内容大纲
- 车用总线技术基础
- CAN 2.0 帧结构与仲裁机制(ID 决定优先级)
- LIN 主从架构与适用场景(低成本、低速执行器)
- 波特率、采样点、终端电阻等物理层要点
- CAN-FD 相较经典 CAN 在带宽与数据场上的提升
- CAN 的错误检测与错误界定:五类错误(位错误 / 填充错误 / CRC 错误 / 格式错误 / ACK 错误)如何被检出;发送错误计数 TEC 与接收错误计数 REC 的增减规则;错误主动(发主动错误帧)→ 错误被动(TEC>127,只发被动错误标志、发送后须等待挂起)→ bus-off(TEC>255,节点退出总线)三态的进入判据,出处是 ISO 11898-1;bus-off 后的恢复策略(等待 128×11 个隐性位自动恢复,或软件控制的分级重入并设重入次数上限)——无限快速重入会把一处可恢复的线束接触不良做成对总线的反复冲击。落到热管理场景:域控自身 bus-off 与观察到对端节点 bus-off 是两回事,前者本域所有输入同时失效、须直接进入本地兜底,后者只丢一路输入、走报文级降级(后指 K5-02)
- LIN 帧类型与调度表设计:无条件帧 / 事件触发帧 / 偶发帧 / 诊断帧的用法差别、帧时隙分配与主节点调度周期的设定方法;排表用 t_LIN,byte 的最坏值(含帧头与 1.4 倍系数)而不是标称值,口径与 G12-03 的 t_frame ≈ 1/f_sched 对齐;C2-03 给出的硬约束「调度表与响应时间必须与模式切换时序对齐」只是结论,怎么排在这里
- LIN 的 NAD 与自动寻址:同一条 LIN 上挂多个同型号执行器(多风门电机、多水泵)出厂 NAD 相同,靠什么区分——NAD 冲突的表现、按 supplier ID / function ID 配置、自动寻址流程及其不可重入风险;产线写入侧见 K6-09,平台级地址规划见 G8-04,本课只讲机制与设计规则
- 0x3C / 0x3D 主从诊断帧与 UDS-over-LIN:与 K5-01 的 CAN 侧 UDS 做对照,说明 ISO 14229 服务承载在 LIN 上的差异——单帧长度受限、传输层需分段、请求与响应靠主节点按调度表拉取而非从机自发
- LIN 从机响应帧的状态字节与错误位布局:本地故障(位置偏差 / 堵转 / 开路短路 / 过流过温 / 欠压)在状态字节里怎么编码、哪些位必须预留、发送周期怎么定,与 K1-01 接收侧的「超时 / CRC 错误 / 状态位故障」三类判据对上;执行器带电失联时「本地超时后主动驱到预定安全位」的三档失效安全位定义见 G12-03,本课只规定这些信息在 LIN 帧里怎么表达
- LIN 侧的休眠与唤醒:主节点发 go-to-sleep 指令、从节点唤醒脉冲的机制,以及它与暗电流预算的关系——域级休眠判据、静态电流预算与 12V 防亏电门槛见 K3-11,部件级必填字段见 G12-03,本课只讲 LIN 这一层怎么发、怎么醒
- 热管理域的通信需求
- 域控与 BMS:电池温度、SOC、热失控相关信号——注意通信矩阵定完不等于接口定义完:报文周期与分辨率只是信号的物理层与时序层,信号的语义归属(这个量以哪一侧为权威、两侧各算一份时以谁为准)属功能分配矩阵的范畴,见 K3-01
- 域控与 VCU/整车能量管理的功率请求交互
- 域控与压缩机/PTC/电子阀等执行器节点
- 域控与仪表/HMI 的状态显示与告警
- 通信矩阵与报文设计
- 信号定义:物理值、分辨率、偏移量、单位
- 报文周期与优先级(ID 分配的基本原则);周期不能只按「信号本身变化快慢」定——当某信号是跨 ECU 闭环的反馈量(BMS 上报电芯温度→域控跑电池温控环、VCU 上报功率→前端散热环),报文周期与最坏情况延迟直接决定这个环的带宽上限,还须按「谁拿它闭环、那个环要多快」反选,与误区「报文周期照抄别的域控经验值」构成判据—误区配对
- 校验、数据新鲜度与失效值(SNA)约定:新鲜度必须落成可算的量——信号年龄 age = 当前时刻 − 该信号最后一次成功更新的时刻,接收侧要维护它,而不是只判「有没有收到」;age 阈值按接收方拿它做什么定(做闭环反馈量的按环带宽反选、阈值远小于环周期,做显示与统计的可放宽,同一信号在不同消费者处可以有不同阈值);超龄后的动作阶梯要在矩阵里写死而不是留给各家自由发挥:保持上次值(短窗)→ 冻结并置降级标志 → 退出闭环切开环或最保守常数(如 BMS 电池温度超龄时按最保守假设取值),口径与 K1-01 的信号级故障标志分级、K5-02 的降级等级对齐;多路信号参与同一运算时按最老的一路取 age
- DBC 文件结构与信号打包方式
- 跨节点信号的失效语义——矩阵里必须写死的四件事:① 逐信号超时监控,每个信号单独给 timeout 周期(惯例取 3~5 倍发送周期,快变量取严)与超时后的替代值,替代值须逐信号声明取「保持上次值 / 保守常量 / 模型估计」中的哪一种(三选一的判据本体见 K1-01,本课只管把选择结果写进矩阵),禁止全总线一个笼统「通信中断」标志包打天下;② SNA/无效值编码约定,发送方用编码空间顶端(8 位信号 0xFF、16 位 0xFFFF)或独立 validity 位表达「我算不出来 / 我没测到」,接收方必须先判 SNA 再做量纲换算;③ E2E 保护的接收侧实现——Data ID 与 RollingCounter/CRC 的接收端状态机、允许的最大连续错误数与恢复条件(连续 N 帧正确才回切),与 K2-03 分工:那门课讲为什么要 E2E,本课讲怎么配;④ 恢复回切要去抖,信号从不可用回到可用时不得立即切回,与 K1-01 的 healing 逻辑同一套口径,避免边界工况下反复进出
- 场景/状态标志位是与温度、转速等物理量并列的一类信号,不能套物理量的字段模板:除分辨率、偏移量之外还须约定枚举语义(每个码值代表哪个场景、码值空间怎么预留)、上电默认值、以及信号丢失时的兜底取值——这里绝不能沿用「保持最后状态」。枚举语义的定义权在场景合成侧,本课只管把字段、周期与兜底值写进矩阵
- 报文周期与周期抖动不只影响「跟不跟得上」,还直接污染接收端算出的变化率:斜率的分母应取两帧的接收时间戳之差,而不是标称周期;丢帧区间的斜率要判作废,不能补零也不能线性外插(后指 K1-01 的信号变化率与故障判据)
- 总线负载与实时性
- 总线负载率的估算方法:先按协议分别算单帧的总线占用时间(经典 CAN 用含最坏位填充与 IFS 的实际位数除以波特率,CAN-FD 用仲裁段+数据段分段相加),再按各报文频率求和;混跑总线上 FD 帧与经典帧要分开算再相加,不能套一个波特率
- 优先级仲裁下的报文延迟与最坏情况分析思路,且要有去处——算出的最坏延迟须交给控制侧折进等效纯滞后总账(前指 K3-05);另补周期抖动这一维:只对齐名义周期而不看抖动是不够的,当抖动量级接近周期时,跨 ECU 闭环的表现会随机漂移、台架上复现不出来
- 事件触发报文 vs 周期触发报文的取舍;为车队遥测新增或提频的采集信号同样占用总线负载,核算仍走 ρ_bus=Σ(L_i×f_i)/R_baud,但其取舍准则不是控制实时性而是事后可分析性与回流成本(落点见 K7-03)——通信矩阵与遥测数据字典同源不同用,别把两张表混成一张
- 网络管理(NM)与总线休眠/唤醒机制
- 整车 EEA 集成与网关
- 域间网关的路由与协议转换
- Zonal 架构下热管理信号的域内/跨域路径
- 总线拓扑(星型/菊花链)对线束与故障隔离的影响
- 诊断报文、OTA 报文与功能报文在总线上的共存
关键公式
ρ_bus = Σ(L_i × f_i) / R_baud
总线负载率:各报文帧长(bit)乘发送频率求和,再除以波特率
t_bit = 1 / R_baud
位时间,决定采样点位置设置与总线长度/节点数的限制
t_LIN,byte ≈ 10 / R_baud
LIN 基于 UART 帧格式,每字节含起止位约 10 位,用于估算帧传输时间
R_data(FD) > R_arbitration(BRS 位速率切换)
CAN-FD 数据场可切到更高速率,仲裁场仍用经典速率保证总线兼容仲裁
t_frame(FD) = N_arb / R_arb + N_data / R_data
CAN-FD 开启 BRS 的一帧跨两个速率:仲裁段(ID、控制场首尾、ACK/EOF)走标称速率,数据段与 CRC 走数据速率,帧时间必须分段相加。把 FD 帧代进单一 R_baud 的负载率式在数学上不成立:代 R_data 会严重低估、代 R_arb 反而高估
N_worst(标准帧, n 字节) = 47 + 8n + floor((34 + 8n − 1)/4) + 3
经典 CAN 标准帧的最坏总线占用位数:标称 47+8n 位、最坏位填充 floor((34+8n−1)/4) 位、帧间隔 3 位;n=8 时 111 → 135 → 138 位。工程上按此留裕量,代入 ρ_bus 的 L_i
关键概念
CAN 2.0CAN-FDLIN仲裁场/数据场DBC通信矩阵总线负载率RollingCounter/Checksum网络管理 NM域间网关Zonal EEA错误主动/错误被动/bus-offTEC/REC 错误计数SNA/无效值编码信号年龄 age/周期抖动LIN 调度表/NAD
推荐工具与标准
Vector CANoe/CANalyzer CANdb++ / DBC 编辑器 PCAN-View(总线报文抓取) 示波器(物理层信号验证) LDF / NCF 编辑器(LIN 描述文件与节点能力文件,调度表与 NAD 配置在此落盘)
ISO 11898(CAN 物理层与数据链路层) ISO 17987(LIN 总线系列标准) ISO 15765(基于 CAN 的诊断通信) SAE J2602(LIN 在北美整车上的应用规范,按现行版本确认)
工程案例
某车型域控与 BMS 之间电池最高温度信号原按 200ms 周期发送。定位时先纠正了归因:电芯温度是分钟级慢变量,200ms 本身并不慢,真正的缺口是越限与热失控前兆这类事件需要的是有最坏时延保证的事件触发报文,而不是把周期报文一味提频;另一处是接收端按标称周期(而非两帧接收时间戳之差)算温升斜率,周期抖动与丢帧被一并算进分母,斜率失真。最终保留原周期报文、增补一路超阈值事件触发报文,并规定斜率按接收时间戳差计算、丢帧区间作废;同时复核了极端场景诊断报文突发对总线负载的叠加影响。
动手做
交付物 · 给一份简化热管理信号清单(电池温度、水温、压缩机转速请求等):①为每个信号分配报文周期与总线类型;②估算这组报文在 500kbps CAN 总线上的负载率;③指出其中至少一个信号需要事件触发补充报文的理由。
常见误区
- 报文周期照抄别的域控经验值,未结合信号本身的动态速度(电池温度变化快、水温变化慢,不能一刀切)
- 总线负载率只算稳态周期报文,漏算 DTC/诊断报文突发导致的瞬时拥塞
- 省略 RollingCounter/Checksum 校验,接收端在总线干扰下用脏数据做了控制决策
- LIN 从节点响应超时没设兜底策略,通信中断后执行器保持最后状态而非安全默认值
- CAN-FD 与经典 CAN 混跑的总线上,网关的 FD 帧转换配置遗漏,老节点侧丢帧
- SNA / 无效值被当成物理 0 用——0xFF、0xFFFF 这类无效编码经 offset 与 resolution 换算后成了一个看似合法的温度或功率值,接收端没先判 SNA 就照单全收去做控制决策
相关课题