- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名 OPC-UA 新手,使用 Milo 堆栈将非 OPC-UA 系统集成到 OPC-UA 服务器。其中一部分包括将值写入 OPC-UA 服务器中的节点。我的问题之一是来自其他系统的值以 Java String 的形式出现,因此需要转换为节点的正确数据类型。我的第一个强力概念验证使用以下代码来创建一个我可以用来写入节点的变体(如在 WriteExample.java 中)。变量 value 是包含要写入的数据的 Java 字符串,例如整数为“123”, double 为“32.3”。该解决方案现在包括对标识符类(org.eclipse.milo.opcua.stack.core,请参阅 switch 语句)中的“类型”进行硬编码,这并不漂亮,我相信有更好的方法来做到这一点?另外,如果我想将“123”转换并写入一个节点,例如,我该如何继续 UInt64?
try {
VariableNode node = client.getAddressSpace().createVariableNode(nodeId);
Object val = new Object();
Object identifier = node.getDataType().get().getIdentifier();
UInteger id = UInteger.valueOf(0);
if(identifier instanceof UInteger) {
id = (UInteger) identifier;
}
System.out.println("getIdentifier: " + node.getDataType().get().getIdentifier());
switch (id.intValue()) {
// Based on the Identifiers class in org.eclipse.milo.opcua.stack.core;
case 11: // Double
val = Double.valueOf(value);
break;
case 6: //Int32
val = Integer.valueOf(value);
break;
}
DataValue data = new DataValue(new Variant(val),StatusCode.GOOD, null);
StatusCode status = client.writeValue(nodeId, data).get();
System.out.println("Wrote DataValue: " + data + " status: " + status);
returnString = status.toString();
} catch (Exception e) {
System.out.println("ERROR: " + e.toString());
}
我查看了 Kevin 对此主题的回复:How do I reliably write to a OPC UA server?但我还是有点迷茫……一些小的代码示例真的很有帮助。
最佳答案
你离得并不远。每个相当大的代码库最终都有一个或多个“TypeUtilities”类,您将需要一个。
无法回避的事实是,您需要能够将系统中的类型映射到 OPC UA 类型,反之亦然。
对于无符号类型,您将使用 org.eclipse.milo 中的
包。有一些方便的静态工厂方法可以使它们的使用不那么冗长:UShort
、UInteger
和 ULong
类。 opcua.stack.core.types.builtin.unsigned
UShort us = ushort(foo);
UInteger ui = uint(foo);
ULong ul = ulong(foo);
我将探索为即将发布的版本包含某种类型转换实用程序的想法,但即便如此,OPC UA 的工作方式你必须知道节点的数据类型才能写入它,而且在大多数情况下您还想知道 ValueRank 和 ArrayDimensions。
您要么事先知道这些属性值,通过其他一些带外机制获取它们,要么从服务器读取它们。
关于opc-ua - 写入 Milo 中的 OPC-UA 节点时如何设置正确的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59070426/
我是 OPC 统一架构世界的新手,我正在从基础开始学习它。命名空间到底是什么?为什么它总是附加 NodeID? 最佳答案 OPC UA 中的命名空间就像节点 ID 的容器。OPC 基金会有索引为 0
我一直在互联网上阅读,以很好地解释 OPC-UA 中的节点。似乎有一些库可以用于它,但实际上没有一个解释节点。 OPC-UA 中节点的用途是什么? 注意:此处为 OPC 和 OPC-UA 菜鸟 最佳答
我对 OPC-UA 世界完全陌生。 我需要建立一个关于如何让我们的 ERP 与 PLC 通信的概念证明。我正在评估充当 OPC-UA 服务器的软件(它正在运行)。我发现了 Milo 并让代码在 Ecl
我是 OPC UA 世界的新手。谁能指导我如何使用 OPCFoundation/UA-.NETStandard 在 c# 中创建自定义复杂类型。在我的 CreateAddressSpace 方法中,我
我是一名 OPC-UA 新手,使用 Milo 堆栈将非 OPC-UA 系统集成到 OPC-UA 服务器。其中一部分包括将值写入 OPC-UA 服务器中的节点。我的问题之一是来自其他系统的值以 Java
我正在尝试通过使用位于 https://github.com/OPCFoundation/UA-.NET 的 Open OPC-UA.NET 实现从 SINUMERIK 840d 调用 OPC-UA
我已经减少并检查了 SamplingInterval 和 PublishingInterval..values 没有影响。你能提出任何建议吗?让我知道。 最佳答案 如前所述,SamplingInter
我正在开发一个 OPC UA 客户端应用程序,它读取存储在 OPC UA 服务器上的文件。出于测试目的,我需要一个 OPC UA 服务器模拟器,我可以在其中添加 FileType 节点并配置这些节点。
我是 OPC-UA 世界和 Eclipse Milo 的新手。我不明白这里的保安是如何运作的,讨论eclipse-milo提供的client-example 我发现连接 OPCUA 服务器时使用了一些
谁有 OPC UA 的模拟器示例,我正在使用 OPC UA 项目 https://github.com/OPCFoundation/UA-Java . 我已经尝试了此 git hub 页面上提到的所有
我正在尝试使用 unifiedautomation 的 opc ua DLL 从 Opc ua 服务器(西门子)读取日期和时间 (#DT)。但是我得到了错误的值: 西门子 S7 1500 opc ua
开源 OPC UA Milo 服务器是否支持基于事件的数据源?例如。当服务器将节点(测量点)的采样率设置为 0(零)时,服务器会生成事件源生成的所有样本吗?如果是这样,在哪里寻找示例或说明如何实现这一
我刚刚在野外看到了这个元标记,想知道它的作用以及为什么要使用它? 阅读documentation在 About.com 上,它说: "IE=edge" tells Internet Explorer
在我基于 milo 的 OPC-UA 客户端实现中,我需要大量订阅。因此我使用了以下示例: https://github.com/eclipse/milo/blob/master/milo-examp
我似乎无法弄清楚这一点: 在写入标记之前,我需要知道它期望的数据类型(mywrite 函数接收的值始终是字符串)。 我意识到您必须从服务器读取数据类型,这是我的代码,但我不知道如何使用返回的信息: v
我在处理 ANSI C 堆栈中的 OPC UA 订阅和通知时遇到问题。 OPC UA 第 4 部分,服务说: 5.13.1 Subscription model 5.13.1.1 Descriptio
我在处理 ANSI C 堆栈中的 OPC UA 订阅和通知时遇到问题。 OPC UA 第 4 部分,服务说: 5.13.1 Subscription model 5.13.1.1 Descriptio
我希望限制我的 webapp 仅在手持设备上使用,并在桌面上完全禁用。 有大量库可用于设备检测,但所有嗅探User-Agent 很容易被伪造。是否有任何库可以超越 UA 并使用其他检查来确保设备确实是
我是 opcua 的新手,我一直在尝试通过以下方式进行通信: 服务器导入xml --> 客户端读取一个值(使用get_node) --> 根据该值,客户端向服务器发送请求 --> 服务器响应请求 --
我正在构建一个 Android 应用程序来显示来自服务器的内容提要。服务器是一个移动网站(如 http://m.google.com ),它跟踪来自各种移动客户端的流量。要区分 Android 客户端
我是一名优秀的程序员,十分优秀!