Analog Triggered Data Acquisition Using Stateflow Charts
This example shows how to create an analog-triggered data acquisition app by using Stateflow®, Data Acquisition Toolbox™, and App Designer.
Data Acquisition Toolbox provides functionality for acquiring measurement data from a DAQ device or audio soundcard. For certain applications, an analog-triggered acquisition that starts capturing or logging data based on a condition in the analog signal being measured is recommended. Software-analog triggered acquisition enables you to capture only a segment of interest out of a continuous stream of measurement data. For example, you can capture an audio recording when the signal level passes a certain threshold.
This example app, created by using App Designer and Stateflow, shows how to implement these operations:
Control the app state logic by using a Stateflow chart.
Discover available DAQ devices and select which device to use.
Configure device acquisition parameters.
Display a live plot in the app UI during acquisition.
Perform a triggered data capture based on a programmable trigger condition.
Save captured data to a MATLAB® base workspace variable.
By default, the app opens in design mode in App Designer. To run the app click the Run button or execute the app from the command line:
AnalogTriggerAppStateflow
Requirements
This example app requires:
MATLAB R2020a or later.
Data Acquisition Toolbox (supported on Windows® only).
Stateflow (for creating and editing charts only).
A supported DAQ device or sound card. For example, any National Instruments or Measurement Computing device that supports analog input
Voltage
orIEPE
measurements and background acquisition.Corresponding hardware support package and device drivers.
App States and the Stateflow Chart
When creating an app that has complex logic, consider the various states that correspond to the operating modes of the app. You can use a Stateflow chart to visualize and organize these app states. Use transitions between states to implement the control logic of your app. For example, the file AnalogTriggerAppLogic.sfx
defines the Stateflow chart that controls the logic for this app. The chart can transition between states based on an action in the app UI or on a data-driven condition. For example, if you click the Start button, the chart transitions from the Configuration
state to the Acquisition
state. If the value of the signal crosses the specified trigger level, the chart transitions from the LookingForTrigger
state to the CapturingData
state.
Integrating the App with the Stateflow Chart
To establish a bidirectional connection between the MATLAB app and the Stateflow chart, in the startupFcn
function of your app, create a chart object and store its handle in an app property.
app.Chart = AnalogTriggerAppLogic(app=app);
The app uses this handle to trigger state transitions in the chart. For example, when you click Start, the StartButtonPushed
app callback function calls the acquisitionStart
input event for the chart. This event triggers the transition from the Configuration
state to the Acquisition
state.
To evaluate transition conditions that are not events in the chart, the app calls the step
function for the chart object. For example, while acquiring data from the device, the dataAvailable_Callback
app function periodically calls the step
function. When the trigger condition is detected, the chart transitions from the LookingForTrigger
State to the CapturingData
state.
In the Stateflow chart, store the app object handle as chart local data. To share public properties and call public functions of the app, the Stateflow chart can use this handle in state actions, transition conditions, or transition actions.