当前位置: 首页 > news >正文

AUTOSAR进阶图解==>AUTOSAR_SWS_EFXLibrary

AUTOSAR 扩展定点数学库 (EFX) 详解

基于AUTOSAR标准规范的扩展定点数学功能解析

目录

  • 1. 概述
    • 1.1 EFX库的作用
    • 1.2 架构定位
  • 2. 架构设计
    • 2.1 EFX库在AUTOSAR架构中的位置
    • 2.2 EFX库的组件结构
  • 3. 功能组件详解
    • 3.1 控制器函数
    • 3.2 控制器函数流程
  • 4. API详解
    • 4.1 通用API
    • 4.2 版本管理API
    • 4.3 控制器API
  • 5. 总结

1. 概述

1.1 EFX库的作用

AUTOSAR扩展定点数学库(EFX)是AUTOSAR基础软件层中的系统服务组件,提供了一系列用于定点数学计算的函数。这些函数广泛应用于需要高精度、确定性数学计算的嵌入式系统,尤其是在资源受限且不支持浮点运算的平台上。

EFX库的主要特点:

  • 提供完整的定点数数学运算支持
  • 所有函数均支持可重入性,可被多个runnable同时调用
  • 符合AUTOSAR标准规范,具有良好的兼容性
  • 优化的实现确保高效执行和低资源占用

1.2 架构定位

EFX库作为AUTOSAR架构中的一部分,位于基础软件层的系统服务中。它为上层应用软件组件提供标准化的定点数学函数接口,隐藏了底层实现细节,提高了软件的可移植性和重用性。


2. 架构设计

2.1 EFX库在AUTOSAR架构中的位置

在这里插入图片描述

组件 EFX库:

  • 职责: 提供AUTOSAR标准的扩展定点数学功能
  • 功能点:
    • 提供定点数学计算API
    • 支持多种控制器和滤波器算法
    • 实现高精度数学运算
    • 确保计算结果的确定性

层 应用层:

  • 范围: 包含具体应用功能的软件组件
  • 包含模块: 应用软件组件等

层 运行时环境:

  • 范围: 连接应用层和基础软件层的中间层
  • 包含模块: RTE组件

层 基础软件层:

  • 范围: 提供标准化的基础软件功能
  • 包含模块:
    • 系统服务(包括AUTOSAR库、操作系统等)
    • 微控制器抽象层(包括硬件驱动等)

关系 应用软件组件–>EFX库:

  • 应用软件通过标准API调用EFX库提供的数学函数进行复杂计算

关系 基础软件层–>ECU硬件:

  • 基础软件层通过微控制器抽象层控制底层硬件资源

代码示例:

/* 应用层调用EFX库函数的示例 */
#include "Efx.h"void Application_ControlFunction(void)
{sint32 input = 1000;    /* 输入值 */sint32 output;          /* 输出值 */uint16 factor = 16384;  /* 控制因子, 对应0.5 (16384/32768) *//* 调用EFX库的低通滤波函数处理传感器输入 */output = Efx_LpFiltFac1_s32_s32(input, factor);/* 使用处理后的输出进行控制 */Actuator_SetValue(output);
}

2.2 EFX库的组件结构

在这里插入图片描述

组件 EFX库:

  • 职责: 提供完整的定点数学功能集合
  • 结构: 包含多个功能模块,每个模块提供特定类别的数学功能

组件 控制器函数:

  • 职责: 实现各种控制器算法
  • 功能点:
    • PT1控制器: 一阶低通滤波控制器,用于平滑信号
    • DT1控制器: 微分时间控制器,用于处理信号变化率
    • PD控制器: 比例-微分控制器,用于快速响应系统变化
    • I控制器: 积分控制器,用于消除静态误差
    • PI控制器: 比例-积分控制器,结合P和I优点
    • PID控制器: 比例-积分-微分控制器,用于全面控制系统

组件 滤波函数:

  • 职责: 提供信号滤波算法
  • 功能点:
    • 低通滤波器: 允许低频信号通过,滤除高频干扰
    • 高通滤波器: 允许高频信号通过,滤除低频干扰
    • 移动平均: 计算信号的滑动平均值,平滑数据

组件 三角函数:

  • 职责: 提供定点数实现的三角函数
  • 功能点:
    • 正弦函数: 计算角度的正弦值
    • 余弦函数: 计算角度的余弦值
    • 反正弦函数: 计算正弦值对应的角度
    • 反余弦函数: 计算余弦值对应的角度

组件 限幅函数:

  • 职责: 限制信号在特定范围内
  • 功能点:
    • 斜率限制器: 限制信号变化速率
    • 分段限制器: 根据不同条件应用不同限制
    • 滞环函数: 实现带滞回特性的限幅功能

组件 数学函数:

  • 职责: 提供基础数学运算
  • 功能点:
    • 平方根: 计算数值的平方根
    • 斜坡函数: 生成斜坡信号
    • 死区: 处理信号中的死区
    • 轴角计算: 计算斜边长度(勾股定理)

组件 数组操作:

  • 职责: 提供数组处理算法
  • 功能点:
    • 升序排序: 将数组元素按升序排列
    • 降序排序: 将数组元素按降序排列
    • 中值排序: 找出数组的中值

代码示例:

/* EFX库组件之间的交互示例 */
#include "Efx.h"/* 控制器状态和参数结构体 */
Efx_StatePT1_Type pt1State;
Efx_ParamPD_Type pdParam;/* 传感器信号处理处理函数 */
void ProcessSignal(sint32 rawSignal, sint32* processedSignal)
{sint32 filteredSignal;sint32 limitedSignal;sint32 controlOutput;/* 使用低通滤波器消除噪声 */filteredSignal = Efx_LpFiltFac1_s32_s32(rawSignal, 16384); /* 因子0.5 *//* 使用斜率限制器限制变化速率 */limitedSignal = Efx_SlewRate_s32(filteredSignal, 100); /* 最大变化率100 *//* 使用PT1控制器处理信号 */controlOutput = Efx_PT1_s32(limitedSignal, &pt1State);/* 返回处理后的信号 */*processedSignal = controlOutput;
}

3. 功能组件详解

3.1 控制器函数

控制器函数是EFX库中最重要的组件之一,它们用于实现各种控制算法。这些控制器使用拉普拉斯-Z变换推导参数,以实现精确的定点数控制计算。

主要控制器类型:

  • PT1控制器: 一阶低通滤波控制器,使用滞后环节平滑输入信号
  • DT1控制器: 微分-时间控制器,对输入信号的变化率进行处理
  • PD控制器: 比例-微分控制器,结合比例控制和微分控制的优点
  • I控制器: 积分控制器,消除静态误差
  • PI控制器: 比例-积分控制器,结合快速响应和稳态精度
  • PID控制器: 比例-积分-微分控制器,提供全面的控制性能

控制器系统状态结构体:

/* PT1控制器状态结构体 */
typedef struct {sint32 X1; /* 前一时间步输入值 */sint32 Y1; /* 前一时间步输出值 */
} Efx_StatePT1_Type;/* DT1-Type1控制器状态结构体 */
typedef struct {sint32 X1; /* 前一时间步输入值 */sint32 X2; /* 前两个时间步输入值 */sint32 Y1; /* 前一时间步输出值 */
} Efx_StateDT1Typ1_Type;/* PD控制器参数结构体 */
typedef struct {sint32 K_C;  /* 比例系数 */sint32 Tv_C; /* 前置时间 */
} Efx_ParamPD_Type;

3.2 控制器函数流程

在这里插入图片描述

控制器函数的一般流程包括:

  1. 输入控制器参数: 包括放大系数K、前置时间Tv、跟随时间Tn和衰减时间常量T1等
  2. 创建控制器状态结构体: 用于存储控制器的状态变量,如前一时间步的输入和输出
  3. 应用系统参数换算: 进行参数转换,如计算Tnrec、T1rec和TeQ等值
  4. 根据控制器类型执行计算: 不同控制器使用不同的计算公式
  5. 执行饱和限制处理: 确保输出在有效范围内,防止溢出
  6. 更新控制器状态: 保存当前输入和输出作为下一步的状态
  7. 输出计算结果: 返回控制器的计算结果

详细解释:

PT1控制器计算:

  • PT1控制器实现一阶低通滤波功能
  • 计算公式: Yn = (Xn + X1) / 2 + TeQ * (Yn-1 - Xn)
  • 其中TeQ是时间等效参数,由TeQ = exp(-dT/T1)计算得出
  • 饱和处理确保输出不会超出sint32范围

代码示例:

/* PT1控制器函数实现示例 */
sint32 Efx_PT1_s32(sint32 Xn, Efx_StatePT1_Type* State)
{sint32 Yn;sint32 TeQ = 16384; /* 时间等效参数,这里使用0.5作为示例 */if (State == NULL_PTR) {return 0; /* 错误处理 */}/* 执行PT1控制器计算 */Yn = ((Xn + State->X1) >> 1) + /* (Xn + X1) / 2 */((TeQ * (State->Y1 - Xn)) >> 15); /* TeQ * (Yn-1 - Xn) / 32768 *//* 执行饱和限制处理 */if (Yn > INT32_MAX) {Yn = INT32_MAX;}else if (Yn < INT32_MIN) {Yn = INT32_MIN;}/* 更新控制器状态 */State->X1 = Xn;State->Y1 = Yn;return Yn;
}

4. API详解

4.1 通用API

EFX库提供了一套标准化的API,遵循AUTOSAR命名规范。主要API类别包括:

控制器API:

  • Efx_PT1_*: PT1控制器函数
  • Efx_DT1_*: DT1控制器函数
  • Efx_PD_*: PD控制器函数
  • Efx_I_*: I控制器函数
  • Efx_PI_*: PI控制器函数
  • Efx_PID_*: PID控制器函数

滤波器API:

  • Efx_LpFilt*: 低通滤波器函数
  • Efx_HpFilt*: 高通滤波器函数
  • Efx_MovingAverage_*: 移动平均函数

数学函数API:

  • Efx_Sin_*: 正弦函数
  • Efx_Cos_*: 余弦函数
  • Efx_Arcsin_*: 反正弦函数
  • Efx_Arccos_*: 反余弦函数
  • Efx_Sqrt_*: 平方根函数
  • Efx_Hypot_*: 斜边计算函数

限幅函数API:

  • Efx_SlewRate_*: 斜率限制器
  • Efx_Limiter_*: 分段限制器
  • Efx_Hysteresis_*: 滞环函数

数组操作API:

  • Efx_SortAscend_*: 升序排序函数
  • Efx_SortDescend_*: 降序排序函数
  • Efx_MedianSort_*: 中值排序函数

4.2 版本管理API

根据AUTOSAR标准,EFX库提供了版本信息查询功能:

/* 版本信息结构体定义 */
typedef struct {uint16 vendorID;        /* 供应商ID */uint16 moduleID;        /* 模块ID */uint8  sw_major_version; /* 软件主版本号 */uint8  sw_minor_version; /* 软件次版本号 */uint8  sw_patch_version; /* 软件补丁版本号 */
} Efx_VersionInfoType;/* 获取EFX库版本信息的函数 */
void Efx_GetVersionInfo(Efx_VersionInfoType* versioninfo);

4.3 控制器API

控制器API是EFX库的核心功能,提供了各种控制算法的实现:

PT1控制器:

/* PT1控制器函数 */
sint32 Efx_PT1_s32(sint32 Xn, Efx_StatePT1_Type* State);
sint16 Efx_PT1_s16(sint16 Xn, Efx_StatePT1_Type* State);

DT1控制器:

/* DT1控制器函数 - 类型1 */
sint32 Efx_DT1Typ1_s32(sint32 Xn, Efx_StateDT1Typ1_Type* State);/* DT1控制器函数 - 类型2 */
sint32 Efx_DT1Typ2_s32(sint32 Xn, Efx_StateDT1Typ2_Type* State);

PID控制器:

/* PID控制器函数 */
sint32 Efx_PID_s32(sint32 Xn, Efx_StatePID_Type* State, Efx_ParamPID_Type* Param);

5. 总结

AUTOSAR扩展定点数学库(EFX)是AUTOSAR标准的重要组成部分,为嵌入式系统提供了标准化、高效的定点数学功能。通过提供一系列控制器、滤波器、三角函数等数学功能,EFX库使开发者能够在资源受限的平台上实现复杂的数学计算。

EFX库的主要优势:

  • 标准化接口: 符合AUTOSAR标准,提高软件可移植性
  • 可重入性: 所有函数支持可重入性,适合并发环境
  • 高效实现: 优化的定点数实现,减少资源消耗
  • 全面功能: 提供丰富的数学函数和控制算法

应用场景:

  • 汽车电子控制单元(ECU): 执行各种控制算法
  • 实时系统: 需要确定性计算结果的场景
  • 资源受限平台: 不支持浮点硬件的微控制器
  • 安全关键系统: 需要高可靠性数学计算的场景

EFX库作为AUTOSAR标准的一部分,将持续发展以满足现代嵌入式系统日益增长的复杂计算需求。

http://www.dtcms.com/a/284824.html

相关文章:

  • Lotus-基于大模型的查询引擎 -开源学习整理
  • 打印文件/打印机队列 - 华为OD机试真题(Java 题解)
  • QT 交叉编译环境下,嵌入式设备显示字体大小和QT Creator 桌面显示不一致问题解决
  • 中国力学大会倒计时2天●千眼狼科学仪器在实验力学研究中应用
  • 状态机(State Machine)是什么?
  • 【秋招ready】
  • 网络初级安全第二次作业
  • css样式中的选择器和盒子模型
  • JoditEditor编辑与预览模式
  • 电碳表:精准计量每一度电的碳排放
  • Python--plist文件的读取
  • 使用CosyVoice-300M实现零样本语音克隆:Xinference部署与实战
  • nginx代理websocket请求
  • Android设备标识符详解:IMEI、ANDROID_ID与OAID
  • 产品经理如何绘制服务蓝图(Service Blueprint)
  • 企业级AI智能体架构落地:工程化能力设计的全景指南
  • docker重新搭建redis集群
  • ubuntu系统+N卡 | docker compose+ollama+dify
  • ACOUSLIC-AI挑战报告:基于低收入国家盲扫超声数据的胎儿腹围测量|文献速递-医学影像算法文献分享
  • 【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
  • FreeBSD Conda Python3.12下安装GPT4Free(g4f)0.5.7.3版本
  • VR全景园区:开启智慧园区新时代
  • 2025年5大国产ETL工具横向评测
  • 【面板数据】上市公司股价同步性数据集-dta+xlsx(2000-2023年)
  • GX75C数字温度传感器可兼容TMP75C
  • 上标下标 | Unicode 符号
  • 微服务架构:从单体到分布式系统的演进与实践
  • 32位 DMIC 数据 其中高八位为符号位扩展位的理解
  • git merge-base查看某个分支从哪里拉出来的、主main分支上的某个时间之后某人的提交合并到特定分支(使用 cherry-pick 的场景)
  • 研发知识系统选型实战:从 Notion 到 Gitee Wiki 的迭代经验