PLCreX
Simplification, Transformation, Analysis, and Validation of IEC 61131-3 Programmable Logic Controllers
Install / Use
/learn @marwern/PLCreXREADME
PLCreX - Simplification, Transformation, Analysis, and Validation of IEC 61131-3 Programmable Logic Controllers
<!-- --> <!-- [](https://www.python.org/) --> <!-- [](https://www.sphinx-doc.org/) --> <br /> <div align="center"> <img src="https://github.com/marwern/PLCreX/assets/92115516/8558b705-720a-4e8c-80cb-10747f38fa58" width=650> <!-- width=400 --> <!-- <h3 align="center">PLCreX</h3> --> <p align="center"> <strong>Quick links</strong> <br /> <br /> <a href="https://pypi.org/project/plcrex/">Releases</a> · <a href="https://plcrex.readthedocs.io/en">Documentation</a> · <a href="#quick-start">Quick Start</a> · <a href="#key-features">Key Features</a> · <a href="#licenses">Licenses</a> · <a href="#acknowledgments">Acknowledgments</a> </p> </div>Quick Start
<strong><a href="https://plcrex.readthedocs.io/en">Explore the docs »</a></strong>
- Download Python
v3.9[.url] - Download IEC-Checker
v0.4via IEC-Checker's GitHub releases [.url] - Download Kicodia
v122798884via KIELER's Download page [.url] - Download NuSMV symbolic model checker
v2.6.0via NuSMV's homepage [.url] - Download Microsoft Build Tools 2015 .url
- Install PLCreX via PyPI:
pip install plcrexor - Install PLCreX via PLCreX's GitHub repository:
install-windows.bat- Activate virtual environment (venv):
run.bat - [optional] Run local tests:
coverage run -m pytest ./tests/ --verbose
- Activate virtual environment (venv):
Key Features
Usage: plcrex [OPTIONS] COMMAND [ARGS]...
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version │
│ --install-completion [bash|zsh|fish|powershell|pwsh] Install completion for the specified shell. │
│ [default: None] │
│ --show-completion [bash|zsh|fish|powershell|pwsh] Show completion for the specified shell, to copy │
│ it or customize the installation. │
│ [default: None] │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ fbd-to-sctx FBD-to-SCCharts Compiler (Data-Flow) *.xml → *.sctx │
│ fbd-to-st FBD-to-ST Compiler *.xml → *.st │
│ fbd-to-st-ext FBD-to-ST Compiler (extended) *.xml → *.st │
│ iec-check IEC-Checker *.st → *.log │
│ impact-analysis I/O-Impact Analysis *.xml → *.dot │
│ st-parser ST-Parser *.st → *.dot/*.txt │
│ st-to-qrz ST-to-Quartz Compiler *.st → *.qrz │
│ st-to-scl ST-to-SCL Compiler *.st → *.scl │
│ st-to-sctx ST-to-SCCharts Compiler (Control-Flow) *.st → *.sctx │
│ test-case-gen Test-Case-Generator stdin → stdout │
│ xml-validator XML-Validator *.xml → stdout │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
<strong><a href="https://plcrex.readthedocs.io/en">Explore the docs »</a></strong>
Usage: python -m plcrex --help
Analysis & Validation
| Description | Script | Version | |---------------------|------------|---------| | IEC-Checker | ieccheck | 2.0.0 | | I/O-Impact Analysis | fbdia | 2.0.0 | | ST-Parser | stp | 2.0.0 | | Test-Case-Generator | tcgen | 4.0.0 | | XML-Validator | xmlval | 2.0.0 |
Transformation & Simplification
| Description | Script | Version | |----------------------|---------|---------| | FBD-to-ST | fbd2st | 2.0.0 | | FBD-to-ST (extended) | fbd2st | 2.0.0 | | FBD-to-SCCharts | fbd2x | 2.0.0 | | ST-to-Quartz | st2qrz | 1.0.0 | | ST-to-SCL | st2scl | 1.0.0 | | ST-to-SCCharts | st2scl | 1.0.0 |
Models
The translations of the models are based on PLCreX's intermediate model *.pim:
| Package | Description | Version |
|-------------------|-------------------------------------|---------|
| st | Structured Text | 1.0.2 |
| qrz | Quartz Model | 1.0.1 |
| scl | Sequentially Constructive Language | 1.0.2 |
Licenses
PLCreX and its dependencies are licensed as follows:
| Tool | Version | License | |-------------|------------|------------------------------| | PLCreX | 2.0.0 | GPLv3 | | IEC-Checker | 0.4 | LGPL v3.0 | | NuSMV | 2.6.0 | LGPL v2.1 | | KIELER | 122798884 | Eclipse Public License (EPL) |
Acknowledgments
Inspiration, code snippets, etc.
