2. SBW系统架构设计
任务定义
设计一个满足ASIL-D功能安全要求的线控转向(SBW)系统整体架构,覆盖传感器层、控制器层、执行器层、通信网络与电源分配五个子系统,并明确各子系统间的信号流向与冗余策略。本案例交付物为架构设计方案及对应的系统架构图。
系统架构设计
SBW系统采用双通道冗余架构,每个通道包含独立的传感器组、控制器与执行器,两通道间通过交叉监控链路实现故障检测与降级控制。方向盘总成与转向执行器之间无机械连接,路感反馈由方向盘端的力矩电机模拟生成。
1. 传感器层
每个通道配置:方向盘转角传感器(±720°,精度0.1°)、方向盘扭矩传感器(±10Nm,精度0.05Nm)、车速传感器(来自ESC,经网关转发)、横摆角速度传感器(来自ESC)。传感器信号经去噪与合理性校验后,通过私有CAN-FD总线以10ms周期发送至主控制器。
2. 控制器层
主控制器(ECU_SBW_1)与从控制器(ECU_SBW_2)均采用英飞凌TC397三核锁步MCU。主控制器运行路感控制算法与转向执行控制算法,从控制器运行相同的算法副本并执行结果比对。两控制器间通过100Base-T1以太网建立心跳监控(周期5ms),通过SPI总线共享传感器原始数据用于交叉校验。
3. 执行器层
前轴转向执行器采用双绕组永磁同步电机(PMSM),每个绕组由独立逆变器驱动,电机输出轴通过蜗轮蜗杆减速机构(减速比18:1)驱动转向齿条。方向盘路感电机采用单电机+机械限位备份方案,当系统检测到执行通道完全失效时,路感电机切换为阻尼模式提供被动回正力矩。
4. 通信网络
采用混合网络拓扑:控制器间关键信号走100Base-T1以太网(带宽充足,延迟<1ms);传感器与控制器间走CAN-FD(波特率2Mbps);执行器逆变器与控制器间走私有SPI(速率10Mbps,周期1ms)。网关负责与整车CAN(500kbps)交互车速、横摆角速度及诊断报文。
5. 电源分配
采用双路独立供电:蓄电池1(12V/60Ah)经电源管理单元PMU_1为通道1传感器、ECU_SBW_1、逆变器1供电;蓄电池2(12V/60Ah)经PMU_2为通道2传感器、ECU_SBW_2、逆变器2供电。PMU内部集成理想二极管ORing电路,单路电源失效时自动切换至另一路,切换时间<5ms。路感电机由双路电源经二极管并联供电,确保单路失效时仍可工作。
架构图
冗余与降级策略
系统定义三级降级模式:模式A(全功能)——双通道均正常,主控制器输出控制指令,从控制器实时比对;模式B(降级)——单通道传感器或执行器失效,由健康通道独立完成转向控制,路感电机切换至阻尼模式;模式C(安全停车)——两通道均失效,激活电子驻车制动并点亮红色警告灯,方向盘机械限位锁止。模式切换由健康状态管理模块基于心跳监控与传感器自检结果决策,切换时间不超过50ms。
// 当前案例缺失代码:SBW系统架构设计(架构图数据与组件定义)
// 补充:架构图绘制所需的数据结构与组件清单
// 1. 架构组件枚举
typedef enum {
COMP_SENSOR_WHEEL_ANGLE = 0, // 方向盘转角传感器
COMP_SENSOR_TORQUE, // 扭矩传感器
COMP_SENSOR_VEHICLE_SPEED, // 车速传感器
COMP_SENSOR_YAW_RATE, // 横摆角速度传感器
COMP_ECU_STEERING, // 转向ECU(主控制器)
COMP_ECU_BACKUP, // 备份ECU
COMP_ACTUATOR_FRONT_LEFT, // 前左轮转向执行器
COMP_ACTUATOR_FRONT_RIGHT, // 前右轮转向执行器
COMP_ACTUATOR_FEEDBACK, // 方向盘路感反馈执行器
COMP_NETWORK_CAN, // CAN通信网络
COMP_NETWORK_ETHERNET, // 以太网通信网络
COMP_POWER_DISTRIBUTION, // 电源分配单元
COMP_POWER_BATTERY_12V, // 12V蓄电池
COMP_POWER_BATTERY_48V, // 48V高压电池(冗余)
COMP_COUNT
} SBW_ComponentType;
// 2. 架构连接关系(数据流/电源流)
typedef struct {
SBW_ComponentType source;
SBW_ComponentType target;
uint8_t is_power_flow; // 0=数据流, 1=电源流
uint8_t is_redundant; // 1=冗余通道
} SBW_ArchConnection;
// 3. 当前案例架构连接表(补充核心连接)
const SBW_ArchConnection sbw_arch_connections[] = {
// 传感器 -> 主ECU(数据流)
{COMP_SENSOR_WHEEL_ANGLE, COMP_ECU_STEERING, 0, 0},
{COMP_SENSOR_TORQUE, COMP_ECU_STEERING, 0, 0},
{COMP_SENSOR_VEHICLE_SPEED, COMP_ECU_STEERING, 0, 0},
{COMP_SENSOR_YAW_RATE, COMP_ECU_STEERING, 0, 0},
// 传感器 -> 备份ECU(冗余数据流)
{COMP_SENSOR_WHEEL_ANGLE, COMP_ECU_BACKUP, 0, 1},
{COMP_SENSOR_TORQUE, COMP_ECU_BACKUP, 0, 1},
// 主ECU -> 执行器(控制流)
{COMP_ECU_STEERING, COMP_ACTUATOR_FRONT_LEFT, 0, 0},
{COMP_ECU_STEERING, COMP_ACTUATOR_FRONT_RIGHT, 0, 0},
{COMP_ECU_STEERING, COMP_ACTUATOR_FEEDBACK, 0, 0},
// 备份ECU -> 执行器(冗余控制流)
{COMP_ECU_BACKUP, COMP_ACTUATOR_FRONT_LEFT, 0, 1},
{COMP_ECU_BACKUP, COMP_ACTUATOR_FRONT_RIGHT, 0, 1},
// ECU间通信(以太网冗余)
{COMP_ECU_STEERING, COMP_ECU_BACKUP, 0, 1},
// 电源分配(电源流)
{COMP_POWER_BATTERY_12V, COMP_POWER_DISTRIBUTION, 1, 0},
{COMP_POWER_BATTERY_48V, COMP_POWER_DISTRIBUTION, 1, 1},
{COMP_POWER_DISTRIBUTION, COMP_ECU_STEERING, 1, 0},
{COMP_POWER_DISTRIBUTION, COMP_ECU_BACKUP, 1, 1},
{COMP_POWER_DISTRIBUTION, COMP_ACTUATOR_FRONT_LEFT, 1, 0},
{COMP_POWER_DISTRIBUTION, COMP_ACTUATOR_FRONT_RIGHT, 1, 0},
{COMP_POWER_DISTRIBUTION, COMP_ACTUATOR_FEEDBACK, 1, 0},
// 通信网络挂接
{COMP_ECU_STEERING, COMP_NETWORK_CAN, 0, 0},
{COMP_ECU_BACKUP, COMP_NETWORK_CAN, 0, 1},
{COMP_ECU_STEERING, COMP_NETWORK_ETHERNET, 0, 1},
{COMP_ECU_BACKUP, COMP_NETWORK_ETHERNET, 0, 1},
};
// 4. 架构图绘制辅助:节点坐标(用于生成架构图)
typedef struct {
SBW_ComponentType comp;
int x, y; // 画布坐标
const char* label;
} SBW_ArchNode;
const SBW_ArchNode sbw_arch_nodes[] = {
{COMP_SENSOR_WHEEL_ANGLE, 100, 100, "方向盘转角传感器"},
{COMP_SENSOR_TORQUE, 100, 180, "扭矩传感器"},
{COMP_SENSOR_VEHICLE_SPEED, 100, 260, "车速传感器"},
{COMP_SENSOR_YAW_RATE, 100, 340, "横摆角速度传感器"},
{COMP_ECU_STEERING, 350, 200, "转向ECU(主)"},
{COMP_ECU_BACKUP, 350, 320, "转向ECU(备份)"},
{COMP_ACTUATOR_FRONT_LEFT, 600, 150, "前左执行器"},
{COMP_ACTUATOR_FRONT_RIGHT, 600, 250, "前右执行器"},
{COMP_ACTUATOR_FEEDBACK, 600, 350, "路感反馈执行器"},
{COMP_NETWORK_CAN, 350, 100, "CAN总线"},
{COMP_NETWORK_ETHERNET, 350, 420, "以太网(冗余)"},
{COMP_POWER_DISTRIBUTION, 600, 450, "电源分配单元"},
{COMP_POWER_BATTERY_12V, 750, 400, "12V电池"},
{COMP_POWER_BATTERY_48V, 750, 500, "48V电池(冗余)"},
};
// 5. 架构图绘制函数(简化版,输出SVG或Mermaid格式)
void SBW_DrawArchitecture(void) {
// 输出Mermaid格式架构图(可直接用于文档)
printf("graph TD\n");
printf(" S1[方向盘转角传感器] -->|CAN| ECU1[转向ECU主]\n");
printf(" S2[扭矩传感器] -->|CAN| ECU1\n");
printf(" S3[车速传感器] -->|CAN| ECU1\n");
printf(" S4[横摆角速度传感器] -->|CAN| ECU1\n");
printf(" S1 -->|冗余| ECU2[转向ECU备份]\n");
printf(" S2 -->|冗余| ECU2\n");
printf(" ECU1 -->|控制| A1[前左执行器]\n");
printf(" ECU1 -->|控制| A2[前右执行器]\n");
printf(" ECU1 -->|控制| A3[路感反馈执行器]\n");
printf(" ECU2 -->|冗余控制| A1\n");
printf(" ECU2 -->|冗余控制| A2\n");
printf(" ECU1 <-->|以太网| ECU2\n");
printf(" B12[12V电池] --> PDU[电源分配]\n");
printf(" B48[48V电池] -->|冗余| PDU\n");
printf(" PDU --> ECU1\n");
printf(" PDU --> ECU2\n");
printf(" PDU --> A1\n");
printf(" PDU --> A2\n");
printf(" PDU --> A3\n");
}
验证方法
搭建硬件在环(HIL)测试台架,将ECU_SBW_1与ECU_SBW_2连接至实时仿真机(模拟车辆动力学与传感器信号)。测试步骤如下:
- 注入方向盘转角阶跃输入(0°→90°,速率500°/s),观测前轴执行电机是否在100ms内响应并跟踪目标转角,稳态误差应小于±0.5°;
- 断开通道1的转角传感器信号,确认系统在50ms内切换至模式B,且由通道2独立完成转向控制,方向盘转角跟踪误差不超过±1°;
- 同时断开两通道的CAN-FD通信,确认系统在100ms内进入模式C并触发安全停车指令;
- 模拟蓄电池1失效,观测PMU_1在5ms内完成电源切换,ECU_SBW_1无复位现象。
判定标准:上述四项测试全部通过,且测试过程中无ASIL-D安全目标违背(无不可控转向、无意外加速),即可判定架构设计满足要求。