【电机应用控制】——FOC基础理论针对无刷电机360°无死角磁场矢量控制

news2024/11/23 21:20:05

目录

前言

一、FOC简介

1、概述

2、框图详解

二、FOC控制核心—坐标变换

1、CLARKE变换

2、PARK变换&反变换

三、FOC闭环回路 

四、SVPWM解析

总结


前言

声明:学习笔记来自正点原子B站教程,根据自己理解进行精简总结,仅供学习交流!!


一、FOC简介

1、概述

FOC( Field Oriented Control )直译即磁场定向控制,又称为磁场矢量控制(VC,Vector Control),特点:通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。

                      

之前介绍直流无刷电机时用的时六步换相法(左),磁场每次旋转60°,对于机械臂等领域这样太不精确,所以使用FOC(右),可控制每一相的电流强度实现360°无死角的磁场方向合成。两者具体对比如下:

                   

 注意:虽然FOC法常用于直流无刷电机中的PMSM永磁同步电机,但BLDC同样可以使用FOC的方式进行控制。


2、框图详解

              

PI即PID控制,只不过这里只用到P和I;逆变器即之前直流无刷电机中的三相逆变电路,通过三个半桥控制电机。

首先对电机三相电流进行采样得到:ia、ib、ic;然后将ia、ib、ic经过clarke变换得到iα、iβ;将iα、iβ经过park变换得到iq、id;计算iq、id和其设定值iq_Ref、id_Ref的误差;将上述误差输入到两个PID(只用到PI)控制器,得到输出的控制电压Vq 、 Vd;将Vq 、 Vd进行反park变换得到Vα、Vβ;将Vα、Vβ合成电压空间矢量,输入SVPWM模块进行调制,输出该时刻三个半桥的开关状态。

clarke和park变换是为了变为线性好处理分析, 之所以最后还要反变换是因为SVPWM调制算法需要用到α、β。


二、FOC控制核心—坐标变换

坐标变换包含CLARKE变换、PARK变换、反PARK变换。

1、CLARKE变换

三相电路计算困难,将三相等效成二相,变换原则是电流产生的磁场相等(即等效变换)。思路是将三相电流A、B、C投射到直角坐标系转换为两相α、β。三相电流一般只需测出两相就可由KCL得出另一相。

                       

 虽然α与β坐标系下少了一维变量,但是新的变量还是非线性的(正弦),只有想办法变换为线性的才利于控制,这就需要park变换。


2、PARK变换&反变换

Park变换可以将电机从两相静止坐标系变换到随转子转动的坐标系(dq轴)d轴方向与转子内磁场方向重合,称为直轴q轴方向与转子内磁场方向垂直,称为交轴

 其中θ为转子旋转的角度(可通过霍尔/编码器测出)。d - q 坐标系是始终跟着转子旋转的,Id和Iq是恒定不变的两个值,这个坐标系下两个控制量都被线性化了。线性化后要经过PID控制算法,输出后还要进行反PARK变换,因为SVPWM算法的实现需要用到静止的坐标系α,β


三、FOC闭环回路 

电流环:

①通过电流反馈来控制电机电流(扭矩)②控制电机的转速 ③控制电机位置。实际只用到了PI控制,没有引入微分,因为电流的采样率非常高不需要加入微分项。

 iq是我们需要的(驱动有关),代表了期望的力矩输出。id是我们不需要的(只会增大电流让电机发热),希望尽可能把它控制为0。

 速度+电流环:

                

 Speed_Ref 是速度设定值,w 是电机转速;将速度环的输出作为电流环的输入,就可以实现速度+电流双闭环控制了。

位置+速度+电流环:

 Position_Ref 是位置设定值,Position 是位置反馈。将位置环的输出作为速度环的输入,将速度环的输出作为电流环的输入,就可以实现三闭环控制。

 但是位置控制模式的时候,电机的转速会很慢,这时候用平均测速法会存在非常大的误差(转子不动或者动的很慢,编码器就没有输出或者只输出1、2个脉冲)。所以一般使用位置环时,直接使用位置+电流环即可,去掉速度环


四、SVPWM解析

在介绍SVPWM之前先了解先SPWM!

旋转的PMSM电机波形:

当我们手动将PMSM电机让转子匀速转动时,此时使用示波器观察三相输出电压(反电动势),你会发现有三组正弦波形,且两两之间的相位差为120°

 而正弦波正是FOC驱动无刷电机的手段,利用PWM产生的正弦波就是SPWM波。

了解下SPWM:

通过调整占空比使等效电流近似为正弦波,这种PWM也就是SPWM。SPWM不依赖开关顺序,3相独立调制,类似开环控制,是没有反馈的,只管生成正弦波。

 但是SPWM调试方式在FOC实现中并不常用,原因是SPWM要比后面要说的SVPWM母线电压利用率要低15%。从控制的角度来看,我们根本就不想跟什么三个正弦波打交道,所以就用到了坐标变换。


SVPWM解析

SVPWM (Space Vector Pulse Width Modulation)即:空间电压矢量。由三相逆变器的六个开关元件(MOS管)组成的特定开关模式,使输出电压波形尽可能接近于理想的正弦波形。着眼于如何使电机获得理想圆形磁链轨迹。

 SVPWM算法的目的,就是使用逆变电路的6个开关状态把在空间中旋转的​矢量表示出来,我们把这个矢量称为空间电压矢量。SVPWM算法实际上计算的是三相逆变器的六个开关何时导通,何时切断(同一列不可同时导通或关闭,即同一半桥不可同时导通,所以有2x2x2=8种情况)

 举例分析:

 根据三相电阻相等,即Ra=Rb=Rc,再根据串联分压定理:

 则同理可得8种情况的相电压如上右图表格(非零矢量的幅值相同,都是2/3Udc)

坐标系表示空间矢量:

以U4(100)合成的空间电压矢量为例(以指向中心点O的方向为负,反之为正,如A相OA正,AO负),即:

但是这8种开关组合只能合成6个方向的空间电压矢量,如何合成任意位置空间电压矢量?

 在一个扇区内,相邻两个电压矢量以及零矢量,按伏秒平衡的原则来合成该扇区内的任意电压矢量 ,即:(本质思路是控制电压时间占比)

 只要合理地配置相邻的两个基向量和零矢量在一个周期中的占比,就可以合成出等效的任意空间电压矢量了

但是还有两个问题,如何计算相邻电压矢量与零矢量在一个周期内的时间占比?期望的电压矢量所属扇区判定?

时间占比计算:

假设在扇区一,那么此时等式为:

 

 结果最后为什么除以2平均分配给零矢量T7和T0呢?(以7段式(7periods)为例)

 每个状态切换的时候,都只有一个相发生了转变,从而降低MOS管的开关损耗;合理插入两个零矢量,并且对零矢量在时间上进行了平均分配,以使产生的PWM对称,从而有效地降低了PWM的谐波分量

扇区判定:

 


总结

遇到挫折,要有勇往直前的信念,马上行动,坚持到底,决不放弃,成功者决不放弃,放弃者绝不会成功。成功的道路上,肯定会有失败;对于失败,我们要正确地看待和对待,不怕失败者,则必成功;怕失败者,则一无是处,会更失败。
今天的学习分享到此就结束了,我们下次再见!!

往期精彩:

控制理论 PID算法
STM32定时器输入捕获(IC)
STM32定时器输出比较(PWM波)
STM32定时中断
STM32外部中断
STM32GPIO精讲

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/508649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『python爬虫』16. 多线程与多进程(保姆级图文)

目录 多线程1. 什么是多线程?2. 串行模式3. 多线程3.1 多线程方法写法3.2 多线程方法带参数3.3 多线程类写法 多进程1. 什么是多进程 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 多线程 1. 什么是多…

优化Docker Compose日志输出,加速容器化应用的轻松部署

摘要: 在使用 Docker Compose 部署容器化应用程序时,优化日志输出对于提升效率和管理便利性至关重要。本文将介绍如何优化 Docker Compose 日志输出,以加速容器化应用的轻松部署过程。 优化操作 当我们使用 Docker Compose 部署容器化应用程…

【Queue新技法】用双数组实现一个队列 C++

目录 1 常规的队列构建2 加入一些限制2-1形式化说明 附录0 双数组或双链表实现队列1 单链表与循环缓冲区实现队列3 参考资料 1 常规的队列构建 到火车站办理退票,排队的人构成队列。注意到有两个关键动作: 入队,即自觉站到队伍的末尾。出队&…

一篇文章搞定《ViewPage2离屏加载》

------《ViewPage2离屏加载》 前言离屏加载是什么OffscreenPageLimit设置OffscreenPageLimit表现OffscreenPageLimit值为1OffscreenPageLimit值为3 OffscreenPageLimit值取多大比较合适 前言 这里就不讲ViewPage了,买新不买旧,用新不用旧。 但是会将Vie…

Power BI: 表格显示切片器选中时间之前的数据

例如下面的例子,Year List表和Caleadar表是1对多的关联关系。 Caleadar表: Caleadar VAR StartYear YEAR(NOW())-5 VAR EndYear YEAR(NOW())5 RETURN ADDCOLUMNS (CALENDAR (DATE(StartYear,1,1), DATE(EndYear,12,31)),"Year", YEAR ([…

【设计模式】| 修炼内功 | 23种设计模式——工厂方法模式(含抽象)

设计模式如同织锦之艺术,精心构筑,展示优美。 学习设计模式,犹如追逐清晨的曙光,扉页掀开了人生的新篇章。当你学会设计模式的奥秘,就如同走进了灯火通明的城市,丰富多彩的建筑,让你大开眼界&am…

30个最常用的空间SQL用例

在开始使用空间 SQL 时,至少对我而言,最大的挑战之一是拥有一个快速简便的参考,以将你当前的 GIS 工作流转换为 SQL。 有许多令人惊叹的资源可以扩展这方面的知识,但本指南旨在成为一本真正简单的食谱,以开始将你当前的…

从零开始的强化学习入门学习路线

强化学习是机器学习领域中的一个分支,它是指智能体通过与环境的交互来学习如何采取最佳行动以最大化奖励信号的过程。强化学习在许多领域都有广泛的应用,如游戏、自动驾驶和机器人控制等。如果你对强化学习感兴趣,下面是一个入门强化学习的学…

SequoiaDB分布式数据库2023.4月刊

本月看点速览 赋能产业升级,荣获新睿之星 聚焦金融,进一步探索非结构化数据价值释放 再获肯定,入选2023年中国最佳信创厂商入围名单 青杉计划2023已开启,一起攀登更高的“杉” 赋能产业升级,荣获新睿之星 4月18日…

PyTorch典型函数之gather

PyTorch典型函数之gather 作用描述函数详解典型应用场景(1) 深度强化学习中计算损失函数 参考链接 作用描述 如上图所示,假如我们有一个Tensor A(图左),要从A中提取一部分元素组成Tensor B(图右)&#xff0…

7.外观模式C++用法示例

外观模式 一.外观模式1.原理2.特点3.外观模式与装饰器模式的异同4.应用场景C程序示例 一.外观模式 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,隐藏了一个或多个复杂的子系统的复杂性,并使…

图嵌入表示学习—Node Embeddings随机游走

Random Walk Approaches for Node Embeddings 一、随机游走基本概念 想象一个醉汉在图中随机的行走,其中走过的节点路径就是一个随机游走序列。 随机行走可以采取不同的策略,如行走的方向、每次行走的长度等。 二、图机器学习与NLP的关系 从图与NLP的…

posix线程的优先级测试

如果创建的线程不够多&#xff0c;有些问题是体现不出来的。 优先级打印&#xff1a; 测试目的&#xff1a;输出三种调度模式下的最大优先级和最小优先级 #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <fcntl.h> #…

Kubernetes_容器网络_01_Docker网络原理(二)

文章目录 一、前言二、被隔离的Docker容器三、网桥Bridge四、VethPair网络对五、统一宿主机上的两个Container容器通信六、宿主机访问其上的容器七、宿主机上的容器访问另一个宿主机八、尾声 一、前言 二、被隔离的Docker容器 Linux 网络&#xff0c;就包括&#xff1a;网卡&…

技术选型对比- RPC(Feign VS Dubbo)

协议 Dubbo 支持多传输协议: Dubbo、Rmi、http,可灵活配置。默认的Dubbo协议&#xff1a;利用Netty&#xff0c;TCP传输&#xff0c;单一、异步、长连接&#xff0c;适合数据量小(传送数据小&#xff0c;不然影响带宽&#xff0c;响应速度)、高并发和服务提供者远远少于消费者…

UnityWebGL+阿里云服务器+Apache完成项目搭建展示

一、服务器相关 Step1:租借一台阿里云服务器 我自己租借了一台北京的ECS服务器&#xff0c;有免费一年的活动&#xff0c;1 vCPU 2 GiB&#xff0c;我自己选择的Ubuntu系统&#xff0c;也可以选择Windows系统 Step2:进入远程连接 进入自己的服务器实例后&#xff0c;点击远程…

vue+elementui+nodejs机票航空飞机航班查询与推荐

语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode )本系统主要是为旅客提供更为便利的机票预定方式&#xff0c;同时提高民航的预定机票的工作效率。通过网络平台实现信息化和网络化&am…

关于Android的性能优化,主要是针对哪些方面的问题进行优化

前言 我们在开发Android的时候&#xff0c;经常会遇到一些性能问题&#xff1b;例如&#xff1a;卡顿、无响应&#xff0c;崩溃等&#xff0c;当然&#xff0c;这些问题为我们可以从日志来进行追踪&#xff0c;尽可能避免此类问题的发生&#xff0c;要解决这些问题&#xff0c…

mysql从零开始(05)----锁

全局锁 使用 # 启用全局锁 flush tables with read lock # 释放全局锁 unlock tables开启全局锁后&#xff0c;整个数据库就处于只读状态了&#xff0c;这种状态下&#xff0c;对数据的增删改操作、对表结构的更改操作都会被阻塞。 另外&#xff0c;当会话断开&#xff0c;全…

【1015. 可被 K 整除的最小整数】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给定正整数 k &#xff0c;你需要找出可以被 k 整除的、仅包含数字 1 的最 小 正整数 n 的长度。 返回 n 的长度。如果不存在这样的 n &#xff0c;就返回 -1。 注意&#xff1a; n 不符合 64 位带…