下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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:100
2、0time(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)
3、=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
4、);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; /
5、当前误差 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) m
6、emset(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;
7、 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
8、控制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 str
9、ucturevpid.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为
10、共同体,共同体名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头文件中声明,它把数组的起始地址作为其
11、第一个参数,/第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。/其函数原型为: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)+pp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河北省石家庄市深泽县达标名校6月初三押题测试卷(2)生物试题(理工农医类)试题含解析
- 2026年存量海绵项目盘活路径与资产优化配置策略
- 广东省佛山市顺德区2025-2026学年初三下学期第一次统一考试生物试题试卷含解析
- 2026年江西省鹰潭市中考化学试题押题预测卷含解析
- 2026年山东省济南实验市级名校初三第一次诊断生物试题含解析
- 2026年极地钻机混合动力系统冷启动与能效优化
- 2026年智能体运行成本控制:小模型路由器与大模型分级调用策略
- 2026年精密磨床故障规律与预测性维护实施
- 2025年临床执业《内科学》阶段测试
- 中邮速递专员岗位招聘面试全解
- 25-26第二学期初三年级历史备课组工作计划:研析中考真题优化复习策略提升历史学科应试能力
- 城市公共交通运营与服务规范
- 林业项目监理工作总结与报告
- 化工造粒工安全教育考核试卷含答案
- 制冷基础知识课件
- 锅炉满水培训课件
- 放射科质控管理(技师组)
- 2026年江西单招新能源汽车技术专业基础经典题详解
- 手键拍发课件
- 2026春教科版(新教材)小学科学一年级下册(全册)教学设计(附教材目录)
- 管理研究方法:逻辑、软件与案例 课件 第6章:社会网络分析及应用
评论
0/150
提交评论