PID控制器、超前校正网络等经典传递函数的C语言实现

您所在的位置:网站首页 pi控制器是超前还是滞后 PID控制器、超前校正网络等经典传递函数的C语言实现

PID控制器、超前校正网络等经典传递函数的C语言实现

2023-11-14 11:28| 来源: 网络整理| 查看: 265

前面发了一个视频,主要讲如何通过系统辨识来得到系统的传递函数,接着通过仿真,用仿真出来的控制器参数,来指导实际的控制器调节。

但这里实际上有一个问题,就是我们理论上的PID控制器、或者各种校正网络:超前校正网络、滞后校正网络等等,或者书上常讲的什么一阶惯性环节,到底怎么在C语言上实现?

我自己本科在学控制的时候,就经常有一个问题,就是老师讲的这些理论,我到底怎么用在我的智能车、机器人上呢?

这篇文章就是为了解决这个问题。

PID控制器

我们先来看PID控制器,PID控制器的传递函数为:

为了等下方便变成微分方程,我们先稍微变形一下:

好了,现在变成微分方程(实际上就是变回时域):

考虑到这是理论上的连续系统,实际上我们在C语言只能是离散系统,因此继续变成差分方程:

需要注意,一定不要漏掉I项和D项的T。这个T是程序实现差分方程的采样时间,也就是多久调用一次这个函数。比如PID控制是5ms控制一次,那么这个T就是。网上很多推导,推导最后漏掉了这两个T,虽然说这样也能调出合适的参数,只是这样调出来的Ki和Kd与理论值会差一个T倍的系数,因此为了能把理论值直接用上,这个T不要漏掉。包括之后所有的差分方程,都有一个T。

好了,有了差分方程,我们就可以在C上实现了。

超前校正网络

好了,接下来我们再推一个超前校正网络,传递函数是:

同样变形:

微分方程:

差分方程:

好了,下面是C语言实现:

一阶惯性环节

这个就不再推到了,反正原理差不多,都是先列出传递函数,变成微分方程,然后变成差分方程。

传递函数:

实现:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3