8fd2aa91bf37100800bc3d892c74d7ea3682fa74
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 build with React and Electron.
Backend
/server: Glue between Backhoff 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/ethercrab: Fork ofethercrabfor ad-hoch changes.
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
-
Machines
- Table
- Winder V2
- Devices
- Functionality
- Logic
- Extruder V2
-
Electron
- Folder Structure
- Routing with TanStack Router
- Seign with Tailwind & Shadcn
-
Interfacing with Electron/Server
- SocketIO
- Rooms & Cacheing
- Joining leaving rooms
- Our rooms vs native socketIo rooms
- Cacheing
- Serverside Cacheing
- Clientside Cacheing
- Machine Room
- Main Room
- Rooms & Cacheing
- 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
- Machines
- When to create a new Machine?
- Creatine/Validating a Machine
- Validation
- Configuration
- Control Loop Setup
-
Ethercat HAL
- Devices/PDO
- CoE Theory
- Parameters
- Pdo Assignment
- PDO Theory
- Pdo Objects
- Tx / Rx Meaning
- Presets
- Mapping
- How To: Implementing an EL2521
- CoE Theory
- IO
- How to: Implementing a Pulse Train Output
- Devices/PDO
-
Ethercat Basics
- State Machine
- Network Topology Packets
- Master / Slave
- Terms of Communication
- SDO
- PDO
- Mailbox
- CoE
- Commands
- EEPROM
-
Ethercat HAL
-
Ethercat Devices
- Buscoupler
- Digital Input
- EL2000er
- Digital Output
- EL1000er
- Analog Input
- EL3000er
- Temperature Input
-
Operating System
- Why
- How
Languages
Rust
62.3%
TypeScript
36.1%
Nix
0.9%
Shell
0.4%
CSS
0.2%
