1 前言

永磁同步电机是复杂的非线性系统,为了简化其数学模型,实现控制上的解耦,需要建立相应的坐标系变换,即Clark变换和Park变换。

2 自然坐标系ABC

三相永磁同步电机的驱动电路如下图所示;



根据图示电路可以发现在三相永磁同步电机的驱动电路中,三相逆变输出的三相电压为UAU_{A}UA​,UBU_{B}UB​,UCU_{C}UC​将作用于电机,那么在三相平面静止坐标系ABC中,电压方程满足以下公式:

{UA=UmcosθeUB=Umcos(θe+2π3)UC=Umcos(θe−2π3)\begin{cases}U_{A} = U_{m}cos\theta_{e} \\
U_{B} = U_{m}cos(\theta_{e} + \cfrac{2\pi}{3}) \\
U_{C} = U_{m}cos(\theta_{e} - \cfrac{2\pi}{3}) \end{cases}⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​UA​=Um​cosθe​UB​=Um​cos(θe​+32π​)UC​=Um​cos(θe​−32π​)​

θe\theta_{e}θe​为电角度

UmU_{m}Um​为相电压基波峰值

所以根据上述公式可以发现,三相电压的大小是随时间变化的正弦波形,相位依次相差120°,具体如下图所示;

3 αβ\alpha\betaαβ 坐标系

由静止三相坐标系ABCABCABC变换到静止坐标系αβ\alpha\betaαβ的过程称之为Clarke变换;在αβ\alpha\betaαβ静止坐标系中,α\alphaα轴和β\betaβ轴的相位差为90°,且αβ\alpha\betaαβ的大小是随时间变化的正弦波形,具体如下图所示;



从自然坐标系ABCABCABC 变换到静止坐标系 αβ\alpha\betaαβ,满足以下条件:

[fαfβf0]=T3s/2s∗[fAfBfC]\begin{bmatrix}
f_{\alpha} \\
f_{\beta} \\
f_{0}
\end{bmatrix} = T_{3s/2s}*\begin{bmatrix}
f_{A} \\
f_{B} \\
f_{C}
\end{bmatrix} ⎣⎡​fα​fβ​f0​​⎦⎤​=T3s/2s​∗⎣⎡​fA​fB​fC​​⎦⎤​

其中T3S/2ST_{3S/2S}T3S/2S​为变换矩阵:

T3S/2S=N∗[1−12−12032−32222222]T_{3S/2S} = N*\begin{bmatrix}
1 &-\cfrac{1}{2} &-\cfrac{1}{2} \\
\\
0 &\cfrac{\sqrt{3}}{2} &-\cfrac{\sqrt{3}}{2} \\
\\
\cfrac{\sqrt{2}}{2} &\cfrac{\sqrt{2}}{2} &\cfrac{\sqrt{2}}{2} \end{bmatrix} T3S/2S​=N∗⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​1022​​​−21​23​​22​​​−21​−23​​22​​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​

注意:NNN为系数,做等幅值变换和等功率变换NNN系数不同;

等幅值变换 N=23N =\cfrac{2}{3}N=32​

等功率变换 N=23N =\sqrt\cfrac{2}{3}N=32​​

下面均为等幅值变换

3.1 Clarke变换

三相电流ABCABCABC分别为iAi_{A}iA​,iBi_{B}iB​,iCi_{C}iC​,根据基尔霍夫电流定律满足以下公式:

iA+iB+iC=0i_{A}+i_{B}+i_{C} = 0iA​+iB​+iC​=0

静止坐标系αβ\alpha\betaαβ,α\alphaα轴的电流分量为iαi_{\alpha}iα​,iβi_{\beta}iβ​,则Clark变换满足以下公式:

iα=iAiβ=13∗iA+23∗iBi_{\alpha} = i_{A} \\
\\
i_{\beta} = \cfrac{1}{\sqrt{3}}*i_{A}+\cfrac{2}{\sqrt{3}}*i_{B}iα​=iA​iβ​=3​1​∗iA​+3​2​∗iB​

matlabsimulink仿真如下图所示;



最终得到三相电流iAi_{A}iA​,iBi_{B}iB​,iCi_{C}iC​的仿真结果如下;



得到 αβ\alpha\betaαβ 坐标的 iαi_{\alpha}iα​ 和 iβi_{\beta}iβ​ 的仿真结果如下图所示;



由上述两张图分析可以得到,等幅值Clark变换前后峰值不变,αβ\alpha\betaαβ坐标系中iαi_{\alpha}iα​和iβi_{\beta}iβ​相位相差90°。

3.2 Clarke反变换

暂略

Clarke反变换的simulink仿真如下图所示;

4 dqdqdq 坐标系

dqdqdq 坐标系相对与定子来说是旋转的坐标系,转速的角速度和转子旋转的角速度相同,所以,相当于转子来说,dqdqdq 坐标系就是静止的坐标系;而idi_{d}id​和iqi_{q}iq​则是恒定不变的两个值,具体如下图所示;



根据物理结构,我们发现;

ddd 轴方向与转子磁链方向重合,又叫直轴;

qqq 轴方向与转子磁链方向垂直,又叫交轴;

ddd轴和q轴q轴q轴如下图所示;

4.1 Park变换

Park变换的本质是静止坐标系αβ\alpha\betaαβ乘以一个旋转矩阵,从而得到dqdqdq坐标系,其中满足以下条件:

[fdfq]=T2s/2r∗[fαfβ]\begin{bmatrix}
f_{d} \\
f_{q} \end{bmatrix} = T_{2s/2r}*\begin{bmatrix}
f_{\alpha} \\
f_{\beta}
\end{bmatrix} [fd​fq​​]=T2s/2r​∗[fα​fβ​​]

其中T2s/2rT_{2s/2r}T2s/2r​为旋转矩阵,所以,park变换和park反变换其根本就是旋转矩阵不同,T2s/2rT_{2s/2r}T2s/2r​可以表示为:

T2s/2r=[cosθesinθe−sinθecosθe]T_{2s/2r} = \begin{bmatrix}
cos\theta_{e} & sin\theta_{e} \\
-sin\theta_{e} & cos\theta_{e}
\end{bmatrix} T2s/2r​=[cosθe​−sinθe​​sinθe​cosθe​​]

T2s/2rT_{2s/2r}T2s/2r​ 含义为 2∗stator2*stator2∗stator ==> 2∗rotor2*rotor2∗rotor

2轴定子坐标系转换到2轴转子坐标系

由上式可以得到:

{id=iα∗cosθ+iβ∗sinθiq=−iα∗sinθ+iβ∗cosθ\begin{cases}i_{d}=i_{\alpha}*cos\theta+i_{\beta}*sin\theta \\
i_{q}=-i_{\alpha}*sin\theta+i_{\beta}*cos\theta\end{cases}{id​=iα​∗cosθ+iβ​∗sinθiq​=−iα​∗sinθ+iβ​∗cosθ​

其中simulink仿真如下图所示;



作为输入的 iαi_{\alpha}iα​ 和 iβi_{\beta}iβ​,仿真波形如下图所示;



最终经过Park变换得到idi_{d}id​和iqi_{q}iq​如下图所示;



可以看到,idi_{d}id​和iqi_{q}iq​是恒定值,所以Park变换也叫做交直变换,由输入的交流量,最终变换到相对与转子坐标的直流量。

在实际写FOC的过程中对于这块变换产生了一个疑问;这里再区分一下正转和反转的情况,以此来说明一下IdIq的实际中的作用;

下面先规定一个方向为反转;

正转

通常,大部分书籍以及论文中的正转输入的三相波形如下:

{UA=UmcosθeUB=Umcos(θe−2π3)UC=Umcos(θe+2π3)\begin{cases}U_{A} = U_{m}cos\theta_{e} \\
U_{B} = U_{m}cos(\theta_{e} - \cfrac{2\pi}{3}) \\
U_{C} = U_{m}cos(\theta_{e} + \cfrac{2\pi}{3}) \end{cases}⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​UA​=Um​cosθe​UB​=Um​cos(θe​−32π​)UC​=Um​cos(θe​+32π​)​

反转

{UA=UmcosθeUB=Umcos(θe+2π3)UC=Umcos(θe−2π3)\begin{cases}U_{A} = U_{m}cos\theta_{e} \\
U_{B} = U_{m}cos(\theta_{e} + \cfrac{2\pi}{3}) \\
U_{C} = U_{m}cos(\theta_{e} - \cfrac{2\pi}{3}) \end{cases}⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​UA​=Um​cosθe​UB​=Um​cos(θe​+32π​)UC​=Um​cos(θe​−32π​)​

4.2 Park反变换

Park反变换又叫直交变换,由dqdqdq轴的直流量,最终变换到αβ\alpha\betaαβ的交流量,其中满足变换条件如下:

[fdfq]=T2r/2s∗[fαfβ]\begin{bmatrix}
f_{d} \\
f_{q} \\
\end{bmatrix} = T_{2r/2s}*\begin{bmatrix} f_{\alpha} \\
f_{\beta} \\
\end{bmatrix} [fd​fq​​]=T2r/2s​∗[fα​fβ​​]

其中T2s/2rT_{2s/2r}T2s/2r​为Park变换的逆矩阵,所以,存在条件:

T2r/2s=T2r/2s−1=[cosθe−sinθesinθecosθe]T_{2r/2s} = T_{2r/2s}^{-1} = \begin{bmatrix}
cos\theta_{e} & -sin\theta_{e} \\
sin\theta_{e} & cos\theta_{e} \\
\end{bmatrix}T2r/2s​=T2r/2s−1​=[cosθe​sinθe​​−sinθe​cosθe​​]

最终由上式可以得到:

{iα=id∗cosθ−iq∗sinθiβ=id∗sinθ+iq∗cosθ\begin{cases}i_{\alpha}=i_{d}*cos\theta-i_{q}*sin\theta \\
i_{\beta}=i_{d}*sin\theta+i_{q}*cos\theta\end{cases}{iα​=id​∗cosθ−iq​∗sinθiβ​=id​∗sinθ+iq​∗cosθ​

仿真暂略。

5 程序实现

坐标变换的C程序主要基于TI的IQMATH库进行实现,详情已经提交到附件。

如何使用这个库可以参考《STM32 使用IQmath实现SVPWM》

附件

链接:https://pan.baidu.com/s/1s2qU5wA2LMSmed51q-Jayw

提取码:irm2

FOC中的Clarke变换和Park变换详解(动图+推导+仿真+附件代码)的更多相关文章

  1. 【转载】3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解

    原文:3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解 3D中z值会影响屏幕坐标系到世界坐标系之间的转换,2D中Z值不会产生影响(而只 ...

  2. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  3. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  4. UIViewController中各方法调用顺序及功能详解

    UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...

  5. 详解Android中的四大组件之一:Activity详解

    activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...

  6. opencv中 int main(int argc,char* argv[])详解

    opencv中  int main(int argc,char* argv[])详解 argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     ...

  7. 连接池中的maxIdle,MaxActive,maxWait等参数详解

    转: 连接池中的maxIdle,MaxActive,maxWait等参数详解 2017年06月03日 15:16:22 阿祥小王子 阅读数:6481   版权声明:本文为博主原创文章,未经博主允许不得 ...

  8. SVD在推荐系统中的应用详解以及算法推导

    SVD在推荐系统中的应用详解以及算法推导     出处http://blog.csdn.net/zhongkejingwang/article/details/43083603 前面文章SVD原理及推 ...

  9. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

随机推荐

  1. C# windows服务没有RunInstallerAttribute.Yes的公共安装程序

    1.在视图状态 右键添加ServiceInstaller及ServiceProcessInstaller两个控件; 2.将serviceProcessInstaller类的Account属性改为 Lo ...

  2. 从python爬虫以及数据可视化的角度来为大家呈现“227事件”后,肖战粉丝的数据图

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...

  3. work of 1/4/2016

    part 组员                今日工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 修改UI增强显示鲁棒     6 完成UI页面切换部分    ...

  4. Pie 杭电1969 二分

    My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N ...

  5. 机器学习常见面试题—支持向量机SVM

    前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...

  6. 智能可视化搭建系统 Atom 服务架构演变

    作者:凹凸曼 - Manjiz Atom 是什么?Atom 是集结业内各色资深电商行业设计师,提供一站式专业智能页面和小程序设计服务的平台.经过 2 年紧凑迭代,项目越来越庞大,需求不断变更优化,内部 ...

  7. Python大数据与机器学习之NumPy初体验

    本文是Python大数据与机器学习系列文章中的第6篇,将介绍学习Python大数据与机器学习所必须的NumPy库. 通过本文系列文章您将能够学到的知识如下: 应用Python进行大数据与机器学习 应用 ...

  8. TensorFlow keras卷积神经网络 添加L2正则化

    model = keras.models.Sequential([ #卷积层1 keras.layers.Conv2D(32,kernel_size=5,strides=1,padding=" ...

  9. MySQL中出现Unknow column 'xx' in field list的解决办法

    首先创建一个表,然后插入数据发现出错误 经过多次尝试发现title前面多了一个空格 我们把空格去掉,然后在插入数据,发现数据创建成功

  10. 十分钟通过一个实际问题,真正教会大家如何解决Bug

    前言 这篇文章从实际问题 -> 问题解决步骤 -> 问题解决思路,帮助大家能够明白如何在程序中发现问题,定位问题,解决问题.并真正理解那些问题解决思路. 首先说说这个实际问题是什么,又是怎 ...