tzo*_*zik 1 c microcontroller transfer-function
问题很简单,我不知道在哪里以及如何实现传递函数。
假设我有一个经典系统

其中 P 具有二阶传递函数,zita=0.7,F=1,C 是过程调节器。
我想在 C 或 C++ 中的像 ATMega128P 这样的控制器上实现这个调节器。
过程的传递函数是通过实验方法确定的,调节器可能会根据过程传递函数而变化。
我应该从哪里开始?
如果您有连续时间(拉普拉斯)的传递函数,则需要使用离散化方法之一(前向差分、后向差分、梯形)在离散时间(Z 变换)中对其进行变换。
一旦有了离散传递函数,就需要应用逆 Z 变换来获得时域中的系统方程。接下来,您需要确定离散化步骤。
如果你有这些数据,你可以很容易地在微控制器上实现这个系统,因为实际上你只会实现一个简单的方程,它可能会通过 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