主要内容

读和写当前的OPC UA服务器数据

这个例子向您展示了如何读和写数据到一个OPC UA服务器。

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

创建一个客户端连接到服务器

您创建客户端对象使用一个查询的结果发现当地服务使用opcuaserverinfo,或直接使用服务器的主机名和端口号连接。在这种情况下,语法使用主机和端口号。

uaClient = opcua (“localhost”,53530);连接(uaClient)

找到DoubleDataItem、FloatDataItem StaticData Int16DataItem节点名称空间。

staticNode = findNodeByName (uaClient.Namespace,“StaticData”,“好玩”);dataItemsNode = findNodeByName (staticNode,“DataItems”,“好玩”);doubleNode = findNodeByName (dataItemsNode,“DoubleDataItem”);floatNode = findNodeByName (dataItemsNode,“FloatDataItem”);int16Node = findNodeByName (dataItemsNode,“Int16DataItem”);节点= [doubleNode、floatNode int16Node]
:索引节点= 1 x3 OPC UA节点数组名称NsInd标识符NodeType孩子- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 DoubleDataItem 3 DoubleDataItem变量1 2 FloatDataItem 3 FloatDataItem变量1 1 3 Int16DataItem 3 Int16DataItem变量

阅读来自节点的值

使用readValue读一个节点的当前值。你可以查询值,更新时间戳值时,质量与价值相联系的。

[v, t, q] = readValue (uaClient,节点)
v = 3×1单元阵列{[0]}{[0]}{[0]}t = 3×1 datetime数组19 - 3月- 2019 02:52:35 19 - 3月- 2019 02:52:35 19 - 3月- 2019 02:52:35 q = OPC UA质量ID:“好”“好”“好”

当你阅读从多个节点,返回的值是作为一个单元阵列。的类数据在服务器上保存尽可能多的。

valClasses = cellfun (@class v,“UniformOutput”假)
valClasses = 3×1单元阵列{“双重”}{'单'}{' int16 '}

时间戳作为一个MATLAB®datetime变量返回。它代表了时间源服务器提供了价值。

t
t = 3×1 datetime数组19 - 3月- 2019 02:52:35 19 - 3月- 2019 02:52:35 19 - 3月- 2019 02:52:35

返回的质量作为OPC UA质量,它显示的文本描述。

q = OPC UA质量ID:“好”“好”“好”

你可以询问质量来确定返回的质量特征。在这个例子中,质量好就行。

短距离(q)
ans = 3×1逻辑数组1 1 1

价值不是插值,但是是一个原始值(存储服务器直接从传感器)。

内插= isInterpolated (q)生= isRaw (q)
内插= 3×1逻辑数组0 0 0生= 3×1逻辑数组1 1 1

写数据节点

你可以写任何标量数据节点。写信给多个节点时,您必须通过一个细胞数组的值,每个节点可以写一个。

newValues = {65 4};writeValue (uaClient、节点newValues);

验证的值写正确,并再次检索值。

serverValues = readValue (uaClient节点)
serverValues = 3×1单元阵列{[12]}{[65]}{[4]}

你可以更新值直接在单元阵列和写回到服务器。

serverValues {2} = serverValues {2} + 1;writeValue (uaClient、节点serverValues);

读和写值与单个节点

在处理单个节点时,您收到可以直接传递和价值,没有使用单元阵列。

dblValue = readValue (uaClient doubleNode) writeValue (uaClient、doubleNode dblValue + 15.6) newDbl = readValue (uaClient doubleNode)
dblValue = 12 newDbl = 27.6000

阅读和写作直接节点

可以读写直接从节点变量,只要从客户机节点创建(使用名称空间属性或browseNamespace)或者你通过客户端opcuanode在创建节点变量的函数。

[vals, ts,战]= readValue(节点)writeValue(节点,v)
vals = 3×1单元阵列{[27.6000]}{[66]}{[4]}t = 3×1 datetime数组19 - 3月- 2019 02:52:36 19 - 3月- 2019 02:52:36 19 - 3月- 2019 02:52:36质量= OPC UA质量ID:“好”“好”“好”

断开与服务器

当你已经完成了与服务器通信,客户端从服务器断开。这也是客户端时自动执行变量在MATLAB超出范围。

断开(uaClient);