基于MATLAB下的PID控制仿真Word格式文档下载.docx
《基于MATLAB下的PID控制仿真Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于MATLAB下的PID控制仿真Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
丰富的程序工具箱;
可扩展性能强等。
在本文中以工程控制中常用的直流伺服电机的自动控制为例,演示MATLAB编程在自动控制系统动态仿真中的应用。
【理论推断】
1.直流伺服电机模型
1.1直流伺服电机的物理模型
图1直流伺服电机的物理模型
---电枢输入电压(
)
---电枢电阻(
---电枢电感(H)
---感应电动势(
---电机电磁转矩(N
)J---转动惯量(
B---粘性阻尼系数(
---流过电枢的电流(A)
---电机输出的转角(
本文所采用的直流伺服电机的物理模型和参数如图1所示。
1.2直流电机的数学模型
1.2.1基本方程
根据基尔霍夫定律和牛顿第二定律对图1所示的电机列基本方程:
①
②
③
④
式中:
为电机的转动常数(
)
;
为感应电动势常数(
1.2.2电机的传递函数
对上式进行拉普拉斯变换,得:
设
,则图1所示的伺服直流电机模型的方框图如图2所示
图2直流伺服电机模型方框图
消去方程组
(2)的中间变量,整理得
即G(S)为图2所示系统的开环传递函数
设图2中的系统参数如下:
2.MATLATB仿真
利用MATLAB软件对自动控制系统进行仿真的方法有多种,本文介绍一种比较简单的方法Mfile方法,即新创建一个M程序文件,然后将其在MATLABWindows主界面内运行,MATLAB软件会自动绘制出系统对外界输入的响应曲线。
2.1仿真系统的要求
图1所示的直流伺服电机的电枢在外加控制电压前是停转状态的,当电枢外加阶跃电压后,由于电枢绕组有电感,电枢电流
不能突然增加,有一个电气过程,响应的电磁转矩
的增加也有一个过程。
但是,为了满足自动控制系统快速响应的要求,只有伺服电机的转速变化应能够快速跟上控制信号的变化。
所以本文所述系统(图2)要求在电压输入端输入单位阶跃电压(1V)后,直流伺服电机的转轴应能输出1rad转角,且该系统应同时满足下列要求:
系统调整时间ts<
40ms,最大超调量MP<
15%,系统稳态误差ess=0.
2.2系统阶跃输入响应仿真
首先创建一个MATLAB文件motor.m,即将直流电机的传递函数转换为MATLAB可执行的命令。
文件motor.m的内容如下:
J=3.23E-6;
B=3.51E-6;
Ra=4;
La=2.75E-6;
Kt=0.03;
num=Kt;
den=[(J*La)((J*Ra)+(La*B))((B*Ra)+Kt*Kt)0];
t=0:
0.001:
0.2;
step(num,den,t);
现在,在MATLAB的主界面中输入motor后,就可以得到直流伺服电机对单位阶跃输入的响应曲线,如图3所示。
图3系统阶跃响应(Kp=10)
图3显示的结果是图4所示开环系统对单位阶跃输入的响应,即直流伺服电机输入1V单位阶跃电压时,电机的转轴输出呈直线性上升。
这个分析结果表明,该系统没有达到预期的设计要求。
图4开环系统对单位阶跃输入的响应
2.3PID校正
为了使系统能够达到设计要求,可以在图4的前向通道上设置一个控制构成闭环系统来校正直流伺服电机,如图5所示。
图5PID校正
2.3.1比例控制校正
为能在要求的40ms内达到设定的角位移,比例增益尽可能的大,以提高比例作用的强度,但必须同时考虑系统的稳定性。
采用单纯的比例控制,器调整时间和超调量是一对矛盾,无法同时满足,要缩短调整时间,Kp要加大,但超调量也同时加大了。
经过多次参数选择,但Kp=10时,阶跃响应曲线较为理想,呈现解决0.75衰减率的震荡过程。
在图5的前向通道G(s)前加一个比例控制器,即G(c)=Kp,令Kp=10,则motor1为:
Kp=10;
numcf=[Kp];
dencf=[1];
numf=conv(numcf,num);
denf=conv(dencf,den);
[numc,denc]=cloop(numf,denf);
0.1;
step(numc,denc,t);
图6系统阶跃响应(Kp=10)
在MATLAB界面下运行motor1得到图6,由图可知,此时的超调量为50.6%,40ms时的稳态误差为0.248,均不能满足设计要求,特别是调节过程,100ms后才能逐步进入稳态。
经过上述分析,对图6所示的动态过程,首先要采取采取措施缩短调整时间,减小超调量。
2.3.2比例微分控制校正
微分作用具有超前控制能力,可抑制最大动态偏差,提高系统的稳定性。
但微分作用有不能单独使用,因为它的输出仅和偏差的变化速度有关。
现将比例和微分控制结合使用,取长补短,组成PD控制器。
加入微分控制后,控制器的传递函数为Gc(s)=Kp+Kds,令Kp=10、Kd=0.2,得motor2文件如下修改:
Kd=0.2;
numcf=[KdKp];
0.04;
图7系统阶跃响应(Kp=10,Kd=0.2)
运行motorm2文件,系统的阶跃响应曲线如图7所示,由图可知,此时动态过程的品质指标大幅度提高,其超调量、调整时间等均能满足设计要求,只是在调整时间范围内的稳态误差(1~0.992)尚需进一步减小。
由于加入了D作用,系统的稳定性提高了,可适当增加比例增益Kp以减小稳态误差,通常可将Kp提高20%左右。
令Kp=12、Kd=0.2,修改参数后再次模拟,得到图8所示的响应曲线,和图7相比,其稳态误差(1~0.997)减小了。
图8系统阶跃响应(Kp=12,Kd=0.2)
2.3.3PID控制器校正
从比例、微分作用的原理可知,PD作用无法完全消除稳态误差。
为此,在PD作用的基础上加入积分作用,以便稳态误差减至0。
加入积分控制后,控制器的传递函数
令Kp=12、Kd=0.2、Ki=220,得motor4程序文件如下:
Kp=12;
Ki=220;
numcf=[KdKpKi];
dencf=[10];
图9系统阶跃响应(Kp=12,Ki=220,Kd=0.2)
运行motor4得到如图9所示的阶跃响应曲线。
由曲线可知在40ms处的稳态误差为(1~1.03),未达到设计要求。
同时其响应过程产生过调,究其原因,是积分作用太强而产生了过调或震荡负面影响,考虑到原PD控制时其稳态误差已很小,稍有积分作用即可,于是将Ki设为20.,得到motor5文件,运行得到图10所示的曲线,超调量为0,在35.2ms处的稳态误差已为0,性能远高于设计要求,稳定、准确、快速达到了完满的统一。
图10系统阶跃响应(Kp=12,Ki=20,Kd=0.2)
【结语】
通过上述的实例的演示可知,当采用不同控制方式及改变控制增益时,MATLAB都能准确、清晰地测绘出直流伺服电机对单位阶跃的输出响应曲线图,且具有很高的量化精度,同时也说明了MATLAB软件功能的强大,这种预见性,为系统控制规律的选择和参数设定提供了直观而准确的依据。
通过本次对PID控制仿真,我们掌握了P、I、D的组合控制,通过MATLAB软件用于直流伺服电机对单位阶跃信号输入的PID控制进行动态仿真,显示了不同作用组合和不同增益设置时的动态过程,为系统控制规律的选择和参数设定提供了理论依据。
【参考文献】
[1]张志勇、杨祖樱《MATLAB教程》北京航空航天大学出版社
[2]黄坚《自动控制原理及其应用》高等教育出版社
[3]魏克新王云亮《MATLAB语言与自动控制系统设计》机械工业出版
[4]梅晓榕《自动控制原理》科学出版社
[5]郑阿奇《MATLAB实用教程》电子工业出版社