问题标签 [historian]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4279 浏览

python - 我如何使用python轻松地从历史学家中提取数据?

我对 Proficy Historian 和 Python 还很陌生。我的应用程序的目的是开始从 Proficy 中提取数据。

GE (Proficy) Historian 安装在 Virtual Machine 上Server A,而我的 python 安装在另一个 VMServer B上。

两台服务器在同一个防火墙下,在同一个 VLAN 中,所以它们可以通信。

我试图环顾四周,但我不确定哪种方法是提取数据的最简单方法......有什么帮助吗?

0 投票
0 回答
86 浏览

sql - 从列表或数组 SQL 中重复选择/操作馈送参数

对 SQL 非常陌生,可以使用一些建议/想法。

我正在使用 SQL 查询从现有表(Wonderware/Runtime/AnalogSummaryHistory)中检索和格式化数据到 Excel 2010 中。我的查询适用于获取我想要的结果格式,但仅适用于单个/通用聚合函数。我无法弄清楚如何将单独的聚合函数与每个感兴趣的标签相关联。

我想为以下功能增强它。

我想定义一个列表,(硬编码很好,从 Excel 单元格范围中提取的动态列表会更有技巧),

标签 --> (Tag1, Tag2,...)

Func---------> (AggType1, AggType2,...)

其中 AggTypeX 将是我想要的相应 TagX 的聚合函数类型(MIN/MAX/AVG/LAST 等,可用作现有源表中的列数据)(定义列表中的 AggTypes 可以重复)然后我想拥有查询通过此列表运行以创建具有相应聚合函数类型数据值的 TagX 列的结果。我希望结果列按照初始标签列表中定义的顺序排列为 LR。

此外,我希望能够在 Excel 2010 连接定义中运行此查询。*我尝试使用临时表构建原始查询,但无法在 Excel 中运行。似乎在插入时炸弹以填充临时表。可能是我经验不足,可能是Excel,DK的限制。

我正在寻找的结果:

非常感谢任何反馈。

我当前的查询/设置:

现有表(AnalogSummaryHistory):

我的查询:

结果:

0 投票
1 回答
1189 浏览

android - Docker:Battery historian - 拉取访问被拒绝或需要 docker 登录

我正在关注https://github.com/google/battery-historian
我正在尝试在我的 Mac 上执行以下命令:


但我收到以下错误:

任何线索表示赞赏。

[更新]: GitHub上这个问题的讨论线程:
https ://github.com/google/battery-historian/issues/125#issuecomment-353161947

0 投票
1 回答
269 浏览

vbscript - GE Historian 模拟

我一直在尝试在 Historian 中模拟值,但没有取得很大成功。我对环境和 VBscript 本身都很陌生。

我正在尝试模拟简单的 1 和 0。我的目标是让它运行 1-2 分钟,返回 1。然后下降15-30秒;返回 0。两者的正常运行时间和停机时间都是随机的。

如果我正确理解程序,它将每秒触发一次脚本。意思是,我不能有一种可以记住的全局值,这使得编程变得困难......我已经尝试过使用概率,比如:

但这仅考虑正常运行时间。注册停机时间时,仅注册1秒...:/

有没有人对如何实现简单的模拟代码有任何经验或想法?谢谢!

编辑: 我一直在测试内置函数,试图用一个计数器来解决这个问题,每次它达到一个数字时我都可以用它来重置。但我无法让它完全工作:

我只是无法让它工作......一直在盲目地主演自己......:/

编辑 2: 现在看起来像是日报.. :P 但我设法用上面的代码做了一个计数器,并对其进行了调整。以为我只需要制作另一个标签,然后在一段时间内返回值 1 和 0。显然,Historian 在读取另一个标签时无法跟上并吐出值......

0 投票
0 回答
296 浏览

vbscript - GE Historian Calc - Total time between values

I am trying to create a simple GE Historian calculation that calculates the time between two values of a tag. For example, I have a temperature tag called "TAG1" that I want to calculate the time it took to go from 100 degrees to 200 degrees in seconds.

In the past I have calculated the time since the last recorded value using:

I believe what is giving me a hard time is I do not know how I can return the timestamp of when a certain tag was a certain value last. Has anybody made a Calculation tag like this before?

Note: GE Historian calculations use VB Script, and PreviousGoodTime is a Built-In function that uses a tagname and a time to start calculation (in this case, "Now-Second" is one second prior to the trigger of the calc)

Update: Accomplished the end result using two intermediary Boolean calculation tags. One that is True when the temperature is higher than 100 degrees (TAG2) and another that is True when higher than 200 degrees (TAG3). The final calculation tag (TAG1 from original post) is triggered when TAG3 steps from False to True and calculates the time since the last good value of TAG2.

Still curious if this can be accomplished in one single Historian Calculation tag.

0 投票
2 回答
1684 浏览

opc-ua - TranslateBrowsePathsToNodeIds() OPC-UA 方法与 Simatic ProcessHistorian

我正在尝试TranslateBrowsePathsToNodeIds使用 OPC-UA 客户端针对 Simatic ProcessHistorian(Simatic PCS 7 版本 8.1)调用方法(在 OPC-UA 标准的查看服务集上定义)。

当我使用来自UA-.NET的示例客户端浏览服务器时,我可以在对象根目录下看到两个节点:

  • 服务器
  • Process Historian {7a3ea44f-b495-414c-84f9-7498095d43bd}

对于Server节点,该方法工作正常,但我不知道如何从Process Historian {7a3ea44f-b495-414c-84f9-7498095d43bd}(实际上是数据模型)开始从树中获取节点。

代码如下所示(C#):

结果状态码是BadNoMatch

relativePath参数是3:Process Historian {7a3ea44f-b495-414c-84f9-7498095d43bd}(示例客户端显示为该节点的 BrowseName 的值)。我也试过没有3:namespaceId 前缀,没有区别。

如果我尝试使用Process Historian {7a3ea44f-b495-414c-84f9-7498095d43bd}节点的 NodeId 作为startNodeId参数,则生成的 StatusCode 为BadNodeIdUnknown.

相同的代码适用于其他 OPC-UA 服务器,如 KEPServerEX 或 Aspen InfoPlus21。我不确定代码是否应该不同,或者 ProcessHistorian 是否不支持它。任何帮助表示赞赏。

编辑:RelativePath正如@AndrewCullen 指出的,获取实例 的方法很少。我检查了UA-.NET中的代码,并尝试RelativePath使用其构造函数进行创建,该构造函数控制对象的各个方面:

根据OPC UA 第 04 部分 - 服务(第 7.26 章),如果referenceTypeId未指定(RelativePath构造函数的第一个参数),则包含所有引用并忽略参数 includeSubtypes。所以这个结构应该是最普遍的(如果我理解正确的话)。但这种方法都没有成功。

编辑2:

为 Process Historian 节点附加视图节点属性:

查看 Process Historian 节点的节点属性

而我真正需要的是翻译标签的浏览路径。一个示例标签的属性如下图所示。

所以我需要将路径解析为:3:Process Historian {7a3ea44f-b495-414c-84f9-7498095d43bd}/3:CMC/3:OSS1/3:OSS1_OSS1/3:ZAKLADAC/POC_VRSTEV.V到它的NodeId。可能还有另一个问题 - 名称中的斜线 - 我需要以某种方式逃避它吗?

标签属性

编辑3:

也在OPCFoundation 的 GitHub 上作为问题提交

0 投票
1 回答
116 浏览

sql - 如何在 SQL 查询中同时选择单独的时间间隔?

下面是我的 SQL 查询的一部分。我想从显示的时间段中选择数据。我有许多特定的日期范围需要包含在“或”语句中。如何更改我的查询以使其按预期工作。

这个查询是用 Aspen SQLPlus 编写的,并且正在访问一个历史数据库。为了使查询正常工作,我创建了一个临时表,并查询该表。我不知道这是否有所作为,但值得注意。

还,

工作得很好。

0 投票
2 回答
692 浏览

c# - BrowseTags 方法(收集器对象) | VBA 与 C#

有一段时间我一直在尝试用 c# 制作一个独立的程序,它使用 iHistorian_SDK 的 BrowseTags 函数。(iFix 5.8 和 Historian 7.0)

首先,我在 VBA 中创建了这个函数,它工作得很好,但是由于 VBA 是单线程的,我想将它从 VBA 中移除。

我今天有效的 VBA 代码:

这很好用。但是在我尝试将相同的函数转换为 C# 时,我不断收到错误。

首先,我连接到我的历史服务器,这非常轻松。

我尝试连接之前的状态标签:

连接前

我尝试连接后的状态标签:

连接后

建立连接后,我希望能够做一些类似于我在 VBA 中所做的事情。

我的 c# 尝试如下

错误

有谁知道我可以如何解决这个问题,或者是否可以在 C# 中使用与收集器对象相同的方法浏览标签。

我看过这个视频几次,所以我认为这是可能的,他们只是跳过了他们实际浏览标签的代码。

提前致谢/T

0 投票
1 回答
41 浏览

sql - 合并 2 个带有时间戳的数据集作为唯一标识符(但它们不相同)

我有 2 个历史标签数据。我做 openquery 以在表中获取这些数据。数据是这样的:

标签1:

标签2:

我想把它合并到一张表中

问题是 Timestamp1 和 Timestamp2 不匹配。我需要在表中将 string1 和 string2 放在一起。有没有办法解决这个问题?此外,时间戳的差异可能会因情况而异。(可以是 100ms 到 5sec)

例子:

标签 1 表:

标签2表:

结果表:

0 投票
2 回答
1315 浏览

wonderware - Wonderware Historian:查询 Runtime.Events 视图

我想用 SQL 查询 Runtime.Events 视图。我尝试了以下方法:

select * from Runtime.dbo.Events给出以下错误:

OLE DB provider "INSQL" for linked server "INSQL" returned message "Event History no longer supports queries that do not provide time".

select * from Runtime.dbo.Events where EventTime >= '2018-09-01 00:00:00' and EventTime <= '2018-11-01 00:00:00'给出了这个非描述性错误:

Cannot execute the query "..." against OLE DB provider "INSQL" for linked server "INSQL".

日期格式似乎是正确的,因为当我尝试使用不同的格式时,我收到错误,指的是错误的日期格式。

如何查询此视图?