56a9504827e05bc56e6f84e44c97a3e98ba10ede
QiTech Control
QiTech Control is an industrial control panel software for the next generation of QiTech recycling machines built on top of Beckhoff Automation hardware.
Repo Structure
Frontend
/electron: Frontend code for the control software built with React and Electron.
Backend
/server: Glue between Beckhoff and Electron. Implements machine logic./stepper-driver: Generic stepper driver for absolute, relative & speed movements with PID controllers./ethercat-hal: Hardware abstraction layer for Beckhoff (and possibly other EtherCat) devices and protocols./ethercat-hal-derive: Macros forethercat-hal/control-core: Core control logic for the server.
Operating System
/nixos: Custom Linux with realtime kernel & preconfigured for touchscreens.
Other
/docs: Documentation for the project.
Technology Choices
Dev Setup
Machines
More Docs
-
- Example Winder V2
-
Electron
- Folder Structure
- Routing with TanStack Router
- Design with Tailwind & Shadcn
- ...
-
Interfacing with Electron/Server
- SocketIO
- Rooms & Caching
- Joining leaving rooms
- RoomId
- Our rooms vs native socketIO rooms
- Caching
- Serverside Caching
- Clientside Caching
- Machine Room
- Main Room
- REST
- Machine Mutations
- Write Device Identification
- SocketIO
-
Server
- Control Loop Setup
- Control Loop Thread
- realtime
- Maindevice
- Group
- Extracting Device Identifications
- Identifying Groups
- Validating Machines
- Run Control Loop
- Control Loop Thread
- Control Loop
- Ethercat TX/RX
- Reading Inputs
- Calling Actors
- Writing Outputs
- Machine/Device Identification
- SubDevice Identity
- Identification design choices
- Machine/Device Identification Values
- Device Identification with EEPROM
- Grouping Devices
- Validating Device Groups to Machines
- How to: Identify a New Device
- Find free EEPROM words
- Get identity values and add them to pattern matching
- Machines
- When to create a new Machine?
- Versioning
- Code sharing
- Creating/Validating a Machine
- Validation
- Configuration
- When to create a new Machine?
- Machine Implementation Guide
- Link: How to create a Device
- Link: How to create an Actor
- Link: How to create a Machine
- API (SocketIO + REST)
- Creation/Validation Logic
- Optional/Mandatory Devices
- Validate Devices
- Business Logic
- Link: How to create Machine Abstraction (Like Traverse/Puller/...)
- Forward
actin winder.
- Control Loop Setup
-
Control Core
- Actors
-
Ethercat HAL
-
Operating System
- Why
- How
Languages
Rust
62.3%
TypeScript
36.1%
Nix
0.9%
Shell
0.4%
CSS
0.2%
