网站标志
导航菜单
当前日期时间
当前时间:
购物车
购物车中有 0 件商品 去结算 我的订单
商品搜索
商品搜索:
文章正文
利用VBA在组态软件中实现生产报表编写
作者:管理员    发布于:2015-05-25 06:33:55    文字:【】【】【

  组态软件是指可以实现数据采集与过程控制的专用软件,是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。
rsview32组态软件是美国rock -well公司生产的标准pc平台上的工控组态软件,它以mfc(微软基础类库)、com(组件对象模型)技术为基础运行于microsoft windows nt操作系统环境下的hmi(人机接口)软件包。它提供了工业标准数学模型库和控制功能库、具有丰富的画面显示组态功能、多任务的软件运行环境及数据库管理功能,此外,它还具有强大的通信功能和良好的开放性(支持dde、opc及vba)。rsview32软件内嵌了vba开发环境,用户可以对组态系统的对象进行程序开发,以实现存取数据、开发报表等拓展功能。
vba是visual basic for application的缩写,它是以vb为基础,与vb语法近似的编程语言,但其又具备独特的函数对象。vba可以运行在许多应用程序上 (如:microsoft office excel、autodesk autocad等),以实现应用程序自动化的功能。目前,使用较广泛的组态软件大都集成了vba开发环境,如rockwell公司的rsvie -w32、ge fanuc公司的ifix等,通过进一步的开发可以实现更多的扩展功能。

vba程序编写

通过编写vba程序,可以根据用户要求调用实时数据以及rsview32储存的历史数据,生成数据报表。
1.1实时数据采集
rsview32系统的vba程序创建了许多特殊的全局变量,可以在子程序中任意引用,从而实现访问实时访问组态软件采集的plc实时数据。
以下列举几个全局变量,并做简要说明:
gtagdb:对象为rsview32的标签库,可以实现编辑标签,查询标签数值等
gactivity:对象为活动记录器,通过“log”方法,实现活动数据记录。
gnode:对象为节点集合。
gchannels:对象为通道集合。
gcommand:对象为命令服务器。
可以根据需要采集实时数据,生成报表。
例如,要求每天早上8:00采集一次实时数据,并将数据记录在excel报表,程序如下:
dim rtdata as tag
//定义为标签变量//
set rtdata=gtagdb.gettag("wp\flow\pt1")
//将plc实时数据写入变量//
set rsex=createobject("excel.application")
with rsex
.workbooks.add
//创建一个excel “workbook”//
.visible = true
.worksheets("sheet1").activate
//激活”sheet1”//
.cells(1, 1)=time
.range("c5").value=rtdata
//将实时数据写入excel报表内//
end with
完成后,还需在rsview32建立一个“事件”,在每天早上8点调用rtdata程序。见附图。

rsview32“事件”建立图

附图 rsview32“事件”建立图

2. 历史数据采集
(1) ado简介。ado(active data objects),是一种面向对象的编程接口,是微软组件对象模式(com)的一种。通过调用ado的对象(connecti -on、recordset等),并对它们的属性和方法进行编程,就可以完成与odbc兼容的数据库(oracle、ms sql、access、dbase等)的访问,可以说ado是目前在微软操作平台上应用较为广泛的数据库操作控件。
rsview32具有数据记录功能,可以根据需要将要记录的数据标签进行储存,生成标准的dbase iv 格式历史数据库(有narrow format与wide format 两种格式),此外还可以通过标准的odbc接口连接其他数据库。利用ado可以方便的实现对rsview -32的dbase及其他标准数据库的访问。当然,除了用ado方式访问,通过对dns(数据源)的配置也可以实现访问数据库的功能。
(2) 程序实例。以下通过一个例子简单说明通过ado方式访问历史数据库的程序。
例如,要求从rsview32历史数据库中查询2008年5月1号到2号的流量数据,并将数据记录到excel表内,程序如下所示:
on error goto errhandler
set rsex = createobject("excel.application")
with rsex
.workbooks.add
//创建一个excel “workbook”//
.visible = true
.worksheets("sheet1").activate
//激活”sheet1”//
.rows(1).font.bold=true
.columns.horizontalalignment =-4108
//居中显示//
.columns(1).columnwidth=12
//定义单元格宽度//
.columns(2).columnwidth=12
.columns(3).columnwidth=20
.columns(4).columnwidth=20
.columns(5).columnwidth=20
.range(“a2”).value=”采样日期”
.range(“b2”).value=”采样时间”
.range(“c2”).value=”流量一”
.range(“d2”).value=”流量二”
.range(“e2”).value=”流量三”
end with
set rscn=createobject("adod -b.connection")
//创建ado数据库连接对象//
rscn.open "driver={microsoft dbase driver (*.dbf)}; driverid=277;dbq=c:\rsvwp\dlglog\ab_db"
//数据库驱动开启数据库连接//
set rs=createobject("adodb.recordset")
//创建记录集对象//
rs.open "select * from ab_db where date between #2008/05/01# and #2008/05/2#", rscn
//查询5月1日到2日间的数据//
inti =3
do while not rs.eof
with rsex.activesheet

浏览 (173) | 评论 (0) | 评分(0) | 支持(0) | 反对(0) | 发布人:管理员
将本文加入收藏夹
新闻详情
脚注栏目
|
脚注信息
机电工程网(C) 2015-2020 All Rights Reserved.    联系我们