The standardization of device driver’s implementation in distributed control systems is essential to reduce the development and integration effort. Nowadays, there are multiple distributed control systems and high-level applications used in the scientific community. Due to the lack of standardization in the interfaces with the device drivers, it is required to integrate each hardware device separately in each control system. However, a clear model of how different software applications should manage the device drivers could reduce development efforts and ease the maintainability of such complex systems. The Nominal Device Support initiative is an open source project, promoted initially by Cosylab, for the standardization of data acquisition and timing devices. The first implementations of NDS (version 1.x and 2.x) were oriented to simplify the implementation of EPICS device supports. NDS v3 is more ambitious and is built as an abstraction layer for any control system or software application.
This work is focused on the third version of NDS which distinguishes two main software elements needed to develop a NDS Device Driver. First, NDS-Core provides a hierarchical tree organization of the so-called nodes. Along with this work, most potential applications have been identified, defining a set of nodes for such applications with the aim of providing a common skeleton that eases the drivers development and unifies styles. Thus, every node is matched to specific hardware functionality by means of its predefined NDS Process Variables (NDS-PVs) that support the configuration, operation, and monitoring of the hardware. NDS device drivers are libraries built using NDS-Core, and the NDS-PVs defined in the nodes act as interface between the device drivers and the control system.
On the next layer, the NDS-Control System Interface loads the driver’s libraries and manages the interactions with the control system. Current development provides an EPICS interface and a simulated Control System interface for testing purposes, although it could be extended to support interfaces with other frameworks (MARTe, TANGO, ITER Real-Time Framework, etc). The NDS-EPICS interface uses the EPICS asynDriver module.
NDS offers several advantages. Firstly, the use of a unique NDS-EPICS interface for all the device drivers simplifies the development and maintenance and reduces to the minimum user effort in the EPICS/asynDriver development. Secondly, NDS-core provides a node structure traced to common hardware functionality, saving development time and increasing the homogeneity of drivers. Finally, the possibility of reusing the same NDS device driver with different software applications or control systems shall be highlighted, as it effectively reduces development and integration costs.
Currently, NDS approach is used in ITER for diagnostic applications, and different NDS Device Drivers have been implemented for data acquisition and timing cards available in the ITER fast controller hardware catalog for PXIe (PXIe6683 PTP timing card, X-Series multifunctional DAQ Devices and FlexRIO/NI5761) and MTCA (PTM1588) form factors.