Control Hardware
Synnax allows you to control hardware both manually through our operator console and programmatically through our Python control module.
Using Channels for Control
Synnax controls hardware through its channel streaming system. In Synnax, channels are simply pipes that pass samples from one place to another. Internally, Synnax treats channels that are used for data acquisition and channels used for control the same way. While this may seem strange at first, it allows for high-degrees of flexibility in how your configure your system.
If you haven’t already, we recommend that you read the channels documentation to get a better understanding of just what channels are.
Basic Control Flow
Control flow in Synnax typically requires two types of channels: a command and a state
channel. Command channels, typically suffixed with _cmd
, are used to send commands to
the device. State channels, suffixed with _state
, are used as acknowledgements from a
device driver that a command has been executed.
To illustrate this, consider a simple where we’re commanding a digital output on a device
with the name daq
. We’d create a command channel called daq_do_1_cmd
with a data type of
uint8
and a state channel called daq_do_1_state
, also with a data type of uint8
.
If you’re using one of Synnax’s built-in device drivers, these channels will be created automatically when you start a control/digital output task.
The following diagram illustrates what a basic control flow might look like when commanding the digital output from a Python script:
The general flow is as follows:
- The Python script writes the command value of
1
to thedaq_do_1_cmd
channel. - The Synnax database node receives the command value and forwards it to a device driver. This device driver can be either Synnax’s built-in driver or a driver for a custom device.
- The device driver receives and executes the command, sending an acknowledgement value
of
1
to thedaq_do_1_state
channel. - The Synnax database node receives the state value and forwards it to the Python script.
- The Python script acknowledges the state value and continues executing.