【发布时间】:2015-12-10 05:49:38
【问题描述】:
我在 python27 中使用 Proficy Historian SDK。我可以创建一个数据记录对象并添加查询条件属性(样本类型、开始时间、结束时间、样本间隔 - 以毫秒为单位)并使用 datarecord.QueryRecordset() 执行查询。
我面临的问题是 QueryRecordset 方法似乎只适用于返回少量数据集(最多几百条记录),即一个小的日期范围,否则它不会返回任何 SCADA 标签的结果.我有时可以通过慢慢确定日期范围来让它返回更多(几千条)记录,但这似乎不可靠。那么,有没有办法解决这个问题或以不同的方式进行查询或设置它?我的大多数查询都包含多个标签。否则,我想我只需要连续执行查询/滑动日期范围并一次提取几百条记录。
更新: 我正在使用以下步骤执行查询:
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants as c
import datetime
ihApp = EnsureDispatch('iHistorian_SDK.Server')
drecord = ihApp.Data.NewRecordset()
drecord.Criteria.Tags = ['Tag_1', 'Tag_2', 'Tag_3']
drecord.Criteria.SamplingMode = c.Calculated
drecord.Criteria.CalculationMode = c.Average
drecord.Criteria.Direction = c.Forward
drecord.Criteria.NumberOfSamples = 0 # This is the default value
drecord.Criteria.SamplingInterval = 30*60*1000 # 30 min interval in ms
# I've tried using the win32com pytime type instead of datetime, but it
# doesn't make a difference
drecord.Criteria.StartTime = datetime.datetime(2015, 11, 1)
drecord.Criteria.EndTime = datetime.datetime(2015, 11, 10)
# Run the query
drecord.Fields.Clear()
drecord.Fields.AllFields()
drecord.QueryRecordset()
可能发生的一个问题是使用 dd/mm/yyyy hh:mm 格式的日期/时间。当我创建 pytime 或 datetime 对象时,各个属性例如年、日、月、小时、分钟在分配给 drecord.Criteria.StartTime 和 drecord.Criteria.EndTime 之前和之后都是正确的,但是当我打印变量时,它总是以 mm/dd/yyyy hh:mm 格式出现,但这可能是由于对象的 str 或 repr 方法所致。
【问题讨论】:
-
我不知道你在说什么,但无论如何,好问题。
-
明天我回来工作时会添加一些代码。与此同时,我的问题是扩展here 所显示的内容
标签: python win32com historian proficy