Introduction

This section specifies the interesting changes to the previous revisions:

Version Date Description
1.02014-04-03Release first specification 1.0
1.012016-09-05

Important changes to V1.0
- Rename UA_NodeClass to UA_NodeClassMask
- Enum value changed in UAIdentifierType
- Extend UAMonitoredSettings with parameter QueueSize
- Depricated Structed Data Type UANodeInfo
- The graphical representation of the order of the outputs of the FB’s have been harmonized: Done, Busy, Error; ErrorID, then general outputs, and finaly the VAR_IN_OUTs. For this reason we separate between V1.0 and V1.1 in the compliance list as seen in the Appendix A.

- Moved these Functionsblocks into new chapter “Phased out Functionsblocks”:
- UA_NamespaceGetIndex
- UA_TranslatePath
- UA_NodeGetHandle, UA_ReleaseHandle, UA_NodeGetInfo
- UA_SubscriptionOperate
- UA_MonitoredItemAdd, UA_MonitoredItemRemove, UA_MonitoredItemOperate
- UA_Read, UA_Write
- UA_MethodeGetHandle, UA_MethodeReleaseHandle

New functionality:

- Created new Structured Data Type UANodeInformation
- Created new Functionblocks with “List” functionality
- UA_NamespaceGetIndexList, UA_ServerGetIndexByUriList,
- UA_TranslatePathList
- UA_NodeGetHandleList, UA_NodeReleaseHandleList
- UA_NodeGetInformation
- UA_MonitoredItemAddList, UA_MonitoredItemRemoveList
- UA_MonitoredItemModifyList, UA_MonitoredItemOperateList
- UA_MethodeGetHandleList, UA_MethodReleaseHandleList
- UA_EventItemAdd, UA_EventItemOperate, UA_EventItemRemove

- UA_HistoryUpdate

Added Appendix
about Compliance procedure and make use of of PLCopen OPC UA logo

1.022021-06-30

Defined UABrowseResultMask which was used only.

Optional “ErrorID as DWORD” extended where missing:

UA_NamespaceGetIndexList

UA_ServerGetIndexByUriList

UA_NodeGetInformation

UA_MethodGetHandleList

UA_MethodReleaseHandleList

UA_MethodCall

Clarification for optional MethodResult

UA_EventItemRemoveList

Changed members from "STRING" to "Vendor specific" with the description "Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING":

- UAUserIdentityToken

TokenParam1

TokenParam2

- UASessionConnectInfo

SessionName

ApplicationName

CertificateStore

ClientCertificateName

ServerUri

- UANodeID

Identifier

- UAQualifiedName

Name

- UALocalizedText

Text

- UAReferenceDescription

BrowseName

- UAExpandedNodeID

NamespaceURI

- UA_Connect

ServerEndpointUrl

- UA_NamespaceGetIndexList

NamespaceUris

- UA_ServerGetUriByIndex

ServerUri

- UA_ServerGetIndexByUriList

ServerUris

Changed members from "DT" to "Vendor specific" with the description "Shall be DT or LDT. The recommendation for new implementation is to use LDT".

- UAHADataValue

ServerTimeStamp

SourceTimeStamp

- UAMonitoredVariables

TimeStamps

NodeQualityIDs

- UA_ReadList

TimeStamps

- UASecurityPolicy: added values 5..11

- UATransportProfile: added values 5..7
- UAUserIdentityTokenType: added value 4..5
- UAAttributeID: added value 23..32

Constants of Array Lengths

Unused MAX_ELEMENTS_TIMESTAMPS removed.

Error Codes (ErrorID)

ErrorType – clarification, especially that it shall be ‘0’ on the wire.

ErrorType2 – clarification, especially that it shall be ‘0’ on the wire.

1 Scope

This specification was created by a joint working group of the OPC Foundation and PLCopen. It defines a set of IEC 61131-3 based function blocks for mapping the OPC UA Client functionalities. With this functionality implemented on a controller it becomes possible to initiate a communication session to any other available OPC UA Server.

The interaction between IT and the world of automation is certainly not revolutionary, but corresponds with the established model of the automation pyramid:

Figure 1: Automation Pyramid

This model is fundamentally based on the assumption that, in terms of communication, a controller as a main component of the automation system is “dumb”, and always merely responds to requests “from above”. The higher level is always the client and initiates data requests – the lower layer is always the server and courteously responds. In the modern world the strict separation of levels and the top-down approach of the information flow soften and mix. In a smart network, every device or service must be able to initiate independent communication with all other services.

This document is about OPC-UA client functionality out of the IEC 61131-3 controller: A controller can exchange complex data structures horizontally with other controllers independently from fieldbus system or vertically with other devices using an OPC-UA server call in an MES/ERP system in order to collect data or write new production orders to the cloud. It allows a production line to be independently active in combination with integrated OPC UA Security features.

OPC-UA client functionality in a controller does not provide hard deterministic real time and so it’s not a deterministic fieldbus – but UA provides fast, secured communication providing modelling mechanism for information models.

Note: The FUNCTION BLOCKS are based on the second Edition of IEC 61131-3.

About the OPC Foundation

The OPC Foundation defines standards for online data exchange between automation systems. They address access to current data (OPC DA), alarms and events (OPC A&E) and historical data (OPC HDA). Those standards are successfully applied in industrial automation.

The new OPC Unified Architecture (OPC-UA) unifies the existing standards and brings them to state-of-the-art technology using service-oriented architecture (SOA). Platform-independent technology allows the deployment of OPC-UA beyond current OPC applications only running on Windows-based PC systems. OPC-UA can also run on embedded systems as well as Linux / UNIX based enterprise systems. The provided information can be generically modelled and therefore arbitrary information models can be provided using OPC-UA.

About PLCopen

PLCopen, as an organization active in industrial control, is creating a higher efficiency in your application software development: in one-off projects as well as in higher volume products. As such it is based on standard available tools to which extensions are and will be defined.

With results like Motion Control Library, Safety, XML specification, Reusability Level and Conformity Level, PLCopen made solid contributions to the community, extending the hardware independence from the software code, as well as reusability of the code and coupling to external software tools. One of the core activities of PLCopen is focused around IEC 61131-3, the only global standard for industrial control programming. It harmonizes the way people design and operate industrial controls by standardizing the programming interface. This allows people with different backgrounds and skills to create different elements of a program during different stages of the software lifecycle: specification, design, implementation, testing, installation and maintenance. Yet all pieces adhere to a common structure and work together harmoniously.

2 Normative references

The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments and errata) applies.

OPC 10000-1, OPC Unified Architecture - Part 1: Overview and Concepts

OPC 10000-1

OPC 10000-3, OPC Unified Architecture - Part 3: Address Space Model

OPC 10000-3

OPC 10000-4, OPC Unified Architecture - Part 4: Services

OPC 10000-4

OPC 10000-6, OPC Unified Architecture - Part 6: Mappings

OPC 10000-6

OPC 10000-7, OPC Unified Architecture - Part 7: Profiles

OPC 10000-7

3 Terms, abbreviated terms and conventions

3.1 Overview

It is assumed that basic concepts of OPC UA information modelling and IEC 61131-3 are understood in this document. This document will use these concepts to describe the OPC UA Client Function Blocks for IEC 61131-3 Information Model. For the purposes of this document, the terms and definitions given in OPC 10000-1, OPC 10000-3, OPC 10000-4, OPC 10000-7, as well as the following apply.

3.2 Abbreviated terms

FBFunction Block
UA(OPC) Unified Architecture
XMLExtensible Markup Language

4 The basic sequences for communication

In order to perform an operation like UA_Read, UA_Write, UA_ReadList, UA_WriteList or UA_MethodCall one has to prepare the communication following the sequence of calls as decribed hereunder, after which one has to stop the communication and clean up.

4.1 Read and Write of multiple items

UA_Connect is used to create an (optional secure) transport connection of an OPC UA session. UA_Connect is to be performed once for each connection. The UA_NamespaceGetIndexList is to be performed once for each namespace. The NodeHdl for a specific node is to be retrieved once. Read and write can be performed as frequent as necessary and permitted by the system. Once the communication is done, the node handle is not required anymore and shall be released via the use of UA_NodeReleaseHandleList for all relevant handles. The connection handle shall be released using UA_Disconnect.

Figure 2: Read/Write Sequence

A list is handled as an array of the related base type (e.g. UANodeID or UANodeAdditionalInfo). Additionally, there is a length specified which holds the number of elements in the array. Although several arrays can be connected to the function block (e.g. node handles and variables in case of UA_ReadList) there is only one length because all arrays have the same number of elements to be processed.

The UA_NodeGetHandleList will return an UANodeHdl array. This call will not verify that the given UANodeID is valid. It will just be checked if it is structurally right (e.g. it’s not one by UAIdentifierType mentioned values) – otherwise an error in the corresponding error element (NodeErrorIDs) will be returned. The output array of UA_NodeGetHandleList can be used unchanged for subsequent calls to function blocks UA_ReadList, UA_WriteList, but the control implementation shall check always the corresponding error element (NodeErrorIDs). In case of any general error no outputs shall be changed from the underlying implementation.

4.2 Monitored Items

The following function blocks are used to create subscriptions and to add monitored items to this subscription.

To create a subscription, a valid connection handle is required. The connection handle is to be acquired using UA_Connect once. UA_SubscriptionCreate will create a subscription, and needs to be called for every subscription needed. The applicable SubscriptionHdl will be returned on successful execution of the function block UA_SubscriptionCreate. In order to monitor an item, a NodeHdl for that specific node is required. In other words, both the applicable UA_SubscriptionCreate and UA_NodeGetHandleList are to be called before calling the related UA_MonitoredItemAddList. UA_MonitoredItemAddList is used to add items to a subscription identified by a SubscriptionHdl. The items to be monitored are to be assigned to this FB in form of NodeHdl. UA_MonitoredItemModifyList can be used to modify monitoring settings like sampling interval, deadband type, and deadband value and hence it can be called optionally.

Take note to delete the subscription. Release the NodeHdl before you disconnect. Unless UA_SubscriptionDelete is called the Subscription will continue working, even if UA_NodeReleaseHandleList is called.

Figure 3: Subscription and MonitoredItem sequence

Monitoring of nodes does invert the communication interaction: The control program is initiating the communication but as a consequence the values will be pushed from the OPC UA Server to the control program.

Like shown in the block diagram above, a subscription and monitored items have to be set up.

There are two modes to actually retrieve latest values within the control program:

Controller-sync:
Using the UA_MonitoredItemAddList function block with UAMonitoringSyncMode “UAMS_ControllerSync” – updated values shall be retrieved after the call UA_MonitoredItemOperateList is finished. This means the control program can decide when values are updated. If this block is not called no updates to the control program will be delivered.
The currently specified handling of monitored items and subscriptions is based on linking one UA node (identified by NodeHdl) to one PLC variable (defined in the PLC program). By calling the function block UA_MonitoredItemOperateList values delivered from the UA server are transfered into the PLC variables.
Please see more detailed explanations in vendor specific documentation in particular in cases of QueueSize > 1.

FW-sync:
The firmware could internally update the values of the memory of the controller.
After adding monitored items, the control program might call UA_SubscriptionProcessed to know that any values have been changed, but it might be that the control program has no control about when updates are deployed to the control program memory.

In general, a QueueSize bigger than the PLC variable array size will return an error shown in the corresponding NodeErrorIDs in UA_MonitoredItemAddList directly after the call returns, an overflow (values lost) will be shown in the corresponding NodeQualityIDs and the minimum lost values will be shown in the corresponding MinLostValueCount.

The vendor has to decide which mode to provide. Vendor documentation should describe the selected behavior. Especially for the FW-sync way a detailed documentation should state when (i.e., beginning of control program cycle) updates are available to the control program.

A vendor may provide both modes (Controller-sync and FW-sync). The parameter QueueSize defined in structure UAMonitoringParameter indicates the mode: With configuration of QueueSize > 1 for the intention not to lose data changes it also becomes the user’s responsibility to fetch those values one at a time thus QueueSize is used to determine the mode of operation as follows:

QueueSize > 0 with a sample queue of that size. If ‘0’ the QueueSize ‘1’ will be applied. This means for a monitored item both, locally and on the server side as many as QueueSize data changes can be stored. The server discards data changes if the publish interval is too large. The client discards data changes if the UA_MonitoredItemOperateList cycle is not sufficient. Discard oldest policy is implied.

The mode of operation is configured independently for each monitored item (input parameter SyncMode of FB UA_MonitoredItemAddList).

4.3 Using Method Calls

The appropriate sequence for initiating a method call is shown below. A valid method handle is necessary to call a method. Successful call of UA_MethodGetHandleList will deliver a valid MethodHdls.

One shall release the method handle list before you disconnect.

Figure 4: Method call sequence

4.4 Diagnostics

This procedure is to check if the connection is still alive. The function block UA_Connect will deliver the ConnectionHdl. UA_ConnectionGetStatus requires this ConnectionHdl as input to deliver the connection status. In case the connection is lost after receiving the handle and while calling the UA_ConnectionGetStatus, ServerState Unknown will be returned.

NOTE: It is recommended to call UA_ConnectionGetStatus periodically but for performance reasons not in every control program cycle.

Figure 5: Connection diagnostics

4.5 Browsing

Browsing is used by a client to navigate through the Address Space of an OPC UA Server. By passing a starting node the server returns a list of nodes by references.

To be able to browse a valid connection handle is required. Function block UA_Connect will deliver the ConnectionHdl. UA_Browse takes a structure for starting Node description and filter criteria. The result is an array of structures for references and target Nodes.

If the ContinuationPointOut output is connected to the ContinuationPointIn input of a consecutive UA_Browse instance, a browse next service can be performed.

Figure 6: Browsing sequence

4.6 TranslatePath

This function block is used to request that the Server translates one or more UABrowsePaths to UANodeIDs. Each UA_BrowsePath is constructed of a starting UANodeID and a UARelativePath. The specified starting UANodeID identifies the UANodeID from which the UARelativePath is based. The UARelativePath contains a sequence of UARelativePathElement and UAQualifiedName.

One purpose of this function block is to allow programming against type definitions. Since UAQualifiedName shall be unique in the context of type definitions, a user program may create a UABrowsePath that is valid for a type definition and use this path on instances of the type. For example, an ObjectType “Boiler” may have a “HeatSensor” Variable as InstanceDeclaration. A graphical element programmed against the “Boiler” may need to display the Value of the “HeatSensor”. If the graphical element would be called on “Boiler1”, an instance of “Boiler”, it would need to call this Service specifying the UANodeID of “Boiler1” as starting UANodeID and the UABrowsePaths of the “HeatSensor” as browse path. The function block would return the UANodeID of the “HeatSensor” of “Boiler1” and the graphical element could subscribe to its value.

If an OPC UA Node has multiple targets with the same UABrowsePaths, the underlying server will return a list of UANodeIDs. However, since one of the main purposes of this function block is to support programming against type definitions, the UANodeID of the OPC UA Node based on the type definition of the starting OPC UA Node is returned as the first UANodeID in the list.

Figure 7: TranslatePath sequence

4.7 Monitor Events

A typical OPC UA Server can be configured to fire Events to a Client. OPC UA specifies a wide range of different Events. OPC UA Clients can receive Events when subscribing to an Event Notifier.

In order to monitor an item, a NodeHdl for that specific node is required. Both UA_SubscriptionCreate and UA_NodeGetHandle are to be called before calling UA_EventItemAdd. UA_EventItemAdd is used to add an event item to a subscription mentioned by the SubscriptionHdl. The node of which events are monitored is to be assigned to this FB in form of NodeHdl. UA_EventItemOperate can be used to get information about the incoming events occurred.

Take note to delete the subscription. Release the NodeHdl before you disconnect. If UA_NodeReleaseHandle is called before UA_SubscriptionDelete the Subscription will continue working.

Figure 8: Monitor Events sequence

5 Types, DataTypes, Constants and Behaviour

5.1 Derived data types used in this specification

Within the specification the following derived data types are defined:

Table 1 – Supported derived data types
Derived data types:Where usedSupportedWhich structure
UAUserIdentityToken UASessionConnectInfo
UASessionConnectInfo UA_Connect
UANodeID

UANodeInformation

UABrowseDescription

UAReferenceDescription

UAExpandedNodeID

UA_TranslatePathList

UA_NodeGetHandleList

UA_NodeGetInformation

UA_MethodGetHandleList

UA_EventItemAdd

UAQualifiedName UARelativePathElement
UANodeInformation
UARelativePathElement UARelativePath
UARelativePath UABrowserPath
UA_EventItemAdd
UABrowsePath UABrowsePath
UA_TranslatePathList
UAMonitoringParameter

UA_MonitoredItemAddList

UA_MonitoredItemOperateList

UALocalizedText

UANodeInformation

UAReferenceDescription

UANodeInfo (deprecated)
UANodeInformation UA_NodeGetInformation
UAIndexRange UANodeAdditionalInfo
UANodeAdditionalInfo

UA_MonitoredItemAddList

UA_ReadList

UA_WriteList

UAViewDescription UA_Browse
UABrowseDescription UA_Browse
UAReferenceDescription UA_Browse
UAExpandedNodeID UAReferenceDescription
UAHADataValue UA_HistoryUpdate
UAMonitoredVariables UA_MonitoredItemAddList
UASecurityMsgMode UASessionConnectInfo
UASecurityPolicy UASessionConnectInfo
UATransportProfile UASessionConnectInfo
UAUserIdentityTokenType UAUserIdentityToken
UAIdentifierType UANodeID
UADeadbandType UAMonitoringParameter
UAAttributeID UANodeAdditionalInfo
UAConnectionStatus UA_ConnectionGetStatus
UAServerState UA_ConnectionGetStatus
UAHAUpdateStatusCode UAHADataValue
UABrowseDirection UABrowseDescription
UAMonitoringSyncMode UA_MonitoredItemAddList
UANodeClassMask

UANodeInformation

UABrowseDescription

UAReferenceDescription

UABrowseResultMask UAReferenceDescription

5.2 Length of names and ways to shorten them

There are systems that only support a limited number of significant characters in the name. For this, rules for shorter names are provided here. These long names are still seen as compliant, although have to be mentioned in the certification document.

Note: The short names are preferred for users and implementers. They should use the short version whenever possible to become more interoperable in future.

Table 2 – List of rules to shorten names
UASecurityMsgMode_UASMM_
UASecurityPolicy_UASP_
UATransportProfile_UATP_
UAUserIdentityTokenType_UAUITT_
UAIdentifierType_UAIT_
UADeadbandType_UADT_
UAAttributeID_UAAI_
UAConnectionStatus_UACS_
UAServerState_UASS_
UAHAUpdateStatusCode_UAHAUSC_
UABrowseDirection_UABD_
UAMonitoringSyncMode_UAMSM_
UANodeClassMask_UANCM_
UABrowseResultMask_UABRM_

5.3 Enumerated Data Types

Enumerations do not have values in IEC 61131-3 – but in third edition, a new feature called “Type with named value” has been introduced. The column “Value” in tables below address this new feature.

Anyhow a vendor should keep the long names, if possible, for existing programs to compile.

5.3.1 UASecurityMsgMode

ValueNameDescription
0UASMM_BestAvailableBest available message security mode to the UA server. The client receives the available message security from the server and selects the best. This could also result in level “none security”.
1UASMM_NoneNo security is applied.
2UASMM_SignAll messages are signed but not encrypted.
3UASMM_SignEncryptAll messages are signed and encrypted.

5.3.2 UASecurityPolicy

ValueNameDescription
0UASP_BestAvailableProvides the best available security connection to the UA server. The client receives the available policies from the server and selects the best. This can also result in level “none security”.
1UASP_Nonehttp://opcfoundation.org/UA/SecurityPolicy#None
2UASP_Basic128Rsa15 http://opcfoundation.org/UA/SecurityPolicy#Basic128Rsa15 – this is deprecated
3UASP_Basic256 http://opcfoundation.org/UA/SecurityPolicy#Basic256 – this is deprecated
4UASP_Basic256Sha256 http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
5UASP_Aes128-Sha256-RsaOaep http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep
6UASP_Aes256-Sha256-RsaPss http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss
7UASP_EccNnistP256 http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256
8UASP_EccNistP384 http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP384
9UASP_EccBrainpoolP256r1 http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1
10UASP_EccBrainpoolP384r1 http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP384r1
11UASP_EccCurve25519http://opcfoundation.org/UA/SecurityPolicy#ECC_curve25519

5.3.3 UATransportProfile

ValueNameDescription
1UATP_UATcphttp://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary
2UATP_WSHttpBinaryhttp://opcfoundation.org/UA-Profile/Transport/https-uabinary
3UATP_WSHttpXmlOrBinaryProfile does not exist and was introduced by mistake
4UATP_WSHttpXml http://opcfoundation.org/UA-Profile/Transport/https-uasoapxml-uabinary
5UATP_HttpsUaJson http://opcfoundation.org/UA-Profile/Transport/https-uajson
6UATP_WssUaScUaBinary http://opcfoundation.org/UA-Profile/Transport/wss-uasc-uabinary
7UATP_WssUaJsonhttp://opcfoundation.org/UA-Profile/Transport/wss-uajson

5.3.4 UAUserIdentityTokenType

ValueNameDescription
0UAUITT_Anonymoushttp://opcfoundation.org/UA-Profile/Security/UserToken/Anonymous
1UAUITT_Usernamehttp://opcfoundation.org/UA-Profile/Security/UserToken/Client/UserNamePassword
2UAUITT_x509http://opcfoundation.org/UA-Profile/Security/UserToken/Client/X509Certificate
3UAUITT_IssuedToken http://opcfoundation.org/UA-Profile/Security/UserToken/Client/IssuedToken
4UAUITT_IssuedTokenWindows http://opcfoundation.org/UA-Profile/Security/UserToken/Client/IssuedTokenWindows
5UAUITT_JsonWebTokenhttp://opcfoundation.org/UA-Profile/Security/UserToken/Client/JsonWebToken

5.3.5 UAIdentifierType

Note: The values changed from V1.0 to V1.1

ValueNameDescription
0UAIT_Numericsee OPC 10000-3 or OPC 10000-6
1UAIT_Stringsee OPC 10000-3 or OPC 10000-6
2UAIT_GUIDsee OPC 10000-3 or OPC 10000-6
3UAIT_Opaquesee OPC 10000-3 or OPC 10000-6

5.3.6 UADeadbandType

ValueNameDescription
0UADT_NoneNo Deadband calculation should be applied
1UADT_AbsoluteAbsoluteDeadband (see OPC 10000-4)
2UADT_PercentPercentDeadband (see OPC 10000-4)

5.3.7 UAAttributeID

ValueNameDescription
1UAAI_NodeIDThe canonical identifier for the node.
2UAAI_NodeClassThe class of the node.
3UAAI_BrowseNameA non-localized, human readable name for the node.
4UAAI_DisplayNameA localized, human readable name for the node.
5UAAI_DescriptionA localized description for the node.
6UAAI_WriteMaskIndicates which attributes are writable.
7UAAI_UserWriteMaskIndicates which attributes are writable by the current user.
8UAAI_IsAbstractIndicates that a type node may not be instantiated.
9UAAI_SymmetricIndicates that forward and inverse references have the same meaning.
10UAAI_InverseNameThe browse name for an inverse reference.
11UAAI_ContainsNoLoopsIndicates that following forward references within a view will not cause a loop.
12UAAI_EventNotifierIndicates that the node can be used to subscribe to events.
13UAAI_ValueThe value of a variable.
14UAAI_DataTypeThe node id of the data type for the variable value.
15UAAI_ValueRankThe number of dimensions in the value.
16UAAI_ArrayDimensionsThe length for each dimension of an array value.
17UAAI_AccessLevelHow a variable may be accessed.
18UAAI_UserAccessLevelHow a variable may be accessed after taking the user's access rights into account.
19UAAI_MinimumSamplingIntervalSpecifies (in milliseconds) how fast the server can reasonably sample the value for changes.
20UAAI_HistorizingSpecifies whether the server is actively collecting historical data for the variable.
21UAAI_ExecutableWhether the method can be called.
22UAAI_UserExecutableWhether the method can be called by the current user.
23UAAI_DataTypeDefinitionThe DataTypeDefinition Attribute is used to provide the meta data and encoding information for custom DataTypes.
24UAAI_RolePermissionPermissions that apply to a Node for all Roles which have access to the Node.
25UAAI_UserRolePermissionsPermissions that apply to a Node for all Roles granted to current Session.
26UAAI_AccessRestrictionAccessRestrictions that apply to a Node.
27UAAI_AccessLevelExThe AccessLevelEx Attribute is used to indicate how the Value of a Variable can be accessed (read/write), if it contains current and/or historic data and its atomicity.
28-32Reserved for future use from OPC Foundation

5.3.8 UAConnectionStatus

ValueNameDescription
0UACS_ConnectedUA client is connected to UA server.
1UACS_ConnectionErrorThe connection from UA client to UA server has an error.
2UACS_ShutdownThe UA client has been disconnected from the UA server.

5.3.9 UAServerState

ValueNameDescription
0UASS_RunningThe server is running normally. This is the usual state for a server.
1UASS_FailedA vendor-specific fatal error has occurred within the server. The server is no longer functioning. The recovery procedure from this situation is vendor-specific. Most Service requests should be expected to fail.
2UASS_NoConfigurationThe server is running but has no configuration information loaded and therefore does not transfer data.
3UASS_SuspendedThe server has been temporarily suspended by some vendor-specific method and is not receiving or sending data.
4UASS_ShutdownThe server has shut down or is in the process of shutting down. Depending on the implementation, this might or might not be visible to clients.
5UASS_TestThe server is in Test Mode. The outputs are disconnected from the real hardware, but the server will otherwise behave normally. Inputs may be real or may be simulated depending on the vendor implementation. StatusCode will generally be returned normally.
6UASS_CommunicationFaultThe server is running properly, but is having difficulty accessing data from its data sources. This may be due to communication problems or some other problems preventing the underlying device, control system, etc. from returning valid data. It may be a complete failure, meaning that no data is available, or a partial failure, meaning that some data is still available. It is expected that items affected by the fault will individually return with a BAD FAILURE status code indication for the items.
7UASS_UnknownThis state is used only to indicate that the OPC UA server does not know the state of underlying servers.

5.3.10 UAHAUpdateStatusCode

Note: The correct way to shorten would be UAHAUSC_, but for compatibility reasons we did not change

ValueNameDescription
0UAHAUpdateStatusCode_HistorianRawA raw data value.
1UAHAUpdateStatusCode_HistorianCalculatedA data value which was calculated.
2UAHAUpdateStatusCode_HistorianInterpolatedA data value which was interpolated.
3UAHAUpdateStatusCode_ReservedUndefined.
4UAHAUpdateStatusCode_HistorianPartialA data value which was calculated with an incomplete interval.
8UAHAUpdateStatusCode_HistorianExtraDataA raw data value that hides other data at the same timestamp.
16UAHAUpdateStatusCode_HistorianMultiValueMultiple values match the Aggregate criteria (i.e. multiple minimum values at different timestamps within the same interval).

5.3.11 UABrowseDirection

Filter the References according to their direction.

ValueNameDescription
0UABD_ForwardSelect only forward References.
1UABD_InverseSelect only inverse References.
2UABD_BothSelect forward and inverse References.

5.3.12 UAMonitoringSyncMode

Note: The correct way to shorten would be UAMSM_, but for compatibility reasons we did not change.

ValueNameDescription
0UAMS_UnknownUnknown SyncMode – the default and invalid setting
1UAMS_ControllerSyncSyncMode is ControllerSync – see chapter 4.2 Monitored Items
2UAMS_FwSyncSyncMode is FwSync (FirmwareSync) – see chapter 4.2 Monitored Items

5.4 Data Types for Bitmask

5.4.1 UANodeClassMask

ValueNameDescription
0UANCM_NoneNo node class (unspecified).
1UANCM_ObjectSee OPC 10000-3
2UANCM_VariableSee OPC 10000-3
4UANCM_MethodSee OPC 10000-3
8UANCM_ObjectTypeSee OPC 10000-3
16UANCM_VariableTypeSee OPC 10000-3
32UANCM_ReferenceTypeSee OPC 10000-3
64UANCM_DataTypeSee OPC 10000-3
128UANCM_ViewSee OPC 10000-3
255UANCM_AllAll node classes combined.

5.4.2 UABrowseResultMask

ValueNameDescription
0UABRM_NoneSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
1UABRM_ReferenceTypeSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
2UABRM_IsForwardSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
3UABRM_ReferenceTypeInfoSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
4UABRM_NodeClassSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
8UABRM_BrowseNameSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
16UABRM_DisplayNameSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
32UABRM_TypeDefinitionSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
60UABRM_TargetInfoSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/
63UABRM_AllSee https://reference.opcfoundation.org/v104/Core/DataTypes/BrowseResultMask/

5.5 Structured Data Types

5.5.1 UAUserIdentityToken

UAUserIdentityTokenDataTypeDescription
UserIdentityTokenTypeUAUserIdentityTokenType

Defines the identity Token to authenticate a user during the creation of a Session.

See UAUserIdentityTokenType

TokenParam1Vendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. In case of TokenType “Anonymous” the Param1 will not be evaluated.

In case of TokenType “Username” the Param1 contains the user name.

In case of TokenType “x509” the Param1 contains the location of the certificate store.

TokenParam2Vendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. In case of TokenType “Anonymous” the Param2 will not be evaluated.

In case of TokenType “Username” the Param2 contains the user password.

In case of TokenType “x509” the Param2 contains the certificate name.

5.5.2 UASessionConnectInfo

UASessionConnectInfoDataTypeDescription
SessionNameVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Defines the name of the session assigned by the client. The name is shown in the diagnostics information of the server. In case of empty string the server will generate a session name.
ApplicationNameVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Defines the readable name of the OPC UA client application. The string can be empty.
SecurityMsgModeUASecurityMsgModeSee UASecurityMsgMode.
SecurityPolicyUASecurityPolicySee UASecurityPolicy.
CertificateStoreVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Defines the location of the certificate store used for the application certificates and trust lists. The structure of the certificate store is vendor specific. In case of empty string the default certificate store is used.
ClientCertificateNameVendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Defines the name of the client certificate and private key in the certificate store. In case of empty string the default client application certificate is used.

Implementation note: The ApplicationURI will be extracted from the certificate.

ServerUriVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Defines the URI of the server.
CheckServerCertificateBOOLFlag indicating if the server certificate should be checked with the trust list of the client application.
TransportProfileUATransportProfileSee UATransportProfile
UserIdentityTokenUAUserIdentityTokenSee UAUserIdentityToken
VendorSpecificParameterVendor specificVendor may define specific parameters, e.g. in case multiple clients are available, client instance can be defined with this parameter. The VendorSpecificParameter can be empty.
SessionTimeoutTIMEDefines how long the session will survive when there is no connection.
MonitorConnectionTIME

Defines the interval time to check the connection.

The connection monitoring has to be done by the client vendor implementation and is defined in OPC 10000-4

LocaleIDsARRAY [1..5] OF STRING[6]

OPC 10000-3:

<language>[-<country/region>] where <language> is a two letter ISO 639-1:2002 code for language, <country /region> is the three letter ISO 3166 code for the country/region.

Sample: en-US, zh-CHS

5.5.3 UANodeID

UANodeIDDataTypeDescription
NamespaceIndexUINT
IdentifierVendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. In case of IdentifierType GUID the format is like 00000316-0000-0000-C000-000001000046

In case of IdentifierType Opaque string has to be base 64 encoded byte string.

IdentifierTypeUAIdentifierTypeSee UAIdentifierType

5.5.4 UAQualifiedName

UAQualifiedNameDataTypeDescription
NamespaceIndexUINTThe namespace index to which name is associated.
NameVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Name of the qualified name.

5.5.5 UARelativePathElement

UARelativePathElementDataTypeDescription
ReferenceTypeIdUANodeIDSee UANodeID. If the ReferenceTypeId is a NULL-UANodeID the reference type is 33 (HierarchicalReferences)
IsInverseBOOLIf TRUE, the inverse references will be evaluated. Default is FALSE.
IncludeSubtypesBOOLIf TRUE also subtypes from ReferenceTypeId will be evaluated. Default is TRUE.
TargetNameUAQualifiedNameSee UAQualifiedName

5.5.6 UARelativePath

UARelativePathDataTypeDescription
NoOfElementsUINTNumber of Elements.
ElementsARRAY OF
UARelativePathElement

See UARelativePathElement. One relative path element. Length of the array is vendor specific MAX_ELEMENTS_RELATIVEPATH

See Constants of Array Lengths

5.5.7 UABrowsePath

UABrowsePathDataTypeDescription
StartingNodeUANodeIDSee UANodeID. Starting NodeId from where the relative path will be evaluated.
RelativePathUARelativePathSee UARelativePath. The relative path which will be evaluated.

5.5.8 UAMonitoringParameter

UAMonitoringParameterDataTypeDescription
SamplingIntervalTIMEThe rate in milliseconds the server checks the underlying data source for changes.
QueueSizeUINTThe queue size for the monitoring item.
See also 4.2 Monitored Items
DiscardOldestBOOLDetermine the discard policy in case of queue overflow:
TRUE: Discard the oldest in the sample queue
FALSE: Discard the newest in the sample queue
DeadbandTypeUADeadbandType

See

UADeadbandType. This parameter indicates if a deadband is applied and if applied, which type of Deadband.

DeadbandREALe.g. percent 0.1%.

5.5.9 UALocalizedText

UALocalizedTextDataTypeDescription
LocaleSTRING[6]

OPC 10000-3:

<language>[-<country/region>] where <language> is a two letter ISO639 code for language, <country /region> is the three letter ISO3166 code for the country/region.

Sample: en-US, zh-CHS.

TextVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Contains localized text as string.

5.5.10 UANodeInfo (deprecated)

This UANodeInfo is the first version of declaration – to ease the handling of BrowseName the usage of the second version UANodeInformation is recommended. This also affects

UANodeInformation.

UANodeInfoDataTypeDescription
AccessLevelBYTE

A bit mask indicating whether the current value of the Value Attribute is readable and writable as well as whether the history of the value is readable and changeable.

ArrayDimensionARRAY OF
UDINT

The length for each dimension of an array value.

Length is vendor-specific (MAX_ELEMENTS_ARRAYDIMENSION). See Constants of Array Lengths

BrowseNameSTRINGThe BrowseName is composed of a namespace index and a name. The String representation is of the format [ns:] BrowseName. The browse name may be prefixed by its namespace index. If the namespace prefix is omitted then namespace index 0 is used.
ContainsNoLoopsBOOLIndicates that following forward references within a view will not cause a loop.
DataTypeUANodeIDSee UANodeID. The node id of the data type for the variable value.
DescriptionUALocalizedTextA localized description for the node.
DisplayNameUALocalizedTextA localized human readable name for the node.
EventNotifierBYTE

This Attribute represents a bit mask that identifies whether the Object can be used to subscribe to Events and whether the history of Events is accessible and changeable.

ExecutableBOOLWhether the method can be called.
HistorizingBOOLSpecifies whether the server is actively collecting historical data for the variable.
InverseNameSTRINGThe browse name for an inverse reference.
IsAbstractBOOLIndicates that a type node may not be instantiated.
MinimumSamplingIntervalTIMESpecifies (in ms) how fast the server can reasonably sample the value for changes.
NodeClassUANodeClassMask

See UANodeClassMask. The base type of the node.

An enumeration identifying the NodeClass of a Node such as Object, Variable or Method.

NodeIDUANodeIDSee UANodeID. The server unique identifier for the node.
SymmetricBOOLIndicates that forward and inverse references have the same meaning.
UserAccessLevelBYTE

Contains the same information as the AccessLevel but takes user access rights into account.

UserExecutableBOOLWhether the method can be called by the current user.
UserWriteMaskUDINTIndicates which attributes are writable by the current user.
ValueRankDINTThe number of dimensions in the value.
WriteMaskUDINTIndicates which attributes are writable.

5.5.11 UANodeInformation

Note: Additional added Attributes from OPC UA (like DataTypeDefinition, RolePermissions, etc.) will not be reflected in UANodeInformation. Instead use UA_ReadList for this Attributes. The same is valid for the Attribute “Inverse Name (10)” when it needs to be a WSTRING instead of STRING.

UANodeInformationDataTypeDescription
AccessLevel (17)BYTE

A bit mask indicating whether the current value of the Value Attribute is readable and writable as well as whether the history of the value is readable and changeable.

ArrayDimension (16)ARRAY OF
UDINT

The length for each dimension of an array value.

Length is vendor-specific (MAX_ELEMENTS_ARRAYDIMENSION). See Constants of Array Lengths

BrowseName (3)UAQualifiedNameSee UAQualifiedName.
ContainsNoLoops (11)BOOLIndicates that following forward references within a view will not cause a loop.
DataType (14)UANodeIDSee UANodeID. The node id of the data type for the variable value.
Description (5)UALocalizedTextA localized description for the node.
DisplayName (4)UALocalizedTextA localized human readable name for the node.
EventNotifier (12)BYTE

This Attribute represents a bit mask that identifies whether the Object can be used to subscribe to Events and whether the history of Events is accessible and changeable.

Executable (21)BOOLWhether the method can be called.
Historizing (20)BOOLSpecifies whether the server is actively collecting historical data for the variable.
InverseName (10)STRINGThe browse name for an inverse reference.
IsAbstract (8)BOOLIndicates that a type node may not be instantiated.
MinimumSamplingInterval (19)TIMESpecifies (in ms) how fast the server can reasonably sample the value for changes.
NodeClass (2)UANodeClassMask

See UANodeClassMask. The base type of the node.

An enumeration identifying the NodeClass of a Node such as Object, Variable or Method.

Symmetric (9)BOOLIndicates that forward and inverse references have the same meaning.
UserAccessLevel (18)BYTE

Contains the same information as the AccessLevel but takes user access rights into account.

UserExecutable (22)BOOLWhether the method can be called by the current user.
UserWriteMask (7)UDINTIndicates which attributes are writable by the current user.
ValueRank (15)DINTThe number of dimensions in the value.
WriteMask (6)UDINTIndicates which attributes are writable.

5.5.12 UAIndexRange

UAIndexRangeDataTypeDescription
StartIndexUINTStart index.
EndIndexUINTEnd index.

Note: IndexRange can be defined as follows: For each Dimension:

Start and EndIndex are to be assigned.

StartIndex must be smaller than EndIndex.

To access all the elements in a Dimension it’s a must to assign StartIndex and EndIndex depending on the number of total Elements in the Dimension.

A single element in a Dimension can be selected by specifying the same StartIndex and EndIndex.

5.5.13 UANodeAdditionalInfo

UANodeAdditionalInfoDataTypeDescription
AttributeIDUAAttributeID

Selects the attribute to be accessed. The default AttributeID is UAAI_Value (13).

See

UAAttributeID

IndexRangeCountUINTCount of valid IndexRange specified. Vendorspecific.
IndexRangeARRAY OF
UAIndexRange

See UAIndexRange

Length is vendor-specific (MAX_ELEMENTS_INDEXRANGE See Constants of Array Lengths

5.5.14 UAViewDescription

UAViewDescriptionDataTypeDescription
ViewIDUANodeID

Node ID of the view to limit the browse. Empty for browsing the entire Address Space

See UANodeID

TimeStampVendor specificIf ‘0’ - any ViewID which matches should be used. Shall be DT or LDT. The recommendation for new implementation is to use LDT
VersionUDINTIf ‘0’ - any ViewID which matches should be used.

5.5.15 UABrowseDescription

UABrowseDescriptionDataTypeDescription
StartingNodeIDUANodeID

Node ID of the starting node to browse.

See UANodeID

DirectionUABrowseDirection

Browse direction forward, inverse, both.

See UABrowseDirection

ReferenceTypeIDUANodeID

Node ID of the Reference Type the server should follow.

See UANodeID

Default value: HierachicalReferences

IncludeSubtypesBOOL

Indicates if also subtypes of the Reference Type should be retuned

Default: TRUE

NodeClassUANodeClassMask

Filter on the Node Class of the retuned Nodes

See UANodeClassMask

ResultMaskUABrowseResultMask

Selects which fields of the UAReferenceDescription are requested from the server.

See UABrowseResultMask

5.5.16 UAReferenceDescription

UAReferenceDescriptionDataTypeDescription
ReferenceTypeIDUANodeIDNode ID of the ReferenceType followed from the starting Node to the target Node. See UANodeID
IsForwardBOOLSet if followed a forward Reference
NodeIDUAExpandedNodeIDNode ID of the target Node. This could also be a Node in another server. See UAExpandedNodeID
BrowseNameVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. The qualified name of the target Node.
DisplayNameUALocalizedTextThe localized name of the target Node. See UALocalizedText
NodeClassUANodeClassMaskNode Class of the target Node. See UANodeClassMask
TypeDefinitionUAExpandedNodeIDNode ID of the Object or Variable type of the target Node. See UAExpandedNodeID

5.5.17 UAExpandedNodeID

UAExpandedNodeIDDataTypeDescription
ServerIndexUDINTThe ServerIndex formatted as a base 10 number.
NamespaceURIVendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. The NamespaceUri formatted as a string. Any reserved characters in the URI shall be replaced with a ‘%’ followed by its 8 bit ANSI value encoded as two hexadecimal digits (case insensitive). For example, the character ‘;’ would be replaced by ‘%3B’.

The reserved characters are ‘;’ and ‘%’.

IDUANodeID

An identifier for a node in the address space of an OPC UA Server.

See UANodeID

5.5.18 UAHADataValue

UAHADataValueDataTypeDescription
ValueVendor specificVendor specific
StatusCodeUAHAUpdateStatusCodeSee UAHAUpdateStatusCode
ServerTimeStampVendor specificShall be DT or LDT. The recommendation for new implementation is to use LDT
SourceTimeStampVendor specificShall be DT or LDT. The recommendation for new implementation is to use LDT

5.5.19 UAMonitoredVariables

UAMonitoredVariablesDataTypeDescription
ValuesARRAY OF
Vendor specific

Vendor specific.

Array shall have the minimum length as UAMonitoringParameter QueueSize

TimeStampsARRAY OF
Vendor specific

Shall be DT or LDT. The recommendation for new implementation is to use LDT. It is expected, that the SourceTimeStamp from the server is returned.

Optional – If exists it shall have the same length as the Values array.

NodeQualityIDsARRAY OF
DWORD

Contains an error code for each element of the Values array.

Optional – If exists it shall have the same length as the Values array.

In case of “Overflow” Bit ‘7’ will be set if queue size is greater than 1. If this bit is set, not every detected change has been returned since the Server’s queue buffer for the MonitoredItem reached its limit and had to purge out data and the MinLostValueCount from UA_MonitoredItemAddList will be incremented by one (1).

NewValuesCountUINTCount of Values (Vendorspecific) which were updated starting from the lowest element of the Values.

5.6 Vendor-specific DataTypes

There are some data types used which are vendor-specific. Please check the specification of the vendor for the concrete implementation. The following table lists these data types and their usage:

Vendor Specific Data TypeUsage at
Variable Identification

Parameter ‘Variable’ of Function Block ‘UA_MonitoredItemAdd’

Parameter ‘Variables’ of Function Block ‘UA_MonitoredItemAddList’

Parameter ‘Variable’ of Function Block ‘UA_Read’

Parameter ‘Variables’ of Function Block ‘UA_ReadList’

Parameter ‘Variable’ of Function Block ‘UA_Write’

Parameter ‘Variables’ of Function Block ‘UA_WriteList’

Method Arguments

Parameter ‘InputArguments’ of Function Block ‘UA_MethodCall’

Parameter ‘OutputArguments’ of Function Block ‘UA_MethodCall’

Event Field DataParameter ‘EventFields’ of Function Block ‘UA_EventItemAdd’
UAHADataValueValue

Additionally, the lengths of some arrays have to be defined by the vendors. These are explained in the following chapter.

5.7 Constants of Array Lengths

The described function blocks make use of arrays.
The length of these arrays is – if not formally limited by the function block – vendor-specific and could be made changeable for resource optimization.

This is a list of arrays and as a naming convention their length-constants.
Every group of arrays should have the same length for ease of use.
All arrays should be defined as [1..CONSTANT-LENGTH], so for instance as ARRAY [1.. MAX_ELEMENTS_NODELIST] OF <<DATATYPE>>

CONSTANT-LENGTHDescription
MAX_ELEMENTS_ARRAYDIMENSION

Used at UANodeInformation.

Limits the maximum dimensions of a node, which could be used.

MAX_ELEMENTS_INDEXRANGE

Used at UANodeAdditionalInfo.

Limits the maximum defined.
Could be equal to MAX_ELEMENTS_ARRAYDIMENSION as a general dimension limit.

MAX_ELEMENTS_NODELISTLimits the number of nodes, which could be used by the List function blocks
MAX_ELEMENTS_MONITORLISTLimits the number of monitored items, which could be used by the monitored items blocks for each connection.
MAX_ELEMENTS_BROWSERESULTLimits the number of browse results, which could be used by the Browse block
MAX_ELEMENTS_HISTORYDATALimits the number of browse results, which could be used by the HistoryUpdate block and HistoryRead blocks.
MAX_ELEMENTS_EVENTITEMOPERATELimits the number of event items, which could be used by the event items operate block
MAX_ELEMENTS_REGISTERLimits the number of NodeIDs which can be registered for each connection.
MAX_ELEMENTS_RELATIVEPATHLimits the number of relative path elements in a relative path.
MAX_ELEMENTS_NAMESPACESLimits the number of namespaces (either Uris or Indexes)
MAX_ELEMENTS_METHODLimits the number of methods
MAX_EVENT_FIELD_SELECTIONSLimit the number of selections
MAX_ELEMENTS_EVENTITEMLISTLimit the number of event items

6 Error Codes (ErrorID)

Error codes are 4 bytes long, data type being DWORD.

NOTE: Bit 29 in this DWORD value is used to differentiate between error codes defined by OPC Foundation and error codes defined by PLCopen or Vendor.

FieldBit RangeDescription
Severity30:31

Indicates whether the ErrorCode represents a good, bad or uncertain condition. These bits have the following meanings:

ErrorType29

Value 0 indicates OPC error. Please find these error codes in OPC UA 10000-4 specification.

Value 1 indicates PLCopen or vendor specific error signaled by BIT28.

NOTE: This bit shall always be zero on the wire.

ErrorType228

This flag can be evaluated only if BIT29 is Value 1.

Value 0 indicates PLCopen error.

Value 1 indicates vendor specific error.

NOTE 1): This bit shall always be zero on the wire.

NOTE 2): This bit shall only be set if bit 29 has value 1, because it is reserved in OPC 10000-4 for future use.

ErrorCode

(Bits 0..27)

DefineDescription
CategoryGeneral
16#A000_0001PLCopenUA_Bad_FW_PermanentErrorInternal, permanent error.
16#A000_0002PLCopenUA_Bad_FW_TempError Temp. error; FB could retry to reach FW.
CategoryConnection
16#A000_0100PLCopenUA_Bad_ConnectionErrorConnection could not be established.
16#A000_0101PLCopenUA_Bad_HostNotFoundThe requested hostname could not be found.
16#A000_0102PLCopenUA_Bad_AlreadyConnectedConnection was already established.
16#A000_0103PLCopenUA_Bad_SecurityFailedConnection failed due to security setup.
16#A000_0104PLCopenUA_Bad_SuspendedConnection is suspended.
16#A000_0105PLCopenUA_Bad_ConnectionInvalidHdlProvided ConnectionHdl is not known.
CategoryNamespace
16#A000_0200PLCopenUA_Bad_NSNotFoundA namespace with the requested name cannot be found on server.
CategoryNode
16#A000_0300PLCopenUA_Bad_ResultTooLongTarget PLC variable is too short for retrieved data.
16#A000_0301PLCopenUA_Bad_InvalidTypeInvalid or unsupported Type.
16#A000_0302PLCopenUA_Bad_NodeInvalidHdlProvided NodeHdl is not known.
16#A000_0303PLCopenUA_Bad_MethodInvalidHdlProvided MethodHdl is not known.
16#A000_0304PLCopenUA_Bad_ReadFailedRead failed for unknown reason.
16#A000_0305PLCopenUA_Bad_WriteFailedWrite failed for unknown reason.
16#A000_0306PLCopenUA_Bad_CallFailedMethod Call failed for unknown reason.
16#A000_0307PLCopenUA_Bad_InParamFailedMethod Call Input parameter conversion failed.
16#A000_0308PLCopenUA_Bad_OutParamFailedMethod Call Output parameter conversion failed.
ATTENTION: this means the MethodCall was executed successfully but the returned values could not be converted.
CategoryAttribute
16#A000_0400PLCopenUA_Bad_AttributeIdUnknownUsed in UA_NodeGetInformation for elements, which are not in this NodeClass existing.
16#A000_0401PLCopenUA_Bad_AttributeIdInvalidUsed in UA_NodeGetInformation for elements, which should exist but don’t.
CategoryMonitoring
16#A000_0500PLCopenUA_Bad_SubscriptionInvalidHdlProvided SubscriptionHdl is not known.
16#A000_0501PLCopenUA_Bad_MonitoredItemInvalidHdlProvided MonitoredItemHdl is not known.
16#A000_0502PLCopenUA_Bad_MonitoredItemSyncMismatchMixed controller sync and firmware sync in same list
16#A000_0503PLCopenUA_Bad_SyncModeInvalidSync mode invalid

7 Functionblocks

Brief description of the used letter’s "B", "E" and "V":

B Basic Mandatory VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT.
E Extended Optional VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT.
V Vendor Specific Vendor specific VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT.

The detailed description can be found in Annex A.

VAR_INPUT is shown on the left side of the Function Blocks.

VAR_OUTPUT is shown on the right side of the Function Blocks.

VAR_IN_OUT is shown on the left and right side of the Function Blocks and has a dashed line below.

7.1 UA_Connect

FB-Name UA_Connect
This Function Block is used to create a (optional secure) transport connection and an OPC UA session. The connection shall be terminated by calling the UA_Disconnect after establishing the connection.
VAR_INPUT
BExecuteBOOLOn rising edge connection is started.
BServerEndpointUrlVendor specificShall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. URL
BSessionConnectInfoSTRUCTSee UASessionConnectInfo
BTimeoutTIMEMaximum time to establish the connection.
VAR_OUTPUT
BDoneBOOLSignals a connection has been initially established.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BConnectionHdlDWORDConnection handle – is valid until UA_Disconnect is called.
Notes: The connection monitoring and the reconnect handling are to be done by the client vendor implementation. The reconnect sequence is defined in OPC 10000-4.
UA_Connect
BOOLExecuteDoneBOOL
Vendor specificServerEndpointUrlBusyBOOL
STRUCTSessionConnectInfoErrorBOOL
TIMETimeoutErrorIDDWORD
ConnectionHdlDWORD

7.2 UA_Disconnect

FB-Name UA_Disconnect
This Function Block is used to close a transport connection of an OPC UA session.
VAR_INPUT
BExecuteBOOLOn rising edge connection is terminated.
BConnectionHdlDWORDConnection handle of connection to be closed.
BTimeoutTIMEMaximum time to close the connection.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: Calling UA_Disconnect (even in case of timeout or error) will release the ConnectionHdl, all node-handles and MonitoredItems.
UA_Disconnect
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
TIMETimeoutErrorBOOL
ErrorIDDWORD

7.3 UA_NamespaceGetIndexList

FB-Name UA_NamespaceGetIndexList
This Function Block is used to get the namespace-indexes of numerous namespace-URIs
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNamespaceUrisCountUINTNumber of NamespaceUris in Array of NamespaceUris.
BNamespaceUrisARRAY OF
Vendor specific
Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING. Array of Vendor specific with the NamespaceUris. See Constants of Array Lengths (MAX_ELEMENTS_NAMESPACES)
BTimeoutTIMEMaximum time to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
EErrorIDDWORDError code.
BErrorIDsARRAY OF
DWORD

Error codes. Array shall be the same number of elements as NamespaceUrisCount.

See Constants of Array Lengths (MAX_ELEMENTS_NAMESPACES)

BNamespaceIndexesARRAY OF
UINT

Namespace Indexes. Array shall be the same number of elements as NamespaceUris.

See Constants of Array Lengths (MAX_ELEMENTS_NAMESPACES)

Notes: Reads the Server-Object NamespaceArray (NS:0; Id: 2255) and returns the indexes of the requested elements which can be used in subsequent calls where the Namespace-Array-Index is required - e.g., UA_NodeGetHandleList.

This is a convenient function block – could also be done with ReadList and the returned unknown array length of the NamespaceArray could be evaluated in the user program.

In case the requested NamespaceUri is not found the error PLCopenUA_Bad_NSNotFound will be returned in the corresponding ErrorIDs.

UA_NamespaceGetIndexList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTNamespaceUrisCountErrorBOOL
ARRAY of Vendor specificNamespaceUrisErrorIDDWORD
TIMETimeoutErrorIDsARRAY of DWORD
NamespaceIndexesARRAY of UINT

7.4 UA_ServerGetUriByIndex

FB-Name UA_ServerGetUriByIndex
This Function Block is used to get the server-URI with a given index.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BServerIndexUDINTServerArray Index.
BTimeoutTIMEMaximum time to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BServerUriVendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING.

The URI from the ServerArray with the given ServerIndex.

Notes: -
UA_ServerGetUriByIndex
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UDINTServerIndexErrorBOOL
TIMETimeoutErrorIDDWORD
ServerUriVendor specific

7.5 UA_ServerGetIndexByUriList

FB-Name UA_ServerGetIndexByUriList
This Function Block is used to get several server-indexes of server-URIs
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BServerUrisCountUINTNumber of ServerUris in Array of ServerUris.
BServerUrisARRAY OF
Vendor specific

Shall be STRING or WSTRING. The recommendation for new implementation is to use WSTRING.

Array of Vendor specific with the ServerUris.

See Constants of Array Lengths (MAX_ELEMENTS_NAMESPACES)

BTimeoutTIMEMaximum time to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
EErrorIDDWORDError code.
BErrorIDsARRAY OF
DWORD

Error codes. Array shall be the same number of elements as ServerUrisCount.

See Constants of Array Lengths (MAX_ELEMENTS_NAMESPACES)

BServerIndexesARRAY OF
UDINT

Server Indexes. Array shall be the same number of elements as ServerUris.

See Constants of Array Lengths (MAX_ELEMENTS_NAMESPACES)

Notes: Reads the Server-Object ServerArray (NS:0; Id: 2254) and returns the indexes of the requested elements which can be used in subsequent calls where the Server-Array-Index is required - e.g. UA_Browse.

This is a convenient function call – could also be done with ReadList and the returned unknown array length of the ServerArray could be evaluated in the user program.

In case the requested ServerUri is not found the error PLCopenUA_Bad_NSNotFound will be returned in the corresponding ErrorIDs.

UA_ServerGetIndexByUriList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTServerUrisCountErrorBOOL
ARRAY of Vendor specificServerUrisErrorIDDWORD
TIMETimeoutErrorIDsARRAY of DWORD
ServerIndexesARRAY of UINT

7.6 UA_TranslatePathList

FB-Name UA_TranslatePathList
This Function Block is used to get the node parameters of a node using paths of the node for multiple nodes.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BBrowsePathsCountUINTNumber of UABrowsePath in Array of BrowsePaths.
BBrowsePathsARRAY OF
UABrowsePath

An Array of UABrowsePath with node parameters for starting node and relative path.

See Constants of Array Lengths (MAX_ELEMENTS_RELATIVEPATH)

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BTargetNodeIDsARRAY OF
STRUCT
See UANodeID. Structure UANodeID with node parameters. For target node mentioned by BrowsePath at the input of this FB. Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
BTargetErrorIDsARRAY OF
DWORD

Array of TargetErrorIDs. Contains an error code for each element of the TargetNodeIDs array.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths.

Shall be same size like the NoOfElements in BrowsePath array length.

Notes: -
UA_TranslatePathList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTBrowsePathsCountErrorBOOL
ARRAY OF UABrowsePathBrowsePathsErrorIDDWORD
TIMETimeoutTargetNodeIDsARRAY OF STRUCT
TargetErrorIDsARRAY OF DWORD

7.7 UA_NodeGetHandleList

FB-Name UA_NodeGetHandleList
This Function Block is used to get node handles for multiple nodes.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNodeIDCountUINTNumber of NodeIDs in Array of NodeIDs.
BNodeIDsARRAY OF
UANodeID

See UANodeID.

Length is vendor-specific (MAX_ELEMENTS_NODELIST).
See Constants of Array Lengths
Array length of NodeIDs and NodeHdls must be same.

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB. Set to TRUE if either ErrorID or any of the NodeErrorIDs indicates an error.
BErrorIDDWORDError code.
BNodeErrorIDsARRAY OF
DWORD

Array of NodeErrorIDs. Contains an error code for each valid element of the NodeIds array.

Length is vendor-specific (MAX_ELEMENTS_NODELIST).
See Constants of Array Lengths
Shall be same size like the NodesIDs array length.

BNodeHdlsARRAY OF
DWORD
Array of Node Handles.
Length is vendor-specific (MAX_ELEMENTS_NODELIST).
See Constants of Array Lengths
Array length of NodeIDs and NodeHdls must be same.
Notes: The NodeHdl is a reference to the internal management object for the node in the client. However, the internal client implementation shall also register the node at the server (“RegisterNode”). This enables the OPC UA Server to optimize the communication.
UA_NodeGetHandleList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTNodeIDCountErrorBOOL
ARRAY OF STRUCTNodeIDsErrorIDDWORD
TIMETimeoutNodeErrorIDsARRAY OF DWORD
NodeHdlsARRAY OF DWORD

7.8 UA_NodeReleaseHandleList

FB-Name UA_NodeReleaseHandleList
This Function Block is used to release a set of node handles.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNodeHdlCountUINTNumber of Nodes in NodeHdls Array.
BNodeHdlsARRAY OF DWORDArray of Node handles to be released.
Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
NULL is not a valid handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB. Set to TRUE if either ErrorID or any of the NodeErrorIDs indicates an error.
BErrorIDDWORDError code.
BNodeErrorIDsARRAY OF DWORD

Array of DWORD. Contains an error code for each valid element of the NodeHdls array.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the NodeHdls array length.

Notes: After calling UA_NodeReleaseHandleList the NodeHdls will be invalid.
UA_NodeReleaseHandleList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTNodeHdlCountErrorBOOL
ARRAY OF DWORDNodeHdlsErrorIDDWORD
TIMETimeoutNodeErrorIDsARRAY OF DWORD

7.9 UA_NodeGetInformation

FB-Name UA_NodeGetInformation
This Function Block is used to get the node information.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BConnectionHdlDWORDConnection handle.
BNodeIDUANodeIDSee UANodeID
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
EErrorIDDWORDError code.
BNodeGetInfoErrorIDsARRAY [0 .. 22] OF
DWORD

Array of DWORD. Contains an error code for each valid element of the NodeHdls array.

Shall be same size like number of UANodeInformation elements. This struct has 20 elements.
The NodeGetInfoErrorIDs have the same indices as in OPC 10000-6 specification defined, e.g. (Value = 13). The size of the array is from 0 to 22 where elements 0 and 1 are not being used.

BNodeInfoUANodeInformationSee UANodeInformation

Notes: Depending on the responded NodeClass (see UANodeClassMask) the corresponding NodeGetInfoErrorID shall have the following errors.

Elements, which are not in this NodeClass existing shall have PLCopenUA_Bad_AttributeIdUnknown.

Elements, which should exist but don’t, shall have PLCopenUA_Bad_AttributeIdInvalid.

Valid elements shall have OpcUa_Good.

UA_NodeGetInformation
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
STRUCTNodeIDErrorBOOL
TIMETimeoutErrorIDDWORD
NodeGetInfoErrorIDsARRAY OF DWORD
NodeInfoUANodeInformation

7.10 UA_SubscriptionCreate

FB-Name UA_SubscriptionCreate
This Function Block can be used to create a subscription.
VAR_INPUT
BExecuteBOOLOn rising edge subscription will be created.
BConnectionHdlDWORDConnection handle.
BPublishingEnableBOOLActivate the publishing.
BPriorityBYTEPriority of the Subscription in the server relative to the other Subscriptions created by this client.
See OPC 10000-4.
BTimeoutTIMEMaximum time to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BSubscriptionHdlDWORDSubscription handle.
VAR_IN_OUT
BPublishingIntervalTIMEPublishing interval (can be changed by the Server revised publishing interval).

Notes: The connection monitoring and the reconnect handling are to be done by the client vendor implementation. The reconnect sequence is defined in OPC 10000-4.

SubscriptionHdl must be unique even if the client is connected to multiple servers.

UA_SubscriptionCreate
BOOLExecuteDoneBOOL
DWORDConnectionHdl BusyBOOL
BOOLPublishingEnableErrorBOOL
BYTEPriority ErrorIDBOOL
TIMETimeout SubscriptionHdlDWORD
TIMEPublishingIntervalPublishingIntervalTIME

7.11 UA_SubscriptionDelete

FB-Name UA_SubscriptionDelete
This Function Block can be used to delete a subscription.
VAR_INPUT
BExecuteBOOLOn rising edge, the subscription mentioned by SubscriptionHdl will be deleted.
BSubscriptionHdlDWORDSubscription handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: -
UA_SubscriptionDelete
BOOLExecuteDoneBOOL
DWORDSubscriptionHdl BusyBOOL
TIMETimeoutErrorBOOL
ErrorIDDWORD

7.12 UA_SubscriptionModify

FB-Name UA_SubscriptionModify
This Function Block is designed to be optionally called to modify publishing parameters (enable / interval).
VAR_INPUT
BExecuteBOOLFB operates on rising edge.
BSubscriptionHdlDWORDSubscription handle.
BPublishingEnableBOOLActivates the publishing.
BPriorityBYTEPriority of the Subscription in the server relative to the other Subscriptions created by this client.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
VAR_IN_OUT
BPublishingIntervalTIMEPublishing interval (can be changed by the Server revised publishing interval).
Notes: -
UA_SubscriptionModify
BOOLExecuteDoneBOOL
DWORDSubscriptionHdl BusyBOOL
BOOLPublishingEnable ErrorBOOL
BYTEPriority ErrorIDDWORD
TIMETimeout
TIMEPublishingIntervalPublishingIntervalTIME

7.13 UA_SubscriptionProcessed

FB-Name UA_SubscriptionProcessed
This Function Block is designed to be optionally called to check if monitored items have been published. The use of the function block depends on the underlying system – see notes.
VAR_INPUT
BExecuteBOOLFB operates on each call.
BSubscriptionHdlDWORDSubscription handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDone BOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BPublishedBOOLIndicates, that variables have been published since the last call.
Notes: It is expected to use this call, if the underlying system WILL publish the values automatically. Shall not be used together with the function block UA_MonitoredItemOperateList. This call is expected to return with a valid result after it is called. See also 4.2 Monitored Items.
UA_SubscriptionProcessed
BOOLExecuteDoneBOOL
DWORDSubscriptionHdl BusyBOOL
TIMETimeoutErrorBOOL
ErrorIDBOOL
PublishedDWORD

7.14 UA_MonitoredItemAddList

FB-Name UA_MonitoredItemAddList
This Function Block can be used to add handle of multiple nodes using a list of node handles.
VAR_INPUT
BExecuteBOOLOn rising edge monitored items will be added to a subscription.
BSubscriptionHdlDWORDSubscription handle.
BNodeHdlCountUINTNumber of valid elements in the array to add.
BNodeHdlsARRAY OF
DWORD

Array of Node handles.

Max length of array is to be defined by the vendor and shall be same length thanVariables array length. Shall be the same size as NodeHdlCount.

See Constants of Array Lengths (MAX_ELEMENTS_MONITORLIST)

BSyncModeUAMonitoringSyncMode

See UAMonitoringSyncMode


See chapter 4.2 Monitored Items for general concept of SyncModes

0 = UAMSync_Unknown
Default, this results into an error code – has to be set to one of the following options

1 = UAMS_ControllerSync

2 = UAMS_FwSync

BNodeAddInfosARRAY OF
UANodeAdditionalInfo

See UANodeAdditionalInfo. Specifies the attribute and IndexRange.

See Constants of Array Lengths (MAX_ELEMENTS_MONITORLIST)

This parameter is optional. If not existing, the UAAI_Value (13) will be taken from internal implementation.

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BNodeErrorIDsARRAY OF
DWORD

Array of DWORD. Contains an error code for each element of the Variables array.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same length than NodeHdlCount.

BMonitoredItemHdlsARRAY OF
DWORD

Array of monitored item handles.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same length than NodeHdlCount.

VAR_IN_OUT
BVariablesARRAY OF
UAMonitoredVariables

See UAMonitoredVariables.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same length as NodeHdlCount

BMonitoringParameterARRAY OF
UAMonitoringParameter

See UAMonitoringParameter

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same length as NodeHdlCount.

BValuesChangedARRAY OF
BOOL

Indicates that the values of the monitored item have been changed.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). Shall be the same length as NodeHdlCount.
See Constants of Array Lengths

BMinLostValueCountARRAY OF
UINT
Count the minimum lost values if queue size is > 1 – see also UAMonitoredVariables.

Notes: VAR_IN_OUT: „Variables” as would provide best type save solution for users: The client firmware is able to map the UA memory layout to the controller layout. The firmware client can receive the type definition from the OPC UA Server.
Workaround would be to provide a byte array as “Variables” and the firmware client just provide the blob (UA memory layout – so called “raw data”) into that byte array.

A “Variable” could be the name of the variable so the internal firmware can get address, length, data type of variable.

UA_MonitoredItemAddList
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
UINTNodeHdlCountErrorBOOL
ARRAY OF DWORDNodeHdlsErrorIDDWORD
UAMonitoringSyncModeSyncModeNodeErrorIDsARRAY OF DWORD
ARRAY OF
UANodeAdditionalInfo

NodeAddInfos

MonitoredItemHdls

ARRAY OF DWORD
TIMETimeout
ARRAY OF
UAMonitoredVariables

Variables

Variables
ARRAY OF
UAMonitoredVariables
ARRAY OF
UAMonitoringParameter
MonitoringParameterMonitoringParameterARRAY OF
UAMonitoringParameter
ARRAY OF BOOLValuesChangedValuesChangedARRAY OF BOOL
ARRAY OF UINTMinLostValueCountMinLostValueCountARRAY OF UINT

7.15 UA_MonitoredItemRemoveList

FB-Name UA_MonitoredItemRemoveList
This Function Block can be used to remove multiple nodes from a subscription using a list of node handles.
VAR_INPUT
BExecuteBOOLOn rising edge monitored items will be removed from the subscription.
BSubscriptionHdlDWORDSubscription handle.
BMonitoredItemHdlCountUINTNumber of valid elements in the array to remove.
BMonitoredItemHdlsARRAY OF
DWORD

Monitored item handles.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same size than MonitoredItemHdlCount

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BNodeErrorIDsARRAY OF
DWORD

Array of DWORD. Contains an error code for each valid element of the Variables array.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths

Shall be the same size than MonitoredItemHdlCount.

Notes: -
UA_MonitoredItemRemoveList
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
UINTMonitoredItemHdlCountErrorBOOL
ARRAY OF DWORDMonitoredItemHdlsErrorIDDWORD
TIMETimeoutNodeErrorIDsARRAY OF DWORD

7.16 UA_MonitoredItemModifyList

FB-Name UA_MonitoredItemModifyList
This Function Block is designed to be optionally called to modify a list of monitored item parameters.
VAR_INPUT
BExecuteBOOLOn rising edge monitored items will be modified.
BSubscriptionHdlDWORDSubscription handle.
BMonitoredItemHdlCountUINTNumber of valid elements in the array to modify.
BMonitoredItemHdlsARRAY OF
DWORD

Array of monitored item handles.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same size than MonitoredItemHdlCount

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BNodeErrorIdsARRAY OF
DWORD
Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths – including the “Overflow bit” indication
VAR_IN_OUT
BMonitoringParametersARRAY OF
UAMonitoringParameter
See UAMonitoringParameter
Notes: -
UA_MonitoredItemModifyList
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
UINTMonitoredItemHdlCountErrorBOOL
ARRAY OF DWORDMonitoredItemHdlsErrorIDDWORD
TIMETimeoutNodeErrorIdsARRAY OF DWORD
ARRAY OF
UAMonitoringParameter

MonitoringParameters

MonitoringParameters
ARRAY OF
UAMonitoringParameter

7.17 UA_MonitoredItemOperateList

FB-Name UA_MonitoredItemOperateList
This Function Block is designed to be called to update the values of a list of Variables and the corresponding information in the associated lists like ValuesChanged, TimeStamps and NodeQualityIDs of the control program. The use of the function block depends on the underlying system – see notes.
VAR_INPUT
BExecuteBOOLOn rising edge monitored items will be modified.
BSubscriptionHdlDWORDSubscription handle.
BMonitoredItemHdlCountUINTNumber of valid elements in the array to modify.
BMonitoredItemHdlsARRAY OF
DWORD

Array of monitored item handles.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths. Shall be the same size than MonitoredItemHdlCount.

VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BNodeErrorIDsARRAY OF
DWORD

Array of DWORD. Contains an error code for each element of the MonitoredItemHdls-Array.

Length is vendor-specific (MAX_ELEMENTS_MONITORLIST). See Constants of Array Lengths Shall be the same length than MonitoredItemHdlCount.

BPublishedBOOLIndicates, that variables have been published since the last call. At least one element of the array of ValuesChanged will be TRUE.
Notes: It is expected to use this call, if the underlying system will NOT update the values automatically. Shall not be used together with the function block UA_SubscriptionProcessed. After the successful execution it is expected, that the values of the Variables and the corresponding information in the associated lists like ValuesChanged, TimeStamps and NodeQualityIDs have been updated. See also 4.2 Monitored Items.
UA_MonitoredItemOperateList
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
UNITMonitoredItemHdlCountErrorBOOL
ARRAY OF DWORDMonitoredItemHdlsErrorIDDWORD
NodeErrorIDsARRAY OF DWORD
PublishedBOOL

7.18 UA_ReadList

FB-Name UA_ReadList
This Function Block is used to read values of multiple nodes using a list of node handles.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BConnectionHdlDWORDConnection handle.
BNodeHdlCountUINTNumber of valid elements in the array to read.
BNodeHdlsARRAY OF
DWORD

Array of Node Handles.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the Variables array length.

BNodeAddInfosARRAY OF
UANodeAdditionalInfo

See UANodeAdditionalInfo. Array of UANodeAdditionalInfo. Specifies the attribute and IndexRange.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the Variables array length.

This parameter is optional. If not existing the UAAI_Value (13) will be taken from internal implementation.

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected
BErrorBOOLSignals that an error has occurred within the FB. Set to TRUE if either ErrorID or any of the NodeErrorIDs indicates an error.
BErrorIDDWORDError code for the OPC UA service call.
BNodeErrorIDsARRAY OF
DWORD

Array of DWORD. Contains an error code for each valid element of the Variables array.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the Variables array length.

BTimeStampsARRAY OF
Vendor specific

Shall be DT or LDT. The recommendation for new implementation is to use LDT. Contains a TimeStamp for each valid element of the Variables array.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). Constants of Array Lengths Constants of Array Lengths
Shall be same size like the Variables array length.

This parameter is optional. If not existing the internal client implementation shall not ask for any timestamp from server side.

VAR_IN_OUT
BVariablesARRAY OF
Vendor specific
Vendor specific. Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths

Notes: Vendors can handle “Variables” in a vendor specific way. Independent of the vendor specific solution the mapping of the controller data type and OPC UA data type shall be handled in the function block.

VAR_IN_OUT: “Variables” as would provide best type save solution for users: The client firmware is able to map the UA memory layout to the controller layout. The firmware client can receive the type definition from the OPC UA Server.
Workaround would be to provide a byte array as “Variables” and the firmware client just provide the blob (UA memory layout – so called “raw data”) into that byte array.

A “Variable” could be the name of the variable so the internal firmware can get address, length, data type of variable.

UA_ReadList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTNodeHdlCountErrorBOOL
ARRAY OF DWORDNodeHdlsErrorIDDWORD
ARRAY OF STRUCTNodeAddInfosNodeErrorIDsARRAY OF DWORD
TIMETimeoutTimeStampsARRAY OF Vendor specific
ARRAY OF Vendor specificVariablesVariablesARRAY OF Vendor specific

7.19 UA_WriteList

FB-Name UA_WriteList
This Function Block is used to write values to multiple nodes using a list of node handles.
VAR_INPUT
BExecuteBOOLOn rising edge node values will be written.
BConnectionHdlDWORDConnection handle.
BNodeHdlCountUINTNumber of valid elements in the array to write.
BNodeHdlsARRAY OF
DWORD

Array of Node Handles.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the Variables array length.

BNodeAddInfosARRAY OF
UANodeAdditionalInfo

See UANodeAdditionalInfo. Array of UANodeAdditionalInfo. Specifies the attribute and IndexRange.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the Variables array length.

This parameter is optional. If not existing, the UAAI_Value (13) will be taken from internal implementation.

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB. Set to TRUE if either ErrorID or any of the NodeErrorIDs indicates an error.
BErrorIDDWORDError code for the OPC UA service call.
BNodeErrorIDsARRAY OF
DWORD

Array of DWORD. Contains an error code for each valid element of the Variables array.

Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths
Shall be same size like the Variables array length.

VAR_IN_OUT
BVariablesARRAY OF
Vendor specific
Vendor specific.
Length is vendor-specific (MAX_ELEMENTS_NODELIST). See Constants of Array Lengths.

Notes: Vendors can handle “Variables” in a vendor specific way. Independent of the vendor specific solution the mapping of the controller data type and OPC UA data type shall be handled in the function block.

VAR_IN_OUT: “Variables” as would provide best type save solution for users: The client firmware is able to map the UA memory layout to the controller layout. The firmware client can receive the type definition from the OPC UA Server.

Workaround would be to provide a byte array as “Variables” and the firmware client just provide the blob (UA memory layout – so called “raw data”) into that byte array.

A “Variable” could be the name of the variable so the internal firmware can get address, length, data type of variable.

UA_WriteList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTNodeHdlCountErrorBOOL
ARRAY OF DWORDNodeHdlsErrorIDDWORD
ARRAY OF STRUCTNodeAddInfosNodeErrorIDsARRAY OF DWORD
TIMETimeout
ARRAY OF Vendor specificVariablesVariablesARRAY OF Vendor specific

7.20 UA_MethodGetHandleList

FB-Name UA_MethodGetHandleList
This Function Block is used to get multible method handles for method calls.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNodeIDCountUINTNumber of elements the ObjectNodeIDs and MethodNodeIDs shall have.
BObjectNodeIDs

ARRAY OF

UANodeID

See UANodeID. Array shall have the size of NodeIDCount

See Constants of Array Lengths

BMethodNodeIDs

ARRAY OF

UANodeID

See UANodeID. Array shall have the size of NodeIDCount

See Constants of Array Lengths

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
EErrorIDDWORDError code.
BErrorIDsARRAY OF
DWORD
Error codes.
BMethodHdlsARRAY OF
DWORD
Method handles.
Notes: -
UA_MethodGetHandleList
BOOLExecuteDoneBOOL
DWORDConnectionHdl BusyBOOL
UINTNodeIDCountErrorBOOL
ARRAY OF UANodeIDObjectNodeIDs ErrorIDDWORD
ARRAY OF UANodeIDMethodNodeIDs ErrorIDsARRAY OF DWORD
TIMETimeout MethodHdls ARRAY OF DWORD

7.21 UA_MethodReleaseHandleList

FB-Name UA_MethodReleaseHandleList
This Function Block is used to release method handles.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BMethodHdlCountUINTNumber of elements the MethodHdls shall have.
BMethodHdlsARRAY OF
DWORD

Method handles to be released.

See Constants of Array Lengths (MAX_ELEMENTS_METHOD)

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
EErrorIDDWORDError code.
BErrorIDsARRAY OF
DWORD
Error codes. See Constants of Array Lengths (MAX_ELEMENTS_METHOD)
Notes: After calling UA_MethodReleaseHandle or MethodReleaseHandleList the MethodHdl(s) will be invalid.
UA_MethodReleaseHandleList
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
UINTMethodHdlCountErrorBOOL
ARRAY OF DWORDMethodHdlsErrorIDDWORD
TIMETimeoutErrorIDsARRAY OF DWORD

7.22 UA_MethodCall

FB-Name UA_MethodCall
This Function Block is used to call a method routine.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BMethodHdlDWORDMethod handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
VAR_IN_OUT
EMethodResultDWORD

StatusCode of the Method executed in the Server.

If a vendor do not provide this extended output then the operation result should be returned in the ErrorID.

BInputArgumentsVendor specificVariable containing input parameters. Vendor specific.
BOutputArgumentsVendor specificVariable containing output parameters. Vendor specific.
Notes: -
UA_MethodCall
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
DWORDMethodHdlErrorBOOL
TIMETimeoutErrorIDDWORD
DWORDMethodResultMethodResultDWORD
Vendor specificInputArgumentsInputArgumentsVendor specific
Vendor specificOutputArgumentsOutputArgumentsVendor specific

7.23 UA_Browse

FB-Name UA_Browse
This Function Block is used to navigate through the Address Space. Passing a starting node, the server retuns a list of nodes by references.
The MaxArray size is configured for the controller must be passed as the RequestMaxReferencePerNode in the firmeware service call.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
EViewDescription UAViewDescriptionOptional: Shall be an empty parameter if NOT browsing a View.
BBrowseDescriptionUABrowseDescription

Starting Node and other information for navigation.

See UABrowseDescription

Hint: This parameter is ignored if the ContinuationPointIn is not 0

BContinuationPointInDWORD

If set to 0 the browse starts with starting node.

If set to ContinuationPointOut it can be used for browse next service.

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BBrowseResultCountUINT

The number of entries in the BrowseResult array

BBrowseResultARRAY OF
UAReferenceDescription

List of references and target node information for the node passing the filter criteria in the request

See UAReferenceDescription

Length is vendor-specific (MAX_ELEMENTS_BROWSERESULT). See Constants of Array Lengths
Hint: MaxSize is initialized by a predefined fixed size

BContinuationPointOutDWORDSet when the server was not able to to deliver all results. Can be used to copy it to ContinuationPointIn for browse next service
Notes: -
UA_Browse
BOOLExecuteDoneBOOL
DWORDConnectionHdl BusyBOOL
UAViewDescriptionViewDescription ErrorBOOL
UABrowseDescriptionBrowseDescription ErrorIDDWORD
DWORDContinuationPointIn BrowseResultCountUINT

TIME

Timeout

BrowseResult
ARRAY OF
UAReferenceDescription
ContinuationPointOutDWORD

7.24 UA_EventItemAdd

FB-Name UA_EventItemAdd
This Function Block is used to add handles for events.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BSubscriptionHdlDWORDSubscription handle.
BNodeHdlDWORDHandle of the node to monitor for emitted events. Events are only produced by the node classes Object and View. Whether a node is actually producing events or not may be determined by its EventNotifier attribute.
BEventTypeUANodeIDType of the event to monitor. The EventType will be included as OfType operator in the Where Clause of the event monitored item filter.
BEventFieldSelectionCountUINTNumber of elements in EventFieldSelections
BEventFieldSelectionsARRAY OF
UARelativePath

Array of UARelativePath for the event fields to select. The path starts from the event type node. The FieldSelection is used as Select Clause of the event monitored item filter.

Examples are

0: Message selects the Message event field

0: ActiveState/0: Id selects the Boolean representation of the Alarm ActiveState.

Length is vendor-specific (MAX_EVENT_FIELD_SELECTIONS). See Constants of Array Lengths
Hint: MaxSize is initialized by a predefined fixed size

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code
BEventItemHdlDWORDEvent Item Handle. The handle can be used to process the published events with UA_EventItemOperate and remove them from the subscription with UA_EventItemRemove.
VAR_IN_OUT
BEventFieldsARRAY OF
Vendor specific
Vendor specific list of variables used to receive the events field data for one event occurrence. Vendor specific.
BEventProcessedBOOLIndicates that the values of the event item have been changed.
BRemainingEventCountUINTNumber of remaining events available for processing
BFieldErrorIDs

ARRAY OF

DWORD

Contains an error code for each valid element of the EventFieldSelection array.

Length is vendor-specific (MAX_EVENT_FIELD_SELECTIONS). See Constants of Array Lengths – including the “Overflow bit” indication.

Notes: -
UA_EventItemAdd
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
ARRAY OF DWORDNodeHdlErrorBOOL
ARRAY OF UANodeIdEventTypeErrorIDDWORD
UINTEventFieldSelectionCountEventItemHdlDWORD
ARRAY OF UARelativePathEventFieldSelection
TIMETimeout
ARRAY OF Vendor specificEventFieldsEventFieldsARRAY OF Vendor specific
BOOLEventProcessedEventProcessedBOOL
UINTRemainingEventCountRemainingEventCountUINT
ARRAY OF DWORDFieldErrorIDsFieldErrorIDsARRAY OF DWORD

7.25 UA_EventItemOperateList

FB-Name UA_EventItemOperateList
This Function Block is used to get a list of event infomation.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BSubscriptionHdlDWORDSubscription handle.
BEventItemHdlCountUINTNumber of elements the EventItemHdls shall have.
BEventItemHdlsARRAY OF
DWORD

Event Item Handles

Length is vendor-specific (MAX_ELEMENTS_EVENTITEMLIST). See Constants of Array Lengths

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BEventProcessedBOOLIndicates if a new event was processed.
BFieldErrorIDsARRAY OF
DWORD

Contains an error code for each valid element of the EventFieldSelection array.

Length is vendor-specific (MAX_ELEMENTS_EVENTITEMOPERATE). See Constants of Array Lengths – including the “Overflow bit” indication.

Note: For compatibility reason “FieldErrorIDs” is not renamed, but “EventErrorIDs” is ment therefore instead.

Notes: The EventFields has to be defined what is the best declaration in IEC language for 25 different event type structures.
UA_EventItemOperateList
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
UINTEventItemHdlCountErrorBOOL
ARRAY OF DWORDEventItemHdlsErrorIDDWORD
TIMETimeoutEventProcessedBOOL
FieldErrorIDsARRAY OF DWORD

7.26 UA_EventItemRemoveList

FB-Name UA_EventItemRemoveList
This Function Block can be used to remove an event item handle from a subscription.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BSubscriptionHdlDWORDSubscription handle.
BEventItemHdlCountUINTNumber of elements the EventItemHdls shall have.
BEventItemHdlsARRAY OF
DWORD

Event item handles.

Length is vendor-specific (MAX_ELEMENTS_EVENTITEMLIST). See Constants of Array Lengths

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
EErrorIDDWORDError code.
BErrorIDsARRAY OF
DWORD
Error codes
Notes: -
UA_EventItemRemoveList
BOOLExecuteDoneBOOL
DWORDSubscriptionHdlBusyBOOL
UINTEventItemHdlCountErrorBOOL
ARRAY OF DWORDEventItemHdlsErrorIDDWORD
TIMETimeoutErrorIDsARRAY OF DWORD

7.27 UA_HistoryUpdate

FB-NameUA_HistoryUpdate
This Function Block is used to insert or replace or update data in the historical database.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNodeHdlDWORDNode handle.
BPerformInsertBOOL

BPerformReplaceBOOL
BDataValueCountUNITNumber of values to be inserted, replaced or updates
BDataValuesARRAY of UAHADataValue

Array of UAHADataValue

See UAHADataValue

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected
BErrorBOOLSignals that an error has occurred within the Function Block.
BErrorIDDWORDError code. (StatusCode)
BValueErrorIDsARRAY OF
DWORD
Contains an error code for each valid element.
Notes: The idea of this scenario is to have an OPC UA server with HA (Historical Access) functionality available, either local on the same system or remotely in the network. In traditional way the OPC UA Server is responsible to collect data on his own from the underlying process. This FB UA_HistoryUpdate allows the OPC UA-HA Server to stay inactive and wait that an OPC UA client is actively pushing data into OPC UA-HA-Server making use of the Server’s HistoryUpdate interface.
UA_HistoryUpdate
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
DWORDNodeHdlErrorBOOL
BOOLPerformInsertErrorIDDWORD
BOOLPerformReplaceValueErrorIDsARRAY OF DWORD
UINTDataValueCount
ARRAY OF UAHADataValueDataValues
TIMETimeout

8 Diagnosis

8.1 UA_ConnectionGetStatus

FB-Name UA_ConnectionGetStatus
This Function Block is used to get the connection status.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BConnectionStatusENUMSee UAConnectionStatus. The outputs ServerState and ServiceLevel are only valid if the ConnectionStatus is UACS_Connected.
BServerStateENUMSee UAServerState. The ServerState is UASS_Unknown if the ConnectionStatus is not UACS_Connected.
BServiceLevelBYTEServiceLevel describes the ability of the Server to provide its data to the client. The value range is from 0 to 255, where 0 indicates the worst and 255 indicates the best. The intent is to provide the clients an indication of availability among redundant Servers.
Notes: -
UA_ConnectionGetStatus
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
TIMETimeoutErrorBOOL
ErroIDDWORD
ConnectionStatusENUM
ServerStateENUM
ServiceLevelBYTE

9 Phased out structured Data Types

The following structured Data Types have been released with specification v1. For future use it’s recommended to work with the new version of these structured Data Types.

9.1 UAMonitoredSettings

UAMonitoringSettingsDataTypeDescription
SamplingIntervalTIMEThe rate in milliseconds the server checks the underlying data source for changes.
DeadbandTypeUADeadbandType

See

UADeadbandType. This parameter indicates if a deadband is applied and if applied, which type of Deadband.

DeadbandREALe.g. percent 0.1%.

10 Phased out Functionblocks

The following Functionblocks have been released with specification v1. For future use it’s recommended to work with the new “List” version of these Functionblocks.

Example: Instead of multiple times calling UA_NamespaceGetIndex or UA_Read to handle one node it makes sense to reduce effort and complexity by using once only UA_NamespaceGetIndexList and UA_ReadList.

Customers who implemented their applications based on this set of Functionblocks of v1.0 can continue using this standard – but should think about using the newly specified Functionblocks in the future.

10.1 UA_NamespaceGetIndex

FB-Name UA_NamespaceGetIndex
This Function Block is used to get the namespace-index of a namespace-URI
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNamespaceUriSTRINGNamespace URI.
BTimeoutTIMEMaximum time to response.
VAR_OUTPUT
BNamespaceIndexUINTNamespace Index.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: This FB is deprecated and just for backward compatibility – better use UA_NamespaceGetIndexList
UA_NamespaceGetIndex
BOOLExecuteNamespaceIndexUINT
DWORDConnectionHdlDoneBOOL
STRINGNamespaceUriBusyBOOL
TIMETimeoutErrorBOOL
ErrorIDDWORD

10.2 UA_TranslatePath

FB-Name UA_TranslatePath
This Function Block is used to get the node parameters of a node using path of the node.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BStartNodeIDSTRUCTSee UANodeID. Structure UANodeID with node parameters for starting node.
BRelativePathSTRINGPath of the Target node; BNF of RelativePath is defined in OPC 10000-4.
BTimeoutTIMETime to response.
VAR_OUTPUT
BTargetNodeIDSTRUCTSee UANodeID. Structure UANodeID with node parameters. For target node mentioned by RelativePath at the input of this FB.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: This FB is deprecated and just for backward compatibility – better use UA_TranslatePathList
UA_TranslatePath
BOOLExecuteTargetNodeIDSTRUCT
DWORDConnectionHdlDoneBOOL
STRUCTStartNodeIDBusyBOOL
STRINGRelativePathErrorBOOL
TIMETimeoutErrorIDDWORD

10.3 UA_NodeGetHandle

FB-Name UA_NodeGetHandle
This Function Block is used to get the node handle.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNodeIDSTRUCTSee UANodeID
BTimeoutTIMETime to response.
VAR_OUTPUT
BNodeHdlDWORDNode handle.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.

Notes: The NodeHdl is a reference to the internal management object for the node in the client. But the client shall also register the node at the server (“RegisterNode”). This enables the OPC UA Server to optimize the communication.

The scope of the NodeHdl is the connection. So a NodeHdl is unique for a connection but could be equal to a NodeHdl of another connection. This FB is deprecated and just for backward compatibility – better use UA_NodeGetHandleList

UA_NodeGetHandle
BOOLExecuteNodeHdlDWORD
DWORDConnectionHdlDoneBOOL
STRUCTNodeIDBusyBOOL
TIMETimeoutErrorBOOL
ErrorIDDWORD

10.4 UA_NodeReleaseHandle

FB-Name UA_NodeReleaseHandle
This Function Block is used to release the node handle.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BNodeHdlDWORDNode handle to be released.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.

Notes: After calling UA_NodeReleaseHandle the NodeHdl will be invalid.

This FB is deprecated and just for backward compatibility – better use UA_NodeReleaseHandleList

UA_NodeReleaseHandle
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
DWORDNodeHdlErrorBOOL
TIMETimeoutErrorIDDWORD

10.5 UA_NodeGetInfo

FB-Name UA_NodeGetInfo
This Function Block is used to get the node information.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BConnectionHdlDWORDConnection handle.
BNodeIDSTRUCTSee UANodeID
BTimeoutTIMETime to response.
VAR_OUTPUT
BNodeInfoSTRUCTSee UANodeInfo (deprecated)
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: This FB is deprecated and just for backward compatibility – better use UA_NodeGetInformation
UA_NodeGetInfo
BOOLExecuteNodeInfoUANodeInfo
DWORDConnectionHdl DoneBOOL
STRUCTNodeID BusyBOOL
TIMETimeout ErrorBOOL
ErrorIDDWORD

10.6 UA_SubscriptionOperate

FB-Name UA_SubscriptionOperate
This Function Block is designed to be optionally called -even cyclically- to check if the variables have been published and to check and modify publishing parameters (enable / interval).
VAR_INPUT
BExecuteBOOLFB operates on rising edge.
BSubscriptionHdlDWORDSubscription handle.
BPublishingEnableBOOLActivates the publishing.
BPriorityBYTEPriority of the Subscription in the server relative to the other Subscriptions created by this client.
BTimeoutTIMETime to response.
VAR_OUTPUT
BPublishedBOOLIndicates, that variables have been published since the previous call.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
VAR_IN_OUT
BPublishingIntervalTIMEPublishing interval (can be changed by the Server revised publishing interval).
Notes: This FB is deprecated and just for backward compatibility – better use UA_NodeGetInformation
UA_SubscriptionOperate
BOOLExecutePublishedBOOL
DWORDSubscriptionHdlDoneBOOL
BOOLPublishingEnableBusyBOOL
BYTEPriorityErrorBOOL
TIMETimeoutErrorIDDWORD
TIMEPublishingIntervalPublishingIntervalTIME

10.7 UA_MonitoredItemAdd

FB-Name UA_MonitoredItemAdd
This Function Block can be used to add handle that values are updated by subscription.
VAR_INPUT
BExecuteBOOLOn rising edge monitored item will be added to a subscription.
BSubscriptionHdlDWORDSubscription handle.
BNodeHdlDWORDNode handle.
BNodeAddInfoDWORDSee UANodeAdditionalInfo. Specifies the attribute and IndexRange.
BTimeoutTIMETime to response.
VAR_OUTPUT
BMonitoredItemHdlDWORDMonitored item handle.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
VAR_IN_OUT
BVariableVendor specificTo be defined by vendor.
BMonitoringSettingsSTRUCTSee 9.1 UAMonitoredSettings (phased out structured data types)

Notes: VAR_IN_OUT: „Variable” as would provide best type save solution for users: The client firmware is able to map the UA memory layout to the controller layout. The firmware client can receive the type definition from the OPC UA Server.
Workaround would be to provide a byte array as “Variables” and the firmware client just provide the blob (UA memory layout – so called “raw data”) into that byte array.

A “Variable” could be the name of the variable so the internal firmware can get address, length, data type of variable.

UA_MonitoredItemAdd
BOOLExecuteMonitoredItemHdlDWORD
DWORDSubscriptionHdl DoneBOOL
DWORDNodeHdlBusyBOOL
DWORDNodeAddInfoErrorBOOL
TIMETimeoutErrorIDDWORD
Vendor specificVariableVariableVendor specific
STRUCTMonitoringSettingMonitoringSettingSTRUCT

10.8 UA_MonitoredItemRemove

FB-Name UA_MonitoredItemRemove
This Function Block can be used to remove a handle from a subscription.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BMonitoredItemHdlDWORDMonitored item handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: -
UA_MonitoredItemRemove
BOOLExecuteDoneBOOL
DWORDMonitoredItemHdl BusyBOOL
TIMETimeout ErrorBOOL
ErrorIDDWORD

10.9 UA_MonitoredItemOperate

FB-Name UA_MonitoredItemOperate
This Function Block is designed to be optionally called to check and modify monitored item parameters.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BMonitoredItemHdlDWORDMonitored item handle.
BTimeoutTIMETime to response.
VAR_OUTPUT
BValueChangedBOOLIndicates that the value of the monitored item has been changed.
BTimeStampDTTimeStamp
BRemainingValueCountUINTNumber of remaining value changes available for processing
This parameter is for diagnostic purpose and relates to the que size: High numbers indicate that the system is overloaded and should result in reducing the sample rate to faster process incoming MonitoredItems.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
VAR_IN_OUT
BMonitoringSettingsSTRUCTSee 9.1 UAMonitoredSettings (phased out structured data types)
Notes: -
UA_MonitoredItemOperate
BOOLExecuteValueChangedBOOL
DWORDMonitoredItemHdl TimeStampDT
TIMETimeout DoneBOOL
BusyBOOL
ErrorBOOL
ErrorIDDWORD
STRUCTMonitoringSettingsMonitoringSettingsSTRUCT

10.10 UA_Read

FB-Name UA_Read
This Function Block is used to read the value of a single node.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be read.
BConnectionHdlDWORDConnection handle.
BNodeHdlDWORDNode handle.
BNodeAddInfo UANodeAdditionalInfo

See UANodeAdditionalInfo. Specifies the attribute and IndexRange.

This parameter is optional. If not existing the UAAI_Value (13) will be taken from internal implementation.

BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
BTimeStampDT

TimeStamp.

This parameter is optional. If not existing the internal client implementation shall not ask for any timestamp from server side.

VAR_IN_OUT
BVariableVendor specificVendor specific

Notes: Vendors can handle “Variable” in a vendor specific way. Independent of the vendor specific solution the mapping of the controller data type and OPC UA data type shall be handled in the function block.

VAR_IN_OUT: “Variable” as would provide best type save solution for users: The client firmware is able to map the UA memory layout to the controller layout. The firmware client can receive the type definition from the OPC UA Server.
Workaround would be to provide a byte array as “Variable” and the firmware client just provide the blob (UA memory layout – so called “raw data”) into that byte array.

“Variable” could be the name of the variable so the internal firmware can get address, length, data type of variable.

This FB is deprecated and just for backward compatibility – better use UA_ReadList

UA_Read
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
DWORDNodeHdlErrorBOOL
STRUCTNodeAddInfoErrorIDDWORD
TIMETimeoutTimeStampDT
Vendor specificVariableVariableVendor specific

10.11 UA_Write

FB-Name UA_Write
This Function Block is used to write a value to a single node.
VAR_INPUT
BExecuteBOOLOn rising edge node information will be written.
BConnectionHdlDWORDConnection handle.
BNodeHdlDWORDNode handle.
BNodeAddInfoSTRUCTSee UANodeAdditionalInfo. Specifies the attribute and IndexRange. This parameter is optional. If not existing the UAAI_Value (13) will be taken from internal implementation.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
VAR_IN_OUT
BVariableVendor specificTo be defined by vendor.

Notes: Vendors can handle “Variable” in a vendor specific way. Independent of the vendor specific solution the mapping of the controller data type and OPC UA data type shall be handled in the function block.

VAR_IN_OUT: “Variable” as would provide best type save solution for users: The client firmware is able to map the UA memory layout to the controller layout. The firmware client can receive the type definition from the OPC UA Server.
Workaround would be to provide a byte array as “Variable” and the firmware client just provide the blob (UA memory layout – so called “raw data”) into that byte array.

“Variable” could be the name of the variable so the internal firmware can get address, length, data type of variable.

This FB is deprecated and just for backward compatibility – better use UA_WriteList

UA_Write
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
DWORDNodeHdlErrorBOOL
STRUCTNodeAddInfoErrorIDDWORD
TIMETimeout
Vendor specificVariableVariableVendor specific

10.12 UA_MethodGetHandle

FB-Name UA_MethodGetHandle
This Function Block is used to get the method handle for a method call.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BObjectNodeIDSTRUCTSee UANodeID
BMethodNodeIDSTRUCTSee UANodeID
BTimeoutTIMETime to response.
VAR_OUTPUT
BMethodHdlDWORDMethod handle.
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.
Notes: This FB is deprecated and just for backward compatibility – better use UA_MethodGetHandleList
UA_MethodGetHandle
BOOLExecuteMethodHdlDWORD
DWORDConnectionHdlDoneBOOL
STRUCTObjectNodeIDBusyBOOL
STRUCTMethodNodeIDErrorBOOL
TIMETimeoutErrorIDDWORD

10.13 UA_MethodReleaseHandle

FB-Name UA_MethodReleaseHandle
This Function Block is used to release the method handle.
VAR_INPUT
BExecuteBOOLFB performs its task on rising edge on this input.
BConnectionHdlDWORDConnection handle.
BMethodHdlDWORDMethod handle to be released.
BTimeoutTIMETime to response.
VAR_OUTPUT
BDoneBOOLFB has completed its task.
BBusyBOOLThe FB is not finished and new output values are to be expected.
BErrorBOOLSignals that an error has occurred within the FB.
BErrorIDDWORDError code.

Notes: After calling UA_MethodReleaseHandle the MethodHdl will be invalid.

This FB is deprecated and just for backward compatibility – better use UA_MethodReleaseHandleList

UA_MethodReleaseHandle
BOOLExecuteDoneBOOL
DWORDConnectionHdlBusyBOOL
DWORDMethodHdlErrorBOOL
TIMETimeoutErrorIDDWORD

Annex A Compliance Procedure and Compliance List (Normative)

Listed in this Annex are the requirements for the compliance statement from the supplier of the PLCopen OPC UA Client for IEC 61131-3. The compliance statement consists of two main groups: supported data types and supported Function Blocks, in combination with the applicable inputs and outputs. The supplier is required to fill out the tables for the used data types and Function Blocks, according to their product, committing their support to the specification.

By submitting these tables to PLCopen, and after approval by PLCopen, the list will be published on the PLCopen website, www.PLCopen.org, as well as a shortform overview, as specified in ‎Appendix A.2 Overview of the Functionblocks and A.2 Overview of the Functionblocks as below.

In addition to this approval, the supplier is granted access and usage rights of the PLCopen OPC UA Client logo, as described in Annex B:

Function Blocks and Inputs and Outputs

An implementation which claims compliance with this PLCopen OPC UA specification shall offer a set of Function Blocks for communication, meaning one or more Function Blocks, with at least the basic input and output variables, marked as “B” in the tables. These inputs and outputs have to be supported to be compliant.

For higher-level systems and future extensions any subset of the extended input and output variables, marked as “E” in the tables can be implemented.

Vendor specific additions are marked with “V”, and can be listed as such in the supplier documentation.

Basic input/output variables are mandatory Marked in the tables with the letter “B
Extended input /output variables are optionalMarked in the tables with the letter “E
Vendor Specific additions Marked in the vendor’s compliance documentation with “V

All the vendor specific items will not be listed in the comparison table on the PLCopen website, but in the detailed vendor specific list, which also is published.

All vendor specific in- and outputs of all FBs must be listed in the certification list of the supplier. With this, the certification listing from a supplier describes all the I/Os of the relevant FBs, including vendor-specific extensions, and thus showing the complete FBs as used by the supplier.

For compliance reason we identify in A.2 the difference of “V1.0” or “V1.1” or “No” (empty field) support.

A.1 Statement of Supplier

Supplier name
Supplier address
City
Country
Telephone
Fax
Email address
Product Name
Product version
Release date

I hereby state that the following tables as filled out and submitted do match our product as well as the accompanying user manual, as stated above.

Name of representation (person):

Date of signature (dd/mm/yyyy):

Signature:

A.2 Overview of the Functionblocks

ChapterFunction BlockSupported V1.0 / V1.1 / V1.2 / NoComments
7.1 UA_Connect
0 UA_Disconnect
7.3 UA_NamespaceGetIndexList
7.4 UA_ServerGetUriByIndex
7.5 UA_ServerGetIndexByUriList
7.6 UA_TranslatePathList
7.7 UA_NodeGetHandleList
7.8 UA_NodeReleaseHandleList
7.9 UA_NodeGetInformation
7.10 UA_SubscriptionCreate
7.11 UA_SubscriptionDelete
7.12 UA_SubscriptionModify
0 UA_SubscriptionProcessed
7.14 UA_MonitoredItemAddList
7.15 UA_MonitoredItemRemoveList
7.16 UA_MonitoredItemModifyList
7.17 UA_MonitoredItemOperateList
7.18 UA_ReadList
7.19 UA_WriteList
7.20 UA_MethodGetHandleList
7.21 UA_MethodReleaseHandleList
7.22 UA_MethodCall
7.23 UA_Browse
7.24 UA_EventItemAdd
7.25 UA_EventItemOperateList
7.26 UA_EventItemRemoveList
7.27 UA_HistoryUpdate
8.1 UA_ConnectionGetStatus
10 Phased out Functionsblocks
10.1 UA_NamespaceGetIndex
10.2 UA_TranslatePath
10.3 UA_NodeGetHandle
10.4 UA_NodeReleaseHandle
10.5 UA_NodeGetInfo
10.6 UA_SubscriptionOperate
10.7 UA_MonitoredItemAdd
10.8 UA_MonitoredItemRemove
10.9 UA_MonitoredItemOperate
10.10 UA_Read
10.11 UA_Write
10.12 UA_MethodGetHandle
10.13 UA_MethodReleaseHandle

Annex B The “PLCopen OPC UA Client for IEC 61131-3” Logo and Its Usage

For quick identification of compliant products, PLCopen and OPC Foundation have developed a logo for the “PLCopen OPC UA Client for IEC 61131-3” functionality:

This “PLCopen OPC UA client for IEC 61131-3” logo is owned and trademarked by both PLCopen and the OPC Foundation.

In order to use this logo free-of-charge, the relevant company has to fulfill all the following requirements:

the company has to be a voting member of PLCopen or OPC Foundation;

the company has to comply with the existing specification, as specified by the PLCopen OPC Foundation Techncial Committee 4 - Communication, and as published by PLCopen and OPC Foundation, and of which this statement is a part;

this compliance application is provided in written form by the company to PLCopen, clearly stating the applicable software package and the supporting elements of all the specified tables, as specified in the document itself;

in case of non-fulfillment, which has to be decided by PLCopen and / or OPC Foundation, the company will receive a written statement concerning this from PLCopen and / or OPC Foundation. The company will have a one-month period to either adopt their software package in such a way that it complies, represented by the issuing of a new compliance statement, or remove all reference to the specification, including the use of the logo, from all their specification, be it technical or promotional material;

the logo has to be used as is - meaning the full logo. It may be altered in size providing the original scale and color setting is kept.

the logo has to be used in the context of PLCopen OPC UA communication.

Agreement of Use

COPYRIGHT RESTRICTIONS

This document is provided "as is" by the OPC Foundation and the PLCopen.

Right of use for this specification is restricted to this specification and does not grant rights of use for referred documents.

Right of use for this specification will be granted without cost.

This document may be distributed through computer systems, printed or copied as long as the content remains unchanged and the document is not modified.

OPC Foundation and PLCopen do not guarantee usability for any purpose and shall not be made liable for any case using the content of this document.

The user of the document agrees to indemnify OPC Foundation and PLCopen and their officers, directors and agents harmless from all demands, claims, actions, losses, damages (including damages from personal injuries), costs and expenses (including attorneys' fees) which are in any way related to activities associated with its use of content from this specification.

The document shall not be used in conjunction with company advertising, shall not be sold or licensed to any party.

The intellectual property and copyright is solely owned by the OPC Foundation and PLCopen.

Copyright © 2021, OPC Foundation, Inc. and PLCopen.

PATENTS

The attention of adopters is directed to the possibility that compliance with or adoption of OPC or PLCopen specifications may require use of an invention covered by patent rights. OPC Foundation or PLCopen shall not be responsible for identifying patents for which a license may be required by any OPC or PLCopen specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. OPC or PLCopen specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents.

WARRANTY AND LIABILITY DISCLAIMERS

WHILE THIS PUBLICATION IS BELIEVED TO BE ACCURATE, IT IS PROVIDED "AS IS" AND MAY CONTAIN ERRORS OR MISPRINTS. THE OPC FOUDATION NOR PLCOPEN MAKES NO WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, WITH REGARD TO THIS PUBLICATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE. IN NO EVENT SHALL THE OPC FOUNDATION NOR PLCOPEN BE LIABLE FOR ERRORS CONTAINED HEREIN OR FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, RELIANCE OR COVER DAMAGES, INCLUDING LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY ANY USER OR ANY THIRD PARTY IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS MATERIAL, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

The entire risk as to the quality and performance of software developed using this specification is borne by you.

RESTRICTED RIGHTS LEGEND

This Specification is provided with Restricted Rights. Use, duplication or disclosure by the U.S. government is subject to restrictions as set forth in (a) this Agreement pursuant to DFARs 227.7202-3(a); (b) subparagraph (c)(1)(i) of the Rights in Technical Data and Computer Software clause at DFARs 252.227-7013; or (c) the Commercial Computer Software Restricted Rights clause at FAR 52.227-19 subdivision (c)(1) and (2), as applicable. Contractor / manufacturer are the OPC Foundation, 16101 N. 82nd Street, Suite 3B, Scottsdale, AZ, 85260-1830

COMPLIANCE

The combination of PLCopen and OPC Foundation shall at all times be the sole entities that may authorize developers, suppliers and sellers of hardware and software to use certification marks, trademarks or other special designations to indicate compliance with these materials as specified within this document. Products developed using this specification may claim compliance or conformance with this specification if and only if the software satisfactorily meets the certification requirements set by PLCopen or the OPC Foundation. Products that do not meet these requirements may claim only that the product was based on this specification and must not claim compliance or conformance with this specification.

Trademarks

Most computer and software brand names have trademarks or registered trademarks. The individual trademarks have not been listed here.

GENERAL PROVISIONS

Should any provision of this Agreement be held to be void, invalid, unenforceable or illegal by a court, the validity and enforceability of the other provisions shall not be affected thereby.

This Agreement shall be governed by and construed under the laws of Germany.

This Agreement embodies the entire understanding between the parties with respect to, and supersedes any prior understanding or agreement (oral or written) relating to, this specification.