电子说
为了提高数据采集系统的实时性与可靠性,采用μC/OS-II实时操作系统平台,并在此平台上开发了USB设备驱动程序、模拟量幅值与相位计算等程序。
μC/OS-II是一种可移植、可裁减、占先式的实时多任务操作系统。其绝大部分代码是用ANSI C编写的,只有小部分与硬件相关的代码是用汇编语言编写的,易于移植。μC/OS-II功能强大,支持56个用户仟务,支持信号量、消息邮箱、消息队列等多种常用的进程间通信机制,可剥夺实时内核使得任务级系统响应时间得到最优,而响应时间是可知的,很适合于对实时性要求比较高的系统。现已成功应用到很多领域,其稳定性与可靠性已经得到检验。2000年7月,μC/OS-II通过非常严格的测试,取得了美国航空管理局(FAA)的认证,说明它可用于与人性命攸关的安全重要系统。
TMS320LF2407满足μC/OS-II移植的条件,TI公司提供的编译器Code Composer也支持C语言和汇编语言开发,本文在此平台七进行操作系统移植和软件开发。μC/OS-II操作系统的组成义件分为3类:与处理器无关的代码文件;与处理器有关的代码文件,以及μC/OS-II与应用相关的设置文件。当然,移植工作完成后编写应用程序,还应包括应用文件。移植所需要做的工作仅仅是修改部分与处理器有关的文件。这类文件包括:OS_CPU.H、0S_CPU_A.ASM、OS_CPU_C.C三个文件。
在本应用中,笔者建立了7个应用任务,优先级分别为4、5、6、7、8、9、1O;同时为每个任务分配了一个消息邮箱,使用基于消息邮箱事件的通信机制进行任务间通信与任务切换。整个软件的基本结构如图2所示。
任务AD_Task():DSP(N0.1)采样电压、电流信号。分配邮箱:pAd_Mbox。
任务DFT_Task():DSP(No.1)进行相量递归DFT计算。分配邮箱:pDFT_Mbox。
任务SPI_Task():DSP(No.1)通过SPI总线向DSP(No.2)发送相量数据和有功、无功信息。分配邮箱:pSPI_Mbox。
任务USB_Task():DSP(No.2)通过USB总线向上位机传送相量数据和有功、无功信息。分配邮箱:pUSB_Mbox。
任务CAN_Task():DSP(No.2)通过CAN总线在工业以太网传送相量数据和有功、无功信息。分配邮箱:pCAN_Mbox。
任务GPS_Task():DSP(No.2)配合GPS的秒脉冲实现高精度授时功能并启动A/D转换。分配邮箱:pGPS_Mbox。
任务LCD_Task():DSP(No.2)通过液晶模块实时显示信息。分配邮箱:pLCD_Mbox。
由上节对堆栈的分析可知,任务栈最少需要25个地址。笔者为每个任务分配了100个地址(200字节)的任务栈空间。使用函数OSTaskCreate()创建各任务。该函数的第三个参数为栈顶地址.为OSTaskStkInit()所调用。要注意,2407A的堆栈是递增的,故应传递任务栈的最低地址;而又由于任务程序是采用C语言编写的,编译器对ARl的偏移范围可能会超过任务栈栈顶。虽然在这种情况下ARl是可恢复的,但仍可能会影响最低地址之前的地址内容。所以笔者建议对其进行适当后移。
幅值与相角计算程序得到采样数据后,利用离散傅里叶算法(DFT),可分别计算出每路电压、电流信号的幅值与相位,生成相量形式的电压与电流数据。
结语
本文设计的PMU,硬件上采用了嵌入式微处理器DSP的双CPU结构,软件上采用μC/OS-II操作系统。通过μC/OS-II管理各个功能模块之间的任务调度、中断处理、信息的交互等操作,使整个系统具有高实时性、高可靠性、可热插拔等特点;同时也提高了软件开发的效率,缩短了开发周期。同步相量测量单元的研制是一个复杂的课题,其实现还存在很多难点。本设计只涉及其中一部分,许多通信环节及同步相量的高级应用问题还需在令后的工作中进一步完善和提高。
责任编辑:lq6
全部0条评论
快来发表一下你的评论吧 !