QUARC 2.4 QUARC 2.2 navigation bar

Table of Contents > QUARC > Release Notes

QUARC 2.3

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

New Software Compatibility

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

MATLAB R2012a

Compatibility with MATLAB, Simulink, and Simulink Coder R2012a has been added.

MATLAB R2012b

Compatibility with MATLAB, Simulink, and Simulink Coder R2012b has been added. Along with this compatibility comes code efficiency improvements, as code generation now shares some of the features of Embedded Coder.

Microsoft Windows SDK 7.1

Compatibility with the Microsoft compiler (based on Visual C++ 2010) included in the Microsoft Windows SDK 7.1 has been added.

3dsMax 2013

Added support for exporting X3D files from 3dsMax 2013. The X3D files are now exported in Unicode UTF-8 encoding.

New Features

The new features introduced in QUARC 2.3 are mentioned below.

Check for Updates

QUARC now includes a Check for Updates hyperlink, as displayed, for example, on the Web Resources page. The Check for Updates hyperlink allows the latest version of the QUARC 2.3 software to be downloaded, if available. There is also a menu item to check for updates under the "QUARC/Web resources" menu.

Default Compiler

QUARC now allows the default compiler to be specified via the QUARC Preferences dialog. This facility is particularly useful for the Linux Verdex and Linux Overo targets. There are new QUARC MATLAB functions to support this feature as well.

Download to Target

Added a "Download to target" checkbox to the QUARC tab for most QUARC targets that allows downloading to the target at the end of a build to be disabled. This option is useful for building code without downloading it to the target so that a model can be built without a remote target connected.

Installation

The installation experience for QUARC 2.3 is improved over previous versions, with an improved look-and-feel and more automatic configuration to make setup easier. For example, QUARC nows configures a compiler automatically for the default Windows target if necessary. Hence, calling mex -setup is typically no longer necessary to set up QUARC. The new autorun application also distinguishes between 32-bit and 64-bit platforms and invokes the appropriate installer. Note that the End-User License Agreement has been updated. A link has also been added that allows QUARC to be updated directly from the Control Panel.

Home Link

Help pages now include a Home link in the navigation bar to go to the root level of the documentation. This feature opens the Supplementary Software help browser in MATLAB R2012b and above and is a convenient way to get from the help page for a particular block to the full QUARC help.

Mailslot Protocol

The Windows mailslot protocol is now supported. The mailslot protocol may be used for broadcasting small packets over a domain or synchronizing with scripts using the WAITFOR command.

Quick Installation Guide

A QUARC Quick Installation Guide has been created, as a complement to the existing fully-detailed QUARC Installation Manual. The QUARC Quick Installation Guide provides, in a condensed and graphical way, the main steps required to successfully install QUARC, test the installation, and get started with using QUARC by running the provided examples.

Quiet Operation

The quarc_run command has been enhanced by adding a -Q option that causes it to run quietly. Error dialogs are suppressed. This option is useful in batch scripts when errors can be safely ignored. For example, the command:

quarc_run -q -Q *.rt-win64

stops all QUARC models running on 64-bit Windows, without generating an error dialog if no models are currently running.

String Display Enhancements

The String Display block has been enhanced by adding different display modes: single line, multiple lines and console. Single line mode corresponds to the original functionality.

In multiple line mode, any newlines or carriage returns in the input string cause it to display multiple lines of text.

Console mode is like multiple line mode except that it also displays a history of previous inputs, much like a console. This feature can be useful when communicating with serial devices which output ASCII text.

Support for variable-sized signals has also been added.

User Feedback

There is now a convenient link at the bottom of every QUARC help page to submit feedback to Quanser. A default email application must be configured for the mailto protocol in Control Panel/Default Programs for this link to work.

Visual Studio 2010 Help Integration

The QUARC help now integrates into Visual Studio 2010 as it did for Visual Studio 2005 in previous versions of QUARC. However, the QUARC help is only visible in Visual Studio when offline help is used.

Improved Features

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

Asynchronous Thread block

The Asynchronous Thread block has been enhanced to allow the CPU affinity of the thread to be specified. Hence, it is now possible to restrict the asynchronous thread to a subset of the CPUs available on the target.

Controller block

The Controller block has had numerous bug fixes and is now consistent with the documentation.

Display Image block

The Display Image block now displays 2-D image data in 256 shades of grey while continuing to display 3-D image data in full colour. The axes have also been shifted by 0.5 to properly align the image within the axes, particularly for small images.

File Protocol

The file protocol may now be used with the Basic Stream blocks with the multi-threaded implementation to read and write files. Improvements were made to the Stream API and file protocol driver to recognize read-only and write-only streams and act accordingly for persistent streams. However, be sure to read the limitations section of the help page for the Stream Client block before using the file protocol with the Stream Client (or Stream Server) block.

Help

Numerous improvements and corrections have been made to the QUARC help pages, particularly for the data acquisition cards and blocks. The help structure on disk was revamped completely to be compatible with the newer versions of MATLAB which use a supplementary help system for third-party products.

HiQ Linux Verdex Target Support

The HiQ embedded DAQ for Quanser Unmanned Vehicle Systems (UVS) platforms now supports running QUARC 2.3 on the Gumstix Verdex. Therefore by using the QUARC Linux Verdex Target, this upgrade allows QUARC-supported Windows-based cross-compilers to be utilized when building QUARC models for the Quanser HiQ. Additional upgrades to the HiQ include bug fixes related to default IMU range settings and additional configuration options.

Host Game Controller block

Enhanced Host Game Controller block to handle more than one button press at the same time.

Inverse Modulus block

The Minimum and Maximum parameters have been replaced with a single Modulus parameter because the original parameters were deceptive, particularly for integer-valued input signals. The Modulus parameter is roughly equivalent to the range of the input signal, but be sure to read the new documentation on the Inverse Modulus help page for details.

The number of times the input signal has wrapped relative to the starting position may now be output from the block as an optional output. The sign of this output indicates the direction it wrapped.

Finally, the algorithm has been enhanced to handle arbitrary offsets in the input signal.

Licensing

QUARC licensing has been updated to resolve installation and licensing issues. New license files are required when upgrading from earlier versions of QUARC to QUARC 2.3.

LLVM-GCC ARM Cross Compiler

The LLVM-GCC compilers for the QUARC Linux Verdex and Linux Overo Targets have been updated to use a newer version of LLVM. These compiler enhancements resolve compilation errors that occurred for some models. The compiler options for the CodeSourcery Lite compiler have also been modified to fix compilation errors while building large models.

OptiTrack Tracking Tools 64-bit Support

The NaturalPoint OptiTrack blocks now support 64-bit Windows using the new Tracking Tools 2.5.1 software release from NaturalPoint.

MAT-File Logging Support

MAT-file logging is now enabled from the Interface tab of the Configuration Parameters dialog under the Code Generation section and no longer appears under the QUARC tab. The MAT-file logging feature has been enhanced to work under the new code generation framework (based on Embedded Coder) of MATLAB R2012b and above.

MX-Series Terminal Board Support

The NI drivers have been enhanced to support the new Quanser MX-Series Terminal board.

qc_set_target_type Enhancements

An option has been added to the qc_set_target_type QUARC MATLAB function to allow certain model configuration parameters to be preserved, such as the stop time.

qc_terminate_unconnected_ports

The qc_terminate_unconnected_ports function has been enhanced so that it may be invoked for individual blocks rather than the entire model.

Serial Protocol

The serial protocol has been enhanced to account for bugs in Prolific USB-to-serial drivers which was causing the serial protocol to operate incorrectly during large data transfers. Since the Prolific chipset is at the core of many USB-to-serial adapters, this change should allow these adapters to now be used reliably with QUARC. Also improved validation of the serial options to ensure the selected baud rate, etc. are compatible with the serial port selected.

SimMechanics

Compile times for models using SimMechanics blocks have been dramatically improved for non-Windows targets (except when building natively on a remote target).

Sleep Block

The Sleep block now supports timeouts shorter than one millisecond on Windows targets.

stream_set_swap_bytes

Enhanced the stream_set_swap_bytes MATLAB function to support logical values.

Support

Added a Save button to the Target Information dialog so that more information about the system can be provided when contacting Quanser technical support.

TCP/IP Protocol

Changed the name of the timeout option of the TCP/IP URI to connect_timeout instead to be clearer as to its purpose.

PGR Grab Image block software installation

The recommended version of the Point Grey Research's FlyCapture software is now version 2.4. Installation instructions have been updated in the PGR Grab Image block help.

New Cards Supported

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

Quanser QUBE-SERVO-USB

The Quanser QUBE-SERVO-USB is an integrated DC-servo motor experiment. It is designed to help teach fundamental control concepts and theories on an easy-to-use and intuitive platform.

National Instruments PCIe-6321
The National Instruments PCIe-6321 is an X-Series card for PCIe slot. Please see National Instruments' website for the (PCIe-6321) for the card data sheet.
National Instruments PCIe-6341
The National Instruments PCIe-6341 is an X-Series card for PCIe slot. Please see National Instruments' website for the (PCIe-6341) for the card data sheet.
National Instruments PCIe-6351
The National Instruments PCIe-6351 is an X-Series card for PCIe slot. Please see National Instruments' website for the (PCIe-6351) for the card data sheet.
National Instruments PCIe-6353
The National Instruments PCIe-6353 is an X-Series card for PCIe slot. Please see National Instruments' website for the (PCIe-6353) for the card data sheet.

New Demonstrations

The QUARC demonstrations added in QUARC 2.3 are listed below.

QUARC Multi-Rate Demo

The QUARC Multi-Rate Demo example illustrates the advantages of the multithreading capabilities of QUARC for multi-rate models. Interestingly, the example uses a PI Controller to tune the computation time of its subrate task so that it is consistent on all targets regardless of the target's computational power.

QUARC Mailslot Server Demo

The QUARC Mailslot Server example demonstrates how to use the Basic Communications blockset to implement a mailslot server capable of servicing multiple clients. The clients may be run on the local machine or on remote hosts. It also addresses important considerations in mailslot communications.

QUARC Mailslot WAITFOR Demo

The QUARC Mailslot WAITFOR example demonstrates how to use the Basic Communications blockset to synchronize with a batch file via the WAITFOR command. The client may be run on the local machine or on a remote host. It also addresses important considerations in mailslot communications particular to the WAITFOR command.

QUARC UDP Server Demo

The QUARC UDP Server example demonstrates how to use the Basic Communications blockset to implement a UDP server capable of servicing multiple clients. The clients may be run on the local machine or on remote hosts. It also addresses important considerations in UDP communications. The example employs the "peer=any" option of the UDP protocol. It does not make use of the UDP broadcast capability of QUARC.

QUARC UDP Supervisory Demo

The QUARC UDP Supervisory example demonstrates how to use the Basic Communications blockset to implement a UDP server capable of servicing multiple clients that employs the UDP broadcast capabilities of QUARC. Each client must be run on a separate remote host. This example also addresses important considerations in UDP communications.

QUARC UDP Multi-Agent Demo

The QUARC UDP Multi-Agent example demonstrates how to use the Basic Communications blockset to implement a set of multiple cooperating agents which communicate with each other using UDP broadcasting. The agents may be run on the local machine or on remote hosts. The example also addresses important considerations in UDP communications.

New Blocks

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

Signal Routing Blocks

Demultiplexer

The Demultiplexer block routes its input signal to one of many outputs based on a selection input. It is equivalent to the demultiplexer used in digital logic.

New Functions

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

Configuration Functions

The new configuration functions allow a default compiler to be configured for a QUARC target. This new feature is particularly useful for the QUARC Linux Verdex and QUARC Linux Overo targets in order to select which of the supported compilers is used by default to compile models. This functionality has also been incorporated into the QUARC Preferences dialog (see the Default Compiler section under New Features for details).

qc_get_default_compiler

The new qc_get_default_compiler function returns the default compiler used with the specified QUARC target type.

qc_set_default_compiler

The qc_set_default_compiler function sets the default compiler used with the specified QUARC target type.

qc_get_compilers

The qc_get_compilers function returns a cell array of strings containing valid compilers for the given target type. Note that the values it returns may vary depending on the version of MATLAB and which compilers are actually installed on the system.

Deprecated Features

Deprecated

Some of the previous QUARC features have been deprecated in QUARC 2.3, as mentioned below. Many of the deprecated features may continue to work, but are no longer supported and should be avoided.

Deprecated Blocks

Dynamic Router Block

This block has been deprecated and should not be used in new models because the Simulink Selector block may be used in its stead with the Index mode set to Zero-based and the Index Option set to Index vector (port). The Dynamic Router block has been moved out of the QUARC Targets main library and may now be found under the QUARC Targets Deprecated/Discontinuities library.

This block dynamically selects elements of an input array for its output based on an index vector input.

Bug Fixes

Some of the bug fixes in QUARC 2.3 are enumerated below. This list is not complete. Only some of the highlights are listed below.

HIL Initialize block

Fixed an issue with the sorted order that occurred in complex models when a HIL Timebase block was placed in a subsystem. Corrected the configuration settings for numerous HIL cards. Resolved issue whereby an incorrect value entered on the Digital Outputs tab caused it to switch to the Digital Inputs tab. Also resolved a bug in which it could cause a page fault while checking parameters. Added limits on the PWM output frequency for QPID and QPIDe cards. Enhanced PWM configuration dialog to handle encoder emulation mode and to resolve minor issues.

Stream Answer block

Resolved -QERR_WOULD_BLOCK being output under certain circumstances from the err port.

stream_scan function

Corrected the number of code units being output by the stream_scan QUARC MATLAB function.

Q2-USB card

Reduced the number of hardware clocks configurable to one instead of three, since the Q2-USB only supports one hardware clock. Fixed communications issues which occurred under certain circumstances. Added a workaround for a bug in old firmware. Corrected encoder range specified in help.

Checkboxes

Fixed call to ishghandle in the quanser.checkbox class so that it includes the extra arguments required by newer versions of MATLAB. This fix eliminates errors in QUARC dialogs that make use of the Quanser checkbox.

HiQ AERO

Changed the IR UART from serial port 3 to port 2. Also corrected documentation for the other input channels. The receiver inputs are measured in seconds, not percent. Added new properties for setting accelerometer offsets.

HIL API

Added new functions to the HIL API to set the final termination states when a board is closed. Also changed the calling convention to cdecl instead of stdcall for all HIL API functions. The HIL API underlies all the HIL blocks and functions in Simulink and MATLAB respectively.

Persistent Streams

Resolved an issue in persistent streams in which listening streams did not always shut down properly on some targets and an issue in which errors on startup might not be detected correctly. Fixed a bug in the Stream Client and Stream Server blocks in which the new output was not being updated correctly when using bus objects and the receive most recent option. Added other checks to ensure robust closure of persistent streams.

SPI

Fixed bug in SPI communications protocol that caused it to crash when no options were specified on the URI.

Stream API Examples

Changed default URI used by Basic Stream examples to tcpip://localhost:18000 instead of shmem://foobar:1 in order to be consistent with the Intermediate and Advanced examples. Made similar changes to the Stream C API examples.

Stream Connect Block

Resolved issue in which byte swapping not set correctly if the connection could not be made immediately in non-blocking mode. Also fixed a comparision in the generated code.

TCP/IP Protocol

Fixed a bug in the TCP/IP protocol in non-blocking mode in which a client would pause for the close_timeout (5 seconds by default) on closure if no server was present. Also resolved an issue on closure when the connection was aborted and made closure more robust. Resolved an issue in which sockets were not closed correctly if the thread was cancelled during closure.

HIL Documentation

Fixed the documentation for the Q8-USB series and QPID series cards with respect to the card-specific options for encoders.

Communications API

Resolved a bug in the communications API that led to a UDP server not always closing the communications channel correctly and preventing the UDP server from binding to the port on the next run. Added support for unidirectional streams, which allows the file protocol to be used with persistent streams such as the Basic Communications blockset with blocking I/O.

Installation

Fixed numerous installation issues, particularly with device drivers, due to improper file versioning.

UDP Protocol

Made UDP closure more robust in blocking mode.

Q8-USB Series Cards

Fixed closure of Q8-USB series cards when interrupt operations are pending. Also added code to stop data streaming on closure.

stream_receive_array

Fixed encoding of stream_receive_array script that was causing MATLAB to not recognize the function. Also corrected an internal bug in which it was misinterpreting a return value.

Visualization Initialize Block

Changed Visualization Initialize block so that it attempts to use the current MATLAB directory to find the scene file if the model has not yet been saved and therefore does not have a model path yet.

QUARC Model Standard I/O Demo

Removed deprecated setting in QUARC Model Standard I/O Demo which was causing it not to build.

QUARC Data Logging Demo

Set stop time of QUARC Data Logging Demo to 10 seconds to match help for the demo.

Host Force Feedback Button-Triggered Periodic Torque Block

Fixed the code generation for the Host Force Feedback Button-Triggered Periodic Torque block, which did not build correctly.

Visualization Set Variables Block

Eliminated unreferenced variables in the code generated for the Visualization Set Variables block. A similar fix was made to the Altia Plot block.

Stream API

Added stream_receive_utf16_chars and stream_receive_utf32_chars functions to the Quanser Stream API, which were missing. Fixed a bug in stream_receive_utf8_chars in which it was not returning the correct return value (it was returning -QERR_WOULD_BLOCK when it should have been returning the number of code units read).

Haptic 3-DOF Pantograph Blocks

Rewrote the Haptic 3-DOF Pantograph blocks to resolve code generation problems due to the Embedded MATLAB on some versions of MATLAB.

Sigmoids Library

Fixed display of Sigmoids subsystem within the QUARC Targets library.

GPS NMEA Block

Corrected error handling in GPS NMEA block.

Logos Blocks

Removed border from blocks in Logos library that appeared only in newer versions of MATLAB.

Inverse Modulus Block

Eliminated a warning produced when an Inverse Modulus block is placed in a user-defined Simulink library.

Host Force Feedback Externally-Triggered Condition Torque Block

Corrected a callback of the Host Force Feedback Externally-Triggered Condition Torque block that led to incorrect copying behaviour.

Roomba Blocks

Resolved errors compiling Roomba blocks in newer versions of MATLAB.

Vehicle Blocks

Added support for cross-compiling the Vehicle (VAL) blocks between Windows platforms.

 

navigation bar