基于ADO的IFIX历史数据报表
黄重庆
(福建工程学院 电子信息与电气工程系 福州)
摘 要:本次所使用的报表是基于ADO的IFIX历史数据报表,上位机采用组态软件iFix4.5,通过Visual Basic 6.0作为开发工具,运用模块化的方式,采集“智能仓储系统”和“冷却系统”所产生的数据,对各数据进行实时的监控和有效管理,同时可通过对不同信号的读取,采用本文介绍的方法设计的报表应用程序具有普遍性,通过简单修改可移植到其它工程中。
关 键 词:ADO;IFIX; 历史报表;VBA
Based on the historical data report IFIX ADO
HuangChongQing (FuJian University of Technology,Electronic information and electrical
engineering,fuzhou) Abstract:This time uses the report form is based on the ADO IFIX historical data report form, the superior machine uses configuration software iFix4.5, 6.0 takes the development kit through Visual Basic, the utilization modulation way, the data which gathering “the intelligence warehousing system” and “the cooling system” produces, carries on the real-time monitoring and the effective management to various data, simultaneously may through to the different signal read, use the methods design report form application
procedure which this article introduced to have the universality, may transplant through the simple revision to other projects. Key words: ADO;IFIX; HIM ;VBA
1 引言
iFIX是全球最领先的HMI/SCADA自动化监控组态软件。已有超过300,000套以上的软件在全球运行。世界上许多最成功的制造商都依靠 GE Fanuc的iFIX软件来全面监控和分布管理全厂范围的生产数据。iFIX 软件内置功能强大的VBA脚本编译器,能实现复杂工程对软件的要求。但是,因不同项目对历史数据报表要求不尽相同,而iFIX软件又没有提供针对历史数据报表的通用组件,通常实现报表的方法是使用第三方提供的组件(如:水晶报表),因其封装功能较多,编程不够灵活,对于比较复杂的报表功能实现起来比较麻烦,而且需要在进行报表组态时单独购买。ADO组件集成在Visual Basic 6.0中,对于复杂的报表功能,采用ADO技术访问iFIX历史数据库实现报表非常灵活。[1]同时采用Excel自带的强大的函数和处理数据的能力,对于实现各工程对报表功能的要求。
2 .ADO技术与iFIX历史数据库
2.1 ADO概述
ADO (ActiveX Data Objec t) 对象是DAO /RDO 的后继产物, 很多开发工具都支持这个对象, 比如Visual Basic 和ASP。它是Microsoft公司专门为适应网络数据库开发和客户端需求而推出的一种跨平台远程数据库访问技术。ADO 扩展了DAO和RDO所使用的对象模型, 它包含较少的对象、更多的属性、方法和事件, 这使得ADO 对象更容易使用。ADO 通过OLEDB 所提供的高性能数据访问方法, 可以方便快速地对各种数据源进行访问和操作。ADO 可访问的数据源包括关系或非关系型数据库、电子邮件和文件系统、文本和图形、自定义业务对象, 比如SQL - Server、Access、Orac le 数据库, exce l、word文档等。[2]
2.2 ADO 技术
ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它是Microsoft新数据库访问技术,是建立在OLE DB之上的高层数据库访问技术。ADO易于使用、高速度和较低的内存占有率的优点使得编程效率更高。 ADO常用的组件对象有:ADODB.Connection和ADODB.Recordset。通过ADO 组件对象访问数据库,基本操作流程是:用Connection对象连接数据库,利用建立好的连接通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。 2.3 iFIX历史数据库
在iFIX安装时,iFIX安装程序会自动在工作站上建立两个系统数据源“FIX Dynamics Historical Data”和“FIX Dynamics Real Time Data”。 “FIX Dynamics Real Time Data”数据源连接的是iFIX实时数据库;“FIX Dynamics Historical Data” 数据源连接的是iFIX历史数据库。
实时数据库和历史数据库都可通过ODBC进行访问。
3. 历史报表软件的设计与实现
3.1 报表功能介绍
本报表可实现与iFIX工程应用软件的无缝连接,满足查询iFIX历史数据并以报表形式显示。如图1所示
1)可以选择不同方式产生的报表,用户可选择诸如“冷却系统报表”“客户资料报表”“货物状态日报表”“库位状态日报表”等多种方式报表,并可根据发展需要和各用户之间的不同特点而随时变化 2)查询变量时,按照日期查询,用户只需设置要查询的变量,输入“起始时间”、“结束时间”、“时间间隔”即可进行查询。
3)查询结果可导出,打印,对数据进行维护和修正
4)添加了权限管理,不同用户所能使用的功能依权限的高低而不同。图10所示
图10
图1
3.2设计过程及功能实现
在VB中, 使用ADO访问数据库主要有两种方式, 一种是使用ADO Data控件, 通过对控件的绑定来访问数据库中数据, 即非编程访问方式; 另一种是使用ADO对象模型, 通过定义对象和编写代码来实现对数据的访问, 即编程访问方式。本次报表功能实现主要利用ADO对象模型,使用ADO组件对象通过“FIX Dynamics Historical Data”数据源查询iFIX历史数据库和将查询的结果显示出来。[3]
1) 新建IFIX工程
在WINDOWS开始/运行中输入BackupRestore.exe /FactoryDefault,按步骤提示新建工程,如果使用系统默认工程,即安装软件时的工程,运行报表程序时,将出现错误,NO HISTORICAL DATA FOUND,刚开始误以为需要配置ODBC数据源,在这里耗费了许多时间,后来无意中在其他工程中发现可以实现这个功能,经过对文献资料的阅读,确定了读取历史数据时需要使程序在新建工程中。
2) 定义所需报表变量集
Ⅰ.在过程数据库中定义变量,建立相应的变量值。如G1.G2等,这部分变量是在上位机中将用到的变量名,具体可参照IFIX电子书。
Ⅱ.在历史定义中选择所需记录的历史数据。选定节点的一组标签名,用来标识含趋势分析所需过程数据的数据库块。最多可以定义255个采集组,每个采集组中包含80个不同的标签。这些标签是用户所需要记录的重要数据的数据名。在这里我们可以定义产生一个子文件的时间和要写入文件的数据的类型和大小。如图
图2
如需选用多个节点,可在SCU配置中,本地启动项选择“启动本地节点别 名”。如图3所示
图3
Ⅲ 启动后台历史数据库数据采集,在进程中查看是否启动。 在SCU\\配置\\任务配置中,选择HTC ,如图4所示
图4
选择HTC完成后,可通过重启软件或者任务控制中HTC管理项启动,如图5所示
图5
小结:通过以上操作,我们可以看到在IFIX的HTRDATA文件夹下生成一个以你所定义的节点名为名称的文件夹,里面将产生在一段时间里用户所定义的标签所产生的数据,如图6所示
图6
FIX文件夹中的文件为*.H24或*.H08或*.H04,*代表历史数据库所定义的标签在各时间段所产生的数据,报表中要读取的数据就是从这些标签所记录的数据生成的文件中读取的。如图7所示
图7
3)在EXCEL中制作模板,
按照实际工程所需要记录的数据,如时间,数值,标签名等在excel中作出适合的表格。在设计模板的过程中,我们可以充分利用EXCEL自带的强大的函数功能,这样可以简化程序,将所需的数据进行更全面和准确的统计和分析,以求更加满足用户的需求。如图8所示
图8
将模板另存为网页htm格式,保存在当前目录的PIC文件夹下,以htm后缀可以保证操作和查看人员只能阅读而不能对里面的数据进行修改,以防止现场误操作。如图9所示
图9
4)在IFIX中新建画面及布置画面
配置软件开发环境,添加ActiveX控件及引用ADO对象库
Ⅰ在画面中选择ComboBox控件,DPTicker控件,WebBrower控件,Timer控件和菜单编辑控件PopupMenu控件等各项需要的控件。如果部分控件在IFIX中无法找到,可在VB中查询该控件名称,一般这些控件在C:\\WINDOWS\\system32中可以找到。
Ⅱ 部分控件的命名和使用
在程序中将DTPiker控件命名为DTPstart和DTPend,配置如图所示
将ComboBox分别命名为ComboBox5,ComboBox6等 ,将WebBrower命名为WebBrower1,将Timer命名为aaa和ddd。 ① 在使用ADO对象之前,必须先将对象库引入当前工程中。使用VB集成开发环境“工程”菜单中的“引用”对话框,将其中的“Microsoft ActiveX Data Objects 2.6 Library”和“IE Popup Menu”选中即可。下图为基本的引用,具体工程中可根据需要添加引用。 ②
② 对画面进行优化和布置。
用户可将各控件以自己的方式进行排列,美化画面,也可将相似的控件成组,方便管理画面。
5).使用外部数据库
如果需要读取外部数据如ACCESS数据库,可以建立一个*.mdb文件,并通过程序调用。
3.3.IFIX历史报表流程图
本次所使用的报表是基于ADO的IFIX历史数据报表,采用Mircrosoft新数据库访问技术,这是建立在OLEDB之上的高层数据访问。运用模块化的方式,采集“智能仓储系统”和“冷却系统”所产生的数据,如“智能仓储系统”中库位的状态位的变化和出库量,入库量的统计,对“冷却系统”中的水压,温度等变化值进行了实时的监控和有效管理,同时可通过对不同信号的读取:Ⅰ.射频卡信号的读取,连接ACCESS数据库,对其进行访问,了解客户的资料和产品的要求,智能实现对货物进行出入库的控制。Ⅱ对货物入库的信号的读取,访问FIX历史数据库,在EXCEL中显示历史数据 3.4程序设计思路:
本次所制作的报表使用一张共用的EXCEl工作簿,在这张工作簿可以添加所需的工作表如sheet1代表仓库库位状态日报表,sheet2代表仓库货物日报表,sheet3代表仓库货物月报表等等,使用这种方法能做到对报表的有效管理,只需在同一张工作簿中就可添加实际工程中所需要的各种报表,在面对比较庞大的系统的数据记录尤其显出了它的优越性。同时我们只需使用少量的常用控件就可实现对时间,报表类型的选择,我们还提供报表的打印,删除,导出等一系列的辅助功能,在开发新项目时具有较强的移植性。下面我们就如何实现该报表功能进行详细的介绍。 1)初始化和定义变量
定义报表系统中所需的各种变量,本次程序使用较多的子程序,我们定义了全局变量,实现对各个子程序的联系和控制。 '定义全局变量
Public X As Integer Public ExcelApp As excel.Application Public t As Integer Public ExcelBook As excel.Workbook Public r As Integer Public ExcelSheet As excel.Worksheet Public i As Integer Public rsADO As ADODB.Recordset Public j As Integer Public cnADO As ADODB.Connection Public m As Integer Public Sql As String
‘对其进行初始化,在Combobox控件中添加各种项目和各种相应的执行动作。 Private Sub CFixPicture_Activated() ‘在combobox中添加各项目
ComboBox5.AddItem \货物情况日报表\ComboBox5.AddItem \货物情况月报表\ComboBox6.AddItem \客户资料报表\……….. End Sub
选择combobox中项目时对应的执行动作