PMSM电机矢量控制之电流采样原理分析

合集下载

MatlabSimulink对永磁同步电机(PMSM)_矢量控制原理

MatlabSimulink对永磁同步电机(PMSM)_矢量控制原理

基于Matlab的永磁同步电机矢量控制原理摘要:在现代交流伺服系统中,矢量控制原理以及空间电压矢量脉宽调制(SVPWM)技术使得交流电机能够获得和直流电机相媲美的性能。

永磁同步电机(PMSM)是一个复杂耦合的非线性系统。

关键词:永磁同步电机;电压空间矢量脉宽调制0、引言永磁同步电机(PMSM)是采用高能永磁体为转子,具有低惯性、快响应、高功率密度、低损耗、高效率等优点,成为了高精度、微进给伺服系统的最佳执行机构之一。

永磁同步电机构成的永磁交流伺服系统已经向数字化方向发展。

因此如何建立有效的仿真模型具有十分重要的意义。

对于在Matlab中进行永磁同步电机(PMSM)建模仿真方法的研究已经受到广泛关注。

本文介绍了电压空间矢量脉宽调制原理并给出了坐标变换模块、SVPWM模块以及整个PMSM闭环矢量控制仿真模型,给出了仿真模型结构图和仿真结果。

1、永磁同步电机的数学模型永磁同步电机在d-q轴下的理想电压方程为:(1)(2)(3)(4)(5)(6)(7)式中,ud和uq分别为d、q轴定子电压;id和iq分别为d、q 轴定子电流;和分别为d、q轴定子磁链;ld和lq分别为定子绕组d、q轴电感;r为定子电阻;p为微分符号;lmd为定、转子间的d轴电感;ifd为永磁体的等效d轴励磁电流;pn为极对数;te为电磁转矩;tl为负载转矩;j为转动惯量;b为阻尼系数;为转子角速度。

2、电压空间矢量脉宽调制原理2.1电压空间矢量电机输入三相正弦电压的最终目的是在空间产生圆形旋转磁场,从而产生恒定的电磁转矩。

直接针对这个目标,把逆变器和异步电机视为一体,按照跟踪圆形旋转磁场来控制PWM 电压,这样的控制方法称为“磁链跟踪控制”,磁链的轨迹是靠电压空间矢量相加得到的,所以又称“电压空间矢量PWM控制”。

空间矢量是按电压所加绕组的空间位置来定义的。

在图1中,A、B、C分别表示在空间静止不动的电机定子三相绕组的轴线,它们在空间互差120°,三相定子相电压U A、U B、U C分别加在三相绕组上,可以定义三个电压空间矢量U A、U B、U C,它们的方向始终在各相的轴线上,而大小则随时间按正弦规律变化,时间相位互差120°。

详解永磁同步电机矢量控制

详解永磁同步电机矢量控制

永磁同步电机矢量控制
由于永磁同步电机(PMSM)在诸多方面的优势,在控制领域引起了极大的兴趣。

矢量控制的基本思想[4-5]是在普通的三相交流电动机上设法模拟直流电动机转矩控制的规律。

按磁场定向坐标,将电流矢量分解成产生磁通的励磁电流分量和产生转矩的转矩电流分量,并使两分量互相垂直,彼此独立,然后分别进行调节。

这样交流电动机的转矩控制。

从原理和特性上就和直流电动机相似了。

矢量控制的目的是为了改善转矩控制性能.而最终仍然是对定子电流的控制。

由于在定子侧的各物理量,如电压、电流、电动势、磁动势都是交流量,其空间矢量在空间以同步转速旋转,调节和控制都不容易。

因此需要借助于坐标变换,使各物理量从静止坐标系转换到同步旋转坐标系,这时各空间矢量就都变成了直流量。

电流矢量分解成产生磁通的励磁电流分量i d和产生转矩的转矩电流分量i q,如图2所示,这样转矩和被控量定子电流之间的关系就一目了然。

图2.转矩和被控量定子电流之间的关系
永磁同步电机的矢量控制系统由四部分组成:1.位置、速度检测模块;2.速度环,电流环PI控制器;3.坐标变换模块;4.SVPWM模块和逆变模块。

控制过程为:速度给定信号指令与检测到的转子速度相比较,经速度控制器的调节,输出I指令信号(电流控制器得给定信号)。

同时,经过坐标变换后,定子反馈的三相电流变为i d,i q,通过电流控制器使:i d=0,i q与给定的i∗q相比较后,经过电流调节器的输出为d,q轴的电压,经Park逆变换后为α、β电压。

通过SVPWM模块输出六路PWM驱动IGBT.产生可变频率和幅值的三相正弦电流输入电机定子。

永磁同步电机控制原理

永磁同步电机控制原理

iq PI
uq
r
id
id PI
ud
iq id
u
d,q
α,β u
d,q
i
i
α,β
SV PWM
驱动模块
逆变器
α,β
ia
ib
a,b,c
d / dt
控制模块
高压直流电输入输出 电机控制器外部低压输入信号 电机控制器内部输入信号 数学计算输出信号 控制程序输出信号 IGBT信号
电机控制器
PMSM
旋转变压器
永磁同步电机控制原理
控制方式
永磁同步电机 (PMSM)
矢量控制 控制方式
直接转矩控制
矢量控制(磁场定向控制)
矢量控制实现的基本原理是测量和控制电机定子电流矢量
根据磁场定向原理分别对电机的励磁电流和转矩电流进行 控制,从而达到控制电机转速和转矩的目的
对电流的空间矢量 进行坐标变换,并 进行控制,所以叫 矢量控制
数据 观测
上位机
RS232
LED 显示
外部 存储器 仿真器
DAC
键盘控制
I/O
PDPINT
SCI
CPU
PWM
产生
SPI
存储器
模块
EMIF
ADC PLL
JTAG
WD/RTI
DSP
QEP
U DC C
故障检 测电路


三相


逆变


电路


IPM
电流 检测
位置 检测
PMSM
IPM内部集成: 6个IGBT 驱动电路 保护电路
驱动电机总成
软件流程图

永磁同步电机矢量控制分析

永磁同步电机矢量控制分析

永磁同步电机矢量控制分析一、本文概述永磁同步电机(PMSM)作为一种高性能的电机类型,在现代工业、交通以及新能源等领域的应用日益广泛。

其矢量控制技术,即通过对电机电流的精确控制,实现对电机转矩和磁场的独立调节,从而实现电机的高效、稳定运行。

本文旨在全面分析永磁同步电机的矢量控制技术,包括其基本原理、控制策略、实现方法以及在实际应用中的优缺点,为相关领域的研究者和工程师提供有益的参考。

本文将对永磁同步电机的基本结构和工作原理进行简要介绍,为后续的分析奠定理论基础。

然后,将重点讨论矢量控制技术的理论基础和实现方法,包括空间矢量脉宽调制(SVPWM)技术、电流环和速度环的设计与控制策略等。

在此基础上,本文将深入分析矢量控制技术在永磁同步电机中的应用,包括其在提高电机效率、优化动态性能以及提升系统稳定性等方面的作用。

本文还将对矢量控制技术在永磁同步电机应用中的挑战和前景进行探讨。

一方面,将分析当前矢量控制技术在实际应用中面临的主要问题,如参数敏感性、控制复杂度以及成本等;另一方面,将展望未来的发展趋势,如智能化、集成化以及优化算法的应用等。

本文将对永磁同步电机矢量控制技术的未来发展提出展望,以期为该领域的进一步研究和应用提供参考。

二、永磁同步电机基本原理永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)是一种高效、高功率密度的电机,广泛应用于电动汽车、风力发电、工业自动化等领域。

其基本原理主要基于电磁感应和磁场相互作用。

PMSM的核心部件是永磁体,这些永磁体通常嵌入在电机的转子中,形成固定的磁场。

当电机通电时,定子中的电流会产生一个旋转磁场。

这个旋转磁场与转子中的永磁体磁场相互作用,使得转子开始旋转。

通过精确控制定子中的电流,可以实现对转子旋转速度、方向和扭矩的精确控制。

在PMSM中,矢量控制是一种重要的控制策略。

矢量控制通过独立控制电机的磁通和扭矩分量,实现了对电机的高效、高性能控制。

PMSM矢量控制--电流采样及坐标变换专家解析

PMSM矢量控制--电流采样及坐标变换专家解析

电流采样及坐标变换前言永磁同步电机(PMSM)应用范围广泛,经常用于新能源汽车、机床、工业等领域。

在实际使用中,我们经常采用矢量控制算法(FOC)完成PMSM的高性能控制。

矢量控制中通常采用双闭环结构,其中外环为速度环,内环为电流环。

为了实现PMSM高性能控制,我们会采用各种复杂的算法来实现目标,这其中电流环相关算法又是重中之重。

但是需要指出,电流环性能好坏除了与采用的算法有关之外,还与最基本的电流采样问题以及坐标变换问题紧密相关。

只有当这些细节问题研究到位之后,高性能的控制算法才会更好发挥作用。

本文档主要探讨电流环的电流采样问题、故障保护以及坐标变换问题。

1 单相电流采样模型及补偿图1为实际系统中电流采样系统示意图,主要电源(含参考源)、HALL电流传感器、放大及滤波电路、AD转换器。

对于实际采样系统而言,各个器件均不是理想的,综合起来会产生明显的赋值衰减和相位滞后,这势必会降低控制性能。

图1 电流采样系统示意图HALL电流传感器:(1)增益非线性:即使采样的电流为直流时,也会在电流较大时产生增益下降,即增益非线性(饱和效应)。

进行建模时,认为增益非线性只是改变了输出HALL输出电压幅值,并不产生相位滞后。

记为G。

Non(2) 低通特性:此特性会随着电流频率的变化而产生不同程度的相位滞后和幅值衰减。

记为()LPF1G s 。

由上述可知,HALL 传感器的传递函数为()()HALL Non LPF1G s G G s =⋅。

图2为传输非线性Non G 的示意图。

由此图可见在-400A~400A 是线性区域,增益为1pu ;而电流处于-700A~-400A 以及400A~700A 范围内时增益下降到了0.98pu ;当电流处于-900A~-700A 以及700A~900A 范围内时增益下降到了0.952pu 。

为了后续分析方便,这里假设()LPF11=3e -061G s s +。

实际系统的()LPF1G s 可由测试或者查询HALL 传感器的数据手册得到。

pmsm3_1 电流采样程序的讲解

pmsm3_1 电流采样程序的讲解

问题一电流采样硬件上用的是霍尔传感器.图一是霍尔传感器的输入输出特性曲线。

找了图上的两点(1V,-10A)和(2V,5A),算出来斜率为1/15=0.066。

图一是霍尔传感器的输入输出特性曲线DSP中采样最大值为3.3V,对应的寄存器值为4096,所以采样后寄存器中的值对应的电压值为3.3V/4096。

程序中电流采样计算如下:DatQ15 = ((AdcMirror.ADCRESULT2 + AdcMirror.ADCRESULT3 +AdcMirror.ADCRESULT4 + AdcMirror.ADCRESULT5 + AdcMirror.ADCRESULT6 + AdcMirror.ADCRESULT7 + AdcMirror.ADCRESULT8)/7) - p->ImeasAOffset;Tmp = _IQ15mpy(p->ImeasAGain,DatQ15);p->ImeasA = _IQ15div(Tmp,_IQ15(BASE_CURRENT));“p->ImeasAOffset”是初始时化后就进行的一次采样,保存为偏移值。

“p->ImeasAGain”是在结构体ILEG2DCBUSMEAS设置的值,为_IQ15(383.3856)。

BASE_CURRENT为基准电流值,为1.5A我计算的“p->ImeasAGain”值步奏如下:设采样结果寄存器中的值为P,第一次采样得到的偏移值为Offset,实际采样的电流为I,则应该有这样的关系式(因为第一次已经减去了偏移,相当于图1的坐标变成了以原点为起点的了吧?如图2所示?):3.31()409615VP Offset I-=,照这样算出来的ImeasAGain应该为:3.3*154096V=0.012,这与程序中的_IQ15(383.3856)相差的太大了。

不知道计算错在哪里,请师兄帮忙指点下!!!图2 减去偏移后的输入输出特性曲线另外,还有一个问题,发现硬件上霍尔电流的输入输出端接反了,那应该在每一个采样算出来的电流值再乘以(-1)吧??问题二中断时间程序中的主要运算都是在PWM定时器的下溢中断进行的,看不懂程序中是如何计数器赋计数周期的值,因此一直没搞懂每隔多久进行一次下溢中断。

基于电流反馈解耦的永磁同步电机矢量控制研究

基于电流反馈解耦的永磁同步电机矢量控制研究

基于电流反馈解耦的永磁同步电机矢量控制研究永磁同步电机(PMSM)是一种高效率、高功率密度的电机,广泛应用于工业、交通、家电等领域。

矢量控制是PMSM最常用的控制方法之一,它可以实现高精度的转矩控制和高效率的运行。

本文将介绍基于电流反馈解耦的PMSM矢量控制研究。

1. PMSM矢量控制原理PMSM矢量控制的基本原理是将三相交流电压分解为两个正交的磁场,即定子坐标系下的磁场和转子坐标系下的磁场。

通过控制定子坐标系下的磁场和转子坐标系下的磁场的大小和相位差,可以实现对电机的转矩和转速的控制。

2. 电流反馈解耦在PMSM矢量控制中,电流反馈解耦是一种常用的控制方法。

它可以将三相电流分解为两个正交的磁轴电流和一个零序电流。

通过控制磁轴电流的大小和相位差,可以实现对电机的转矩和转速的控制。

电流反馈解耦的基本原理是利用电机的电感和电阻特性,将三相电流分解为两个正交的磁轴电流和一个零序电流。

其中,磁轴电流分别对应于定子坐标系下的d轴电流和q轴电流,它们分别控制电机的磁场和转矩。

零序电流对应于电机的不平衡和谐波电流,它不参与电机的转矩和转速控制。

3. 基于电流反馈解耦的PMSM矢量控制基于电流反馈解耦的PMSM矢量控制包括两个主要步骤:电流反馈解耦和磁场定向控制。

在电流反馈解耦中,通过控制d轴电流和q轴电流的大小和相位差,实现对电机的转矩和转速的控制。

在磁场定向控制中,通过控制磁场的大小和相位差,实现对电机的转速和位置的控制。

电流反馈解耦的控制方法有多种,其中最常用的是基于PI控制器的控制方法。

PI控制器可以根据电机的实际状态和目标状态,自适应地调整d轴电流和q轴电流的大小和相位差,实现对电机的转矩和转速的控制。

4. 结论基于电流反馈解耦的PMSM矢量控制是一种高效、高精度的电机控制方法。

它可以实现对电机的转矩、转速和位置的精确控制,广泛应用于工业、交通、家电等领域。

在实际应用中,需要根据电机的实际情况和控制要求,选择合适的控制方法和参数,实现最优的控制效果。

永磁同步电动机PMSM矢量控制系统的研究

永磁同步电动机PMSM矢量控制系统的研究

永磁同步电动机PM SM矢量控制系统的研究夏燕兰(南京工业职业技术学院,南京2100146)研究与开发摘要本文根据永磁同步电动机PM SM I钩数学模型,分析了PM SM的矢量控制原理,对PM SM矢量控制系统。

进行了分析和仿真,实验结果证明PM SM矢量控制系统具有优良的动、静态性能。

关键词:PM SM;数学模型;矢量控制R es ear ch of V ect or C ont r ol Sys t em f or PM SMX i d Y anl an(N anj i ng I nst i t ut e of l ndust ry and Technol ogy,N anj i ng210046)A bs t r act A cc or di ng t o t he m at hem at i cal m ode l of PM SM,t he paper i nt r oduces t he pri nc i pl e ofvec t o r C ont r ol f or PM SM,anal yzes and s i m ul at es t he vect or c ont r ol s ys t em of PM SM.The exper i m entr e sul t s s how t he c ont r ol s ys t em of P M SM can achi eve go od dyna m i c and st a t i c per f orm ances.K ey w or ds:per m anent m a gne t s yn chr ono us m ot or;m at he m at i c al m odel;vec t or c ont r oll引言永磁直流无刷电动机因体积小、性能好、结构简单、调节控制方便、调速范围广、动态响应快等特点而得到了越来越广泛的应用,尤其应用在智能机器人、航空航天、精密电子仪器与设备等对电机性能、控制精度要求比较高的领域和场合。

PMSM同步电动机矢量控制

PMSM同步电动机矢量控制
优势
矢量控制能够实现对电机的精确控制,具有较高的动态性能和稳态精度。同时, 矢量控制能够有效地抑制转矩波动,减小转矩脉动。
局限性
矢量控制需要精确的电机参数和准确的传感器测量,增加了系统的复杂性和成 本。此外,矢量控制对于电机参数的变化较为敏感,参数变化可能导致控制性 能下降。
03
PMSM同步电动机的矢 量控制策略
数据处理
对采集到的数据进行滤波、去噪、 归一化等处理,提取有用的信息 进行分析。
数据分析
利用分析软件对处理后的数据进 行分析,研究矢量控制策略对 PMSM同步电动机性能的影响。
实验结果与结论
结果展示
通过图表、曲线等形式展示实验结果, 直观地反映矢量控制策略对PMSM同 步电动机性能的影响。
结论总结
基于直接转矩控制的矢量控制策略
总结词
基于直接转矩控制的矢量控制策略是一种先进的控制方法,通过直接控制电机的输出转 矩和磁通来实现对PMSM同步电动机的高性能控制。
详细描述
基于直接转矩控制的矢量控制策略采用离散的时间采样方法,通过检测电机的输出转矩 和磁通状态,直接调节电机的输入电压或电流,实现对电机输出转矩和磁通的快速、精 确控制。这种控制方法具有响应速度快、动态性能好等优点,适用于高性能的伺服系统
基于磁场定向的矢量控制策略
总结词
基于磁场定向的矢量控制策略是PMSM同步电动机中最常用的控制策略之一,通过控制励磁和转矩电流分量,实 现对电机磁场的解耦控制。
详细描述
基于磁场定向的矢量控制策略通过将PMSM的电流分解为与磁场方向正交的励磁电流和与磁场方向一致的转矩电 流,实现了对电机磁场的完全解耦控制。通过调节励磁和转矩电流分量,可以独立地控制电机的磁通和转矩,从 而实现高性能的调速控制。

PMSM电机矢量控制之电流采样原理分析

PMSM电机矢量控制之电流采样原理分析

PMSM 电机矢量控制之电流采样原理分析摘要:本文分析了PMSM 电机磁场定向控制(FOC)器的电流采集硬件电路,包括母线电流采样和相线电流采样的电路分析。

以下电路是业界常用、稳定、经典的不二之选,工作之余,在此与同僚分享一下。

15621R Uop Up R Up Vcc ----------------------------------------(1-1)158N 157NO R U R U U -------------------------------------------------(1-2)P NU U -----------------------------------------------------------(1-3)整理后,代入数值得:230U 220V 10U OPCC P -----------------------------------------(1-4)O NU 11.21.2U ----------------------------------------------------(1-5) P NU U -----------------------------------------------------------(1-6)最终,推出:OP O U 8.93V 1.34U -----------------------------------------(1-7)一、当MOS 管IRFB3607处于正向导通状态时,电流在一定范围内会使二极管D13处于不导通状态(Up-Un<0.7V),但是电流超过阈值后,便会使二极管D13导通,并将电压嵌制在0.7V 。

当MOS 管IRFB3607处于反向导通状态时,其体二极管也起到电压嵌制作用,电路工作原理相似。

5692BM P 93P CC R R U U R U V ---------------------------------------------------------------------(2-1)132OPN 140NO R U U R U U ---------------------------------------------------------------------(2-2)P NU U ---------------------------------------------------------------------------------------(2-3) 令15692R R R ,代入上式(2-1),整理得:931BM93CC1PR R U R V R U ----------------------------------------------------------------------(2-4)140132OP140O132NR R U R U R U --------------------------------------------------------------------(2-5)P N U U ----------------------------------------------------------------------------------------(2-6)整理以上各式可得:OP 931132931140BM93113214013293CC9311321401321OU )R (R R )R (R R U )R (R R )R (R R V )R (R R )R (R R U ------(2-7)分析(2-7)式可知,第一项应该是基准电压,必须有CC CC9311321401321V 21V )R (R R )R (R R ,第二项和第三项的系数应该相等,即)R (R R )R (R R )R (R R )R (R R 93113293114093113214013293,以此获取下桥臂MOS 管的管压降值。

基于电流反馈解耦的永磁同步电机矢量控制研究

基于电流反馈解耦的永磁同步电机矢量控制研究

基于电流反馈解耦的永磁同步电机矢量控制研究一、引言永磁同步电机(Permanent Magnet Synchronous Motor,简称PMSM)由于其高效率、高功率密度和良好的动态性能,被广泛应用于工业和交通领域。

在PMSM控制中,矢量控制是一种常用的控制技术,其通过控制电机的电流和转子位置以实现精确的控制。

然而,PMSM控制中的交叉耦合和电流传感器的非线性等问题,限制了控制系统的性能和精度。

本文旨在通过基于电流反馈解耦的方法,对PMSM的矢量控制进行深入研究和探讨。

二、矢量控制原理1.矢量控制概述矢量控制是一种基于转子参考帧的控制方法,通过将PMSM电流和电压转换到dq坐标系下,以实现无触点的控制。

矢量控制可分为直接矢量控制和间接矢量控制两种方法。

2.直接矢量控制(Direct Vector Control)直接矢量控制是一种通过控制定子电流和转子磁链矢量,实现PMSM转矩和磁通的无触点控制方法。

直接矢量控制包含以下步骤:•dq坐标变换•转子磁链估算•转子磁链方向控制•定子电流控制3.间接矢量控制(Indirect Vector Control)间接矢量控制是一种通过控制PMSM的电压,以实现转子位置和速度的闭环控制方法。

间接矢量控制包含以下步骤:•dq坐标变换•转子位置估算•位置反馈环•转子位置和速度控制三、电流反馈解耦技术在传统的矢量控制中,由于PMSM的定子电流是交叉耦合的,即dq轴之间存在相互影响,会导致系统的性能下降。

因此,电流反馈解耦技术可以用来提高系统的响应速度和稳定性。

电流反馈解耦技术主要包括以下几个方面的内容:1.dq电流反馈解耦通过采用dq坐标系下的控制方法,可以实现定子电流之间的解耦。

2.PI控制器的设计利用PI控制器对dq电流进行控制,实现定子电流的精确控制。

3.动态参考电流生成通过动态参考电流生成技术,可以提高系统的动态响应和稳定性。

4.静态参考电流生成通过静态参考电流生成技术,可以提高系统的静态精度和稳定性。

PMSM电机无传感器FOC矢量控制_图文.

PMSM电机无传感器FOC矢量控制_图文.

说明:下面程序取自IFX 16位机无传感器PMSM电机矢量控制程序。

程序架构是C语言嵌套汇编。

其中坐标系变换是汇编编写。

有插图说明,便于更好的理解。

其中包括坐标系变换,磁链角估算,PI速度环电流环调节。

(单片机XC2236N,Tasking 编译器Cavin整理坐标系变换说明:双电阻采样得到两相电流(ia, ib,由abc120°静止坐标系Clarke 变换到直角坐标系(iα, iβ,由(iα, iβ静止直角坐标系Park变换到直角旋转坐标系(iq, id。

直流id不变,通过PI速度环电流环得到期望直流iq,进行限幅控制。

由旋转坐标系(vq, vd经过Park逆变换到静止坐标系(vα, vβ,然后再经过矢量调制成PWM控制电机。

无传感器角度估算:由Clarke变换得到(iα, iβ和由Park逆变换得到的(vα, vβ,经过低通滤波器PT1,再由直角坐标系变极坐标系得到磁链估算角无传感器开环启动策略:在定子中加入幅值及频率都受控的电流,若PLL收敛,切换到FOC闭环控制。

/******************************************************************* ********************************************************************************* ****//*********************************************************************** ************************************************************************* ********///****************************************************************** ********** // @Function int clarke_trans(int Phase_s, int Phase_t, int *ia;////----------------------------------------------------------------------------// @Description ia = is// ib = 1/sqrt(3*( (2 * it + is////----------------------------------------------------------------------------// @Returnvalue (ib * 16 , "(ia * 16"////----------------------------------------------------------------------------// @Parameters////----------------------------------------------------------------------------// @Date09.01.2005// Condition optimization off / one//****************************************************************** ********** inline int clarke_trans(int Phase_s, int Phase_t, int *ia{int retvalue;__asm(" mov r12,MCW \n"" mov MCW,#0200h ; set saturation \n"" shl %2,#1 ; ( 2*Phase_t \n"" add %2,%1 ; + Phase_s \n"" mov r13,#37837 \n"" CoMULsu %2,r13 ;* 1/sqrt(3 \n"" CoSHL #4 ; default 2 * 4 \n"" CoSTORE %0,MAS ; ib = result \n"" shl %1,#2 \n"" mov [%3],%1 ; ia = Phase_s * 4 \n"" mov MCW,r12 \n": "=&w"(retvalue /* output registers */: "w"(Phase_s,"w"(Phase_t,"w"(ia /* input registers */ : "r13","r12"/*scratch registers */;return retvalue;}******************************************************************** ********///****************************************************************** ********** // @Function int park_trans(int e_a,int e_b,int phi,int *a_b////----------------------------------------------------------------------------// @Description park transformation////----------------------------------------------------------------------------// @ReturnvalueId_comp , Iq_comp////----------------------------------------------------------------------------// @Parameters////----------------------------------------------------------------------------// @Date 09.01.2005// Condition optimization off / oneinline int park_trans(int i_a,int i_b,int phi,int *o_q{int retvalue;__asm( "\n"" mov r13,MCW \n"" mov MCW,#0600h \n"" shr %3,#6 \n"" shl %3,#1 \n"" EXTS #SEG (_sincostab,#2 \n"" mov r11,[%3 + #SOF(_sincostab+512] \n"" mov r12,[%3 + #SOF(_sincostab] \n"" CoMUL %2,r12 \n"" CoMAC %1,r11 \n"" CoSTORE %0,MAS \n"" CoMUL %2,r11 \n"" CoMAC- %1,r12 \n"" CoSTORE [%4],MAS \n"" mov MCW,r13 \n""\n": "=&w"(retvalue /* output registers */: "w"(i_a,"w"(i_b,"w"(phi,"w"(o_q /* input registers */: "r13","r12","r11"/*scratch registers */;return retvalue;}/******************************************************************* ***************************************************************************** ********///********************************************************************** ****** // @Function int inv_park_trans(int e_a,int e_b,int phi,int *a_b////----------------------------------------------------------------------------// @Description inverse park transformation////----------------------------------------------------------------------------// @ReturnvalueI_alpha , I_beta////----------------------------------------------------------------------------// @Parameters////----------------------------------------------------------------------------// @Date09.01.2005// Condition optimization off / one//****************************************************************** ********** inline int inv_park_trans(int i_d,int i_q,int phi,int *o_b{int retvalue;__asm( "\n"" mov r13,MCW \n"" mov MCW,#0600h \n"" shr %3,#6 \n"" shl %3,#1 \n"" EXTS #SEG (_sincostab,#2 \n"" mov r12,[%3 + #SOF(_sincostab+512] \n"" mov r11,[%3 + #SOF(_sincostab] \n"" CoMUL %1,r12 \n"" CoMAC- %2,r11 \n"" CoASHR #2 \n"" CoSTORE %0,MAS \n"" CoMUL %1,r11 \n"" CoMAC %2,r12 \n"" CoASHR #2 \n"" CoSTORE [%4],MAS \n"" mov MCW,r13 \n""\n": "=&w"(retvalue /* output registers */: "w"(i_d,"w"(i_q,"w"(phi,"w"(o_b /* input registers */ : "r13","r12","r11"/*scratch registers */;return retvalue;}//****************************************************************** ********** // @Function int cart_polar_conv(int x,int y, int *angle;////----------------------------------------------------------------------------// @Description////----------------------------------------------------------------------------// @Returnvalue////----------------------------------------------------------------------------// @Parameters////----------------------------------------------------------------------------// @Date09.01.2005// Condition optimization off / one//****************************************************************** ********** unsigned int cart_polar_conv(int x,int y, int *angle{unsigned int retvalue;__asm( "\n"" mov MCW,#0200h ; enable saturation to +/-0x7fff \n"" mov r13,%1 ; r13 = x \n"" jmpr cc_nn,kpw1co ; if (x >= 0 goto kpw1co \n"" neg r13 ; else r13 = -r13 \n""kpw1co: ; r13 = |x| \n"" mov r12,%2 ; r12 = y \n"" jmpr cc_nn,kpw2co ; if (y >= 0 goto kpw2co \n"" neg r12 ; r12 = -r12 \n""kpw2co: ; r12 = |y| \n"" mov r9,#1024 \n"" cmp r13,r12 \n"" jmpr cc_c,kpw3co ; if( x < y goto kpw3co \n"" mulu r12,r9 ; MD = y * 1024 \n"" divlu r13 ; MDL = MD / x \n"" mov r9,MDL ; r9 = MDL = (y/x * 1024 \n"" shl r9,#1 ; prepare for word address \n"" EXTS #SEG (_betab,#1 \n"" mov r10,[r9+#SOF(_betab] ; r10 = sqrt( 1 + (r9^2 \n" " CoMULu r13,r10 ; CoACC = x * sqrt( 1 + (y/x^2 \n" " CoSHL #1 ; unsigned -> signed \n"" CoSTORE %0,MAS ; %0 = CoACC \n" "\n"" EXTS #SEG (_phitab,#1 \n"" mov r10,[r9+#SOF(_phitab] ; r10 = arctan( y/x \n" " cmp %1,#0 ; \n"" jmpr cc_n,kpw4co ; if ( x < 0 goto kpw4co \n" " cmp %2,#0 \n"" jmpr cc_n,kpw5co ; if ( y < 0 goto kpw5co \n" " mov [%3],r10 ; angle = arctan( y/x \n" " jmpr cc_uc, endco \n""\n""kpw5co: ; x > 0 and y < 0 \n"" neg r10 \n"" mov [%3],r10 ; angle = -arctan( y/x \n"" jmpr cc_uc, endco \n""\n""kpw4co: ; x < 0 \n"" cmp %2,#0 ; \n"" jmpr cc_n,kpw6co ; if ( y < 0 goto kpw6co \n" " mov r9,#8000h \n" " sub r9,r10 \n"" mov [%3],r9 ; angle = 180�- arctan( y/x \n" " jmpr cc_uc, endco \n" "\n""kpw6co: ; x < 0 and y < 0 \n"" add r10,#8000h \n"" mov [%3],r10 ; angle = -180�+ arctan( y/x \n" " jmpr cc_uc, endco \n" "\n""kpw3co: ; |x| < |y| \n"" mulu r13,r9 ; MD = |x| * 1024 \n"" divlu r12 ; MDL = MD / |y| \n"" mov r9,MDL ; r9 = MDL = (y/x * 1024 \n"" shl r9,#1 ; prepare for word address \n"" \n"" EXTS #SEG (_betab,#1 \n"" mov r10,[r9+#SOF(_betab] ; r10 = sqrt( 1 + (r9^2 \n"" CoMULu r12,r10 ; CoACC = x * sqrt( 1 + (y/x^2 \n"" CoSHL #1 ; unsigned -> signed \n"" CoSTORE %0,MAS ; %0 = CoACC \n"" \n"" EXTS #SEG (_phitab,#1 \n"" mov r10,[r9+#SOF(_phitab] ; r10 = arctan( y/x \n"" cmp %1,#0 \n"" jmpr cc_n,kpw7co ; if ( x < 0 goto kpw7co \n"" cmp %2,#0 \n"" jmpr cc_n,kpw8co ; if ( y < 0 goto kpw8co \n"" mov r9,#4000h \n"" sub r9,r10 \n"" mov [%3],r9 ; angle = 90�- arctan( x/y = 90�- arccot( y/x = arctan( y/x \n" " jmpr cc_uc, endco \n""\n""kpw8co: ; x > 0 and y < 0 \n"" add r10,#0C000h \n"" mov [%3],r10 ; angle = -90�+ arctan( x/y = -(90�- arccot( y/x = -arctan( y/x \n"" jmpr cc_uc, endco \n""\n""kpw7co: \n"" cmp %2,#0 ; x < 0 \n"" jmpr cc_n,kpw9co ; if ( y < 0 goto kpw9co \n"" add r10,#4000h \n"" mov [%3],r10 ; angle = 90�+ arctan( x/y = 180�- (90�- arccot( y/x = 180�- arctan( y/x \n" " jmpr cc_uc, endco \n"" \n""kpw9co: ; x < 0 and y < 0 \n"" mov r9,#0C000h \n"" sub r9,r10 ; angle = -90�- arctan( x/y = -180�+ (90�- arccot( y/x = -180�+ arctan( y/x \n"" mov [%3],r9 \n""\n""endco: \n": "=&w"(retvalue /* output registers */: "w"(x,"w"(y,"w"(angle /* input registers */: "r13","r12","r11","r10","r9"/*scratch registers */ ;return retvalue;}//****************************************************************** ********** // @Function: a low pass filter 2012-9-13 17:58:43// C calling format://// int inline int pt1_controller32( int *pt1_parameter, int X////----------------------------------------------------------------------------// @Description//// PT1-Controller// derived from transfer function//// Y_(k = Y_(k-1 + Z1_(k * X_(k - Z2_(k * Y_(k-1//----------------------------------------------------------------------------// Computing time 42 CPU-cycle////----------------------------------------------------------------------------// @Returnvalue//// int "@3" Output of pt1_controller//----------------------------------------------------------------------------// @Parameters//----------------------------------------------------------------------------// Condition optimization off / one//****************************************************************** **********inline int pt1_controller32( PT1_array *pt1_parameter, int X//inline int pt1_controller32( int *pt1_parameter, int X{int retvalue;__asm( "\n"" mov r10,MCW ;Save MCW register \n"" mov MCW,#0400h ;Set shift left \n"" mov %0,[%1+] \n"" CoLOAD %0,[%1] ;Load Y(k-1 in accumulator \n"" mov r13,%1 ;Save parameters addres in %1 \n"" add r13,#2 \n"" mov r12,[r13+] ;Load Z1 in R5 \n"" mov r11,[r13+] ;Load Z2 in R6 \n"" CoMAC r12,%2 ;CoACC = Y(k-1 + Z1 * X \n"" CoMAC- r11,[%1] ;CoACC = Y(k-1 + Z1 * X - Z2 * Y(k-1 \n" "\n""\n"" mov r11,[r13+] ;Load ynmax (limit value max \n"" mov r12,[r13+] ;Load ynmin (limit value min \n"" mov %0,ZEROS ;Load zero in %0 \n"" CoMIN %0,r11 ;Limit max yn \n"" CoMAX %0,r12 ;Limit min yn \n"" CoSTORE %0,MAS ;Store Y(k-high in R4 \n"" CoSTORE r13,MAL ;Store Y(k-low in R3 \n"" mov [%1],%0 ;Store in Y buffer(High \n"" mov [-%1],r13 ;Store in Y buffer(Low \n""\n"" mov MCW,r10 ;Restore MCW register \n""\n": "=&w"(retvalue /* output registers */: "w"(pt1_parameter,"w"(X /* input registers */: "r13","r12","r11","r10"/*scratch registers */;return retvalue;}//****************************************************************** **********// @Function void ADC0_vStartSeq0ReqChNum(ubyte ubExtTrg, ubyte// ubEnIntr, ubyte ubRFill, ubyte ubChannelNum////----------------------------------------------------------------------------// @Description This function starts the conversion of the requested// channel.// NOTE -// Before passing ubEnIntr argument as 1,make sure that Seq 0// source interrupt is enabled.// External Trigger -> 0,Indicates software trigger// (Conversion starts once this function is executed////---------------------------------------------------------------------------- // @Returnvalue None////---------------------------------------------------------------------------- // @Parameters ubExtTrg:// External Trigger : defines external trigger.// @Parameters ubEnIntr:// Enable Source Interrupt : defines source interrupt// @Parameters ubRFill:// Refill : defines the refill// @Parameters ubChannelNum:// Channel number : Name of the Request Channel Number (0 - // 15- see macros defined in the header file////----------------------------------------------------------------------------// @Date 14.05.2010////****************************************************************** **********void ADC0_vStartSeq0ReqChNum(ubyte ubExtTrg, ubyte ubEnIntr, ubyte ubRFill, ubyte ubChannelNum {uword uwVal = 0;if (ubExtTrg == 1{uwVal = 0x0080;}if (ubEnIntr == 1{uwVal = uwVal + 0x0040;}if (ubRFill == 1{uwVal = uwVal + 0x0020;}uwVal = uwVal + (ubChannelNum & 0x001f;ADC0_QINR0 = uwVal; // requested channel} // End of function ADC0_vStartSeq0ReqChNum//****************************************************************** ********** // @Function void ADC0_viSRN0(void////----------------------------------------------------------------------------// @Description This is the interrupt service routine for the Service// Request Node 0 of the ADC0 module.////----------------------------------------------------------------------------// @Returnvalue None////----------------------------------------------------------------------------// @Parameters None////----------------------------------------------------------------------------// @Date14.05.2010////****************************************************************** ********** // USER CODE BEGIN (ADC0_viSRN0,0// USER CODE END_interrupt(ADC0_SRN0INT void ADC0_viSRN0(void{if((ADC0_EVINFR & 0x0100 == 0x0100 //Result0 event interrupt{ADC0_EVINCR = 0x0100; // Clear Result0 event interrupt// USER CODE BEGIN (ADC0_viSRN0,20if( CCU60_TCTR0 & 0x0040 // check count direction of T12.ADC0_CHCTR8 |= 0x1000; // 1: T12 counts down -> assign ADC-CH8 to RESREG1 elseADC0_CHCTR8 &= 0xefff; // 0: T12 counts up -> assign ADC-CH8 to RESREG0if( !(svm0.Sector & 0x0001CCU60_T13PR = svm0.T2Store/2 + svm0.ADCDELAY; // set T13 Period valueelseCCU60_T13PR = svm0.T1Store/2 + svm0.ADCDELAY; // set T13 Period valueCCU60_vEnableShadowTransfer(CCU60_TIMER_13; // enable shadow transfer// USER CODE END}} // End of function ADC0_viSRN0//****************************************************************** ********** // @Function void ADC0_viSRN1(void////----------------------------------------------------------------------------// @Description This is the interrupt service routine for the Service// Request Node 1 of the ADC0 module.////----------------------------------------------------------------------------// @Returnvalue None////----------------------------------------------------------------------------// @Parameters None////----------------------------------------------------------------------------// @Date 14.05.2010////****************************************************************** **********// USER CODE BEGIN (ADC0_viSRN1,0// USER CODE END_interrupt(ADC0_SRN1INT void ADC0_viSRN1(void{if((ADC0_EVINFR & 0x0200 == 0x0200 //Result1 event interrupt{ADC0_EVINCR = 0x0200; // Clear Result1 event interrupt// USER CODE BEGIN (ADC0_viSRN1,21ADC0_CHCTR8 &= 0xefff; // assign ADC-CH8 to RESREG0 if( !(svm0.Sector & 0x0001CCU60_T13PR = svm0.T1Store/2 + svm0.ADCDELAY; // set T13 Period value elseCCU60_T13PR = svm0.T2Store/2 + svm0.ADCDELAY; // set T13 Period value CCU60_vEnableShadowTransfer(CCU60_TIMER_13; // enable shadow transfer// calculate Ialpha and Ibeta from single shunt measurementswitch( svm0.SectorStore{case 0:svm0.IphaseA = (ADC0_RESR0 & 0x0fff - svm0.ADCOFFSET;svm0.IphaseB = (ADC0_RESR1 & 0x0fff - (ADC0_RESR0 & 0x0fff;break;case 1:svm0.IphaseA = (ADC0_RESR1 & 0x0fff - (ADC0_RESR0 & 0x0fff;svm0.IphaseB = (ADC0_RESR0 & 0x0fff - svm0.ADCOFFSET;break;case 2:svm0.IphaseA = -(ADC0_RESR1 & 0x0fff + svm0.ADCOFFSET;svm0.IphaseB = (ADC0_RESR0 & 0x0fff - svm0.ADCOFFSET;break;case 3:svm0.IphaseA = -(ADC0_RESR1 & 0x0fff + svm0.ADCOFFSET;svm0.IphaseB = (ADC0_RESR1 & 0x0fff - (ADC0_RESR0 & 0x0fff; break;case 4:svm0.IphaseA = (ADC0_RESR1 & 0x0fff - (ADC0_RESR0 & 0x0fff; svm0.IphaseB = -(ADC0_RESR1 & 0x0fff + svm0.ADCOFFSET; break;case 5:svm0.IphaseA = (ADC0_RESR0 & 0x0fff - svm0.ADCOFFSET;svm0.IphaseB = -(ADC0_RESR1 & 0x0fff + svm0.ADCOFFSET; break;default:break;}// Calculate currents Id and Iqfoc0.Id = park_trans( foc0.Ialpha, foc0.Ibeta, foc0.AngleStore, &foc0.Iq ; // USER CODE END}} // End of function ADC0_viSRN1//****************************************************************** ********** // @Function void CCU60_viNodeI0(void////----------------------------------------------------------------------------// @Description This is the interrupt service routine for the CCU60 node// I0. If the content of the corresponding compare timer// (configurable equals the content of the capture/compare// register or if a capture event occurs at the associated// port pin, the interrupt request flag is set and an// interrupt is triggered (only if enabled.// Please note that you have to add application specific code// to this function.////----------------------------------------------------------------------------// @Returnvalue None////----------------------------------------------------------------------------// @Parameters None////----------------------------------------------------------------------------// @Date14.05.2010////****************************************************************** ********** // USER CODE BEGIN (NodeI0,1// USER CODE END_interrupt(CCU60_NodeI0_INT void CCU60_viNodeI0(void{// USER CODE BEGIN (NodeI0,2// USER CODE ENDif(CCU60_IS & 0x0040 // if CCU60_IS_T12OM{// Timer T12 one match detection// USER CODE BEGIN (NodeI0,20CCU60_vEnableShadowTransfer(CCU60_TIMER_12;// USER CODE ENDCCU60_ISR |= 0x0040; // clear flag CCU60_IS_T12OM}if(CCU60_IS & 0x0080 // if CCU60_IS_T12PM{// Timer T12 period match detection// USER CODE BEGIN (NodeI0,19CCU60_TCTR2 = t13_trigger[svm0.Sector];svm0.SectorStore = svm0.Sector;svm0.T1Store = svm0.T1;svm0.T2Store = svm0.T2;foc0.AngleStore = foc0.Angle;// Flux Estimator//****************************************************************** **********************DSP_MAC(foc0.Ialpha, foc0.STATOR_R, foc0.Valpha;DSP_MAC(foc0.Ibeta, foc0.STATOR_R, foc0.Vbeta;foc0.FluxAmplitude = cart_polar_conv(foc0.Fluxalpha, foc0.Fluxbeta,&foc0.FluxAngle;//****************************************************************** **********************if( status0.control == 0{foc0.Vd = 0;if( foc0.AngleSpeed > 0foc0.Vq = vf_control(foc0.Vf_offset, foc0.Vf_slew, foc0.AngleSpeed;elsefoc0.Vq = vf_control(-foc0.Vf_offset, foc0.Vf_slew, foc0.AngleSpeed;}else{control0.ReferenceIq = pi_controller32(&control0.Speed, control0.ReferenceSpeed, control0.ActualSpeed;foc0.Vd = pi_controller32(&control0.Id, control0.ReferenceId, foc0.Id;foc0.Vq = pi_controller32(&control0.Iq, control0.ReferenceIq, foc0.Iq;}foc0.Valpha = inv_park_trans( foc0.Vd, foc0.Vq, foc0.Angle, &foc0.Vbeta ;// Modulatorsvm( &svm0 ;// USER CODE ENDCCU60_ISR |= 0x0080; // clear flag CCU60_IS_T12PM }} // End of function CCU60_viNodeI0//****************************************************************** ********** // @Prototypes Of Local Functions//****************************************************************** ********** unsigned int V_TA, V_TB;void svm( tSVM *svm{unsigned char gamma;unsigned int tmp, T1_2;tmp = (((unsigned intsvm->Angle >> 4 * 6;gamma = (unsigned char (tmp>>4;svm->Sector = tmp >> 12;svm->T1 = DSP_minMUL( svm->Amplitude, Sinus60_tab[(unsigned char~gamma], svm->SVMTMIN ; svm->T2 = DSP_minMUL( svm->Amplitude,Sinus60_tab[(unsigned char gamma], svm->SVMTMIN ;T1_2 = (svm->T1 + svm->T2/2;V_TA = svm->T12PERIODE/2 + T1_2;V_TB = svm->T12PERIODE/2 - T1_2;switch( svm->Sector{case 0:*((unsigned int volatile*(svm->CCU6_BASEADDR + CC60SR = V_TB;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC61SR = V_TB + svm->T1; // V_TC;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC62SR = V_TA;break;case 1:*((unsigned int volatile*(svm->CCU6_BASEADDR + CC60SR = V_TB + svm->T2; // V_TC;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC61SR = V_TB;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC62SR = V_TA;break;case 2:*((unsigned int volatile*(svm->CCU6_BASEADDR + CC60SR = V_TA;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC61SR = V_TB;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC62SR = V_TB + svm->T1; // V_TC;break;case 3:*((unsigned int volatile*(svm->CCU6_BASEADDR + CC60SR = V_TA;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC61SR = V_TB + svm->T2; // V_TC;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC62SR = V_TB;break;case 4:*((unsigned int volatile*(svm->CCU6_BASEADDR + CC60SR = V_TB + svm->T1; // V_TC;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC61SR = V_TA;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC62SR = V_TB;break;case 5:*((unsigned int volatile*(svm->CCU6_BASEADDR + CC60SR = V_TB;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC61SR = V_TA;*((unsigned int volatile*(svm->CCU6_BASEADDR + CC62SR = V_TB + svm->T2; // V_TC;break;default:break;}}。

永磁同步电机电流预测控制算法

永磁同步电机电流预测控制算法

永磁同步电机电流预测控制算法随着电力电子技术、微处理器技术和控制理论的发展,永磁同步电机(PMSM)因其高效、节能、环保等优点,在工业电机、电动汽车、航空航天等领域得到了广泛应用。

为了实现永磁同步电机的精确控制,提高系统的动态性能和稳定性,电流预测控制算法成为一个重要的研究领域。

本文将详细介绍永磁同步电机电流预测控制算法的原理、研究方法及实验结果,并进行分析和讨论。

永磁同步电机电流预测控制算法主要分为直接电流控制和间接电流控制。

直接电流控制通过直接调节电机的电流实现控制目标,具有控制精度高、响应速度快等优点,但算法复杂度较高,对硬件要求较高。

间接电流控制通过控制电机的电压和频率来实现电流控制,具有算法简单、易于实现等优点,但电流控制精度相对较低。

近年来,许多学者对永磁同步电机电流预测控制算法进行了研究。

其中,基于模型预测控制(MPC)的电流预测控制算法备受。

MPC是一种基于优化理论的控制方法,能够在约束条件下对未来一段时间内的系统进行优化控制。

在永磁同步电机电流控制中,MPC能够实现对未来一段时间内的电流进行预测和控制,提高系统的动态性能和稳定性。

然而,MPC算法的计算量大,对硬件要求较高,实时性较差。

本文提出了一种基于模型预测控制的永磁同步电机电流预测控制算法。

建立永磁同步电机的数学模型,包括电机电磁场、转子运动方程等。

然后,利用MPC算法对未来一段时间内的电流进行预测和控制。

具体实现过程如下:数据采集:通过电流传感器采集电机的实际电流,并将其反馈至控制系统。

模型建立:根据永磁同步电机的电磁场和转子运动方程,建立电机的数学模型。

电流预测:利用MPC算法对未来一段时间内的电流进行预测,考虑电流的约束条件(如最大电流、最小电流等)。

控制策略:根据电流预测结果和实际电流反馈,制定相应的控制策略,包括电压控制、频率控制等。

实时控制:通过微处理器实现对电机的实时控制,保证电流的稳定性和准确性。

为了验证本文提出的永磁同步电机电流预测控制算法的有效性,搭建了一个实验平台进行实验测试。

PMSM矢量控制电流环的个人心得[1]

PMSM矢量控制电流环的个人心得[1]
2
P D F 文件
用 使
" p d f F a c t 试 o 用 r 版 y 本创 P r 建 "
性发生变化,使电流解耦特性也发生变化,在电机高速时电流幅值和相位误差会增加。实际 简单、 通俗一点说就是如果假设控制器使用的是单纯的一个积分环节控制时, 基于这里控制 的是交流量,是带相位信息的电流,经过单纯积分后就会产生90度的相位滞后。 所以如果最后使用的是PI控制时, 用示波器看的话给定电压与反馈电流相位也能看出会 有接近90度偏差, (不是精确90度是因为不是单纯的积分环节,多了个比例环节) 。所以实际 做出这个PI控制后会发现空载电流会很大。 原因是给定电压与反馈电流相位的不对称就会导 致电机运行无功部分增大,而有功部分--输出机械能不变,进而会使定子电流增大。但是只 用P控制又发现系统性能不好,而且高速时还是会有相移。至于为什么转速较高时,其电流 环输出电流ABC与给定电流还是会出现幅值和相位上的偏差, 查阅了很多资料, 分析其原因。 有两个方面:一是电机反电势的对电流控制环的干扰,会随转速升高而增大。虽然可用提高 比例放大倍数来减少这一影响, 但有时又有受到直流端电压不能够任意提高的限制, 这个问 题一般通过前馈补偿方法。 二是通常采用的PI调节的工作频带不够宽。 工作频带这个问题跟 交流伺服的群主虫子交流后给支了一招:使用PID调节可以加宽带宽。但是最后试过效果好 像不太明显,可能是我没试明白。 至于前馈补偿大部分的资料都是通过电机参数和电机转速的运算出电压偏差然后进行, 这个可行度仔细想想其实很低。 所以后来想出别的办法:给定电压与反馈电流相位差可以 但是又因为经过PI调节中有个P其实已 通过在开始时计算 λ = θ + 90° 时强行进行角度补偿。 经不是单纯一个积分环节了, 所以这个相位差就不可能是准确的90度了。 而且实际就算是正 常的交流或直流跟踪控制系统也会有些许的相位偏差, 所以这个相位就不能单纯的直接补偿 90度了。 还是不太可行, 不过后来鄙人又试通过实际检测出给定电压与反馈电流相位差后再 进行补偿(这个应该也算是一个的闭环控制,或者也可以叫前馈补偿)但是这个方法需要有 个精确的检测相位差的方法和装置。在这里介绍一种方法:实际检测反馈电流过零点(软硬 件) 时对应在芯片内部运算出的编码角度值, 这样就能得出给定电压与反馈电流相位差并据 此进行补偿。 另外在实际做这个时一定要注意5-9公式中的那个负号,搞明白这个输出极性正负的问 题,因为通常DSP 的EVA 动作寄存器ACTRA都设定上桥为高有效(大部分程序设定高有 效是基于死区的考虑) ,这样实际上桥的比较值CMPR与输出的占空比是成反比的,而电机 三个绕组的极性又是与上桥一致的。所以实际使用时电流经过P或PI调节输出后可以直接赋 予CMPR,公式中的负号已通过ACTRA的设置实现。 或许经过我这么一说好像交流控制只是在电流开环时易于上手,在做到后期时是比较复 杂,好像是一无是处,其实也不尽然,交流控制器还是能够保证系统具有快速响应特性的。 另外在做完交流跟踪控制后你会发现理解并实现起直流跟踪控制会非常轻松。 ⑵直流跟踪控制法 这个方法因为电流环控制的是直流电流信号,直流信号就不会有上面交流信号滞后90 度的问题。 并且直流信号恰好具有对运行频带不敏感的特点, 从而可在一定程度上扩大电流 器的工作范围。 至于直流控制法书上基本都有较详细的说明,这里将略为述说。 PMSM 矢量控制直流跟踪控制法(DC 法)系统结构图如图 2 示:系统采用速度和电流闭 环控制。电机 A 相、B 相绕组电流 ia 、 ib 经过 Clarke 变换得到 αβ 方向的电流 iα 、 iβ ,将 三相静止坐标转换成二相静止坐标。 说白了这一变换就是根据功率等效原则将三相绕组电机 等效成二相绕组电机 (我们知道三相绕组电机通三相互差 120 相角度电流便能得到幅值不变 角度旋转的圆形磁链矢量,而二相通差 90 相角度的电流也能达到这样的旋转圆形磁链矢

PMSM3_1的电流采样问题

PMSM3_1的电流采样问题

PMSM3_1的电流采样问题PMSM3_1的电流采样问题PMSM3_1中,需要对3相的相电流进⾏采样,⽽在实际系统中,相电流并不是直流信号,⽽是近似正弦的信号,所以在⼀个周期内,电流肯定有正也有负。

但是2812的模数12位采集器是单极性的。

怎样通过把⼀个双极性的信号⽤单极性的AD采集,并表达成相应的12位数字量,这个问题值得我们思考和讨论。

虽然德州公司的PDF技术⽂档已经介绍了相关的解决⽅法,但是应该还有⼈不⼤能够理解。

解决这个问题,⼀般要做好两个⽅⾯的⼯作:⼀,硬件;⼆,软件。

硬件上,由于⼀般采集过来的信号是双极性的,最⼤范围是-a~a,这样AD是⽆法采集-a~0的数据的,为了做到顺利采集,我们可以让电流为0的时候,输出电压是1.5伏特,⽽当电流为-a的时候输出电压是0,这样我们必须调整信号范围,⼀般是采⽤运算放⼤器和直流电源偏压的办法做到的。

可以令b=1.5+a/2,这样b的范围就是0~3伏特,符合2812的AD要求.软件上,参考德州公司的技术⽂档ileg2_dcbus_drv.pdf,对采集过来的数字进⾏异或运算,这个计算设计的很巧妙,绝对出⾃经验丰富的程序员。

为什么说他做的巧妙呢?原因就是这样的计算很简单⽽且效果也很好。

⼤家学过单⽚机的都知道,为了表⽰⼀个有符号的整型,我们⽤的是int,对于PMSM3_1⽽⾔,当定义int16的时候也就意味着这个数字的最⾼位是符号位,其他的位才是数字位。

另外负数的数字位是通过求反加1才得到的。

对于采集过来的12位数据他们的范围是0000~FFF0,但是这个数字实际上是⽆符号的,当我们进⾏了异或运算之后,我们会发现得到的结果恰好就是以负数为补码形式表⽰的有符号数字。

请看⼀下,当同8000异或之后,原来的1.5伏到3.0伏的范围变成了0000~7FF0,这个范围就是正数的范围,也恰好对应输⼊的0~a安培的电流。

另⼀⽅⾯,0~1.5伏对应的是8000~8FFF,相应的电流是-a~0安培。

PMSM电机矢量控制之电流采样原理分析

PMSM电机矢量控制之电流采样原理分析

PMSM 电机矢量控制之电流采样原理分析摘要:本文分析了PMSM 电机磁场定向控制(FOC)器的电流采集硬件电路,包括母线电流采样和相线电流采样的电路分析。

以下电路是业界常用、稳定、经典的不二之选,工作之余,在此与同僚分享一下。

15621R Uop Up R Up V cc -=-----------------------------------------(1-1)158N 157N O R U R U U =--------------------------------------------------(1-2)P N U U =-----------------------------------------------------------(1-3)整理后,代入数值得:230U 220V 10U OP CC P +=-----------------------------------------(1-4)O N U 11.21.2U =----------------------------------------------------(1-5)P N U U =-----------------------------------------------------------(1-6)最终,推出:OP O U 8.93V 1.34U +=-----------------------------------------(1-7)一、当MOS 管IRFB3607处于正向导通状态时,电流在一定范围内会使二极管D13处于不导通状态(Up-Un<,但是电流超过阈值后,便会使二极管D13导通,并将电压嵌制在。

当MOS 管IRFB3607处于反向导通状态时,其体二极管也起到电压嵌制作用,电路工作原理相似。

5692BM P 93P CC R R U U R U V +-=----------------------------------------------------------------------(2-1)132OP N 140N O R U U R U U -=----------------------------------------------------------------------(2-2)P N U U =---------------------------------------------------------------------------------------(2-3)令15692R R R =+,代入上式(2-1),整理得:931BM 93CC 1P R R U R V R U ++=----------------------------------------------------------------------(2-4)140132OP 140O 132N R R U R U R U ++=--------------------------------------------------------------------(2-5)P N U U =----------------------------------------------------------------------------------------(2-6)整理以上各式可得:OP 931132931140BM 93113214013293CC 9311321401321O U )R (R R )R (R R U )R (R R )R (R R V )R (R R )R (R R U ++-+++++=------(2-7)分析(2-7)式可知,第一项应该是基准电压,必须有CC CC 9311321401321V 21V )R (R R )R (R R =++,第二项和第三项的系数应该相等,即)R (R R )R (R R )R (R R )R (R R 93113293114093113214013293++=++,以此获取下桥臂MOS 管的管压降值。

PMSM同步电动机矢量控制PPT课件

PMSM同步电动机矢量控制PPT课件

iB2
LBB
1 2
iC2
LCC
iAiB
LAB
iBiC
LBC
iCiA
LCA
p iAif
LAf
iBi f
LBf
iCi f
LCf
iAiD
LAD
iBiD
LBD
iCiD
LCD
iAiQ
LAQ
iBiQ
LBQ
iCiQ
LCQ
(8-15)
pLs2 iA2 sin 2 iB2 sin(2 120o ) iC2 sin(2 120o ) 2iAiB sin(2 120o )
Ld
0 0 Lsf LsD 0
d
0
Lq
00
0
LsQ
id
q
0 f
D Q
3 2 3 2
0 Lsf LsD
0
0 0
0
3 2
LsQ
L0 0 0 0
0 L ff LDf 0
0 L fD LDD 0
0
iq
0
i0 if
0
iD iQ
LQQ
从式(8-18)可以看出,经过坐标变换后
1. 磁链方程
励磁同步电动机经过等效变换后,
定转子在dq坐标系下的磁链方程为
d Ldid Lsf i f LsDiD
q Lqiq LsQiQ
0 L0i0
f
3 2 Lsf id
Lff i f
LfDiD
D
3 2 LsDid
LDf i f
LDDiD
Q
3 2
LsQiq
LQQiQ
行胜于言 敢为人先 和而不同 居安思危

PMSM电机矢量控制之电流采样原理分析

PMSM电机矢量控制之电流采样原理分析

PMSM 电机矢量控制之电流采样原理分析摘要:本文分析了PMSM 电机磁场定向控制(FOC)器的电流采集硬件电路,包括母线电流采样和相线电流采样的电路分析。

以下电路是业界常用、稳定、经典的不二之选,工作之余,在此与同僚分享一下。

15621R Uop Up R Up V cc -=-----------------------------------------(1-1) 158N 157N O R U R U U =--------------------------------------------------(1-2) P N U U =-----------------------------------------------------------(1-3)整理后,代入数值得:230U 220V 10U OP CC P +=-----------------------------------------(1-4) O N U 11.21.2U =----------------------------------------------------(1-5) P N U U =-----------------------------------------------------------(1-6)最终,推出:OP O U 8.93V 1.34U +=-----------------------------------------(1-7)一、当MOS 管IRFB3607处于正向导通状态时,电流在一定范围内会使二极管D13处于不导通状态(Up-Un<0.7V),但是电流超过阈值后,便会使二极管D13导通,并将电压嵌制在0.7V 。

当MOS 管IRFB3607处于反向导通状态时,其体二极管也起到电压嵌制作用,电路工作原理相似。

5692BM P 93P CC R R U U R U V +-=----------------------------------------------------------------------(2-1) 132OP N 140N O R U U R U U -=----------------------------------------------------------------------(2-2) P N U U =---------------------------------------------------------------------------------------(2-3) 令15692R R R =+,代入上式(2-1),整理得:931BM 93CC 1P R R U R V R U ++=----------------------------------------------------------------------(2-4) 140132OP 140O 132N R R U R U R U ++=--------------------------------------------------------------------(2-5) P N U U =----------------------------------------------------------------------------------------(2-6) 整理以上各式可得:OP 931132931140BM 93113214013293CC 9311321401321O U )R (R R )R (R R U )R (R R )R (R R V )R (R R )R (R R U ++-+++++=------(2-7) 分析(2-7)式可知,第一项应该是基准电压,必须有CC CC 9311321401321V 21V )R (R R )R (R R =++,第二项和第三项的系数应该相等,即)R (R R )R (R R )R (R R )R (R R 93113293114093113214013293++=++,以此获取下桥臂MOS 管的管压降值。

PMSM电机矢量控制之电流采样原理分析

PMSM电机矢量控制之电流采样原理分析

PMSM 电机矢量控制之电流采样原理分析摘要:本文分析了PMSM 电机磁场定向控制(FOC )器的电流采集硬件电路,包括母线电流采样和相线电流采样的电路分析.以下电路是业界常用、稳定、经典的不二之选,工作之余,在此与同僚分享一下。

15621R Uop Up R Up Vcc -=-—--—--—-—————-—----——--—--—-—--—---—-——-(1-1) 158N 157N O R U R U U =-——---—-----—--——-—-—-—————-------—-——--——————————(1—2)P N U U =-—---———--—--—-——-—-—--——------—----—----—-——-—-——--—----—-(1-3)整理后,代入数值得:230U 220V 10U OP CC P +=——-———--—--—--——-—-—---—--——--—-—-—--————(1—4) O N U 11.21.2U =————-————------—-——---—-——--————————-———-—----—-—--—(1-5)P N U U =-—-—-————--——-———————-—---—---—--—-—-—--—-——--———--——--——--(1-6)最终,推出:O P O U 8.93V 1.34U +=-—-—-—-—————----—-——----—-—————--—————-——(1-7)一、当MOS 管IRFB3607处于正向导通状态时,电流在一定范围内会使二极管D13处于不导通状态(Up —Un 〈0.7V ),但是电流超过阈值后,便会使二极管D13导通,并将电压嵌制在0.7V 。

当MOS 管IRFB3607处于反向导通状态时,其体二极管也起到电压嵌制作用,电路工作原理相似。

5692BM P 93P CC R R U U R U V +-=-————-----—---——-——-—-——--——---————-——--——-—-—————--———-—-—----—----—-(2-1)132OP N 140N O R U U R U U -=-——--—---—————-—-———-——-—---——--—---——------————--—---—------—---———-—(2—2)P N U U =-—--—-—----—-——--———-——-—----———-——--——---—-—-—---—-—---—---—--—-----—---—-———-———---—-(2-3)令15692R R R =+,代入上式(2-1),整理得:931BM 93CC 1P R R U R V R U ++=—-—--————---——-——------———--—---—-——---——————-———--—-—--—--—-—-——-—--—(2—4)140132OP 140O 132N R R U R U R U ++=—-—-————-—--—--—-—-------———--—-—---——-—-—-----—--———--—--—-——---——-(2-5)P N U U =—--——--——-———-—---—-----———---——-—--—-----—---—————---—---—--—-————-—-—-————----—-——-———(2—6)整理以上各式可得:OP 931132931140BM 93113214013293CC 9311321401321O U )R (R R )R (R R U )R (R R )R (R R V )R (R R )R (R R U ++-+++++=----—-(2-7) 分析(2-7)式可知,第一项应该是基准电压,必须有CC CC 9311321401321V 21V )R (R R )R (R R =++,第二项和第三项的系数应该相等,即)R (R R )R (R R )R (R R )R (R R 93113293114093113214013293++=++,以此获取下桥臂MOS 管的管压降值.但是,当把两个等式组成方程组求解参数时,发现方程组无解!说明没有一套合适的电阻参数同时满足如上两条件。

永磁同步电机矢量控制工作原理

永磁同步电机矢量控制工作原理

永磁同步电机矢量控制工作原理一、什么是永磁同步电机(PMSM)说到永磁同步电机,可能不少人都会觉得一头雾水,啥玩意儿?其实它就是咱们身边那些电动汽车、家用电器,甚至是工业生产中的一员大将。

它的“永磁”指的就是电机内部有永磁体,而“同步”则表示电机的转子跟定子转速完全一致。

别看它名字这么复杂,实际操作起来很简单,基本上就像是两个好朋友一同跳舞,步伐完全同步。

顺带说一句,这种电机非常省电,运行稳定,效率高,完全可以跟马力十足的传统电机一拼,甚至还更聪明哦。

电动汽车爱用它,家用空调爱用它,很多高端设备也在用它,不得不说,真是个“全能选手”。

二、矢量控制是什么鬼别急,矢量控制是什么?其实它就像是永磁同步电机的“老司机”,带着电机走向正确的道路。

矢量控制,听起来是不是像个高深莫测的黑科技?但其实简单来说,它就是一种控制方式,通过把电机的电流分解成两部分:一个是负责产生转矩的“转矩分量”,另一个是负责调节磁场的“磁场分量”。

就像一个“武林高手”,拥有两种不同的技能,既能打出漂亮的“掌法”,又能防守自如。

这样一来,电机不管在高速、低速还是启动时,都能稳定输出强劲动力。

就拿电动汽车来说,想想看,电机一会儿加速,一会儿减速,矢量控制就像是穿梭在车流中的老司机,精准地把控每一个细节,确保电机的表现始终如一。

1.转矩控制和磁场控制既然说到矢量控制的“武林秘籍”,我们得好好看看它的两大法宝:转矩控制和磁场控制。

首先说说转矩控制,大家都知道电机的核心功能是用来转动的,对吧?那转矩就是电机用来产生转动的力量。

矢量控制的聪明之处在于,它能精准地调节电流的大小,让电机的转矩输出更加平稳、高效。

转矩控制不仅能让电机在不同负载下应对自如,还能避免过多的电流浪费。

这个功能强大得不得了,有点像是你驾驶一辆车时,可以轻松应对不同路况,不管是爬坡还是高速行驶,电机都能稳定输出你需要的动力。

接着是磁场控制,磁场对于永磁同步电机来说是个核心部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PMSM 电机矢量控制之电流采样原理分析
摘要:本文分析了PMSM 电机磁场定向控制(FOC)器的电流采集硬件电路,包括母线电流采样和相线电流采样的电路分析。

以下电路是业界常用、稳定、经典的不二之选,工作之余,在此与同僚分享一下。

156
21R Uop Up R Up V cc -=-----------------------------------------(1-1) 158
N 157N O R U R U U =--------------------------------------------------(1-2) P N U U =-----------------------------------------------------------(1-3)
整理后,代入数值得:
230
U 220V 10U OP CC P +=-----------------------------------------(1-4) O N U 11.21.2U =----------------------------------------------------(1-5) P N U U =-----------------------------------------------------------(1-6)
最终,推出:
OP O U 8.93V 1.34U +=-----------------------------------------(1-7)
一、当MOS 管IRFB3607处于正向导通状态时,电流在一定范围内会使二极管D13处于不导通状态(Up-Un<0.7V),但是电流超过阈值后,便会使二极管D13导通,并将电压嵌制在0.7V 。

当MOS 管IRFB3607处于反向导通状态时,其体二极管也起到电压嵌制作用,电路工作原理相似。

56
92BM P 93P CC R R U U R U V +-=----------------------------------------------------------------------(2-1)
132
OP N 140N O R U U R U U -=----------------------------------------------------------------------(2-2)
P N U U =---------------------------------------------------------------------------------------(2-3)
令15692R R R =+,代入上式(2-1),整理得:
93
1BM 93CC 1P R R U R V R U ++=----------------------------------------------------------------------(2-4)
140
132OP 140O 132N R R U R U R U ++=--------------------------------------------------------------------(2-5)
P N U U =----------------------------------------------------------------------------------------(2-6)
整理以上各式可得:
OP 931132931140BM 93113214013293CC 9311321401321O U )
R (R R )R (R R U )R (R R )R (R R V )R (R R )R (R R U ++-+++++=
------(2-7) 分析(2-7)式可知,第一项应该是基准电压,必须有CC CC 9311321401321V 2
1V )R (R R )R (R R =++,第二项和第三项的系数应该相等,即)
R (R R )R (R R )R (R R )R (R R 93113293114093113214013293++=++,以此获取下桥臂MOS 管的管压降值。

但是,当把两个等式组成方程组求解参数时,发现方程组无解!说明没有一套合适的电阻参数同时满足如上两条件。

既然如此,我们改变一哈策略,只要求满足等式CC CC 9311321401321V 2
1V )R (R R )R (R R =++就可以,另一等式可以不满足。

最终化简等式(2-7)可得: OP OP BM 931132931140CC 9311321401321O U 21)U U ()R (R R )R (R R V )R (R R )R (R R U +-+++++=
------------------(2-8)
正如式(2-8)所示,第一项为基准电压常数CC V 2
1,第二项为下桥臂MOS 管管压降,第三项为母线康铜丝上的压降,随电流的变换而变换!
二、当MOS管IRFB3607处于截至状态时,二极管D13将电压嵌制在0.7V,使得输出始终为高电平。

感谢下载!
欢迎您的下载,资料仅供参考。

相关文档
最新文档