Cross-platform graphical controller for classic Druck PACE 5000 and PACE 6000 instruments connected through Ethernet or RS-232.
Current version: 1.1.0
Caution
This application sends real pressure-control and vent commands. It is not a certified safety system and does not replace pressure-relief devices, hardware interlocks, instrument limits, laboratory procedures, or direct operator supervision.
Download the latest release from GitHub Releases.
PACE-Controller-vX.Y.Z-Windows-x86_64.exe: standalone Windows executable;PACE-Controller-vX.Y.Z-Linux-x86_64.tar.gz: standalone Linux executable;PACE-Controller-vX.Y.Z-source.zip: complete source and documentation;PACE_Controller_Manual.pdf: versioned user and technical manual;SHA256SUMS.txt: file-integrity hashes.
The Windows executable is unsigned, so SmartScreen may request confirmation. The Linux archive is also distributed without a commercial signing certificate. Neither package needs Python; Linux still requires the normal graphical-system libraries supplied by a modern desktop distribution. Build automation and complete source code are public for inspection.
This image is generated automatically by the real PySide6 interface in offline simulator mode. No instrument commands are sent while producing it.
| Connection | Windows | Linux | Notes |
|---|---|---|---|
| Ethernet TCP/SCPI | Yes | Yes | Default 192.168.10.2:5025 |
| Native RS-232 | Yes | Yes | COMx or /dev/ttySx |
| USB-to-RS-232 | Yes | Yes | Appears as a normal serial port |
| Offline simulator | Yes | Yes | Hardware-free training and screenshots |
| IEEE-488/GPIB | Not yet | Not yet | Planned optional transport |
| Direct USB/VISA | No | No | The classic PACE requires proprietary/VISA components |
Ethernet and RS-232 use the same SCPI control engine and the same safety checks. No NI-VISA, Druck USB driver, LabVIEW, or Internet connection is required at runtime.
- English interface by default, with persistent Italian selection.
- Nine telemetry cards arranged on two visible rows, using three decimal places.
- Current pressure, target, positive and negative source, measured slew, valve effort, CONTROL/MEASURE state, in-limits state, and source margin.
- Manual target control with Linear or Maximum slew mode.
- Optional Keep CONTROL at target, disabled by default.
- Indenting: target, 120-second hold, return to zero, final MEASURE.
- Editable JSON pressure routines with target, slew, dwell, and notes.
- Protected pressurization parameters behind a padlock and danger confirmation.
- Stable sample-side and cylinder-side loss indicators based on at least three minutes of data, with rates in bar/h and estimated CONTROL autonomy.
- CSV telemetry and diagnostic logs at full received precision.
- Offline simulator for hardware-free validation.
- Bilingual Help menu with author/affiliation acknowledgements and a direct link to the public GitHub issue tracker.
- Automatic Zenodo DOI synchronisation after each archived GitHub release.
- An increase of at least 10 bar requires confirmation.
- Slew above 0.5 bar/s or Maximum mode requires confirmation.
- Targets outside the detected module range are blocked.
- CONTROL is blocked when the positive-source margin is below 2 bar.
- If the source margin falls below 2 bar during CONTROL, automation stops and MEASURE is requested.
- After an interlock, CONTROL remains blocked until the source margin reaches 2.2 bar.
- Loss of required telemetry during CONTROL triggers a fail-safe MEASURE attempt.
- Automation timeouts request MEASURE.
These are software checks, not safety-rated interlocks.
Configure the PACE with:
| Parameter | Value |
|---|---|
| Address mode | Static |
| IP address | 192.168.10.2 |
| Subnet mask | 255.255.255.0 |
| Gateway/DNS | Empty or 0.0.0.0 |
| Access control | Open |
| SCPI socket | TCP 5025 |
Ethernet commands are sent with CRLF line endings. The final LF is the SCPI message terminator specified by Druck K0472 and the complete sequence matches the validated legacy Windows controller.
The program first tries the configured address. If requested, it then adds 192.168.10.1/24 only to a single safe dedicated Ethernet adapter that has no gateway and no unrelated IPv4 network. No adapter is changed if selection is ambiguous. The temporary address is removed at shutdown.
On the PACE select the RS-232 communication interface and SCPI protocol. The application defaults to:
| Parameter | Value |
|---|---|
| Baud rate | 9600 |
| Data bits | 8 |
| Parity | None |
| Stop bits | 1 |
| Flow control | None |
| Terminator | CR |
Baud rates from 2400 to 115200, None/Even/Odd parity, XON/XOFF, and RTS/CTS can be selected from the GUI. PACE and PC settings must match.
On Linux, add the user to the serial-port group if necessary:
sudo usermod -aG dialout "$USER"Log out and back in after changing group membership.
Python 3.10 or newer is required:
cd cross_platform
python -m venv .venv
source .venv/bin/activate # Linux
# .venv\Scripts\activate # Windows
python -m pip install -r requirements.txt
python -m pace_controllerFor a hardware-free test:
python -m pace_controller --simulateThe same scripts used by GitHub Actions are included:
# Windows PowerShell
.\scripts\build_windows.ps1 -Version 1.0.0# Linux
bash scripts/build_linux.sh 1.0.0Artifacts are written to cross_platform/dist. GitHub Actions additionally regenerates the real GUI screenshot, builds this manual as PDF, verifies the frozen legacy source hash, generates SHA-256 checksums, creates an immutable semantic-version tag, and publishes every release asset.
- Windows:
%LOCALAPPDATA%\PACE Controller - Linux:
${XDG_DATA_HOME:-~/.local/share}/pace-controller
The folder contains PACE_controller_data.csv, PACE_controller_log.txt, and PACE_controller_settings.json.
The validated PowerShell/WinForms v0.3.1 remains unchanged in the repository root and in its immutable release tag. The cross-platform application is separate and does not alter that working implementation.
PACE Controller is independent software and is not an official Druck product. Released under the MIT License.
