Open-source, hardware-agnostic IEC 61131-3 PLC runtime (Rust) + web IDE.
TPT Servo is an open-source industrial automation platform. It runs IEC 61131-3 programs (ladder logic, function block diagrams, structured text, instruction list, and sequential function charts) on cheap hardware — Raspberry Pi 4, industrial PCs, or custom ARM boards — and talks to any brand of robot, sensor, or actuator over Modbus, EtherCAT, and PROFINET.
Factories are locked into proprietary PLCs (Rockwell, Siemens) where a single controller costs tens of thousands of dollars. TPT Servo lets small manufacturers automate for a fraction of that cost and mix-and-match hardware without vendor lock-in.
Dual-licensed under MIT and Apache-2.0. Copyright © 2024 TPT Solutions.
Source files carry an SPDX header:
// SPDX-FileCopyrightText: 2024 TPT Solutions
//
// SPDX-License-Identifier: MIT OR Apache-2.0| Component | Crate | Language | Description |
|---|---|---|---|
| Runtime core | tpt-runtime |
Rust | Scan-cycle engine + five IEC 61131-3 language interpreters |
| Fieldbus drivers | tpt-fieldbus |
Rust | Protocol-agnostic abstraction + Modbus/EtherCAT/PROFINET |
| Motion control | tpt-motion |
Rust | PID, camming, electronic gearing, servo abstraction |
| IDE backend | tpt-ide-backend |
Rust | API service bridging the web IDE to the runtime |
The web IDE itself (TypeScript/React) is tracked separately and connects to
the runtime through tpt-ide-backend.
See todo.md for the full phased plan:
- Phase 0 – Project foundation & licensing (in progress)
- Phase 1 – IEC 61131-3 runtime core
- Phase 2 – Fieldbus drivers
- Phase 3 – Motion control library
- Phase 4 – Visual programming IDE (web)
- Phase 5 – Hardware integration & real-world deployment
cargo build # build all crates
cargo test # run tests
cargo clippy # lint- TPT Servo (factory floor) — controls robots, conveyors, and sensors.
- tpt-smartcity (city level) — monitors factory energy and emissions.
Servo reports production data to tpt-smartcity over MQTT.
See CONTRIBUTING.md. All contributions are dual-licensed under MIT/Apache-2.0 by default.