MATLAB-离散系统的数字PID控制仿真
%PID Controller
clear all;
close all; ts=0.001; %采样时间=0.001s
sys=tf(5.235e005,[,87.35,1.047e004,]); %建立被控对象传递函数
dsys=c2d(sys,ts,'z'); %把传递函数离散化
[num,den]=tfdata(dsys,'v'); % 离散化后提取分子、分母 u_1=0.0;u_2=0.0;u_3=0.0; %输入向量 的初始状态
y_1=0.0;y_2=0.0;y_3=0.0; %输出的初始状态
x=[,,]'; %PID的3个参数Kp Ki Kd组成的数组
error_1=; %初始误差
for k=::
time(k)=k*ts; % 仿真时间500ms S=;
if S==
kp=0.50;ki=0.001;kd=0.001;
yd(k)=; %Step Signal 指令为阶跃信号
elseif S==
kp=0.50;ki=0.001;kd=0.001;
yd(k)=sign(sin(**pi*k*ts)); %Square Wave Signal 指令为方波信号
elseif S==
kp=1.5;ki=1.0;kd=0.01; %Sine Signal 指令为正弦信号
yd(k)=0.5*sin(**pi*k*ts);
end u(k)=kp*x()+kd*x()+ki*x(); %PID Controller
%Restricting the output of controller %限制控制器的输出
if u(k)>=
u(k)=;
end
if u(k)<=-
u(k)=-;
end
%Linear model
y(k)=-den()*y_1-den()*y_2-den()*y_3+num()*u_1+num()*u_2+num()*u_3; error(k)=yd(k)-y(k); %Return of parameters %返回pid参数
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k); x()=error(k); %Calculating P
x()=(error(k)-error_1)/ts; %Calculating D
x()=x()+error(k)*ts; %Calculating I error_1=error(k);
end
figure();
plot(time,yd,'r',time,y,'k:','linewidth',);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');
ts=0.001;采样时间=0.001s
sys=tf(400,[1,50,0]);建立被控对象传递函数
dsys=c2d(sys,ts,'z');把传递函数离散化(问题1)
[num,den]=tfdata(dsys,'v');离散化后提取分子、分母
rin=1.0;输入为阶跃信号
u_1=0.0; u_2=0.0; 什么东西的初始状态(问题2)
y_1=0.0; y_2=0.0; 是不是输出的初始状态
error_1=0;初始误差
x=[0 0 0]';PID的3个参数Kp Ki Kd组成的数组
p=100;仿真时间100ms
for k=1:1:p
r(k)=rin;
u(k)=kpidi(1)*x(1)+kpidi(2)*x(2)+kpidi(3)*x(3)
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;(问题3)
error(k)=r(k)-yout(k);
%返回pid参数
u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
x(1)=error(k);
x(2)=(error(k)-error_1)/ts;
x(3)=x(3)+error(k)*ts;
error_2=error_1;
error_1=error(k);
end
问题1:把传递函数离散化[SYSD,G]=C2D(SYSC,Ts,METHOD)这里面的method有好多种,而且用的method不一样得出的结果也不一样,这些参数究竟有什么区别?
问题2:这些是不是PID控制器输出的初始状态,“rin--①--PID控制器--②--被控对象--③---”是不是就是上面②的地方的信号值?
问题3(关键问题):这个式子是怎么得出来的?从传递函数得出差分方程是个什么步骤,要具体点的或者给本参考书。
又如:在《先进PID控制MATLAB仿真(第二版)》P146有 被控对象G(s)=133/(s^2+25s),采样时间为1ms,采用z变换进行离散化,经过z变换后的离散化对象为yout(k)=-den(2)yout(k-1)—den(3)yout(k-2)十num(2)u(k-1)+num(3)u(k-2)(实在是搞不明白怎么来的)
问题4:不是线性的对象可不可以写成差分方程的形式,比如G(s)=20e^(-0.02s)/(1.6s^2+4.4s+1)带了个纯延迟的该怎么弄。或者换成个3阶对象怎么写成差分方程
最佳答案
1、c2d:假设在输入端有一个零阶保持器,把连续时间的状态空间模型转到离散时间状态空间模型。
[SYSD,G]=C2D(SYSC,Ts,METHOD)里面的method包括:
zoh 零阶保持, 假设控制输入在采样周期内为常值,为默认值。
foh 一阶保持器,假设控制输入在采样周期内为线性。 tustin 采用双线性逼近。
matched 采用SISO系统的零极点匹配法
2、只有U_1是2处的初始状态值,而U_2是用来传递U(k)的,所以U_2是U_1在下一个ts时间内的值
3、从差分方程获取传递函数:
y(k)+a1y(k-1)+……+any(k-n)=b0x(k)+b1x(k-1)+……+bmx(k-m)在零初始条件下对,对方程两边进行Z变换,得到该系统的脉冲传递函数G(Z)=Y(Z)/X(Z)=[b0z^m+b1z^(m-1)+……+bm]z^n/[z^n+a1z^(n-1)+……an]z^m 其中m《n
或等效形式G(Z)=Y(Z)/X(Z)=[b0+b1z^(-1)+……+bmz^(-m)]/[1+a1z^(-1)+……anz^(-n)] 其中m《n
从脉冲传递函数到差分方程
G(Z)=Y(Z)/X(Z)=[b0+b1z^(-1)+……+bmz^(-m)]/[1+a1z^(-1)+……anz^(-n)] 其中m《n,交叉相乘得Y(Z)[1+a1z^(-1)+……anz^(-n)]=X(Z)[b0+b1z^(-1)+……+bmz^(-m)]对X(z)和Y(z)进行z逆变换得到差分方程y(k)+a1y(k-1)+……+any(k-n)=b0x(k)+b1x(k-1)+……+bmx(k-m)
http://218.6.168.52/wlxt/ncourse/jsjkzjs/web/ppt/ch4.files/frame.htm
4、纯延迟系统G(s)=20e^(-0.02s)/(1.6s^2+4.4s+1)
num=[20];
den=[1.6 4.4 1];
sys=tf(num,den,'inputdelay',0.02)
MATLAB-离散系统的数字PID控制仿真的更多相关文章
- 专家PID控制仿真学习
目录 专家控制 专家系统 专家控制 学习笔记,用于记录学习 资料:<智能控制>(第四版)--刘金琨 专家系统 一.专家系统的定义 专家系统是一类包含知识和推理的智能计算机程序,其内部包含某 ...
- 利用Matlab实现PID控制仿真
该文转自博客园: https://www.cnblogs.com/kui-sdu/p/9048534.html %PID Controller clear, clc, close all; ts=0. ...
- 四轴飞行器飞行原理与双闭环PID控制
四轴轴飞行器是微型飞行器的其中一种,相对于固定翼飞行器,它的方向控制灵活.抗干扰能力强.飞行稳定,能够携带一定的负载和有悬停功能,因此能够很好地进行空中拍摄.监视.侦查等功能,在军事和民用上具备广泛的 ...
- 数字式PID控制的应用总结
PID控制是一个二阶线性闭环控制器,通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.PID控制优点:a. 技术成熟,b. 易被人们熟悉和掌握,c. 不需要建立数学模型 ...
- 两轮自平衡小车双闭环PID控制设计
两轮自平衡小车的研究意义 ...
- PID控制及整定算法
一.PID控制算法 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID 控制的原理可以用人对炉温的手动控制来理解.阅读本 ...
- 经典PID控制及应用体会总结
经典PID控制及应用体会总结 PID控制原理 PID是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制方案: 重点关注相关算法是如何对偏差进行处理的: PID控制器各校正环节 ...
- 基于MATLAB的单级倒立摆仿真
有关代码及word文档请关注公众号“浮光倾云”,后台回复A010.02即可获取 一.单级倒立摆概述 倒立摆是处于倒置不稳定状态,人为控制使其处于动态平衡的一种摆,是一类典型的快速.多变量.非线性.强耦 ...
- 数字PID控制算法
增量式PID控制算法 量式PID控制算法 2009-07-18 10:33 (转载 出处blog.ednchina.com/tengjingshu )blog.ednchina.com/tengjin ...
随机推荐
- Java虚拟机判定对象存活算法
1.引用计数算法 描述:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器值为0的对象就是不可能再被使用的. 特点:实现简单,判定效率高. ...
- Spring+MyBatis整合过程
步骤: 1.引入Spring+MyBatis开发包 >spring(ioc aop dao)开发包 >mybatis开发包,dbcp,驱动包 >mybatis-spring.jar整 ...
- H5、C3、ES6的新特性
H5的新特性 1.语义化标签 有利于SEO,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重. 语义化的HTML在没有CSS的情况下也能呈现较好的内容结构与代码结构 方便其 ...
- 《JavaScript高级程序设计》笔记:事件(十三)
事件流 事件冒泡 IE的事件流叫做事件冒泡,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档).如下代码: <body> <div id="myDi ...
- (详细)华为Mate7 MT7-TL00的usb调试模式在哪里开启的步骤
就在我们使用pc连接安卓手机的时候,如果手机没有开启usb调试模式,pc则不能够成功识别我们的手机,在一些情况下,我们使用的一些功能较好的工具好比之前我们使用的一个工具引号精灵,老版本就需要打开usb ...
- 服务器部署Apache+PHP+MYSQL+Laravel
1.安装PHP 添加php安装源: sudo apt-get install python-software-properties sudo add-apt-repository ppa:ondrej ...
- win7下怎么安装IIS
工具/原料 win7旗舰版系统 笔记本一台 WIN7下怎么安装iis教程: 点击开始→控制面板,然后再点击程序和功能,勿点击卸载程序,否则到不了目标系统界面. 然后在程序和功能下面,点击打开和关闭wi ...
- PHP设计模式概述
PHP设计模式概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. ...
- SQL MIN() 函数
MIN() 函数 MIN 函数返回一列中的最小值.NULL 值不包括在计算中. SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN ...
- java 向上向下取整
Math.floor(1.4)=1.0 Math.round(1.4)=1 Math.ceil(1.4)=2.0 Math.floor(1.5)=1.0 Math.round(1.5)=2 Math. ...