3. AUTOSAR软件架构映射

AUTOSAR软件架构映射 学习卡片

任务定义

本案例针对SBW(线控转向)系统,完成从功能需求到AUTOSAR经典分层架构的映射。目标产物为:① 应用层SWC(软件组件)划分及其端口/接口定义;② RTE层需要承载的通信关系;③ 基础软件层(BSW)中与SBW强相关的模块清单及配置要点。映射结果需满足ISO 26262 ASIL-D功能安全等级对分区与监控的要求。

SBW功能到AUTOSAR分层架构的映射

SBW系统取消机械转向柱连接,驾驶员指令通过传感器采集,由ECU计算后驱动前轮转向执行器。依据AUTOSAR分层原则,将功能划分为三个层级:

  • 应用层(SWC):承载与转向控制策略直接相关的算法,不依赖具体硬件。
  • RTE层:负责SWC间及SWC与BSW间的通信路由,实现接口解耦。
  • BSW层:提供ECU基础服务(通信、诊断、存储、I/O),对应用层屏蔽硬件细节。

1. 应用层SWC划分

将SBW功能分解为6个应用SWC,每个SWC对应一个AUTOSAR Composition中的独立原子组件。划分原则遵循“高内聚、低耦合”,并依据功能安全相关项(FTI)进行ASIL分解:

SWC名称核心功能ASIL等级关键端口(Port)
SteeringWheelSensor_SWC采集方向盘转角、转角速度,处理冗余信号(主/辅)并输出仲裁后的驾驶员意图ASIL-DP_SteeringAngle(C/S接口,输出);P_SensorStatus(模式接口)
VehicleState_SWC估算车速、横摆角速度、侧向加速度,提供车辆运动状态ASIL-B(D)P_VehicleSpeed(C/S输出);P_YawRate(C/S输出)
ControlCore_SWC执行转向控制算法(变传动比、主动回正、阻尼补偿),输出目标前轮转角ASIL-DP_TargetAngle(C/S输出);P_ControlMode(模式接口)
ActuatorCmd_SWC将目标转角转换为执行器(永磁同步电机)的扭矩/位置指令,含电流环前馈ASIL-DP_MotorTorqueCmd(C/S输出);P_MotorPosCmd(C/S输出)
FaultMgmt_SWC功能安全监控:比较主/辅通道计算结果,触发降级模式(冗余/停机)ASIL-DP_FaultStatus(模式接口);P_SafeStateReq(模式接口)
DriverFeedback_SWC生成路感模拟力矩(回正力矩+阻尼),驱动手感电机ASIL-B(D)P_FeedbackTorque(C/S输出)

2. RTE通信关系定义

RTE层通过VFB(虚拟功能总线)视图连接上述SWC。关键通信路径如下:

  • SteeringWheelSensor_SWC → ControlCore_SWC:发送驾驶员意图转角(周期10ms,C/S接口,数据类型SteeringAngle_T)。
  • VehicleState_SWC → ControlCore_SWC:发送车速与横摆角速度(周期20ms)。
  • ControlCore_SWC → ActuatorCmd_SWC:发送目标前轮转角(周期10ms)。
  • ActuatorCmd_SWC → FaultMgmt_SWC:上报实际执行反馈(周期10ms)。
  • FaultMgmt_SWC → ControlCore_SWC:发送降级模式指令(事件触发,优先级高)。

RTE需配置为支持ASIL-D保护机制:对C/S接口启用E2E Profile 5校验(CRC+计数器),对模式接口启用End-to-End Protection。

3. BSW模块划分与配置要点

BSW层按AUTOSAR分层选择与SBW直接相关的模块,不涉及通用基础模块的完整展开:

BSW模块所属子层SBW相关配置要点
MCU(微控制器驱动)MCAL配置ADC通道用于传感器采样(12bit,双通道冗余);配置PWM用于电机驱动(20kHz)
PORTMCAL引脚复用:方向盘转角传感器SPI片选、执行器使能信号
SPIMCAL配置为Master模式,时钟4MHz,用于读取角度传感器(帧格式:16bit地址+16bit数据)
PWMMCAL生成电机驱动占空比信号,死区时间500ns
ADCMCAL采集扭矩传感器模拟信号,采样率1kHz,DMA传输
CanSM / CanIf / CanDrv通信服务/接口/驱动配置CAN通道(500kbps)用于与ESP(电子稳定程序)交互车速信号
Com通信服务定义信号PDU:SBW_SteeringAngle(8字节,周期10ms)
E2E通信服务启用E2E Profile 5,保护转向角信号(Data ID=0x123)
Dcm诊断服务配置UDS服务(0x22读数据、0x2E写数据),用于标定参数在线更新
NvM存储服务存储转向角零点标定值(Block ID=0x01,CRC校验)
WdgM系统服务监控ControlCore_SWC的10ms周期任务喂狗,超时触发安全停机

4. 功能安全分区与监控

依据ISO 26262,将应用SWC部署到两个独立分区(Partition):

  • Partition 1(ASIL-D):SteeringWheelSensor_SWC、ControlCore_SWC、ActuatorCmd_SWC、FaultMgmt_SWC。使用MPU保护,禁止访问其他分区内存。
  • Partition 2(ASIL-B):VehicleState_SWC、DriverFeedback_SWC。与Partition 1通过RTE的Inter-Partition Communication交互,启用CRC校验。

FaultMgmt_SWC内部实现双通道比较:将ControlCore_SWC输出的目标转角与ActuatorCmd_SWC反馈的实际转角进行差值比较,若偏差超过阈值(如5°)持续50ms,则触发降级模式(切换至冗余通道或安全停机)。

核心代码实现(ARXML配置片段与SWC行为描述)

以下给出关键SWC的RTE接口定义(ARXML格式)与ControlCore_SWC的C语言行为骨架,用于说明映射落地方式。

// ========== ControlCore_SWC 行为骨架(C语言) ==========
#include "Rte_ControlCore_SWC.h"
#include "math.h"

#define ANGLE_THRESHOLD_DEG 5.0f
#define FAULT_DETECT_TIME_MS 50u

static float targetAngle_prev = 0.0f;
static uint16 faultCounter = 0u;

/* 10ms周期任务:RTE调用 */
void ControlCore_SWC_Run(void)
{
    Std_ReturnType ret;
    SteeringAngle_T driverIntent;
    VehicleState_T vehState;
    TargetAngle_T targetAngle;
    ControlMode_T mode;

    /* 1. 读取驾驶员意图(来自SteeringWheelSensor_SWC,经RTE路由) */
    ret = Rte_Read_P_SteeringAngle_Data(&driverIntent);
    if (ret != RTE_E_OK) {
        /* 通信超时,进入安全状态 */
        Rte_Write_P_ControlMode_Mode(&CONTROL_MODE_SAFE_STOP);
        return;
    }

    /* 2. 读取车辆状态(来自VehicleState_SWC) */
    ret = Rte_Read_P_VehicleSpeed_Data(&vehState.speed);
    if (ret != RTE_E_OK) {
        vehState.speed = 0.0f; /* 默认安全值 */
    }

    /* 3. 读取当前控制模式(来自FaultMgmt_SWC) */
    Rte_Read_P_ControlMode_Mode(&mode);
    if (mode == CONTROL_MODE_REDUCED) {
        /* 降级模式:限制最大转角为正常值的50% */
        targetAngle.angle = driverIntent.angle * 0.5f;
    } else {
        /* 正常模式:变传动比控制(示例:车速越高,转角增益越小) */
        float speedGain = 1.0f / (1.0f + vehState.speed * 0.01f);
        targetAngle.angle = driverIntent.angle * speedGain;
    }

    /* 4. 输出目标转角到ActuatorCmd_SWC */
    Rte_Write_P_TargetAngle_Data(&targetAngle);

    /* 5. 自检:与上一周期输出比较,检测异常跳变 */
    if (fabsf(targetAngle.angle - targetAngle_prev) > 30.0f) {
        faultCounter++;
        if (faultCounter >= FAULT_DETECT_TIME_MS / 10u) {
            /* 连续50ms异常,上报FaultMgmt_SWC */
            FaultStatus_T fault;
            fault.id = FAULT_ANGLE_JUMP;
            Rte_Write_P_FaultStatus_Status(&fault);
            faultCounter = 0u;
        }
    } else {
        faultCounter = 0u;
    }
    targetAngle_prev = targetAngle.angle;
}
// ========== ARXML:ControlCore_SWC 端口与RTE映射(关键片段) ==========
<SWC>
  <short-name>ControlCore_SWC</short-name>
  <ports>
    <RPort>  <short-name>P_SteeringAngle</short-name>
      <interface>SteeringAngle_Interface</interface>  <!-- C/S接口 -->
    </RPort>
    <RPort>  <short-name>P_VehicleSpeed</short-name>
      <interface>VehicleSpeed_Interface</interface>
    </RPort>
    <PPort>  <short-name>P_TargetAngle</short-name>
      <interface>TargetAngle_Interface</interface>
    </PPort>
    <PPort>  <short-name>P_FaultStatus</short-name>
      <interface>FaultStatus_Interface</interface>
    </PPort>
    <RPort>  <short-name>P_ControlMode</short-name>
      <interface>ControlMode_Interface</interface>  <!-- 模式接口 -->
    </RPort>
  </ports>
</SWC>

<!-- RTE连接:SteeringWheelSensor_SWC.P_SteeringAngle --> ControlCore_SWC.P_SteeringAngle -->
<RTE-Connector>
  <short-name>Conn_Angle_Sensor2Control</short-name>
  <rte-connector-type>CS-COMMUNICATION</rte-connector-type>
  <rte-connector-protocol>E2E_PROFILE_5</rte-connector-protocol>
  <rte-connector-period>10ms</rte-connector-period>
</RTE-Connector>

落地与验证方法

文件与工具链:本案例的ARXML配置与C代码需导入AUTOSAR工具链(如Vector DaVinci Developer、EB tresos)生成RTE与BSW配置。C代码骨架可直接编译用于Simulink/嵌入式目标仿真。

验证步骤:

  1. 静态检查:在DaVinci Developer中检查SWC端口与接口一致性,确认无未连接端口。
  2. RTE生成:生成RTE代码后,检查Rte_Read/Write函数签名与ARXML定义一致。
  3. 功能仿真:在Simulink中集成ControlCore_SWC代码,输入方向盘阶跃信号(90°),车速恒定60km/h,观察目标转角输出是否满足变传动比曲线(预期增益约0.85,输出约76.5°)。
  4. 故障注入测试:人为将输入转角跳变100°,观察FaultMgmt_SWC是否在50ms内触发降级模式(通过RTE模式接口读取状态)。

判定标准:

  • 所有SWC端口在RTE中成功映射,无悬空端口告警;
  • 仿真中目标转角输出与理论计算偏差小于1°;
  • 故障注入后,降级模式标志在50ms±5ms内置位,且ControlCore_SWC输出限幅至正常值的50%。
SBW系统AUTOSAR分层架构映射图 应用层(Application Layer) Partition 1 (ASIL-D) SteeringWheel Sensor_SWC ControlCore _SWC ActuatorCmd _SWC Partition 2 (ASIL-B) VehicleState _SWC DriverFeedback _SWC FaultMgmt _SWC E2E保护 RTE(运行时环境)— 通信路由 / E2E Profile 5 / 分区间通信保护 基础软件层(BSW) MCU / PORT ADC/PWM/SPI CanSM/CanIf 500kbps Com / E2E PDU周期10ms Dcm UDS 0x22/0x2E NvM 零点标定存储 WdgM 10ms喂狗监控 图例: C/S接口通信(周期10ms) 跨分区通信(E2E保护) ASIL-D分区 ASIL-B分区 FaultMgmt_SWC跨分区监控:比较ControlCore_SWC目标转角与ActuatorCmd_SWC反馈,偏差>5°持续50ms触发降级 BSW模块通过RTE为应用层提供硬件抽象,WdgM监控ControlCore_SWC 10ms周期任务