永磁同步电机的全速度范围无传感器矢量控制:脉振高频注入(方波注入)切换到改进SMO。 低速段采用HFI脉振高频注入启动,中高速段采用基于转子磁链模型的SMO,切换方法为加权系数。 改进的SMO不使用低通滤波器,可以有效抑制电机带载运行时的转速抖动。

在永磁同步电机(PMSM)的控制领域,实现全速度范围的无传感器矢量控制一直是研究的热点。今天咱们就来聊聊一种挺有意思的控制策略,也就是从脉振高频注入(方波注入)切换到改进滑模观测器(SMO)的方法。

低速段:脉振高频注入(HFI)启动

在低速段,电机的反电动势非常小,传统基于反电动势的观测方法就不太好使了。这时候,脉振高频注入(HFI)就派上用场啦。这里我们以方波注入为例,简单来说,就是往电机里注入一个高频的脉振信号。这个高频信号会在电机中产生一个高频的响应,通过对这个响应的分析,我们就能获取电机转子的位置信息。

假设我们用MATLAB来模拟这个过程,代码大概像这样:

% 定义电机参数
p = 4; % 极对数
Ld = 0.008; % d轴电感
Lq = 0.008; % q轴电感
Rs = 2.875; % 定子电阻
psi_f = 0.175; % 永磁体磁链
% 注入高频信号参数
wh = 2*pi*1000; % 高频注入角频率
Ah = 10; % 高频注入幅值

% 时间参数
dt = 0.00001; % 时间步长
t = 0:dt:0.1; % 时间向量

% 初始条件
theta_e = 0; % 电角度初始值
omega_e = 0; % 电角速度初始值

for k = 1:length(t)
    % 生成高频方波注入信号
    if mod(k, 2) == 1
        vh_d = Ah;
        vh_q = 0;
    else
        vh_d = -Ah;
        vh_q = 0;
    end
    
    % 计算电压方程(简化模型)
    v_d = Rs * id + p * omega_e * Lq * iq + Ld * didt;
    v_q = Rs * iq - p * omega_e * (Ld * id + psi_f) + Lq * diqt;
    
    % 实际注入电压
    v_d = v_d + vh_d;
    v_q = v_q + vh_q;
    
    % 更新电角度和角速度(简单积分)
    omega_e = omega_e + alpha * dt; % alpha 为给定的加速度
    theta_e = theta_e + omega_e * dt;
end

在这段代码里,我们首先定义了电机的基本参数,还有高频注入信号的参数。然后在循环里,交替生成正负的高频方波信号,并叠加到正常的电压方程计算出来的电压上。通过这样的高频注入,电机就会产生特定的响应,我们后续就能从这个响应中提取转子位置信息。

中高速段:基于转子磁链模型的SMO

当电机转速升高到中高速段,反电动势变得足够大,这时候基于转子磁链模型的滑模观测器(SMO)就更适用了。SMO通过构建观测模型,利用电机的电压、电流等容易测量的量来估计转子磁链和转速。

永磁同步电机的全速度范围无传感器矢量控制:脉振高频注入(方波注入)切换到改进SMO。 低速段采用HFI脉振高频注入启动,中高速段采用基于转子磁链模型的SMO,切换方法为加权系数。 改进的SMO不使用低通滤波器,可以有效抑制电机带载运行时的转速抖动。

来看一段简单的基于SMO的转速估计代码框架(以C语言为例):

// 定义电机参数结构体
typedef struct {
    float Rs;
    float Ld;
    float Lq;
    float psi_f;
    float p;
} PMSM_Params;

// 定义滑模观测器结构体
typedef struct {
    float alpha;
    float beta;
    float gamma;
    float omega_est;
    float theta_est;
    float lambda_d_est;
    float lambda_q_est;
} SMO;

// 初始化SMO参数
void SMO_Init(SMO *smo, float alpha, float beta, float gamma) {
    smo->alpha = alpha;
    smo->beta = beta;
    smo->gamma = gamma;
    smo->omega_est = 0;
    smo->theta_est = 0;
    smo->lambda_d_est = 0;
    smo->lambda_q_est = 0;
}

// 更新SMO估计值
void SMO_Update(SMO *smo, PMSM_Params *params, float v_d, float v_q, float i_d, float i_q) {
    // 滑模面方程
    float s_d = v_d - params->Rs * i_d - smo->alpha * (smo->lambda_d_est - params->Ld * i_d);
    float s_q = v_q - params->Rs * i_q - smo->alpha * (smo->lambda_q_est - params->Lq * i_q);
    
    // 滑模控制律
    float us_d = -smo->beta * sign(s_d);
    float us_q = -smo->beta * sign(s_q);
    
    // 更新估计的磁链
    smo->lambda_d_est = smo->lambda_d_est + dt * (v_d - params->Rs * i_d + us_d);
    smo->lambda_q_est = smo->lambda_q_est + dt * (v_q - params->Rs * i_q + us_q);
    
    // 估计转速
    smo->omega_est = smo->gamma * (smo->lambda_d_est * i_q - smo->lambda_q_est * i_d);
    
    // 更新估计角度
    smo->theta_est = smo->theta_est + smo->omega_est * dt;
}

在这段代码里,我们先定义了电机参数结构体和滑模观测器结构体。初始化函数设置了SMO的一些基本参数,而更新函数则根据输入的电压、电流值,通过滑模面方程、滑模控制律来更新估计的磁链、转速和角度。

切换方法:加权系数

从低速的脉振高频注入切换到中高速的SMO,可不是简单的一刀切,这里用到了加权系数的方法。通过设定一个与转速相关的加权系数,我们可以让两种控制方式平滑过渡。比如,当转速较低时,脉振高频注入的权重高;随着转速升高,SMO的权重逐渐增加。

% 定义权重系数与转速关系
omega_threshold1 = 200; % 切换起始转速
omega_threshold2 = 300; % 切换结束转速
for k = 1:length(t)
    if omega_e < omega_threshold1
        w1 = 1;
        w2 = 0;
    elseif omega_e > omega_threshold2
        w1 = 0;
        w2 = 1;
    else
        w1 = (omega_threshold2 - omega_e) / (omega_threshold2 - omega_threshold1);
        w2 = 1 - w1;
    end
    
    % 根据权重计算最终的控制量
    control_signal = w1 * control_signal_HFI + w2 * control_signal_SMO;
end

在这段MATLAB代码里,我们根据当前转速omegae和预先设定的两个转速阈值omegathreshold1omegathreshold2来计算加权系数w1w2,然后用这两个系数对脉振高频注入(controlsignalHFI)和SMO(controlsignal_SMO)得到的控制量进行加权求和,得到最终的控制信号。

改进的SMO:告别低通滤波器,抑制转速抖动

传统的SMO在估计过程中常常会用到低通滤波器来处理高频噪声,但低通滤波器会带来相位延迟等问题,特别是在电机带载运行时,可能会导致转速抖动。而改进的SMO则巧妙地避开了低通滤波器。

它通过对滑模面和控制律的优化设计,直接对估计值进行处理,有效抑制了高频噪声,同时避免了低通滤波器带来的负面影响。这样,即使电机带载运行,转速也能保持相对稳定,大大提升了系统的性能。

总之,永磁同步电机全速度范围无传感器矢量控制从脉振高频注入切换到改进SMO,结合加权系数的切换方法,为我们提供了一种高效、稳定的控制策略,无论是在理论研究还是实际应用中,都有着广阔的前景。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐