先进PID控制MATLAB仿真学习记录(一)

目录

前言

一、PID控制原理

二、连续系统的PID控制Simulink仿真

1.利用自带的PID控制器仿真

2.采用S函数进行仿真

总结


前言

PID控制是最早发展起来的控制策略之一,其算法简单、鲁棒性好且可靠性高,在运动控制和过程控制中被广泛使用。为了进一步学习了解PID,笔者正在学习北京航空航天大学的刘金琨老师的先进PID控制MATLAB仿真一书,并在此记录分享,希望和大家一起进步。


一、PID控制原理

        模拟控制系统由模拟PID控制器和被控对象组成。PID控制器是一种线性控制器,它根据给定目标值和实际输出值构成控制偏差:

                                                          error(t)=yd(t)-y(t)

PID控制规律为:

                            u(t)=k_{p}[error(t)+\frac{1}{T_{1}}\int_{0}^{t}error(t)dt+\frac{T_{D}derror(t)}{dt}]

这也是经典PID控制方程,其中kp为比例系数,T1为积分时间常数,TD为微分时间常数。

PID本质是校正,也可以理解成三种校正环节的结合,各校正环节的作用如下:

  1. 比例环节:成比例地反映控制系统的偏差信号error(t),比例系数为kp
  2. 积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱与积分时间常数密切相关
  3. 微分环节:反映偏差信号的变化趋势(变化速率),也就是起到一个预测作用,可以引入早期修正信号,从而可以加快系统的动作速度,减少调节时间。

二、连续系统的PID控制Simulink仿真

Simulink是MATLAB中的一种可视化仿真工具,本书也采用Simulink进行仿真。本节主要采用Simulink里的PID控制器和采用S函数以及采用简化S函数实现PID控制正弦响应(代码来源于书)

以二阶线性传递函数(传递函数是指零初始条件下线性系统响应(即输出)量的拉普拉斯变换(或z变换)与激励(即输入)量的拉普拉斯变换之比)\frac{133}{s^{2}+25s}为被控对象,进行模拟PID控制。在信号发生器中选择正弦波,信号发生器设置A为1,F=0.2HZ,仿真时选择kp=60,ki=1,kd=3。采用OED45迭代方法(重要),仿真时间为10s。

1.利用自带的PID控制器仿真

(1)本仿真是采用了传递函数的另外一种表达方式,也就是状态方程,仿真程序如下:

(2)作图程序代码如下:

close all;
plot(out.t,out.yd(:,1),'r',out.t,out.y(:,1),'k:','linewidth',2);
xlabel('time(s)');
ylabel('yd,y');
legend('Ideal position signal','Position tracking');

 (3)运行结果:

可以看出,位置跟踪效果十分完美,下面采用S函数来进行仿真 。

2.采用S函数进行仿真

S函数是Simulink的一项重要功能,采用S函数可以实现在Simulink下复杂控制器和复杂被控对象的编程。在上述仿真的基础上,采用S函数实现上述对象的表达、控制器的设计以及仿真结果的输出。在S函数中,采用三个函数,分别是mdlInitializeSizes函数(完成初始化功能)、mdlDerivatives函数(完成微分功能)和mdlOutputs函数(输出)。在初始化采用S函数的基本sizes结构,选择两个输出,三个输入(输入P、I、D三项),即设置sizes.NumOutputs=1,
sizes.NumInputs=3。在对对象的表达中,采用一输入一输出的形式。

(1)仿真程序如下:

(2)S函数代码:

s.m

function [sys,x0,str,ts]=s_function(t,x,u,flag)

switch flag,
    case 0,
        [sys,x0,str,ts]=mdlInitializeSizes;
    case 3,
        sys=mdlOutputs(t,x,u);
    case {2,4,9}
        sys=[];
    otherwise
        error(['Unhandled flag=',num2str(flag)]);
end


function [sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=0;
sizes.NumOutputs=1;
sizes.NumInputs=3;
sizes.DirFeedthrough=1;   %表示直接馈通,即输入信号是否在输出端出现的标识
sizes.NumSampleTimes=0;
sys=simsizes(sizes);
x0=[];
str=[];
ts=[];


function sys=mdlOutputs(t,x,u)
error=u(1);
derror=u(2);
errori=u(3);

kp=60;
ki=1;
kd=3;
ut=kp*error+kd*derror+ki*errori;
sys(1)=ut;

plant.m

function [sys,x0,str,ts]=s_function(t,x,u,flag)

switch flag,
    case 0,
        [sys,x0,str,ts]=mdlInitializeSizes;
    case 1,
        sys=mdlDerivatives(t,x,u);
    case 3,
        sys=mdlOutputs(t,x,u);
    case {2,4,9}
        sys=[];
    otherwise
        error(['Unhandled flag=',num2str(flag)]);
end


function [sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=2;
sizes.NumDiscStates=0;
sizes.NumOutputs=1;
sizes.NumInputs=1;
sizes.DirFeedthrough=0;
sizes.NumSampleTimes=0;

sys=simsizes(sizes);
x0=[0,0];
str=[];
ts=[];


function sys=mdlDerivatives(t,x,u)
sys(1)=x(2);
sys(2)=-(25+10*rands(1))*x(2)+(133+30*rands(1))*u;

function sys=mdlOutputs(t,x,u)
sys(1)=x(1);

(3)仿真结果:


 简化的S函数方法这里就不介绍了,暴力赋值即可,实现起来比较容易。

总结

        以上就是今天学习分享的内容,简单实现了连续系统的基本PID控制,第一次分享,希望大家多多支持,有建议可以直接提出来,我们互相交流进步,期待下一次记录。

目 录 前 言 第 1 章 数字 PID 控制………………………………………………………………(1) 1.1PID 控制原理 ……………………………………………………………………(1) 1.2 连续系统的模拟 PID 仿真…………………………………………………………(2) 1.3 数字 PID 控制……………………………………………………………………(3) 1.3.1 位置式 PID 控制算法……………………………………………………………(3) 1.3.2 连续系统的数字 PID 控制仿真…………………………………………………(4) 1.3.3 离散系统的数字 PID 控制仿真…………………………………………………(8) 1.3.4 增量式 PID 控制算法及仿真…………………………………………………(14) 1.3.5 积分分离 PID 控制算法及仿真…………………………………………………(16) 1.3.6 抗积分饱和 PID 控制算法及仿真………………………………………………(20) 1.3.7 T型积分 PID 控制算法………………………………………………………(24) 1.3.8 变速积分 PID 算法及仿真……………………………………………………(24) 1.3.9 带滤波器的 PID 控制仿真……………………………………………………(28) 1.3.10 不完全微分 PID 控制算法及仿真……………………………………………(33) 1.3.11 微分先行 PID 控制算法及仿真………………………………………………(37) 1.3.12 带死区的 PID 控制算法及仿真………………………………………………(42) 1.3.13 基于前馈补偿的 PID 控制算法及仿真………………………………………(45) 1.3.14 步进式 PID 控制算法及仿真…………………………………………………(49) 第 2 章 常用的数字 PID 控制系统………………………………………………(53) 2.1 单回路 PID 控制系统……………………………………………………………(53) 2.2 串级 PID 控制……………………………………………………………………(53) 2.2.1 串级 PID 控制原理……………………………………………………………(53) 2.2.2 仿真程序及分析………………………………………………………………(54) 2.3 纯滞后系统的大林控制算法……………………………………………………(57) 2.3.1 大林控制算法原理……………………………………………………………(57) 2.3.2 仿真程序及分析………………………………………………………………(57) 2.4 纯滞后系统的 Smith 控制算法…………………………………………………(59) 2.4.1 连续 Smith 预估控制…………………………………………………………(59) 2.4.2 仿真程序及分析………………………………………………………………(61) 2.4.3 数字 Smith 预估控制…………………………………………………………(63) 2.4.4 仿真程序及分析………………………………………………………………(64) 第 3 章 专家 PID 控制和模糊 PID 控制…………………………………………(68) 3.1 专家 PID 控制…………………………………………………………………(68) 3.1.1 专家 PID 控制原理……………………………………………………………(68) 3.1.2 仿真程序及分析………………………………………………………………(69) 3.2 模糊自适应整定 PID 控制………………………………………………………(72) 3.2.1 模糊自适应整定 PID 控制原理………………………………………………(72) 3.2.2 仿真程序及分析………………………………………………………………(76) 3.3 模糊免疫 PID 控制算法…………………………………………………………(87) 3.3.1 模糊免疫 PID 控制算法原理…………………………………………………(88) 3.3.2 仿真程序及分析………………………………………………………………(89) 第 4 章 神经 PID 控制……………………………………………………………(94) 4.1 基于单神经元网络的 PID 智能控制………………………………………………(94) 4.2 基于 BP 神经网络整定的 PID 控制………………………………………………(103) 4.3 基于 RBF 神经网络整定的 PID 控制……………………………………………(112) 4.4 基于 RBF 神经网络辨识的单神经元 PID 模型参考自适应控制……………………(120)4.5 基于 CMAC 神经网络与 PID 的并行控制…………………………………………(126) 4.6 基于 SIMULINK 的 CMAC 与 PID 并行控制…………………………………………(133) 第 5 章 基于遗传算法整定的 PID 控制…………………………………………(139) 遗传算法基本原理…………………………………………………………(139) 5.2 遗传算法的优化设计………………………………………………………(140) 5.3 遗传算法求函数极大值………………………………………………………(140) 5.4 基于遗传算法的 PID 整定……………………………………………………(145) 5.5 基于遗传算法摩擦模型参数辨识的 PID 控制……………………………………(157) 第 6 章 PID 解耦控制……………………………………………………………(165) 6.1 PID 多变量解耦控制……………………………………………………………(165) 6.2 单神经元 PID 解耦控制………………………………………………………(168) 6.3 基于 DRNN 神经网络整定的 PID 解耦控制………………………………………(173) ……………(174)6.3.3 仿真程序及分析……………………………………………………………(176)第 7 章 几种先进PID控制方法……………………………………………(185) 7.1 基于干扰观测器的 PID 控制……………………………………………………(185) 7.2 非线性系统的 PID 鲁棒控制……………………………………………………(195) 7.3 一类非线性 PID 控制器设计……………………………………………………(199) 7.4 基于重复控制补偿的高精度 PID 控制…………………………………………(208) 7.5 基于零相差前馈补偿的高精度 PID 控制………………………………………(214) 第 8 章 灰色 PID 控制……………………………………………………………(229) 8.1 灰色控制原理…………………………………………………………………(229) 8.2 灰色 PID 控制…………………………………………………………………(231) 8.3 灰色 PID 的位置跟踪……………………………………………………………(247)- 第 9 章 非线性 PID 控制…………………………………………………………(261) 9.1 伺服系统低速摩擦条件下 PID 控制……………………………………………(261) 9.2 伺服系统的三环 PID 控制……………………………………………………(269) 9.3 二质量伺服系统的 PID 控制……………………………………………………(276) 第 10 章 PID实时控制的语言设计及应用……………………………(283) 10.1 M语言的转化………………………………………………………(283) 10.2 基于的三轴飞行模拟转台伺服系统实时控制…………………(285)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值