基于L C /OS -Ò的永磁同步电动机伺服系统软件设计
陈 涛,彭侠夫,叶瑰昀
(厦门大学信息科学与技术学院自动化系,厦门 361005)
摘 要:对以T M S320LF2407为基础,如何在L C /OS-Ò实时多任务内核的环境下建立永磁同步电动机伺服系统的位置环、速度环和电流环进行了阐述;通过运用L C /OS -Ò来调度任务,提高了系统的稳定性、可靠性和安全性,缩短了软件设计的周期和难度,提高了程序的可读性和可维护性。
关键词:L C /OS -Ò;伺服系统;软件;永磁同步电动机;数字信号处理器
Soft w are D esign of the P M S M Servo Syste m Based on t he L C /OS -Ò
C HEN Tao ,PENG X ia -f u ,YE Gu-i yun
(I nstitute of Co mputer a nd I nf o r m ation Engineeri n g ,X ia men Uni v ersity ,Xia m e n 361005,Chi n a)ABSTRACT :U si n g the TM S320LF2407A as the m i c roprocessor ,
the paper presents how to desi g n t h e
soft w are the three k i n ds of position ,speed and curren t c l o sed l o op contro lm ode ls i n the P M S M servo sys -te m wh ich using L C /OS-Òrea-l ti m e mu ltitask kerne.l Using L C /OS -Òto atte m per the task ,can i m -proved stability 、re liability and security ,
sho rten the per i o d and d ifficu lty o f the soft w are desi g ning ,
i
m -proved t h e readab ility and m a i n tainab ility o f procedure .
KEY W ORD S :L C /OS -Ò;Ser vo syste m;So ft w are ;P M SM;DSP
收稿日期:2006-05-30
0 引 言
通常伺服系统软件采用前后台系统(Fore -ground /B ackground Syste m ),应用程序是一个无限的大循环,事件都是顺序执行,实时性很强的任务靠中断服务程序来执行。这种编程方法的缺点是系统的稳定性和实时性差,编程难度大;伺服系统对系统的响应时间要求很严,它要同时完成采样、计算、控制、通讯等任务,没有一个实时多任务操作系统是不行的。L C /OS-Ò是一种源码公开的占先式实时多任务操作系统。L C /OS -Ò除了提供最核心的占先方式的任务调度功能外,还具有任务管理、时间管理、任务间的通讯和同步、内存管理等功能。因此把L C /OS -Ò作为伺服系统软件,通过L C /OS-Ò来调度系统任务,各模块之间相互,杜绝了由于某个任务陷入死循环而死机。系统可以调用其他的任务来弥补进入死循环的任务。因此使得位置伺服系统的软件设计都变得非常简单,能极大限度地降低开发难度和缩短软件开发周期。
1 硬件电路
本功率驱动电路采用智能功率模块I P M,工作频率可以达到20k H z ,具有过流保护和短路保护、过热和欠压锁定保护功能,系统的可靠性和集成性提高。另外还有逻辑控制电路,电流、速度和电压检测,键盘和显示等部分。转子位置采样采用混合式光码盘,其输出的A 、B 信号直接进入编码器接口QEP1和QEP2引脚,采用中断的方式获知转子的位置。利用时间管理器模块(EV )产生P WM 信号,实现对电机的控制。在DSP 内部实现位置环、速度环和电流环的控制算法。
2 系统软件设计
211 任务建立
想让L C /OS -Ò管理用户的任务,必须先建立任务。可以通过传递任务地址和其它参数给OSTa -skC reate ()。任务可以在多任务调度开始前建立,
)
52)微电机 2007年 第40卷 第5期(总第161期)
L C/OS-Ò可以管理多达个任务;从中保留了4个最高优先级和4个最低优先级的任务供自己使用,所以用户可以使用的只有56个任务。任务的优先级必须不同。L C/OS-Ò采用基于优先级的调度法,即CP U总是让处在就绪态的优先级最高的任务先运行。优先级的确定主要依据任务的重要性来确定。本伺服系统主要任务优先级顺序:位置环y速度环y电流环。
在L C/OS-Ò系统中,每个任务都是一个无限循环的函数。当正在运行的任务进入延时程序或在等待消息时会自动挂起,CPU运行其它的就绪任务。当某任务运行条件满足时,就进入就绪状态,操作系统依据其优先级进行调度。如果它比当前的任务优先级更高,就进行任务的切换,系统保证永远运行优先级最高的任务。在L C/OS-Ò中,每个任务的工作状态通过单独的任务控制模块(OS_TCB)来记录,包括任务地址指针、优先级、运行状态、堆栈信息等。系统中任务之间通过信号量、邮箱、消息队列来实现任务之间的通讯。L C/OS-Ò中需要一个时钟资源来实现时间的延时和期满的功能,没有它就没有嵌入式系统的任务调度。在T M S320LF2407A中用计数器的周期中断为系统提供时钟节拍;OST i m eT ick()完成任务的延时和挂起。
3多任务伺服软件结构
软件部分是控制的核心,主要由位置捕捉、转速估算、电流和电压测量、三环控制算法实现、SVP WM算法、故障检测、通讯和显示等组成。下面主要介绍三环算法结构以及整体软件结构。
311位置环实现
通过DSP内部的编码信号处理电路对输入信号4倍频,利用通用定时器根据转向计数,每个P WM周期对编码盘采样一次,每两次P WM周期的采样脉冲之差即脉冲增量,也就是转子的机械转角增量,对增量累计就可以得到转子的绝对位置。本系统取10个速度环周期对位置采样计算一次。位置环程序结构如下。
Vo i d PositionTask(vo i d*pdata)//
{
pdata=pdata;
For(;;)
{
OSSe mPend(SpeedLoop,0,err);
发AD转换信号,采样给定位置信号;
读取转子脉冲增量并计算绝对机械位置;
由位置环控制算法计算给定参考速度大小;
}
}
OSTaskC reate(PositionTask,(void*)Pos-i tionP,(void*)PositionStk[0],0);//创建位置环任务。
312速度环实现
由于惯性较大,机械时间常数远大于电时间常数,因此速度采样不是在每个P WM周期内进行,取20个P WM周期对速度采样计算一次。通过对20个P WM周期内脉冲的增量乘以K speed计算得到,给定转速与转速反馈量的偏差经过速度PI调节器,输出用于转矩控制的电流q轴分量。速度环程序结构如下。
Vo i d SpeedTask(vo id*pdata)//速度环任务
{
pdata=pdata;
For(;;)
{
OSSe mPend(Curren t L oop,0,err);
获取脉冲增量并计算实际转速;
由速度环控制算法计算给定电流参考量;
If(速度环次数++>10)
OSSe mPost(PositionLoop);
}
}
OSTaskCreate(SpeedTask,(vo i d*)SpeedP, (void*)SpeedStk[0],1);//创建速度环任务。
)
53
)
基于L C/OS-Ò的永磁同步电动机伺服系统软件设计陈涛彭侠夫叶瑰昀313电流环实现
电流环的调节周期一般很短,这里选择P WM 波形的开关频率为15kH z,即定时器的周期为66167L s。通用定时器T1的周期中断产生时进行电流环计算。电流参考值与电流反馈量的偏差经过电流PI调节器分别输出旋转电压矢量,利用SVP WM技术产生P WM信号控制逆变器,改变定时器的比较寄存器的值,从而改变P WM的占空比。电流环程序结构如下。
Vo id Current T ask(vo i d*Pdata)//电流环任务
{
Pdata=Pdata;
For(;;)
{
OSSe m Pend(Current L oop,0,err);
启动AD采样,采样实际电流信号;
由电流环控制算法计算占空比的大小;
If(电流环次数++>20)
OSSe m Post(SpeedLoop);
}
}
OST askC reate(Current T ask,(vo i d*)Cur-ren t P,(vo i d*)CurrentStk[0],2);//创建电流环任务。
314程序中断结构
这里的中断形式和前后台系统一样,仅仅是在原来用户的中断程序里面加上函数OSInt E nter ()和OSInt E x it().
ISR
{
保存处理器寄存器的值;
OSInt E nter();
执行中断函数;
OSInt E x it();
恢复处理器寄存器的值;
中断返回;
}
315系统m ain函数结构框架
在主函数中用OSTaskCreate()函数建立初始化任务TaskI n it()。初始化任务中建立一系列的信号量和邮箱:唤醒AD任务,唤醒液晶显示任务,唤醒键盘任务,唤醒时钟中断任务。建立位置环任务、速度环任务、电流环任务等。在L C/ OS-Ò实时内核下整个程序的结构框架如下。
Vo i d m ain(vo id)//主函数
{
硬件初始化;
OSI n it();//内核的初始化
调用OST askC reate()创建初始化任务Tas-kI n it();
OSStart();//开始多任务的调度
}
Vo i d TaskInit(vo i d*data)
{
硬件时钟初始化;
创建用户任务;
定时检查系统的状态;
定时复位看门狗;
}
4结论
在L C/OS-Ò的基础上可以实现A/D转换、RS-232通信、数据处理、键盘和显示等任务;只需把要完成的工作分成单个任务,编写的任务块然后向系统添加即可,需要处理的任务越多, L C/OS-Ò的优越性越显著。利用L C/OS-Ò可以提高系统的可靠性和实时性,缩短软件设计的周期和难度,程序的可读性和可维护性提高。采用L C/ OS-Ò的伺服控制系统较传统伺服控制系统在程序设计的模块化和快速性等方面都具有明显的优势,取得了更好的控制效果和更好的系统综合性能。
参考文献
[1]J EAN J.LABROSSE.邵贝贝译.L C/OS-Ò源码公开的实时
嵌入式操作系统[M].北京:中国电力出版社,2001. [2]刘卫国.L C/OS-Ò在无刷直流电机位置伺服系统中的应用,
微电机,2004,38(5):57-59.
[3]张天水.基于嵌入式操作系统L C/OS-Ò和dsp的伺服电机
多任务控制[J].冶金自动化,2004(增刊).
作者简介:陈涛(1982-),男,河南人,硕士研究生,研究方向为控制理论与控制工程。
)
54
)
微电机2007年第40卷第5期(总第161期)下载本文