慧聪网首页 > 电气行业 > 新品评测 > 变频器
行业搜索
μC/OS-Ⅱ变频器变结构控制系统设计
2006年2月16日 14:1  

  摘要:介绍了抽油电机变频器变结构控制系统功能原理,如何利用μC/OS-II的多任务功能实现控制系统的算法结构变换,操作系统的移植、多任务的建立和SDK下的软件设计;最后总结了在应用中需注意的问题。
 
  关键词:μC/OS-Ⅱ 多任务 DSP56P803 变结构控制
 
  在油田生产中为了节省电能并减小故障率,变频器得到越来越多的应用。但由于油井负载的非周期大脉动性质,从能量的流向来看,变频器有两种运行状态——电动运行和回馈制动。不同运行状态的控制变量和控制方法是不同的,这就要采用所谓的变结构控制。本应用是实现抽油电机变频驱动中的变结构控制,不同的控制结构通过任务间的切换实现。
系统控制核心采用DSP56F803,它是Motorola公司推出的16位DSP型微控制器,运算速度可达40MIPS,片内资源丰富,有强大的软件支持,是嵌入式应用的理想选择。本系统应用了其SPI、SCI、PWM、键盘中断及通用I/O口等功能模块。
 
1 系统设计
1.1 μC/OS-Ⅱ的移植与配置
    Motorola公司提供的软件开发工具SDK为使用μC/OS-Ⅱ做好了铺垫工作,与硬件相关的文件OS_CPU.H、OS_CPU_A.SM和OS_CPU_C.C已经给出,只需购得系统源代码,然后将其考入指定的文件目录,系统的移植就完成了。本文采用最新版本μC/OS-ⅡV2.51。

    系统移植成功后,需要对操作系统进行配置(裁剪),把用不到的功能去掉,以最大限度地节省存储空间。这项工作是通过os_cfg.h中的宏定义进行的,本文只用到了多任务管理、信号量、互斥量等功能。在本应用中,μC/OS-Ⅱ内核经过剪裁后只有3KB左右,相对DSP56F803的32KB内部程序Flash只用了不到十分之一。需注意的另一个关键设置是时钟节拍中断频率Os_TICKS_PER_SEC,它是系统多任务运行所依赖的时间基准,也决定了任务重复调用的最快频率。这里缺省设为1000,要比文献[3]中的推荐值高出一个数量级。但实际应用表明,DSP56F803以其高运算速度在这个设置下是完全胜任的。

1.2 系统功能
   根据油田生产的要求,系统要实现以下功能:键盘输入、参数显示、三相电流采集、直流侧电压采集、温度采集、变频指令输出以及保护等。系统对电流、电压、温度进行周期性采样,采样值经过数字信号处理,作为控制器的参数,最后由控制算法得出控制量,经PWM和D/A转换器发送给变频器,形成反馈闭环控制。系统运行过程中实时显示电流、温度等参数,并可以通过键盘对控制器进行参数在线设定。另外,高温、过流等保护功能必不可少。系统原理如图1。控制器根据直流侧电容C上电压的大小来确定以哪一种控制结构运行。当直流侧电压不超过设定值时,系统以电动状态运行。超过设定值时要以回馈制动方式运行,要求两种工作状态要互锁,切换要准确、及时。
 
1.3 任务的创建及变结构控制的实现

    根据功能要求,本着尽量减少任务数以减轻CPU运行负担的原则,本文设计了AD采集、电动运行、回馈制动和显示四个任务。另外还设计了两个中断服务子程序:用PortA口的中断功能实现8个键盘输入,用外部中断IrqA实现短路、过流、缺相保护功能。

    每个任务都有自己的名称、内存空间和优先级。不同的任务必须有不同的优先级,它们可以是0~62之间的任意值,数值越小优先级越高。优先级的设置有不同的依据,以本文为例,回馈运行任务对时间要求最苛刻,如果不能及时启动或过早结束都会对变频器造成危害,所以其优先级设为最高;AD采集任务运行最频繁,必须为其它任务提供可靠的参数,优先级设为次高;电动运行任务是常规运行状态,优先级低于AD采集任务;显示任务只实现人机交互,显示状态和参数对控制器性能没有直接影响,优先级设为最低。μC/OS-Ⅱ要求为每个任务分配OS_STK类型的堆栈空间,并且它们占用的RAM存储空间必须是连续的。

    任务延时是指任务执行完毕处于挂起等待状态到下一次重新运行之间的时间间隔,它的单位是时钟中断节拍。由于OS_TICKS_PER_SEC为1000,每一拍为lms。每个任务的调用间隔不能小于一个节拍,它将影响模拟量的采样频率。

各个任务的属性定义如表1所示。

表1 各个任务的属性定义

任务名称 优先级 内存空间(字) 延时(节拍)任务功能
Task_FEBACK 12 80 1 回馈运行
Task_AD 13 120 1 AD采集
Task_NORAML 14 80 2 电动运行
Task_SHOW 15 100 5 实时显示

1.4 任务间的通信

    各个任务是通过抢占CPU的使用权来运行的,它们之间存在一定的逻辑关系,彼此互相联系又互相制约。信号量、邮箱、消息队列等功能为实现任务间通信提供了有力工具,它们的使用方法灵活多变,如用信号量设置事件标志,唤醒任务、用邮箱在任务间传递参数、用消息队列的循环寻址功能进行模拟通道的数据采集等。本文设计了两个信号量,在系统运行开始后,任务TASK_AD检测直流侧电压的大小。当电压未超过设定值时,发出信号DC_NORM唤醒任务Task_NORMAL;当电压高出设定值时,发出信号DC_OVER唤醒任务Task_FEBACK。虽然这两个任务基于不同的控制结构,采用不同的算法,但都要使用PWM输出和SPI通信口,所以在唤醒一个任务的同时必须让另外一个任务挂起。这里引入了互斥型信号量T_MUTEX实现这个功能。得到T_MUTEX信号的任务将独自占有共享资源的使用权,两个任务不会因资源冲突而同时挂起,解决了任务间优先级反转问题,避免了系统功能失效。任务间逻辑关系如图2所示。

  操作系统为任务间通信提供了多种途径,但最简单有效的方法是共享全局变量。本文使用共享全局变量的方法实现了显示任务与键盘中断服务之间的通信,代码如下:

键盘中断:

static void KeyboardISR(void)
{
UWoMl6 cpu_sr;
OS_ENTER_CRITICAL();//临界区代码保护
asm{
move X:$0FB7,A1 //读键盘中断状态表
move A1,state1 //将中断状态放入全局变量
};
OS_EXIT_CRITICAL(); //临界区代码保护结束

这里statel是全局变量,键盘中断的工作仅仅是将PORTA口中断状态寄存器(IESR,地址$0FB8) 读入statel中。为防止其他任务在此期间对statel的修改,使用了临界区代码保护。
   显示任务的部分代码:
switch(statel)
{case 1: //PTA_0对应的键被按下
…… //相应的服务程序,略
case 128: //PTA_7对应的键被按下
break;}
asm{move$00,X:$OFB8}; //清键盘中断状态,以备下次中断显示任务中采用多分支结构,根据statel=2n,(n=0,1,2,3,,4,5,6,7),不同的值代表不同的键被按下,程序进行相应的处理;最后将IESR寄存器清零。用同样的方法,两位之间互相组合可扩展形成16个按键。这样只用一个全局变量就完成了中断与任务间的通信,程序用内嵌汇编的C来写,简捷高效。

[1] [2] 下一页 
 
 [热门关键词]:变频器 μC/OS-Ⅱ  发表评论    【推荐】 【打印】 【论坛

相关文章 更多 
·高压绿色变频器应运而生  (2.27 10:6)
·通用变频器应用的常见错误与对策  (2.16 14:2)
·环保型绿色高压变频器特点介绍  (2.16 14:1)
·SANCH新型注塑机节能变频器  (2.16 14:1)
·ABB最新紧凑型全集成设计中压变频器ACS1000i  (2.16 14:1)
·最新传动装置-阿尔斯通MV7000型中压变频器的剖析  (2.16 14:1)
·塑料机械应用变频器能大大节省能源  (2.16 13:59)
·直线电机抽油机专用变频器应用  (1.22 15:9)
·我国变频器的应用范围及其市场分析  (1.22 15:1)
我来评两句〖查看最新评论〗 
请您注意:
·遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而导致的法律责任
·本网留言板管理人员有权删除其管辖留言内容
·您在本网的留言,本网有权在网站内转载或引用
·参与本留言即表明您已经阅读并接受上述条款
昵称:匿名

文字广告
热点推荐

聚集:开关面板业的马太效应
论住宅漏电保护环节的设计
西电“吞下”常州变压器厂
世界最长海底电缆正式投运
国产品牌变频器市场占有低
热点专题
产经要闻-hc360慧聪网电线电缆行业市场及技术动态
产经要闻-hc360慧聪网质疑:节电产品是否节电?
热销产品

高效节电产品系列

小型变频器系列