主要内容

浏览OPC UA服务器命名空间

此示例显示了如何查找OPC统一架构(UA)服务器,连接到它们,并浏览其命名空间以查找感兴趣的节点。要在MATLAB会话中运行此示例,您需要安装和启动Prosys OPC UA Simulation Server。阅读OPC Toolbox文档的入门部分以获取更多信息。

OPC UA服务器通过一个或多个名称空间来构造可用数据,这些名称空间由多个连接的节点组成。每个名称空间都有一个唯一标识该名称空间的Index。OPC工具箱公开了两种类型的OPC UA节点:对象节点(帮助组织数据)和变量节点(将数据存储在其Value属性中)。变量节点可以包含其他变量节点作为子节点。

所有OPC UA服务器都必须发布一个服务器节点,其中包含有关OPC UA Server的信息,包括该服务器的功能,服务器的可用功能和其他诊断信息。服务器节点必须作为命名空间索引0,名为“Server”。此示例将探索包含在示例OPC UA Server的服务器节点中的ServerCapabilities节点。

在主机上探索可用的OPC UA服务器

笔记:此示例的本节要求您安装本地发现服务,并配置Prossys OPC UA Simulation Server以注册LDS。如何执行此操作的说明包含在OPC Toolbox文档的“入门”部分中。

OPC UA服务器可以在其主机上注册本地发现服务。本地发现服务(LDS)发布所有可用服务器,以及它们的唯一“地址”(或URL),用于连接该服务器。

您可以在主机上发现OPC UA服务器opcuaserverinfo.本例中使用本地主机。

serverlist = opcuaserverinfo('localhost'
= 1×3 OPC UA ServerInfo数组:一旦指数描述主机端口  ----- ----------------------------------- ---------------------------------- ----- 53530 2 UA示例SimulationServer tmopti01win1064.dhcp.mathworks.com服务器tmopti01win1064历史访问服务器tmopti01win1064 62550 51210 3快速入门

服务器列表显示了可用的OPC UA服务器,以及可以连接到该服务器的主机名和端口号。您可以通过搜索服务器的描述找到特定的服务器。找到包含单词“Simulation”的服务器。

sampleServerInfo = findDescription(确保你,'模拟'
sampleServerInfo = OPC UA ServerInfo 'SimulationServer': Connection Information Hostname: 'tmopti01win1064.dhcp.mathworks.com' Port: 53530

构建OPC UA客户端并连接到服务器

为了浏览服务器名称空间,您需要构造一个OPC UA客户端,并将该客户端连接到服务器。如果您知道OPC UA服务器的主机名和端口,那么您可以使用主机名和端口参数简单地构造一个OPC UA客户端。

UACLIENT = OPCUA('localhost',53530);

如果您之前已发现服务器使用opcuaserverinfo命令,您可以直接从opcuaserverinfo结果。

Uaclient = OPCUA(SampleserverInfo)
uaClient = OPC UA Client SimulationServer: Hostname: tmopti01win1064.dhcp.mathworks.com端口:53530 Timeout: 10 Status: Disconnected

最初客户端与服务器断开连接,并显示了客户端属性的简要摘要。您知道客户端通过查询状态属性来断开连接,或者调用已连接功能。

= uaClient地位。状态与(uaClient)
status ='断开连接'ans =逻辑0

将客户端连接到服务器后,将显示来自服务器的其他属性。

连接(UACLIENT)UACLIET
UAClient = OPC UA客户端SimulationServer:TMOPTI01WIN1064.DHCP.MATHWARCHS.com端口:53530超时:10状态:连接匹配项:运行MINSAMPLERE:0 SEC MAXHISTORYREADNODE:0 MAXHISTORYVALUSEPERNODE:0 MAXReadNodes:0 MaxWreadNodes:0

显示屏显示客户端状态现在“已连接”,服务器处于“运行”状态,并且客户端存储有关服务器限制的信息。在这种情况下,所有限制都设置为零,表明对样本服务器上的读取操作的采样率,最大节点或值没有服务器范围限制。

浏览服务器命名空间

服务器命名空间将递增地直接检索到MATLAB中的OPC UA客户端变量。您使用的是使用服务器命名空间的顶级命名空间财产。此属性存储OPC UA节点。每个节点都可以包含一个或多个子项,它们本身是节点。

topnodes = Uaclient.Namespace.namespace.namespace.namespace.
topNodes = 1x6 OPC UA Node array:索引名称NsInd标识符NodeType孩子  ----- ----------------------- ----- ----------------------- -------- -------- 服务器1 0 2253对象12 2 2 MyObjectsFolder myobject对象1 3 StaticData 3 StaticData对象9 4 NonUaNodeComplianceTest NonUaNodeComplianceTest对象33 5模拟5 85/0:模拟对象7 6 MyBigNodeManager 61000年MyBigNodeManager对象

节点命名'服务器'包含12个孩子。

您可以使用索引将命名空间搜索到可用节点的子属性中。例如,要查找ServerCapabilities节点,您可以查询服务器节点的子节点。

serverChildren = topNodes(1)。孩子们
ServerChildren = 1x12 OPC UA节点阵列:索引名称NSIND标识符Nodetype儿童---------------------------------------- -------- 1 serverstatus 0 2256变量6 2 ServerCapability 0 2268对象14 3 ServerDiagnostics 0 2274对象4 4 VendorServerInfo 0 2295对象0 5 ServerRedundancy 0 2296对象5 6命名空间0 11715对象1 7 ServerConfiguration 0 12637对象5 8 NamespaceArray 0 2255变量0 9审计0 2994变量0 10 ServerArray 0 2254变量0 11估计returntime 0 12885变量0 12 serviceelevel 0 2267变量0

ServerCapabilities节点是列表中的第二个节点。

serverCapabilities = serverChildren (2)
ServerCapabilities = OPC UA节点对象:名称:ServerCapabilities说明:介绍服务器支持的功能。万博1manbetxnamespaceindex:0标识符:2268 NodeType:对象父:服务器子组:14个节点。

在命名空间中搜索节点

您可以从节点变量或直接从名称空间属性搜索节点。找到“servercapabilities”节点而不索引到命名空间属性,使用findnodebyname..为避免搜索找到包含单词“ServerCapabilities”的所有节点实例,请使用“好玩”范围。

servercapabilities = findnodebyname(topnodes,“ServerCapabilities”“好玩”
ServerCapabilities = OPC UA节点对象:名称:ServerCapabilities说明:介绍服务器支持的功能。万博1manbetxnamespaceindex:0标识符:2268 NodeType:对象父:服务器子组:14个节点。

找到包含“double”单词中的所有节点,使用该命令查询所有顶部'-部分的'范围。请注意,此搜索将将整个命名空间加载到MATLAB中,因此请谨慎使用此搜索方法。

doubleNodes = findNodeByName (topNodes,“双”'-部分的'
DoubleNodes = 1x6 OPC UA节点阵列:索引名称NSIND标识符Nodetype儿童-----  -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   ----------------- -------- -------- 1张4双变量0 2 DoubleAnalogItemArray 3 DoubleAnalogItemArray变量3 3 3 DoubleAnalogItem可变DoubleAnalogItem 34 DoubleDataitem 3 DoubleDataitem变量1 5 Doublearray 3 Doublearray变量0 6双3双变量0

了解nodetype.

节点具有NodeType,它描述该节点是否只是组织单位(对象Nodetype)或包含可以读取或写入的数据(变量NodeType)。对象节点的示例是上面显示的ServerCapabilities节点。您无法从对象节点读取数据。在这个例子中,双峰仪不包含对象节点和6个变量节点。

ALLNODETYPES = {DOUBLENODES.NODETYPE}
allNodeTypes = 1×6 cell array列1到4 {'Variable'} {'Variable'} {'Variable'} {'Variable'} {'Variable'}列5到6 {'Variable'} {'Variable'}

变量Nodetypes可能包含子项 - 变量的NodeType不保证节点不包含儿童。列出的第二节点是可变节点(因此可以读取其值),但也具有子节点(可以单独读取)。有关从节点读取值的信息,请参阅readValue

了解变量Nodetype属性

Variable节点具有描述存储在Variable节点中的数据的附加属性,包括该节点的服务器数据类型和访问权限。要查看这些属性,请显示一个Variable节点。

DoubleNodes(2)
ans = opc ua节点对象:名称:doubleareAnalogitemarray描述:namespaceindex:3标识符:doubleareAnalogitemarray nodetype:变量父:模拟arrays子项:3个节点。ServerDataType:Double AccessLevelCurrent:Read / Write AccessLevelhistory:无历史:0

这个节点有serverdatype.'double',并允许读取和写入当前值(AccessLevelCurrent属性),但不支持历史数据读取万博1manbetx(AccessLevelHistory)。服务器不是历史性化的这个节点,如此证明Historizing财产。

一些属性,比如ServerValueRank, 和ServerArrayDimensions在节点的显示中未显示,但可以通过相应的属性查询。有关详细信息,请参阅这些属性的帮助。

DoubleNodes(2).serverarraydimensions
ans = uint32 0

构建节点直接

节点是由它们的NamespaceIndex和它们的Identifier唯一定义的。可以构造已知节点,而不需要浏览命名空间财产使用opcuanode.功能。例如,要直接构造ServerCapAbilities节点,可以使用NamespaceIndex 0和标识符2268(所有OPC UA服务器必须使用此命名空间Index和标识符发布ServerCapabilities节点)。

CapabitiesNode = Opcuanode(0,2268,Uaclient)
CAPABIBERIESNODE = OPC UA节点对象:名称:ServerCapabilities说明:介绍服务器支持的功能。万博1manbetxnamespaceindex:0标识符:2268 nodetype:对象子节点:14个节点。

请注意使用的节点opcuanode.没有父财产。

Capabifiessnode.Parent.
ans =空OPC UA节点对象。

但是,如果节点与一个已连接的OPC UA客户端相关联,则会自动检索它们的子节点。

Capabiessnode.children.
ans = 1x14 OPC UA节点阵列:索引名称NsInd标识符NodeType孩子  ----- ---------------------------- ----- ---------- -------- -------- 1 ModellingRules 0 2996 6 2 AggregateFunctions 0 2997对象14 3 HistoryServerCapabilities 0 11192 15 4 OperationLimits 0 11704对象12 5 LocaleIdArray 0 2271变量0 6 MinSupportedSampleRate 0 2272 0 7万博1manbetxMaxQueryContinuationPoints 0 0 8 MaxByteStringLength 0 12911 2736变量变量0 9 ServerProfileArray 0 2269 0 10 MaxHistoryContinuationPoints 0 2737变量0 11 SoftwareCertificates 0 3704 0 11703变量MaxStringLength 0 0 13 MaxBrowseContinuationPoints 0 2735变量0 14 MaxArrayLength 0 11702 0

断开服务器的连接

完成与服务器通信时,应断开客户端与服务器的连接。当客户端变量超出Matlab范围时,也会自动执行。

断开(uaClient);