Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
97be26c666 | ||
|
|
b32e8547fb | ||
|
|
492fb4b3a5 | ||
|
|
6deafa72bb |
No files matched your search
+9
-2
@@ -1,11 +1,18 @@
|
||||
[workspace]
|
||||
members = [
|
||||
"server",
|
||||
# Hardware Abstraction Layer (Framework)
|
||||
"ethercat-hal",
|
||||
"ethercat-hal-derive",
|
||||
|
||||
# Control Framework (Framework)
|
||||
"control-core",
|
||||
"ethercat-eeprom-dump",
|
||||
"control-core-derive",
|
||||
|
||||
# Machine Implementations (QiTech-Specific)
|
||||
"server",
|
||||
|
||||
# Utilities
|
||||
"ethercat-eeprom-dump",
|
||||
]
|
||||
exclude = []
|
||||
resolver = "2"
|
||||
|
||||
@@ -12,24 +12,37 @@ QiTech Control is an industrial control panel software for the next generation o
|
||||
|
||||
# Repo Structure
|
||||
|
||||
Frontend
|
||||
This repository is organized as a monorepo with clear separation of concerns. See [Repository Organization](./docs/repository-organization.md) for detailed architecture information.
|
||||
|
||||
- `/electron`: Frontend code for the control software built with React and Electron.
|
||||
## Hardware Abstraction Layer (Framework)
|
||||
|
||||
Backend
|
||||
- `/ethercat-hal`: Hardware abstraction layer for Beckhoff and other EtherCAT devices and protocols
|
||||
- `/ethercat-hal-derive`: Derive macros for `ethercat-hal`
|
||||
|
||||
- `/server`: Glue between Beckhoff and Electron. Implements machine logic.
|
||||
- `/ethercat-hal`: Hardware abstraction layer for Beckhoff (and possibly other EtherCat) devices and protocols.
|
||||
- `/ethercat-hal-derive`: Macros for `ethercat-hal`
|
||||
- `/control-core`: Core control logic for the server.
|
||||
## Control Framework (Framework)
|
||||
|
||||
Operating System
|
||||
- `/control-core`: Generic control logic, actor system, and API abstractions
|
||||
- `/control-core-derive`: Derive macros for `control-core`
|
||||
|
||||
- `/nixos`: Custom Linux with realtime kernel & preconfigured for touchscreens.
|
||||
## Machine Implementations (QiTech-Specific)
|
||||
|
||||
Other
|
||||
- `/server`: QiTech-specific machine implementations and glue code that ties everything together
|
||||
|
||||
- `/docs`: Documentation for the project.
|
||||
## User Interface
|
||||
|
||||
- `/electron`: Electron-based control panel UI built with React and TypeScript
|
||||
|
||||
## Operating System
|
||||
|
||||
- `/nixos`: Custom NixOS configuration with real-time kernel & touchscreen support
|
||||
|
||||
## Utilities
|
||||
|
||||
- `/ethercat-eeprom-dump`: CLI tool for dumping EtherCAT device EEPROM data
|
||||
|
||||
## Documentation
|
||||
|
||||
- `/docs`: Project documentation, architecture guides, and developer resources
|
||||
|
||||
# Technology Choices
|
||||
|
||||
@@ -76,9 +89,15 @@ We could combine the code of the frontend and backend using [Doxius](https://dio
|
||||
|
||||
# More Docs
|
||||
|
||||
- [x] [Architecture & Data Flow](./docs/architecture-overview.md)
|
||||
## Architecture & Organization
|
||||
|
||||
- [x] Example Winder V2
|
||||
- [x] [**Organization Summary**](./docs/organization-summary.md) - **Quick reference** for understanding the repository structure
|
||||
- [x] [Architecture & Data Flow](./docs/architecture-overview.md) - System architecture overview with diagrams
|
||||
- [x] [Repository Organization](./docs/repository-organization.md) - Monorepo structure, component boundaries, and modularization options
|
||||
- [x] [Component Interfaces](./docs/component-interfaces.md) - How components interact and interface boundaries
|
||||
- [x] [Migration Guide for Splitting](./docs/migration-guide-splitting.md) - Step-by-step guide for splitting into multiple repositories (if needed)
|
||||
|
||||
## Component Documentation
|
||||
|
||||
- [ ] Electron
|
||||
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
# Architecture Overview
|
||||
|
||||
For detailed information about repository organization and component separation, see:
|
||||
- [Repository Organization](./repository-organization.md) - Monorepo structure and modularization options
|
||||
- [Component Interfaces](./component-interfaces.md) - How components interact and interface boundaries
|
||||
|
||||

|
||||
|
||||
## The Application is Split Into 3 Main Layers
|
||||
|
||||
@@ -0,0 +1,346 @@
|
||||
# Component Interfaces and Boundaries
|
||||
|
||||
This document describes the interfaces between major components in the QiTech Control system and how they interact with each other.
|
||||
|
||||
## Component Layering
|
||||
|
||||
The system follows a clear layered architecture:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ User Interface │
|
||||
│ (Electron) │
|
||||
└────────────────────┬────────────────────────────────┘
|
||||
│ REST API / SocketIO
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────┐
|
||||