IFIX报表
IFIX报表常规的做法是采用IFIX内嵌的VBA语言,借助于OFFICE自带的ACCESS 和EXCEL来做的。
例如我们要在IFIX画面上通过点击一按钮来察看某一天的数据,假如这有三个模拟量如tag1,tag2,tag3,数据间隔一小时归一次档,它主要分为四步:
一、创建一个ACCESS数据库如ReportDataBase.mdb,用来存放报表所需的数据。然后
就在这个数据库中建立一个表如ReporData,这样IFIX就能以一定的时间间隔将数据写入此数据库刚才创建的表中。
ReportData的结构如下:
字段名类型
日期日期/时间
tag1数值
tag2数值
tag3数值
二、创建ODBC数据源,用于IFIX与上步已建立的数据库和表进行联系。方法:控制面
板->管理工具->ODBC数据源,打开ODBC数据源管理器,建立一个“系统DSN”,点击“添加”,双击“Microsoft Access Drivers(*.mdb)”,出现“ODBC Microsoft Access安装”对话框。
数据源名:MyReport注:此名是任意的字符组合,但不能与数据库重名。
数据库:ReportDataBase.mdb,点击‘选择‘按钮选择第一步创建的Access数据库。
点击“完成”,退出控制面板
三、在IFIX中创建一个“基于时间的调度”,如图
名称:任意合法的字符组合
触发信息:连续
间隔:1小时
详细代码如下:
点击“VB编辑器“进入VB编辑器
在“工具”菜单-〉引用“Microsoft ActiveX Data Objects x.x Library”
Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)
Dim cn As ADODB.Connection
Dim res As ADODB.Recordset
Dim StrSQL As String
Set cn=New ADODB.Connection
Set res=New ADODB.Recordset
cn.ConnectionString="DSN=MyReport;UID=;PWD=;"
//MyReport是数据源名称//
cn.Open
StrSQL="select*from ReportData where日期=#"&Date&"#"
//ReportData是建立数据库中的表名//
res.Open StrSQL,cn,adOpenKeyset,adLockOptimistic
res.AddNew
res.Fields(0)=Date
res.Fields(1)=Fix32.Fix.tag1.f_cv
res.Fields(2)=Fix32.Fix.tag2.f_cv
res.Fields(3)=Fix32.Fix.tag3.f_cv
res.Update
res.Close
Set res=Nothing
Set cn=Nothing
End Sub
另外,如果定义了主键,如上图,选择了,则res.Fields(0)不可用。
四、在IFIX画面上插入一个按钮。
按钮名称:Cmdreport
Private Sub Cmdreport_Click()
UserForm2.show
End Sub
再在”VB编辑器环境“下,插入一用户窗体。并且在工具-〉附加工具中选择日历控件11.0
在“工具”菜单-〉引用“Microsoft ActiveX Data Objects2.7Library”
“Microsoft Excel9.0Library”
“取消”按钮的代码
Private Sub Cmdcancel_Click()
Unload Me
End Sub
“确定”按钮的代码如下:
Private Sub CmdOK_Click()
'On Error Resume Next
Dim cn As ADODB.Connection
Dim res As ADODB.Recordset
Dim xlBook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Dim strFileName As String
Dim StrSQL As String
Dim i As Integer
Dim row As Integer
strFileName="c:\report.xls"‘预先设计的报表显示模板文件
StrSQL="select*from ReportData where日期=#"&Calendar1.Value&"#"
If Dir(strFileName)=""Then'判断文件是否存在,不存在则退出
MsgBox"报表模版文件不存在"
Exit Sub
End If
Set cn=New ADODB.Connection
cn.ConnectionString="DSN=MyReport;UID=;PWD=;"
cn.Open
Set res=New ADODB.Recordset
res.Open StrSQL,cn,adOpenKeyset,adLockOptimistic
If res.RecordCount<=0Then
MsgBox"你要查询的数据不存在,可能已被删除",vbInformation+vbOKOnly,"系统提示"
vba 字符串转数组
res.Close
Set res=Nothing
cn.Close
Set cn=Nothing
Exit Sub
Else
res.MoveFirst
Set xlBook=GetObject(strFileName)
Set xlsheet=xlBook.Worksheets(1)
xlBook.Application.Visible=True
xlsheet.Cells(2,"n")=CDate(res.Fields(0))
i=0
While i<res.RecordCount
Row=i+4
xlsheet.Cells(row,"a")=res.Fields(1)
xlsheet.Cells(row,"b")=res.Fields(2)
xlsheet.Cells(row,"c")=res.Fields(3)
i=i+1
res.MoveNext
Wend
xlsheet.PrintPreview True
xlBook.Application.DisplayAlerts=False
xlBook.Application.Quit
End If
End Sub
基于ADO技术的iFix历史报表的设计与实现
康为水泥阀
1引言
iFIX是全球最领先的HMI/SCADA自动化监控组态软件。,已有超过300,000套以上的软件在全球运行。世界上许多最成功的制造商都依靠GE Fanuc的iFIX软件来全面监控和分布管理全厂范围的生产数据。iFIX软件内置功能强大的VBA脚本编译器,能实现复杂工程对软件的要求。但是,因不同项目对历史数据报表要求不尽相同,而iFIX软件又没有提供针对历史数据报表的通用组件,通常实现报表的方法
是使用第三方提供的组件(如:水晶报表),因其封装功能较多,编程不够灵活,对于比较复杂的报表功能实现起来比较麻烦,而且需要在进行报表组态时单独购买。ADO组件集成在Visual Basic6.0中,对于复杂的报表功能,采用ADO技术访问iFIX历史数据库实现报表非常灵活。
2ADO技术与iFIX历史数据库
2.1ADO技术
ADO(ActiveX DataObjects)是一个用于存取数据源的COM组件。它是Microsoft新数据库访问技术,是建立在OLEDB之上的高层数据库访问技术。ADO易于使用、高速度和较低的内存占有率的优点使得编程效率更高。
ADO常用的组件对象有:ADODB.Connection和ADODB.Recordset。通过ADO组件对象访问数据库,基本操作流程是:用Connection对象连接数据库,利用建立好的连接通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。
2.2iFIX历史数据库
在iFIX安装时,iFIX安装程序会自动在工作站上建立两个系统数据源“FIXDynamics Historical Data”和“FIX Dynamics Real Time Data”。“FIXDynamics Real Time Data”数据源连接的是iFIX实时数据
库;“FIX Dynamics HistoricalData”数据源连接的是iFIX历史数据库。
实时数据库和历史数据库都可通过ODBC进行访问。
在进行iFIX工程组态时,可以在iFIX工作台系统树下的“历史定义”定义要查询的历史数据。当iFIX运行时,iFIX会按照组态好的要进行记录历史数据的标签的实时值以历史文件的形式保存。例如:工程节点名为“FIX”,并且组态生成24小时的历史文件,则这些历史文件以xxxx.H24(其中xxxx为记录时间)保存到工程目录下的“…\HTRDATA\FIX\”。iFIX历史数据库主要有以下字段:
NODE为工程的逻辑节点名;TAG为数据库标签名;FIELD为数据库标签的域名;VALUE为数据库标签数值;DATETIME为记录日期和时间;INTERVAL为查询时间间隔。
3历史报表软件的设计与实现
3.1功能介绍
本软件可实现与iFIX工程应用软件的无缝连接,满足查询iFIX历史数据并以报表形式显示。
1)可以任意选择要查询的变量,变量在报表中的显示顺序只跟选择要查询变量的顺序有关。
2)查询变量时,按照日期查询,用户只需设置要查询的变量,输入“起始时间”、“结束时间”、“时间间隔”即可进行查询。
3)查询结果可导出。
3.2设计与实现
软件设计主要包括利用ADO组件对象通过“FIXDynamics Historical Data”数据源查询iFIX历史数据库和将查询的结果显示出来。
1)建立数据库标签名描述文件
因iFIX历史数据库是按照TAG(数据库标签名)进行数据存储的,而标签名通常为字母以及编号组成,不便记忆,为了使报表更能直观显示,我们建立数据库标签名描述文件。该文件是一个文本文件,将每个标签名

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