硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1949|回复: 12
收起左侧

FOC电机控制学习记录(四) SVPWM推导

[复制链接]

95

主题

528

回帖

828

积分

金牌会员

积分
828
发表于 2024-8-17 14:20:53 | 显示全部楼层 |阅读模式
4.SVPWM推导.pdf (244.13 KB, 下载次数: 72)

共产主义一定胜利!
回复

使用道具 举报

95

主题

528

回帖

828

积分

金牌会员

积分
828
 楼主| 发表于 2024-8-17 14:22:17 | 显示全部楼层

里面计算的代码如下:
[C] 纯文本查看 复制代码
% 定义六种开关状态下的相电压
switch_states = [
    0, 0, 1;
    0, 1, 0;
    0, 1, 1;
    1, 0, 0;
    1, 0, 1;
    1, 1, 0;
];

% 定义基本变量
Vdc = 1; % 直流母线电压

% 空间矢量的角度
angles = linspace(0, 2*pi, 7); % 0 到 360 度,分成6等分

figure;
hold on;
axis equal;
title('SVPWM 空间矢量图');
xlabel('实轴');
ylabel('虚轴');

% 获取当前开关状态的相电压
for i = 1:6
    ua = switch_states(i, 1);
    ub = switch_states(i, 2);
    uc = switch_states(i, 3);
    if (((ua + ub + uc) == 0) || (ua + ub + uc) == 3)
        ua = 0;
        ub = 0;
        uc = 0;
    elseif ((ua + ub + uc) == 1)
        ua = ua * 2/3;
        ub = ub * 2/3;
        uc = uc * 2/3;
        if (ua == 0)
            ua = -1/3;
        end
        if (ub == 0)
            ub = -1/3;
        end
        if (uc == 0)
            uc = -1/3;
        end
    elseif ((ua + ub + uc) == 2)
        ua = ua * 1/3;
        ub = ub * 1/3;
        uc = uc * 1/3;
        if (ua == 0)
            ua = -2/3;
        end
        if (ub == 0)
            ub = -2/3;
        end
        if (uc == 0)
            uc = -2/3;
        end
    end
    ua = ua * Vdc;
    ub = ub * Vdc;
    uc = uc * Vdc;
    
    % 计算空间矢量 U_s
    U_s = (2/3) * (ua + ub * exp(2*pi/3*1i) + uc * exp(4*pi/3*1i));
    
    % 绘制空间矢量
    quiver(0, 0, real(U_s), imag(U_s), 'AutoScale', 'off', 'LineWidth', 2);
    
    % 标注角度
    text(real(U_s) * 1.1, imag(U_s) * 1.1, sprintf('(%d,%d,%d)%.0f°',switch_states(i, 1), switch_states(i, 2), switch_states(i, 3), mod(rad2deg(angle(U_s)), 360)), 'FontSize', 12);
end

% 绘制单位圆,表示所有矢量终点应该落在该圆上
theta = linspace(0, 2*pi, 100);
plot(cos(theta), sin(theta), '--k');

hold off;

共产主义一定胜利!
回复

使用道具 举报

95

主题

528

回帖

828

积分

金牌会员

积分
828
 楼主| 发表于 2024-8-17 14:32:51 | 显示全部楼层
我们通过MOS管开关,可以直接得到的就是这六个矢量。(当然还有0矢量)

如果要得到任意一个矢量,就是根据让对应扇区的两个矢量去合成(矢量的占空比不一样,就可以得到任意方向的矢量了)
共产主义一定胜利!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115454
QQ
发表于 2024-8-18 11:35:31 | 显示全部楼层
这个FOC控制学习,是不是少了2和3.

刚刚搜了下,没找到。
回复

使用道具 举报

95

主题

528

回帖

828

积分

金牌会员

积分
828
 楼主| 发表于 2024-8-19 08:22:43 | 显示全部楼层
eric2013 发表于 2024-8-18 11:35
这个FOC控制学习,是不是少了2和3.

刚刚搜了下,没找到。

是的。二和三,写了一个目录...内容还没写。
共产主义一定胜利!
回复

使用道具 举报

4

主题

1441

回帖

1453

积分

至尊会员

积分
1453
发表于 2024-8-19 09:41:33 | 显示全部楼层
回复

使用道具 举报

5

主题

336

回帖

351

积分

高级会员

积分
351
发表于 2024-8-19 15:26:45 | 显示全部楼层
跟踪这个专题.我在想:第一章是什么?
回复

使用道具 举报

95

主题

528

回帖

828

积分

金牌会员

积分
828
 楼主| 发表于 2024-8-20 10:01:15 | 显示全部楼层
soyshell 发表于 2024-8-19 15:26
跟踪这个专题.我在想:第一章是什么?

不知道你是否有控制有刷直流电机的经验。
有刷电机通过电刷换向,常见的结构就是,定子是一块磁铁然后转子通电产生磁场,通过电刷换向,不停旋转。
Snipaste_2024-08-20_09-50-06.png


有刷电机毕竟存在电刷,一方面这个结构转速快了可能会起火花,另外一方面存在摩擦力也限制了转速。
那么有什么方法可以解除这个限制吗?

聪明的前辈想到了,如果我设计这样一种电机,它的转子是一块永磁体,而它的磁场不停的旋转,岂不是不需要电刷唤向,电机也可以不停旋转了?
那么这个电机就是永磁同步电机。

那么怎么产生这样的磁场呢?
空间上相差 120°,相位也相差 120°的三个弦波能够合成一个旋转的空间矢量(当然实际上三个,四个,五个都可以,我看到过有四相电机,五相电机,六相电机,n相电机的FOC控制论文..)

我之前那个(一)就是说明了这样一件事情。
我们控制了三相电压也就控制三相的电流,也就控制了三相产生的磁场,也就控制了合成的磁场。而这个合成的磁场就可以控制电机的旋转。
共产主义一定胜利!
回复

使用道具 举报

5

主题

336

回帖

351

积分

高级会员

积分
351
发表于 2024-8-20 11:51:20 | 显示全部楼层
谢谢楼主的回答。有刷电机,玩过一段时间。我一直想在“两相步进电机上,运行FOC”,实现步进电机闭环。
回复

使用道具 举报

95

主题

528

回帖

828

积分

金牌会员

积分
828
 楼主| 发表于 2024-8-20 12:19:55 | 显示全部楼层
soyshell 发表于 2024-8-20 11:51
谢谢楼主的回答。有刷电机,玩过一段时间。我一直想在“两相步进电机上,运行FOC”,实现步进电机闭环。

我记得2020年时候我看到github上一个项目就是FOC驱动的步进电机XDrive
我后面对电机控制产生兴趣也是因为这个。
共产主义一定胜利!
回复

使用道具 举报

8

主题

65

回帖

89

积分

初级会员

积分
89
发表于 2024-8-20 13:11:05 来自手机 | 显示全部楼层
电机控制挺复杂的,本科、研究生、博士都有研究方向。两大流派直接转矩控制DTC和FOC。特别是无传感器的控制算法。DTC是ABB专有的,FOC是西门子、施耐德,国内的汇川。
回复

使用道具 举报

4

主题

1441

回帖

1453

积分

至尊会员

积分
1453
发表于 2024-8-20 16:45:05 | 显示全部楼层
回复

使用道具 举报

5

主题

336

回帖

351

积分

高级会员

积分
351
发表于 2024-8-21 09:24:21 | 显示全部楼层
谢谢楼主。我把XRIVER的源程序下载下来,学习学习。有疑问,还要向你多多请教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 12:29 , Processed in 0.409319 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表