The ITER Real-Time Framework (RTF) is a software framework for building real-time applications such as the Plasma Control System (PCS) and plasma diagnostics. It is entirely written in C++ and it runs real-time control loops on isolated CPU threads adapting the busy-wait synchronization techniques to optimize the response time and jitter. A given RTF application is instantiated from XML-based configuration files at the framework initialization time, and consists of Function Blocks (FB) configurable through parameters and inter-connected with signals and events. Encapsulation of FBs is also possible using so called Composite Function Blocks.
The deployment of RTF application can be local or distributed, and is configured separately by assigning blocks to threads, processes and nodes. FBs deployed on the same thread belong to the same control loop and exchange signal and event updates by simply sharing the same memory allocation. For FBs deployed on different threads, processes or nodes, however, the data must be exchanged synchronously using Gateway FBs (implicitly) inserted on both communication ends. For inter-thread communication, these gateways are implemented with dedicated real-time queues, while for the inter-process and inter-node communication an arbitrary implementation of an RTF Transport Layer can be used.
The RTF Transport Layer provides an abstraction layer between the RTF and the communication interface. Various implementations exist or are foreseen, e.g., for the Ethernet interface using different network protocols (SDN, DAN, pvAccess, etc.), for local data exchange using files, pipes or shared memory, for DAQ devices, for user interaction using standard input/output or graphical screens, etc.
This talk is specifically about the pvAccess transport layer implemented with the PVXS library. It explains how RTF internal structures are mapped to pvData structure at RTF initialization time, and how data is then being serialized at runtime.