问题标签 [opc]
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.
opc - 激活/停用活动 opc 订阅中的特定 opc 项目而不重新创建它
我正在使用 OPC Net API 开发基于 opc 的客户端/服务器应用程序。我的服务器是一个 OPC 客户端,它通过 WCF 服务基础架构向客户端提供流程数据。根据我的客户连接的标签,我想在我的服务器上做出反应并且只订阅那些 opc 项目。
现在我的问题是:是否可以在活动订阅中激活或停用 opc 项目而无需一直重新创建订阅?
另一个问题:这里有没有人有使用该 API 的经验,以及订阅中可以有多少 opc 项目,以便它仍然具有良好的性能?
c# - OPC Da 在字中写入位
我正在使用 OPC DA 自动化包装器连接到 AllenBradley PLC。
我现在需要在一个单词中设置一个位,独立于任何其他位。
有什么方法可以严格实现这个功能吗?
我尝试过的两个选项是:
在 OPC 服务器 (Kepware) 中将单词设置为单独的位。所以换句话说,我有 16 个标签,每个标签都有一点,标签名称看起来像:
但是,这意味着我需要保留许多单独的 OPCItem 对象
另一种方法是读取整个字,使用 将其转换为位BitConverter
,更改我需要更改的位,然后将保留字写回 PLC。
然而,在测试过程中,我发现线程 1 可以读取这个词。然后线程 2 将写入字,更改位 2。然后线程 1 将更改位 4 并将整个字写回,而对位 2 的更改将被覆盖。
有谁知道我可以拥有一个 OPCItem 并写入特定位的方法?还是我坚持有很多与某个位相关的 OPCItems?
谢谢
c# - 如何使用 .net 应用程序从 profibus 读取数据?
是否有任何好的 .NET API 可以与 OPC 一起使用以与 PROFIBUS 进行通信?或者还有其他方法可以从 PROFIBUS 中读取 .net 应用程序数据吗?
opc - 从头开始实施 OPC DA 客户端
我想从头开始实现我自己的 OPC DA 客户端(版本 2.02、2.05a、3.00),但不使用任何第三方。此外,我想利用 OPCEnum.exe 服务来获取已安装 OPC 服务器的列表。是否有任何类型的文档详细说明了实施 OPC 客户端的过程?
merge - 在迭代开发中合并和扩展自动生成的代码
我遇到过一种情况,出现了关于是否使用某个 SDK 的工具的讨论。
目标:在已经存在的 IDL 之上开发 OPCUA 提供程序(需要合规),以更好地支持第三方开发。
选项:
- 使用随 SDK 提供的建模工具 (GUI)(据说可以生成符合性测试的代码)。模型创建得非常快(工具不是用户友好的,但至少有一些工具)。但是,如果不非常谨慎地使用此工具,它似乎很容易出错。(很多陷阱,例如,camelCase 中的错误因此无法编译,但可以使用 find+replace 修复,如果在描述中使用 TABS(如果从文档中复制粘贴),则行为很奇怪,如果删除使用的数据类型,则类型定义为空等等第四 - 我花了一两天时间找到所有这些文件并修复生成的代码。)输出是 170 个 .C 和 .H 文件 - 我不想手动编写和链接。
问题:无论何时更改模型,代码都会完全重新生成(当然包括错误和覆盖调整和修复)。
- 使用 Xtext 生成我自己的模型描述语言并将其编译为有效的、兼容的、可编译的 C 代码,创建一个选项以仅生成自上次导出状态以来实际更改的文件。
问题:两者的维护:生成器和生成的产品是一项持续的任务,通常被认为是一场噩梦。
- 仅自动生成最基本的文件(使用 A 中提到的工具)并手动完成其余部分。如果不是 100% 必要,切勿触摸生成的文件,因此覆盖不会造成任何伤害。
问题:在 A 中提到,仍然存在,但可能要小一个数量级。
我真的很想知道,幕后发生了什么,但是自己编写所有代码比生成它(几十万行代码)更容易出错。我真正觉得我需要的是某种内部版本控制系统,以便在每次模型更改时将它们合并在一起,但不会出现错误。所以一个非常强大的合并工具,使用正则表达式来排除某些段落会很棒......
有没有人遇到过类似的问题,你是怎么解决的?在这种情况下,我如何确保第三方可以安全地重用我的代码?我是否应该为其他开发人员编写“最佳实践”手册?
有什么好的方法可以向我的老板表达我的担忧吗?放弃不是一种选择。
plc - PLC 数据记录系统:一些基本问题
我目前正在尝试使用 PLC。我正在使用Kepware 数据记录器来收集 PLC 日志数据。输出如下:
我有几个问题:
1) 'Channel', 'Device', 'Group', 'RBT1_Y_WORK_COMP_RST' 是什么意思?- 我从 PLC 类演示中得到的是:RBT1(指机器人)是一台机器,“Y_WORK_COMP_RST”是一个信号,1/0 是特定时间戳的信号状态(如 20130407104040.2)。但是,我无法从日志数据文件中获取:“Channel”、“Device1”和“Group1”是什么意思?
2) 我从课堂上了解到“PLC 是一个硬实时系统”。但是,从日志数据文件中我看到:周期时间经常不同。我的意思是需要一些时间(比如说)5 秒,有时是 7 秒。为什么 ?
3)kepware获取的这个日志数据是实际的机器输出吗?还是取自PLC程序?
注意:我是这个领域的新手,上过很少的课。所以,可能是我的问题很愚蠢。请通过提供一些基本的不那么技术性的答案来帮助我。
c# - OpcNetApi DataChange 事件不触发
我正在使用 OpcNetApi 连接到 OPC 服务器。我能够毫无问题地连接和读取数据,但是,当数据更改时,我需要再次读取才能看到更改,尽管我已将处理程序添加到 DataChanged 事件,但我没有收到任何更改事件的通知我的订阅。
我需要做些什么特别的事情才能让它工作吗?
谢谢,
杰弗肯
c++ - 如何将字符串从 Twincat PLC OPC UA 服务器发送到统一自动化 OPC UA C++ 客户端程序
如何将字符串(温度、压力、设定点)值发送到 OPC UA C++ CLIENT 程序意味着客户端可以访问它可以读取或写入的服务器中的值
multithreading - Delphi OmniThreadLibrary + OPC 客户端
我在一个单线程 OPC 客户端程序中工作,管理连接到同一个 OPC 服务器的 3 个不同的西门子 PLC,也是由西门子提供的。
单线程客户端如下所示:
每个 processPLC 程序都会调用底层 OPC 库,例如:
好的,现在我想在不同的线程中调用每个 processPLC 并并行工作。
我做了一些研究并使用 OmniThreadLibrary 开始了一些代码,但我不认为 OPC 代码是多线程安全的。是吗?
我应该使用 task.Invoke 还是类似的东西?ReadOPC 函数如何返回 PLC 标签的值?这里的最佳实践是什么?
谢谢!!!
java - 乌特加德 - 访问被拒绝
我一直无法找到解决我的问题的解决方案,所以我打开了一个新主题。
Utgard ( http://openscada.org/projects/utgard ) 对我来说似乎是一个非常有用的工具。在这个阶段,我只想能够通过 Eclipse 在 Windows 8 操作系统上本地访问 TOP OPC 服务器。但是,当尝试运行他们的教程时,我最终会遇到“访问被拒绝”。我不认为我在用户名、密码等方面犯了任何错误。
Exele OPC DA 测试客户端不返回任何错误。我可以连接、检索和重写值。
请注意,我是 OPC 和 OpenSCADA 的新手。任何帮助将不胜感激。
}
错误堆栈跟踪: