主要内容

浏览OPC UA服务器名称空间

这个例子向您展示了如何找到OPC统一架构(UA)服务器,连接到它们,浏览找到感兴趣的节点的名称空间。

在MATLAB®会话中运行这个例子,您必须安装并启动Prosys OPC UA模拟服务器。为进一步的信息,请参见的开始部分工业通信工具箱™文档。

OPC UA服务器结构可用数据通过一个或多个名称空间,多个连接节点组成。每个命名空间都有一个唯一标识该名称空间的索引。工具箱中提供两种类型的OPC UA节点:对象节点,它帮助组织数据,变量节点存储数据在他们的财产价值。变量可能包含其他变量节点的孩子节点。

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

探索可用OPC UA服务器主机

请注意:本节这个示例时,您需要安装当地的发现服务,并配置Prosys OPC UA仿真服务器注册了摩门教。说明如何做到这一点的开始部分都包含在工业通信工具箱文档。

OPC UA服务器可能登记与当地发现服务的主机。当地发现服务(像)发布所有可用的服务器,以及他们独特的“地址”(或URL)连接到该服务器。

你会发现OPC UA服务器上可用主机使用opcuaserverinfo。下面的例子使用了本地主机。

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

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

sampleServerInfo = findDescription(确保你,“模拟”)
sampleServerInfo = OPC UA ServerInfo SimulationServer:连接信息主机名:“tmopti01win1064.dhcp.mathworks.com”端口:53530

构造一个OPC UA端和连接到服务器

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

uaClient = opcua (“localhost”,53530);

如果你有以前发现服务器使用opcuaserverinfo命令,您可以构建客户端直接从opcuaserverinfo结果。

uaClient = opcua (sampleServerInfo)
uaClient = OPC UA客户机SimulationServer:主机名:tmopti01win1064.dhcp.mathworks.com端口:53530超时:10个状态:断开连接

最初客户端与服务器的连接,并显示客户端属性的研究进展作一简要综述。你知道客户端断开连接通过查询状态属性,或调用与一函数。

= uaClient地位。状态与(uaClient)
状态=“断开”ans =逻辑0

一旦客户端连接到服务器,显示来自服务器的附加属性。

连接(uaClient) uaClient
uaClient = OPC UA客户机SimulationServer:主机名:tmopti01win1064.dhcp.mathworks.com端口:53530超时:10状态:连接ServerState: MinSampleRate: 0秒MaxHistoryReadNodes: 0 MaxHistoryValuesPerNode: 0 MaxReadNodes: 0 MaxWriteNodes: 0

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

浏览服务器名称空间

服务器名称空间逐步直接检索到OPC UA端变量MATLAB。您访问服务器的顶级名称空间使用名称空间财产。这个属性存储OPC UA节点。每个节点可以包含一个或更多的孩子,这本身就是节点。

topNodes = uaClient.Namespace
topNodes = 1 x6 OPC UA节点数组:索引名称NsInd标识符NodeType孩子- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1服务器0 2253 12 2 myobject MyObjectsFolder对象1 3 StaticData 3 StaticData对象9 4 NonUaNodeComplianceTest NonUaNodeComplianceTest对象33 5模拟5 85/0:1000 6 MyBigNodeManager 6 MyBigNodeManager对象模拟对象

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

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

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

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

serverCapabilities = serverChildren (2)
serverCapabilities = OPC UA节点对象:名称:serverCapabilities描述:描述功能支持的服务器。金宝appNamespaceIndex: 0标识符:2268 NodeType:对象的父:服务器的孩子:14节点。

寻找节点的名称空间

你可以搜索节点从一个节点变量,或直接从名称空间属性。找到“ServerCapabilities”节点没有索引的名称空间属性,使用findNodeByName。避免搜索找到的所有实例节点包含单词“ServerCapabilities”使用“好玩”参数。

serverCapabilities = findNodeByName (topNodes,“ServerCapabilities”,“好玩”)
serverCapabilities = OPC UA节点对象:名称:serverCapabilities描述:描述功能支持的服务器。金宝appNamespaceIndex: 0标识符:2268 NodeType:对象的父:服务器的孩子:14节点。

找到所有节点包含这个词的“双重”名称,查询所有topNodes使用“部分”参数。注意,这个搜索将整个名称空间加载到MATLAB,所以小心地使用这个搜索方法。

doubleNodes = findNodeByName (topNodes,“双”,“部分”)
doubleNodes = 1 x6 OPC UA节点数组:索引名称NsInd标识符NodeType孩子- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1双4双变量0 2 DoubleAnalogItemArray 3 DoubleAnalogItemArray变量3 3 DoubleAnalogItem DoubleAnalogItem变量3 4 DoubleDataItem 3 DoubleDataItem变量1 5 DoubleArray 3 DoubleArray变量0 6双3双变量0

理解NodeType

节点有一个描述该节点是否NodeType只是一个组织单元(一个对象NodeType)或包含可读或写数据(变量NodeType)。节点对象的一个例子是ServerCapabilities节点如上所示。你不能从一个对象读取数据节点。在这个例子中,doubleNodes不包含对象节点,和6个变量节点。

allNodeTypes = {doubleNodes.NodeType}
allNodeTypes = 1×1到6单元阵列列4{“变量”}{“变量”}{“变量”}{}“变量”列5到6{“变量”}{}“变量”

变量NodeType可能包含孩子——NodeType节点包含的变量并不能保证没有孩子。第二个节点上市是一个变量节点(所以它的价值可以可以读)但也有孩子(可以单独读)。读值从一个节点的信息,请参阅readValue

理解变量NodeType属性

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

doubleNodes (2)
ans = OPC UA节点对象:名称:DoubleAnalogItemArray描述:NamespaceIndex: 3标识符:DoubleAnalogItemArray NodeType:变量父:AnalogItemArrays孩子:3节点。ServerDataType:双重AccessLevelCurrent:读/写AccessLevelHistory:没有Historizing: 0

这个节点ServerDataType“双”,并允许读和写的当前值(AccessLevelCurrent属性)但没有支持历史数据阅读金宝app(AccessLevelHistory)。服务器不是Historizing这个节点,就是明证Historizing财产。

一些属性,例如ServerValueRank,ServerArrayDimensions不显示在显示一个节点,但可以查询通过各自的财产。进一步的信息,请参阅帮助这些属性。

doubleNodes .ServerArrayDimensions (2)
ans = uint32 0

构建节点直接

节点定义NamespaceIndex及其独特的标识符。您可以构建一个已知的节点没有浏览名称空间财产的使用opcuanode函数。例如,构建ServerCapabilities节点直接可以使用NamespaceIndex 0和2268的标识符(所有OPC UA服务器必须发布这个NamespaceIndex ServerCapabilities节点和标识符)。

capabilitiesNode = opcuanode (0 2268 uaClient)
capabilitiesNode = OPC UA节点对象:名称:ServerCapabilities描述:描述功能支持的服务器。金宝appNamespaceIndex: 0标识符:2268 NodeType:对象的孩子:14节点。

注意,使用节点构造opcuanode没有父母的财产。

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

然而他们的孩子会自动检索如果节点与连接OPC UA客户机。

capabilitiesNode.Children
ans = 1 x14 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 0 6 MinS金宝appupportedSampleRate 0 2272 2271变量变量0 7 MaxQueryContinuationPoints 0 2736 0 8 MaxByteStringLength 0 0 9 ServerProfileArray 0 2269 12911变量变量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);