直流电机三种控制方法示例及比较

更新时间:2023-09-17 19:11:01 阅读量: 幼儿教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

直流电机的三种控制方法讨论

比较了三种跟踪定位点命令及减小负载扰动敏感性的技术。

? 前馈控制

? 积分反馈控制

? LQR最优二次型算法控制

一、问题描述

在电枢控制的直流电动机中,外加电压Va控制电机转轴的转角速度。如图1所示

图1 带负载电机工作示意图

图1中显示了两种减小角速度对负载变化(改变电机负载的反向转矩)敏感性的方法。

图2所示的是一个简单的直流电机模型,转矩Td作为电机的负载扰动。在该扰动下,必须使转速的变化减到最小。

图2 带负载电机结构模型

模型参数入下所示: R = 2.0;

% Ohms

L = 0.5; % Henrys

Km = 0.1; Kb = 0.1; % torque and back emf constants转矩和反电势常数 Kf = 0.2; % Nms 粘滞摩擦系数

J = 0.02; % kg.m^2/s^2 转动惯量

首先构造一个直流电机的状态空间模型,有两个输入(Va,Td)和一个输出(w): h1 = tf(Km,[L R]); % armature电枢传递函数

h2 = tf(1,[J Kf]); % eqn of motion 转动负载的传递函数 dcm = ss(h2) * [h1 , 1]; % w = h2 * (h1*Va + Td) 角速度函数

dcm = feedback(dcm,Kb,1,1); % close back emf loop

现在绘制阶跃输入电压为Va的角速度响应曲线,如图3所示。右键点击图形,选择Characteristics可查看具体响应参数,上升时间,调节时间,峰值时间等。

stepplot(dcm(1));

图3 带负载电机在输入单位阶跃电压信号Va时的响应曲线

二、前馈控制设计

图4所示,是一个简单的前馈控制结构,通过控制器调节使角速度w达到w_ref的指定值。

图4 前馈控制示意图

前馈增益Kff应该设置为电压到角速度的直流增益的倒数Kff = 1/dcgain(dcm(1))。

为了估计消除负载干扰的前馈控制器参数,模拟一个时间从5秒到10秒范围的干扰转矩,干扰转矩为Td=-0.1牛米,设定参考角速度为w_ref=1。

t = 0:0.1:15;

Td = -0.1 * (t>5 & t<10); % 装在扰动信号Td

u = [ones(size(t)) ; Td]; % 输入信号为指定角速度w_ref=1 and 扰动信号Td cl_ff = dcm * diag([Kff,1]); % 在系统中增加前馈增益 set(cl_ff,'InputName',{'w_ref','Td'},'OutputName','w'); h = lsimplot(cl_ff,u,t);

title('Setpoint tracking and disturbance rejection') legend('cl\\_ff')

图5 前馈控制系统对干扰信号的响应曲线

显然,前馈控制处理负载扰动不佳。

三、反馈控制设计

图6所示为反馈控制结构示意图。

图6 反馈控制结构示意图

为了实施零状态误差,我们在系统中使用积分控制

C(s) = K/s,式中的K是待确定的。为了确定增益K,可以在电压到角速度的开环传递函数中使用根轨迹的方法,用1/s乘以开环传递函数。利用反馈控制系统开环传递函数在根轨迹图中确定积分环节的增益K。图7所示为加入积分的反馈控制系统的根轨迹图。

h = rlocusplot(tf(1,[1 0]) * dcm(1)); setoptions(h,'FreqUnits','rad/sec'); set(gca,'Xlim',[-15 5],'Ylim',[-15 15]);

图7

加入积分的反馈控制系统的根轨迹图

按下曲线可读取增益值及相关信息。这里合理的K值选择为K=5。注意单入单出系统设计工具提供了

一个综合的图形用户界面来完成这样的设计。(相关内容请参考sisotool帮助) 在同一个测试系统中,将这个新的反馈控制设计和前面的前馈设计进行比较。对应的时域响应曲线如图8所示。

K = 5;

C = tf(K,[1 0]); % 积分控制器的传递函数C=K/s cl_rloc = feedback(dcm * append(C,1),1,1,1);

h = lsimplot(cl_ff, cl_rloc,u,t);

set(cl_rloc,'InputName',{'w_ref','Td'},'OutputName','w'); title('Setpoint tracking and disturbance rejection')

legend('feedforward','feedback w/ rlocus','Location','NorthWest')

图8 前馈控制与反馈控制响应曲线图

从图中看到绿色线是积分反馈控制的响应曲线,蓝色是前馈控制曲线。用根轨迹设计的积分反馈控制器对负载扰动的抑制效果比前馈控制要好很多。

三、LQR(线性二次型最优控制算法)控制器设计

为了进一步提高性能,如图9所示,在原反馈控制结构中设计一个线性二次型最优控制器。

图9 LQR控制系统结构示意图

除了积分误差,LQR方案还用状态向量x=(i, w)来综合处理驱动电压Va。电压处理后表示为:

Va = K1 * w + K2 * w/s + K3 * i

式中的电流i为电枢电流。

为了有更好的干扰抑制效果,用了一个代价函数对大的积分误差进行处理:

C??0?(20q(t)?w(t)?0.01Va(t))dt222

式中q(s)?w(s)/s。

由这个代价函数计算出最优的LQR增益:

dc_aug = [1 ; tf(1,[1 0])] * dcm(1); % 将输入w/s增加到直流电机模型中 K_lqr = lqry(dc_aug,[1 0;0 20],0.01); %计算最后LQR增益

为仿真实现建立闭环模型:

P = augstate(dcm); % 模型输入为:Va, Td 输出为:w,x

C = K_lqr * append(tf(1,[1 0]),1,1); % 将积分控制器1/s包含到LQR控制器中 OL = P * append(C,1); % open loop 开环传递函数为OL

三中设计的闭环频率响应曲线图如图10所示,左边图为设定角速度的频率响应曲线,右边图中为干扰信号Td的频率响应曲线。在曲线上点击可确定各曲线所代表的系统或者查看相关数据。

bodeplot(cl_ff,cl_rloc,cl_lqr);

图10 三种控制器波特图

四、设计比较

最后我们在仿真系统中比较这三种设计: h = lsimplot(cl_ff,cl_rloc,cl_lqr,u,t);

title('Setpoint tracking and disturbance rejection')

legend('feedforward','feedback (rlocus)','feedback (LQR)','Location','NorthWest')

由于其额外的自由度,在这三中控制器中,LQR控制器对负载扰动有最好的抑制作用。

本文来源:https://www.bwwdw.com/article/d3wh.html

Top