九、FOC原理详解

1、FOC简介

FOC(field-oriented control)为磁场定向控制,又称为矢量控制(vectorcontrol),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最佳选择。FOC 可以精确地控制磁场大小与方向,使得电机转矩平稳、噪声小、效率高,并且具有高速的动态响应。目前已在很多应用上逐步替代传统的控制方式,在运动控制行业中备受瞩目。

电流可以产生磁场,并且磁场大小与电流大小成正比,因此为了使定子构造最合适的旋转磁场,需要精确控制线电流。想要磁场旋转就需要线电流做着正弦变化,而 3 组线圈绕组的角度差,就使得三相电流需要时刻做相位差为 120 度的正弦变化,这时可使定子构造最合适的旋转磁场,显然简单的 6 步换向无法控制三相电流做正弦变化,转矩在一定程度上会有跳变,这样无法输出稳定转矩,因此需要 FOC 来保持转子的扭矩时刻连续稳定可调。下面总结六步换向和 FOC 控制方式的对比表,如下表所示。

2、FOC框图

上图是以电流闭环控制为例,也就是让电机始终保持一个恒定力矩(力矩与电流成正比)。最左边的 Iq_Ref 和 Id_Ref 两个变量经过 PID 控制器进行反馈调节,其中涉及到几个变换模块,包括:Clarke 变换、Park 变换以及反 Park 变换,最后是 SVPWM模块作用到三相逆变器进而控制电机旋转。

FOC 的整个控制框图:

① 对电机三相电流进行采样得到: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 模块进行调制,合成电压空间矢量,输出该时刻三个半桥的开关状态进而控制电机旋转;

⑧ 循环上述步骤。

3、FOC坐标变换(FOC控制的核心)

假设我们将一个 PMSM 电机手动让其匀速旋转,此时使用示波器观察它的三相输出电压(反电动势),我们会发现示波器上会得到三组正弦波,并且三组正弦波之间两两相位差为 120°。

所以反过来我们在三相无刷电机的三相线圈上输入上述三相正弦电压,那么就可以驱动无刷电机平稳高效地旋转了。而这正是 FOC 驱动无刷电机的基本手段,但是从控制的角度来看,我们根本就不想跟三个正弦波打交道,因为对于非线性的信号进行准确控制就要使用复杂的高阶控制器,这对于建模成本、处理器算力、控制实时性等都是非常不利的,那么有没有什么方法可以将被控制量线性化呢?答案是当然有的,只需要应用一些数学技巧。

3.1CLARKE变换

三相电路计算困难,将三相等效成二相,变换原则是电流产生的磁场相等。

根据基尔霍夫定律(KCL)可得,流入节点的电流之和等于流出节点的电流之和。Ia+ib+ic=0;

将ia、ib、ic分解为iα和iβ

假设变换前三相定子绕组匝数为N3,变换后的两相定子绕组匝数为N2,根据磁动量守恒可得:

提取iα和iβ可以得到

遵循恒幅值不变原理可得:N3/N2=2/3

带入N3/N2可得

归纳为

化简为

经过 Clarke 变换后就变成了直角坐标系了,变换前后的波形如下图。

可以看到变换后还是正弦波,虽然少了一个需要控制的变量,但是新的变量还是非线性的(正弦),控制它依旧难度很大。此时就需要使用PARK进行变换来得到两个线性的变量。

3.2PARK变换

Park变换可以将电机从两相静止坐标系变换到随转子转动的坐标系(dq轴)。

d轴方向与转子内磁场方向重合,称为直轴;q轴方向与转子内磁场方向垂直,称为交轴。

将iα和iβ分解为id和iq。

将 α—β 坐标系变换到 d-q 坐标系,即 Park 变换;依据坐标变换,Park 变换矩阵为:

变换公式后为

3.3反PARK变换

在将 Park 变换后的结果在经过 PID 控制器,PI 运算后的输出结果在进行反 Park 变换,反 Park 变换矩阵为:

变换公式后为

4、FOC的目的

通过将转子磁链进行了解耦,分解为转子旋转的径向和切向这两个方向的变量:Iq 以及 Id。

1、Iq 是我们需要的。代表了期望的力矩输出;

2、Id 是我们不需要的。我们希望尽可能把它控制为 0;

5、FOC中PID双环和三环的使用

电流环、速度环、位置环都会经历完成了FOC流程,并在PID控制模块进行偏差计算,对前一个系统(外环)的输出进行偏差的计算,计算结果作为后一个系统(内环)的输入。

位置环、速度环、电流环(由外环到内环排序)

Position_Ref 是位置设定值,Position 是位置反馈,Speed_Ref 是速度设定值,w 是电机转速。

将位置环的输出,作为速度环的输入;将速度环的输出,作为电流环的输入,就可以实现位置+速度+电流三闭环控制了。

速度环、电流环(由外环到内环排序)

Speed_Ref 是速度设定值,w 是电机转速。

将速度环的输出,作为电流环的输入,就可以实现速度+电流双闭环控制了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

selinux及防火墙

selinux说明 SELinux 是 Security-Enhanced Linux 的缩写,意思是安全强化的 linux 。 SELinux 主要由美国国家安全局( NSA )开发,当初开发的目的是为了避免资源的误用。 httpd进程标签(/usr/share/nginx/html &#…

Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)

使用Flink编写代码,步骤非常固定,大概分为以下几步,只要牢牢抓住步骤,基本轻松拿下: 1. env-准备环境 2. source-加载数据 3. transformation-数据处理转换 4. sink-数据输出 5. execute-执行 DataStream API开发 //n…

解锁PPTist的全新体验:Windows系统环境下本地部署与远程访问

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 在Windows系统环境中,如何本地部署开源在线演示文稿应用PPTist,并实现远程访问?本文将为您提供详细的部署和配置指南。 P…

《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍

经过近一周的USART学习,我深刻体会到通信对单片机的重要性。它就像人类的手脚和大脑,只有掌握了通信技术,单片机才能与外界交互,展现出丰富多彩的功能,变得更加强大和实用。 单片机最基础的“语言”是二进制。可惜&am…

URL在线编码解码- 加菲工具

URL在线编码解码 打开网站 加菲工具 选择“URL编码解码” 输入需要编码/解码的内容,点击“编码”/“解码”按钮 编码: 解码: 复制已经编码/解码后的内容。

【TEST】Apache JMeter + Influxdb + Grafana

介绍 使用Jmeter发起测试,测试结果存入Influxdb,Grafana展示你的测试结果。 环境 windows 10docker desktopJDK17 安装 Apache JMeter 访问官网(Apache JMeter - Apache JMeter™)下载JMeter(目前最新版本5.6.3&a…

Linux笔记---进程:进程切换与O(1)调度算法

1. 补充概念 1.1 并行与并发 竞争性:系统进程数目众多,而CPU资源只有少量,甚至只有1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。独立性:多进程运…

C语言:深入理解指针

一.内存和地址 我们知道计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是 8GB/16GB/32GB 等,那这些内存空间…

mybatis学习(一)

声明:该内容来源于动力节点,本人在学习mybatis过程中参考该内容,并自己做了部分笔记,但个人觉得本人做的笔记不如动力节点做的好,故使用动力节点的笔记作为后续mybatis的复习。 一、MyBatis概述 1.1 框架 在文献中看…

【C++】list模拟实现(详解)

本篇来详细说一下list的模拟实现,list的大体框架实现会比较简单,难的是list的iterator的实现。我们模拟实现的是带哨兵位头结点的list。 1.准备工作 为了不和C库里面的list冲突,我们在实现的时候用命名空间隔开。 //list.h #pragma once #…

IT服务团队建设与管理

在 IT 服务团队中,需要明确各种角色。例如系统管理员负责服务器和网络设备的维护与管理;软件工程师专注于软件的开发、测试和维护;运维工程师则保障系统的稳定运行,包括监控、故障排除等。通过清晰地定义每个角色的职责&#xff0…

初学 flutter 问题记录

windows搭建flutter运行环境 一、运行 flutter doctor遇到的问题 Xcmdline-tools component is missingRun path/to/sdkmanager --install "cmdline-tools;latest"See https://developer.android.com/studio/command-line for more details.1)cmdline-to…

神经网络(系统性学习二):单层神经网络(感知机)

此前篇章: 神经网络中常用的激活函数 神经网络(系统性学习一):入门篇 单层神经网络(又叫感知机) 单层网络是最简单的全连接神经网络,它仅有输入层和输出层,没有隐藏层。即&#x…

H.265流媒体播放器EasyPlayer.js播放器提示MSE不支持H.265解码可能的原因

随着人工智能和机器学习技术的应用,流媒体播放器将变得更加智能,能够根据用户行为和偏好提供个性化的内容推荐。总体而言,流媒体播放器的未来发展将更加注重技术创新和用户互动,以适应不断变化的市场需求和技术进步。 提示MSE不支…

MySQL原理简介—6.简单的生产优化案例

大纲 1.MySQL日志的顺序写和数据文件的随机读指标 2.Linux存储系统软件层原理及IO调度优化原理 3.数据库服务器使用的RAID存储架构介绍 4.数据库Too many connections故障定位 1.MySQL日志的顺序写和数据文件的随机读指标 (1)磁盘随机读操作 (2)磁盘顺序写操作 (1)磁盘随…

svn 崩溃、 cleanup失败 怎么办

在使用svn的过程中,可能出现整个svn崩溃, 例如cleanup 失败的情况,类似于 这时可以下载本贴资源文件并解压。 或者直接访问网站 SQLite Download Page 进行下载 解压后得到 sqlite3.exe 放到发生问题的svn根目录的.svn路径下 右键呼出pow…

前后端分离,解决vue+axios跨域和proxyTable不生效等问题

看到我这篇文章前可能你以前看过很多类似的文章。至少我是这样的,因为一直没有很好的解决问题。 正文 当我们通过webstorm等IDE开发工具启动项目的时候,通过命令控制台可以观察到启动项目的命令 如下: webpack-dev-server --inline --prog…

在win10环境部署opengauss数据库(包含各种可能遇到的问题解决)

适用于windows环境下通过docker desktop实现opengauss部署,请审题。 文章目录 前言一、部署适合deskdocker的环境二、安装opengauss数据库1.配置docker镜像源2.拉取镜像源 总结 前言 注意事项:后面docker拉取镜像源最好电脑有科学上网工具如果没有科学上…

Java开发经验——Spring Test 常见错误

摘要 本文详细介绍了Java开发中Spring Test的常见错误和解决方案。文章首先概述了Spring中进行单元测试的多种方法,包括使用JUnit和Spring Boot Test进行集成测试,以及Mockito进行单元测试。接着,文章分析了Spring资源文件扫描不到的问题&am…

2024年亚太地区数学建模大赛D题-探索量子加速人工智能的前沿领域

量子计算在解决复杂问题和处理大规模数据集方面具有巨大的潜力,远远超过了经典计算机的能力。当与人工智能(AI)集成时,量子计算可以带来革命性的突破。它的并行处理能力能够在更短的时间内解决更复杂的问题,这对优化和…