主要内容

浏览“OPC UA服务器命名空间”

本示例向您展示如何查找OPC Unified Architecture (UA)服务器、连接到它们并浏览它们的名称空间以查找感兴趣的节点。要在您的MATLAB会话中运行此示例,您需要安装并启动Prosys OPC UA Simulation Server。有关更多信息,请阅读OPC工具箱文档的入门部分。

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

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

浏览主机上可用的OPC UA服务器

请注意:本例中需要安装“Local Discovery Service”,并配置Prosys OPC UA Simulation Server向LDS注册。关于如何做到这一点的说明包含在OPC工具箱文档的入门部分中。

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

用户可以通过命令发现主机上可用的OPC UA服务器opcuaserverinfo.本例使用本地主机。

serverList = opcuaserverinfo(“localhost”
serverList = 1×3 OPC UA ServerInfo array: index Description Hostname Port ----- ----------------------------------- ---------------------------------- ----- 1 SimulationServer tmopti01win1064.dhcp.mathworks.com 53530 2 UA样例服务器tmopti01win1064 51210 3 Quickstart Historical Access Server tmopti01win1064 62550

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

sampleServerInfo = findDescription(serverList,“模拟”
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 Port: 53530 Timeout: 10 Status: Disconnected

最初,客户机与服务器断开连接,并显示客户机属性的简要摘要。的Status属性或调用,就知道客户机已断开连接与一函数。

status = uaClient。状态与(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

显示显示客户端状态现在是'Connected',服务器处于'Running'状态,客户端存储有关服务器限制的信息。在本例中,所有的限制都被设置为零,这表明对于样本服务器上的样本速率、最大节点或读操作的值没有服务器范围的限制。

浏览服务器命名空间

服务器命名空间直接增量检索到MATLAB中的OPC UA Client变量中。方法访问服务器名称空间的顶层名称空间财产。该属性存储OPC UA节点。每个节点可以包含一个或多个子节点,子节点本身就是节点。

topNodes = uaClient。名称空间
topNodes = 1x6 OPC UA Node array: index Name NsInd Identifier NodeType Children ----- ----------------------- ----- ----------------------- ---------------- 1 Server 0 2253 Object 12 2 MyObjects 2 MyObjectsFolder Object 1 3 StaticData 3 StaticData Object 9 4 NonUaNodeComplianceTest 4 NonUaNodeComplianceTest Object 33 5 Simulation 5 85/0:Simulation Object 7 6 MyBigNodeManager 6 MyBigNodeManager Object 1000 .

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

您可以使用索引到可用节点的Children属性来搜索名称空间。例如,要查找ServerCapabilities节点,可以查询Server节点的子节点。

serverChildren = topNodes(1)。孩子们
serverChildren = 1x12 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 12serviclevel 0 2267变量0

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

serverCapabilities = serverChildren(2)
serverCapabilities = OPC UA节点对象:名称:serverCapabilities描述:描述服务器支持的能力。金宝appNamespaceIndex: 0 Identifier: 2268 NodeType: Object Parent: Server Children: 14 node。

搜索命名空间中的节点

您可以从Node变量或直接从Namespace属性中搜索节点。来查找“ServerCapabilities”节点,而不向名称空间属性,使用findNodeByName.为避免搜索发现包含单词“ServerCapabilities”的所有节点实例,可以使用“好玩”参数。

serverCapabilities = findNodeByName(topNodes,“ServerCapabilities”“好玩”
serverCapabilities = OPC UA节点对象:名称:serverCapabilities描述:描述服务器支持的能力。金宝appNamespaceIndex: 0 Identifier: 2268 NodeType: Object Parent: Server Children: 14 node。

要查找名称中包含'Double'字的所有节点,请使用“部分”参数。注意,这个搜索将把整个命名空间加载到MATLAB中,因此要谨慎使用这个搜索方法。

doubleNodes = findNodeByName(topNodes,“双”“部分”
doubleNodes = 1x6 OPC UA Node array: index Name NsInd Identifier NodeType Children ----- --------------------- ----- --------------------- ---------------- 1 Double 4 Double Variable 0 2 DoubleAnalogItemArray 3 DoubleAnalogItemArray Variable 3 3 DoubleAnalogItem Variable 3 3 DoubleAnalogItem Variable 3 4 DoubleDataItem 3 DoubleDataItem Variable 1 5 DoubleArray 3 DoubleArray Variable 0 6 Double 3 Double Variable 0

理解NodeType

节点有一个NodeType,用来描述该节点是一个简单的组织单元(Object NodeType)还是包含可读或可写的数据(Variable NodeType)。Object节点的一个例子是上面显示的ServerCapabilities节点。无法从Object节点读取数据。在这个例子中,doubleNodes不包含Object节点和6 Variable节点。

allNodeTypes ={双节点。NodeType}
allNodeTypes = 1×6 cell array列1至4 {'Variable'} {'Variable'} {'Variable'} {'Variable'}列5至6 {'Variable'} {'Variable'}

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

理解变量NodeType属性

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

doubleNodes (2)
ans = OPC UA节点对象:Name: DoubleAnalogItemArray Description: NamespaceIndex: 3 Identifier: DoubleAnalogItemArray NodeType: Variable Parent: AnalogItemArrays Children: 3个节点。ServerDataType:双AccessLevelCurrent:读写AccessLevelHistory:无Historizing: 0

这个节点有一个ServerDataType的'Double',并允许读写当前值(AccessLevelCurrent属性),但不支持读取历史数据金宝app(AccessLevelHistory).属性证明,服务器没有对该节点进行历史化Historizing财产。

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

doubleNodes(2)。ServerArrayDimensions
Ans = uint32 0

直接构造节点

节点由其命名空间索引和标识符唯一定义。可以构造一个已知节点,而不必浏览名称空间属性使用opcuanode函数。例如,要直接构造ServerCapabilities节点,可以使用命名空间索引0和标识符2268(所有OPC UA服务器必须发布一个带有命名空间索引和标识符的ServerCapabilities节点)。

capactiesnode = opcu阳极(0,2268,uaClient)
capactiesnode = OPC UA节点对象:名称:ServerCapabilities描述:描述服务器支持的能力。金宝app命名空间索引:0标识符:2268 NodeType:对象子节点:14个节点。

注意,使用opcuanode没有Parent属性。

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

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

capabilitiesNode。孩子们
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 0 6 MinSupportedSampleRate 0 2272 2271变量变量0 7 MaxQueryContinuationPoi金宝appnts 0 2736 0 8 MaxByteStringLength 0 0 9 ServerProfileArray 0 2269 12911变量变量0 10MaxHistoryContinuationPoints 0 2737变量0 11 softwarecercertificates 0 3704变量0 12 MaxStringLength 0 11703变量0 13 MaxBrowseContinuationPoints 0 2735变量0 14 MaxArrayLength 0 11702变量0

断开与服务器的连接

当您完成与服务器的通信后,您应该断开客户机与服务器的连接。在MATLAB中,当客户端变量超出范围时,也会自动执行此操作。

断开(uaClient);