1. 需求分析
-
功能目标:根据车轮脉冲信号(轮速传感器输入)计算当前车速,并将结果通过Sender端口发送给其他SWC。
-
输入:轮速脉冲数(如
WheelPulse
,类型uint32
)。 -
输出:车速(如
VehicleSpeed
,类型float32
,单位km/h
)。 -
触发方式:周期性计算(例如每10ms执行一次)。
2. SWC设计
步骤1:定义接口
-
输入接口(Require Port):
-
端口类型:
Sender-Receiver
(接收轮速脉冲数)。 -
数据接口:
WheelPulse_IF
(数据类型uint32
)。
-
-
输出接口(Provide Port):
-
端口类型:
Sender-Receiver
(发送车速)。 -
数据接口:
VehicleSpeed_IF
(数据类型float32
)。
-
步骤2:创建SWC
使用工具(如DaVinci Developer或ISOLAR-A):
-
新建一个 Atomic SWC,命名为
VehicleSpeedCalculator
。 -
添加两个端口:
-
RPort_WheelPulse
(Require Port,接收脉冲数)。 -
PPort_VehicleSpeed
(Provide Port,发送车速)。
-
-
定义接口:
-
WheelPulse_IF
:uint32
(输入)。 -
VehicleSpeed_IF
:float32
(输出)。
-
步骤3:定义Runnable
-
Runnable名称:
CalculateSpeed_Runnable
。 -
触发类型:周期性触发(周期
10ms
)。 -
功能逻辑:
-
// 伪代码示例(最终由工具生成) void CalculateSpeed_Runnable(void) { // 1. 读取输入脉冲数 uint32 pulse = Rte_Read_RPort_WheelPulse(); // 2. 计算车速(假设每脉冲对应0.01米,时间窗口为10ms) float speed_kmh = (pulse * 0.01) / 0.01 * 3.6; // 转换为km/h // 3. 通过Sender端口发送车速 Rte_Write_PPort_VehicleSpeed(speed_kmh); }
Rte_Write_PPort_VehicleSpeed() 是由 AUTOSAR 的运行时环境(RTE)自动生成的 API 函数,用于将数据从发送端口(Sender Port)发送出去.
如果您定义了一个名为 VehicleSpeed
的发送端口,工具会生成 Rte_Write_PPort_VehicleSpeed
函数.
而这对应的RTE代码是当您配置完 SWC 和端口后,使用 Vector DaVinci Configurator 生成 RTE 代码。
3. RTE配置
-
配置Runnable到RTE:
-
将
CalculateSpeed_Runnable
绑定到10ms
周期任务。(例如:在Internal Behavior
中创建Runnable,绑定到Timing Event
(周期10ms))
-
-
端口映射:
-
RPort_WheelPulse
→ 连接到轮速传感器SWC的Provide端口。 -
PPort_VehicleSpeed
→ 连接到需要车速的SWC(如仪表盘控制SWC)。
-
-
生成RTE代码:
-
工具(如DaVinci Configurator)会自动生成
Rte_VehicleSpeedCalculator.h/c
,实现通信API(如Rte_Read_XX
、Rte_Write_XX
)。
-
4. 与BSW的集成
-
MCAL配置(若需要直接读取硬件脉冲):
-
配置定时器模块(如GPT)捕获轮速传感器脉冲。
-
在BSW层实现脉冲计数服务(如通过
Dio_ReadChannel
读取脉冲信号)。
-
-
通信配置(若车速需通过CAN发送):
-
配置COM模块的PDU(Protocol Data Unit)和信号组,将
VehicleSpeed
信号映射到CAN帧。
-
5. 仿真与测试
-
静态验证:
-
检查SWC接口是否与系统架构一致(如端口方向、数据类型)。
-
-
动态测试:
-
在仿真环境(如CANoe)中注入脉冲信号,验证车速计算结果。
-
示例测试用例:
-
输入脉冲数
100
→ 预期车速36 km/h
。 -
输入脉冲数
0
→ 预期车速0 km/h
。
-
-
6.工具操作示例(以Vector DaVinci为例)
-
创建SWC:
-
在DaVinci Developer中右键
SW Components
→Create Atomic SWC
。
-
-
添加端口:
-
拖拽
Sender-Receiver Interface
到SWC,定义方向(Provide/Require)。
-
-
配置Runnable:
-
在
Internal Behavior
中创建Runnable,绑定到Timing Event
(周期10ms)。
-
AUTOSAR学习引导