使开关器件导通;当电流或电压高于某一最大值时,使开关器件关断。导通和关断的时间以及通断周期都是不确定的。 构成直流斩波器的开关器件过去用得较多的是普通晶闸管和逆导晶闸管,它们本身没有自关断的能力,必须有附加的关断电路,增加了装置的体积和复杂性,增加了损耗,而且由它们组成的斩波器开关频率低,输出电流脉动较大,调速范围有限。自20世纪70年代以来,电力电子器件迅速发展,研制并生产了多种既能控制其导通又能控制其关断的全控型器件,如门极可关断晶闸管(GTO)、电力电子晶体管(GTR)、电力场效应管(P-MOSFET)、绝缘栅双极型晶体管(IGBT)等,这些全控型器件性能优良,由它们构成的脉宽调制直流调速系统(简称PWM调速系统)近年来在中小功率直流传动中得到了迅猛的发展,与V-M调速相比,PWM调速系统有以下优点:
①采用全控型器件的PWM调速系统,其脉宽调制电路的开关频率高,一般在几kHz,因此系统的频带宽,响应速度快,动态抗扰能力强。
②由于开关频率高,仅靠电动机电枢电感的滤波作用就可以获得脉动很小的直流电
流,电枢电流容易连续,系统的低速性能好,稳速精度高,调速范围宽,同时电动机的损耗和发热都较小。
③PWM系统中,主回路的电力电子器件工作在开关状态,损耗小,装置效率高,而且对交流电网的影响小,没有晶闸管整流器对电网的"污染",功率因数高,效率高。
④主电路所需的功率元件少,线路简单,控制方便。所以本文采用脉冲宽度调制的方法来调试电机的速度。
脉宽调速系统的主要电路采用脉宽调制式变换器,简称PWM变换器。PWM变换器有不可逆和可逆两类,可逆变换器又有双极式、单极式和受限单极式等多种电路, 本文采用不可逆PWM变换器,其原理简单容易实现[19]。
第三章 GUI设计
3.1 主界面
上位机界面主要完成PID试调、速度给定、速度显示、曲线显示等功能。可实现的软件有VC、Delphi、VB、CAI、Labview。本文是用Visual C++6.0来完成上位机界面的设计;如图3.1所示:
图3.1 电机转速控制界面图
Visual C++6.0作为可视化编程软件具有独特优势。是目前综合性最高、最强大,也是最为复杂的Windows 应用程序开发软件。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
首先,要了解VC++6.0则必须先了解C/C++语言。在计算机领域,C/C++语言相信一定无人不知、无人不晓。C语言最初主要用于unix系统,大多数unix系统的程序都是用C编写的。借助早期unix系统的流行和C本身的优秀品质,C语言从此名扬天下、威震四方。而后,伴随着面向对象概念的提出和应用,形成了C++语言,AT&T公司于1985年正式推出了C++1.0版,它是c语言面向对象的扩充。C++1.0增加了类和实例、单继承、重载、虚函数、友员、内联等面向对象的程序设计机制。1989年推出的C++2.0版和1993年推出的C++3.0版分别增加了支持多继承、保护接口、模板和异常等。C++被公认为"最好的面向对象的编程语言,是学习面向对象编程技术人员较好的启蒙语言。
Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境[17]。
VC++是微软公司开发的C++语言开发环境,VC的特点是微软公司做了一个自己独有的类库MFC,里面封装了绝大多数的API函数,使得WINDOWS程序的开发变的高效和易于理解,如果用API直接开发WINDOWS程序的话,将会是一件非常烦琐的工作,WINDOWS对资源的管理是非常严格的这与DOS可直接用中断处理程序和I/O指令操作硬件端口是截然相反的;所以这个MFC就是VC和其他公司出产的编译器的最大区别了,当然了别的公司也有自己封装API的类库比如DELPHI等,不过由于微软公司掌握着WINDOWS内核的全部秘密,所以他们的编译器与其他公司的相比有其独到的优势。
主界面控件参数设置首先打开VC++6.0集成开发环境,选择菜单项File/New,在出现的对话框中选中Projects标签中的MFC AppWizard(exe),然后在Project Name框中填入MyCOMM(可根据需要命名),之后点OK按钮。在接着出现的对话框中选中Dialog Based项,然后点NEXT按钮。以下的各对话框都按照缺省设置,这样即可生成一个基于对话框的应用程序。在资源编程器中会出现其对话框模板。在对话框中添加相应应用的控件,再对参数进行属性设置,如设置ID,设置后的界面如图3.2所示:
图3.2伺服电机控制界面图
3.2 实时曲线
在伺服电机转速控制过程中,需要采集电机的实际转速,并实时显示到控制界面上,这样可以轻松的观察的速度曲线的实时变化。实现的方法为在工程中添加曲线资源,然后自Dlg中添加代码:
GetDlgItem(IDC_OSCOPE)->GetWindowRect(rect) ;
ScreenToClient(rect) ; //适应picture控件的大小
创建画图工具
m_quxian.Create(WS_VISIBLE | WS_CHILD, rect, this) ;
初始化画图工具
m_quxian.SetRange(0, 200, 0) ; //设置纵坐标以及小数位数
m_quxian.SetYUnits("电机转速(转/秒)") ; //设置y轴标题
m_quxian.SetXUnits("时间轴") ; //设置x轴标题
m_quxian.SetBackgroundColor(RGB(0, 0, 64)) ; //背景色
m_quxian.SetGridColor(RGB(192, 192, 255)) ; //坐标颜色
m_quxian.SetPlotColor(RGB(255, 255, 255)) ; // 曲线颜色
当串口调通后可以收发数据时,便可以接收下位机的速度给定时,可以实时显示速度曲线,如图3.3所示。
图3.3速度曲线显示图
3.3 按钮图标的实现
按钮图标是通过CButtonST这个类实现的,CButtonST是目前最强大功能最全的CButton派生类,CButtonST类主要包括BtnST.h、BtnST.cpp、BCMenu.h和BCMenu.cpp四个文件,在VC++的Workspace -> FileView中导入以上的四个文件之后,然后在SdtAfx.h文件中添加合适的include语句,如#include "BtnST.h"。
下面介绍应用CButtonST可实现下面6种效果;
(1)在按钮上加入Icon,使Icon和文字同时显示;
假设按钮ID为IDC_BUTTON1;
①添加成员变量 CButtonST m_btn;
②添加Icon资源,设其ID设为IDI_ICON1;
③在OnInitDialog函数中初始化按钮;
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetFlat(FALSE); 根据Icon的大小调整按钮的大小。
(2)显示平面按钮;
只需要在效果一的基础上把m_btn.SetFlat(FALSE);语句去掉。
(3)使按钮上的图标可变;
假设按钮ID为IDC_BUTTON1;
① 添加成员变量CButtonST m_btn;
② 添加两个Icon资源,ID设为IDI_ICON1和IDI_ICON2;
IDI_ICON1是普通状态的图标,IDI_ICON2是按下时的图标;
③ 在OnInitDialog函数中初始化按钮;
m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON2,IDI_ICON1);
(4)设置按钮在不同状态下的底色和文字颜色;
假设按钮ID为IDC_BUTTON1;
① 添加成员变量 CButtonST m_btn;
② 添加Icon资源,设其ID设为IDI_ICON1;
③ 在OnInitDialog函数中初始化按钮;
m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(I
上一篇:
酒店预订系统设计与实现毕业论文(2003doc)