基于Visual C++环境的变频器联网控制

发布者:真诚友谊最新更新时间:2010-12-26 关键字:串口通信  变频器  关系数据库  远程控制 手机看文章 扫描二维码
随时随地手机看文章

  引言

  变频器是工业自动化系统中的基本拖动设备,通常用于控制交流电机的转速和转向。如果变频器的工作现场环境比较恶劣,不适合于人在现场对变频器进行控制,那么就需要对变频器进行远程的联网控制。

  1 基本组成

  将变频器的RS485串口通过RS232/485转换器连接到计算机的串口组成网络,这个网络系统主要由三部分组成。

  第一部分是变频器的网络功能部分,包括硬件和软件两部分。硬件部分是变频器控制板上CPU的串口经过RS485转换芯片(如MAX485)对外形成的一个RS485接口,通过这个接口可以将变频器接进控制网络。软件部分是变频器的通信程序。通过这个通信程序可使变频器在接收到计算机的下达指令后,根据指令做出相应的应答和动作。变频器上的通信程序主要包括串口初始化程序、命令读取和发送程序、命令判断程序及命令集。

  第二部分是计算机控制程序。这个程序有人机对话功能,对变频器的状态可以进行远程监视与控制,对变频器的参数能进行修改。总之,人在现场可以对变频器进行的操作在这个控制软件上都应该可以实现。

  第三部分是通信协议。这是计算机与变频器之间进行通信的依据。变频器的通信软件和计算机的控制软件都是按照这个通信协议所规定的信息格式进行编写的。

  由这三部分构成的变频器远程控制网络就可以完成所希望的变频器远程控制功能。变频器远程控制网络组态图如图1所示。

基于VC环境的变频器联网控制

  2 在VC环境下编写计算机控制软件

  用VC编写的计算机控制软件的主界面选用单文本界面,并且带Windows浏览窗口,界面的基类选用CFormView类。主界面显示了所控制的网络中变频器的构成及地址。各个变频器的详细信息显示选用了CpropertyPage类作对话框。CpropertyPage类是从Cobjec类一路继承发展而来,可以被看作是标签对话框。控制软件为各个变频器显示了两个方面的详细信息:一个是变频器的功能码信息,另一个是变频器的远程控制和当前状态。这两方面信息的显示每个都是用CpropertyPage类对话框。对于变频器的功能码显示,由于变频器的功能码由很多组构成,而且显示要求分组进行,所以应用Tab控件来进行分组选择切换。对于变频器的远程控制和当前状态界面我们调用了一些Text、Edit和Button控件。这些控件通过消息〔如BN_CLICKED,UpdateData(TRUE)等信息〕与相应的子程序相关联。一旦我们对变频器进行控制动作或程序收到变频器的反馈信息,界面就会有相应的变化。整个控制软件的程序流程如图2所示。

  从流程图上可以看出控制软件要求能不断地得到联网变频器的状态,这就要求控制软件不停地下发变频器的状态查询指令。这个功能通过在程序里设定了一个计时器SetTimer(1,10000,NULL)完成。定时器使控制软件每10s对变频器进行一次状态查询,检查变频器是否在线。如果在线就会反映这个变频器当前的各种状态,如果不在线会有相应的提示信息显示。计算机与变频器组网时软件的主界面图如图3所示。

  控制软件界面上显示的网络信息和各个变频器的参数信息都要配合相应的数据库才能完成。而对于网络中各个变频器状态信息的获得则要通过计算机串口上传至现场的变频器运行数据实现。下面就分别介绍控制软件是如何对数据库和计算机串口进行操作的。

  3 应用DAO技术操作数据库

  数据库是现代计算机应用的一个重要组成部分,是人们有效地进行数据存储、共享和处理的工具。有两种主要的数据库类型,即平面数据库和关系数据库。简而言之,平面数据库是一组记录的集合,数据库中的每一个记录都是由字段构成的,第一个字段则包含了与本条记录相关的特定信息。关系数据库就像是由若干个平面数据库连接在一起形成的。采用关系数据库能够建立一个记录集合与另一个记录集合之间的关系。在关系数据库中,每一个记录集合称为一张表,表之间的连接是通过关键字实现的,关键字用来确定一条记录的值。

  这个控制软件的数据库使用的是平面数据库。数据库中存储了变频器网络的信息和网络中各个变频器的参数。数据库用Access建立,应用DAO作为数据库的访问接口。MicrosoftJet为像Access和VisualBasic这样的产品提供了数据引擎。DAO是使用MicrosoftJet数据库引擎来访问数据库的。VisualC++6.0提供了对DAO的封装,MFCDAO类封装了DAO的大部分功能,从而使VC程序可以使用MFCDAO类方便地进行数据库访问。

基于VC环境的变频器联网控制

  下面具体叙述是如何利用数据库完成软件的网络控制功能。首先用Access建立变频器网络的信息表,然后程序中建立一个基类为CdaoRecordset(DAO中封装的一个类)的类Cdata,该类与数据库中的变频器网络信息表相联系。当要在网络中添加一个变频器时,不仅要在变频器网络信息表上进行添加数据操作,还要在数据库中添加一个关于该变频器功能码的新表。对变频器网络信息表的添加操作用了一个CdaoRecordset类数据库指针m_leftptr。CdaoRecordset类是对DAO记录集对象的封装,代表从数据源中选择的一种记录,管理数据库中表里记录的操作。而要在数据库中添加一个新增变频器功能码的新表,需要设定一个CdaoDatabase类的变量。CdaoDatabase类是对DAO数据库对象的封装,它代表了一个数据库连接,管理数据库的操作和数据库中表的操作。下面是网络中添加一个变频器时对数据库的操作程序。

CComzDoc*pDoc=(CComzDoc*)GetDocument();
m_leftptr=&pDoc->m_Docptr;
CAddNodeDlgm_addnode;
if(m_addnode.DoModal()==IDOK)
{
m_leftptr->Open();
m_leftptr->AddNew();
m_leftptr->m_NodeAddress=
m_addnode.m_adddress;
m_leftptr->m_NodeName=
m_addnode.m_addnodename;
m_leftptr->m_NodeOrderCalled=
m_addnode.m_comturn;
m_leftptr->Update();
m_leftptr->Close();
CDaoDatabasem_pDatabase;
m_pDatabase.Open("ConverterPc
97.mdb");
CDaoTableDeftable(&m_pDatabase);
table.Create(m_addnode.m_addnodename);
table.CreateField("AutoIndex",dbInteger,2);
table.CreateField("ParaGroup",dbText,10);
table.CreateField("ParaNo",dbInteger,2);
table.CreateField("ParaName",dbText,100);
table.CreateField("ParaDefaultVal",dbInteger,2);
table.CreateField("ParaCoefficient",dbInteger,2);
table.CreateField("ParaDW",dbText,10);
table.CreateField("ParaModif",dbInteger,2);
table.CreateField("ParaMemo",dbText,255);
table.Append();
m_pDatabase.Close();
}

  添加完成后,该变频器如果在线就完成初始化数据库命令,初始化变频器的功能码。在软件上显示变频器功能码数据库如图4所示。

  对控制软件的数据库中表的删除及表中记录的删除和更新操作所采用的DAO类是一样的,只是使用的指令不同,这里就不再赘述。变频器功能码表中的具体数据,要通过串口通信从相应的变频器中获得,这就要用到VC对计算机串口编程。

基于VC环境的变频器联网控制

[page]

  4 计算机串口通讯编程

  对于VC的计算机串口通信编程可以用多种方法实现。MSComm控件通过串行端口传输和接收数据,因此,可在编写计算机串口通信程序时使用MSComm控件。MSComm控件使用时比较方便,只要完成简单的串口初始化设置,然后调用相应的读写函数即可完成计算机串口通信操作。但是,使用MSComm控件在设置通信参数时是成批进行的,即数据传输速率、奇偶校验、数据位数和停止位数是作为一个参数进行设置的。这样使通信参数的设置和修改不太灵活自如,因此,不采用MSComm控件进行串行通信编程。利用Windows通信API函数进行串口通信编程可以非常灵活地进行串口参数的配置,但编程非常复杂,专业化程度较高,因此也没有采用。利用VC的标准通信函数inp,inpw,inpd,outp,outpw,outpd等直接对串口进行操作编程需要对硬件电路的结构原理非常了解,但这里并不需要对计算机的串口电路非常了解,因此同样没有采用。最终程序中应用的是第三方编写的串行通信Cserial类。下面对CSerial类进行解释。

  CSerial::CSerial是类构造函数,不带参数,负责初始化所有类成员变量。

  CSerial::Open是打开通信端口的成员函数,带两个参数,一个是串行端口号,另一个是波特率。

  CSerial::Close是关闭通信端口的成员函数。类析构函数调用这个函数,因此可不用显式调用这个函数。

  CSerial::SendData函数把数据从一个缓冲区写到串行端口。它所带的第一个参数是缓冲区指针,其中包含要被发送的资料。这个函数返回一些到端口的实际字节数。

  CSerial::ReadDataWaiting函数返回等待在通信端口缓冲区中的数据,不带参数。

  CSerial::ReadData函数从端口接收缓冲区读入数据。第一个参数是缓冲区指针,第二个参数是个整数值,给出缓冲区的大小。

  将CSerial.cpp和CSerial.h添加入源程序,在串口通信程序部分调用CSerial类的函数,可以很方便地完成通信功能。下面是在程序中用CSerial类编写通信程序,完成的功能是按既定的通信协议向变频器网络下传查询指令,并接收从站返回的信息。如果连发三次都没有接收到变频器的应答信息就显示变频器为离线状态。

CSerialSerial;
inti;
CStringm_mes;
Unsignedcharsend[14]={0x02,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x80,0x00,0x00,0x00};
for(i=1;i<=m_slname;i++)
{
send[2]=i;
unsignedcharu=send[0];
for(intl=1;l<13;l++)
{u=u^send[l];
}
send[13]=u;
showaf=send[10];
if(Serial.Open(m_port,m_baudrate))
{
Serial.SendData(send,14);
}
Sleep(200);
if(Serial.ReadDataWaiting())
{
Serial.ReadData(recieve,14);
}
else
{
Serial.SendData(send,14);
Sleep(200);
if(Serial.ReadDataWaiting())
{
Serial.ReadData(recieve,14);
}
else
{
Serial.SendData(send,14);
Sleep(200);
if(Serial.ReadDataWaiting())
{
Serial.ReadData(recieve,14);
}
else
{
m_mes.Format("%disoffline",i);
m_recc.InsertString(-1,m_mes);
}
}
}

基于VC环境的变频器联网控制

  在与变频器的通信中要求计算机的串口号和通信速率是可变的。Open函数的两个参数就是计算机的串口号和通信速率,在调用该函数初始化串口时,将这两个参数按所希望的数赋值就可以正常通信了。如果要修改这两个参数,只要将修改值赋给这两个参数的变量,再调用一次Open函数从新初始化计算机串口即可。在Open函数中仅初始化了串口号、通信速率和8位数据位这三个参数,其它参数采用上一次串口初始化形成的参数数据。但是,在通信中还要求传送的数据为二进制数据、偶校验和有1位停止位,这就要求对Open函数进行修改。对Open函数的修改主要是对其中设备控制快(DCB)的修改。只要将旧的DCB结构改写为以下结构即可。

GetCommState(m_hIDComDev,&dcb);
dcb.BaudRate=nBaud;
dcb.ByteSize=8;
dcb.fParity=1;
dcb.fBinary=1;
dcb.Parity=EVENPARITY;
dcb.StopBits=ONESTOPBIT;

  经过上述修改后,用Open函数初始化的串口就符合传送二进制数、偶校验、8位数据位、1位停止位和波特率及端口可变的要求,计算机可以和变频器进行正常的通信了。

  5 组网实验

  远程控制软件完成后进行组网实验。网络上用一台计算机连接两台变频器,对其中一台变频器执行正转起动到30Hz的控制命令,软件控制界面显示如图5所示。

基于VC环境的变频器联网控制

  6 结语

  本文主要介绍了实现变频器远程网络控制的计算机控制软件如何编写。从软件的功能框架,数据库的操作和计算机串口通信3个方面进行了阐述,详细说明了在VC环境下来编写合乎我们要求的控制软件的方法,具有一定的实际参考价值。

关键字:串口通信  变频器  关系数据库  远程控制 引用地址:基于Visual C++环境的变频器联网控制

上一篇:利用双电机控制技术简化高能效电器设计
下一篇:虚拟原型技术与机电一体化技术的结合

推荐阅读最新更新时间:2024-03-30 21:33

51单片机教程(三):单片机串口通信实例
简介:上讲介绍并应用了单片机内部定时器和中断,并给出了实例。这一讲将介绍单片机上的串口通信。通过该讲,读者可以掌握单片机上串口的工作原理和如何通过程序来对串口进行设置,并根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个
[单片机]
51单片机教程(三):单片机<font color='red'>串口通信</font>实例
单片机和PC通过串口通信
通信协议:每次PC向单片机发送10个字节的数据,第一个字节为0XFA,数据开始标志,后面8个字节为任意数据,最后一个字节为前9个数据和的低字节(高字节忽略),作为校验和。 串口设置:PC串口参数设置 串口号 : COM1(默认,具体视使用情况而定) 波特率 : 9600 数据位 : 8 其他默认 测试方法:可以用串口调试工具的字符串输入框输入:FA FA FA FA FA FA FA FA FA CA,选择HEX发送,HEX显示,如果每发送一次就接收到以上数据,并在单片机开发板上正确显示,则测试成功。 //52单片机串口接收和发送测试程序; //接收采用中断方式,发送采用查询方式
[单片机]
变频器和伺服系统的工作原理及区别
一、两者的定义 变频器是利用电力半导体器件的通断作用将工频电源变换成另一频率的电能控制装置,能实现对交流异步电机的软启动、变频调速、提高运转精度、改变功率因素等功能。变频器可驱动变频电机、普通交流电机,主要是充当调节电机转速的角色。变频器通常由整流单元、中间电路、逆变器和控制器四部分组成。 伺服系统是使物体的位置、方位、状态等输出被控量能够跟随输入目标(或给定值)的任意变化的自动控制系统。主要任务是按控制命令的要求、对功率进行放大、变换与调控等处理,使驱动装置输出的力矩、速度和位置控制的非常灵活方便。 伺服系统是用来精确地跟随或复现某个过程的反馈控制系统。又称随动系统。在很多情况下,伺服系统专指被控制量(系统的输出量)是机
[嵌入式]
<font color='red'>变频器</font>和伺服系统的工作原理及区别
有关变频器驱动电动机中浪涌对策的基础研究
1 前 言 近年来,国民经济中广泛使用的电动机,愈益趋向使用变频器的可变速驱动,以图通过适当的运转控制实现节能。这些变频器驱动的电动机,均迫切要求进一步的小型化和驱动电压的高压化,因而要实现高功率、高效率化等。这样一来,其使用条件会更加苛刻。特别是随着变频器高速的开关切换产生的涌浪,将引起电动机线圈导线之间的局部放电,令人担心会对绝缘造成恶劣影响。原来,在对变频器涌浪产生局部放电进行预测时,是采取涌浪吸收装置之类抑制局部放电的措施。但是,这些对策有碍于实现轻量化并增加成本。故取而代之的,是使用由电线厂开发的耐局部放电性能好的漆包线来解决。 作为变频驱动电动机研究课题解决措施的一个环节,本公司针对耐局部放电电线适用性的问题进
[电源管理]
有关<font color='red'>变频器</font>驱动电动机中浪涌对策的基础研究
MSP430F149与ESP8266串口通信(上)
一、前言 针对网上90%的例程都是针对51单片机(或者STM32)和ESP8266模块进行串口通信,故开此帖记录MSP430与ESP8266对接的过程,希望大家不要走弯路,及时实现自己所需要的功能。本帖分为MSP430F149与ESP8266串口通信(上)、MSP430F149与ESP8266串口通信(中)和 MSP430F149与ESP8266串口通信(下)三部分,其中,在(上)部分主要介绍ESP8266的基本使用及利用 USB转串口工具 对ESP8266进行AT指令的操作;(中)部分主要介绍,MSP430F149与ESP8266进行对接的注意事项,主要讲解MSP430下发数据给ESP8266,并给出相应的电路原理图和代码,(
[单片机]
MSP430F149与ESP8266<font color='red'>串口通信</font>(上)
单片机的串口通信编程的总结
本次小结的主要目的是更加明确单片机的串口中断是如何发生的。即:是如何触发串口中断的发送功能的。在说明中我使用特殊的字体颜色来强调重点部分和注意事项。 程序一: 本程序是使用软件设置TI来实现串口中断的触发,如果在初始化函数中不增加 TI=1; 这条语句,那么是不会触发中断的 #include STC89C5X.h //包含51单片机的头文件 #define uint unsigned int #define uchar unsigned char /* 串口通讯接口定义 RXD-------P3.0 数据接收端 TXD-------P3.1 数据发送端 */ /*====================
[单片机]
基于紫日变频器在EPS应急电源行业的应用
基于紫日变频器在EPS应急电源行业的应用 一、EPS EPS(Emergency Power Supply)为应急电源,作为消防设备、市政设施、医疗、企业、工厂或其他设备在市电电网发生故障时,可提供应急电力的电源设备。与传统的备用发电机组应急电源相比,EPS在启动速度、噪音与振动、可维护性、供电质量、过载能力、自保护特性以及环境污染方面都有明显优势。 EPS按照负载种类不同分为一般三种:照明型、动力型和照明动力混合型,对应的负载分别为照明负载、电机负载(消防水泵等)和照明与电机混合负载。 二、变频器在EPS电源行业的应用要求 在市电不正常时,EPS是通过内部的逆变器输出交流电拖动负载的,而变频器在EPS中正是起
[电源管理]
DSP与PC间高速串口通信的实现
    摘要: 利用UART解决DSP与PC机间通信时速率匹配问题,并给出了具体实现电路。     关键词: DSP UART 串行通信 FIFO DSP是一种专门用来实现信号处理算法的微处理器芯片,主要优点有:硬件乘法器,哈佛总线结构,多种寻址方式,零耗循环(zero overhead loop),程序执行时间可预测等。     正是由于DSP的诸多优点能够满足密集的数学计算,而且DSP应用的另一个突出特点是实时性,使其在通信、雷达、数字电视等领域得到了广泛的应用,而且日益渗透到人们的日常生活的各个方面。     在实时信号处理中已经离不开DSP,这些处理系统中包含了各种数据通
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved