请解释OPC UA和OPC DA之间的区别是什么?
在哪种情况下应该使用哪一种,如果可以为OPC UA和OPC DA提供任何示例,那将会很有帮助
作为访问由各种PLC组成的系统的过程数据的解决方案,OPC-UA是否还有其他可行的替代方案?什么是平台独立的,可以与不同品牌的产品"说话"?
我听说过MQTT,但它似乎更像是传输协议,只有那样.它没有像信息建模等所有更高级别的东西.
谢谢你的帮助!
我想根据两种协议的一般特征比较OPC UA和MQTT,例如Overhead(数据包),安全性,信息建模和可靠性.我在哪里可以找到每个协议的Overhead和其他特征的一些示例数据,以便我对它们进行比较.我需要你的建议.您可以建议任何工具来比较这些协议.
我正在使用OPC UA Foundation SDK开发一个小客户端.什么是最小的C#代码:
我得到服务器端点(没有发现),安全性无.
代码不应该使用配置文件,也不需要STA.
对此的任何帮助都不仅仅是值得赞赏的.
我正在使用 Eclipse Milo 编写 OPC UA 客户端并偶然发现以下问题:客户端如何处理连接丢失。
对于监视值,我使用 SubscriptionManager 订阅来执行此操作:
OpcUaClient client = myCreateClient();
List<MonitoredItemCreateRequest> items = myCreateMonitoredItems();
UaSubscription subscription = client.getSubscriptionManager().createSubscription(1_000.0).get();
List<UaMonitoredItem> result = subscription.createMonitoredItems(TimestampsToReturn.Both, items).get();
for (UaMonitoredItem item : result) {
if (!item.getStatusCode().isBad()) {
item.setValueConsumer(value -> System.out.println("Update: " + value));
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我重新启动同样使用 Eclipse Milo 实现的 OPC UA 服务器时,我确实看到客户端重新连接,但订阅没有获得更多更新。在日志中,我得到以下输出:
09:11:15.734 [ua-shared-pool-0] DEBUG o.e.m.o.s.c.s.OpcUaSubscriptionManager - Publish service failure: StatusCode{name=Bad_NoSubscription, value=0x80790000, quality=bad}
java.util.concurrent.CompletionException: UaServiceFaultException: status=Bad_NoSubscription, message=There is no subscription available for this session.
<stack-trace-omitted>
…
Run Code Online (Sandbox Code Playgroud)
所以看起来 OpcUaSubscriptionManager 意识到了这种情况,但并没有尝试重新注册这些项目。这是要手动完成吗?
我正在使用Java OPC-UA客户端Eclipse Milo。每当我使用服务器的端点URL创建会话时,方法都会UaTcpStackClient.getEndpoints()
将URL更改为localhost
。
String endpointUrl = "opc.tcp://10.8.0.104:48809";
EndpointDescription[] endpoints = UaTcpStackClient.getEndpoints(endpointUrl).get();
EndpointDescription endpoint = Arrays.stream(endpoints)
.filter(e -> e.getSecurityPolicyUri().equals(securityPolicy.getSecurityPolicyUri()))
.findFirst().orElseThrow(() -> new Exception("no desired endpoints returned"));
Run Code Online (Sandbox Code Playgroud)
但是return的endpoint.getEndpointUrl()
值opc.tcp://127.0.0.1:4880/
会导致连接失败。
我不知道为什么我的OPC URL被更改了?
我对 OPC-UA 世界完全陌生。
我需要建立一个关于如何让我们的 ERP 与 PLC 通信的概念证明。我正在评估充当 OPC-UA 服务器的软件(它正在运行)。我发现了 Milo 并让代码在 Eclipse 中工作。查看示例,我将一个玩具程序连接到 OPC-UA 服务器并执行...
基本的管道工作,但我不知道从哪里开始使用 OPC-UA 和 Milo。我一直无法找到介绍材料来帮助我理解这一切。
是否有关于 OPC-UA 架构以及 Milo 如何实现的文档?有没有比查看示例来弄清楚应该如何做更好的方法呢?
我是 OPC-UA 世界和 Eclipse Milo 的新手。我不明白这里的安全性是如何工作的,讨论 eclipse-milo 提供的客户端示例
我发现连接 OPCUA 服务器时使用了一些安全属性:
SecurityPolicy、MessageSecurityMode、clientCertificate、clientKeyPair、setIdentityProvider、
我试图运行 client-examples -> BrowseNodeExample。此示例在内部运行ExampleServer。ExampleServer 配置为与匿名和用户名密码提供程序一起运行。它还必然接受SecurityPolicy.None
, Basic128Rsa15
, Basic256
,Basic256Sha256
和MessageSecurityMode
as ,SignandEncrypt
除了SecurityPolicy.None
where MessageSecurityMode
isNone
也是如此。
SecurtiyPolicy
和配对连接到服务器(没有提供客户端证书)。MessageSecurityMode
但我不能对 做同样的事情UsernameProvider
,因为UsernameProvider
只能SecurityPolicy
MessageSecurityMode
配对None
成功运行。所有其他对都会引发安全检查失败异常(当提供证书时),否则用户访问被拒绝(当未提供客户端证书时)。如何使这项工作有效?最后,如果有人能向我指出 Eclipse Milo 的正确用户文档,那就太好了。因为除了示例代码之外我看不到任何文档,而且它们也没有记录。
我有一个在铣床上运行的 OPC 服务器,并且想要访问机器中当前可用的工具的名称。
我知道我正在寻找的变量的名称是
Sinumerik/Tool/Catalogue/toolIdent[1]
Sinumerik/Tool/Catalogue/toolIdent[2]
Run Code Online (Sandbox Code Playgroud)
等等。我可以在 uaexpert 等查看器中看到相应的值。
虽然我可以访问
Sinumerik/Tool/Catalogue/toolIdent
Run Code Online (Sandbox Code Playgroud)
通过依次从根向下走,使用诸如
children=Position.get_children()
for child in children:
Position=child
Run Code Online (Sandbox Code Playgroud)
这种方法不起作用,toolIdent[1]
因为这不是一个孩子。
如何访问数组的这些值?
编辑:另外一个备注:工具的名称存储为节点的值,而不是变量。我遇到过 get_array_dimensions 函数,但这似乎只适用于变量。
EDIT2:我附上了我正在寻找的阵列的UAEExpert视图的屏幕截图。数组的前三个值是 3D_BLUM、12 和 98。
EDIT3:在UAEExpert中,我可以toolIdent[2]
通过使用“添加自定义节点”命令,选择一个字符串节点并提供“/Tool/Catalogue/toolIdent[2]”作为NodeId的参数来查看内容。我试图找出如何使用 python(最好是 opcua 库,并且我正在为在 Python 中实现这个目标提供赏金。