永磁同步电机(PMSM) 构建 模型预测转矩控制(MPTC) 闭环系统

永磁同步电机(PMSM) 构建 模型预测转矩控制(MPTC) 闭环系统

代码分三部分:
① 主脚本 main.m
② 预测函数 predict_torque_flux.m
③ 代价函数 cost_fun.m


1 离散预测模型(表贴式 PMSM)

ψd(k+1) = ψd(k) + Ts·(ud − Rs·id + ωe·Lq·iq)
ψq(k+1) = ψq(k) + Ts·(uq − Rs·iq − ωe·Ld·id − ωe·ψf)
Te(k+1) = 1.5·p·(ψd(k+1)·iq(k+1) − ψq(k+1)·id(k+1))
ψs(k+1)= sqrt(ψd(k+1)² + ψq(k+1)²)

2 参数脚本 pmsm_param.m

clc; clear;
Rs = 0.86;     Ld = 6e-3;   Lq = Ld;   psi_f = 0.236;
p  = 3;        Ts = 1e-4;               % 10 kHz
J  = 8.7e-4;   B  = 1e-4;
% 约束
u_dc = 300;    % V
id_max = 15;   iq_max = 15;
tau_max = 20;  % N·m

3 主循环 main.m

pmsm_param;
% 初始状态
id = 0; iq = 0;  psi_d = psi_f; psi_q = 0;  % 磁链初值
wm = 100;        % 电角速度 rad/s (恒定)
% 指令
Te_ref = 10;     psi_ref = psi_f;            % 磁链指令 ≈ ψf

% 8 基本电压矢量
V = [1 0; 0.5 0.866; -0.5 0.866; -1 0; -0.5 -0.866; 0.5 -0.866; 0 0; 0 0]*u_dc/1.5;

cost_best = inf; v_opt = V(7,:);   % 默认零矢量
for k = 1:8
    ud = V(k,1); uq = V(k,2);
    [Te_pred,psi_pred] = predict_torque_flux(id,iq,psi_d,psi_q,ud,uq,wm,Ts);
    cost = cost_fun(Te_pred,psi_pred,Te_ref,psi_ref);
    if cost < cost_best
        cost_best = cost;  v_opt = V(k,:);
    end
end
% 应用最优电压
ud_opt = v_opt(1); uq_opt = v_opt(2);
% 更新电流(欧拉)
id = id + Ts*(ud_opt - Rs*id + wm*Lq*iq)/Ld;
iq = iq + Ts*(uq_opt - Rs*iq - wm*Ld*id - wm*psi_f)/Lq;

4 预测函数 predict_torque_flux.m

function [Te,psi_s] = predict_torque_flux(id,iq,psi_d,psi_q,ud,uq,wm,Ts)
psi_d1 = psi_d + Ts*(ud - 0.86*id + wm*6e-3*iq);
psi_q1 = psi_q + Ts*(uq - 0.86*iq - wm*6e-3*id - wm*0.236);
Te = 1.5*3*(psi_d1*iq - psi_q1*id);
psi_s = sqrt(psi_d1^2 + psi_q1^2);
end

5 代价函数 cost_fun.m(无权重因子)

function J = cost_fun(Te_pred,psi_pred,Te_ref,psi_ref)
J = abs(Te_pred - Te_ref) + abs(psi_pred - psi_ref);
end

推荐代码 pmsm转矩预测控制 www.youwenfan.com/contentcsf/46549.html

6 仿真结果

 

专注于matlab/simulink,电子电路,编程