现代电机控制的发展,一方面要求提高性能、降低损耗、减少成本,另一方面又不断地有技术指标及其苛刻的特殊应用的系统需求。随着微电子技术和计算机技术的飞速发展,以及控制理论的完善、仿真工具的日渐成熟,给电机控制行业带来了很多机遇和发展契机。
一、 概述
自70年代异步电机矢量变换控制方法提出,至今已获得了迅猛的发展。这种理论的主要思想是将异步电动机模拟成直流电动机,通过坐标变换的方法,分别控制励磁电流分量与转矩电流分量,从而获得与直流电动机一样良好的动态调速特性。因为这种方法采用了坐标变换,所以需要大量的数学运算,从而对处理器的运算速度、实时处理能力产生了较高的要求。
随着现有的工业电气传动、自动控制和家电领域对电机控制产品需求的增加,嵌入式控制的市场不断扩大。用户希望能在驱动系统中集成更多的功能,达到更高的性能。然而许多设备试图使用8位或是16位的微处理器实现电机的闭环控制,它的内部体系结构和计算功能阻碍了这一点的实现。例如,在很多领域(如工业、家电和汽车),用户希望能提高效率、去掉霍尔效应传感器之类的电机传感器。这可以通过使用更为先进的电机控制理论、采用更为高效的控制算法来实现。但是这可能超出现有微处理器的计算能力。
如今流行的方法是使用高性能的数字信号处理器(DSP)来解决电机控制器不断增加的计算量和速度需求。将一系列外围设备如模数转换器(A/D)、脉宽调制发生器(PWM)和数字信号处理器(DSP)集成在一起,就获得一个即功能强大又非常经济的电机控制专用的DSP。
图1为AD公司DSP内核的结构示意图。
与单片机相比,DSP器件具有较高的集成度。DSP具有更快的CPU,更大容量的存储器。提供高速、同步串口和标准异步串口。有的片内集成了模数转换器和采样保持电路,可提供PWM输出。AD公司DSP的鲜明特点为:其汇编指令集为仿C语言或代数语言格式,所有指令都能在一个机器周期内完成,并且通过并行处理技术,使一个机器周期内可完成多条指令。从图1可见,DSP采用改进的哈佛结构,具有独立的程序空间和数据空间,允许同时存取程序和数据。同时,程序空间和数据空间也有专门的通道可以进行数据交换,从而既避免了某一个空间的浪费,又为某些应用做好了准备。内置高速的硬件乘法器,增强的多级流水线,使DSP器件具有高速的数据运算能力。而单片机为复杂指令系统计算机(CISC),多数指令要2~3个指令周期来完成。单片机采用诺依曼结构,程序和数据在同一空间存取,同一时刻只能单独访问指令或数据。ALU只能作加法,乘法需要有软件来实现,因此占用较多的指令周期,也就是说速度比较慢。所以,结构上的差异使DSP器件比16位的单片机单指令执行时间快8~10倍,完成一次乘加运算快16~30倍。
二、简介
AD公司的电机控制专用DSP目前主推的有ADMC331,ADMC401 和ADMC328三个品种。这里以ADMC331为例,介绍一下其产品的特点。
如前所述,电机控制专用DSP就是将DSP的内核与电机控制所需的外围电路集成到一起。ADMC331是以运算速度为26MIPS的定点ADSP2171作为内核,集成了存储器,串行通讯口,定时器,模拟量输入通道以及脉宽调制发生器等外围器件。它有字长为24位的程序空间只读存储器2K和程序空间随机存储器2K以及字长为16位的数据空间随机存储器1K。由于采用了ADSP2100系列的代码兼容的语言,程序的移植非常方便,这使得用户在原有基础上开发新产品时的周期大大加快,工作量大大减少。24位的数字输入输出端口,既可以由用户单独将每一位设置为输入或输出,也可以将其设置为中断。还具有7路模拟量的输入通道,用户不必在外围再设置模数转换器,从而降低成本,提高可靠性。
下面详细的介绍一下脉宽调制发生器的原理及工作方式。电机控制专用DSP的脉宽调试与传统的单片机查表的方式不同,依托强大的计算能力,DSP采用的是实时计算的方法。即在每一个载波周期的时间内计算出下一个载波周期的占空比,然后写入寄存器中,在下一个周期脉冲到来的时候,自动用寄存器的值来控制硬件实时产生PWM波。
PWM发生器的结构如图3所示。
从图中还可以看到有几个控制引脚。PWMPOL是用来控制六路的PWM输出是高电平有效还是低电平有效。PWMTRIP是硬件的保护电路,当这个引脚为低电平时,整个系统被无条件复位,从而起到保护作用。PWMSR是专为开关磁阻电机而设计的,整个系统中有这样一个模块,可以在PWMSR为低电平时将六路PWM输出按照开关磁阻电机的特殊要求而输出。此外,还有时钟输出的信号CLKOUT和PWM的同步信号PWMSYNC等等。
图3 PWM发生器的结构示意图
主要几个寄存器的作用:PWMTM--PWM载波的周期(1/频率)
PWMDT--PWM开关的死区时间,即为了避免上下桥直通而人为设置的等待时间。
PWMPD--最小脉冲宽度,即为了功率器件的需要而人为的将小于一定宽度的脉冲过滤掉。以上寄存器均是在初始化的时候根据系统的需要而确定写入的。下面三个寄存器是在计算过程中不断的修改,从而产生连续变化的PWM波形。
PWMCHA,PWMCHB,PWMCHC--A,B,C通道的占空比。
此外,ADMC331还集成了两路8位的辅助PWM发生器以及看门狗电路。通过辅助PWM通道,可以实现如功率因数校正等应用。限于篇幅,这里就不一一例举其应用,有兴趣的读者可以到ADI的网址www.analog.com/motorcontrol下载详细的应用文档。
三、应用 典型应用如下所示,所有的计算工作都放在中断处理子程序中完成,这有点类似面向对象编程中的事件驱动的方式。
STARTUP: CALL INIT_PWM;
CALL Init_DAC;MAIN: {Wait for interrupt to occur } JUMP MAIN; RTS; {*******************************************************************}
{ Interrupt Service Routine for PWM block. } {*******************************************************************}
PWMSYNC_ISR: mr = 0x0;
mr1 = dm(Theta); {
Preload Theta } my0 = delta;
ar = DM(AD_IN);
mr = mr + ar*my0 (SS);
{Compute new angle & store } dm(Theta) = mr1;
DM(Vdq_ref )= ar;
{Set constant Vdq reference (AD_IN,0) } ar = pass 0;
DM(Vdq_ref+1)= ar;
Set_DAG_registers_for_transformations;
Forward_Park_angle(Vdq_ref,Valphabeta_ref,mr1);
SVM_Calc_Ontimes(Valphabeta_ref, OnTime_struct);
SVM_Calc_Dutycycles(OnTime_struct, Dutycycles_struct);
SVM_Update_DutyCycles(Dutycycles_struct);
RTI;