目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨💻4 Matlab代码
💥1 概述
本文为基于模型预测控制的直流电机控制系统研究。模型预测控制( MPC) 又称为滚动时域控制(RHC) ,产生于20 世纪70 年代末,是一种从工业过程控中产生的新型控制算法,实用性较强,并在实际应用中得到不断的发展和完善,广泛应用于电力、汽车、化工、航天、能源等领域。
一般工业过程中存在多变量耦合、非线性及不确定性等问题,很难建立准确的模型。因此,采用经典PID 控制器或者是一些传统的控制算法所得到的效果并不理想,存在一定的局限性。MPC 最突出的特点是“边走边优化”,且对模型的精确性要求较低,因此能够有效地用于复杂对象的控制。
模型预测控制应用于电气传动系统中时,可分为连续控制集模型预测控制(CCS-MPC)和有限控制集模型预测控制 ( FCS-MPC) 。两者的主要区别: ( 1) 优化方式不同。CCS-MPC利用数学工具对价值函数求最优解得到最优控制量; 而FCS-MPC 利用变换器的离散性和有限性,遍历电压矢量,价值函数最小的电压矢量即最优控制量。
( 2) 作用方式不同。CCS-MPC中控制量是通过脉冲宽度调制(PWM) 方式作用于系统; 而FCS-MPC中控制量直接作用于系统。与CCS-MPC相比,FCS-MPC 将目标优化和开关状态决策过程优化成一步,且具有概念简单、适用范围广、约束和非线性易纳入价值函数等优点,因此成为了近年来的研究热点之一。
📚2 运行结果
主函数部分代码:
% dc motor system
% J \ddot{\theta} + b \dot{\theta} = K_t i
% L di/dt + R i = V - K_e \dot{\theta}
% system parameters
% J: modent of inertia of the rotor
% b: viscous friction constant
% K_e: force constant
% K_t: torque constant
% R: resistant
% L: inductance
J = 0.01;
b = 0.1;
K = 0.01;
R = 1;
L = 0.5;
% choose state variables x = [x_1(t) x_2 (t)]^T
% x_1 = \dot{\theta}
% x_2 = i
% which can rewrite as
% \dot{x} = A_c x + b_c u
% y = C x
A_c = [-b/J K/J; -K/L -R/L];
B_c = [0; 1/L];
C_c = [1 0];
D_c = zeros(1,1);
% samping interval
Ts = 0.01;
% continuous-time plant model is discretized
[Ap, Bp, Cp, Dp] = c2dm(A_c, B_c, C_c, D_c, Ts);
% prediction horizon
% control horizon
Np = 100;
Nc = 100;
% agumented state-space of plant model
[Phi_Phi, Phi_F, Phi_R, A_e, B_e, C_e] = mpcgain(Ap, Bp, Cp, Nc, Np);
% n:the number of state in agument state-space
% n_in:the number of input in agument state-space
[n, n_in] = size(B_e);
% state value of plant model
% state value of agumented state-space of plant model
xm = [0;0];
Xf = zeros(n,1);
% simulation time:1000 samping interval
N_sim = 1000;
% r:set-point Speed
% u:input in plant model
% y:output in plant model
r = ones(N_sim, 1);
u = 0; % u(k-1) = 0
y = 0;
for kk = 1:N_sim
DeltaU = inv(Phi_Phi + 0.3*eye(Nc, Nc))*(Phi_R*r(kk) - Phi_F*Xf);
deltau = DeltaU(1,1);
u = u + deltau;
% store next input added to plant model
u1(kk) = u;
% store current output of plant model
y1(kk) = y;
% store current state of plant model
xm_old = xm;
% calculate next state of plant model
xm = Ap*xm + Bp*u;
y = Cp*xm;
% calculate next state of agumented state-space of plant model
Xf = [xm-xm_old; y];
end
k = 0 : (N_sim-1);
figure(1)
plot(k, r, '--k', k, y1', 'b','linewidth',2);
set(gca,'FontName','Times New Roman','FontSize',14);
xlabel('Sampling Instant');
ylabel('Speed (rad/s)');
% set(gca,'FontName','Times New Roman','FontSize',14);
set(gcf, 'unit', 'centimeters', 'position', [10 5 16 6])
set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1);
axis([0 N_sim-1 0 1.2]);
set(gca, 'YTick', [0:0.6:1.2]);
h=legend('$\theta_r$','$\theta$');
set(h,'Interpreter','latex'); grid;
figure(2)
plot(k, u1, 'b','linewidth',2);
set(gca,'FontName','Times New Roman','FontSize',14);
xlabel('Sampling Instant');
ylabel('Voltage (v)');
% set(gca,'FontName','Times New Roman','FontSize',14);
set(gcf, 'unit', 'centimeters', 'position', [10 5 16 6])
set(gca,'GridLineStyle',':','GridColor','k','GridAlpha',1);
h=legend('$u$');
set(h,'Interpreter','latex'); grid;
🎉3 参考文献
[1]孙锐. 基于模型预测的无刷直流电机控制系统的研究[D].哈尔滨理工大学,2020.
部分理论引用网络文献,若有侵权联系博主删除。