2 releases

0.1.1 Jan 6, 2023
0.1.0 Dec 21, 2022

#315 in Programming languages

23 downloads per month

MIT license

180KB
4K SLoC

IronPLC

⚠ This project's capabilities are limited to a parser, semantic analyzer, and Visual Studio Code Extension that are that are building blocks for a complete IEC 61131-3 runtime and development environment.

IronPLC aims to be a SoftPLC written entirely in safe Rust for embedded devices running programs written in the IEC 61131-3 language.

IronPLC Integration IronPLC Deployment License: MIT Lines of Code

SoftPLCs enable embedded and other computers to operate as programmable logic controllers (PLCs) that execute all sorts of processes from home automation and factories machines to industrial process and electrical power grid control. PLC devices do this by implementing control algorithms that connect to sensors, transducers and actuators through analog/digital IO, industrial protocols such as I²C and Modbus, or even common internet protocol such as HTTP.

Mission

A complete runtime and development environment for IEC 61131-3. The runtime aims to be written entirely in safe Rust to prevent security issues. The development environment aims to be available via Visual Studio Code to provide a first class environment.

Milestones

The project is progressing towards a minimum loveable product. The following milestones are the current plan to achieve that loveable product.

  • ✅ Implement a parser for a single IEC 61131-3 structured text file
  • ✅ Implement a Visual Studio Code Extension that uses the parser
  • ✅ Build Windows and macOS installers
  • ✅ Setup weekly automated deployments
  • ✅ Build documentation website
  • Build a "standard" library

Usage

Go to ironplc.com and follow the instructions to get started.

Contributing

Contributions are very welcome. See CONTRIBUTING.md for details.

Contact

Create an issue to reach out about IronPLC.

Similar Projects

  • RuSTy - Structured text compiler written in Rust. RuSTy is further along but the LGPL and LGPL licenses are difficult for industrial uses.
  • Structured Text language Support - Structured text language support for Visual Studio Code.
  • Beremiz - A Python-based PLC programming environment.
  • msr - A Rust library for industrial automation.
  • ethercat-rs - An experimental Rust automation toolbox using the IgH (Etherlab) EtherCAT master.
  • rustmatic - Rustmatic is a thought experiment on creating a PLC-like environment in Rust.

Dependencies

~5MB
~90K SLoC