A Firmware as defined in the previous section is a collection of services which will be run on a DAQAstra. Each service and associated configuration fields are defined in this section.
Y = mX + b, m = Slope, x = millivolts measured.This is used to provide unit conversion (e.g. turning mV to PSI). The user determines this. The output, “Y”, is the unit-converted reading.
Offset
Float
mV to unit zero-offset. ‘b’ in the above equation.
Unit
String
Indicates unit of measurement.
Interval
Interval
Rate in milliseconds the task publishes a value to MQTT.
Pin
Enum
Chosen Digital or Analog Input Pin (AIN00-AIN07, DI0-DI5).
A configurable math channel to perform custom in-firmware computations with the data from other configured services. Functions must be written with Rust Syntax. The usable functions include sin, cos, tan,sqrt, log, exp, abs, floor, ceil, pow, max, min. You can also use the standard mathematical operations (+, −, ×, ÷) and boolean operations for logical equations (||, &&, !=, ==, >, >=, <, <=)
Key
Type
Description
Name
String
Internal reference to task.
Input Tasks
Array(String)
A list of other defined services that provide a valid numeric input as a variable in the math functions.
Math Functions
Array(Object)
Each function contains an expression & an output type. If a logical function is used and results in true or false, choose bool. Otherwise use f32. The selection of input tasks will autofill the appropriate variable name for that input into a new function. You may use multiple input tasks in a single function, just copy the generated variable name into where it should be used.
Data to use as feedback for the controller. Can come from Analog Input, Thermocouple, ADS7953.
Output Task
Enum
Output the controller will modulate. Can choose a Digital Output or PDU channel.
Upper Threshold
Number
Upper hysteresis limit for the controller.
Lower Threshold
Number
Lower hysteresis limit for the controller.
Control Loop Frequency
Number
The rate at which the controller will update the state of the output. If the Input Task updates faster than this rate, the input values will be averaged.
This is a more naive implementation of Stateful Actuator. There is no enforcement of how the actuator enters or exits a state. This is really meant as a tool to automate a group of inputs and outputs with very simple states (on/off) and that do not require the traversal of multiple states to execute an action. If this is needed, use Stateful Actuator.
Key
Type
Description
Name
String
Internal reference to task.
Latched
Boolean
Whether this actuator latches the outputs upon executing a command.
Inputs
Array
A multi-select of already-configured (compatible) inputs to the Stateful Actuator Service. In this case, we have two Digital-Input services that are used. Analog-Input may be used as well.
Outputs
Array
A multi-select of already-configured (compatible) outputs for the Stateful Actuator Service. In this case, we have a PDU service defined. One may use Digital-Outputs too.
User-defined names attached to certain combinations of the chosen Inputs' logic-levels and chosen Outputs commands that ought to result in this state's Inputs levels.
Whether this actuator latches the outputs upon executing a command.
Inputs
Array
A multi-select of already-configured (compatible) inputs to the Stateful Actuator Service. In this case, we have two Digital-Input services that are used. Analog-Input may be used as well.
User-defined names attached to certain combinations of the chosen Inputs' logic-levels.
Outputs
Array
A multi-select of already-configured (compatible) outputs for the Stateful Actuator Service. In this case, we have a PDU service defined. One may use Digital-Outputs too.