问题标签 [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.
c++ - OPC 连接建立
我是新手。我已经在各种论坛中搜索了 opc 应用程序。他们似乎正在使用美国 SDK 来创建 opc 客户端和服务器应用程序。我已经通过了统一自动化 SDK,并且我成功地连接、读取和写入。但我需要创建自己的 opc 应用程序。我想知道如何在不使用任何外部 SDK 或应用程序的情况下连接 opc 服务器和客户端。在我的第一步中,我想知道在服务器和客户端之间建立连接所需的通信数据包。我试过用wireshark查看通信包,但我无法弄清楚。
我想用 c++ 编写一个简单的程序来在 opc 客户端和服务器之间建立连接,最好是 opc UA。
我也认为我做 opc 应用程序的方法是错误的。开始开发 opc 客户端和 opc 服务器的正确步骤是什么。
请你帮助我好吗。我被这个问题困扰了很长时间。
问候, 西卡
matlab - 如何将用户指定的项目添加到 OPC 数据组
我正在创建一个连接到 OPC 服务器并读取标签属性的 MATLAB 应用程序。MATLAB 文档告诉我,我可以添加一个组,添加标签项,然后读取值:
问题是我不知道标签参数,在我的应用程序中,用户正在弹出菜单中选择一个可用标签,并且该值被写入一个字符串,但是当我调用时:
但是当我运行代码时,MATLAB 会产生错误。我想问题是item1 = additem(Group1, stringName);
在所有 MATLAB 文档示例中,我看到类似item1 = additem(Group1, 'adres.adres.1');
这应该解释为什么我无法将任何数据添加到Group1
.
但是如何将项目添加到必须由用户指定/选择的标签组?
c++ - 用 C 语言访问文件以实现 OPC UA 协议
在 OPC UA 嵌入式堆栈中,已经存在一些库,任务是实现回调函数以方便具有数据访问能力的服务器。
对于历史访问,例如将特定节点(node_handle)的历史数据保存在一个文件中,为了读取该节点的历史数据,提供了以下回调函数
问题是,如何实现这一点?建议的文件格式是什么?uint32_t file_handle
, 这是否意味着,文件就像一个数组,其元素类型为uint32_t
在 C 中,当我想打开一个文件时。我们使用FILE * fopen( const char* file_name, const char * mode)
,该文件是一个二进制文件,但是如何fopen
实现取决于内核系统
先感谢您
python - 为什么我的应用程序泄漏内存?如何避免内存泄漏?
我正在编写一个 OPC 客户端,所以我使用 Python OpenOPC 库。
问题是每次我阅读 OPC 项目列表时,我的应用程序都会消耗内存。
例如,以下代码在每次迭代中消耗大约 100ko:
垃圾收集器返回:
当我关闭应用程序时,内存被释放。
所以我不明白为什么我的应用程序会泄漏内存以及如何避免这种情况。
你有什么想法吗?谢谢
multithreading - OPCItemRead SyncItemServerError:-1073479679
使用 Kepware OPC Server v4.0 的通信库 (OPCServerCommLib.dll) 当我尝试断开与 OPC 服务器的连接时,我开始收到此错误。无法从任何地方获得有关此错误的信息,并且 Kepware 支持无法提供帮助。我认为即使在执行断开连接操作后,我的程序仍必须尝试读取,但我不明白为什么。这基本上是我使用线程读取数据的方式:
.net - 强制 OPC 客户端读取 OPC 服务器缓存
我正在使用 OPC Foundations .NET 库来构建一个 OPC 客户端。客户端正在与 Kepware OPC 服务器 (KEPServerExV5) 进行通信。我的 OPC 客户端正在读取的标签使用作为 OPC 服务器一部分的内置 Modbus TCP/IP 驱动程序。我遇到的问题是我无法对 OPC 服务器上的任何 OPC 标签进行缓存读取,OPC 客户端请求的每个标签值都会导致 OPC 服务器执行设备读取。我需要进行缓存读取,因为在这种情况下,我需要快速读取数据,而不是等到检索到最新数据。
我目前的理解是,该MaxAge
属性用于根据缓存中数据的陈旧程度来确定是否应该执行设备读取或缓存读取。下面是我目前用来执行缓存读取的代码。
使用上面的代码,该Server.Read()
方法会导致 OPC 服务器执行设备读取,即使我已将该MaxAge
属性设置为大约 60 年,这样如果有缓存值,它就永远不会从任何内容中读取。我不明白它为什么这样做。使用订阅方法来阅读也会导致同样的问题,该MaxAge
属性仍然被忽略。
所以我的问题真的归结为:我在强制缓存读取方面缺少什么?
编辑:
好吧,我找到了一种进行缓存读取的方法,尽管这并不是我想要的。如果我创建订阅并执行设备读取,那么之前完成的任何后续读取都device read timestamp + MaxAge property
将是缓存读取。这确实意味着就我的目的而言,一切都必须根据订阅来完成。理想情况下,我希望能够执行一次访问缓存的读取,而不是设置许多订阅,然后我必须管理或显式销毁这些订阅。
如果有人遇到了一种在订阅方法之外读取设备的方法,我很想听听。但就目前而言,我认为就我对缓存读取工作原理的理解而言,我发现的内容就足够了。我将不回答这个问题,因为我不相信我想做的事情不能使用 OPC Foundation .Net 库来完成。
c++ - 允许服务与桌面交互 - Windows 服务与 OPC Server 进行通信
我有一个与 OPC 服务器通信的应用程序。当我将它作为 Windows 服务运行时,它无法打开与 OPC 服务器的连接。当我激活选项“允许服务与桌面交互”时,它起作用了!但是我怎样才能把它作为我的服务应用程序的默认值。我尝试将 SERVICE_INTERACTIVE_PROCESS 标志用于“CreateService”API 函数,但失败并出现 0x0057(无效参数)。
对于 pszAccount 和 pszPassword 为 NULL 以使用本地系统帐户。
opc - 如何知道 OPC Server CLSID?
我正在尝试通过 openscada 连接到 OPC 服务器。
我已经知道 MatrikonOPC explorer 给出的 OPC 服务器程序 ID,但连接不工作可能是由于错误的 DCOM 配置。在继续之前,我想尝试通过服务器 CLSID 进行连接。
如何找出 OPC 服务器 CLSID?
android - 适用于移动平台的跨平台 OPC UA 通信
我正在研究适用于 ios 和 Android 的 OPC UA 客户端选项。我发现在 android 和 iOS 中有一些本地可用的解决方案
安卓版:http: //www.prosysopc.com/blog/2012/02/24/otso/15/#!对于 iOS:http ://www.ascolab.com/en/company-media/company-news-archive/51-2011-news-flash/162-opc-ua-ported-on-iphone.html
但我找不到任何适用于 OPC UA 的跨平台解决方案。谁能帮我解决“OPC UA 的跨平台解决方案”?
如果这些线上没有解决方案,那么 iOS 和 Android 上最好的原生框架是什么?
c++ - 从头开始实施经典 OPC DA 服务器
我想从头开始实现我自己的 OPC DA 服务器(版本 1.X-2.X),但不使用任何第三方。我有一个经典的 OPC DA 客户端(基于 COM/DCOM)。所以我需要创建一个可以连接到服务器的 opc DA Server。
是否有任何类型的文档详细说明了实施 OPC 客户端的过程?