设计一个“车速计算”SWC,通过Sender-Receiver端口输出车速信号。

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 DeveloperISOLAR-A):

  1. 新建一个 Atomic SWC,命名为VehicleSpeedCalculator

  2. 添加两个端口

    • RPort_WheelPulse(Require Port,接收脉冲数)。

    • PPort_VehicleSpeed(Provide Port,发送车速)。

  3. 定义接口

    • WheelPulse_IFuint32(输入)。

    • VehicleSpeed_IFfloat32(输出)。

步骤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配置

  1. 配置Runnable到RTE

    • CalculateSpeed_Runnable绑定到10ms周期任务。(例如:在Internal Behavior中创建Runnable,绑定到Timing Event(周期10ms))

  2. 端口映射

    • RPort_WheelPulse → 连接到轮速传感器SWC的Provide端口

    • PPort_VehicleSpeed → 连接到需要车速的SWC(如仪表盘控制SWC)。

  3. 生成RTE代码

    • 工具(如DaVinci Configurator)会自动生成Rte_VehicleSpeedCalculator.h/c,实现通信API(Rte_Read_XXRte_Write_XX)。

4. 与BSW的集成

  • MCAL配置(若需要直接读取硬件脉冲):

    • 配置定时器模块(如GPT)捕获轮速传感器脉冲。

    • 在BSW层实现脉冲计数服务(如通过Dio_ReadChannel读取脉冲信号)。

  • 通信配置(若车速需通过CAN发送):

    • 配置COM模块的PDU(Protocol Data Unit)和信号组,将VehicleSpeed信号映射到CAN帧。

5. 仿真与测试

  1. 静态验证

    • 检查SWC接口是否与系统架构一致(如端口方向、数据类型)。

  2. 动态测试

    • 在仿真环境(如CANoe)中注入脉冲信号,验证车速计算结果。

    • 示例测试用例:

      • 输入脉冲数100 → 预期车速36 km/h

      • 输入脉冲数0 → 预期车速0 km/h

6.工具操作示例(以Vector DaVinci为例)

  1. 创建SWC

    • 在DaVinci Developer中右键SW Components → Create Atomic SWC

  2. 添加端口

    • 拖拽Sender-Receiver Interface到SWC,定义方向(Provide/Require)。

  3. 配置Runnable

    • Internal Behavior中创建Runnable,绑定到Timing Event(周期10ms)。

AUTOSAR学习引导

Autosar精华-优快云博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低调包含不哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值