标题:
基于μC/OS-II嵌入式操作系统的TCSC实验控制器前置单元设计 02
[打印本页]
作者:
samwalton
时间:
2013-7-10 09:42
标题:
基于μC/OS-II嵌入式操作系统的TCSC实验控制器前置单元设计 02
软件设计
前置单元的软件要完成和上位机通讯、AD 采样和晶闸管触发3项功能。 其中AD采样速率很高、晶闸管触发实时性很强,所以这两项功能必须采用硬件定时器来保证其实时性,因此设计使用中断服务程序( Interrup t Service Routine, ISR ) 来完成这两项功能。USB驱动程序由开发板附带,通讯的功能主要通过μC /OS-Ⅱ中的任务来完成(当然, USB 中断处理也是必不可少的)。USB 任务和各ISR 之间的通讯通过μC /OS-Ⅱ的同步机制(信号量、消息队列)和全局变量来完成。 所有软件均是在ARM公司自己的开发环境ADS下实现的,ADS1。2有自己的C, C + +语言编译器及库文件,有GU I界面的调试器AXD和命令行界面的调试器armsd以及GU I界面的编辑器Code WarriorIDE,这为开发人员提供了极大的便利。 调试工具用的是JTAG仿真器, JTAG仿真器通过JTAG边界扫描口与
arm
CPU核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,是目前采用最多的一种调试方式。
嵌入式实时操作系统μC /OS-II介绍
对于复杂的应用,直接在裸机上开发运行的前后台系统开发、维护和扩展都很困难,嵌入式操作系统应运而生,其最大的特点就是处理多任务,而且在工控领域大多实时性要求较强,而μC /OS-II迎合了这些特点。μC /OS-II支持64个任务,每个任务的优先级必须是不同的,调度算法总是让处于就绪状态的最高优先级任务先执行, 并提供了信号量( Semaphore) 、邮箱(Mailbox)和消息队列(Message Queue)等多种通讯同步原语。每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态(Dormant) ,就绪态(Ready) 、运行态(Running) 、挂起态(Waiting)和被中断态( Interrup ted)。μC /OS-II中全部系统调用的执行时间是可确定,其系统调用的执行时间不依赖于应用任务的多少,这也是其实时性的表现。
中断服务程序( ISR)的设计
AD采样和晶闸管触发这两项功能由中断服务程序( ISR)来完成。根据μC /OS-Ⅱ要求, ISR开始时需调用OSIntEnter ( )函数通知μC /OS-Ⅱ系统进入了ISR,ISR结束时需调用OSIntExit ( )函数通知μC /OS-Ⅱ进行进程调度。
AD采样模块有3 个ISR,分别是: 定时器4 ISR(产生周期性的采样保持信号) ,定时器5 ISR (产生16μs的延迟,以符合S3C44B0X的多路选择器对切换时间的要求) ,AD ISR (读取AD采样结果,并进行相应的操作)。系统必须在两次Timer4中断之间完成6次AD采样工作。晶闸管触发模块有3组、每组2个ISR。每组的2个ISR分别为一个过零检测ISR和一个定时器ISR,共同控制一相的晶闸管触发。
μC /OS-II任务设计
前置单元通过PD IUSBD12 的Endpoint1 ( PacketSize = 16 B )接受上位机的命令,返回命令的执行状态,通过PD IUSBD12的Endpoint2 ( Packet Size = 64 B)返回AD 采样的结果。 这通过两个函数TaskUsbEp1RxDone和TaskUsbEp2SendData 可以实现, 同时通过TaskUsbSetupPacket函数来处理主机发来的请求。我们设置PD IUSBD12 的Endpoint1 ( Generic Endpoint) 工作在Interrup t 模式, Endpoint2 (Main Endpoint)工作在Bulk模式,则:
1) TaskUsbEp1RxDone
TaskUsbEp1RxDone为前置机接受上位机采样或置触发角的任务,其工作流程下所示。
先用OSSemPend ( )等待上位机发送命令,若上位机发来的COMM_START_AD命令,则:
若TOTAL _ SAMPLE _ TIMES! = 0, 则通过Endpoint1返回错误信息给上位机,否则置AD_BUFF_P =0, TOTAL _ SAMPLE _ TIMES =所需采样的周期数×100,开启Timer4 (采样保持定时器) ,通过Endpoint1返回成功信息给上位机。
若上位机发来的是COMM _SET_ANGLE命令则设置相应的X_ANGLE变量,能过Endpoint1返回成功信息给上位机。
2) TaskUsbEp2SendData
TaskUsbEp2SendData任务的工作次序为先等待AD ISR发送要求传送数据的消息,消息发出后,在等待上次USB传送结束,再通过Endpoint2发送缓冲区中的数据。
3) TaskUsbSetupPacket
TaskUsbSetupPacket任务工作次序为先等待SetupPacket事件,事件发生后再调用UsbControlHandler( )函数处理主机的请求。
软件整体结构
整体软件结构框图如图4所示(图中矩形框代表中断服务程序ISR,椭圆代表μC /OS-Ⅱ任务虚线框代表μC /OS-Ⅱ信号量或消息队列)。
结 论
实验结果表明,实际系统数据采集速度与设计时预期的结果基本一致,印证了现阶段结合数据采集、AD转换、数据传输及其它功能模块如过零检测、触发可控硅等诸多任务于一体的复杂系统,必须有功能强大的硬件资源平台做支撑;在多任务、实时性较强的场合,嵌入式实时操作系统是必不可少的;在数据传输方面,USB在速度方面的优势比传统的RS232更能满足TCSC实时控制的要求。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0