-
Notifications
You must be signed in to change notification settings - Fork 23
Getting Started
Working on this repository requires you to use cargo and npm. In the following document the installation process will be shown
# Just press enter when prompted
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
apt install npm
apt install nodejs
# assuming you dont have git already, Git setup not included in here
apt install git
git clone git@github.com:qitechgmbh/control.git
cd control
cd electron
npm installTo Compile backend code and run it on Linux:
cargo run --features development-modeThis command compiles and runs the backend with the development-mode feature, which sets up capabilities like raw socket access. Here it is required that you are connected to atleast one machine that is communicated with over ethercat or usb/serial. The Most minimal working setup would be to connect over ethernet to an ek1100 beckhoff terminal.
The Mock-Machine can be used to test code that does not require an actual machine connection. Like Frontend Code for example.
Running with the mock-machine feature:
# in root git folder
cargo run --features development-mode --features mock-machineTo run the Frontend Code:
# need to be in the electron folder and an additional terminal
cd electron
npm run startGenerally you contribute to the codebase by:
- Opening or Choosing an existing issue (Bug,Feature,Task etc)
- Work on it locally
- Commit your changes locally
- Before pushing changes, if there were changes on the master branch, rebase your branch like so:
git fetch
git rebase origin/master- Push changes
# IF you needed to rebase
git push --force-with-lease
# ELSE you just push
git push- Open a Pull Request on Github and link the issue by writing fix #issue_number, after the pull request is merged into master the branch is closed automatically
- Request a Review and hope for the best :)
We recommend you to use an Editor with rust-analyzer support like VSCode to speed up development and detect errors before compiling.
To get started with actual hardware, check out these step-by-step tutorials:
- LED Control with EL2004 - Digital output control, the simplest possible hardware setup
- Analog Input with EL3021 - Reading analog current measurements
- Stepper Motor Control with EL7031-0030 - Complete motor control integration with velocity control
These examples provide complete hardware wiring diagrams and software setup instructions.
-
- Example Winder V2
-
Electron
- Folder Structure
- Routing with TanStack Router
- Design with Tailwind & Shadcn
- ...
-
Interfacing with Electron/Server
- SocketIO
- Machine Namespace
- Main Namespace
- REST
- Machine Mutations
- Write Device Identification
- SocketIO
-
Server
- Threading
- Logging
- Control Loop Setup
- Control Loop Thread
- realtime
- Maindevice
- Group
- Extracting Device Identifications
- Identifying Groups
- Validating Machines
- Run Control Loop
- Control Loop Thread
- Control Loop
- Machine/Device Identification
- 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 Core
- Actors
- SocketIO
- Namespaces & Caching
- Joining leaving namespaces
- NamespaceId
- Caching
- Serverside Caching
- Clientside Caching
- REST
-
Ethercat HAL
QiTech Control | GitHub | Video Demo | Open Source Framework for Industrial Control