数字 PID 控制算法及 Matlab 仿真
一.实验目的:
1.学习数字 PID 算法的基本原理。
2.学习数字 PID 调节器参数调节方法。
二.实验属性及设备:
验证性实验,使用电脑及相关专业软件。
三.实验原理:
1.概述
首先建立数字 PID 直流电机控制模型,然后用 Matlab 的 LTI 状态分析工具箱进行仿真,
并绘制转速及控制电压变化图形。
图:
e
k
r
k
y
k
k
u
K
2.位置式数字 PID 算法公式
k
e
0j
3.增量式数字 PID 算法公式
K
e
P
k
I
e
k
1
)
u
u
u
K
k
P
1
k
k
e
(
k
u
k
K
D
(
e
k
e
k
1
)
u
0
k
eK
k
I
K
D
(
e
k
e
2
k
1
e
k
2
)
4.Matlab LTI 工具箱函数(作为了解内容)
例:一台 150kW 直流电动机,额定电压 220V,额定转速 1000r/min,额定电流 700A,
Ra=0.05Ω,Ld=2mH,假设负载及电动机转动总惯量 GD2=125kg·m2,则:
05.0*
V
185.0
min/
r
)
RI
N
a
U
N
n
N
C
55.9
C
e
C
T
220
700
1000
AmN
/
767.1
e
2
10
05.0
3
04.0
s
T
a
T
m
C
M
L
a
R
a
2
RGD
a
CC
375
T
C
e
03.1
e
375
125
.0
185
05.0
.1
767
.0
s
051
18.0
kg
mA
传递函数为
sy
)(
su
)(
/1
2
sTT
ma
C
e
sT
m
1
41.5
2
s
.0
s
051
1
2
s
2652
s
25
490
.0
00204
利用 Matlab 建立传递函数方法为:
sys=tf(270.5,[1,40,50])
当采样间隔为 ts=0.01s 时,则其 z 变换(离散)传递函数为:
Matlab 输出为(Transfer function):
dsys=c2d(sys,ts,'z')
0.1217 z + 0.112
-----------------------------
z^2 - 1.736 z + 0.7788
Sampling time: 0.01
获得分子和分母的函数为:
[num,den]=tfdata(dsys,'v')
如果电机输入电压状态为 uk,输出转速状态为 yk。则
)2(
num
y
y
k
2
k
y
den
)2(
5.Matlab 绘图:
plot(时间数组,y 数组,'颜色及标记')
den
)3(
1
k
u
k
1
num
)3(
u
k
2
表:plot 函数标示符
标记说明
.为点。默认为连续线
红色
色彩 说明
r
g
b
k
绿色
蓝色
黑色
四.实验内容:
1.位置数字 PID 算法程序
clear all;
close all;
ts=0.01;%采样时间=0.001s
sys=tf(2652,[1,25,490]);%建立被控对象传递函数
dsys=c2d(sys,ts,'z');%把传递函数离散化
[num,den]=tfdata(dsys,'v');%离散化后提取分子、分母
e_1=0%上一偏差
Ee=0;%偏差累计
u_1=0.0;%上一状态电压
u_2=0.0;
y_1=0;%上一状态输出
y_2=0;
kp=;%PID 参数
ki=;%;
kd=;%;
for k=1:100
time(k)=k*ts;%时间参数
r(k)=500;%给定值
y(k)=-1*den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
e(k)=r(k)-y(k);%偏差
u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);
if u(k)>220
u(k)=220;
end
if u(k)<=0
u(k)=0;
end
Ee=Ee+e(k);
u_2=u_1;
u_1=u(k);
y_2=y_1;
y_1=y(k);
e_2=e_1;
e_1=e(k);
end
hold on;
plot(time,r,'r',time,y,'b',time,u,'r');%
[kp,ki,kd]
2.增量数字 PID 算法程序
依据上述方法自己编写增量式 PID 算法程序。
3.程序调试好后,分别改变 KP、KI 和 KD 参数值,看输出图形有何变化,理解 PID 控
制中比例、积分和微分对控制系统的作用。
图:
4.程序中可加入如下语句
if k<50
r(k)=400;
else
r(k)=800;
end
然后观察连续调速时图形变化的情况。
五.实验要求:
图:
复习理解数字 PID 控制算法,及 matlab 使用方法,编制位置式和增量式算法控制程序。