实验三:基于matlab的积分分离PID控制算法

实验内容

在普通PID控制中引入积分环节的目的,主要氏为了消除静差,提高控制精度。但在或称的启动、结束或者大幅度增减设定时,短时间内系统的输出有很大的偏差,就会造成PID运算的积分累计,只是控制量超过执行机构可能允许的最大动作范围对应的极限控制量,引起系统较大的超调,甚至引起系统较大的震荡。

积分分离的基本思路:当控制量与设定值偏差较大时,取消积分作用,以避免由于积分作用使系统稳定性降低,超调量变大;当控制量接近给定值时,引入积分控制,消除静差,提高控制精度。

控制对象


实验代码

%Integration Separation PID Controller

clear all;

close all;

ts=20;

%Delay plant

sys=tf([1],[60,1],'inputdelay',80);

dsys=c2d(sys,ts,'zoh');

num,den\]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; y_1=0;y_2=0;y_3=0; error_1=0;error_2=0; ei=0; for k=1:1:200 time(k)=k\*ts; %Delay plant y(k)=-den(2)\*y_1+num(2)\*u_5; %I separation yd(k)=40; error(k)=yd(k)-y(k); ei=ei+error(k)\*ts; M=2; if M1 %Using integration separation if abs(error(k))\>=30 beta=0.0; elseif abs(error(k))\>=20\&abs(error(k))\<=30 beta=0.6; elseif abs(error(k))\>=10\&abs(error(k))\<=20 beta=0.9; else beta=1.0; end elseif M2 beta=1.0; %Not using integration separation end kp=0.80; ki=0.005; kd=3.0; u(k)=kp*error(k)+kd* (error(k)-error_1)/ts+beta*ki*ei; if u(k)\>=110 % Restricting the output of controller u(k)=110; end if u(k)\<=-110 u(k)=-110; end u_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=y(k); error_2=error_1; error_1=error(k); end figure(1); plot(time,yd,'r',time,y,'k:','linewidth',2); xlabel('time(s)');ylabel('yd,y'); legend('Ideal position signal','Position tracking'); figure(2); plot(time,u,'r','linewidth',2); xlabel('time(s)');ylabel('Control input'); #### 实验结果分析 M =1 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8004cf18f6464b239bcd9f189a535cad.png) M=2 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d3fa0b08047a461288217a1355598be1.png) 由仿真结果可以看出,当采用积分分离方法控制效果有很大的改善。值得注意的是,为了保证积分作用后系统的稳定行不变,在输入积分作用是=时比例系数Kp可以做相应变化。此外, β值应该根据具体对象的要求而定,若β过大,则达不到积分分离的目的;若β过大小,则回导致无法进入积分区。如果只进行PD控制,会是控制出现余差。

相关推荐
MATLAB代码顾问6 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
万粉变现经纪人8 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒8 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼8 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
小郑加油9 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦9 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp9 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy10 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode10 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust10 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理