Product Index

ADvantage Framework General

What is the ADvantage Framework?

The ADvantage Framework is a software platform used to build, operate, and optimize real-time systems such as hardware-in-the-loop simulation systems, real-time integration and verification facilities, controller prototyping systems, deployed controllers, and more. The ADvantage Framework consists of tools that are run on your desktop (i.e. Windows or Linux machine) and software modules that get compiled with your simulation models and/or real-time applications to build the deployed real-time project.

What computer hardware does the ADvantage Framework support?

The ADvantage Framework lets you build your real-time system (ex: HIL simulator, controller, etc.) using commercial-off-the-shelf computer equipment including standard PCs, VME and cPCI/PXI computer systems, PC/104 stacks and more. The ADvantage approach makes use of a POSIX-compliant RTOS. If you can run a POSIX RTOS on your hardware then you can likely use ADvantage with your hardware.

Do I buy the real-time system hardware from Applied Dynamics or can I buy my own hardware?

You can go either way.

We are a full service systems integration team. This means that we can work with your team’s technical experts to understand your detailed requirements and design a solution to meet your exact needs. When we integrate a system we procure all the components, unit test each component, integrate the system, perform factory acceptance testing and system characterization, prepare complete documentation from model input/output to connector-pin, deliver the system and get you up and running fast.

We also support the do-it-yourself approach. With a DIY approach you purchase the pieces and parts and assemble the system yourself. We provide the ADvantage Framework software and help you get the software integrated with your hardware.

What hardware is supported by ADvantage?

ADvantage supports a wide range of real-time system hardware to meet the varying needs of our diverse user base. But to summarize, ADvantage supports:

Standard PC’s – The real-time system is built using standard desktop or server-class PCs, usually with multicore processors, and I/O interfaces using COTS PCI, PCIe, PMC, and/or cPCI/PXI computer boards. See more details here.

cPCI/PXI computer systems – The real-time system is built entirely using COTS CompactPCI/PXI computer boards and controllers. PXI systems, depending on the I/O count, offer good portability with rugged, pin-and-socket computer boards. Often a multicore PC will be combined with PXI I/O expansion, rather than using a PXI controller as the main processor, to offer high processing power at an affordable price. See more details here.

VME computer systems – The real-time system is built using 6U VME single board computers and VME I/O interface boards. VME continues to be very popular for systems with a long service life. ADvantage supports VME systems with Intel SBCs (learn more) or with PowerPC SBCs (learn more).

Small form factor computers – A small form factor computer architecture such as PC/104 is used for prototype controllers and deployed controllers. See more details here.

If you have a hardware architecture in mind that differs from the options described above and are wondering if you can still use ADvantage, please contact us. Most of the time we can make it work.

What I/O expansion/interface boards are supported in ADvantage?

ADvantage supports a very long list of computer boards in form factors including PCI, PCIe, cPCI/PXI, IP, PMC, VME, PC/104, and more. The website’s Product Index gives a reasonably comprehensive list but if you don’t see a board you would like to use, please contact us for the latest information.

What are some example applications that use ADvantage?

ADvantage is used in a wide range of aerospace, defense, marine, and energy applications such as:

Does ADvantage support Simulink models?

Absolutely! Simulink is the most popular simulation modeling tool within the ADvantage user base. The ADvantage development environment (ADvDE) makes it easy to add Simulink models into your real-time project. The ADvantage run-time environment (ADvVI) presents your Simulink models during run-time for browsing, adjusting parameters, and datalogging. SIMplotter lets you plot and analyze Simulink data on-the-fly from the ADvantage target and even directly from Simulink.

What modeling tools does ADvantage support?

ADvantage supports simulation models and control applications developed with the following tools and languages:

Ada code

AMESim

C code

C++ code

Fortran code

Simulink

SystemBuild

What RTOS(s) are supported on the real-time system?

ADvantage was designed to be RTOS neutral. Currently supported RTOSs include: QNX (preferred), Linux, RTexec. QNX is our preferred RTOS and the RTOS shipped with the vast majority of systems we integrate and deliver. We prefer QNX because of it’s highly-deterministic performance, leading support for multicore Intel processors, and low cost of tools. The QNX team of developers are great to work with and we’ve never hit a technology obstacle they couldn’t help us circumvent.

In addition to real-time operating systems, the ADvantage Framework supports compiling your project for a General Purpose (GP) operating system. For example, you can compile your project to run right on your Windows desktop to perform tasks such as simulation model verification and script development without tying up your real-time systems.

I want to run ADvantage with an RTOS that isn’t on your list. Is that possible?

We are entirely open to adding support for additional RTOS’s. If this is of interest please contact us to discuss your needs.

What version(s) of Simulink does ADvantage support?

We tend to add support to new Simulink versions just about as fast as the MathWorks releases them. In addition, we include back-support for older versions going back quite a few years. The list of currently supported Simulink versions is presented here.

What open source software technology is used in the ADvantage Framework?

ADvantage makes heavy use of best in class open source software technology to improve the quality of our code, increase product maintainability, reduce obsolescence, and improve extensibility. ADvantage makes use of the following open source software technology:

GNU Compiler Collection

Gnumake

Linux

WxWidgets

Python

ADvantageDE

What is ADvantageDE?

ADvantageDE – ADvantage Development Environment is the application for defining, configuring and building your real-time project.

What code generator is used for Simulink models?

ADvantage relies on the Simulink code generator products in order to bring Simulink models into your ADvantage real-time project. ADvantageDE supports Simulink’s RTW and Embedded Coder code generation products. You must have one of these code generators in order to add a Simulink model to an ADvantage project.

Can models or application assemblies be assigned to a processor core?

Yes. ADvantageDE allows model/code assemblies to be assigned to a processor core.

How many model/code assemblies may included in a project?

An ADvantageDE project allows you to add as many model/code assemblies to your project as you like. ADvantage supports multicore, multi-processor, and multi-node configurations and allows assemblies to be targeted to processor units as needed.

How do you connect Simulink models to I/O?

There are two ways to establish connections between Simulink models and I/O interface ports such as analog and digital inputs and outputs, serial channels, and databus signals. These include:

The collection of I/O interfaces in your real-time system is configured within ADvantageDE and then you may automatically generate a set of Simulink I/O blocks for your configuration. Connections between your Simulink model and the I/O are then made inside Simulink.

The Simulink model is prepared independent from the I/O with model inputs and outputs defined, and signals and parameters of interest defined to externally visible. Your model is then added to your project and ADvantageDE generates a data dictionary specifying the model interface. Connections from models inputs and outputs (ports) are then defined inside ADvantageDE.

Many users prefer to define I/O connections inside Simulink and it’s for this reason that the first approach is provided. In large integration labs with many systems developed, tested, and verified in concert, or in formal verification and certification process oriented teams, there is often a desire to preserve the integrity of the Simulink model. Under this scenarios, the models may developed by one set of experts and then used by another or the models may be developed and then taken through a formal model validation process. Either way, it is important that no changes be made to the models once delivered to the real-time systems team and making I/O connections inside the Simulink model is undesirable. The second approach to establishing Simulink I/O connections is included to support those teams who wish to maintain the model integrity.

Does ADvantageDE support Python scripting?

Yes, the ADvantage development environment (ADvDE) is built on a Python scripting foundation. Python scripts may be written to automate the development environment tasks such as adding models, establishing model and/or I/O connections, compiling the project, etc. A Python script may be executed upon launching the ADvDE application or executed interactively within the application.

Can I write my own device drivers in ADvantage?

Yes. ADvantage allows users to write their own low-level device drivers and their own logical device drivers. This is particularly useful for users who are developing their own I/O interface boards. Low-level device drivers and logical device drivers are written in C code.

What is the difference between a low-level device driver and a logical device driver?

In order to better support a model based systems engineering philosophy, ADvantage divides the functionality of each I/O interface into the following two levels:

low-level device driver

logical device driver

low-level device driver

The low-level device driver provides a procedural interface used to access a given device in a real-time target (ex: access across the PCI bus). The low level device driver for a device includes five device driver routines (ex: open, read, write, ioctl, close) as well as any other auxiliary routines required for the device, such as interrupt handlers and other utility routines.

logical device driver

The logical device driver provides a layer of abstraction from the basic functions of a device (ex: write a 16bit word to a digital to analog channel), performed using the five device driver routines, to the concept of model ports (i.e. inputs and outputs). The logical device is often also used to add project specific implementation to a device (ex: a digital output device used to control power switching). Logical devices may also be used to create a compound device using two or more I/O boards that work together to for a single function.

What is a framework?

A framework (also known as “framework project”) is the parent entity of one or more projects. Where a project is associated with a single real-time target (i.e. node) a framework represents a multi-target distributed real-time architecture. Multiple projects in a distributed architecture are connected via a network such as SCRAMNet, Etherent, and reflective memory. Each project is independent and fully functional giving great flexibility to the test and verification environment.

What is a project?

A project is the construct within ADvantageDE containing all the items that make up a single implementation of a real-time system. The implementation defined by a project includes:

one or more assemblies – a simulation model, a code based item, or a graphical user interface

What is an assembly?

An assembly is an entity in an ADvantageDE project containing a simulation model, a code based item such as a controller application, or a graphical interface. At run-time, one or more assemblies are executed on the ADvantage based real-time system. In addition to the model, code, or GUI, an assembly may also contain:

one or more ports – defining the interface (to the model, code, or GUI) as specified in a data dictionary

one or more logical devices – defining the implementation of an I/O interface board within the target

one or more connections – model-to-I/O connections

A project may include multiple assemblies running on one or more processor cores.

What is a target?

A target is an entity in the ADvantageDE development environment that represents a project execution platform. The two common target (project execution platform) types are:

a real-time system – For example, a real-time PC with a collection of I/O interface boards

Each project (i.e. ADvantageDE project entity) is bound to one target, and each project must include one or more assemblies.

What is a Logical Device Driver?

A logical Device Driver (LDV) is ADI’s application layer for a given I/O device in your target. It provides the user interface to the hardware defining the number of interface ports for each device, any scaling, calibration or configuration information. One I/O board can be used in a number of different ways depending on the project, the logical device driver can be used to differentiate those configurations at the user interface.

What is a Low Level Driver?

The low level Driver (LLD), generally provided in library form, is the main interface to the actual hardware device, sets registers, passes data in the appropriate format.

What modelling paradigms are supported?

Currently supported modelling paradigms include Simulink, SystemBuild, and AMESim. In addition coded assemblies in C, C++ and F77 are supported. Ada coded assemblies are supported on the GP target.

What Graphical Interfaces are supported?

ADEPT is the native graphical interface in ADvantage providing a wide range of configurable widgets – buttons, dials, sliders, switches etc. These allow the creation of easy to use interactive graphical interfaces to the project and provide a way of easily displaying the state of the real-time system. ADvantage also supports a number of commercial-off-the-shelf graphical interfaces such as Altia and LabVIEW. An extensive API provides a gateway to a wider range of GIU’s including VAPS and X-Plane.

What compilers are used?

ADvantage includes a compiler-independent structure than enables different compilers to be supported through the use of configuration files. The GNU compiler collection is the default compiler set used for real-time and GP targets. In addition, ADvantage utilizes gnumake for makefile generation.

What are ports?

A port is an interface to the outside world for a particular assembly or logical device. In simulation models they allow the transfer of data between models and/or hardware. Matching port names allows for ease of connection between assemblies and hardware.

ADvantageVI

Does ADvantageVI support Python scripting?

Yes. ADvantageVI is built on a Python scripting foundation. Nearly every function or command within ADvantageVI may be performed with a Python command. Python scripting allows you to implement powerful and sophisticated automation of the development, integration, and verification tasks as well as interaction with surrounding file systems, and supporting process tools.

What is ADvantageVI?

ADvantageVI – ADvantage Visual Interact is an application used to load and execute a simulation project on a run-time target. The application also allows the user to interact with the simulation, set test points and monitor behaviour, define test profiles and monitor behaviour.

Why use a host/target architecture?

The ADvantageVI application runs on a host PC communicating with the runtime target via TCP/IP sockets. This architecture is deliberate to maximise the processing capabilities of the runtime target, and maintain the modelling integrity of the simulation, maintain the flexibility and reusability of the simulation environment, no need to build test profiles into the model, these can be configured externally, planned or on-the-fly.

What is a Data Dictionary?

ADvantageVI uses the Data Dictionary to interact with the simulation, the Data Dictionary contains all globally defined variables within the simulation project and brings them into the Data Browser in ADvantageVI. Users can manipulate and capture any variables within the Data Dictionary.

What is DAS?

DAS is the Data Acquisition System part of the simulation. Simulation variables defined in the DAS/Data Capture lists are captured each frame of simulation execution, buffered on the runtime target and then transferred to the host via TCP/IP sockets. DAS operates non-intrusively on the runtime target ensuring the integrity of the model execution. The DAS is user configurable, four streams are available, each individually configurable in terms of content, capture frequency.

What does ‘non-intrusive’ mean?

The simulation execution has priority over data capture or user interaction. The integrity of the simulation is maintained and the real-time characteristics are maintained through prioritisation of the main tasks. In a single frame model execution and hardware interactions are executed, if there is free time, user interaction and data capture activities are executed, timeouts are indicated if frame oevrruns occur.

Define ‘real-time’ in terms of the targets.

ADI supports three target platforms, the rtX based PCI and RTS based VME platforms are real-time platforms, simulation execution is tightly constrained to the user defined frame rate/frequency. All the defined actions – model execution, hardware processing, data capture, user interaction – occur within each single frame with synchronisation at the start of each frame. The third General Purpose (GP) platform is your desktop, the simulation cannot be so tightly constrained in terms of frame time due to OS overheads, however all the activities defined for real-time still occur in each frame maintaining the simulation time integrity of the model and making the GP target an ideal platform for model and test profile development activities.

What is a schedule?

Interaction with your project running on a target (ex: real-time system) is managed via TCP/IP interface from an ADvantageVI session running on the host PC. There are inherent overheads and non-deterministic latency when using TCP/IP so there is no guarantee that a given test stimulus will be executed in a truly repeatable way. ADvantage includes the concept of “schedules” that provide deterministic, frame-accurate execution of test stimulus. A schedule is defined from the host PC (ADvantageVI) and is downloaded to the target where it is deterministically and repeatably executed in lock-step with the real-time frame. Schedules are built up from primitives such as sine waves, constants, limits, expressions, random numbers, and more. A schedule may be triggered based on behavior within the project (ex: Boolean expression). ADvantageVI includes a schedule wizard to improve the ease of defining schedules. Schedules and triggers are executed on the target by a real-time scripting engine service.

SIMplotter

What is SIMplotter?

SIMplotter is a member of the ADvantage tools providing real-time, on-the-fly plotting, overplotting, interactive data analysis, and full featured scripting. SIMplotter uses a distributed, network-enables capability that allows you to connect to data streaming across your TCP/IP network for visualization, analysis, post-processing, and report generation.

Does SIMplotter support Python scripting?

Yes. SIMplotter is built on a Python foundation, includes a script editor, and command line for script execution.

Does SIMplotter support plotting individual bits from a packed word?

Yes. SIMplotter let’s you create a “bit definition” assigned to a data item that makes it easy to divide large words into smaller packed words, present individual bits, and assign enumerations for improved ease of analysis. SIMplotter bit manipulation features make it easy to work with serial and databus messages and signals.

Does SIMplotter support the filtering and masking of data?

Yes. SIMplotter includes a capability called “trace expression” that offers a wide range of scaling, filtering, masking and other operations. Trace expressions are particularly handy for identifying irregularities and highlighting out of range data points. SIMplotter also includes the ability to save the results of your analysis in a new dataset.

How do you create a SIMplotter data source?

The ADvantage Framework automatically includes a target-side data source (data server running on the real-time system) in your real-time project. SIMplotter also includes Simulink blocks that allow you to turn any Simulink model into a data source and stream data across TCP/IP to a desired destination. Furthermore, SIMplotter includes source code examples that let you create data sources just about anywhere.

Can I use SIMplotter stand-alone (without the rest of the ADvantage Framework)?

Absolutely! A significant portion of the SIMplotter user base is using the real-time plotting and analysis capabilities stand-alone. Some users add SIMplotter their their home-grown real-time system. Some users combine SIMplotter with their embedded controller to add high-performance data acquisition across TCP/IP. Other users combine SIMplotter with a wide range of different test systems allowing you to connect and monitor a test in progress.

Can I set up my plotting configuration then save it to be reused later?

Absolutely! SIMplotter includes sophisticated capability allowing you to interactively set up your plots then save off the configuration so that next time you want to look at the streaming data or run as specific test you simply load your saved configuration and go.

Can I select a region of time in a plot and easily display the minimum and maximum values of the data?

Yes. You can set the range of data using the two Data Cursors. The minimum and maximum values appears in the Chart Statistics. This functionality is very similar to that commonly available with a good oscilloscope.

When displaying bits from a packed word, can you choose to display only those bits that have changed state during a test run?

Yes, this can be accomplished using SIMplotters expressions field in the trace properties.

Does SIMplotter support running the tool from a shared location (as opposed to requiring installation on each desktop or workstation)?

Yes, SIMplotter supports a centralized licensing scheme where the installation is on a server and no installation is required on the local PC. SIMplotter also supports local installation.

Is SIMplotter used to plot streaming, live, real-time data or for plotting and analyzing data files offline?

Both. SIMplotter is a high-performance, real-time data plotting tool that let’s you connect to a TCP/IP data stream and plot time-based strip charts or X-Y plots, perform analysis on the real-time plots, perform calculations and generate new data sets as a results of your analysis, and save off the data and your plot configurations. SIMplotter also works as a offline data analysis tool. Data that is saved off during a test run is subsequently opened in SIMplotter and manipulated for analysis and preparing evidence of the analysis results.

Can I load a historical data file and then overplot live streaming data on top of the historical plot?

Yes you can! You can also use Python script or Action Lists to automate the whole process so that you can simply double-click an icon, SIMplotter launches, the historical data is plotted, then SIMplotter waits to start receiving new streaming data, and plots the data once it arrives.

Can SIMplotter data be used by other programs?

Yes. A set of utilities bundled with SIMplotter convert from its native XDR format into several common file formats: