主要内容

浏览OPC UA Server命名空间

这个示例向您展示了如何找到OPC统一架构(UA)服务器,连接到它们,并浏览它们的名称空间以找到感兴趣的节点。要在MATLAB会话中运行这个示例,需要安装并启动Prosys OPC UA仿真服务器。详细信息请阅读OPC工具箱文档的入门部分。

OPC UA服务器通过一个或多个名称空间提供可用数据,由多个连接节点组成。每个命名空间都有一个唯一标识命名空间的索引。OPC Toolbox公开了两种类型的OPC UA节点:对象节点,这有助于组织数据和可变节点,在其value属性中存储数据。变量节点可能包含其他变量节点作为儿童。

所有OPC UA服务器必须发布一个服务器节点,包含了关于OPC UA服务器包括服务器的能力,服务器和其它诊断信息的可用功能的信息。服务器节点必须存在的命名空间索引0,命名为“服务器”。这个例子将探讨包含在例如OPC UA服务器的服务器节点ServerCapabilities节点。

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

笔记:这个例子中的这部分需要你安装本地搜索服务,并配置PROSYS OPC UA模拟服务器与LDS注册。说明如何做到这一点包括在OPC工具箱文档的入门部分。

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

您可以使用发现OPC UA服务器提供的主机上opcuaserverinfo.。此示例使用本地主机。

确保你= opcuaserverinfo (“localhost”
ServerList = 1×3 OPC UA ServerInfo数组:索引说明Hostname端口-----  -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   ----- ----------------------------- ----- 1 Simulationserver TMOPTI01WIN1064.DHCP.MATHWARKS。com 53530 2 UA Sample Server tmopti01win1064 51210 3 Quickstart Historical Access Server tmopti01win1064 62550

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

sampleserverinfo = finddescription(serverlist,“模拟”
SampleserverInfo = OPC UA ServerInfo'SimulationServer':连接信息Hostname:'tmopti01win1064.dhcp.mathworks.com'端口:53530

构造一个OPC UA客户端并连接到服务器

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

uaClient = opcua (“localhost”,53530);

如果您以前使用opcuaserverinfo.命令,您可以直接构建客户端opcuaserverinfo.结果。

uaClient = opcua (sampleServerInfo)
UAClient = OPC UA客户端Simulationserver:hostname:tmopti01win1064.dhcp.mathworks.com端口:53530超时:10状态:断开连接

最初,客户机与服务器断开连接,并显示客户机属性的简要摘要。通过查询Status属性或调用与一函数。

status = UAClient.Status Isconnected(Uaclient)
status = '断开连接' ans =逻辑0

一旦您将客户机连接到服务器,就会显示来自服务器的其他属性。

连接(uaClient)uaClient
uaClient = OPC UA Client SimulationServer: Hostname: tmopti01win1064.dhcp.mathworks.com Port: 53530 Timeout: 10 Status: Connected ServerState: Running MinSampleRate: 0 sec MaxHistoryReadNodes: 0 MaxHistoryValuesPerNode: 0 MaxReadNodes: 0 MaxWriteNodes: 0

显示屏显示该客户端的状态现在是“连接”,服务器在“运行”状态,并在客户端存储关于服务器的限制。在这种情况下,所有参数都设置为0,表示存在的采样率,最高的节点或样本服务器上读取操作的值没有服务器范围的限制。

浏览服务器名称空间

服务器命名空间增量直接检索到MATLAB中的OPC UA客户端变量。您使用访问服务器命名空间的顶层名称空间财产。此属性存储OPC UA节点。每个节点可以包含一个或多个的儿童,其本身的节点。

topNodes = uaClient。名称空间
topnodes = 1x6 opc ua节点阵列:索引名称nsind标识符nodetype儿童-----  -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  ---- ---------------------------------------3 staticdata对象9 4 nonuanodecompliancetest 4 nonuanodecompliancetest对象33 5仿真5 85/0:仿真对象7 6 mybignodemanager 6 mybignodemanager对象1000

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

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

ServerChildren = Topnodes(1).Children
serverChildren = 1x12 OPC UA节点数组:索引名称NsInd标识符NodeType孩子  ----- ------------------- ----- ---------- -------- -------- 1 ServerStatus 0 2256变量6 2 ServerCapabilities 0 2268 2274 3 ServerDiagnostics 0对象4 4 VendorServerInfo 0 2295 0 5 ServerRedundancy 0 2296对象5 6 0 11715对象1 7 ServerConfiguration 0 12637名称空间对象5 8 NamespaceArray 0 2255 Variable 0 9 Auditing 0 2994 Variable 0 10 ServerArray 0 2254 Variable 0 11 EstimatedReturnTime 0 12885 Variable 0 12 ServiceLevel 0 2267 Variable 0

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

servercapabilities = serverchildren(2)
serverCapabilities = OPC UA Node对象:名称:ServerCapabilities说明:描述服务器所支持的功能。金宝appNamespaceIndex:0标识符:2268节点类型:对象父:服务器孩子:14个节点。

搜索节点的命名空间

您可以搜索节点从节点变量,或者直接从Namespace属性。为了找到“ServerCapabilities”节点没有索引到名称空间财产,使用findNodeByName。为了避免搜索查找包含“ServerCapabilities”这个词的节点的所有实例'-一次'参数。

serverCapabilities = findNodeByName (topNodes,'servercapabilities''-一次'
serverCapabilities = OPC UA Node对象:名称:ServerCapabilities说明:描述服务器所支持的功能。金宝appNamespaceIndex:0标识符:2268节点类型:对象父:服务器孩子:14个节点。

要查找包含在名称中的“双师型”的所有节点,查询中使用的所有topNodes'-部分的'参数。注意,这个搜索将把整个名称空间加载到MATLAB中,所以要小心使用这个搜索方法。

doubleNodes = findnodebyname(Topnodes,'双倍的''-部分的'
doubleNodes = 1x6 OPC UA索引名称NsInd标识符NodeType孩子  ----- --------------------- ----- --------------------- -------- -------- 1双4双变量0 2 DoubleAnalogItemArray 3 DoubleAnalogItemArray变量3 3 DoubleAnalogItem 3 DoubleAnalogItem变量3 4 DoubleDataItem 3 DoubleDataItem变量1 5 DoubleArray 3 DoubleArray变量0 6双3双变量0

了解节点类型

节点有一个NodeType来描述该节点是一个简单的组织单元(对象NodeType)还是包含可读或可写的数据(变量NodeType)。Object节点的一个例子是上面所示的ServerCapabilities节点。不能从Object节点读取数据。在这个例子中,doubleNodes不包含对象节点,并且6个可变节点。

allNodeTypes = {doubleNodes.NodeType}
AllNodetypes = 1×6个单元阵列列1到4 {'变量'} {'变量'} {'变量'} {'变量'}列5到6 {'变量'} {'变量'}

变量NodeType可能包含子节点—变量的NodeType不保证节点不包含子节点。列出的第二个节点是一个变量节点(因此它的Value可以被读取),但它也有子节点(可以单独读取)。有关从节点读取值的信息,请参见ReadValue.

了解变量NodeType属性

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

doubleNodes (2)
ANS = OPC UA节点对象:名称:DoubleAnalogItemArray描述:NamespaceIndex:3标识符:DoubleAnalogItemArray的NodeType:变量家长:AnalogItemArrays儿童:3个节点。ServerDataType:双AccessLevelCurrent:读/写AccessLevelHistory:无历史化:0

这个节点有一个ServerDataType,并允许对Current值(AccessLevelCurrent.财产)但支持没有历史数据阅读金宝app(AccessLevelhistory.).服务器没有记录该节点的历史记录,由历史性化财产。

一些属性,例如servervaluerank., 和serverarraydimensions.在一个节点的显示中没有示出,但可通过各自的属性进行查询。查看这些属性的详细信息帮助。

doubleNodes(2)。serverarraydimensions.
Ans = uint32 0

直接构建节点

节点由其NamespaceIndex及其标识符唯一定义。您可以在不浏览的情况下构建已知节点名称空间物业使用opcuanode函数。例如,要直接构造ServerCapabilities节点,您可以使用NamespaceIndex 0和Identifier 2268(所有OPC UA服务器必须使用这个NamespaceIndex和Identifier发布一个ServerCapabilities节点)。

capabilitiesNode = opcuanode(0,2268,uaClient)
capabilitiesNode = OPC UA Node对象:名称:ServerCapabilities说明:描述服务器所支持的功能。金宝appNamespaceIndex:0标识符:2268节点类型:对象儿童:14个节点。

需要注意的是使用节点构建opcuanode没有Parent属性。

capabilitiesNode。父
ANS =空OPC UA节点对象。

但是,如果节点与连接的OPC UA客户端关联,则会自动检索其子项。

capabilitiesNode。孩子们
ANS = 1x14 OPC UA节点阵列:索引名称NSIND标识符Nodetype儿童----- ----------------------------  ---------- --------------------------------2996对象6 2聚合功能0 2997对象14 3 HistoryerverCapabilities 0 11192对象15 4 OperationLimits 0 11704对象12 5 LocaleIdArray 0 2271变量0 6 minsupportedSamp金宝applerge 0 2272变量0 7 maxQueryContinuityPoints 0 2736变量0 8 maxbytringlength 0 12911变量0 9 serverprofilearray 0 2269变量0 10 maxhistorycontinuitions 0 2737变量0 11 softwareCertificates 0 3704变量0 12 maxstringlength 0 11703变量013 maxbrowseContinuitions 0 2735变量0 14 maxArrayLength 0 11702变量0

断开与服务器

当您完成与服务器通信,则应该从服务器断开连接客户端。这当客户端变量在MATLAB去的范围之也会自动执行。

断开(UACLIENT);