Hello Community,
I would like to share with you a library we developed in B&R Spain.
General information
Description
The EasyUaClnt is a simplicity wrapper library based on AsOpcUac. Anyone who has tried to program a functionality (node read, node write, subscription…) with the AsOpcUac library knows that for each functionality, several function block (FUB) calls are required. The idea behind this library is to provide a clear interface to the user and encapsulate each functionality in one function block (FUB).
Minimum tested Automation Runtime versions
- For SG4 Intel CPUs: J4.25
- For SG4 ARM CPUs: A4.34
Functionalities
The functionalities of this library exhibit no constraints when compared with the AsOpcUac library ones. It allows the user to perform the following actions in OPC UA as a client in a easier way:
- Read
- ReadList
- ReadBluk
- Write
- WriteList
- WriteBulk
- Subscription
- SubscriptionList
- MethodCall
- ConnectionGetStatus
Library help
The library has its own help that comes with samples for each of the functionalities listed before. From AS can be accessed by pressing F1 over the library.
Example
EasyUaRead - Read an OPC UA node
In the following example is shown how an OPC UA node can be read from an OPC UA Server using just 1 FUB. To achieve the same result using AsOpcUac is necessary the usage of 6 FUBs.
- AsOpcUac: UA_Connect → UA_GetNamespaceIndex → UA_NodeGetHandle → UA_Read → UA_NodeReleaseHandle → UA_Disconnect
- EasyUaClint: EasyUaRead
The Controller 1 (192.168.0.105) works as OPC UA Client and implements the function EasyUaRead from the library EasyUaClnt. The value of the variable read from the server is copied to the local variable “VarA” of the task “Read”.
The Controller 2 (192.168.0.106) works as OPC UA Server. In the Controller 2 the name of the variable is “VarX” and it is a local variables of the task “ServerTask” and it is Enabled in the OPC UA Default View configuration.
Controller 1 code - Task Read
PROGRAM _INIT
VarA;
EasyUaRead_0.ServerEndpointUrl := 'opc.tcp://192.168.0.106:4840';
EasyUaRead_0.NodeID.NamespaceIndex := 6;
EasyUaRead_0.NodeID.Identifier := '::ServerTask:VarX';
EasyUaRead_0.NodeID.IdentifierType := UAIdentifierType_String;
EasyUaRead_0.Variable := '::Read:VarA';
END_PROGRAM
PROGRAM _CYCLIC
EasyUaRead_0();
END_PROGRAM
Execution of the FUB
Downloads and links
Last binary library version
Binary lib V1.02.2: Click to download
Source code repository
B&R GitHub source code repository: Source Code
Regards colleagues,
Javier