hil_stream_to_disk_example.m
Open this M-file

HIL Stream To Disk Example

This example demonstrates the double buffering capabilities of the QUARC HIL commands. It reads continuously from analog input channels 0 and 1 and encoder channels 0 and 1, at a sampling rate of 1kHz. The data is written to a file as it is collected.

A task is created to handle the data collection using quanser.hardware.hil.task_create_reader. Data collection is started using the quanser.hardware.task.start function. The data is then read from the task's internal buffer in one second intervals (1000 samples), using the quanser.hardware.task.read function.

The example runs for 10 seconds. Do not press Ctrl+C.

Warning Do NOT press Ctrl+C to stop the script or the example will not shut down the hardware correctly! Use the quanser.hardware.hil.close_all command in order to shut down the hardware if you have pressed Ctrl+C.

System Requirements

This example requires hardware supported by the HIL command set, such as the Q4 or Q8 hardware-in-the-loop card. Furthermore, the card must support task-based reads from multiple types of channels.

Configuring the example

To set up the example for your data acquisition card, edit the M-file and change the board_type to the type of board being used. If you have more than one of these data acquisition cards in your machine, then also change the board_identifier variable to refer to desire board. Board identifiers are typically equal to the board number, with the first board being board '0', the next board being board '1', etc.

If your board does not support encoder channels, then change the encoder_channels variable to an empty matrix, [].

Running the example

Simply type the name of the example, hil_stream_to_disk_example, at the Matlab command prompt to run the example. It begins by prompting you for the name of the file to which to write the data. The file will be an M-file so it should be given a '.m' extension. Type in a filename or just press Enter to accept the default filename of 'data.m'.

Once a filename has been entered the example begins to stream data from the analog and encoder inputs to disk. It double-buffers the data using a read task so that the channels are read in the background at 1 kHz while the data is being written to disk. The data is written in one second increments.

To stop the example, press Esc. Do not press Ctrl+C. After stopping the example, the data can be read into MATLAB by typing the name of the data file at the MATLAB command prompt. For example, data. The data will appear in a variable called values in the MATLAB workspace. There will be one row for each sampling instant, and one column for each channel, in this order: analog input 0 and 1 followed by encoder inputs 0 and 1.

Building code from the example

To build real-time code from the example for the QUARC Win64 target, execute the following command in the MATLAB Command Window:

qc_build_script('hil_stream_to_disk_example', 'win64');

The command may also be entered in this form:

qc_build_script('hil_stream_to_disk_example.rt-win64');

The qc_build_script command generates a build script called 'hil_stream_to_disk_example_build.m' and a main C file called 'hil_stream_to_disk_example_main.c'. It then invokes the build script to generate C code for the MATLAB script and to compile and link it into a QUARC executable called 'hil_stream_to_disk_example.rt-win64'. Running qc_build_script again will not overwrite the generated files, so they may be modified and the changes will be incorporated when qc_build_script is run again.

Running the generated executable

Before running the generated executable, open a QUARC Console so that the output of the executable may be seen. The QUARC Console need only be opened once. Use the command:

qc_script_console('hil_stream_to_disk_example.rt-win64', 'all');

The QUARC Console shows the standard output from any QUARC executable that is run on the target (since the 'all' option was specified).

To run the generated executable, type the following command in the MATLAB Command Window:

qc_run_script('hil_stream_to_disk_example.rt-win64');

The output from the executable will be seen in the QUARC Console:

QUARC Console output

The data.m file produced may be found in the %PROGRAMDATA%\QUARC\spool\win64 folder.

Building code for a different target

Before building the code for a new target, change the board type to suit the board connected to the new target. In this case, a QUARC Linux Pi 3 target is used, so a Q2-USB (q2_usb) may be used. Since the Q2-USB supports two analog input and two encoder input channels, the channel vectors do not have to be changed. However, change the 'data.m' filename to '/tmp/data.m' so the location of the output file is known.

To build real-time code from the example for the QUARC Linux Pi 3 target, execute the following command in the MATLAB Command Window:

qc_build_script('hil_stream_to_disk_example', 'linux_pi_3', 'update');

The command may also be entered in this form:

qc_build_script('hil_stream_to_disk_example.rt-linux_pi_3', 'update');

The 'update' option causes the qc_build_script command to update the target type in the build script without rewriting the rest of the script. Hence, even if the script has been modified, the changes will be preserved. Only the target type will be changed. The command will then generate the C code for the MATLAB script and compile and link it for the new target type to produce the executable 'hil_stream_to_disk_example.rt-linux_pi_3'.

Running the generated executable on the new target

Before running the generated executable, open a QUARC Console so that the output of the executable may be seen. The QUARC Console for this new target need only be opened once. Use the command:

qc_script_console('hil_stream_to_disk_example.rt-linux_pi_3', 'all');

The QUARC Console shows the standard output from any QUARC executable that is run on the target (since the 'all' option was specified). Note that even though the QUARC Console is running on the host PC, it will be showing the standard output from QUARC executables run on the QUARC Linux Pi 3 target!

To run the generated executable, type the following command in the MATLAB Command Window:

qc_run_script('hil_stream_to_disk_example.rt-linux_pi_3');

The output from the executable will be seen in the QUARC Console.