已阅读5页,还剩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;error_1=0;error_2=0;for k=1:1:1000time(k)=k*ts; S=2;if S=1 kp=10;ki=0.1;kd=15; rin(k)=1; %Step Signalelseif S=2 kp=10;ki=0.1;kd=15; %Sine Signal rin(k)=0.5*sin(2*pi*k*ts); end du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controlleru(k)=u_1+du(k);%Restricting the output of controllerif u(k)=5 u(k)=5;endif u(k)=110 u(k)=110;endif u(k)=10 u(k)=10;endif u(k)=-10 u(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=error(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(4);bode(Q,r);dcgain(Q);C语言PID演示程序#include #includetypedef struct PID double Command; /输入指令 double Proportion; /比例系数 double Integral; /积分系数 double Derivative; /微分系数 double preErr; /前一拍误差 double sumErr; /误差累积PID;double PIDCale(PID *p,double feedback) double dErr,Err; Err=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 motor double lastY; double preY; double lastU; double preU;motor;void motorInit(motor *m) memset(m,0,sizeof(motor);double motorCal(motor *m,double u) double y=1.9753*m-lastY-0.9753*m-preY+0.00003284*u+0.00006568*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.Integral=0.00001; sPID.Command=10; motorInit(&m_motor); while(k=1000) fprintf(fp,%d 设定值=%f 被控量=%f 偏差=%f 控制量=%fn,k,sPID.Command,y,sPID.Command-y,u); u=PIDCale(&sPID,y); y=motorCal(&m_motor,u); k+; printf(%fn,y); fclose(fp);增量式PID控制C语言代码增量式PID控制C语言代码 / 定义PID参数结构体/typedef struct PID /结构体定义 int SetPoint /设定值 int Proportion; / Proportion 比例系数 int Integral; / Integral 积分系数 int Derivative; / Derivative 微分系数 int LastError; / Error-1 前一拍误差 int PreError; / Error-2 前两拍误差 PID;main() PID vPID; /定义结构变量名PIDInit ( &vPID ); /Initialize StructurevPID.Proportion = 10; /Set PID Coefficients vPID.Integral = 10; / Set PID Integral vPID.Derivative = 10; / Set PID Derivative vPID. SetPoint = /根据实际情况设定 while(1) Verror=Measure(); /得到AD的输出值 Error =vPID. 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参数初始化,都置0 memset ( pp,0,sizeof(PID);/memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。/ memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,/第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。/其函数原型为:void *memset(void*,int,unsigned);/头文件 /Title:增量式PID算法程序/Description:给出一个误差增量/Input: PID的P、I控制常数和之前的误差量(PID *pp)& 当前误差量(ThisError)/Return: 误差增量templ/int PIDCal( PID *pp, int ThisError ) /增量式PID算法(需要控制的不是控制量的绝对值,而是控制量的增量) int pError,dError,iError;long templ; pError = ThisError-pp-LastError; iError = ThisError; dError = ThisError-2*(pp-LastError)+p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杜甫常见试题与对应答案
- 饮食习惯:5个可操作步骤
- 宁夏吴忠三中学2027届数学九年级第一学期期末综合测试模拟试题含解析
- 2027届浙江省杭州市西湖区杭州外国语学校数学八上期末复习检测试题含解析
- 2026年专业技术人员公需科目突发事件应急处理考模拟试题库(含答案)
- 2026年福建农业职业技术学院教师招聘考试模拟题及答案详解
- 2026年敦煌舞模拟题答案及答案详解
- 2026年pmp考试模拟题及答案详解
- 2026年中国微电机市场分析及投资战略研究预测可行性报告
- 2026年10月质量管理体系QMS审核员模拟题及答案详解
- 互联网护理服务培训
- 《电机与电气控制技术》电子教案
- 弱电设计规范强条
- 《铁路劳动安全》高职铁道类专业安全教育培训全套教学课件
- 物业月度工作总结及下月计划
- 诺贝尔生理学或医学奖史话(华中师范大学)知到智慧树章节答案
- 2024-2025学年湖南省长沙市长郡教育集团七年级(上)月考数学试卷(10月份)(含答案)
- 路基,桥梁,涵洞,隧道工程施工组织方案
- (高清版)DZT 0350-2020 矿产资源规划图示图例
- 2019版新人教版高中英语必修+选择性必修共7册词汇表汇总(带音标)
- 气管切开非机械通气病人气道护理课件
评论
0/150
提交评论