QUARC 2.2 QUARC 2.0 navigation bar

Table of Contents > QUARC > Release Notes

QUARC 2.1

These release notes describe the new features and changes introduced in QUARC 2.1. They are divided into the sections enumerated below.

New Software Compatibility

QUARC 2.1 has introduced compatibility with the following third-party software.

MATLAB R2010a
Compatibility with MATLAB, Simulink, and Real-Time Workshop R2010a has been added. However note that some of the Quanser Host blocks available in this build of QUARC 2.1 do not currently support MATLAB/Simulink R2010a. Quanser is currently working on a solution to not only have these blocks work with MATLAB/Simulink R2010a but also greatly improve their overall performance and capabilities. Some of these Host blocks include the Host Game Controller, Host Keyboard, Host Mouse, or Host Wiimote block.
Microsoft Windows 7
Compatibility with the 32-bit Microsoft Windows 7 operating system has been added.
QNX Neutrino 6.4.1
Compatibility with the QNX Neutrino 6.4.1 real-time operating system has been added. Support for 6.3.2 has been discontinued.
QNX Neutrino 6.5
Compatibility with the QNX Neutrino 6.5 real-time operating system has been added.

New Features

The new features introduced in QUARC 2.1 are mentioned below.

Adaptive Partition Scheduling

QUARC now provides support for adaptive partition scheduling on its QNX target. Partition scheduling allows the CPU time allotted by the system to a model to be guaranteed - a key feature in safety-critical applications. Refer to the Partition Scheduling section in the QUARC Targets User's Guide for more details.

Computation Time of Model

The Computation Time block now provides the option of measuring the computation time of the model itself, rather than just the time to execute a Function Call Subsystem. Only the computation time of the model's base rate task is measured.

Expression Parsing

Added qc_get_expression_parts helper function to split vector or matrix strings into their constituent parts. This can be used when you want to evaluate a user's entry without losing the formatting or variables entered by the user.

Hardware Interrupt Support

Interfaces have been added to support hardware interrupts, including HIL C API, MATLAB, .NET and ActiveX functions as well as two new Simulink blocks: the HIL Poll Interrupt block and the HIL Asynchronous Interrupt block.

MATLAB Function Browser

The multitude of MATLAB functions provided by QUARC are now available through the MATLAB Function Browser in MATLAB R2010a and above. Simply click on the button on the left edge of the MATLAB Command Window and browser the MATLAB functions under the QUARC Targets category. Double-clicking on a function inserts it into the MATLAB Command Window. The MATLAB Function Browser can also be accessed from the MATLAB Editor toolbar (look for the same icon).

MATLAB Stream API

New functions have been introduced in the MATLAB Stream API, including stream_get/set_character_format, stream_send_array and stream_receive_array. The MATLAB Stream API is now capable of sending and receiving any data type, including structure arrays and cell arrays.

Model Logging

Information can now be logged automatically for every run of the model, including the date and time at which the model was run, when block parameters were changed, and user-defined log messages. For an overview of the new model logging feature, refer to Model Logging in the section on streaming data to disk. User-defined messages are logged using the new Log Message block.

Performance Monitoring

In addition to the various blocks provided by QUARC to measure computation time, sampling period jitter and other performance measures, QUARC now supplies the ability to monitor the amount of data traversing a signal wire in the diagram in bytes per second, elements per second or samples per second. Refer to the Performance Meter block for details.

Quanser Stream API for Java

QUARC now provides support for using the powerful Quanser Stream API in Java. The Quanser Stream API has been augmented with Java support and can now also be used to create communication channels between Java-based applications and the QUARC real-time code generated for a Simulink model. Blocking and non-blocking I/O communication modes are supported as well as using the Java InputStream and OutputStream classes for communication. Refer to the QUARC External Interfaces section in the QUARC Targets User's Guide for more details.

Strings

A new suite of blocks have been added to support strings. These blocks allow strings to be manipulated in various ways, including formatting strings via the String Print block and selecting strings from a list using the String Select block.

Target Management Interface

A new Target... menu item has been added to the QUARC menu that opens a dialog for managing QUARC targets. See the models that have been downloaded to the target, as well as the models currently loaded and those configured to load at boot. Download new models or remove old ones from the target. Load models or configure models to load at boot. Determine the version of QUARC running on a remote target and more. See the QUARC Target dialog for details.

Improved Features

Some of the features improved in QUARC 2.1 are enumerated below. There a great many miscellaneous bug fixes and improvements that have not been listed. Only some of the highlights are listed below.

3ds Max X3D Visualization Exporter

Support for 3ds Max 2011 has been added, and the x3d file exporter for 3ds Max 2008-2011 now supports exporting scene files. The scene file will preserve parent-child hierarchies setup in 3ds Max and omni-directional light sources will be exported as light sources for the scene file. Cameras, helper objects, and light sources other than omni-directional will be exported as dummy actors to preserve hierarchical relationships. The exporter also now supports the Edit Normals modifier to allow the creation of continuous surfaces spanning multiple meshes and explicit normal control. See the 3ds Max X3D Plugin page for more details.

Blender X3D Visualization Exporter

The x3d file exporter for Blender now works on a more general set of meshes. It also now works with the built-in Python functionality and the full version of Python is no longer required to be installed on your system.

C Stream API Documentation

Comprehensive function reference help pages for the C Stream API have been added to the Quanser C Libraries standalone help module, available, for example, from the QUARC External Interfaces page in the QUARC documentation.

GPS NMEA

The GPS NMEA block has been improved by adding the following outputs: true heading, magnetic heading, and ground speed. These additional outputs provide more information from GPS NMEA devices.

MATLAB Stream API

The semantics of the MATLAB stream_send and stream_receive functions has changed. These functions no longer send and receive bytes, but will send or receive any data type, including cell arrays and structures. The arguments to the stream_receive function have changed accordingly.

Q4 Clocks Renamed

The hardware clocks on the Q4 data acquisition card did not reflect the actual functionality of these timebases. HARDWARE_CLOCK_0 is now referred to as the Watchdog Counter and HARDWARE_CLOCK_1 is now called the General Purpose Counter.

QUARC Console

Issues with the QUARC Console that sometimes arose if the Console was opened or closed while a model was printing a large volume of data to stdout/stderr were resolved.

Stream API

The Stream Client, Stream Server, Stream Connect, Stream Listen, Stream Call and Stream Answer blocks now allow the URI to be specified as a dialog parameter, as a MATLAB expression or as an external input port. Hence, a MATLAB workspace variable may now be used for the URI.

Format specifiers are now supported if the URI is specified as a dialog parameter. For example, "%h" may be used to extract the hostname from the model URI so that communications refer to the same host that is running the model.

When the URI is specified as a dialog parameter the URI is now configuration-dependent. A separate URI may be entered for each model configuration as well as for normal simulation. Thus, it is possible to employ a different URI for each target, without making a new diagram.

String Changes

Support for strings in QUARC has changed. Strings are now represented using the uint8 data type instead of the custom achar_t type that was used previously. This change makes it easier to use strings. For example, strings may now be passed into referenced models. All the QUARC blocks which supported strings, such as String Constant, String Display, Stream Print, Stream Scan, Stream Formatted Read, Stream Formatted Write, Print and Scan have been modified accordingly.

The String blocks have been moved into a "Strings" subsystem in the QUARC Targets library since more String blocks have been added, such as the String Print block. See the New Blocks section for details.

To Host File Block

The To Host File block now supports many more file formats. The full list of formats is now: MAT-file v.4, MAT-file v.5, M-file, CSV-file, Text file and Raw binary file. The CSV-file format is useful for importing into spreadsheets. The text file format may be used to write custom text files, and the raw binary format is useful for interfacing with the user's own applications since it is easy to read.

The To Host File block now allows UNC filenames to be used so that the data may be written to any accessible location on the local network. The filename may also include a path. The To Host File block will now create any directories that are missing in the path when saving the file.

In order to facilitate more sophisticated data logging, the To Host File block has been enhanced to support format specifiers in the filename and variable name. Format specifiers allow things like the date and time to be automatically inserted in the filename or variable name so that a unique data file can be generated on each run of the model.

The block parameters dialog for the To Host File block has also been enhanced to support browsing for files and appending format specifiers.

New Cards Supported

The full list of all the data acquisition cards supported by QUARC 2.1 is given by the following link. QUARC 2.1 may now also interface to the cards listed below.

Quanser Q2-USB

The Quanser Q2-USB is our new low-cost H.I.L data acquisition device capable of running closed-loop control from PC to DAQ over 1kHz via a USB port. This is an industry first! The Q2-USB has two 12-bit analog inputs, two 12-bit analog outputs, two encoders, 8 configurable digital I/O with two of the digital I/O also configurable as PWM channels, and watchdog support. All power is supplied by the USB port for a single-cable, self-contained, portable data acquisition device. Please refer to the Quanser Q2-USB help page for details.

Quanser Q8-USB

The Quanser Q8-USB is our new eight-channel, high resolution, H.I.L data acquisition device capable of running closed-loop control from PC to DAQ over 1kHz via a USB port. This is an industry first! The Q8-USB has eight 16-bit analog inputs, eight 16-bit analog outputs, eight encoders, eight digital inputs and eight digital outputs that are optionally configurable as PWM channels, and watchdog support. Please refer to the Quanser Q8-USB help page for details.

Quanser QPID

The Quanser QPID card is an innovative H.I.L. control board based on the NI PCI-7831R RIO PCI card, with an extensive range of input and output support, including eight 16-bit analog inputs and outputs, eight encoders with hardware velocities, eight PWM outputs, 56 digital I/O, specialized I/O, counters, watchdog and an SPI master. Please refer to the Quanser QPID help page for details.

Quanser QPIDe

The Quanser QPIDe card is an innovative H.I.L. control board based on the NI PCI-7841R RIO PCIe card, with an extensive range of input and output support, including eight 16-bit analog inputs and outputs, eight encoders with hardware velocities, eight PWM outputs, 56 digital I/O, specialized I/O, counters, watchdog and an SPI master. Please refer to the Quanser QPIDe help page for details.

New Devices Supported

QUARC 2.1 may now interface to the devices listed below.

Denso robot blocks

The 6-DOF Denso VP6242F robot is now supported as an open-architecture robot. The Denso Read block reads the Denso joint positions and robto status while the Denso Write block sends joint position or velocity commands and controller gains to the robot.

The Denso blocks may be found under the QUARC Targets/Devices/Third-Party/Denso/Robots/VP6242F library.

PhoeniX Technologies Inc. blocks

The PTI Visualeyez vision tracking system is now supported. The PTI Visualeyez block can be used to read marker positions that are setup as targets in the PTI VZSoft tracking software, as well as positions and orientations of rigid body objects that are setup in the PTI VZAnalyzer tracking software.

The PTI Visualeyez block may be found under the QUARC Targets/Devices/Third-Party/PhoeniX Technologies Inc./Interface library.

Vicon blocks

The Vicon DataStream API is now supported. The Vicon block uses the Vicon DataStream API and Tracker software to read translation and rotation measurements from the Vicon tracking system. Segments and named markers setup for tracking in the Vicon Tracker software can be referenced by name in the Vicon block. Unlabeled markers are referenced by index value.

The Vicon block may be found under the QUARC Targets/Devices/Third-Party/Vicon library.

New Demonstrations

The QUARC demonstrations added in QUARC 2.1 are listed below.

C Examples for the Quanser Stream API
A directory containing C examples using the Quanser Stream API for C has been added to the QUARC installation tree. The added examples demonstrate the blocking and non-blocking I/O communication modes of the Quanser Stream API. Select Quanser/QUARC/Quanser C Communications Examples under the Start menu to access the examples.
Java Examples for the Quanser Stream API
A directory containing Java examples using the Quanser Stream API for Java has been added to the QUARC installation tree. The added examples demonstrate the blocking and non-blocking I/O communication modes of the Quanser Stream API. Additional examples also demonstrate the blocking I/O communication mode of the Quanser Stream API using the Java InputStream and OutputStream objects. Select Quanser/QUARC/Quanser Java Communications Examples under the Start menu to access the examples.
C Examples for the BSD Socket API
A directory containing C examples using BSD sockets in C has been added to the QUARC installation tree. The added examples demonstrate use of blocking TCP/IP and UDP sockets to communicate with QUARC models. Select Quanser/QUARC/Socket C Communications Examples under the Start menu to access the examples.
QUARC LabVIEW Interfacing Demo
The QUARC LabVIEW Interfacing Demo is an example using LabVIEW GUI to adjust parameters for a Simulink model via TCP/IP protocol. (In later versions of QUARC, this demo is no longer provided as Quanser now provides the Rapid Control Prototyping Toolkit for LabVIEW)
QUARC LabVIEW Interfacing SRV02-ET Demo
The QUARC LabVIEW Interfacing SRV02-ET Demo is an example using LabVIEW GUI to adjust parameters for a QUARC model via TCP/IP protocol. The QUARC model emulates the dynamics of a Quanser SRV02-ET servo. ( In later versions of QUARC, this demo is no longer provided as Quanser now provides the Rapid Control Prototyping Toolkit for LabVIEW )
QUARC Serial Interfacing Demo
The QUARC Serial Interfacing Demo A directory containing an example using the Quanser Stream blocks for communication via serial port has been added to the QUARC installation tree.

New Blocks

New blocks have been added to the QUARC Targets library in QUARC 2.1. The new blocks are listed below.

Continuous Blocks

Second-Order Low-Pass Filter

The Second-Order Low-Pass Filter block models, in the continuous-time domain, a second-order low-pass filter characterized by a cut-off frequency and a damping ratio.

Discrete Blocks

Bias Removal

The Bias Removal block calculates the initial bias (using a simple moving average algorithm) of the input signal and removes the estimated bias from the input signal.

Discrete Second-Order Low-Pass Filter

The Discrete Second-Order Low-Pass Filter block models, in the discrete-time domain, a second-order low-pass filter characterized by a cut-off frequency and a damping ratio.

Enabled Moving Average

The Enabled Moving Average block implements a moving average (a.k.a., running average, or rolling average) computation. The moving average is only calculated while the input received at the Enable port is greater than zero.

Diagnostic Blocks

Log Message

The Log Message block allows user-defined messages to be added to the log file for the model, if any. It takes a format string akin to the C printf function and formats the data at its inputs accordingly.

Performance Meter

The Performance Meter block measures the rate at which data traverses a signal wire in the diagram.

Hardware Blocks

HIL Poll Interrupt

The HIL Poll Interrupt block queries the status of interrupt sources on a data acquisition card.

HIL Asynchronous Interrupt

The HIL Asynchronous Interrupt block invokes a Function-Call Subsystem whenever an interrupt occurs, independent of the sample time of the model.

NEES Blocks

NEES Initialize

The NEES Initialize block establishes a connection between the Simulink model in QUARC and the Quanser NEES Daemon to send and receive signals to and from the RBNB.

NEES Get Signals

The NEES Get Signals block receives signals from the Quanser NEES Daemon, and makes them accessible in the Simulink model.

NEES Set Signals

The NEES Set Signals block sends the signals at its input to the Quanser NEES Daemon.

String Blocks

String Accumulate

The String Accumulate block accumulates a series of strings into one concatenated string.

String Concatenate

The String Concatenate block concatenates a number of strings together.

String Error

The String Error block outputs a string corresponding to a standard QUARC error code.

String Print

The String Print block allows data to be formatted as a text string, much like the sprintf function in C.

String Select

The String Select block selects a string from a list based on its input.

New Functions

New MATLAB functions have been added to the QUARC MATLAB functions in QUARC 2.1. The new functions are listed below.

Miscellaneous Functions

qc_get_expression_parts

The qc_get_expression_parts function takes a string representing vector or matrix in typical MATLAB notation and breaks it into a cell array of strings representing the individual elements of the vector or matrix.

 

navigation bar