主要内容

浏览OPC UA Server命名空间

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

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

所有OPC UA服务器必须发布一个Server节点,该节点包含关于OPC UA服务器的信息,包括该服务器的功能、服务器的可用功能和其他诊断信息。Server节点必须以命名空间索引0存在,命名为'Server'。这个示例将探索一个示例OPC UA服务器的Server节点中包含的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

显示显示客户端状态现在是“连接”,服务器处于“运行”状态,并且客户端存储有关服务器限制的信息。在本例中,所有限制都被设置为零,这表明对sample Server上的抽样率、最大节点或读操作的值没有服务器范围的限制。

浏览服务器名称空间

在MATLAB中,服务器名称空间被增量地直接检索到OPC UA Client变量中。属性可以访问服务器名称空间的顶层名称空间财产。该属性存储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节点,可以查询Server节点的Children。

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节点对象:名称:serverCapabilities Description:描述服务器支持的能力。金宝appNamespaceIndex: 0 Identifier: 2268 NodeType: Object Parent: Server Children: 14个节点。

在Namespace中搜索节点

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

serverCapabilities = findNodeByName (topNodes,'servercapabilities''-一次'
serverCapabilities = OPC UA节点对象:名称:serverCapabilities Description:描述服务器支持的能力。金宝appNamespaceIndex: 0 Identifier: 2268 NodeType: Object Parent: Server Children: 14个节点。

要查找Name中包含单词'Double'的所有节点,请使用“部分”参数。注意,这个搜索将把整个名称空间加载到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)还是包含可读或可写的数据(变量NodeType)。Object节点的一个例子是上面所示的ServerCapabilities节点。不能从Object节点读取数据。在这个例子中,doubleNodes不包含Object节点和6个Variable节点。

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: Variable Parent: AnalogItemArrays Children: 3个节点。ServerDataType: Double AccessLevelCurrent:读写AccessLevelHistory: none Historizing: 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节点)。

capabiltiesnode = opcuanode(0, 2268, uclient)
capabiltiesnode = OPC UA节点对象:名称:ServerCapabilities Description:描述服务器支持的能力。金宝appNamespaceIndex: 0 Identifier: 2268 NodeType: Object Children: 14个节点。

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

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

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

capabilitiesNode。孩子们
ANS = 1x14 OPC UA节点阵列:索引名称NSIND标识符Nodetype儿童----- ----------------------------  ---------- -------- 1建模规则0 2996个对象6个2 0 AggregateFunctions对象2997 14个3 0 HistoryServerCapabilities对象11192 15个4 0 OperationLimits 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);