I had a second checkbox within the properties window that was checked for “Read-only”. I unchecked that box, then checked the “unblock” option, and it worked.
Any plans for supporting Automation runtime 6?
Good morning TW,
Yes, it is planned for the following months. But I cannot advance any specific time frame for it,
Thanks you!
Maybe you can ask for help using community? some volunteers? or you prefer to do it by yourself?
Hello Jaroslav!
That’s a great idea, actually the source code is opened to everyone, so if someone comes up with an update for AR6 before we do they can upload it directly here and share it with everyone!
So B&R community, who will take this challenge? ![]()
EasyUaClnt updated for AS6.0
Hello Community,
I am glad to share with you the first version of the EasyUaClnt for AS6.0. The library has been tested but I cannot make a full deep test of all the functionlities so, if someone tests it and finds any problem they can take the Source Code and modify it or send me a message and I will try to fix it as soon as possible.
New features
In this update the following the library has received the following changes:
-
Internal update of all the FUBs. Now they uses the “List” versions of the AsOpcUac. Every block has been updated to get rid off any obsolete or deprecated AsOpcUac FUBs.
-
New functionlity KeepConnection FUB input. Now it is possible to to keep the connection active. By default if KeepConnection = FALSE the FUB will behave exactly as it was in the previous library version, but if you need a more performant work mode then the connection won’t be closed after the FUB call.
-
Kept the compatibility backwards as much as possible. Execept EasyUaSubscription and EasyUaSubscriptionList all the rest of FUBs remains with the same IN/OUT interface to guarantee the compatibility with the code from AS4.0 as much as possible. Only Optional new inputs or outputs have been added. Only in the case that you were using EasyUaSubscription and EasyUaSubscriptionList adjustements would be needed.
-
More diagnostics. All the diagnostics exposed in the FUB interface. As they come from different internal FUBs and with different formats new optional diagnostics outputs have been added.
-
Own help fully updated. All the help has been reviewed and updated to match the new library. A dedicated chapter “Migration to AS6 from AS4” has been added. All the samples are also updated.
New requirements
The new requirements for this versions of the library are:
- SG4 only
- Automation Studio 6
- Minimum AR version Intel/ARM 6.0.0
Download
The new release is marked as V2.00.0. The bin and source can be found in the repository.
Github repository: Release V2.00.0 · br-automation-com/easyuaclient-as-project-dev
Thank you for your awesome work !
I try to set the OPC UA connection between an X20CP0483 and an External OPC server and actually got following issue “A009_0000” I would like to read the Value from the “Gross” variable and store it into VAR1.
Here is my task: (100ms)
The “Gross” variable incoming from the Server is given as a DOUBLE so I declared it as a LREAL in the Task.
The OPC link is working with UA Expert.
Do you have an idea what could be wrong with that?
Best Regards.
Hello Oliver,
Regarding the OPC UA PLCopen Status Codes, the code A009_0000 corresponds to:
PlcOpen_BadNsNotFound - 0xA0090000 - The namespace with the desired name could not be found on the server.
This means that your NamespaceUri input is not valid. Seeing your screenshot I can see that you are using the “Path” to object’s component (0:Root/0:Objects…) instead of the NamespaceUri (an example of NamespaceUri would be “urn:B&R/pv/” ). You can either use any of the following solutions:
- Fix the NamespaceUri to the corresponding one, you can check this on UaExpert
- Or leave the field “NamespaceUri” empty and keep the input NodeID.NamespaceIndex to 7 if this is the right NamespaceIndex for the node
Any of this solutions should fix the A009_0000 error, keep in mind that this is a standard OPC UA code. I recommend you to take a look to the descriptions of the codes they are really helpful.
B&R Online Help - OPC UA Status numbers
Regards,
Hi Javier,
Thank you for your reply. I fixed this by removing the NamespaceUri and using only the Namespaceindex. I just had to change the IdentifierType to “UAIdentifierType_Numeric” an then it worked fine.
Best Regards,
Olivier Lehné
2 posts were split to a new topic: Compiler error when using EasyUaReadList
Hello community, @javier.novella ,
I’d also like to use your libary…
How can I integrate security / login informations like in the OpcUa_any client?
solved
Thanks, and best regards
Rolf
Hello Rolf,
Great news that you could solve it. I was on holidays so I could not answer you.
Best regards,
Javier
thank @javier.novella you for this library I love it!
Only issue I’m having now is with nodeID that changes. the various functions assume that the nodeID is known and used as input. but sometimes it’s not the case, the nodeID could change and so the connection does not work anymore.
Am I missing anything or there’s a way to determine the nodeID programmatically? something like the UA_TranslatePath in the AsOpcUac…
thanks
Hello Valerio,
Thanks for your feedback, and apologies for the delayed response. I have been quite busy lately.
I am not entirely sure whether you are referring to the AS 4.x or AS 6.x version. For the explanation below, I will assume that you are using AS 6.x, as it provides the most complete implementation.
For the functionalities: Write, WriteList, WriteBulk, Read, ReadList, ReadBulk. All this functions mainly follows the same internal schema:
All these function blocks use the Execute mechanism. When a function block is executed, its input parameters are copied internally. Because of the way AsOpcUac is implemented, the NodeIDs cannot be modified while the current execution is active.
Therefore, after changing the NodeIDs, the function block must be executed again for the new values to take effect.
If KeepConnection is enabled, the OPC UA connection remains open. However, the node handles are still released correctly at the end of the operation. When the function block is executed again, the handles are obtained once more using the updated NodeID values provided at the inputs. This allows the new nodes to be used without closing and reopening the connection.
The same principle applies to the subscription-related function blocks. These function blocks also use the Execute mechanism, which means that their input parameters are copied when the execution starts. Therefore, if any of the configured NodeID values are changed, the active subscription will not be updated automatically. The function block must be executed again so that the current node handles are released and new handles are obtained using the updated NodeID values.
Since the source code is available, one possible approach would be to modify the implementation so that it detects whether the NodeID inputs have changed. If a change is detected, the function block could automatically trigger a new execution using the updated values. In the case of subscriptions, it would also be technically possible to update the monitored items by executing UA_MonitoredItemModifyList, without destroying and recreating the complete subscription. However, from the point of view of the function block interface, the behavior would be similar: the implementation would need to detect a change in the NodeID inputs and then execute the corresponding update procedure. In this case, the subscription itself would remain active, while the monitored items would be updated at runtime using the new configuration.
But strictly speaking, this would not be a runtime modification of an active request, as that is not supported. However, it would provide the expected behavior for your use case.
Maybe you wanted to point something different but If I am wrong, please just tell me and we can discuss it! ![]()
Regards,
Javier








