OPC-UA "Value" 和 "Attribute Value" 有什么区别
OPC-UA whats the difference between "Value" and "Attribute Value"
我其实是在学习OPC-UA。我正在使用 LibUA 的 c# 演示服务器(可以在这里免费下载:https://github.com/nauful/LibUA)。对于那里的每个节点,我看到两个值,一个在“数据访问视图”中不断变化,一个在“属性”视图中是静态的:
在查看代码并阅读订阅在 OPC-UA 中的工作原理后,我现在明白了为什么动态值不断变化。但是属性 window 中的这个“静态”值是怎么回事?这是什么原因?为什么我们每个节点有两个值,一个是动态的,一个是静态的?
静态的是由演示服务器中名为“HandleReadRequestInternal”的方法生成的。什么是“内部”读取请求?我在规格中找不到任何关于此的内容。也许一些专家可以在这里帮助我澄清一些。 :)
谢谢!
Value 是可以从 Node 读取的属性之一,其他还有 BrowseName、DisplayName、DataType、ValueRank 等
右边的列表显示了节点树中被点击的节点的属性,点击时只读一次,独立于订阅,因此不定期更新。
这里我们处理 OPC UA 客户端工具中的两个不同视图:
1.数据访问视图中的动态值
您在数据访问视图中看到的动态值是以配置的发布间隔从服务器接收到的节点的最新值。这与 OPC UA 中数据更改通知的订阅有关,用于减少从客户端连续轮询服务器中节点值的开销。
- OPC UA 客户端可以订阅服务器中的变量节点以减少开销
- OPC UA 服务器将以可配置的采样间隔监控那些变量节点的值
- OPC UA 服务器将以可配置的发布间隔通知客户端数据更改
- OPC UA 客户端每次在从服务器收到的数据更改通知中更改其值时,都会更新数据访问视图中变量节点的值
2。属性视图中的静态值
您在属性视图中看到的静态值是您每次点击节点或每次点击属性中的刷新按钮时客户端从服务器获取的变量节点的值看法。这是通过 OPC UA 读取服务完成的,您可以使用该服务读取节点的属性(在本例中为值属性)。此处粘贴的示例 Wireshark 跟踪的屏幕截图显示了一个示例 - 您可以看到 OPC UA 客户端发送到服务器以读取 NodeId 为 2258 的节点的值属性的 ReadRequest 数据包。
我看到您正在学习 OPC UA 并使用开源实现。以下是您可能有兴趣尝试的其他一些开源实现:
- open62541 – https://open62541.org/certified-sdk.html – C 堆栈 | Mozilla 许可证 |嵌入式就绪 | TSN 就绪
- NodeOPCUA – https://node-opcua.github.io/ – NodeJS |麻省理工学院执照 |云就绪
- FreeOpcUa – https://github.com/FreeOpcUa/freeopcua – C++ | LGPL-3.0 许可证 | Python 绑定
- UA .NET 堆栈 – https://github.com/OPCFoundation/UA-.NETStandard – OPC 基金会企业成员的 RCL 许可和其他人的 GPL 2.0 |标准型材 |面向 Web 的实现
如果您正在寻找更多实践信息,您还可以查看这些资源:
- 免费文档:可以查看开源文档页面:https://open62541.org/doc/current/
- 付费在线课程:OPC UA 实用介绍 – 本课程中的代码演练和示例使用 open62541 堆栈:https://opcfoundation.org/products/view/practical-introduction-to-opc-ua-part-i
我其实是在学习OPC-UA。我正在使用 LibUA 的 c# 演示服务器(可以在这里免费下载:https://github.com/nauful/LibUA)。对于那里的每个节点,我看到两个值,一个在“数据访问视图”中不断变化,一个在“属性”视图中是静态的:
在查看代码并阅读订阅在 OPC-UA 中的工作原理后,我现在明白了为什么动态值不断变化。但是属性 window 中的这个“静态”值是怎么回事?这是什么原因?为什么我们每个节点有两个值,一个是动态的,一个是静态的?
静态的是由演示服务器中名为“HandleReadRequestInternal”的方法生成的。什么是“内部”读取请求?我在规格中找不到任何关于此的内容。也许一些专家可以在这里帮助我澄清一些。 :)
谢谢!
Value 是可以从 Node 读取的属性之一,其他还有 BrowseName、DisplayName、DataType、ValueRank 等
右边的列表显示了节点树中被点击的节点的属性,点击时只读一次,独立于订阅,因此不定期更新。
这里我们处理 OPC UA 客户端工具中的两个不同视图:
1.数据访问视图中的动态值
您在数据访问视图中看到的动态值是以配置的发布间隔从服务器接收到的节点的最新值。这与 OPC UA 中数据更改通知的订阅有关,用于减少从客户端连续轮询服务器中节点值的开销。
- OPC UA 客户端可以订阅服务器中的变量节点以减少开销
- OPC UA 服务器将以可配置的采样间隔监控那些变量节点的值
- OPC UA 服务器将以可配置的发布间隔通知客户端数据更改
- OPC UA 客户端每次在从服务器收到的数据更改通知中更改其值时,都会更新数据访问视图中变量节点的值
2。属性视图中的静态值
您在属性视图中看到的静态值是您每次点击节点或每次点击属性中的刷新按钮时客户端从服务器获取的变量节点的值看法。这是通过 OPC UA 读取服务完成的,您可以使用该服务读取节点的属性(在本例中为值属性)。此处粘贴的示例 Wireshark 跟踪的屏幕截图显示了一个示例 - 您可以看到 OPC UA 客户端发送到服务器以读取 NodeId 为 2258 的节点的值属性的 ReadRequest 数据包。
我看到您正在学习 OPC UA 并使用开源实现。以下是您可能有兴趣尝试的其他一些开源实现:
- open62541 – https://open62541.org/certified-sdk.html – C 堆栈 | Mozilla 许可证 |嵌入式就绪 | TSN 就绪
- NodeOPCUA – https://node-opcua.github.io/ – NodeJS |麻省理工学院执照 |云就绪
- FreeOpcUa – https://github.com/FreeOpcUa/freeopcua – C++ | LGPL-3.0 许可证 | Python 绑定
- UA .NET 堆栈 – https://github.com/OPCFoundation/UA-.NETStandard – OPC 基金会企业成员的 RCL 许可和其他人的 GPL 2.0 |标准型材 |面向 Web 的实现
如果您正在寻找更多实践信息,您还可以查看这些资源:
- 免费文档:可以查看开源文档页面:https://open62541.org/doc/current/
- 付费在线课程:OPC UA 实用介绍 – 本课程中的代码演练和示例使用 open62541 堆栈:https://opcfoundation.org/products/view/practical-introduction-to-opc-ua-part-i