基于无速度传感器的永磁同步电机转速控制 使用滑模位置观测器设计 simulink仿真! 无位置传感器算法可指定或者更换!
在永磁同步电机(PMSM)的控制领域,无速度传感器技术正逐渐崭露头角,它去除了传统速度传感器带来的成本、体积及可靠性问题。今天咱就唠唠基于滑模位置观测器的无速度传感器永磁同步电机转速控制,再结合Simulink仿真看看实际效果。
滑模位置观测器原理
滑模控制(SMC)具有响应速度快、对参数变化及外部干扰不敏感等优点,非常适合永磁同步电机无速度传感器控制。
滑模观测器通过估计电机的反电动势来获取转子位置和速度信息。以 PMSM 在两相静止坐标系($\alpha - \beta$)下的电压方程为例:
\[
\begin{cases}
u{\alpha}=Rsi{\alpha}+Ls\frac{di{\alpha}}{dt}+e{\alpha}\\
u{\beta}=Rsi{\beta}+Ls\frac{di{\beta}}{dt}+e{\beta}
\end{cases}
\]
这里$u{\alpha}$、$u{\beta}$是定子电压在$\alpha - \beta$轴的分量,$i{\alpha}$、$i{\beta}$是定子电流在$\alpha - \beta$轴的分量,$Rs$是定子电阻,$Ls$是定子电感,$e{\alpha}$、$e{\beta}$是反电动势在$\alpha - \beta$轴的分量。
我们构建滑模观测器的状态方程:
\[
\frac{d\hat{i}{\alpha}}{dt}=-\frac{Rs}{Ls}\hat{i}{\alpha}+\frac{1}{Ls}u{\alpha}-\frac{1}{Ls}\hat{e}{\alpha}
\]
\[
\frac{d\hat{i}{\beta}}{dt}=-\frac{Rs}{Ls}\hat{i}{\beta}+\frac{1}{Ls}u{\beta}-\frac{1}{Ls}\hat{e}{\beta}
\]
基于无速度传感器的永磁同步电机转速控制 使用滑模位置观测器设计 simulink仿真! 无位置传感器算法可指定或者更换!
其中$\hat{i}{\alpha}$、$\hat{i}{\beta}$是估计电流,$\hat{e}{\alpha}$、$\hat{e}{\beta}$是估计反电动势。
滑模面设计
滑模面通常选为电流误差:
\[
s{\alpha}=i{\alpha}-\hat{i}_{\alpha}
\]
\[
s{\beta}=i{\beta}-\hat{i}_{\beta}
\]
滑模控制律
为了使系统状态在滑模面上滑动,控制律一般设计为:
\[
\hat{e}{\alpha}=ks \text{sgn}(s_{\alpha})
\]
\[
\hat{e}{\beta}=ks \text{sgn}(s_{\beta})
\]
这里$k_s$是滑模增益,$\text{sgn}$是符号函数。通过这个控制律,迫使估计电流向实际电流靠拢,进而通过估计反电动势获取转子位置和速度。
代码实现(以MATLAB为例)
% 参数设置 Rs = 0.8; % 定子电阻 Ls = 0.0085; % 定子电感 p = 4; % 极对数 J = 0.001; % 转动惯量 B = 0.001; % 粘性摩擦系数 % 滑模增益 ks = 10; % 仿真参数 dt = 0.0001; % 时间步长 T = 0.5; % 仿真时长 time = 0:dt:T; % 初始化变量 ia = zeros(size(time)); ib = zeros(size(time)); ia_hat = zeros(size(time)); ib_hat = zeros(size(time)); ea_hat = zeros(size(time)); eb_hat = zeros(size(time)); theta_hat = zeros(size(time)); omega_hat = zeros(size(time)); % 初始值 ia(1) = 0; ib(1) = 0; ia_hat(1) = 0; ib_hat(1) = 0; theta_hat(1) = 0; omega_hat(1) = 0; for k = 1:length(time)-1 % 假设这里有获取到的实际电压ua和ub ua = get_ua(time(k)); ub = get_ub(time(k)); % 计算估计电流 ia_hat_dot = (-Rs/Ls)*ia_hat(k)+(1/Ls)*ua-(1/Ls)*ea_hat(k); ib_hat_dot = (-Rs/Ls)*ib_hat(k)+(1/Ls)*ub-(1/Ls)*eb_hat(k); ia_hat(k + 1) = ia_hat(k)+ia_hat_dot*dt; ib_hat(k + 1) = ib_hat(k)+ib_hat_dot*dt; % 计算滑模面 sa = ia(k)-ia_hat(k); sb = ib(k)-ib_hat(k); % 计算估计反电动势 ea_hat(k + 1) = ks*sign(sa); eb_hat(k + 1) = ks*sign(sb); % 计算估计转子位置和速度 theta_hat_dot = (3*p/(2*Ls))*(ea_hat(k + 1)*ib_hat(k + 1)-eb_hat(k + 1)*ia_hat(k + 1)); theta_hat(k + 1) = theta_hat(k)+theta_hat_dot*dt; omega_hat(k + 1) = theta_hat_dot; end这段代码里,先设置了电机和滑模观测器的基本参数,接着在循环中,依据滑模观测器的原理,不断更新估计电流、滑模面、估计反电动势以及转子位置和速度的估计值。假设getua和getub函数可以获取到实际的电压值。
Simulink仿真搭建
在Simulink中搭建基于滑模位置观测器的永磁同步电机转速控制系统仿真模型。
- 电机模块:可以使用Simulink库中的永磁同步电机模型,设置好电机的参数,如定子电阻、电感、极对数等。
- 滑模观测器模块:将前面代码实现的滑模观测器算法在Simulink中以模块的形式搭建。这里可以使用积分器模块计算估计电流,通过比较器模块计算滑模面,再利用符号函数模块实现滑模控制律。
- 转速控制模块:通常采用PI控制器来实现转速的闭环控制,将期望转速与观测器估计的转速作差,经过PI控制器输出转矩给定,进而控制电机转速。
无位置传感器算法更换
要是想更换无位置传感器算法,比如换成基于扩展卡尔曼滤波器(EKF)的算法。与滑模观测器不同,EKF通过建立电机的状态空间模型,考虑系统噪声和测量噪声,以一种最优估计的方式来获取转子位置和速度。
在代码实现上,需要重新构建状态空间方程和测量方程,并且在每一步迭代中进行预测和更新操作。在Simulink中,则要重新搭建基于EKF算法的观测器模块来替代原有的滑模观测器模块。
通过以上从原理到代码实现,再到Simulink仿真的全过程,我们对基于无速度传感器的永磁同步电机转速控制有了较为深入的了解,也看到了滑模位置观测器在其中的应用,并且知道了如何更换其他无位置传感器算法。这为进一步优化永磁同步电机控制性能提供了思路和方法。