4. 车载通信协议与总线接入
T-Box要完成远程控制、车况上报、OTA和远程诊断,前提是能“听懂”车内各条总线上的数据。车内网络并非单一协议,而是由CAN/CAN-FD、LIN、FlexRay、车载以太网共同构成的分层通信体系。T-Box通常作为网关型节点,一侧连接外部蜂窝网络,另一侧通过多路CAN、LIN以及以太网接入车内网络,并在应用层把原始报文翻译成有业务含义的信号与服务调用。
一、CAN与CAN-FD:报文与信号解析
CAN总线采用基于标识符的广播通信,标准帧为11位ID,扩展帧为29位ID。数据帧由仲裁段、控制段、数据段、CRC段和应答段组成。经典CAN数据段最多8字节,CAN-FD则通过可变速率将数据段扩展到最多64字节,并允许仲裁段与数据段使用不同波特率。例如仲裁段500 kbit/s、数据段2 Mbit/s是常见组合,T-Box的CAN控制器需同时支持这两个速率参数。
报文本身只是字节流,真正可用的信息是信号。以一条示例报文为例:ID为0x123,DLC为8,数据为0x1A 0x2B 0x00 0x64 0x00 0x00 0x00 0x00。若DBC中定义车速信号起始位为第16位、长度16位、小端字节序、精度0.01、偏移0、单位km/h,则取字节3和字节4组合为0x0064,即十进制100,乘以0.01得到1.00 km/h。若定义发动机转速起始位为第0位、长度16位、大端、精度0.125,则取0x1A2B即6699,乘以0.125约为837.4 rpm。解析时必须严格对齐起始位、字节序、精度和偏移,否则会出现数量级错误。
工程上还需处理多路复用信号、计数器、校验和以及超时判定。T-Box通常为每条接收报文维护超时定时器,例如周期20 ms的报文若连续100 ms未更新,则标记为超时并将相关信号置为无效值,避免用旧值触发误动作。
二、LIN与FlexRay辅助接入
LIN是单线、主从、低成本总线,典型速率19.2 kbit/s,常用于车窗、雨刮、座椅等车身节点。T-Box一般作为LIN主节点或监听节点,通过调度表按帧头发送与响应读取状态。FlexRay则面向高实时与冗余场景,采用时间触发、静态段与动态段结合,速率可达10 Mbit/s,常见于底盘与线控系统。T-Box接入FlexRay时需配置通信周期、时隙和冷启动参数,通常只做监听与转发,不参与关键控制。
三、DoIP与以太网诊断
DoIP把诊断请求封装在IP网络上,使用TCP承载诊断消息、UDP承载车辆发现与状态查询。典型端口为13400。诊断流程为:T-Box先通过UDP向车辆广播路由激活请求,收到路由激活响应后建立TCP连接,再发送诊断报文。诊断报文包含协议版本、载荷类型、源地址、目标地址和数据。例如对目标地址0x0E00发送UDS服务0x22读取数据标识符0xF190,T-Box需按DoIP头部封装后发送,并解析响应中的正响应0x62或否定响应0x7F及NRC码。以太网诊断相比CAN诊断带宽更高,适合刷写和大量数据读取。
四、SOME/IP服务通信
SOME/IP面向服务,包含服务发现、方法调用、事件通知和字段访问。T-Box作为客户端时,先通过服务发现找到服务实例及端点,再调用方法或订阅事件。方法调用有请求/响应语义,事件则由服务端周期或变化触发推送。例如远程获取车门状态,可订阅车门状态事件,服务端在状态变化时推送包含服务ID、方法ID、长度、客户端ID、会话ID和返回码的报文。T-Box需维护会话ID递增、超时重传和订阅有效期,避免重复或过期数据。
五、DBC、FIBEX与ARXML在T-Box中的落地
三类数据库文件分别描述不同协议:DBC描述CAN/CAN-FD报文与信号,FIBEX描述FlexRay调度与帧,ARXML描述以太网服务、SOME/IP接口及诊断。T-Box工程落地时,通常由工具链把DBC/FIBEX/ARXML编译为运行时代码或配置表,生成信号访问接口、服务代理和诊断路由表。落地要点包括:统一信号命名与单位、校验起始位与字节序、处理信号无效值与默认值、维护数据库版本与整车配置的对应关系。若数据库版本与实车不一致,会出现信号错位或服务调用失败,因此版本管理和一致性校验是T-Box接入的关键环节。
从工程实现看,T-Box接入的核心不是“接上线”,而是把不同协议的数据统一映射到应用可用的信号与服务模型。CAN/CAN-FD负责高频车身与动力数据,LIN补齐低速车身节点,FlexRay覆盖高实时场景,DoIP与以太网承担诊断和刷写,SOME/IP提供面向服务的通信。DBC、FIBEX、ARXML则是这些协议在T-Box内部落地的“字典”和“契约”。只有数据库版本、字节序、精度、超时策略与服务发现参数全部对齐,T-Box才能稳定地把车内数据送到云端,并把云端指令准确下发到目标节点。