- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
江苏科技大学
电子信息学院
实 验 报 告
评定成绩指导教师宋英磊
评定成绩
指导教师
宋英磊
实验名称:数字 PID 控制器的 MATLAB 仿真
学号: 1345733203 姓名: 胡文千 班级: 完成日期: 2015 年 11 月 16 日
一、 实验目的
掌握用SIMULINK 对系统进行仿真的基本方法。
对PID 数字控制器进行仿真。
二、 实验内容
1、基本的 PID 控制
在模拟控制系统中,控制器最常用的控制规律是 PID 控制。模拟 PID 控制系统原理框图如图 1-1 所示。
比例
比例
r(t)
e(t)
微分
+
u(t)
y(t)
被控对象
- +
积分
图 1-1 模拟 PID 控制系统原理框图
PID 控制规律为:
?? 1 ? t
?
de(t) ?
u(t) ? k p ? e(t) ? T
I
U (s)
e(t)dt ? T
0 D
I? 1
I
dt ?
???
?
?
或写成传递函数的形式G(s) ?
E(s)
? k p ?1 ? T s
T s
D
仿真 1 以二阶线性传递函数
133
s 2 ? 25s
? ?
为被控对象,进行模拟 PID 控制。输入信号
r(t) ? sin(2? * 0.2t) ,仿真时取k ? 60, k ? 1, k ? 3 ,采用 ODE45 迭代方法,仿真时间
p i d
10s。
仿真方法:在 Simulink 下进行仿真,PID 控制由 Simulink Extras 节点中的 PID Controller
提供。
仿真程序:ex1_1.mdl,如图 1-2 所示。
图 1-2 连续系统 PID 的 Simulink 仿真程序
将该连续系统的模拟 PID 控制正弦响应结果截图后至于下面的空白处: 连续系统的模拟PID 控制正弦响应如图 1-3 所示。
图 1-3 连续系统的模拟PID 控制正弦响应
2、连续系统的数字 PID 控制仿真
计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此连续PID 控制算法不能直接使用,需要采用离散化方法。在计算机 PID 控制中,使用的是数字 PID 控制器。
按模拟PID 控制算法,以一系列的采样时刻点 kT 代表连续时间t,以矩形法数值积分近
似代替积分,以一阶后向差分近似代替微分,可得离散PID 位置式表达式:
T
T ?k
?u(k ) ? k p ? e(k ) ? T
?
e( j) ?
T ?
D (e(k ) ? e(k ? 1))?
I
? k e(k ) ? k ?k
j ?0
e( j)T ? k
T ?
e(k ) ? e(k ? 1)
p i d T
j ?0
k
式中,k
i
? p , k T d
I
? k T
p D
,e 为误差信号(即PID 控制器的输入),u 为控制信号(即控制
器的输出)。
在仿真过程中,可根据实际情况,对控制器的输出进行限幅。连续系统的数字PID 控制可实现D/A 及 A/D 的功能,符合数字实时控制的真实情况,计算机及 DSP 的实时PID 控制都属于这种情况。
仿真 2 设被控对象为一个电机模型传递函数G(s) ?
1
Js 2 ? Bs
,式中J=0.0067,B=0.1。输
入信号为0.5sin(2? t) ,采用 PID 控制,其中k
p
? 20, k
d
? 0.5 。采用 ODE45 方法求解连
续被控对象方程。
仿 真 方 法 : 因 为 G(s) ?
Y (s) ? 1
, 所 以 J
d 2 y ? B dy ? u , 另
U (s) Js 2
?? y? ? y
Bs dt 2 dt
y1 ? y, y2 ? y?,则? y?2 ? ?
1 2 (1/J)*u ,因此连续对象微分方程函数ex3f.m 如下
?? (B/J)y2 ?
function dy = ex3f(t,y,flag,para) u=para;
J=0.0067;B=0.1;
dy=zeros(2,1); dy(1) = y(2);
dy(2) = -(B/J)*y(2) + (1/J)*u;
控制主程序ex3.m clear all; close all;
ts=0.001; %采样周期
xk=zeros(2,1);%被控对象经A/D转换器的输出信号y的初值e_1=0;%误差e(k-1)初值
u_1=0;%控制信号u(k-1)初值
for k=1:1:2000 %k为采样步数
time(k) = k*ts; %time中存放着各采样时刻
rin(k)=0.50*sin(1*2*pi*k*ts); %计算输入信号的采样值
para=u_1; % D/A tSpan=[0
文档评论(0)