FOC算法

news2024/11/15 11:25:00

        如下图所示的,是FOC算法的整体流程图,下面图中最重要的部分就是SVPWM和3相全桥电路,U\alphaU\beta送给SVPWM进行运算,运算之后的结果为三个相差120°的马鞍波,然后将这三相马鞍波作为控制全桥MOS开关的三个PWM波的占空比,之后3相全桥电路在PWM波的控制下产生三相相差120°的正弦波。

        FOC的其他算法,例如park、repark、clark、reclark变换等都是经过数学变换计算的公式,都是对三相正弦波的解耦计算,中间存在等幅值变换条件。FOC的闭环控制中需要获得电机的角度、速度信息,需要根据不同的编码器进行计算;FOC的位置闭环控制,需要使用到精度比较高的编码器,如果使用三相的霍尔编码器是无法实现位置闭环运算的。

        下面将针对上面的框图进行算法的分块描述。

一、clark、reclark

        clark是对三相相差120°的正弦波的第一层的解耦,将ia、ib、ic三相交流信号解耦到I\alphaI\beta两种正弦信号。

(1)自然坐标系

        如下图所示的,是三相正弦波在无刷电机的三相上的电流,三个电流以正弦波的形式在无刷电机的三相上产生三个方向上的磁场,三个方向上的磁场的合磁场就是下面左图的蓝色线所示。

        如下图所示的在三相上产生的磁场的矢量和,就是一个整体的绕圆旋转的矢量磁场。

(2)αβ 坐标系【clark变换】

        三相相差120°的交流信号的控制运算是比较困难的,所以需要对三相交流信号进行解耦。首先进行第一步解耦,自然坐标系解耦到αβ 坐标系。

         

        首先知道iA、iB、iC的电流值(ADC采样获得),将三者的大小由自然坐标ABC坐标系,投影到αβ 坐标系;根据基尔霍夫电流定律,可以知道三相上的电流在三相的交点上的和是为0的。就可以得到下面的公式:

I_{A}+I_{B}+I_{C}=0

I_{\alpha }=I_{A}-cos(\frac{2\pi }{3})\cdot I_{B}-cos(\frac{2\pi }{3})\cdot I_{C}

I_{\beta }=sin(\frac{2\pi }{3})\cdot I_{B}-sin(\frac{2\pi }{3})\cdot I_{C}

将上面的公式化简之后得到:

\left( \begin{matrix} I_{\alpha } \\ I_{\beta } \\ \end{matrix} \right)= \left( \begin{matrix} cos0^{\circ}& -cos60^{\circ} & -cos60^{\circ} \\ sin0^{\circ} & sin60^{\circ} & -sin60^{\circ} \\ \end{matrix} \right)* \left( \begin{matrix} I_{A} \\ I_{B} \\ I_{C}\\ \end{matrix} \right)

\left( \begin{matrix} I_{\alpha } \\ I_{\beta } \\ \end{matrix} \right)= \left( \begin{matrix} 1& -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \\ \end{matrix} \right)* \left( \begin{matrix} I_{A} \\ I_{B} \\ I_{C}\\ \end{matrix} \right)

上面的clark变换之后,I_{\alpha }I_{\beta }的幅值相对于IA、IB、IC的值会有增加,为了等幅值变换(等幅值变换的目的为了将相电流的幅值信号传递给电流闭环PI控制器,PI控制器在输出控制变量限制幅值的时候相对使用幅值),等幅值变换一般乘以2/3就可以。

\left( \begin{matrix} I_{\alpha } \\ I_{\beta } \\ \end{matrix} \right)=\frac{2}{3}\cdot \left( \begin{matrix} 1& -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \\ \end{matrix} \right)* \left( \begin{matrix} I_{A} \\ I_{B} \\ I_{C}\\ \end{matrix} \right)

(3)reclark【反clark变换】

        如果使用数学的方式计算出来SVPWM的6个扇区的周期以及周期的判断生成马鞍波,那么就使用不到reclark;如果使用使用正弦波+反向三角波结合生成马鞍波的方式,就需要使用到reclark变换(两种信号合成的方式生成马鞍波,计算量比较小,适用于低性能单片机)。

        按照下图所示的将I_{\alpha }I_{\beta }向量分布到IA、IB、IC向量上进行计算得到下面的reclark的公式:

   

(4)clark和reclark的matlab的simulink的仿真模型

下面是clark的simulink模型

下面是reclark的simulink的仿真模型

二、park、repark

        park的作用实在clark解耦的基础上再次进行解耦运算,将I_{\alpha }I_{\beta }的正弦波解耦为线性数据Id、Iq,解耦成线性数据之后就可以使用PID控制器进行控制了。

        park变换是将αβ 坐标系的两个正弦波映射到一个旋转坐标系(旋转的坐标系是跟随着转子在旋转的),最终如下图所示的,q-d轴两个定值在旋转的情况下合成的磁场矢量就是无刷电机整体的磁场矢量。

        如下图所示的,将αβ 坐标系I_{\alpha }I_{\beta }投影到q-d轴,得到park的变换矩阵为:

转换成矩阵为:

此为正方形矩阵它的逆矩阵则为:

所以反park的公式为:

(1)matlab的park的simulink仿真模型

(2)matlab的repark的simulink仿真模型

三、SVPWM

        结合开头提供的FOC架构,SVPWM的主要作用就是将U\alphaU\beta两个正弦波经过计算转化为马鞍波,马鞍波的值作为PWM波占空比的值。SVPWM生成马鞍波的方式有两种:(1)使用数学计算的方式;(2)使用正弦波与反向三角波合成的方式。下面将针对这两种方式进行讲解。

3.1、SVPWM的基础知识

       SVPWM的作用就是生成马鞍波,就是利用马鞍波调节的值调节PWM的占空比,从而达到7段式中不同的典型开关状态切换,从而实现矢量式控制转子的目的。

(1)全桥电路

        利用全桥电路的MOS管的开关组合实现不同开关状态的切换,从而实现电机的矢量控制。全桥电路的MOS管的开关组合由8中状态,其中两种状态是零电压状态,上桥臂全部打开、下桥臂全部打开,电机中都是没有电流的。

       将3对磁极进行编码:1(上桥臂打开,下桥臂关闭);0(上桥臂关闭,下桥臂打开)。

        如下图所示的是MOS管的8种状态,其中V0和V7两种状态是零电压的状态,其他的6种状态可以产生如下图中六边形种箭头所示的磁场。

(2)六种典型矢量合成扇区矢量

        逆变电路中,不能让MOS处于一种状态一直导通,这样电感就没有了阻抗,就容易把电机烧掉,但是一般控制系统都会有过流保护电路。

        如下图第一扇区所示的,通过V6和V4两个矢量的合成任意矢量,也就是快速的将V4的MOS管状态与V6的MOS管状态进行快读的切换,在惯性的作用下,就相当于两个力同时作用拉着转子,就会让转子悬停在某一个状态,但此时的电机是一直在抖动的,只要控制好两个力的大小(也就是控制两个力所占的时间),就可以让转子在一个周期内丝滑转动。

(3)七段式和五段式的矢量合成

        上面所说的控制相邻两个典型矢量在一个定时器的定时周期内所占的时间,两个矢量所占时间的不同就可以控制合成矢量的角度。但是大部分使用的还是七段式的比较多。

注意:如上图所示的七段式SVPWM中,在100、110这两段时间都是在变化的,并不是一直不变的,三相马鞍波作为PWM的占空比,三相马鞍波是在变化的,PWM的占空比也是在变化的。

        下面的两张图是所有的扇区的七段式图。

(4)六边形内圆的合成磁场矢量

        如上图所示,

3.2、正弦和反向三角波合成马鞍波

3.3、数学计算生成马鞍波

四、开环VF、IF强拖

五、电流PI控制闭环

六、速度PI控制闭环

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

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

相关文章

Vortex GPGPU的硬件设计和代码结构分析

文章目录 前言一、GPGPU是什么?1.1 GPU和GPGPU之间的差异1.2 GPU和CPU之间的集成方式1.3 GPU包含什么(列举和VMIPS向量体系结构的差异) 二、Vortex GPGPU是什么?2.1 Vortex GPGPU的技术边界和验证环境2.2 Vortex GPGPU的指令集设计…

Kubernetes基于helm部署jenkins

Kubernetes基于helm安装jenkins jenkins支持war包、docker镜像、系统安装包、helm安装等。在Kubernetes上使用Helm安装Jenkins可以简化安装和管理Jenkins的过程。同时借助Kubernetes,jenkins可以实现工作节点的动态调用伸缩,更好的提高资源利用率。通过…

C++ | Leetcode C++题解之第223题矩形面积

题目: 题解: class Solution { public:int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth min(ax2, bx2) - max…

使用void 0替代undefined

在很多大厂的规范里面,有这么一条规定:不让直接使用undefined关键字,而应该使用void 0来替代undefined。 一、void 0是什么意思? void是一个关键字,他后面跟的是一个表达式,不管这个表达式算的是啥&#…

you should not run configure as root, 升级tar出错

为了能用 tar 支持 zstd 的压/解缩包命令,需要升级 tar 到 1.3 以上,下面是下载和编译、安装命令: wget https://mirrors.aliyun.com/gnu/tar/tar-1.32.tar.bz2 tar -jxvf tar-1.32.tar.bz2 cd tar-1.32 ./configure make make install但在执…

Docker定时清理

一、循环调度执行 1、检查cron状态 systemctl status crond 2、创建要执行的shell脚本 vim /home/cleanup_docker.sh #! /bin/bash # 清理临时文件 echo $(date "%H:%M:%S") "执行docker清理命令..." docker system prune -af-a 清理包括未使用的镜像 …

PyJWT,一个基于JSON的轻量级安全通信方式的python库

目录 什么是JWT? JWT的构成 PyJWT库简介 安装PyJWT 生成JWT 验证JWT 使用PyJWT的高级功能 自定义Claims 错误处理 结语 什么是JWT? 在介绍PyJWT这个Python库之前,我们首先需要了解什么是JWT。JWT,全称JSON Web Token&am…

LabVIEW开发商业软件的多角度分析与注意事项

在使用LabVIEW开发商业软件时,有许多方面需要考虑和注意,包括项目管理、架构设计、性能优化、用户体验、安全性、维护与支持等。以下是从多个角度详细分析在LabVIEW中开发商业软件需要注意的事项。 项目管理 需求分析:确保深入了解客户需求&a…

如何在vue3中使用scss

一 要使用scss首先需要下载相关的包 可以在终端使用下面的命令下载相关包 npm install -D sass 二 在src文件下新建一个文件夹叫做styles 在文件夹下创建三个文件 index.scss主要用来引用其他文件 reset.scss用来清除默认的样式 variable.scss用来配置全局属性 三 需要在v…

生物素结合金纳米粒子(Bt@Au-NPs ) biotin-conjugated Au-NPs

一、定义与特点 定义:生物素结合金纳米粒子,简称BtAu-NPs或biotin-conjugated Au-NPs,是指通过特定的化学反应或物理方法将生物素修饰到金纳米粒子表面,形成稳定的纳米复合材料。 特点: 高稳定性:生物素的修…

上位机图像处理和嵌入式模块部署(mcu项目2:串口日志记录器)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 淘宝上面有一个商品蛮好玩的,那就是日志记录器。说是记录器,其实就是一个模块,这个模块的输入是一个ttl串口&am…

2024年信息素养大赛图形化编程小低组复赛真题-附答案 6547网

2024年全国青少年信息素养大赛图形化编程小低组复赛真题 题目总数:6 总分数:100 第1部分 第 1 题 问答题 【编程实现】点击小绿旗,实现将鱼的所有造型印到舞台区 【具体要求】 1. 将鱼显示出来 全部擦除所有内容 2. 将鱼的造型设…

vue学习day03-指令修饰符、v-bind对于样式控制的增强、v-model应用于其他表单元素

7、指令修饰符 (1)概念: 通过“.”指明一些指令后缀,不同后缀封装了不同的处理操作->简化代码 (2)按键修饰符 keyup.enter->键盘回车监听 (3)v-model修饰符 v-model.tri…

报修小程序论文(设计)开题报告

一、课题的背景和意义 近些年来,随着移动互联网巅峰时期的来临,互联网产业逐渐趋于“小、轻、微”的方向发展,符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中,被誉为“运行着程序的网站”之名的微信小程序…

Linux学习笔记(二)账户和组

一、基本概念 用 户:用户id,被称为UID 基本组:账户id,被称为GID。用户只能加一个基本组。 0代表超级管理员,root账号。 附加组:用户能加多个基本组。 二、添加账户和组 创建用户名tom,失效…

千古雄文《渔樵问对》原文、译文、解析

邵雍《渔樵问对》:开悟奇文,揭示世界的终极意义 【邵雍《渔樵问对》:开悟奇文,揭示世界的终极意义】 邵雍(1011年1月21日-1077年7月27日,宋真宗大中祥符四年十二月二十五日戌时生至神宗熙宁十…

ctfshow web入门 nodejs web334--web337

web334 有个文件下载之后改后缀为zip加压就可以得到两个文件 一个文件类似于index.php 还有一个就是登录密码登录成功就有flag username:ctfshow password:123456因为 return name!CTFSHOW && item.username name.toUpperCase() && item.password passwor…

Python 处理Excel 文件, openpyxl 库的使用:

下载&#xff1a; pip install openpyxl 基本使用&#xff1a; 新建一个Excel 工作簿&#xff1a; 使用openpyxl 需要先导入一个Workbook 类&#xff0c; 使用它可以创建一个Workbook<工作簿>对象&#xff0c; 也就是创建一个Excel表文件&#xff0c; web.active 可用来…

电动卡丁车语音芯片方案选型:让驾驶体验更智能、更安全

在追求速度与激情的电动卡丁车领域&#xff0c;每一次升级都意味着更加极致的驾驶体验。而今天&#xff0c;我们要介绍的&#xff0c;正是一款能够显著提升电动卡丁车智能化与安全性的语音芯片方案——为您的爱车增添一份独特的魅力与安全保障。 智能化升级&#xff0c;从“听…

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片 1 目标效果视频 CamManager 2 CamManager读取本地文件时序 3 BD_Vision_Utility添加代码 3.0 导入链接库 BD_OperatorSets.dllSystem.Windows.Forms.dllOpencvSharp 3.1 导入VisionParam中创建的文件Util_FileO…