c++学习【23】matlab实现FOC算法

Matlab 复制代码
% 创建Figure窗口和滑块
figure;

Id_slider = uicontrol('Style', 'slider', 'Position', [100 50 120 20], ...
    'Min', -5, 'Max', 5, 'Value', 1.5, 'Callback', @updateVoltage);
Id_text = uicontrol('Style', 'text', 'Position', [100 80 120 20], 'String', 'd轴电流: 1.5');

Iq_slider = uicontrol('Style', 'slider', 'Position', [300 50 120 20], ...
    'Min', -5, 'Max', 5, 'Value', 0.8, 'Callback', @updateVoltage);
Iq_text = uicontrol('Style', 'text', 'Position', [300 80 120 20], 'String', 'q轴电流: 0.8');

% 创建绘图区域
axes_handle = axes('Units', 'pixels', 'Position', [100 120 500 300]);

% 初始绘制电压波形

while true
    Id = get(Id_slider, 'Value');
    Iq = get(Iq_slider, 'Value');
    
    % 更新文本显示
    set(Id_text, 'String', sprintf('d轴电流: %.2f', Id));
    set(Iq_text, 'String', sprintf('q轴电流: %.2f', Iq));
    
    % 控制器输出三相电压
    Udc = 400;   % 直流电压
    Ualpha = Id; % α轴电压等于d轴电流
    Ubeta = Iq;  % β轴电压等于q轴电流

    % 计算空间矢量调制(Space Vector Modulation,SVM)
    Us_alpha = Ualpha - 0.5 * Ubeta;
    Us_beta = Ubeta;

    % 逆变器输出的三相电压
    Ua = sqrt(2/3)*Us_alpha + sqrt(1/3)*Us_beta;
    Ub = -sqrt(1/6)*Us_alpha + sqrt(5/6)*Us_beta;
    Uc = -sqrt(1/6)*Us_alpha - sqrt(5/6)*Us_beta;

    % 绘制波形
    t = linspace(0, 1, 1000); % 时间范围
    ua = Ua * sin(2*pi*50*t); % 相电压波形
    ub = Ub * sin(2*pi*50*t - (2*pi/3));
    uc = Uc * sin(2*pi*50*t + (2*pi/3));

    plot(axes_handle, t, ua, 'r', t, ub, 'g', t, uc, 'b');
    xlabel('时间');
    ylabel('电压');
    title('三相电压波形');
    legend('Ua', 'Ub', 'Uc');
    
    % 暂停一段时间,以便观察更新效果
    pause(0.1);
end

三目运算符

定义引脚对应

定义一些变量

在setup中配置设置

1)电角度求解函数

2)角度归一化函数

3)计算电压需要多大占空比函数

4)计算目标电压和电角度需要什么三相电的函数

5)开环速度控制函数(开环表示不知角度变化,没有编码器,只能强行加入一个人为设定的随时间变化的角度变化)(由输入的弧度每秒得到三相电压)

在loop中运行开环速度控制函数

相关推荐
时光之源3 分钟前
记录:在VSCode中运行C/C++程序
c语言·c++·vscode
小樱花的樱花6 分钟前
C++访问权限:封装的艺术
开发语言·c++
liuyao_xianhui19 分钟前
优选算法_岛屿数量_floodfill算法)_bfs_C++
java·开发语言·数据结构·c++·算法·链表·宽度优先
落羽的落羽20 分钟前
【Linux系统】入门线程:线程介绍与线程控制
linux·服务器·c++·人工智能·stm32·单片机·机器学习
深邃-31 分钟前
字符函数和字符串函数(2)
c语言·数据结构·c++·后端·算法·restful
bekote34 分钟前
PTA基础编程题目集-6-11 求自定类型元素序列的中位数(简单解法)
数据结构·c++·算法
南境十里·墨染春水35 分钟前
C++ 笔记 赋值兼容原则(公有继承)(面向对象)
开发语言·c++·笔记
森G3 小时前
29、QStringListModel 和 QListView---------Model/View模型视图
c++·qt
ALex_zry9 小时前
C++网络编程心跳机制与连接保活:长连接稳定性保障
开发语言·网络·c++
学嵌入式的小杨同学10 小时前
STM32 进阶封神之路(三十二):SPI 通信深度实战 —— 硬件 SPI 驱动 W25Q64 闪存(底层时序 + 寄存器配置 + 读写封装)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构