Distributed Systems can be seen as a collection of computations evolving a distributed state in response to stimuli. These stimuli can be triggered by certain states or by the cyber / physical world, such as sensors, operators, etc. The Vortex OpenSplice Data Distribution Service for Real-Time Systems (DDS) standard implementation provides first-class support for representing distributed states as well as asynchronous event distribution. These include:
Vortex OpenSplice DCPS - a set of APIs that present a coherent set of standardized "profiles" that target real-time information-availability for domains ranging from small-scale embedded control systems right up to large-scale enterprise information management systems.
Vortex OpenSplice MATLAB and Simulink - enables users to transparently share data between MATLAB / Simulink and DDS applications no matter where they have been deployed in the network.
Vortex OpenSplice RMI - simplifying synchronous interactions by means of a Remote Method Invocation.
Vortex OpenSplice Streams - providing unprecedented throughput of millions of samples / second for typical periodic stream data.
Google Protocol Buffers (GPB) - providing support for the widely adopted GPB technology used to capture evolutionary data-models in a language- and platform-neutral way.
Vortex OpenSplice Labview - a DDS binding for National Instruments LabVIEW, allowing LabView 2017 applications to connect to a DDS domain and exchange data with other DDS applications.
Vortex OpenSplice DDS DCPS
Vortex OpenSplice DCPS is an Object Management Group (OMG) Data Distribution Service (DDS) rev1.2 compliant Data Centric Publish Subscribe (DCPS) implementation with API's for C, C++, C# and Java.
The DDS DCPS layer is a set of APIs that present a coherent set of standardized "profiles" that target real-time information-availability for domains ranging from small-scale embedded control systems right up to large-scale enterprise information management systems.
Each DDS-DCPS profile adds distinct capabilities that define the service-levels offered by DDS in order to realize the right data at the right time at the right place paradigm:
- Minimum Profile: this profile defines a publish/subscribe abstraction for highly efficient information-dissemination between multiple publishers and subscribers sharing common interest in so-called Topics. A Topic represents the subject of information sharing and is defined by a unique name, a type and a set of QoS characterizing its non-functional properties. Topic types can be expressed in the OMG's IDL-language (allowing for automatic generation of typed 'Readers' and 'Writers' of those 'topics' for any mix of languages desired). This profile also includes the QoS framework that allows the middleware to 'match' requested and offered Quality of Service parameters (the minimum profile offering basic QoS attributes such as 'reliability', 'ordering' or 'urgency').
- Ownership Profile: this “replication” profile offers support for replicated publishers of the same information by allowing a 'strength' to be expressed by each publisher so that only the 'highest-strength' information will be made available to interested parties.
- Content Subscription Profile: this 'content awareness' profile offers powerful features to express fine-grained interest in specific information content (content-filters). This profile also allows applications to specify projection-views and aggregation of data as well as dynamic queries for subscribed 'topics' by utilizing a subset of the well-known SQL language whilst preserving the real-time requirements for the information-access.
- Persistence Profile: this 'durability' profile offers transparent and fault-tolerant availability of ‘non-volatile’ data that may either represent persistent ‘settings’ (to be stored on mass-media throughout the distributed system) or ‘state’ preserved in a fault-tolerant manner outside the scope of transient publishers (allowing late-joining of applications and dynamic re-allocation).
Vortex OpenSplice MATLAB and Simulink
MathWorks is the leading developer of mathematical computing software. MATLAB is a programming environment for algorithm development, data analysis, visualization, and numeric computation. Simulink is a graphical environment for simulation and Model-Based Design for multidomain dynamic and embedded systems.
The Vortex OpenSplice MATLAB API is a Data Distribution Service (DDS) language binding for the MATLAB scripting language. It allows MATLAB scripts to connect to and exchange data with Vortex OpenSplice domains.
Vortex OpenSplice also provides support for connecting MathWorks Simulink models to DDS domains. The Vortex DDS Block Set enables Simulink users to drop blocks representing key DDS concepts (readers, writers, participants and so on) into their Simulink models, and through these blocks, read and write data to a Vortex OpenSplice domain.
MATLAB classes as well as Simulink BUS definitions are mapped to their corresponding Topic definitions in DDS. To ensure type agreement between DDS and MATLAB / Simulink applications, Simulink BUS definitions can be automatically generated from the corresponding Topic types defined in the IDL format that is standard for DDS applications. MATLAB classes can be deﬁned in the MATLAB workspace with the class name, ﬁelds and ﬁeld types corresponding to the DDS IDL Topic deﬁnition.
The integration allows users to create DDS entities in their MATLAB / Simulink model and associate them with desired QoS in separate XML files to provide maximum flexibility and control how and when data is exchanged. These capabilities allow users to transparently share any data between different MATLAB / Simulink applications and / or pure DDS applications no matter where they have been deployed in the network.
Vortex OpenSplice RMI
Vortex OpenSplice RMI (Remote Method Invocation) extends the Publish / Subscribe (Pub / Sub) communication paradigm provided by the Data Distribution Service (DDS) with a high performance framework for defining distributed services and invoking requests over them.
The Vortex OpenSplice RMI framework takes advantage of key DDS features to seamlessly enable, along with traditional two-way invocations, asynchronous invocations, persistent one-way calls, and one-to-many invocations. In addition, the Quality of Service (QoS) provided by DDS can be used to control the QoS associated with individual services as well as with specific invocations.
- An autonomous robot could be controlled via an RMI interface
To view our RMI Getting Started Guide, click here.
Vortex OpenSplice Streams
Vortex OpenSplice Streams is an optional API module which provides an API that supports the common stream data-distribution pattern where continuous flows or streams of data have to be transported with minimal overhead and therefore maximal achievable throughput. Vortex OpenSplice Streams implements this streams pattern by offering a streams-API that supports transparent packing and queuing of data samples using auto-generated containers, thus minimizing the overhead normally associated with the management and distribution of individual DDS samples.
- Vortex OpenSplice Streams support high-throughput 'streams' of continuous data by transparent packing and queuing of data samples exploiting the full power of the underlying DDS/DCPS API.
- Vortex OpenSplice Streams offers a streams-API that provides unprecedented throughput of millions of samples/sec for typical 'stream' data.
Vortex OpenSplice Streams is applicable to 'any' system where typically small topics are published at high frequency and such 'periodic updates' are typically samples of the analogue 'outside world' that need to be processed by a distributed system.
To view our Vortex OpenSplice Streams Reference Guide, please click here.