Loading
新闻中心库存中心价格中心PDF中心图片中心
ICGLE 电子技术支持中心,为电气人员和相关企业提供全面的信息(IC技术\IC库存\IC图片\PDF资料等)服务
总线设计PCB设计单片机DSPARM
JAVA驱动设计C/C++汇编J2EE网络协议中间件技术嵌入式系统无线通信通信网络模拟技术接口电路显示光电传感与控制EDA/PLD
气流体控制电子产品电机及工具通信设备仪器仪表电线电缆建筑电气低压电器高压电器电源工控自动化广电设备医疗器械More..
电源设计仪器仪表技术专递电路图片电子专栏储存技术汽车电子测量测试音响技术家用电器
成功方案市场分析行业标准应用前沿芯片应用综合专区
基于VC环境的变频器联网控制
来源:电源技术应用   作者:张晓滨 钟彦儒 王建渊
字体大小:[大][中][小]

    摘要:变频器是工业自动化系统中的基本拖动设备。当应用环境非常恶劣,不适合于人在现场对变频器直接进行控制时就需要对变频器进行远程控制。主要介绍了如何用VC编写控制软件对变频器进行联网控制。

    关键词:变频器;控制软件;联网控制

引言

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

1 基本组成

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

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

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

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

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

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类方便地进行数据库访问。

    下面具体叙述是如何利用数据库完成软件的网络控制功能。首先用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对计算机串口编程。

图3

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);

}

}

}

图4

    在与变频器的通信中要求计算机的串口号和通信速率是可变的。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所示。

图5

6 结语

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

Upload by 小刘(2007-3-24)
IC
·基于SPC3的PROFIBUS现场总..
·零电压开关温度/功率控制器UAA10..
·IR2304半桥驱动集成电路的功能原..
·L4960/4962单片集成开关电源
·降压型转换器在手持产品中的应用
·起直流稳压(流)电子负载核心作用的功..
·提高稳压器过流保护能力的 MOSFE..
·用作测试负载的数字可编程电阻器
·内含充放电控制与保护系统的半导体照明..
·基于PSoC CY8C26233的电..
·1.575 GHz GPS下变频器M..
·新型电子变压器控制器IR2161
·精密静带电路的产生方法
·微控制器管理电源排序和控制
·可模拟仪表放大器的放大器和电流源
·耗电只有 6μA 的高保真三角波发生..
·可装入很小空间的简单电源
·形成单输出滤波器的PC配置RLC谐振..
·智能型电源模块加速三相电器电机驱动器..
·用3V电源为压电式扬声器提供12Vp..
·电磁无损检测中信号发生器的设计与实现
·服务于设计工程师的在线电源设计工具
·集电池充电和DC/DC变换于一身的单..
·TLP250功率驱动模块在IRF84..
·一种带辅助变压器的Flyback变换..
·基于D类功放的宽范围可调开关电源的设..
·基于数字信号处理器的IGBT驱动电路..
·微机控制高速平缝机两个重要硬件系统的..
·基于DSP控制的25Hz逆变电源抗负..
·开关电源中几种过流保护方式的比较
·PWM变换器中输出变压器偏磁的抑制
·3500W与6000W高档开关电源的..
·LinkSwitch—TN系列节能型..
·基于半桥驱动器IR2153的荧光灯电..
·开关电源直流EMI滤波器的设计及实现
·当今电源产业及电源技术的发展趋势
·铅酸蓄电池维护与测试现状及测试技术发..
·更简单的电池自动关断电路
·实现恒流 LED驱动的高侧电流检测开..
·实时控制处理器的电源
IC
推荐技术文章:
·适合高性能系统采用的新一代低压降稳压....
·电源时序管理和电源电压监控管理芯片..
·线性光耦原理与电路设计..
·5V转换成 -10V的简单电路..
·电力设备电磁兼容问题研究..
·高性能数字运动控制芯片IRMCK20....
·准谐振软开关控制器IRIS4015的....
·可充用的植入式脑深部刺激器及其低功耗....
·开关电容滤波器频域分析..
·软件实现高分辨率的非易失性数字电位器....
·两种典型控制方法在逆变器控制器中的比....
·LLC谐振变换器与不对称半桥变换器的....
·同步整流技术及其在DC/DC变换器中....
·电流控制模式多路输出开关电源的研制..
·一种15W三路输出DC/DC模块电源....
·3500W与6000W高档开关电源的....
·Buck变换器的EMC分析..
·Boost型功率因数校正器的电磁兼容....
·基于TOPSwitch的超宽输入隔离....
·基于新型器件STIL的浪涌电流限制电....
·UPS及EPS的应用技术与发展趋势
·可提供短路保护的浪涌限幅器
·具有自动电平控制及干净正弦波输出的1..
·功率MOSFET并联均流问题研究
·三相高频PWM整流器的预测电流控制
·双路输出双闭环电流控制型DC/DC变..
·2kW新型推挽正激直流变换器的研制
·基于UC3846的新型开关电源的设计
·基于PDM控制的电晕处理电源的研究
·基于IGCT的0.1Hz高压实验电源..
·太阳能高压钠灯高频电子镇流器的研究
·蓄电池全新的充电模式
·电动自行车用电池性能检测装置
·UPS逆变器控制方法比较分析
·太阳光发电站用逆变器和电磁元件
·现代功率模块及器件应用技术
·车载监控调度系统中的电磁兼容性设计
·LVDS总线在安全隔离网闸中的应用
·高压线性电流传感器IR2175及其应..
·功率因数校正和镇流器控制芯片IR21..
IC
IC

©2007 版权归ICGLE所有   页面执行时间:62.500毫秒