有没有办法在连接OPC UA服务器时减少在OPC UA客户端中浏览标签的时间?

3

我已经通过采样间隔和发布间隔进行了降低和检查,但是没有产生影响。您有什么建议吗?请告诉我。


采样间隔和发布间隔是用于订阅(监视项)的,与浏览无关。您所说的“标签浏览时间”是什么意思?您是在进行一次浏览调用,而该调用需要很长时间,还是在进行多个调用,总共需要很长时间? - ZbynekZ
我已经在Kep服务器中配置了批量标签。当在客户端浏览地址空间中的文件夹以打开该文件夹中存在的批量标签时,一个浏览调用需要更长的时间。可能出现了什么问题? - Kalaiyarasan B
如果标签非常多(有多少?),且客户端没有做一些“愚蠢”的事情(例如分小块进行浏览),那么可能无法提供帮助,因为这只是服务器完成请求所需要的时间加上传输数据的时间。如果您可以使用某种方式而实际上并不需要所有标签,而是可以指定一个更窄的过滤器,请使用它来减少数据/标签的数量。但是,在某些情况下,您确实需要所有标签... - ZbynekZ
1个回答

2
如前所述,SamplingIntervalPublishingInterval不会影响Browse服务。这就是为什么您看不到任何改进的原因。
在OPC UA中浏览对两端都很昂贵,但您可能可以进行一些优化。
我不知道您使用的是什么技术(或SDK或语言),但以下是您可以调查的一些事项:
  1. 过滤您的浏览请求:例如,如果您只对对象和变量感兴趣,而对类型等不那么感兴趣,则可以将nodeClassMask应用于您的浏览请求(您的SDK或堆栈应该允许)。这将极大地减少响应中传递的信息。
  2. 选择您的浏览方向:在浏览请求中,您可以指定browseDirection标志,以告诉服务器遵循某些类型的引用(正向、反向或两者)。在大多数情况下,如果您正在浏览变量和对象,那么您想要的是正向。这也将加快请求/响应。您将在同一规范以及您的SDK文档中看到该参数。
  3. 选择一个引用类型进行跟踪:类似于#2,您可以选择一个特定的引用类型用于您的浏览(即Organizes、HasComponent、HasTypeDefinition等),以减少有效载荷。此浏览请求参数称为referenceTypeId。
有关使用Browse请求的详细信息,请参见OPC规范的此部分
为了让您了解,以下是使用OPC UA .NET-Standard C# API进行浏览请求并过滤一些参数的代码片段:
session.Browse(
                null,
                null,
                ObjectIds.ObjectsFolder,
                0u,
                BrowseDirection.Forward, //forward only
                ReferenceTypeIds.HierarchicalReferences, //only hierarchical
                true,
                (uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method,
                out continuationPoint,
                out references);

希望这能给你一些帮助。OPC UA有时可能会很繁琐...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接