打印
[其他]

使用整数来计算PID,以提高MCU效率及减少生成的代码量

[复制链接]
楼主: 356053261
手机看帖
扫描二维码
随时随地手机跟帖
21
356053261|  楼主 | 2024-8-5 18:06 | 只看该作者 回帖奖励 |倒序浏览
356053261 发表于 2024-8-5 18:02
空载和重载的PWM脉宽是不一样的,数字电源中PID用增量PID控制,PID返回的是需要调整多少当前电压与目标电 ...

如果输出电压高了需要回调,则会返回负数,要考虑这里负数计算会不会有问题

使用特权

评论回复
22
yutingwei| | 2024-12-31 00:39 | 只看该作者
与浮点数运算相比,整数运算通常更为高效,因为整数运算不需要额外的硬件支持,且生成的代码通常较小,执行速度更快。

使用特权

评论回复
23
Amazingxixixi| | 2024-12-31 14:15 | 只看该作者
放大倍数

使用特权

评论回复
24
地瓜patch| | 2025-1-21 21:38 | 只看该作者
好主意

使用特权

评论回复
25
朝生| | 2025-1-24 07:52 | 只看该作者
我用浮点数来计算,所以无法体会速度的差异

使用特权

评论回复
26
AIsignel| | 2025-1-24 14:12 | 只看该作者
整数取代了浮点,只能在极其苛刻的性能条件下使用

使用特权

评论回复
27
jtracy3| | 2025-2-4 16:27 | 只看该作者
整数运算比浮点运算更高效,可以显著提高MCU的执行速度并减少生成的代码量。

使用特权

评论回复
28
biechedan| | 2025-2-4 18:07 | 只看该作者
由于积分项是不断累加的,可能会出现积分饱和的问题。可以通过积分限幅的方式来避免积分饱和,即当积分项超过一定范围时,将其限制在该范围内。

使用特权

评论回复
29
uiint| | 2025-2-4 22:04 | 只看该作者
采用增量式PID算法代替位置式PID算法。增量式PID算法只需要计算当前控制量与前一次控制量的差值,不需要每次计算都累加积分项,从而减少了计算量和代码复杂度。例如,在计算过程中,可以直接使用上一次的误差和积分值来计算本次的控制量,避免了重复计算。

使用特权

评论回复
30
yeates333| | 2025-2-5 08:42 | 只看该作者
由于浮点数运算在MCU上通常比较耗时且占用较多的资源,可以将所有参数和计算结果都转换为定点数进行运算。通过选择一个合适的固定小数点位置,将整数部分和小数部分组合成一个整数来表示实际的数值。在计算完成后,再根据需要将结果转换回浮点数形式。例如,可以将数值放大一定的倍数后进行整数运算,最后再除以相同的倍数得到实际结果。

使用特权

评论回复
31
maqianqu| | 2025-2-5 09:14 | 只看该作者
根据实际应用调整比例、积分和微分常数,以达到最佳控制效果。

使用特权

评论回复
32
1988020566| | 2025-2-5 10:18 | 只看该作者
合理安排变量的定义和使用顺序,避免重复声明和初始化变量,减少代码的冗余。同时,尽量使用局部变量来代替全局变量,以提高代码的可读性和执行效率。

使用特权

评论回复
33
caigang13| | 2025-2-5 11:17 | 只看该作者
PID算法看起来很简单,但是要把参数调好还是不容易的。

使用特权

评论回复
34
yorkbarney| | 2025-2-5 11:52 | 只看该作者
在进行定点数运算时,需要注意数值范围和精度的控制,避免因溢出或舍入误差导致计算结果不准确。

使用特权

评论回复
35
sesefadou| | 2025-2-5 15:20 | 只看该作者
为了将误差、积分和微分项转换为整数,需要选择一个合适的比例因子(scaling factor)。比例因子的选择取决于误差和增益的范围,确保所有计算结果在整数表示范围内。

使用特权

评论回复
36
qiufengsd| | 2025-2-5 15:50 | 只看该作者
将PID控制器的比例系数(Kp)、积分系数(Ki)和微分系数(Kd)分别乘以一个缩放因子,转换为整数形式。

使用特权

评论回复
37
backlugin| | 2025-2-5 16:16 | 只看该作者
使用整数计算PID以提高MCU效率和减少生成代码量需综合多方面考量。

使用特权

评论回复
38
lzmm| | 2025-2-5 17:35 | 只看该作者
在进行整数运算时,需要注意检查是否会发生溢出。可以在关键的计算步骤中添加溢出检查代码

使用特权

评论回复
39
robertesth| | 2025-2-5 19:17 | 只看该作者
由于运算速度更快,MCU可以更快完成任务并进入低功耗模式,从而降低整体功耗。

使用特权

评论回复
40
pl202| | 2025-2-5 19:51 | 只看该作者
整数运算的代码通常更紧凑,占用的闪存空间更少。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则