hil_task_write
The HIL API MATLAB functions have been deprecated in favour of the new quanser.hardware.hil class, which has support for code generation for Quanser targets. Hence, with the new hil class it is possible to run MATLAB scripts in real-time on Quanser targets, while making use of the Quanser hardware. |
Writes the specified samples to the task's internal buffer.
[samples_written, err] = hil_task_write(task, analog_voltages, pwm_duty_cycles, digital_values, other_values)
Writes the specified samples to the task's internal buffer. The number of samples is determined by the number of columns in the matrix parameters, and must be less than or equal to the internal buffer size assigned to the task in the hil_task_create_writer or hil_task_create_reader_writer call. This function will block until the requested number of samples can be written or the task is stopped. Note that the samples are only transferred to the internal buffer. The samples may not appear at the outputs until later. Use hil_task_flush to wait for all samples to be written to the outputs.
Many cards allow the digital I/O lines to be programmed as inputs or outputs. The digital
I/O lines are configured as inputs or outputs using the
hil_set_digital_directions
function. All the channels which will be used as digital outputs must be configured as outputs
using this function. Failure to configure the digital I/O may result in the
hil_task_write function failing to write those outputs.
If no err output is provided then it throws an exception if an error occurs. In generated code it prints the error message. Use hil_get_error_message to get the message associated with an error code.
task
Task handle returned by hil_task_create_writer or hil_task_create_reader_writer.
analog_voltages
A matrix of analog voltages. There must be one row for each channel and one column for each sample. If no analog channels were specified in the call to hil_task_create_writer then this parameter may be an empty matrix, [].
pwm_duty_cycles
In PWM duty cycle mode, this argument is a matrix of PWM duty cycles. Values may range from -1.0 to +1.0. Sign indicates direction for bipolar PWM outputs.
In PWM frequency mode, this argument is a matrix of PWM frequencies in Hertz. Sign indicates direction for bipolar PWM outputs.
In PWM period mode, this argument is a matrix of PWM periods in seconds. Sign indicates direction for bipolar PWM outputs.
There must be one row for each PWM output channel and one column for each sample. If no PWM channels were specified in the call to hil_task_create_writer then this parameter may be an empty matrix, [].
digital_values
A matrix of logical values. Values may be 0 or 1.There must be one row for each channel and one column for each sample. If no digital channels were specified in the call to hil_task_create_writer then this parameter may be an empty matrix, [].
other_values
A matrix of other values. There must be one row for each channel and one column for each sample. If no other channels were specified in the call to hil_task_create_writer then this parameter may be an empty matrix, [].
samples_written
The number of samples written. This number will be equal to the number of samples specified unless the total number of samples specified in hil_task_start has expired or the task has been stopped.
err
A negative error code or zero on success.
% Creates a task to write analog channels 0 and 3 and digital channel 5, with an internal buffer of 1000 samples. task = hil_task_create_writer(board, 1000, [0 3], [], 5, []); volts = 5*(rand(2,500)-0.5)*2; bits = (rand(1,500) >= 0.5); hil_task_write(task, volts, [], bits, []); % Start the task using SYSTEM_CLOCK_1 at 1 kHz. Collect up to 5000 samples. hil_task_start(task, -1, 1000, 5000); for i=1:10 % Uniformly distributed random voltages between -5V and +5V. volts = 5*(rand(2,500)-0.5)*2; % Random logical values. bits = (rand(1,500) >= 0.5); % Writes 500 samples to analog channels 0 and 3 and digital channel 5. Won't block until internal buffer full. n = hil_task_write(task, volts, [], bits, []); ... end; % Make sure any samples remaining in the internal buffer have been written to the outputs. hil_task_flush(task); hil_task_stop(task); hil_task_delete(task);
See Also
Copyright ©2024 Quanser Inc. This page was generated 2024-04-16. Submit feedback to Quanser about this page.
Link to this page.