如下:
定义所需采集数据的标签名(或者数据源), 并定义采集组存放这些标签;
定义每个采集组的参数(节点、采集速度、相位、控制标签、状态和标签);采集速度越快,则数据越准确,数据容量越大。iFIX定义的有效数据采集周期为:1s、2s、10s、20s、30s、1m、2m、10m、20m、30m(s:秒,m:分钟)。iFIX推荐的最小采集周期为10秒,默认值是30秒。
定义每个历史数据文件存储的时间长度(以小时为单位,如4小时、8小时、24 小时)。
在SCU中启动历史采集程序htc.exe,指定文件存放位置。运行iFIX,开始采集数据,并把数据保存在历史数据文件中。
计算历史数据需要占用的磁盘空间容量的公式如下:
文件占用字节数 = (3500×A) + ((8×B)×C)
A – 采集组的个数;
B – 每个采集组包含的平均采集点数;
C – 所有采集组将数据写入文件的次数(所有采集组每个标签点采集并写入文件的数据记录条数)
【例】以历史定义为 2 个采集组,采集速度为 1 分钟,使用 4 小时的文件格式。一个组包含 80 个标签名,而另一个包含 20 个。在此情况下,A、B 和 C 的值如下:
变量
数值
计算
A
2
2个采集组 / 文件
B
50
= (80+20) ÷ 2
C
480
60条(每分钟一条)/ 小时 × 4小时(4小时文件)×2(个采集组)= 480
将上表数值带入公式计算历史数据文件大小:
(3500 x 2) + ((8 x 50) x 480) = 199,000 bytes
因此,此配置所生成的 4 小时历史数据文件大约 200K。
[注]:此公式假定数据值在每个扫描周期都超过记录死区,因此并不是精确的评估。根据数据库配置,结果可能有出入。
如下:
字段
数据类型
字段长度
含义
NODE
文本
8
节点名称
TAG
文本
32
标签名称
FIELD
字段
19
字段名称
VALUE
单精度型
默认
值
DATETIME
日期/时间
默认
日期时间
MODE
文本
10
模式
STATUS
文本
20
状态
ALARM
文本
40
警告
INTERVAL
文本
9
间隔
[注]每个节点生成一个以节点名称为数据表名称的数据表
iFIX。为了实现 ODBC 连接和 SQL 查询,确认 SQL 查询语句里所查询的表名和在历史数据采集组中定义的节点名相同。使用 DSN 名称 FIX Dynamics Historical Data。
以下为使用
Private Sub QueryDatabase(strTag As String, strStartTime As String, strEndTime As String)
Dim conn As Connection
Dim rs As Recordset
Dim strQuery As String
strQuery = "SELECT * FROM THISNODE " + _
"WHERE TAG = '" + strTag + "' " + _
"AND INTERVAL = '1.0' " + _
"AND (DATETIME >={ts '" + strStartTime + "'} AND " + _
"DATETIME <={ts '" + strEndTime + "'})"
If conn Is Nothing Then
Set conn = New Adodb.Connection
conn.ConnectionString = "DSN=FIX Dynamics Historical Data;UID=sa;PWD=;"
conn.Open
End If
If rs Is Nothing Then
Set rs = New Adodb.Recordset
End If
rs.Open strQuery, conn, adOpenForwardOnly, adLockReadOnly, adCmdText
If rs.RecordCount > 0 Then
'读取记录
Do While (Not rs.BOF And Not rs.EOF)
strTime =rs.Fields("DATETIME").Value & ""
'下一条
rs.MoveNext
Loop
End If
rs.Close
conn.Close
Set conn = Nothing
Set rs = Nothing
End Sub