Matlab 仿真——直流电机速度控制(3)PID控制器设计

0. 被控对象与设计要求

上一节我们知道了我们的开环响应并不能满足设计需求,这一节我们通过一个PID控制器使我们的系统满足设计需求。

这里把设计需求和系统转换方程粘贴在这里:

设计需求(阶跃响应):

  • 稳定时间<2s
  • 超调<5%
  • 稳态误差<1%

转换方程:
s ( J s + b ) Θ ( s ) = K I ( s ) s(Js + b)\Theta(s) = KI(s) s(Js+b)Θ(s)=KI(s)
( L s + R ) I ( s ) = V ( s ) − K s Θ ( s ) (Ls + R)I(s) = V(s) - Ks\Theta(s) (Ls+R)I(s)=V(s)KsΘ(s)
P ( s ) = Θ ˙ ( s ) V ( s ) = K ( J s + b ) ( L s + R ) + K 2 [ r a d / s e c V ] P(s) = \frac {\dot{\Theta}(s)}{V(s)} = \frac{K}{(Js + b)(Ls + R) + K^2} \qquad [ \frac{rad/sec}{V}] P(s)=V(s)Θ˙(s)=(Js+b)(Ls+R)+K2K[Vrad/sec]

1. 比例控制

首先来看一个加了控制器的单位负反馈系统的框图
在这里插入图片描述
我们的目标是通过设计控制器 C ( s ) C(s) C(s) 来使系统满足要求。我们先从单纯的比例控制开始,在电机Plant前面加一个比例控制器,然后得到新的系统(这里我们随意定了比例系数为100)

%motor parameter
J = 0.01;
b = 0.1;
K = 0.01;
R = 1;
L = 0.5;
%motor tf function
s = tf('s');
P_motor = K/((J*s+b)*(L*s+R)+K^2)
%定义我们的纯比例控制器
Kp = 100;
C = pid(Kp);
%新的单位负反馈系统
sys_cl = feedback(C*P_motor,1);
linearSystemAnalyzer('step',sys_cl,0:0.01:5);

得到新系统的单位阶跃响应
在这里插入图片描述
新的系统稳定时间控制在了0.567s,满足了稳定时间<2s的要求。但是新系统的超调很大,变得不满足要求。

回顾控制理论知识,增大Kp在减小稳态误差的同时也会增大超调,我们来检查一下是不是这样。
运行以下代码打开matlab的控制系统设计工具(输入是开环转换方程)

controlSystemDesigner(P_motor)

在弹出的窗口选择添加新的阶跃输入图像
在这里插入图片描述
选择IOTransfer_r2y(画出输入输出图像),然后点击plot
在这里插入图片描述
接下来双击左边的C,该变它的值之后按Enter,看系统响应如何变化
在这里插入图片描述
可以发现,增加比例系数确实能够减少稳态误差,但是增加超调。因此我们还需要微分和积分控制。

2.PID 控制

这次我们给控制器加上微分和积分系数(随便定的值)

%PID 控制器(未调参)
Kp = 75;
Ki = 1;
Kd = 1;
C = pid(Kp,Ki,Kd);
sys_cl = feedback(C*P_motor,1);
linearSystemAnalyzer('step',sys_cl,0:1:200);

在这里插入图片描述
系统的稳定时间变长,依旧不满足设计要求,因此我们需要调节我们的PID参数知道系统满足设计要求。

3. 调参

稳定时间很长的原因是Ki太小,系统不能很快的收敛,我们增大Ki至200,重新绘制响应图

%PID 控制器(调节Ki)
Kp = 75;
Ki = 200;
Kd = 1;
C = pid(Kp,Ki,Kd);
sys_cl = feedback(C*P_motor,1);
linearSystemAnalyzer('step',sys_cl,0:0.01:4);

在这里插入图片描述
系统稳定时间快了很多,但是超调很大。现在我们增大Kd,来试着减少超调

%PID 控制器(调节Kd)
Kp = 75;
Ki = 200;
Kd = 10;
C = pid(Kp,Ki,Kd);
sys_cl = feedback(C*P_motor,1);
linearSystemAnalyzer('step',sys_cl,0:0.01:4);

在这里插入图片描述
发现系统已经完全满足设计要求,因此Kp=75, Ki=200,Kd=10 定义的PID控制器可以用在这里作为电机控制器。

这里也可以用Matlab自带的PID tunner工具箱来调参,不再赘述

  • 32
    点赞
  • 254
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您提供一些思路和步骤。 1. 确定直流电机的数学模型。 2. 设计模糊PID控制的模糊规则和参数。 3. 编写MATLAB程序,包括建模、控制设计仿真部分。 4. 进行仿真,观察系统响应,并根据仿真结果调整控制参数,直到满足性能要求。 以下是具体的步骤: 1. 直流电机数学模型的建立 直流电机的数学模型可以用电机方程来描述,其中包括电机的电动力方程和机械动力方程。电动力方程描述电机的电磁特性,机械动力方程描述电机的机械特性。具体建模方法可以参考相关的教材或网络资源。 2. 模糊PID控制设计 模糊PID控制是一种基于模糊逻辑的控制,可以有效地解决传统PID控制难以处理非线性系统和参数变化系统的问题。模糊PID控制包括模糊化、推理和解模糊化三个部分。其中,模糊化将输入量转换为模糊量,推理根据模糊规则推导出输出量的模糊量,解模糊化将模糊量转换为具体的控制量。具体的模糊PID控制设计方法可以参考相关的教材或网络资源。 3. MATLAB程序设计MATLAB中可以使用Simulink工具箱进行建模和仿真。具体步骤如下: a. 打开Simulink新建一个模型。 b. 在模型中添加直流电机模块和模糊PID控制模块,并进行连接。 c. 对直流电机进行参数设置,如电机的额定电压、额定转速、额定电流等。 d. 对模糊PID控制进行参数设置,包括模糊规则和模糊量之间的转换函数。 e. 设置仿真参数,如仿真时间、仿真步长等。 f. 运行仿真,观察系统响应,并根据仿真结果调整控制参数,直到满足性能要求。 4. 调整控制参数 在进行仿真时,可能会发现系统响应不满足性能要求,需要调整控制参数。具体的调整方法可以参考相关的教材或网络资源,常用的方法包括试误法、Ziegler-Nichols法等。 以上就是用MATLAB仿真模糊PID控制直流电机调速的步骤,希望对您有所帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值