Skip to content

Digital Control v0.1.0 — Initial Toolkit Release

Latest

Choose a tag to compare

@pablomarcel pablomarcel released this 25 Apr 20:28
· 40 commits to main since this release
43d951e

Digital Control — Initial Usable Toolkit Release

Release Summary

This release introduces Digital Control, a Python-based engineering toolkit for studying, simulating, and designing discrete-time control systems through reproducible command-line workflows.

The project is organized as a collection of focused packages covering core digital-control topics such as z-transforms, z-plane analysis, discrete state-space methods, pole placement, observers, Kalman filtering, LQR, RST controllers, Jury stability, zero-order hold behavior, ADC/DAC models, and digital timing utilities.

This is an early usable release intended for study, experimentation, documentation, and continued expansion. It is not positioned as a polished commercial control-design suite, but as a practical, scriptable, and inspectable engineering environment.

Highlights

  • Added a multi-package Python toolkit for discrete-time control-system analysis and design.
  • Established a CLI-first workflow for running package-level tools from the terminal.
  • Added reproducible input/output conventions using package-level in/ and out/ folders.
  • Added RUNS.md command references across tools to make examples easier to rerun.
  • Added structured numerical outputs such as JSON, CSV, PNG, HTML, and VCD artifacts where applicable.
  • Added documentation support through GitHub Pages and Sphinx-generated package documentation.
  • Added package-level tests to support refactoring and protect existing solver behavior.

Included Tool Areas

Introductory Digital Systems

  • ADC simulation tools, including counter-style and SAR-style workflows.
  • DAC staircase and quantization modeling.
  • Multiplexer and demultiplexer modeling utilities.
  • VCD validation, merge, and summary helpers.
  • Zero-order hold and droop analysis tools.

Z-Transform and Z-Plane Analysis

  • Z-transform and inverse Z-transform workflows.
  • Difference-equation support.
  • Discrete impulse and step response analysis.
  • z-plane grid generation and visualization support.

State-Space Methods

  • Discrete state-space simulation.
  • Transfer-function/state-space conversion and discretization tools.
  • State-transition and response solvers.
  • Discrete Lyapunov stability analysis.

Pole Placement and Observer Design

  • Controllability analysis, rank checks, and Gramian calculations.
  • Observability analysis and observable canonical-form workflows.
  • Discrete pole-placement support.
  • Observer and estimator design workflows.
  • Integral-action servo design.
  • Canonical-form transformation utilities.

Advanced Digital Control

  • Discrete Kalman filtering.
  • Finite-horizon and steady-state discrete LQR workflows.
  • Polynomial and Diophantine-equation utilities.
  • RST controller synthesis.
  • RST response plotting and visualization.
  • Frequency-response design support.
  • Jury stability analysis.

Repository Organization

The repository uses a package-per-tool structure. Each package is designed to remain focused, testable, and easy to extend.

Most tools include:

  • cli.py for terminal execution;
  • implementation modules such as apis.py, core.py, app.py, io.py, and utils.py;
  • in/ folders for example inputs;
  • out/ folders for generated outputs;
  • RUNS.md files with copy-paste command examples;
  • package-level tests where available.

Documentation

Live documentation is available through GitHub Pages:

https://pablomarcel.github.io/control-digitalControl/

The documentation is intended to make each tool easier to understand, run, and extend. Package-level documentation can be expanded over time as more workflows mature.

Intended Users

This release is useful for:

  • students learning discrete-time control systems;
  • engineers who want scriptable digital-control calculations;
  • developers building command-line scientific tools;
  • users who prefer reproducible examples over notebook-only workflows;
  • anyone studying topics such as z-transforms, z-plane design, state-space control, observers, Kalman filters, LQR, RST controllers, and Jury stability.

Current Status

This is an initial usable release. The project already contains many practical tools and example workflows, but the API, schemas, package interfaces, and documentation may continue to evolve.

Known areas for continued development include:

  • broader example coverage;
  • deeper cross-package integration;
  • more uniform schemas across all tools;
  • expanded documentation for each package;
  • stronger automated regression coverage;
  • additional plotting and reporting workflows.

Suggested Release Title

Digital Control — Initial Usable Toolkit Release

Notes for Users

Start with the root README.md, then open the RUNS.md file inside the package you want to test. The intended workflow is:

cd path/to/package
python cli.py --help
# choose a tested command from RUNS.md
# inspect outputs in out/

For best results, create a clean Python virtual environment and install dependencies from requirements.txt before running package-level examples.