首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于DSP+μC/OS-Ⅱ的励磁系统的研究 01

基于DSP+μC/OS-Ⅱ的励磁系统的研究 01

同步电动机的磁场采用直流励磁,功率因数可以超前、滞后或单位功率因数,运行中可以向电网馈送无功功率,改善电网功率因数,并且具有运行稳定性好、转速不随负载变化而改变和运行效率高等特点,因此在煤矿等工业现场应用广泛。而同步电动机励磁对于同步电动机的运行起到重要作用,传统励磁系统采用晶闸管移相全桥电路实现励磁。该励磁系统需要用到同步变压器定相,涉及器件较多,维护复杂,影响了励磁系统的安全运行,而且传统的嵌入式设计在软件管理上采用单任务的顺序机制,系统稳定性实时性差。 本文提出采用美国德州仪器公司(TI)的数字信号处理器芯片TMS320LF2812作为控制核心,将实时操作系统DSP+μC/OS-Ⅱ,应用于DSP的程序设计中,以次级有源钳位开关的零电压零电流开关(ZVZCS)DC/DC移相变换全桥电路为主电路,将系统的多个核心任务由DSP+μC/OS-Ⅱ进行调度并行执行,完成3种形式励磁电流的闭环控制,为同步机励磁系统嵌入式设计提供一个理想的设计方案。
1 总体结构
励磁系统总体结构框图如1所示。包括零电压零电流开关(ZVZCS)DC/DC移相变换全桥电路、驱动电路、灭磁电路、励磁电压、电流调理电路、DSP控制电路、键盘及显示电路、跳闸保护电路等。
三相交流电源经接触器加到三相整流模块变为直流。直流主回路供电加入400 ms的软启动,以防高的电压冲击,Ci为输入滤波电容,并起到提高功率因数的作用。主电路软启动接通后,DSP根据键盘设定的一种调节方式,在接受到起励指令后,输出规定励磁电压,通过DSP对励磁参数测量实现励磁电流的闭环控制。保护电路中设计输入过压、欠压保护、过流保护和过热保护。
2 主电路工作原理
图2为ZVZCS变换器的主电路图,并联电容C1,C2和变压器的漏感Lk一起实现超前臂开关管VQ1,VQ2的ZVS。通过控制有源钳位开关VQC来实现滞后臂开关管VQ3,VQ4的ZCS。
图3为ZVZCS变换器的一个开关周期的主要工作波形。VQ1和VQ2在C1,C2和Lk作用下实现ZVS。T1时刻,变压器的初级电压Vab下降为零,此时使VQC导通,使钳位电容上电压Vcc反射到初级的Lk上,与因电流减小而产生的电动势的方向正好相反,因此,使初级电流ILk迅速减小到零,而且由于串入VD1,VD2使变压器初级续流时不会在反方向形成环流,从而使滞后臂开关管VQ3,VQ4实现零电流导通和关断。
3 驱动信号的实现
驱动信号生成可通过DSP的事件管理模块EVA或EVB产生。PWM信号4路驱动信号占空比均设置为50%;2组桥臂之间有相位差,相位超前的信号作为超前桥臂信号,相位滞后的信号作为滞后桥臂驱动信号,利用超前桥臂和滞后桥臂的相移来调节占空比。设置定时器为连续增减计数模式,在定时器下溢中断和周期中断时分别设置比较寄存器的值,同时保证同一个比较寄存器在定时器下溢中断和周期中断设置参数之和等于周期寄存器的值T,这样就可以使产生的PWM脉冲为50%的占空比。设系统调节所得移相角对应比较寄存器的值为x(整数),周期寄存器的值为T。设置其中一个比较寄存器在下溢中断时赋值为0,在周期中断时赋值为T;另一个比较寄存器在下溢中断时赋值为x,在周期中断时赋值为T-x,如图4所示。可以看出,第一个寄存器的相位相对超前第二个寄存器180°x/T。其中一组驱动信号在计数寄存器为0时产生驱动信号,另一组驱动信号在0~T之间相对移动。所对应寄存器的取值范围较大,移相范围是0~180°如图4所示。
4 控制策略
同步电动机正常运行时,由DSP完成对励磁电压和励磁电流的采样,在中断程序中完成电压和电流的双闭环PID调节实现恒流励磁;系统可以在起动前通过键盘设定选择系统进入同步电动机的功率因数调节还是恒无功功率运行,系统监视任务将调度不同的任务,控制框图如图5所示。
5 系统软件
为了将μC/OS-Ⅱ实时操作系统应用于系统,必须先移植操作系统到数字信号处理器中,移植工作主要有以下几个部分:
(1)在OS-CPU.H中,定义数据类型,开关中断函数已屏蔽编译器和处理器;定义堆栈的增长方向;定义任务切换函数。
(2)在OS-CPU.C中,用C嵌入汇编编写以下几个函数:OStaskstkInit(),OSCtxSw(),OSStartHighRdy(),OSIntCtxSw(),OSTicksr(),OSTaskCreateHook(),OSTaskSwHook(),OSTaskDelHook(),OSTaskstatHook(),OSTimeTickHook()。任务的全部信息保存在响应的任务块和堆栈中,
返回列表