下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、增量式 PID 控制算法Matlab 仿真程序设一被控对象 G(s)=50/(0.125s2+7s),用增量式 PID 控制算法编写仿真程序(输入分别为单位阶跃、正弦信号,采样时间为 1ms,控制器输出限幅: -5,5, 仿真曲线包括系统输出及误差曲线,并加上注释、图例) 。程序如下clear all;close all;ts=0.001;sys=tf(50,0.125,7, 0);dsys=c2d(sys,ts,'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'e
2、rror_1=0;error_2=0;for k=1:1:1000time(k)=k*ts;S=2;if S=1kp=10;ki=0.1;kd=15;end%Linear modelyout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;error(k)=rin(k)-yout(k);%Return of parametersu_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);x(1)=error(k)-error_1; %Cal culating Px(2)=error(k)-2*error_1+error_2; %C
3、alculating Dx(3)=error(k);%Calculating Ierror_2=error_1;error_1=error(k);endfigure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)'),ylabel('rin,yout');figure(2);plot(time,error,'r')xlabel('time(s)');ylabel('error');微分先行 PID 算法Matlab 仿真程序ri
4、n(k)=1;%PID Controler with differential inStep Signaladvanceelseif S=2clear all;close all;kp=10;ki=0.1;kd=15;%SineSignalts=20;rin(k)=0.5*sin(2*pi*k*ts);sys=tf(1,60,1,'inputdelay',80);enddsys=c2d(sys,ts,'zoh');du(k)=kp*x(1)+kd*x(2)+ki*x(3);%num,den=tfdata(dsys,'v');PID Control
5、leru(k)=u_1+du(k);u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;%Restricting the output of controllerud_1=0;if u(k)>=5y_1=0;y_2=0;y_3=0;u(k)=5;error_1=0;error_2=0;endei=0;if u(k)<=-5for k=1:1:400u(k)=-5;time(k)=k*ts;%Linear modelyout(k)=-den(2)*y_1+num(2)*u_5;kp=0.36;kd=14;ki=0.0021;rin(k)=1.0*sign(sin(0.0002
6、5*2*pi*k*ts);error(k)=rin(k)-yout(k);ei=ei+error(k)*ts;gama=0.50;Td=kd/kp;Ti=0.5;c1=gama*Td/(gama*Td+ts); c2=(Td+ts)/(gama*Td+ts); c3=Td/(gama*Td+ts);M=1;if M=1 %PID Control with differential in advanceud(k)=c1*ud_1+c2*yout(k)-c3*y_1;u(k)=kp*error(k)+ud(k)+ki*ei; elseif M=2 %Simple PID Controlu(k)=k
7、p*error(k)+kd*(error(k)-error_1)/ts+ki*ei;endif u(k)>=110u(k)=110;endif u(k)<=-110u(k)=-110;end%Update parametersu_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);error_2=error_1;error_1=error(k);endfigure(1);plot(time,rin,'r',time,yout,'b');xlabel('time(
8、s)');ylabel('rin,yout');figure(2);plot(time,u,'r');xlabel('time(s)');ylabel('u');不完全微分 PID 算法 Matlab 仿真程序%PID Controler with Partial differentialclear all;close all;ts=20;sys=tf(1,60,1,'inputdelay',80);dsys=c2d(sys,ts,'zoh');num,den=tfdata(dsys,
9、9;v');u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;ud_1=0;y_1=0;y_2=0;y_3=0;error_1=0;ei=0;for k=1:1:100time(k)=k*ts;rin(k)=1.0;%Linear modelyout(k)=-den(2)*y_1+num(2)*u_5;error(k)=rin(k)-yout(k);%PID Controller with partly differentialei=ei+error(k)*ts;kc=0.30;ki=0.0055;TD=140;kd=kc*TD/ts;Tf=180;Q=tf(1,Tf,1);
10、%Low Freq SignalFilterM=2;if M=1 %Using PID with Partial differential 加在简单 PID 后的不完全微分alfa=Tf/(ts+Tf);u(k)=alfa*u_1+(1-alfa)*(kc*error(k )+kd*(error(k)-error_1)+ki*ei);u_1=u(k);elseif M=2 %Using PID with Partial differential 只加在微分环节上的不完全微分alfa=Tf/(ts+Tf);ud(k)=kd*(1-alfa)*(error(k)-error_1)+alfa*ud_
11、1;u(k)=kc*error(k)+ud(k)+ki*ei;ud_1=ud(k);elseif M=3 %Using Simple PID 简单的 PID 微分u(k)=kc*error(k)+kd*(error(k)-error _1)+ki*ei;end%Restricting the output of controller if u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endu_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);error_1=err
12、or(k);endfigure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');figure(2);plot(time,u,'r');xlabel('time(s)');ylabel('u');figure(3);plot(time,rin-yout,'r');xlabel('time(s)');ylabel('error');figure
13、(4);bode(Q,'r');dcgain(Q);C 语言 PID 演示程序#include <string.h>#include<stdio.h>typedef struct PIDdouble Command; /输入指令double Proportion;/比例系数double Integral;/积分系数double Derivative;/ 微分系数double preErr;/ 前一拍误差double sumErr;/ 误差累积PID;doublePIDCale(PID*p,doublefeedback)double dErr,Err;Er
14、r=p->Command-feedback;/ 当前误差p->sumErr+=Err;/ 误差累加dErr=Err-p->preErr;/误差微分p->preErr=Err;return(p->Proportion*Err/比例项+p->Derivative*dErr/微分项+p->Integral*p->sumErr);/积分项void PIDInit(PID *p)memset(p,0,sizeof(PID);/初始化typedef struct motordouble lastY;double preY;=%fn",k,sPID.
15、Command,y,sPIDdouble lastU;.Command-y,u);double preU;motor;u=PIDCale(&sPID,y);y=motorCal(&m_motor,u);void motorInit(motor *m)k+;memset(m,0,sizeof(motor);printf("%fn",y);fclose(fp);double motorCal(motor *m,double u)doubley=1.9753*m->lastY-0.9753*m->preY+0.00003284*u+0.00006568
16、*m->lastU+0.00003284*m->preU;/二阶系统m->preY=m->lastY;m->lastY=y;m->preU=m->lastU;m->lastU=u;return y;void main()FILE *fp=fopen("data.txt","w+"); PID sPID;motor m_motor;int k=0;double u;double y=0;PIDInit(&sPID);sPID.Proportion=2;sPID.Derivative=1;sPID.In
17、tegral=0.00001;sPID.Command=10;motorInit(&m_motor);while(k<=1000)?fprintf(fp,"%d设定值 =%f被控量 =%f偏差 =%f控制量增量式 PID 控制 C 语言代码增量式 PID 控制 C 语言代码/ / 定义 PID 参数结构体/typedef struct PID / 结构体定义intSetPoint/设定值intProportion;/Proportion比例系数intIntegral;/Integral积分系数intDerivative;/Derivative微分系数intLastErr
18、or;/Error-1前一拍误差intPreError;/Error-2前两拍误差 PID;main()PID vPID;/定义结构变量名PIDInit( &vPID );/InitializeStructurevPID.Proportion= 10;/Set PID CoefficientsvPID.Integral= 10;/ Set PID Integral vPID.Derivative = 10;/ Set PID DerivativevPID. SetPoint=/根据实际情况设定while(1)Verror=Measure();/得到 AD 的输出值Error =vPID
19、.SetPoint-Verror;/与设定值比较,得到误差值tempi=PIDCal(&vPID,Error;laser.Value+=tempi;/ Value 与 Num2 为共同体,共同体名 laserLASERH=laser.Num0;LASERL=laser.Num1;/ /Title:PID 参数初始化 /Description: Proportion="0"/Integral=0/LastError=0/Input: PID 的 P、I 控制常数和之前的误差量( PID *pp )/Return:/ /void PIDInit(PID *pp)/PID 参数初始化,都置0memset( pp,0,sizeof(PID);/memset() 的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。/ memset() 函数在 mem.h 头文件中声明,它把数组的起始地址作为其第一个参数,/第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024土地开发与基础设施建设合作协议范本3篇
- 2025有限责任公司银行贷款担保合同
- 2024年度新能源汽车质押贷款服务合同范本3篇
- 2024年电影临时演员聘用标准合同
- 2024年度路灯灯具批发购销及售后服务合同3篇
- 商丘职业技术学院《计算机网络与多媒体》2023-2024学年第一学期期末试卷
- 2024年甲午渔船租赁合同标的为深海捕捞权
- 汕尾职业技术学院《中学语文教师技能训练》2023-2024学年第一学期期末试卷
- 工人制作合同范例
- 汕头大学《数据挖掘基础》2023-2024学年第一学期期末试卷
- 2024-2025一年级上册科学教科版2.4《气味告诉我们》课件
- 语文大单元视域下的任务群教学实践
- 融入TGFU教学法的TPSR教学模式在小学篮球课程中的德育效果研究
- 医院感染管理委员会模板
- DL∕T 5028.2-2015 电力工程制图标准 第2部分 机械部分
- 预算管理一体化系统内控体系指引
- 传统地权结构及其演变 -
- 老旧小区改造工程竣工验收质量评估报告
- 2024年山东省青岛中德生态园(青岛国际经济合作区)管委会选聘52人历年(高频重点提升专题训练)共500题附带答案详解
- 2024年正规借款合同标准版本(2篇)
- 实变函数智慧树知到期末考试答案章节答案2024年华南理工大学
评论
0/150
提交评论