罗克韦尔RSVIEW32、SE万能报表开发经验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

罗克韦尔RSVIEW32、SE万能报表开发经验

1引言

随着罗克韦尔工业自动化软件在自动化行业应用日益广泛,工控最终客户对报表的要求也越来越详细,越人性化。在这篇文章以前,已经有很多工程师、教授发表了通过rsview32和rsview se自带的vba来实现报表功能,但要求开发工程师对vb有一些基本的了解,用起来复杂,不具有通用、易用性。本文根据实例来演示自己开发的vba万用报表,使读者可以直接上手,不再为报表设计而发愁。

2应用实例分析

本文以rsview 32做演示(rsview se道理一样)。首先我们要确定将数据记录存到硬盘哪个分区,例如,我想将数据存储到d盘aaa文件夹下,那么我们现在d 盘建立一个aaa文件夹,并在文件夹中建立我们的excel数据模板,并命名为model:

(如图1所示)

图1excel数据模板

模板建立好以后需要设置所需的内容,大家可以根据自己需要任意设置,下面

是举例的设置:(如图2所示)

图2内容设置

模板建立完毕后保存一下,就可以关上模板。

其次把rsview32的vba打开,也是最关键的一步,然后黏贴万能代码,看起来代码很复杂,其实只需要修改3步,即可:

sub excel()

dim xlapp, xlbook, xlsheet as object

set xlapp = createobject("excel.application")

set xlbook = xlapp.workbooks.open("d:\aaa\model.xls")

这里修改成我们所需的存储存储路径,也是刚才建立模板的路径

set xlsheet = xlbook.worksheets("sheet1")

这里对应的是excel中的名称(如图3所示)如果默认,无需修改

图3 excel中的名称

dim ai as string

ai = format(now, "yyyy-mm-dd hh-mm")

set a = gtagdb.gettag("zsh\pt120")

set b = gtagdb.gettag("zsh\pt130")

set d = gtagdb.gettag("zsh\ta")

set e = gtagdb.gettag("zsh\tt120")

set f = gtagdb.gettag("zsh\tt130")

set g = gtagdb.gettag("zsh\tt121")

set h = gtagdb.gettag("zsh\tt131")

set i = gtagdb.gettag("zsh\tt001")

set l = gtagdb.gettag("zsh\t1")

set m = gtagdb.gettag("zsh\t2")

set n = gtagdb.gettag("zsh\t3")

set o = gtagdb.gettag("zsh\t4")

set p = gtagdb.gettag("zsh\t5")

set c = gtagdb.gettag("zsh\at100")

set k = gtagdb.gettag("zsh\ljxfl")

上面所述的set *= gtagdb.gettag(*******)是将报表需要的数据建立起来,

例如:

set a = gtagdb.gettag("zsh\pt120")这句的意思是需要的a数据来源于rsview32标记数据库下zsh文件夹下的pt120标签。如果标签在根目录下,则标签直接为pt120。为什么要设置a b c d?大家看下面就会明白。在这里给大家一点提示,如果想测试,可以直接用系统自带的标签即可,例如set a =

gtagdb.gettag("system\second")

xlapp.activewindow.tabratio = 1

with xlbook.worksheets("sheet1")

.cells(2, 9).value = a

.cells(3, 9).value = b

.cells(4, 9).value = c

.cells(2, 4).value = d

.cells(4, 4).value = e

.cells(6, 4).value = f

.cells(3, 4).value = g

.cells(5, 4).value = h

.cells(10, 9).value = i

.cells(7, 4).value = l

.cells(8, 4).value = m

.cells(9, 4).value = n

.cells(10, 4).value = o

.cells(8, 9).value = p

.cells(11, 4).value = k

这里也是比较关键,把刚才设置的数据a b c d等放到excel中哪些位置?例如:.cells(2, 9).value = a,是将a数据放入到我们表格中横2,竖9的位置。看下图就会明白了2,9的含义,第一个坐标代表了左侧的1 2 3 4等数字,第二个坐标代表了上面abcd等位置,a代表1,b代表2以此类推:

end with

xlapp.activeworkbook.saveas "d:\aaa\" & ai & ".xls"`cstr(val(ai)) &

".xls"

xlbook.close (true)`关闭excel工作簿

xlapp.quit`关闭excel

set xlapp = nothing`释放excel对象

end sub

至此完成所有修改的选项,保存vba代码,退出。在这里需要提示大家一下,有很多开发者都喜欢写完代码,测试运行一下,如果这个代码测试运行会出现错误提示,请保存后用runtime打开工程测试。如果没有连接现场设备,请用系统标签

代替我们所需数据测试。

代码写完以后别着急测试,还有关键一步,就是触发vba选项。在这里提供两个思路仅供参考。第一,如果需要手动输出报表,则做一个按钮,按钮属性选择最后的命令选项,关联我们这个vba工程文件。第二,如果需要每天自动生成报表,则在“事件”选项中来做触发事件关联还是这个vba工程,触发条件设置为系统时间system\hour==12,如果需要精确到分钟或者秒,在后面再并上系统的分和秒即

可。

3结束语

万变不离其宗。读者们还可以依照本文介绍的开发方式,在excel中根据需要在excel报表模板文件中生成柱状图、曲线趋势图等,使表格内容更加丰富和完善。

作者简介

孙登科(1984-)男罗克韦尔产品开发与应用领域。

相关文档
最新文档