| Control Program | | | Packet Formats | | | Firmware | | | Hardware Designs |
|---|
Realtime data acquisition and controls ecosystem, including hardware, firmware, and software.
| Purpose | |
|---|---|
| support@deimoscontrols.com | Questions about the hardware or software |
| Model | I/O Medium | Sample/Control Rate | Input Capabilities | Output Capabilities |
|---|---|---|---|---|
| Deimos DAQ 6.0.x | UDP over IPV4 on ethernet with LAN-only (non-routeable) MAC address |
5Hz-5kHz roundtrip Performance depends on network and host machine |
External: 4x 4-20mA (24V) 3x Pt100 RTD 2x K-Type TC 2x 0-2.5V 2x 0-15V 2x 25.7x gain 1x 660x gain 1x Encoder 1x Counter 2x Freq Internal: - Cold-junction RTD - Bus current - Bus voltage |
4x PWM (1Hz-1MHz, 3.3V) 2x 0-2.5V analog |
Communication with peripherals is done via message passing on an arbitrary socket. New communication media can be used by implementing the Socket trait.
While the controller can accommodate multiple communication media, a peripheral will typically only implement one method for reliability reasons.
| I/O Medium | Notes |
|---|---|
| UDP/IPV4 | Nominal peripheral I/O; compared to TCP, eliminates packet storm network instability. The controller reasserts the full peripheral state on each cycle, so while UDP allows from some packet loss (typically 1e-4 or less), a change in peripheral state is never missed permanently. |
| Unix socket | Inter-process communication option for software peripheral mockups |
Several more socket implementations are planned, including TCP, UDP/IPV6, and thread channel message passing.
Data integration implementations perform I/O and database transactions on a separate core to avoid blocking the main control loop, unless no separate core is available.
| Target | I/O Medium | Notes |
|---|---|---|
| CSV | Disk | Fixed-width row format. Wrap, split, or terminate at end of pre-sized file. |
| DataFrame | RAM | Wrap or terminate at end of preallocated in-memory storage. |
| TimescaleDB (postgres) | TCP or unix socket | Create table & schema or reuse existing. Insert individual rows or write buffered batches for increased total ingestion rate. Set fixed retention duration. |
| Latest-value | RAM | Read the latest data manually from outside the control program. |
| Name | Description | Notes |
|---|---|---|
| SequenceMachine | A flexible state-machine where each state is defined by a time-dependent lookup table sequence with user-defined transition criteria | Allows implementation of essentially arbitrary scheduling and operational logic |
| TcKtype | K-type thermocouple tables with cold-junction correction | Based on ITS-90 tables |
| RtdPt100 | 100-ohm platinum RTD temperature-resistance tables | Based on DIN-43-760 and ITS-90 |
| Pid | Simple proportion-integral-derivative controller with primitive saturation anti-windup protection | |
| Butter | Second-order Butterworth low-pass filter | |
| Polynomial | Fast evaluation of polynomials for calibrations | Includes Levenberg-Marquardt curve-fitting utility |
... in addition to a variety of unremarkable math functions.
The goals of this ecosystem are:
- Tightly-integrated sensor frontends
- Fully independent input and output channels; every advertised channel is available at the same time
- Full reassertion of state at each control cycle; robust to packet loss
- Zero-calibration operation; NIST-traceable calibrations available, but not required
- Control program without required root/admin access or drivers
- Run on standard networking hardware with sub-microsecond time sync
- Semantic versioning for both hardware and software to prevent unexpected breaking changes
- 100% end-to-end open-source hardware, firmware, and software under permissive licenses
Notable anti-goals:
- Copyright mongering
- "Internet-of-Things" (IoT) functionality
- Over-the-Air (OTA) firmware updates
- Performative complexity
- Skimping on bits
To prevent unexpected breaking changes, both software and hardware use semantic versioning and, whenever possible, use procedural semver linting to avoid unexpected or unintuitive breakage.
Semantic versioning of hardware is not yet a well-established practice. Here, it is taken to cover both hardware and accompanying firmware, and their interfaces:
- Major version: Potentially breaking changes
- Examples: Removing a channel, increasing filter phase lag, narrowing samplerate range, or changing packet interchange format, reducing overvoltage tolerance
- Adding a channel is also a breaking change if it affects packet interchange format
- Notable non-examples: Changing connector types for sensors without a noise-level or thermoelectric voltage sensitivity, changing model number
- Examples: Removing a channel, increasing filter phase lag, narrowing samplerate range, or changing packet interchange format, reducing overvoltage tolerance
- Minor version: Backward-compatible changes
- Examples: Adding a channel, increasing samplerate range, decreasing filter phase lag, increasing overvoltage tolerance
- Patch version: Forward- and backward- compatible changes
- Examples: Updating silkscreen, changing non-sensitive connector types, swapping non-sensitive components such as decoupling capacitors
Both major and minor hardware versions are accompanied by new hardware project files. Patch hardware versions are applied to the existing hardware project files.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.