如何从Proficy Historian/iHistorian检索原始时间序列数据?
理想情况下,我会要求两个日期之间的特定标签的数据.
您可以尝试几种不同的采样模式.
生的
内插
实验室
趋势
计算
使用以下所有API可以使用这些模式.
用户API(ihuapi.dll)
SDK(ihsdk.dll)
OLEDB(iholedb.dll)
客户端访问API(Proficy.Historian.ClientAccess.API)
其中趋势采样模式可能是您想要的,因为它专门用于制图/趋势.虽然,实验室和插值也可能有用.
有关每种采样模式的更多信息,请阅读电子书.在我的机器上它存储为C:\Program Files\GE Fanuc\Proficy Historian\Docs\iHistorian.chm
,我安装了3.5版本.请特别注意以下部分.
使用Historian OLE DB提供程序
高级主题| 恢复
以下是如何构建OLEDB以进行趋势采样.
set SamplingMode = 'Trend', StartTime = '2010-07-01 00:00:00', EndTime = '2010-07-02 00:00:00', IntervalMilliseconds = 1h select timestamp, value, quality from ihRawData where tagname = 'YOUR_TAG'
使用User API和SDK显示等效方法很复杂(使用User API更是如此),因为它们需要在代码中进行大量管道才能进行设置.Client Access API更新,并在后台使用WCF.
顺便说一句,OLEDB方法有一些限制.
尽管文档说我从来没有能够获得本机查询参数.如果您想将它与SQL Server Reporting Services一起使用,那就是一个showstopper.
您无法将样本写入存档或以任何方式更改Historian配置,包括添加/更改标记,编写消息等.
在某些情况下,它可能会有点慢.
它没有规定将多个标记名交叉到列中,然后传送样本,以便为每个时间戳和标记组合存在一个值.趋势采样模式将您带到中途,但仍然没有交叉表,并且实际上并未加载原始样本.然后,用户API和SDK也无法执行此操作.