gpt4 book ai didi

c - 如何在 C/C++ 中实现进程调节器?

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:18 26 4
gpt4 key购买 nike

问题很简单,我不知道在哪里以及如何实现传递函数。

假设我有一个经典系统

enter image description here

其中 P 具有二阶传递函数,zita=0.7,F=1,C 是过程调节器。

我想用 C 或 C++ 在 ATMega128P 这样的 Controller 上实现这个调节器。

过程的传递函数通过实验方法确定,调节器可能因过程传递函数而异。

我应该从哪里开始?

最佳答案

如果您在连续时间 (Laplace) 中有传递函数,则需要使用其中一种离散化方法(前向差分、后向差分、梯形)将其转换为离散时间(Z 变换)。

获得离散传递函数后,您将需要应用 Z 反变换以获得时域中的系统方程。接下来,您需要确定离散化步骤。

如果你有这些数据,你可以很容易地在微 Controller 上实现这个系统,因为实际上你只会实现一个简单的等式,它可能会通过 ADC 输入并根据那个和以前的输入(y [k], y[k-1], ...) 值将根据其引用 (r[k]) 生成控制值 (u[k])。

ADC (y[k]) 可以在定时器中断中读取,根据您的离散化步骤设置触发。读取值后,您可以计算 u[k] 并相应地设置执行元素。

对于实现,我会推荐 C,因为在这种情况下 C++ 可能有点矫枉过正(大多数实现此类系统的嵌入式系统都是使用 ANSI C 或 MISRA C 编程的——尤其是在汽车领域) .

在跳转到 C 之前,我会首先尝试查看我的计算是否正确,然后我会在 Simulink (MATLAB) 或 Scilab 中模拟系统。

为了调整真正的嵌入式系统,我建议阅读 Ziegler-Nichols 方法。

http://en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method

关于离散化的信息:

http://www-verimag.imag.fr/~tdang/DocumentsCours/Discretization.pdf

关于c - 如何在 C/C++ 中实现进程调节器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23849669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com