深入浅出PID控制算法(二) 您所在的位置:网站首页 pi调节公式关系 深入浅出PID控制算法(二)

深入浅出PID控制算法(二)

#深入浅出PID控制算法(二)| 来源: 网络整理| 查看: 265

GitHub 微信公众号 知乎 B站 CSDN

PID算法离散化和增量式PID算法原理及Matlab实现 引言1 准备工作1.1 位置式PID算法1.2 增量式PID算法 2 Matlab仿真2.1 仿真效果(PID调参后)2.2 调参过程2.3 Simulink仿真部分 3 结论相关阅读

引言

上篇介绍了连续系统的PID算法,但是计算机控制是一种采样控制,他只能根据采样时刻的偏差来计算控制量,因此计算机控制系统中,必须对公式进行离散化,具体就是用求和代替积分,用向后差分来代替微分,使模拟PID离散化为数字形式的差分方程。

1 准备工作

在采样周期足够小时,可以作如下近似: 在这里插入图片描述式中

T————为采样周期k————为采样序号,k=0,1,2….

用这种近似方法,可以得到两种形式数字PID控制算法

1.1 位置式PID算法

由前面推倒很容易得到离散化后的表达式 在这里插入图片描述

由此式可以看出数字调节的输出u(k)跟过去的所有偏差信号有关,计算机需要对e(i)进行累加,运算量太大,一般不用,重点说明增量式PID算法。

1.2 增量式PID算法

由于位置式PID的算法不够方便,不仅对偏差进行累加,占用过多的存储单元,而且不方便写程序,所以需要进行一些改进,对位置式取增量,方法如下: 在这里插入图片描述

2 Matlab仿真

分析过程

对G(s)进行离散化即进行Z变换得到Z传递函数G(Z);分子分母除以z的最高次数即除以z的最高次得到;由z的位移定理Z[e(t-kt)]=z^k*E(z)逆变换得到差分方程;PID编程实现

具体实现细节在代码注释中已经给出

%设一被控对象G(s)=50/(0.125s^2+7s), %用增量式PID控制算法编写仿真程序 %(输入分别为单位阶跃、正弦信号,采样时间为1ms,控制器输出限幅:[-3,3], % 仿真曲线包括系统输出及误差曲线)。 ts=0.001; %采样时间 sys=tf(50,[0.125,7, 0]); %tf是传递函数 即被控对象函数G(); dsys=c2d(sys,ts,'z'); %把控制函数离散化取Z变换n阶定常离散系统差分方程 %在零初始条件下取Z变换: %dsys即Y(z)/U(z) [num,den]=tfdata(dsys,'v');% 离散化后提取分子、分母 u_1=0.0; u_2=0.0; y_1=0.0; y_2=0.0; x=[0,0,0]'; error_1=0; error_2=0; %核心代码 for k=1:1:1000 time(k)=k*ts; %采样次数 S=1; if S==1 %阶跃输入 kp=6.5;ki=0.1;kd=1; %初始化PID rin(k)=1; %Step Signal elseif S==2 %正弦输入 kp=10;ki=0.1;kd=15; rin(k)=0.5*sin(2*pi*k*ts); %Sine Signal 即实际输入 end du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller 控制系数 u(k)=u_1+du(k); %真正的PID输出应该为du+前一时刻的输出 if u(k)>=3 u(k)=3; end if u(k)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有