Writes data into multiple attributes, using array of argument objects as an input.
Syntax
'Declaration
<NotNullAttribute()>
Function WriteMultiple( _
ByVal As Object _
) As Object()
'Usage
Dim instance As _EasyUAClient
Dim writeArgumentsArray As Object
Dim value() As Object
value = instance.WriteMultiple(writeArgumentsArray)
Parameters
- writeArgumentsArray
- Array of OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments. Array of argument objects specifying what to write from an OPC-UA server.
The value of this parameter cannot be null
(Nothing
in Visual Basic).
The individual elements of the parameter value cannot be null
(Nothing
in Visual Basic).
Return Value
Array of
OpcLabs.EasyOpc.UA.OperationModel.UAWriteResult. The method returns an array of
OpcLabs.EasyOpc.UA.OperationModel.UAWriteResult objects. The indices of elements in the output array are the same as those in the input arrays.
This method never returns null
(Nothing
in Visual Basic).
The individual elements of the returned value are never null
(Nothing
in Visual Basic).
Exceptions
Exception | Description |
System.ArgumentNullException |
A null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.
This is a usage error, i.e. it will never occur (the exception will not be thrown) in a correctly written program. Your code should not catch this exception. |
Example
COM
// This example shows how to write data (a value, timestamps and status code) into 3 nodes at once, test for success of each
// write and display the exception message in case of failure.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client and subscriber examples in PHP on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-PHP .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.
$GoodOrSuccess = 0;
// Instantiate the client object
$Client = new COM("OpcLabs.EasyOpc.UA.EasyUAClient");
$StatusCode = new COM("OpcLabs.EasyOpc.UA.UAStatusCode");
$StatusCode->Severity = $GoodOrSuccess;
$WriteArguments1 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments");
$WriteArguments1->EndpointDescriptor->UrlString =
//"http://opcua.demo-this.com:51211/UA/SampleServer";
//"https://opcua.demo-this.com:51212/UA/SampleServer/";
"opc.tcp://opcua.demo-this.com:51210/UA/SampleServer";
$WriteArguments1->NodeDescriptor->NodeId->ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10221";
$AttributeData1 = new COM("OpcLabs.EasyOpc.UA.UAAttributeData");
$AttributeData1->Value = 23456;
$AttributeData1->StatusCode = $StatusCode;
$AttributeData1->SourceTimestamp = (time() - 25569)/86400.0; // works in PHP v5.6, does not work in PHP 7.3.10
$WriteArguments1->AttributeData = $AttributeData1;
$WriteArguments2 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments");
$WriteArguments2->EndpointDescriptor->UrlString =
//"http://opcua.demo-this.com:51211/UA/SampleServer";
//"https://opcua.demo-this.com:51212/UA/SampleServer/";
"opc.tcp://opcua.demo-this.com:51210/UA/SampleServer";
$WriteArguments2->NodeDescriptor->NodeId->ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10226";
$AttributeData2 = new COM("OpcLabs.EasyOpc.UA.UAAttributeData");
$AttributeData2->Value = 2.3456789;
$AttributeData2->StatusCode = $StatusCode;
$AttributeData2->SourceTimestamp = (time() - 25569)/86400.0; // works in PHP v5.6, does not work in PHP 7.3.10
$WriteArguments2->AttributeData = $AttributeData2;
$WriteArguments3 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments");
$WriteArguments3->EndpointDescriptor->UrlString =
//"http://opcua.demo-this.com:51211/UA/SampleServer";
//"https://opcua.demo-this.com:51212/UA/SampleServer/";
"opc.tcp://opcua.demo-this.com:51210/UA/SampleServer";
$WriteArguments3->NodeDescriptor->NodeId->ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10227";
$AttributeData3 = new COM("OpcLabs.EasyOpc.UA.UAAttributeData");
$AttributeData3->Value = "ABC";
$AttributeData3->StatusCode = $StatusCode;
$AttributeData3->SourceTimestamp = (time() - 25569)/86400.0; // works in PHP v5.6, does not work in PHP 7.3.10
$WriteArguments3->AttributeData = $AttributeData3;
$arguments[0] = $WriteArguments1;
$arguments[1] = $WriteArguments2;
$arguments[2] = $WriteArguments3;
// Modify data of nodes' attributes
$results = $Client->WriteMultiple($arguments);
// Display results
for ($i = 0; $i < count($results); $i++)
{
$WriteResult = $results[$i];
// The target server may not support this, and in such case failures will occur.
if ($WriteResult->Succeeded)
printf("Result %d success\n", $i);
else
printf("Result s \n", $i, $WriteResult->Exception->GetBaseException()->Message);
}
Rem This example shows how to write data (a value, timestamps and status code) into 3 nodes at once, test for success of each
Rem write and display the exception message in case of failure.
Rem
Rem Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
Rem OPC client and subscriber examples in VBScript on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBScript .
Rem Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
Rem a commercial license in order to use Online Forums, and we reply to every post.
Option Explicit
Const GoodOrSuccess = 0
' Instantiate the client object
Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.UA.EasyUAClient")
Dim StatusCode: Set StatusCode = CreateObject("OpcLabs.EasyOpc.UA.UAStatusCode")
StatusCode.Severity = GoodOrSuccess
Dim WriteArguments1: Set WriteArguments1 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments")
WriteArguments1.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"
WriteArguments1.NodeDescriptor.NodeId.ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10221"
Dim AttributeData1: Set AttributeData1 = CreateObject("OpcLabs.EasyOpc.UA.UAAttributeData")
AttributeData1.Value = 23456
AttributeData1.StatusCode = StatusCode
AttributeData1.SourceTimestamp = Now
WriteArguments1.AttributeData = AttributeData1
Dim WriteArguments2: Set WriteArguments2 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments")
WriteArguments2.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"
WriteArguments2.NodeDescriptor.NodeId.ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10226"
Dim AttributeData2: Set AttributeData2 = CreateObject("OpcLabs.EasyOpc.UA.UAAttributeData")
AttributeData2.Value = 2.3456789
AttributeData2.StatusCode = StatusCode
AttributeData2.SourceTimestamp = Now
WriteArguments2.AttributeData = AttributeData2
Dim WriteArguments3: Set WriteArguments3 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAWriteArguments")
WriteArguments3.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"
WriteArguments3.NodeDescriptor.NodeId.ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10227"
Dim AttributeData3: Set AttributeData3 = CreateObject("OpcLabs.EasyOpc.UA.UAAttributeData")
AttributeData3.Value = "ABC"
AttributeData3.StatusCode = StatusCode
AttributeData3.SourceTimestamp = Now
WriteArguments3.AttributeData = AttributeData3
Dim arguments(2)
Set arguments(0) = WriteArguments1
Set arguments(1) = WriteArguments2
Set arguments(2) = WriteArguments3
' Modify data of nodes' attributes
Dim results: results = Client.WriteMultiple(arguments)
' Display results
Dim i: For i = LBound(results) To UBound(results)
Dim WriteResult: Set WriteResult = results(i)
' The target server may not support this, and in such case failures will occur.
If WriteResult.Succeeded Then
WScript.Echo "Result " & i & " success"
Else
WScript.Echo "Result " & i & ": " & WriteResult.Exception.GetBaseException().Message
End If
Next
Requirements
Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows
See Also