• 74查看
  • 0回复

[底层软件] 汽车电子底层软件中的数学知识

[复制链接]

该用户从未签到

发表于 28-4-2024 19:24:43 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


前言

不知为何,聊起了数学知识,感慨自己真是年纪大了,数学知识几乎忘光了,矩阵变换、特征值特征向量、计算误差、离散误差、最小余子项、傅里叶变换、拉氏变换、概率论的知识完全记不清了。

从事汽车电子底层软件多年,从MCU bootloader、MCU CP Autosar,再到现在从事中间件相关工作,底层软件好像天然的和数学“绝缘”。更多的是和状态机、与或非反等位运算、寄存器、协议栈等等打交道,似乎并不需要数学知识。

最近理了理自己接触过的软件模块,发现底层软件中也有不少数学知识,让我们一起盘点一下吧。

底层软件的数学知识

ADC相关的数学处理

ADC采样数据一般推入队列,然后再处理数据,一般采用算术平均数算法,一阶滤波算法。

算术平均数是计算平均值,又称均值,是统计学中最基本、最常用的一种平均指标。算术平均数求得ADC值的平均值,方便做后续的诊断处理。

作者注:一般ADC队列深度为16,32或者64,2的阶数的深度,方便位运算。

一阶滤波算法计算公式为:

本次滤波结果 = a *本次采样结果 + (1 - a) * 上次滤波结果。

其中,a为0~1之间的数,滤波系数。一阶滤波相当于是将新的采样值与上次的滤波结果计算一个加权平均值。滤波系数a越小,滤波结果越平滑,但反应灵敏度越低;滤波系数a越大,则反应灵敏度越高,但滤波结果平滑性越差,越不稳定。所以,在选取滤波系数时,应对平滑性和灵敏度进行考虑然后取舍。

一阶滤波优点是:对周期干扰有良好的抑制作用,适用于波动频率比较高的场合。缺点是滞后、灵敏度低。

此外,ADC采样结果还会对其求一阶导数,其物理意义在于,如果是温度值,会得到温度变化速率。温度值是连续的,不存在跳变,对温度变化速率做诊断,可增加功能安全覆盖率。

ADC中的数学误差也是不得不提的,在一个12位的ADC中,参考电压为5V,那么每一位就代表5000/4096mV,也就是说采样精度只有5000/4096mV。如果ADC采样值为10,其实代表的范围是50000/4096mV~55000/4096mV之间。这个称之为ADC的采样精度。5000/4096 = 1.2207xxx,实际使用1.2207代替5000/4096进行运算,这就会产生计算误差。

但是实际上ADC采样值10会转化成10*10000=100000,再供应用层计算。实际的HEX精度就是5000/4096/10000mV,即每一位代表1.2207/10000mV,这个值就是分辨率。一般来说,在传统控制器里,客户会对分辨率提出要求。

时间同步相关数学知识

时间同步本身计算就是一个数学公式,需要计算offset和频率,链路延时等等。

汽车电子底层软件中的数学知识w1.jpg

汽车电子底层软件中的数学知识w2.jpg

速率比的计算等于端口另一侧的PTP的时钟频率与本地PTP时钟频率的比值,由于计算出来的链路延迟两端的时钟频率不一致,所以需要乘上这个比值,计算出相对于本地时钟频率的链路延迟,由于时间测量粒度,通过对连续测量的传播延迟值进行平均,可以减少这种影响并提高精度,例如采用指数平均滤波器。

汽车电子底层软件中的数学知识w3.jpg

变量a是指数加权因子,它可以设置为使得过去的传播延迟测量在M次测量后的权重为1/e。

时间同步开源代码linuxptp中有专门一个模块delay_filter用于数据处理。支持moving_average(移动平均值)算法和moving_median(移动中位数)。

移动平均值是在时间序列分析中常用的一种方法,用于平滑数据并消除短期波动。

在 PTP 的上下文中,移动平均值可能用于跟踪和平滑网络延迟、时钟偏差等参数的变化。

通过计算过去一段时间内某个参数的平均值,可以帮助识别长期趋势和周期性变化。

移动中位数是另一种平滑技术,它计算的是过去一段时间内数据点的中位数,而不是平均值。

中位数是一种稳健的统计量,对异常值不敏感,因此它可以更好地反映数据的中心趋势,特别是在数据分布不均或存在极端值的情况下。

在 PTP 的上下文中,移动中位数可能用于更稳健地估计网络延迟或时钟偏差。

此外,linuxptp使用PID算法调整时钟的频率或相位,以最小化从主时钟到本地时钟的时间偏差。

电机控制相关数学知识

电机控制也是涉及到很多数学知识,PID算法肯定是逃不掉,无论是那种闭环方式,均需要使用PID算法。

PID算法是一种广泛应用的控制算法,用于调节系统的输出以匹配期望的或目标值。它通过计算误差(期望输出与实际输出之间的差异)并根据这个误差调整系统的控制输入来实现这一点。PID算法由三个基本部分组成:

    比例(Proportional)项:根据当前误差来调整输出。误差越大,调整量通常也越大。

    积分(Integral)项:考虑误差的累积,用于消除长期误差或偏差。积分项会随着时间的推移逐渐累积误差,并产生一个校正信号来消除这个累积误差。

    微分(Derivative)项:基于误差的变化率来预测未来的误差,并提前进行调整。这有助于减少系统的超调和振荡。

此外,电机控制还涉及到一个温度模型,通常用于预测和控制电机及其相关组件(如电容器、电阻器、逆变器等)的温度。这种模型可以帮助工程师在设计阶段评估电机的热性能,以及在运行阶段进行热管理,以防止过热和潜在的故障。

电机控制的温度模型通常基于热力学原理,包括热传导、热对流和热辐射。这些原理描述了热量如何在电机内部和外部环境之间传递。模型的输入参数可能包括电流、电压、功率、环境温度、散热条件等,而输出则是电机或其组件的温度。

在电机控制的温度模型中,通常会考虑以下几个方面:

    热阻和热容:热阻描述了热量传递的难易程度,而热容则描述了物体吸收或释放热量的能力。这些参数对于计算电机内部温度分布非常重要。

    热对流和热辐射:电机在运行过程中会产生热量,这些热量需要通过对流(如风扇或液体冷却剂)或辐射(如热辐射到周围环境)的方式散发出去。模型需要考虑这些因素以准确预测温度。

    电机损耗:电机在运行过程中会产生各种损耗,如铜损、铁损和机械损耗等。这些损耗会转化为热量,影响电机的温度。

    环境条件和散热条件:电机的环境温度和散热条件(如通风情况、冷却系统性能等)也会对电机温度产生影响。模型需要考虑这些因素以反映实际情况。


密码学中的数学知识

密码学中用到了很多数学知识,比如说各种轮函数本质上就是在做矩阵变换和矩阵计算。

RSA算法就是基于数论,理论是基于大数分解。ECC算法是基于域上的椭圆曲线群的性质。随机数的生成用到了概率论与统计学知识。

其他相关数学知识

不得不提用在温度最优估计或者速度最优估计的卡尔曼滤波算法,它是一种高效的递归滤波器,它只需要当前的测量值(包含噪声)和上一时刻的估计值,就可以对系统的状态进行最优估计。该算法的核心思想是利用前一时刻的状态估计值和当前时刻的观测值来获得动态系统当前时刻状态变量的最优估计,这个过程包括预报和分析两个步骤。

卡尔曼滤波算法的基本假设是系统的状态变量服从线性动态方程,同时观测值也受到线性变换和噪声的影响。算法通过不断地迭代更新,将观测数据和模型预测结果进行加权融合,得到最优的状态估计值。这个过程涉及到预测步骤和更新步骤:

    预测步骤:根据上一时刻的最优估计值和系统模型,预测当前时刻的状态变量和误差协方差矩阵。

    更新步骤:根据当前时刻的观测值和预测值,计算卡尔曼增益,然后更新状态变量和误差协方差矩阵。

还有很常用的查表法,一般和数据标定绑定使用。插表法需要配合线性插值(Linear Interpolation)一起使用,线性插值就是在两个已知数据点之间,未知数据点的值可以通过线性关系进行估计。这意味着假设两个已知数据点之间的数据变化是连续的,且可以由一条直线来近似表示。线性插值本质上是中点公式的变体。

参考链接


    https://blog.csdn.net/JiMoKuangXiangQu/article/details/135405068

    https://blog.csdn.net/cao849861802/article/details/124725654

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 13-5-2024 10:58 , Processed in 0.273252 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.