如何在C/C++中实现过程调节器?

如何在C/C++中实现过程调节器?,c,microcontroller,transfer-function,C,Microcontroller,Transfer Function,问题很简单,我不知道在哪里以及如何实现传递函数 假设我有一个经典的系统 其中p具有二阶传递函数,zita=0.7,F=1,C为过程调节器 我想在C或C++中的ATMEGA128P控制器上实现这个调节器。 通过实验方法确定过程的传递函数,调节器可能根据过程传递函数而变化 我应该从哪里开始?如果你的传递函数是连续时间拉普拉斯变换,你需要在离散时间Z变换中变换它,使用离散化方法之一向前差分、向后差分、梯形 一旦你有了离散的传递函数,你将需要应用逆Z变换来获得系统的时域方程。接下来,需要确定离散化步骤

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

假设我有一个经典的系统

其中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中模拟系统

为了调整真正的嵌入式系统,我建议阅读关于齐格勒-尼科尔斯方法的书籍

有关离散化的信息:


如果你的传递函数是在连续时间拉普拉斯变换中,你需要在离散时间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中模拟系统

为了调整真正的嵌入式系统,我建议阅读关于齐格勒-尼科尔斯方法的书籍

有关离散化的信息:


第一步是选择语言。它是C还是C++?在这个项目中并不重要。使用C的唯一优点是处理时间更快。但是如果有很多代码要写,我会去C++。微控制器工作在16MHz,这对于两种语言都是足够的,在实时应用中,像是我的。所以,C,C++是什么?我们说C是为了时间。作为一个开始,你应该认识到那些能立即理解这个图表的系统工程师们不会发现这个问题。因此,你必须帮助自己,帮助别人理解你在做什么。换句话说,您需要用通俗易懂的英语完全指定系统,而不需要使用诸如经典系统、二阶传递函数和过程调节器之类的行话。您可能会发现,在尝试向他人解释您的系统的过程中,您自己会对问题有更好的理解。第一步是选择语言。它是C还是C++?在这个项目中并不重要。使用C的唯一优点是处理时间更快。但是如果有很多代码要写,我会去C++。此外,微控制器的工作频率为16MHz,这对于像mine.S这样的实时应用程序中的两种语言都足够了
O,它是什么,C++还是C++?为了时间的缘故,我们说C。作为一个开始,你应该认识到,那些能立即理解这个图表的系统工程师们不会发现这个问题。因此,你必须帮助自己,帮助别人理解你在做什么。换句话说,您需要用通俗易懂的英语完全指定系统,而不需要使用诸如经典系统、二阶传递函数和过程调节器之类的行话。你可能会发现,在试图向他人解释你的系统的过程中,你自己会对这个问题有更好的理解。这就是我一直在寻找的答案。非常感谢。这回答了我所有的问题。这是我一直在寻找的答案。非常感谢。这回答了我所有的问题。