基于嵌入式操作系统的伺服软件开发

时间:2022-06-24 08:23:59

基于嵌入式操作系统的伺服软件开发

摘 要:为了提高伺服系统的性能,在分析伺服结构的基础上,分别采用μC/OS-Ⅱ和TI公司的DSP/BIOS嵌入式操作系统进行了某无刷电机伺服系统的软件开发。介绍了系统设计的硬件组成、软件结构及运行过程,并对所设计的伺服系统软件进行了测试,结果表明,所开发软件满足伺服控制要求,并对这两种操作系统在设计中的使用给出建议。

关键词:伺服系统;无刷电机;嵌入式操作系统;μC/OS-Ⅱ;DSP/BIOS

中图分类号:TJ765 文献标识码:A 文章编号:1673-5048(2013)05-0045-03

ServoSoftwareDesignBasedonEmbeddedOperationSystem

SONGYang1,ZHUPeihong2,YUEHongda2,NIUZhen2

(1.AviationTechnologyGuaranteeBranchofNED,Beijing100481,China;

2.ChinaAirborneMissileAcademy,Luoyang471009,China)

Abstract:Onthebasisofanalyzingtheconfigrationofservo,respectivelybasedonembeddedoperatingsystemμC/OSⅡandTI’sDSP/BIOS,abrushlessmotorservosystemsoftwaredesignisdonetoimprovesystemperformance.Thisarticlebrieflyintroducesthehardwarecomposition,thesoftwarestructure andoperationprocess.Systemtestresultsshowthecorrectnessofthesoftwaredesign,andsomesuggestionsonhowtousethetwooperatingsystemsindesigningaregivenintheend.

Keywords:servosystem;brushlessmotor;embeddedoperatingsystem;μC/OSⅡ;DSP/BIOS

0 引 言

传统的空空导弹伺服控制以模拟控制为主,近年来数字伺服控制得到了迅速的发展,无刷电机及软件在导弹伺服系统中的应用,提高了伺服系统的性能,是发展中的主流。由于软件的引入,也使伺服系统的设计增加嵌入式软件研制的内容。

伺服软件是伺服系统的神经中枢,为确保其研制质量,除做好软件的工程化开发和管理外,选择适当的软件开发环境也会取得事半功倍的效果。传统的嵌入式软件系统可以称为前、后台系统,基于嵌入式系统开发的软件系统则体现多任务运行的特点。改变传统开发方式,在嵌入式操作系统下进行伺服软件开发是否具有一定的优越性呢?本文以某伺服系统为背景,在嵌入式操作系统下对伺服系统软件开发进行了一些尝试,以探索其优越性。

1 伺服系统结构

某伺服系统由主要TMS320F2812、组合逻辑电路、三相桥功率变换电路、电流采样及角位置检测电路、点火、转级控制电路及传动机构等构成。系统有两个独立运动的通道,两个通道的结构相同,由一片F2812进行控制,系统主要硬件结构如图1所示。系统通过F2812的SCI接口接收控制指令;通过位置采样获得通道位置信息,输出的PWM和DIR信号控制各功率管有序导通使无刷电机旋转;输出点火、转级控制信号使能点火、转级控制电路;通过SCI接口反馈系统状态信息。

2 嵌入式操作系统

常用的嵌入式实时操作系统有μC/OS-Ⅱ、VxWorks、Real-TimeLinux等,TI公司在其DSP集成开发环境CCS中也提供了一种简易嵌入式操作系统DSP/BIOS。由于本文设计系统的微处理器采用的是F2812且未配置片外存储器,考虑到资源情况和移植的难易程度,使用μC/OS-Ⅱ和DSP/BIOS进行了伺服软件开发的尝试。

2.1 μC/OS-Ⅱ操作系统及移植

μC/OS-Ⅱ是多任务、可剥夺型的实时操作系统,其内核只有任务管理和任务调度,无文件系统、界面系统、外设管理等。常用的μC/OS-Ⅱ能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和移植简单等特点。

在F2812上应用μC/OS-Ⅱ,需要进行系统移植,移植的主要难点是编写任务切换函数。常用的任务切换函数是一个中断处理函数,该函数首先将要被挂起任务的CPU寄存器及程序返回地址推入任务栈,保存现场,然后将准备就绪的最高优先级任务寄存器值从任务栈中恢复到寄存器中,使其进入运行态。任务切换函数可以用F2812的陷阱中断TRAP指令触发调用。F2812 CPU有近20个寄存器,TRAP指令触发的中断及中断退出时会自动保存和恢复ST0,AL,AH,PL,PH,AR0,AR1,ST1,DP,IER,DBGSTAT寄存器和程序返回地址。按照任务切换的要求,还需手工保存和恢复RPC,AR1H,AR0H,XAR2~XAR7,XT,ST1寄存器。任务级的任务切换示意性代码如下:

_OSCtxSw:

将RPC,AR1H,AR0H,XAR2~XAR7,XT,ST1推入当前堆栈

OSTCBCur->OSTCBStkPtr=SP OSTCBCur=OSTCBHighRdy OSPrioCur=OSPrioHighRdy

}

(4)在新的cmd文件中设置需要在RAM中运行的程序段加载地址和运行地址的链接命令。

5 切换时间的比较

多任务切换及运行的缺点主要是需占用一定的存储器和CPU资源,为比较μC/OS-Ⅱ和DSP/BIOS在任务切换时所需的时间,对本软件一些切换时间进行了粗略的测试和估计。本系统CPU时钟为100MHz,测试结果为μC/OS-Ⅱ任务间切换时间约为2.4μs(程序在RAM中运行)或3.2μs(程序在Flash中运行);DSP/BIOS由硬件中断切换到软件中断3.97μs,软件中断切换到软件中断7.35μs,任务线程切换到软件中断10.03μs(DSP/BIOS内核在ROM中运行)。(下转第57页)

6 结论与建议

对所开发的实际系统进行了要求项目的功能和性能测试,测试结果表明系统功能及时域和频域性能指标均处在要求的范围内,由此认为,基于嵌入式操作系统开发的伺服系统软件可以满足系统的控制要求。

传统的前、后台软件开发方式完全可以满足伺服系统软件的开发且运行效率较高,但在操作系统下开发软件可以提高开发效率,特别是复杂的应用程序,将整个软件分解成多个任务线程分别开发时不必考虑其他任务线程的影响,符合软件工程的解耦原则。同时,软件的结构清晰,易于维护和管理。主要缺点是增加了额外的系统存储资源和CPU负荷。对F2812而言,由于DSP/BIOS不必移植,操作系统的API函数均作为库函数提供,因而具有高的可靠性,无特殊要求时应优先采用,当对实时性有较高要求时则可采用μC/OS-

Ⅱ。如DSP/BIOS的内核API函数也能在RAM中运行时,最好选择DSP/BIOS。

参考文献:

[1]吴永忠,程文娟,郑淑丽,等.嵌入式实时操作系统μC/OS-Ⅱ教程[M].西安:西安电子科技大学出版社,2007.

[2]LabrosseJJ.嵌入式实时操作系统μC/OS-Ⅱ[M].2版.邵贝贝,等译.北京:北京航空航天大学出版社,2003.

[3]彭启琮,管庆.DSP集成开发环境―CCS及DSP/BIOS的原理与应用[M].北京:电子工业出版社,2004.

[4]AlterMD.RunninganApplicationfromInternalFlash MemoryontheTMS320F28xxxDSP[M].TISPRA958H,2008.

[5]苏奎峰,吕强,常天庆,等.TMS320X281xDSP原理及C程序开发[M].北京:北京航空航天大学出版社,2008.

[6]曹磊范彩霞.基于DSP/BIOS的门禁系统设计与实现[J].计算机时代,2010(6):26-28.

上一篇:气道开放方法在儿科窒息护理抢救中的临床效果 下一篇:如城街道3718例新生儿出生体重相关因素分析