# OPC-UA Agent for Legacy Programmable Logic Controllers +
## 2 Background
### Related Works  
Thanks to its advantages over its predecessor, OPC Classic, OPC-UA has been used in a variety of industrial applications [4; 22; 23; 24]. It has been used for the autoconfiguration of real-time Ethernet (RTE) systems [22]. A universal device discovery mechanism was introduced, and it was demonstrated that the parameters of an RTE system can be configured automatically. An OPC-UA-based information system was also proposed for condition monitoring [4]. Based on OPC-UA, an extensible architecture has been developed to provide device status information from heterogeneous field devices and sensors to enterprise-level services. A proof-of-concept implementation was presented with a case for the monitoring of devices in a mining environment. Device information collection using OPC-UA was also utilized for the purpose of the optimization of manufacturing processes [23]. OPC-UA was used to model device-level information, and a set of services were constructed to solve a constraint satisfaction problem for production plan computation. Recently, it has been shown that the comprehensive information-modeling capability of OPC-UA can be used to realize the plug and play of cyber-physical system (CPS) components [24]. The hardware implementation of OPC-UA has been proposed to enable OPC-UA support in \begin{table}
\begin{tabular}{l l} \hline \hline \multicolumn{1}{c}{**Function Block Name**} & \multicolumn{1}{c}{**Description**} \\ \hline UA\_Connect & Create a connection of OPC-UA session. \\ UA\_Disconnect & Close a connection of OPC-UA session. \\ UA\_NamespaceGetIndexList & Acquire a list of indexes for the given namespaces. \\ UA\_ServerGetUriByIndex & Acquire the server-URI with a given index. \\ UA\_ServerGetIndexByUriList & Acquire a list of indexes for the server-URIs. \\ UA\_TranslatePathList & Acquire a list of node IDs for the node paths. \\ UA\_NodeGetHandleList & Acquire node handles for the given node IDs. \\ UA\_NodeReleaseHandleList & Release a set of node handles. \\ UA\_NodeGetInformation & Acquire the node information. \\ UA\_SubscriptionCreate & Create a subscription. \\ UA\_SubscriptionDelete & Delete a subscription. \\ UA\_SubscriptionModify & Modify publish parameters of a subscription. \\ UA\_SubscriptionProcessed & Check if monitored items have been published. \\ UA\_MonitoredItemAddList & Add nodes for monitored items. \\ UA\_MonitoredItemRemoveList & Remove monitored items from a subscription. \\ UA\_MonitoredItemModifyList & Modify monitored items. \\ UA\_MonitoredItemOperateList & Update the values of monitored items. \\ UA\_ReadList & Read values of a list of nodes. \\ UA\_WriteList & Write values of a list of nodes. \\ UA\_MethodGetHandleList & Acquire handles for method calls. \\ UA\_MethodReleaseHandleList & Release method handles. \\ UA\_MethodCall & Call a method routine. \\ UA\_Browse & Navigate through OPC-UA address space. \\ UA\_EventItemAdd & Create events in a subscription. \\ UA\_EventItemOperateList & Acquire a list of event information. \\ UA\_EventItemRemoveList & Remove events from a subscription. \\ UA\_HistoryUpdate & Insert or update data in the historical database. \\ UA\_ConnectGetStatus & Acquire the connection status. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: OPC-UA client function blocks for IEC 61131-3.  
embedded field devices such as sensors and actuators [25, 26]. The extensions of OPC-UA to support representational state transfer (REST), a popular architecture style for distributed applications, have also been studied [27]. In recent years, with increasing interest in time-sensitive networking (TSN), methods of utilizing OPC-UA for real-time communication have been actively studied [28]. A practical implementation of the OPC-UA TSN communication architecture was presented for a manufacturing system [29] and a static timing analysis of OPC-UA pub-sub has been carried out [14].