0 引言
变频器是工业自动化系统中的基本拖动设备,通常用于控制交流电机的转速和转向。如果变频器的工作现场环境比较恶劣,不适合于人在现场对变频器进行控制,那么就需要对变频器进行远程的联网控制。
1 基本组成
将变频器的RS485串口通过RS232/485转换器连接到计算机的串口组成网络,这个网络系统主要由三部分组成。
第一部分是变频器的网络功能部分,包括硬件和软件两部分。硬件部分是变频器控制板上CPU的串口经过RS485转换芯片(如MAX485)对外形成的一个RS485接口,通过这个接口可以将变频器接进控制网络。软件部分是变频器的通信程序。通过这个通信程序可使变频器在接收到计算机的下达指令后,根据指令做出相应的应答和动作。变频器上的通信程序主要包括串口初始化程序、命令读取和发送程序、命令判断程序及命令集。
第二部分是计算机控制程序。这个程序有人机对话功能,对变频器的状态可以进行远程监视与控制,对变频器的参数能进行修改。总之,人在现场可以对变频器进行的操作在这个控制软件上都应该可以实现。
第三部分是通信协议。这是计算机与变频器之间进行通信的依据。变频器的通信软件和计算机的控制软件都是按照这个通信协议所规定的信息格式进行编写的。
由这三部分构成的变频器远程控制网络就可以完成所希望的变频器远程控制功能。变频器远程控制网络组态图如图1所示。
图1 变频器远程控制网络组态图
2 在VC环境下编写计算机控制软件
用VC编写的计算机控制软件的主界面选用单文本界面,并且带Windows浏览窗口,界面的基类选用CFormView类。主界面显示了所控制的网络中变频器的构成及地址。各个变频器的详细信息显示选用了CpropertyPage类作对话框。CpropertyPage类是从Cobjec类一路继承发展而来,可以被看作是标签对话框。控制软件为各个变频器显示了两个方面的详细信息:一个是变频器的功能码信息,另一个是变频器的远程控制和当前状态。这两方面信息的显示每个都是用CpropertyPage类对话框。对于变频器的功能码显示,由于变频器的功能码由很多组构成,而且显示要求分组进行,所以应用Tab控件来进行分组选择切换。对于变频器的远程控制和当前状态界面我们调用了一些Text、Edit和Button控件。这些控件通过消息〔如BN_CLICKED,UpdateData(TRUE)等信息〕与相应的子程序相关联。一旦我们对变频器进行控制动作或程序收到变频器的反馈信息,界面就会有相应的变化。整个控制软件的程序流程如图2所示。
图2 控制软件程序流程图
从流程图上可以看出控制软件要求能不断地得到联网变频器的状态,这就要求控制软件不停地下发变频器的状态查询指令。这个功能通过在程序里设定了一个计时器SetTimer(1,10000,NULL)完成。定时器使控制软件每10s对变频器进行一次状态查询,检查变频器是否在线。如果在线就会反映这个变频器当前的各种状态,如果不在线会有相应的提示信息显示。计算机与变频器组网时软件的主界面图如图3所示。
图3 控制软件的主界面图
控制软件界面上显示的网络信息和各个变频器的参数信息都要配合相应的数据库才能完成。而对于网络中各个变频器状态信息的获得则要通过计算机串口上传至现场的变频器运行数据实现。下面就分别介绍控制软件是如何对数据库和计算机串口进行操作的。
3 应用DAO技术操作数据库
数据库是现代计算机应用的一个重要组成部分,是人们有效地进行数据存储、共享和处理的工具。有两种主要的数据库类型,即平面数据库和关系数据库。简而言之,平面数据库是一组记录的集合,数据库中的每一个记录都是由字段构成的,第一个字段则包含了与本条记录相关的特定信息。
而关系数据库就像是由若干个平面数据库连接在一起形成的。采用关系数据库能够建立一个记录集合与另一个记录集合之间的关系。在关系数据库中,每一个记录集合称为一张表,表之间的连接是通过关键字实现的,关键字用来确定一条记录的值。
这个控制软件的数据库使用的是平面数据库。数据库中存储了变频器网络的信息和网络中各个变频器的参数。数据库用Access建立,应用DAO作为数据库的访问接口。Microsoft Jet为像Access和Visual Basic这样的产品提供了数据引擎。DAO是使用Microsoft Jet数据库引擎来访问数据库的。VisualC++6.0提供了对DAO的封装,MFCDAO类封装了DAO的大部分功能,从而使VC程序可以使用MFCDAO类方便地进行数据库访问。
下面具体叙述是如何利用数据库完成软件的网络控制功能。首先用Access建立变频器网络的信息表,然后程序中建立一个基类为CdaoRecordset(DAO中封装的一个类)的类Cdata,该类与数据库中的变频器网络信息表相联系。当要在网络中添加一个变频器时,不仅要在变频器网络信息表上进行添加数据操作,还要在数据库中添加一个关于该变频器功能码的新表。对变频器网络信息表的添加操作用了一个CdaoRecordset类数据库指针m_leftptr。CdaoRecordset类是对DAO记录集对象的封装,代表从数据源中选择的一种记录,管理数据库中表里记录的操作。而要在数据库中添加一个新增变频器功能码的新表,需要设定一个CdaoDatabase类的变量。CdaoDatabase类是对DAO数据库对象的封装,它代表了一个数据库连接,管理数据库的操作和数据库中表的操作。下面是网络中添加一个变频器时对数据库的操作程序。
数据库是现代计算机应用的一个重要组成部分,是人们有效地进行数据存储、共享和处理的工具。有两种主要的数据库类型,即平面数据库和关系数据库。简而言之,平面数据库是一组记录的集合,数据库中的每一个记录都是由字段构成的,第一个字段则包含了与本条记录相关的特定信息。
而关系数据库就像是由若干个平面数据库连接在一起形成的。采用关系数据库能够建立一个记录集合与另一个记录集合之间的关系。在关系数据库中,每一个记录集合称为一张表,表之间的连接是通过关键字实现的,关键字用来确定一条记录的值。
这个控制软件的数据库使用的是平面数据库。数据库中存储了变频器网络的信息和网络中各个变频器的参数。数据库用Access建立,应用DAO作为数据库的访问接口。Microsoft Jet为像Access和Visual Basic这样的产品提供了数据引擎。DAO是使用Microsoft Jet数据库引擎来访问数据库的。VisualC++6.0提供了对DAO的封装,MFCDAO类封装了DAO的大部分功能,从而使VC程序可以使用MFCDAO类方便地进行数据库访问。
下面具体叙述是如何利用数据库完成软件的网络控制功能。首先用Access建立变频器网络的信息表,然后程序中建立一个基类为CdaoRecordset(DAO中封装的一个类)的类Cdata,该类与数据库中的变频器网络信息表相联系。当要在网络中添加一个变频器时,不仅要在变频器网络信息表上进行添加数据操作,还要在数据库中添加一个关于该变频器功能码的新表。对变频器网络信息表的添加操作用了一个CdaoRecordset类数据库指针m_leftptr。CdaoRecordset类是对DAO记录集对象的封装,代表从数据源中选择的一种记录,管理数据库中表里记录的操作。而要在数据库中添加一个新增变频器功能码的新表,需要设定一个CdaoDatabase类的变量。CdaoDatabase类是对DAO数据库对象的封装,它代表了一个数据库连接,管理数据库的操作和数据库中表的操作。下面是网络中添加一个变频器时对数据库的操作程序。