2019年第07期F a c t o r y
T a l kV i e wS E 数据采集至实现报表的方法张燕青,李乐毅,冯 川,郝春雷,马 静
迅控(河南)自动化科技有限公司,河南洛阳471000
摘 要 F a c t o r y
T a l kV i e wS E 作为罗克韦尔公司推出的上位机监控组态软件,是一个软件集成系统,用来开发和运行单机或分布在整个网络内的多用户和服务器的HM I 应用程序,
支持创建强大㊁可靠的监视和控制应用程序需要的几乎所有工具㊂F a c t o r y T a l kV i e wS E 在系统数据处理㊁报表方面却表现较弱,但软件可利用其内部支持的V B A 扩展从而实现软件较复杂的功能㊂此方法依据F a c t o r y T a l kV i e wS E 内置V B A 控件,调用E x c e l 表格,通过O D B C 数据源接口记录到数据库A c c e s s 中,最终生成报表样式,实现用户功能㊂
关键词 表格;报表;V B A ;HM I ;A c c e s s ;数据库;F a c t o r y T a l kV i e wS E 中图分类号 T P 274.2
D O I  10.19769/j .z d h y
.2019.07.0330引言
某热电厂大量采用R o c k w e l l 公司一体化自动化系
统,传统的控制操作均运行良好,但由于系统中无事件记录㊁报表输出功能,维护人员无法判断操作人员对系统的具体操作对象以及操作时间和地点,当出现故障时,无法快速判断故障问题来源,造成巨大的资源浪费㊂为解决此类问题,本研究针对F a c t o r y T a l kV i e wS i t eE d i t i o n 的报表输出问题进行了分析,具体介绍软件实际属性及实现的方法㊂
F a c t o r y T a l kV i e wS E 是罗克韦尔公司开发的上位机组态软件,是与罗克韦尔自动化产品结合最佳的图形化软件产品㊂它也提供了强大的数据组态监控能力,能够方便用户进行上位机的画面编程㊁组态㊂F a c t o r y
T a l k V i e wS E 为工业组态软件,图形编辑处理能力强大,但本身报表生成㊁处理能力比较弱㊂
为了解决此问题,本文主要描述罗克韦尔软件S E 支持的V B A 语言功能,编写V B A 程序调用数据库与E x c e l 结合,实现上位机数据的图形化报表功能㊂
1实现原理
S E 软件本体虽然没有报表功能,但是具有数据记录功能㊂打开软件,到D a t aL o g 功能,新建模型,在模型中选择需要记录的标签变量,这些数据可以保存在数据库中,通过V B A 指令读取数据库,打开E x c e l 表格,实现报表功能,拓扑结构如图1所示㊂
图1 报表解决方案框图
2E x c e l 对象模型
E x c e l 对象包含M i c r o s o f tE x c e l 的所有元素,
用户通过E x c e l 自身所带属性,
在其他应用程序中进行调用㊁生成新的E x c e l 控件[1]
图2为E x c e l 控件层级结构展示㊂
图2 E x c e l 对象模型
3应用实例
本文将演示通过读取F a c t o r y
T a l kV i e wS E 数据记录模型中导出的数据库数据,运用V B A 编程语言调取数据库中标签名字㊁动作时间㊁状态等数据至E x c e l 报表中显示,从而实现复杂的生产报表,下面将具体介绍如何实现报表㊂
3.1将E x c e l ㊁A c c e s s 对象库加载到当前V B A 程序中
首先在V B A 系统汇中加载E x c e l 和A c c e s s 对象库,
具体版本要求M i c r o s o f tA c c e s s14.0版本和M i c r o s o f t
E x c e l 14.0版本,
加载此2项时也可加载更高版本[2]
㊂3.2打开E x c e l 模型
打开E x c e l 模型具体指令及注释如下所示:
创建E x c e l 对象
S e t o b j E =C r e a t e O b j e c t ("E x c e l .A p p
l i c a t i o n ") 设置E x c e l 属性W i t ho b j E x c e l  显示E x c e l
.A p p l i c a t i o n .V i s i b l e=T r u e  定义E x c e l 名字 S S
8
收稿日期:2019-06-15
.C a p t i o n="S S"
创建一个新的工作簿
.A p p l i c a t i o n.w o r k b o o k s.A d d
激活第一个工作表S h e e t1
.w o r k s h e e t s("S h e e t1").A c t i v a t e
给每一列数据添加表头
.
C e l l s(1,1).V a l u e="日期"
.C e l l s(1,3).V a l u e="值"
设置表头宽度及颜(填写三原数值)
.R a n g e("A:A").C o l u m n W i d t h=21
.R a n g e("B:B").C o l u m n W i d t h=20
.R a n g e("C:C").C o l u m n W i d t h=5
.A c t i v e S h e e t.R a n g e("A1:C1").I n t e r i o r.C o l o r= R G B(15,187,241)
设置表头字体及字号
.R a n g e("A1:C1").S e l e c t
.S e l e c t i o n.F o n t.N a m e="微软雅黑"
.S e l e c t i o n.F o n t.B o l d=T r u e
.
S e l e c t i o n.F o n t.S i z e=11
设置A行单元格格式
.S e l e c t i o n.A u t o F i l t e r
.R a n g e("A:A").N u m b e r F o r m a t L o c a l="y y y y/m/d h:mm:s s"
设置B1表头样式为标签+标签扩展行数
.R a n g e("B1").F o r m u l a R1C1="=C O N C A T E N A T E (""标签"",A B S(C O U N T A(C[1])))"
E n d W i t h
3.3创建A D O对象访问数据库
本案例采用(A D O)方式[3]与数据库A c c e s s的连接,具体操作为:首先加载A c t i v e X2.4或更高版本,将对象M i c r o s o f tA c t i v e X D a t a O b j e c t s2.4的库文件加载到V B A中去,编写程序:
S e t c n1=C r e a t e O b j e c t("a d o d b.c o n n e c t i o n")
创建A D O的连接对象,建立与A c c e s s的链接㊂3.4读取数据库实际地址
在读取数据库实际地址时,需要重新编写数据库的驱动程序,本案例驱动程序是D r i v e r d oM i c r o s o f tA c c e s s (*.m d b),然后将通过O D B C接口将数据库中存储的数据存放于F盘母文件夹d a t a下的 数据记录 文件夹下,编写程序[3]:
c n1.O p e n"
d r i v
数据库编辑软件e r={D r i v e rd o M i c r o s o
f tA c c e s s(*. m d b)};D B Q=F:\d a t a\数据记录"实现读取地址功能㊂3.5获取A c c e s s数据库数据
S E软件自带的记录模型中,包含多种数据表格,其中F l o a t T a b l e表格主要包含如下几列D a t e A n d T i m e(时间日期)㊁M i l l i t m(毫秒)㊁T a g N a m e(标签名字)㊁V a l(值)㊁S t a t u s(状态)㊁M a r k e r(标记),本案例提取有用数据D a t e A n d T i m e(时间日期)㊁T a g N a m e(标签名字)和V a l (值)三列数据进行报表输出,对应E x c e l的列要求,编写S Q L语言:
创建下面游标
S e t r s=C r e a t e O b j e c t("a d o d b.r e c o r d s e t")
s q l="s e l e c t*f r o m F l o a t T a b l e"
打开游标
r s.o p e n s q l,c n1
D o W h i l eN o t r s.
E O F
o b j E x c e l.S h e e t s(1).C e l l s(i,1)=r s("
D a t e A n d T i m e") 第一列对应时间日期
o b j E x c e l.S h e e t s(1).C e l l s(i,2)=r s("T a g N a m e") 第二列对应标签名字
o b j E x c e l.S h e e t s(1).C e l l s(i,3)=r s("V a l") 第二列对应标签值
r s.M o v e N e x t
i=i+1
L o o p
这样操作就实现了从A c c e s s数据库读取数据到E x c e l中的功能㊂
本文记录数据为19个,通过采集数据库中19个标签数据㊂完成E x c e l报表如图3所示㊂
图3数据报表截图
4结语
罗克韦尔公司开发的上位机组态软件F a c t o r y T a l k V i e wS E在数据监视㊁画面显示等传统工业应用强大,本例通过S E自带D a t a L o g功能记录数据至数据库,再通过外围V B指令调用表格,最终完全可实现各种班报㊁周报㊁月报㊁年报等,更能实现各种操作履历记录等常用功能㊂
参考文献
[1]苗苗,朱秀慧,王海.组态软件R S V i e w32种用V B A实现报表的方法[J].自动控制,2006,12:49-50.
[2]牛正光,张五一,王东云.用V B A在R S V i e w32中实现报表的方法[J].中原工学院学报,2008,19(4):49-52.
[3]M i c h a e lA l e x a n d e r,G e o f f r e y C l a r k.M i c r o s o f tE x c e l a n d
A c c e s s I n t e g e r a t i o nw i t h O f f i c e2007[M].I n d i a n a:W i l e y P u b l i s h i n g,I n c.,2007.
1
8
2019年第07期

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。